diff options
Diffstat (limited to 'cpp/src/IceGrid/ServerCache.cpp')
-rw-r--r-- | cpp/src/IceGrid/ServerCache.cpp | 1000 |
1 files changed, 500 insertions, 500 deletions
diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp index 36c8a917717..14030eea69b 100644 --- a/cpp/src/IceGrid/ServerCache.cpp +++ b/cpp/src/IceGrid/ServerCache.cpp @@ -26,45 +26,45 @@ namespace IceGrid struct AddCommunicator : std::unary_function<CommunicatorDescriptorPtr&, void> { - AddCommunicator(ServerCache& serverCache, const ServerEntryPtr& entry, const string& application) : - _serverCache(serverCache), _entry(entry), _application(application) - { - } - - void - operator()(const CommunicatorDescriptorPtr& desc) - { - _serverCache.addCommunicator(desc, _entry, _application); - } - - ServerCache& _serverCache; - const ServerEntryPtr _entry; - const string _application; + AddCommunicator(ServerCache& serverCache, const ServerEntryPtr& entry, const string& application) : + _serverCache(serverCache), _entry(entry), _application(application) + { + } + + void + operator()(const CommunicatorDescriptorPtr& desc) + { + _serverCache.addCommunicator(desc, _entry, _application); + } + + ServerCache& _serverCache; + const ServerEntryPtr _entry; + const string _application; }; struct RemoveCommunicator : std::unary_function<CommunicatorDescriptorPtr&, void> { - RemoveCommunicator(ServerCache& serverCache, const ServerEntryPtr& entry) : - _serverCache(serverCache), _entry(entry) - { - } + RemoveCommunicator(ServerCache& serverCache, const ServerEntryPtr& entry) : + _serverCache(serverCache), _entry(entry) + { + } - void - operator()(const CommunicatorDescriptorPtr& desc) - { - _serverCache.removeCommunicator(desc, _entry); - } + void + operator()(const CommunicatorDescriptorPtr& desc) + { + _serverCache.removeCommunicator(desc, _entry); + } - ServerCache& _serverCache; - const ServerEntryPtr _entry; + ServerCache& _serverCache; + const ServerEntryPtr _entry; }; } ServerCache::ServerCache(const Ice::CommunicatorPtr& communicator, - NodeCache& nodeCache, - AdapterCache& adapterCache, - ObjectCache& objectCache, - AllocatableObjectCache& allocatableObjectCache) : + NodeCache& nodeCache, + AdapterCache& adapterCache, + ObjectCache& objectCache, + AllocatableObjectCache& allocatableObjectCache) : _communicator(communicator), _nodeCache(nodeCache), _adapterCache(adapterCache), @@ -81,8 +81,8 @@ ServerCache::add(const ServerInfo& info) ServerEntryPtr entry = getImpl(info.descriptor->id); if(!entry) { - entry = new ServerEntry(*this, info.descriptor->id); - addImpl(info.descriptor->id, entry); + entry = new ServerEntry(*this, info.descriptor->id); + addImpl(info.descriptor->id, entry); } entry->update(info); _nodeCache.get(info.node, true)->addServer(entry); @@ -91,9 +91,9 @@ ServerCache::add(const ServerInfo& info) if(_traceLevels && _traceLevels->server > 0) { - Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); + Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "added server `" << info.descriptor->id << "' (`" << info.uuid << "', `" << info.revision << "')"; + out << "added server `" << info.descriptor->id << "' (`" << info.uuid << "', `" << info.revision << "')"; } return entry; @@ -106,9 +106,9 @@ ServerCache::get(const string& id) const ServerEntryPtr entry = getImpl(id); if(!entry) { - ServerNotExistException ex; - ex.id = id; - throw ex; + ServerNotExistException ex; + ex.id = id; + throw ex; } return entry; } @@ -134,14 +134,14 @@ ServerCache::remove(const string& id, bool destroy) if(destroy) { - entry->destroy(); // This must be done after otherwise some allocatable objects - // might allocate a destroyed server. + entry->destroy(); // This must be done after otherwise some allocatable objects + // might allocate a destroyed server. } if(_traceLevels && _traceLevels->server > 0) { - Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "removed server `" << id << "'"; + Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); + out << "removed server `" << id << "'"; } return entry; @@ -156,30 +156,30 @@ ServerCache::clear(const string& id) void ServerCache::addCommunicator(const CommunicatorDescriptorPtr& comm, - const ServerEntryPtr& server, - const string& application) + const ServerEntryPtr& server, + const string& application) { for(AdapterDescriptorSeq::const_iterator q = comm->adapters.begin() ; q != comm->adapters.end(); ++q) { - assert(!q->id.empty()); - _adapterCache.addServerAdapter(*q, server, application); + assert(!q->id.empty()); + _adapterCache.addServerAdapter(*q, server, application); - ObjectDescriptorSeq::const_iterator r; - for(r = q->objects.begin(); r != q->objects.end(); ++r) - { - ObjectInfo info; - info.type = r->type; - info.proxy = _communicator->stringToProxy("\"" + _communicator->identityToString(r->id) + "\" @ " + q->id); - _objectCache.add(info, application); - } + ObjectDescriptorSeq::const_iterator r; + for(r = q->objects.begin(); r != q->objects.end(); ++r) + { + ObjectInfo info; + info.type = r->type; + info.proxy = _communicator->stringToProxy("\"" + _communicator->identityToString(r->id) + "\" @ " + q->id); + _objectCache.add(info, application); + } - for(r = q->allocatables.begin(); r != q->allocatables.end(); ++r) - { - ObjectInfo info; - info.type = r->type; - info.proxy = _communicator->stringToProxy("\"" + _communicator->identityToString(r->id) + "\" @ " + q->id); - _allocatableObjectCache.add(info, server); - } + for(r = q->allocatables.begin(); r != q->allocatables.end(); ++r) + { + ObjectInfo info; + info.type = r->type; + info.proxy = _communicator->stringToProxy("\"" + _communicator->identityToString(r->id) + "\" @ " + q->id); + _allocatableObjectCache.add(info, server); + } } } @@ -188,16 +188,16 @@ ServerCache::removeCommunicator(const CommunicatorDescriptorPtr& comm, const Ser { for(AdapterDescriptorSeq::const_iterator q = comm->adapters.begin() ; q != comm->adapters.end(); ++q) { - ObjectDescriptorSeq::const_iterator r; - for(r = q->objects.begin(); r != q->objects.end(); ++r) - { - _objectCache.remove(r->id); - } - for(r = q->allocatables.begin(); r != q->allocatables.end(); ++r) - { - _allocatableObjectCache.remove(r->id); - } - _adapterCache.removeServerAdapter(q->id); + ObjectDescriptorSeq::const_iterator r; + for(r = q->objects.begin(); r != q->objects.end(); ++r) + { + _objectCache.remove(r->id); + } + for(r = q->allocatables.begin(); r != q->allocatables.end(); ++r) + { + _allocatableObjectCache.remove(r->id); + } + _adapterCache.removeServerAdapter(q->id); } } @@ -224,14 +224,14 @@ ServerEntry::syncAndWait() syncImpl(); try { - waitImpl(); + waitImpl(); } catch(const NodeUnreachableException&) { - // - // The node being unreachable isn't considered as a failure to - // synchronize the server. - // + // + // The node being unreachable isn't considered as a failure to + // synchronize the server. + // } } @@ -240,7 +240,7 @@ ServerEntry::waitNoThrow() { try { - waitImpl(); + waitImpl(); } catch(const Ice::Exception&) { @@ -253,7 +253,7 @@ ServerEntry::unsync() Lock sync(*this); if(_loaded.get()) { - _load = _loaded; + _load = _loaded; } _proxy = 0; _adapters.clear(); @@ -273,14 +273,14 @@ ServerEntry::update(const ServerInfo& info) if(!_destroy.get()) { - if(_loaded.get() && descriptor->node != _loaded->node) - { - _destroy = _loaded; - } - else if(_load.get() && descriptor->node != _load->node) - { - _destroy = _load; - } + if(_loaded.get() && descriptor->node != _loaded->node) + { + _destroy = _loaded; + } + else if(_load.get() && descriptor->node != _load->node) + { + _destroy = _load; + } } _load = descriptor; @@ -298,16 +298,16 @@ ServerEntry::destroy() assert(_loaded.get() || _load.get()); if(!_destroy.get()) { - if(_loaded.get()) - { - assert(!_destroy.get()); - _destroy = _loaded; - } - else if(_load.get()) - { - assert(!_destroy.get()); - _destroy = _load; - } + if(_loaded.get()) + { + assert(!_destroy.get()); + _destroy = _loaded; + } + else if(_load.get()) + { + assert(!_destroy.get()); + _destroy = _load; + } } _load.reset(0); @@ -321,30 +321,30 @@ ServerEntry::getInfo(bool resolve) const ServerInfo info; SessionIPtr session; { - Lock sync(*this); - if(!_loaded.get() && !_load.get()) - { - throw ServerNotExistException(); - } - info = _loaded.get() ? *_loaded : *_load; - session = _session; + Lock sync(*this); + if(!_loaded.get() && !_load.get()) + { + throw ServerNotExistException(); + } + info = _loaded.get() ? *_loaded : *_load; + session = _session; } assert(info.descriptor); if(resolve) { - try - { - return _cache.getNodeCache().get(info.node)->getServerInfo(info, session); - } - catch(const DeploymentException&) - { - } - catch(const NodeNotExistException&) - { - } - catch(const NodeUnreachableException&) - { - } + try + { + return _cache.getNodeCache().get(info.node)->getServerInfo(info, session); + } + catch(const DeploymentException&) + { + } + catch(const NodeNotExistException&) + { + } + catch(const NodeUnreachableException&) + { + } } return info; } @@ -367,45 +367,45 @@ ServerPrx ServerEntry::getProxy(int& activationTimeout, int& deactivationTimeout, string& node, bool upToDate) { { - Lock sync(*this); - if(_loaded.get() || _proxy && _synchronizing && !upToDate) // Synced or if not up to date is fine - { - assert(_loaded.get() || _load.get() || _destroy.get()); - activationTimeout = _activationTimeout; - deactivationTimeout = _deactivationTimeout; - node = _loaded.get() ? _loaded->node : (_load.get() ? _load->node : _destroy->node); - return _proxy; - } + Lock sync(*this); + if(_loaded.get() || _proxy && _synchronizing && !upToDate) // Synced or if not up to date is fine + { + assert(_loaded.get() || _load.get() || _destroy.get()); + activationTimeout = _activationTimeout; + deactivationTimeout = _deactivationTimeout; + node = _loaded.get() ? _loaded->node : (_load.get() ? _load->node : _destroy->node); + return _proxy; + } } while(true) { - // - // Note that we don't call syncAndWait() because we want - // NodeUnreachableException exceptions to go through. - // - syncImpl(); - waitImpl(); - - { - Lock sync(*this); - if(_loaded.get() || _proxy && _synchronizing && !upToDate) // Synced or if not up to date is fine - { - assert(_loaded.get() || _load.get() || _destroy.get()); - activationTimeout = _activationTimeout; - deactivationTimeout = _deactivationTimeout; - node = _loaded.get() ? _loaded->node : (_load.get() ? _load->node : _destroy->node); - return _proxy; - } - else if(_load.get()) - { - continue; // Retry - } - else - { - throw ServerNotExistException(_id); - } - } + // + // Note that we don't call syncAndWait() because we want + // NodeUnreachableException exceptions to go through. + // + syncImpl(); + waitImpl(); + + { + Lock sync(*this); + if(_loaded.get() || _proxy && _synchronizing && !upToDate) // Synced or if not up to date is fine + { + assert(_loaded.get() || _load.get() || _destroy.get()); + activationTimeout = _activationTimeout; + deactivationTimeout = _deactivationTimeout; + node = _loaded.get() ? _loaded->node : (_load.get() ? _load->node : _destroy->node); + return _proxy; + } + else if(_load.get()) + { + continue; // Retry + } + else + { + throw ServerNotExistException(_id); + } + } } } @@ -420,58 +420,58 @@ AdapterPrx ServerEntry::getAdapter(int& activationTimeout, int& deactivationTimeout, const string& id, bool upToDate) { { - Lock sync(*this); - if(_loaded.get() || _proxy && _synchronizing && !upToDate) // Synced or if not up to date is fine - { - AdapterPrxDict::const_iterator p = _adapters.find(id); - if(p != _adapters.end()) - { - assert(p->second); - activationTimeout = _activationTimeout; - deactivationTimeout = _deactivationTimeout; - return p->second; - } - else - { - throw AdapterNotExistException(id); - } - } + Lock sync(*this); + if(_loaded.get() || _proxy && _synchronizing && !upToDate) // Synced or if not up to date is fine + { + AdapterPrxDict::const_iterator p = _adapters.find(id); + if(p != _adapters.end()) + { + assert(p->second); + activationTimeout = _activationTimeout; + deactivationTimeout = _deactivationTimeout; + return p->second; + } + else + { + throw AdapterNotExistException(id); + } + } } while(true) { - // - // Note that we don't call syncAndWait() because we want - // NodeUnreachableException exceptions to go through. - // - syncImpl(); - waitImpl(); - - { - Lock sync(*this); - if(_loaded.get() || _proxy && _synchronizing && !upToDate) // Synced or if not up to date is fine - { - AdapterPrxDict::const_iterator p = _adapters.find(id); - if(p != _adapters.end()) - { - activationTimeout = _activationTimeout; - deactivationTimeout = _deactivationTimeout; - return p->second; - } - else - { - throw AdapterNotExistException(id); - } - } - else if(_load.get()) - { - continue; // Retry - } - else - { - throw AdapterNotExistException(id); - } - } + // + // Note that we don't call syncAndWait() because we want + // NodeUnreachableException exceptions to go through. + // + syncImpl(); + waitImpl(); + + { + Lock sync(*this); + if(_loaded.get() || _proxy && _synchronizing && !upToDate) // Synced or if not up to date is fine + { + AdapterPrxDict::const_iterator p = _adapters.find(id); + if(p != _adapters.end()) + { + activationTimeout = _activationTimeout; + deactivationTimeout = _deactivationTimeout; + return p->second; + } + else + { + throw AdapterNotExistException(id); + } + } + else if(_load.get()) + { + continue; // Retry + } + else + { + throw AdapterNotExistException(id); + } + } } } @@ -481,21 +481,21 @@ ServerEntry::getLoad(LoadSample sample) const string application; string node; { - Lock sync(*this); - if(_loaded.get()) - { - application = _loaded->application; - node = _loaded->node; - } - else if(_load.get()) - { - application = _load->application; - node = _load->node; - } - else - { - throw ServerNotExistException(); - } + Lock sync(*this); + if(_loaded.get()) + { + application = _loaded->application; + node = _loaded->node; + } + else if(_load.get()) + { + application = _load->application; + node = _load->node; + } + else + { + throw ServerNotExistException(); + } } float factor; @@ -503,14 +503,14 @@ ServerEntry::getLoad(LoadSample sample) const switch(sample) { case LoadSample1: - return load.avg1 < 0.f ? 1.0f : load.avg1 * factor; + return load.avg1 < 0.f ? 1.0f : load.avg1 * factor; case LoadSample5: - return load.avg5 < 0.f ? 1.0f : load.avg5 * factor; + return load.avg5 < 0.f ? 1.0f : load.avg5 * factor; case LoadSample15: - return load.avg15 < 0.f ? 1.0f : load.avg15 * factor; + return load.avg15 < 0.f ? 1.0f : load.avg15 * factor; default: - assert(false); - return 1.0f; + assert(false); + return 1.0f; } } @@ -523,60 +523,60 @@ ServerEntry::syncImpl() int timeout = -1; { - Lock sync(*this); - if(_synchronizing) - { - return; - } - - if(!_load.get() && !_destroy.get()) - { - _load = _loaded; // Re-load the current server. - } - - _updated = false; - _exception.reset(0); - - if(_destroy.get()) - { - destroy = *_destroy; - timeout = _deactivationTimeout; - } - else if(_load.get()) - { - load = *_load; - session = _session; - timeout = _deactivationTimeout; // loadServer might block to deactivate the previous server. - } - else - { - return; - } - - _synchronizing = true; + Lock sync(*this); + if(_synchronizing) + { + return; + } + + if(!_load.get() && !_destroy.get()) + { + _load = _loaded; // Re-load the current server. + } + + _updated = false; + _exception.reset(0); + + if(_destroy.get()) + { + destroy = *_destroy; + timeout = _deactivationTimeout; + } + else if(_load.get()) + { + load = *_load; + session = _session; + timeout = _deactivationTimeout; // loadServer might block to deactivate the previous server. + } + else + { + return; + } + + _synchronizing = true; } if(destroy.descriptor) { - try - { - _cache.getNodeCache().get(destroy.node)->destroyServer(this, destroy, timeout); - } - catch(NodeNotExistException&) - { - exception(NodeUnreachableException(destroy.node, "node is not active")); - } + try + { + _cache.getNodeCache().get(destroy.node)->destroyServer(this, destroy, timeout); + } + catch(NodeNotExistException&) + { + exception(NodeUnreachableException(destroy.node, "node is not active")); + } } else if(load.descriptor) { - try - { - _cache.getNodeCache().get(load.node)->loadServer(this, load, session, timeout); - } - catch(NodeNotExistException&) - { - exception(NodeUnreachableException(load.node, "node is not active")); - } + try + { + _cache.getNodeCache().get(load.node)->loadServer(this, load, session, timeout); + } + catch(NodeNotExistException&) + { + exception(NodeUnreachableException(load.node, "node is not active")); + } } } @@ -586,35 +586,35 @@ ServerEntry::waitImpl() Lock sync(*this); while(_synchronizing) { - wait(); + wait(); } if(_exception.get()) { - try - { - _exception->ice_throw(); - } - catch(const DeploymentException&) - { - throw; - } - catch(const NodeUnreachableException&) - { - throw; - } - catch(const Ice::Exception& ex) // This shouln't happen. - { - ostringstream os; - os << "unexpected exception while synchronizing server `" + _id + "':\n" << ex; - TraceLevelsPtr traceLevels = _cache.getTraceLevels(); - if(traceLevels) - { - Ice::Error err(traceLevels->logger); - err << os.str(); - } - throw DeploymentException(os.str()); - } + try + { + _exception->ice_throw(); + } + catch(const DeploymentException&) + { + throw; + } + catch(const NodeUnreachableException&) + { + throw; + } + catch(const Ice::Exception& ex) // This shouln't happen. + { + ostringstream os; + os << "unexpected exception while synchronizing server `" + _id + "':\n" << ex; + TraceLevelsPtr traceLevels = _cache.getTraceLevels(); + if(traceLevels) + { + Ice::Error err(traceLevels->logger); + err << os.str(); + } + throw DeploymentException(os.str()); + } } } @@ -627,66 +627,66 @@ ServerEntry::loadCallback(const ServerPrx& proxy, const AdapterPrxDict& adpts, i int timeout = -1; { - Lock sync(*this); - if(!_updated) - { - // - // Set timeout on server and adapter proxies. Most of the - // calls on the proxies shouldn't block for longer than the - // node session timeout. Calls that might block for a longer - // time should set the correct timeout before invoking on the - // proxy (e.g.: server start/stop, adapter activate). - // - _loaded = _load; - assert(_loaded.get()); - _proxy = proxy; - _adapters = adpts; - _activationTimeout = at; - _deactivationTimeout = dt; - - assert(!_destroy.get() && !_load.get()); - _synchronizing = false; - notifyAll(); - return; - } - else - { - _updated = false; - if(_destroy.get()) - { - destroy = *_destroy; - } - else if(_load.get()) - { - load = *_load; - session = _session; - timeout = _deactivationTimeout; // loadServer might block to deactivate the previous server. - } - } + Lock sync(*this); + if(!_updated) + { + // + // Set timeout on server and adapter proxies. Most of the + // calls on the proxies shouldn't block for longer than the + // node session timeout. Calls that might block for a longer + // time should set the correct timeout before invoking on the + // proxy (e.g.: server start/stop, adapter activate). + // + _loaded = _load; + assert(_loaded.get()); + _proxy = proxy; + _adapters = adpts; + _activationTimeout = at; + _deactivationTimeout = dt; + + assert(!_destroy.get() && !_load.get()); + _synchronizing = false; + notifyAll(); + return; + } + else + { + _updated = false; + if(_destroy.get()) + { + destroy = *_destroy; + } + else if(_load.get()) + { + load = *_load; + session = _session; + timeout = _deactivationTimeout; // loadServer might block to deactivate the previous server. + } + } } assert(destroy.descriptor || load.descriptor); if(destroy.descriptor) { - try - { - _cache.getNodeCache().get(destroy.node)->destroyServer(this, destroy, timeout); - } - catch(NodeNotExistException&) - { - exception(NodeUnreachableException(destroy.node, "node is not active")); - } + try + { + _cache.getNodeCache().get(destroy.node)->destroyServer(this, destroy, timeout); + } + catch(NodeNotExistException&) + { + exception(NodeUnreachableException(destroy.node, "node is not active")); + } } else if(load.descriptor) { - try - { - _cache.getNodeCache().get(load.node)->loadServer(this, load, session, timeout); - } - catch(NodeNotExistException&) - { - exception(NodeUnreachableException(load.node, "node is not active")); - } + try + { + _cache.getNodeCache().get(load.node)->loadServer(this, load, session, timeout); + } + catch(NodeNotExistException&) + { + exception(NodeUnreachableException(load.node, "node is not active")); + } } } @@ -697,41 +697,41 @@ ServerEntry::destroyCallback() SessionIPtr session; { - Lock sync(*this); - _destroy.reset(0); - _proxy = 0; - _adapters.clear(); - _activationTimeout = -1; - _deactivationTimeout = -1; + Lock sync(*this); + _destroy.reset(0); + _proxy = 0; + _adapters.clear(); + _activationTimeout = -1; + _deactivationTimeout = -1; - if(!_load.get()) - { - assert(!_load.get() && !_loaded.get()); - _synchronizing = false; - notifyAll(); - } - else - { - _updated = false; - load = *_load; - session = _session; - } + if(!_load.get()) + { + assert(!_load.get() && !_loaded.get()); + _synchronizing = false; + notifyAll(); + } + else + { + _updated = false; + load = *_load; + session = _session; + } } if(load.descriptor) { - try - { - _cache.getNodeCache().get(load.node)->loadServer(this, load, session, -1); - } - catch(NodeNotExistException&) - { - exception(NodeUnreachableException(load.node, "node is not active")); - } + try + { + _cache.getNodeCache().get(load.node)->loadServer(this, load, session, -1); + } + catch(NodeNotExistException&) + { + exception(NodeUnreachableException(load.node, "node is not active")); + } } else { - _cache.clear(_id); + _cache.clear(_id); } } @@ -744,43 +744,43 @@ ServerEntry::exception(const Ice::Exception& ex) int timeout = -1; { - Lock sync(*this); - if((_destroy.get() && !_load.get()) || (!_destroy.get() && !_updated)) - { - remove = _destroy.get(); - _destroy.reset(0); - _exception.reset(ex.ice_clone()); - _proxy = 0; - _adapters.clear(); - _activationTimeout = -1; - _deactivationTimeout = -1; - _synchronizing = false; - notifyAll(); - } - else - { - _destroy.reset(0); - _updated = false; - load = *_load.get(); - session = _session; - timeout = _deactivationTimeout; // loadServer might block to deactivate the previous server. - } + Lock sync(*this); + if((_destroy.get() && !_load.get()) || (!_destroy.get() && !_updated)) + { + remove = _destroy.get(); + _destroy.reset(0); + _exception.reset(ex.ice_clone()); + _proxy = 0; + _adapters.clear(); + _activationTimeout = -1; + _deactivationTimeout = -1; + _synchronizing = false; + notifyAll(); + } + else + { + _destroy.reset(0); + _updated = false; + load = *_load.get(); + session = _session; + timeout = _deactivationTimeout; // loadServer might block to deactivate the previous server. + } } if(load.descriptor) { - try - { - _cache.getNodeCache().get(load.node)->loadServer(this, load, session, timeout); - } - catch(NodeNotExistException&) - { - exception(NodeUnreachableException(load.node, "node is not active")); - } + try + { + _cache.getNodeCache().get(load.node)->loadServer(this, load, session, timeout); + } + catch(NodeNotExistException&) + { + exception(NodeUnreachableException(load.node, "node is not active")); + } } else if(remove) { - _cache.clear(_id); + _cache.clear(_id); } } @@ -804,14 +804,14 @@ ServerEntry::allocated(const SessionIPtr& session) { if(!_loaded.get() && !_load.get()) { - return; + return; } TraceLevelsPtr traceLevels = _cache.getTraceLevels(); if(traceLevels && traceLevels->server > 1) { - Ice::Trace out(traceLevels->logger, traceLevels->serverCat); - out << "server `" << _id << "' allocated by `" << session->getId() << "' (" << _count << ")"; + Ice::Trace out(traceLevels->logger, traceLevels->serverCat); + out << "server `" << _id << "' allocated by `" << session->getId() << "' (" << _count << ")"; } ServerDescriptorPtr desc = _loaded.get() ? _loaded->descriptor : _load->descriptor; @@ -824,52 +824,52 @@ ServerEntry::allocated(const SessionIPtr& session) // if(desc->activation == "session") { - _updated = true; - if(!_load.get()) - { - _load = _loaded; - } - _session = session; - _load->sessionId = session->getId(); + _updated = true; + if(!_load.get()) + { + _load = _loaded; + } + _session = session; + _load->sessionId = session->getId(); } Glacier2::SessionControlPrx ctl = session->getSessionControl(); if(ctl) { - ServerHelperPtr helper = createHelper(desc); - multiset<string> adapterIds; - multiset<Ice::Identity> 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<string>::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p) - { - adapterIdSeq.push_back(*p); - } - Ice::IdentitySeq identitySeq; - for(multiset<Ice::Identity>::iterator q = identities.begin(); q != identities.end(); ++q) - { - identitySeq.push_back(*q); - } - ctl->adapterIds()->add(adapterIdSeq); - ctl->identities()->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(); - out << ":\n" << ex; - } - } + ServerHelperPtr helper = createHelper(desc); + multiset<string> adapterIds; + multiset<Ice::Identity> 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<string>::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p) + { + adapterIdSeq.push_back(*p); + } + Ice::IdentitySeq identitySeq; + for(multiset<Ice::Identity>::iterator q = identities.begin(); q != identities.end(); ++q) + { + identitySeq.push_back(*q); + } + ctl->adapterIds()->add(adapterIdSeq); + ctl->identities()->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(); + out << ":\n" << ex; + } + } } } @@ -877,13 +877,13 @@ void ServerEntry::allocatedNoSync(const SessionIPtr& session) { { - Lock sync(*this); - if(!_updated || - _loaded.get() && _loaded->descriptor->activation != "session" || - _load.get() && _load->descriptor->activation != "session") - { - return; - } + Lock sync(*this); + if(!_updated || + _loaded.get() && _loaded->descriptor->activation != "session" || + _load.get() && _load->descriptor->activation != "session") + { + return; + } } sync(); @@ -895,7 +895,7 @@ ServerEntry::released(const SessionIPtr& session) { if(!_loaded.get() && !_load.get()) { - return; + return; } ServerDescriptorPtr desc = _loaded.get() ? _loaded->descriptor : _load->descriptor; @@ -909,13 +909,13 @@ ServerEntry::released(const SessionIPtr& session) // if(desc->activation == "session") { - _updated = true; - if(!_load.get()) - { - _load = _loaded; - } - _load->sessionId = ""; - _session = 0; + _updated = true; + if(!_load.get()) + { + _load = _loaded; + } + _load->sessionId = ""; + _session = 0; } TraceLevelsPtr traceLevels = _cache.getTraceLevels(); @@ -923,46 +923,46 @@ ServerEntry::released(const SessionIPtr& session) Glacier2::SessionControlPrx ctl = session->getSessionControl(); if(ctl) { - ServerHelperPtr helper = createHelper(desc); - multiset<string> adapterIds; - multiset<Ice::Identity> 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<string>::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p) - { - adapterIdSeq.push_back(*p); - } - Ice::IdentitySeq identitySeq; - for(multiset<Ice::Identity>::iterator q = identities.begin(); q != identities.end(); ++q) - { - identitySeq.push_back(*q); - } - ctl->adapterIds()->remove(adapterIdSeq); - ctl->identities()->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; - } - } + ServerHelperPtr helper = createHelper(desc); + multiset<string> adapterIds; + multiset<Ice::Identity> 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<string>::iterator p = adapterIds.begin(); p != adapterIds.end(); ++p) + { + adapterIdSeq.push_back(*p); + } + Ice::IdentitySeq identitySeq; + for(multiset<Ice::Identity>::iterator q = identities.begin(); q != identities.end(); ++q) + { + identitySeq.push_back(*q); + } + ctl->adapterIds()->remove(adapterIdSeq); + ctl->identities()->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; + } + } } if(traceLevels && traceLevels->server > 1) { - Ice::Trace out(traceLevels->logger, traceLevels->serverCat); - out << "server `" << _id << "' released by `" << session->getId() << "' (" << _count << ")"; + Ice::Trace out(traceLevels->logger, traceLevels->serverCat); + out << "server `" << _id << "' released by `" << session->getId() << "' (" << _count << ")"; } } @@ -970,13 +970,13 @@ void ServerEntry::releasedNoSync(const SessionIPtr& session) { { - Lock sync(*this); - if(!_updated || - _loaded.get() && _loaded->descriptor->activation != "session" || - _load.get() && _load->descriptor->activation != "session") - { - return; - } + Lock sync(*this); + if(!_updated || + _loaded.get() && _loaded->descriptor->activation != "session" || + _load.get() && _load->descriptor->activation != "session") + { + return; + } } sync(); |