summaryrefslogtreecommitdiff
path: root/js/src/Ice/RouterManager.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/Ice/RouterManager.js')
-rw-r--r--js/src/Ice/RouterManager.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/js/src/Ice/RouterManager.js b/js/src/Ice/RouterManager.js
new file mode 100644
index 00000000000..74156908bdd
--- /dev/null
+++ b/js/src/Ice/RouterManager.js
@@ -0,0 +1,77 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 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.
+//
+// **********************************************************************
+
+(function(global){
+ require("Ice/Class");
+ require("Ice/HashMap");
+ require("Ice/RouterInfo");
+ require("Ice/Router");
+
+ var Ice = global.Ice || {};
+
+ var HashMap = Ice.HashMap;
+ var RouterInfo = Ice.RouterInfo;
+ var RouterPrx = Ice.RouterPrx;
+
+ var RouterManager = Ice.Class({
+ __init__: function()
+ {
+ this._table = new HashMap(); // Map<Ice.RouterPrx, RouterInfo>
+ this._table.keyComparator = HashMap.compareEquals;
+ },
+ destroy: function()
+ {
+ for(var e = this._table.entries; e !== null; e = e.next)
+ {
+ e.value.destroy();
+ }
+ this._table.clear();
+ },
+ //
+ // Returns router info for a given router. Automatically creates
+ // the router info if it doesn't exist yet.
+ //
+ find: function(rtr)
+ {
+ if(rtr === null)
+ {
+ return null;
+ }
+
+ //
+ // The router cannot be routed.
+ //
+ var router = RouterPrx.uncheckedCast(rtr.ice_router(null));
+
+ var info = this._table.get(router);
+ if(info === undefined)
+ {
+ info = new RouterInfo(router);
+ this._table.set(router, info);
+ }
+
+ return info;
+ },
+ erase: function(rtr)
+ {
+ var info = null;
+ if(rtr !== null)
+ {
+ // The router cannot be routed.
+ var router = RouterPrx.uncheckedCast(rtr.ice_router(null));
+
+ info = this._table.get(router);
+ this._table.delete(router);
+ }
+ return info;
+ }
+ });
+ Ice.RouterManager = RouterManager;
+ global.Ice = Ice;
+}(typeof (global) === "undefined" ? window : global));