From 183c7a004d0a62ddecd9eeb0bc459846d98a7614 Mon Sep 17 00:00:00 2001 From: Benoit Foucher Date: Fri, 23 Nov 2007 11:25:31 +0100 Subject: Refactored IceGrid session servant management --- cpp/src/IceGrid/ServerCache.cpp | 129 ++++++++++++++++++++-------------------- 1 file changed, 63 insertions(+), 66 deletions(-) (limited to 'cpp/src/IceGrid/ServerCache.cpp') diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp index 9a8c547138a..9e38578a356 100644 --- a/cpp/src/IceGrid/ServerCache.cpp +++ b/cpp/src/IceGrid/ServerCache.cpp @@ -857,44 +857,43 @@ ServerEntry::allocated(const SessionIPtr& session) _load->sessionId = session->getId(); } - if(session->useFilters()) + + Glacier2::IdentitySetPrx identitySet = session->getGlacier2IdentitySet(); + Glacier2::StringSetPrx adapterIdSet = session->getGlacier2AdapterIdSet(); + if(identitySet && adapterIdSet) { - Glacier2::SessionControlPrx ctl = session->getSessionControl(); - if(ctl) + ServerHelperPtr helper = createHelper(desc); + multiset adapterIds; + multiset identities; + helper->getIds(adapterIds, identities); + try { - ServerHelperPtr helper = createHelper(desc); - multiset adapterIds; - multiset identities; - helper->getIds(adapterIds, identities); - try + // + // SunCC won't accept the following: + // + // ctl->adapterIds()->add(Ice::StringSeq(adapterIds.begin(), adapterIds.end())); + // ctl->identities()->add(Ice::IdentitySeq(identities.begin(), identities.end())); + // + Ice::StringSeq adapterIdSeq; + for(multiset::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p) { - // - // SunCC won't accept the following: - // - // ctl->adapterIds()->add(Ice::StringSeq(adapterIds.begin(), adapterIds.end())); - // ctl->identities()->add(Ice::IdentitySeq(identities.begin(), identities.end())); - // - Ice::StringSeq adapterIdSeq; - for(multiset::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p) - { - adapterIdSeq.push_back(*p); - } - Ice::IdentitySeq identitySeq; - for(multiset::iterator q = identities.begin(); q != identities.end(); ++q) - { - identitySeq.push_back(*q); - } - ctl->adapterIds()->add(adapterIdSeq); - ctl->identities()->add(identitySeq); + adapterIdSeq.push_back(*p); } - catch(const Ice::LocalException& ex) + Ice::IdentitySeq identitySeq; + for(multiset::iterator q = identities.begin(); q != identities.end(); ++q) { - if(traceLevels && traceLevels->server > 0) - { - Ice::Trace out(traceLevels->logger, traceLevels->serverCat); - out << "couldn't add Glacier2 filters for server `" << _id << "' allocated by `" - << session->getId() << ":\n" << ex; - } + identitySeq.push_back(*q); + } + adapterIdSet->add(adapterIdSeq); + identitySet->add(identitySeq); + } + catch(const Ice::LocalException& ex) + { + if(traceLevels && traceLevels->server > 0) + { + Ice::Trace out(traceLevels->logger, traceLevels->serverCat); + out << "couldn't add Glacier2 filters for server `" << _id << "' allocated by `" + << session->getId() << ":\n" << ex; } } } @@ -947,44 +946,42 @@ ServerEntry::released(const SessionIPtr& session) TraceLevelsPtr traceLevels = _cache.getTraceLevels(); - if(session->useFilters()) + Glacier2::IdentitySetPrx identitySet = session->getGlacier2IdentitySet(); + Glacier2::StringSetPrx adapterIdSet = session->getGlacier2AdapterIdSet(); + if(identitySet && adapterIdSet) { - Glacier2::SessionControlPrx ctl = session->getSessionControl(); - if(ctl) + ServerHelperPtr helper = createHelper(desc); + multiset adapterIds; + multiset identities; + helper->getIds(adapterIds, identities); + try { - ServerHelperPtr helper = createHelper(desc); - multiset adapterIds; - multiset identities; - helper->getIds(adapterIds, identities); - try + // + // SunCC won't accept the following: + // + // ctl->adapterIds()->remove(Ice::StringSeq(adapterIds.begin(), adapterIds.end())); + // ctl->identities()->remove(Ice::IdentitySeq(identities.begin(), identities.end())); + // + Ice::StringSeq adapterIdSeq; + for(multiset::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p) { - // - // SunCC won't accept the following: - // - // ctl->adapterIds()->remove(Ice::StringSeq(adapterIds.begin(), adapterIds.end())); - // ctl->identities()->remove(Ice::IdentitySeq(identities.begin(), identities.end())); - // - Ice::StringSeq adapterIdSeq; - for(multiset::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p) - { - adapterIdSeq.push_back(*p); - } - Ice::IdentitySeq identitySeq; - for(multiset::iterator q = identities.begin(); q != identities.end(); ++q) - { - identitySeq.push_back(*q); - } - ctl->adapterIds()->remove(adapterIdSeq); - ctl->identities()->remove(identitySeq); + adapterIdSeq.push_back(*p); } - catch(const Ice::LocalException& ex) + Ice::IdentitySeq identitySeq; + for(multiset::iterator q = identities.begin(); q != identities.end(); ++q) { - if(traceLevels && traceLevels->server > 0) - { - Ice::Trace out(traceLevels->logger, traceLevels->serverCat); - out << "couldn't remove Glacier2 filters for server `" << _id << "' allocated by `"; - out << session->getId() << ":\n" << ex; - } + identitySeq.push_back(*q); + } + adapterIdSet->remove(adapterIdSeq); + identitySet->remove(identitySeq); + } + catch(const Ice::LocalException& ex) + { + if(traceLevels && traceLevels->server > 0) + { + Ice::Trace out(traceLevels->logger, traceLevels->serverCat); + out << "couldn't remove Glacier2 filters for server `" << _id << "' allocated by `"; + out << session->getId() << ":\n" << ex; } } } -- cgit v1.2.3