summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/ServerCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/ServerCache.cpp')
-rw-r--r--cpp/src/IceGrid/ServerCache.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp
index b328fa5a3b3..5b68c70bc5a 100644
--- a/cpp/src/IceGrid/ServerCache.cpp
+++ b/cpp/src/IceGrid/ServerCache.cpp
@@ -9,6 +9,7 @@
#include <Ice/LoggerUtil.h>
#include <Ice/Communicator.h>
+#include <Ice/LocalException.h>
#include <IceGrid/ServerCache.h>
#include <IceGrid/NodeCache.h>
#include <IceGrid/AdapterCache.h>
@@ -787,6 +788,23 @@ ServerEntry::allocated(const SessionIPtr& session)
_session = session;
}
}
+
+ Glacier2::SessionControlPrx ctl = session->getSessionControl();
+ if(ctl)
+ {
+ try
+ {
+ Ice::StringSeq seq(_adapters.size());
+ for(AdapterPrxDict::const_iterator p = _adapters.begin(); p != _adapters.end(); ++p)
+ {
+ seq.push_back(p->first);
+ }
+ ctl->adapterIdFilter()->addAccept(seq);
+ }
+ catch(const Ice::ObjectNotExistException&)
+ {
+ }
+ }
}
void
@@ -817,6 +835,23 @@ ServerEntry::released(const SessionIPtr& session)
}
}
+ Glacier2::SessionControlPrx ctl = session->getSessionControl();
+ if(ctl)
+ {
+ try
+ {
+ Ice::StringSeq seq(_adapters.size());
+ for(AdapterPrxDict::const_iterator p = _adapters.begin(); p != _adapters.end(); ++p)
+ {
+ seq.push_back(p->first);
+ }
+ ctl->adapterIdFilter()->removeAccept(seq);
+ }
+ catch(const Ice::ObjectNotExistException&)
+ {
+ }
+ }
+
TraceLevelsPtr traceLevels = _cache.getTraceLevels();
if(traceLevels && traceLevels->server > 1)
{