diff options
Diffstat (limited to 'java/src/IceGridGUI/SessionKeeper.java')
-rwxr-xr-x | java/src/IceGridGUI/SessionKeeper.java | 138 |
1 files changed, 96 insertions, 42 deletions
diff --git a/java/src/IceGridGUI/SessionKeeper.java b/java/src/IceGridGUI/SessionKeeper.java index f9935bded5b..b42e0f9d346 100755 --- a/java/src/IceGridGUI/SessionKeeper.java +++ b/java/src/IceGridGUI/SessionKeeper.java @@ -55,7 +55,7 @@ class SessionKeeper try { - _admin = session.getAdmin(); + _admin = _session.getAdmin(); } catch(Ice.LocalException e) { @@ -73,6 +73,47 @@ class SessionKeeper _admin = AdminPrxHelper.uncheckedCast(_admin.ice_endpoints(session.ice_getEndpoints())); } + try + { + if(_coordinator.getCommunicator().getDefaultRouter() == null) + { + Ice.ObjectPrx adminCallbackTemplate = _session.getAdminCallbackTemplate(); + + if(adminCallbackTemplate != null) + { + _adminCallbackCategory = adminCallbackTemplate.ice_getIdentity().category; + + Ice.Endpoint[] endpoints = adminCallbackTemplate.ice_getEndpoints(); + String publishedEndpoints = null; + for(int i = 0; i < endpoints.length; ++i) + { + String endpointString = endpoints[i].toString(); + if(publishedEndpoints == null) + { + publishedEndpoints = endpointString; + } + else + { + publishedEndpoints += ":" + endpointString; + } + } + _coordinator.getCommunicator().getProperties().setProperty("CallbackAdapter.PublishedEndpoints", publishedEndpoints); + } + } + _serverAdminCategory = _admin.getServerAdminCategory(); + + } + catch(Ice.LocalException e) + { + logout(true); + JOptionPane.showMessageDialog( + parent, + "Could not retrieve admin callback template or server admin category: " + e.toString(), + "Login failed", + JOptionPane.ERROR_MESSAGE); + throw e; + } + _thread = new Pinger(_session, keepAliveperiod); _thread.start(); @@ -110,6 +151,11 @@ class SessionKeeper return _admin; } + String getServerAdminCategory() + { + return _serverAdminCategory; + } + AdminPrx getRoutedAdmin() { assert _admin != null; @@ -134,6 +180,30 @@ class SessionKeeper return _routedAdmin; } + Ice.ObjectPrx addCallback(Ice.Object servant, String name, String facet) + { + if(_adminCallbackCategory == null) + { + return null; + } + else + { + return _adapter.addFacet(servant, new Ice.Identity(name, _adminCallbackCategory), facet); + } + } + + Ice.Object removeCallback(String name, String facet) + { + if(_adminCallbackCategory == null) + { + return null; + } + else + { + return _adapter.removeFacet(new Ice.Identity(name, _adminCallbackCategory), facet); + } + } + void close(boolean destroySession) { if(_thread != null) @@ -155,45 +225,8 @@ class SessionKeeper if(_adapter != null) { - try - { - _adapter.remove(_applicationObserverIdentity); - } - catch(Ice.NotRegisteredException e) - { - } - - try - { - _adapter.remove(_adapterObserverIdentity); - } - catch(Ice.NotRegisteredException e) - { - } - - try - { - _adapter.remove(_objectObserverIdentity); - } - catch(Ice.NotRegisteredException e) - { - } - - try - { - _adapter.remove(_registryObserverIdentity); - } - catch(Ice.NotRegisteredException e) - { - } - - try - { - _adapter.remove(_nodeObserverIdentity); - } - catch(Ice.NotRegisteredException e) - { - } + _adapter.destroy(); + _adapter = null; } if(destroySession) @@ -215,16 +248,19 @@ class SessionKeeper if(router == null) { category = "observer"; + + String adapterName = _adminCallbackCategory == null ? "" : "CallbackAdapter"; _adapter = - _coordinator.getCommunicator().createObjectAdapter(""); + _coordinator.getCommunicator().createObjectAdapter(adapterName); _adapter.activate(); _session.ice_getConnection().setAdapter(_adapter); } else { category = router.getCategoryForClient(); - + _adminCallbackCategory = category; + _adapter = _coordinator.getCommunicator().createObjectAdapterWithRouter("RoutedAdapter", router); _adapter.activate(); @@ -302,10 +338,13 @@ class SessionKeeper private final AdminSessionPrx _session; + private Pinger _thread; private Ice.ObjectAdapter _adapter; private AdminPrx _admin; + private String _serverAdminCategory; + private String _adminCallbackCategory; private AdminPrx _routedAdmin; private Ice.Identity _applicationObserverIdentity = new Ice.Identity(); private Ice.Identity _adapterObserverIdentity = new Ice.Identity(); @@ -1276,6 +1315,21 @@ class SessionKeeper return _session == null ? null : _session.getAdmin(); } + String getServerAdminCategory() + { + return _session == null ? null : _session.getServerAdminCategory(); + } + + Ice.ObjectPrx addCallback(Ice.Object servant, String name, String facet) + { + return _session == null ? null : _session.addCallback(servant, name, facet); + } + + Ice.Object removeCallback(String name, String facet) + { + return _session == null ? null : _session.removeCallback(name, facet); + } + AdminPrx getRoutedAdmin() { return _session == null ? null : _session.getRoutedAdmin(); |