diff options
author | Joe George <joe@zeroc.com> | 2015-03-03 17:30:50 -0500 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2015-05-12 11:41:55 -0400 |
commit | d35bb9f5c19e34aee31f83d445695a8186ef675e (patch) | |
tree | d5324eaf44f5f9776495537c51653f50a66a7237 /java/src/IceInternal/RouterManager.java | |
download | ice-d35bb9f5c19e34aee31f83d445695a8186ef675e.tar.bz2 ice-d35bb9f5c19e34aee31f83d445695a8186ef675e.tar.xz ice-d35bb9f5c19e34aee31f83d445695a8186ef675e.zip |
Ice 3.4.2 Source Distributionv3.4.2
Diffstat (limited to 'java/src/IceInternal/RouterManager.java')
-rw-r--r-- | java/src/IceInternal/RouterManager.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/java/src/IceInternal/RouterManager.java b/java/src/IceInternal/RouterManager.java new file mode 100644 index 00000000000..ae47a9332ac --- /dev/null +++ b/java/src/IceInternal/RouterManager.java @@ -0,0 +1,76 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +package IceInternal; + +public final class RouterManager +{ + RouterManager() + { + } + + synchronized void + destroy() + { + for(RouterInfo info : _table.values()) + { + info.destroy(); + } + _table.clear(); + } + + // + // Returns router info for a given router. Automatically creates + // the router info if it doesn't exist yet. + // + public RouterInfo + get(Ice.RouterPrx rtr) + { + if(rtr == null) + { + return null; + } + + // + // The router cannot be routed. + // + Ice.RouterPrx router = Ice.RouterPrxHelper.uncheckedCast(rtr.ice_router(null)); + + synchronized(this) + { + RouterInfo info = _table.get(router); + if(info == null) + { + info = new RouterInfo(router); + _table.put(router, info); + } + + return info; + } + } + + public RouterInfo + erase(Ice.RouterPrx rtr) + { + RouterInfo info = null; + if(rtr != null) + { + // The router cannot be routed. + Ice.RouterPrx router = Ice.RouterPrxHelper.uncheckedCast(rtr.ice_router(null)); + + synchronized(this) + { + info = _table.remove(router); + } + } + return info; + } + + private java.util.HashMap<Ice.RouterPrx, RouterInfo> _table = new java.util.HashMap<Ice.RouterPrx, RouterInfo>(); +} |