diff options
Diffstat (limited to 'java/src/IceInternal/RouterManager.java')
-rw-r--r-- | java/src/IceInternal/RouterManager.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/java/src/IceInternal/RouterManager.java b/java/src/IceInternal/RouterManager.java new file mode 100644 index 00000000000..5058792565f --- /dev/null +++ b/java/src/IceInternal/RouterManager.java @@ -0,0 +1,53 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +package IceInternal; + +public final class RouterManager +{ + RouterManager() + { + } + + synchronized void + 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; + } + + Ice.RouterPrx router = Ice.RouterPrxHelper.uncheckedCast(rtr.ice_router(null)); // The router cannot be routed. + + synchronized (this) + { + RouterInfo info = (RouterInfo)_table.get(router); + if (info == null) + { + info = new RouterInfo(router); + _table.put(router, info); + } + + return info; + } + } + + private java.util.HashMap _table = new java.util.HashMap(); +} |