diff options
Diffstat (limited to 'cpp/src/IceGrid/AdapterCache.cpp')
-rw-r--r-- | cpp/src/IceGrid/AdapterCache.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/cpp/src/IceGrid/AdapterCache.cpp b/cpp/src/IceGrid/AdapterCache.cpp index 796a8db35f5..81ed7bfff4b 100644 --- a/cpp/src/IceGrid/AdapterCache.cpp +++ b/cpp/src/IceGrid/AdapterCache.cpp @@ -14,6 +14,7 @@ #include <IceGrid/NodeSessionI.h> #include <IceGrid/ServerCache.h> #include <IceGrid/NodeCache.h> +#include <IceGrid/SessionI.h> using namespace std; using namespace IceGrid; @@ -183,12 +184,21 @@ ServerAdapterEntry::getApplication() const } void -ServerAdapterEntry::set(const ServerEntryPtr& server, const string& replicaGroupId) +ServerAdapterEntry::set(const ServerEntryPtr& server, const string& replicaGroupId, bool allocatable) { { Lock sync(*this); _server = server; _replicaGroupId = replicaGroupId; + if(server->allocatable()) + { + _parent = server; + _allocatable = true; + } + else + { + _allocatable = allocatable; + } } if(!replicaGroupId.empty()) { @@ -237,6 +247,28 @@ ServerAdapterEntry::getServer() const return _server; } +void +ServerAdapterEntry::allocated(const SessionIPtr& session) +{ + TraceLevelsPtr traceLevels = _cache.getTraceLevels(); + if(traceLevels && traceLevels->adapter > 1) + { + Ice::Trace out(traceLevels->logger, traceLevels->adapterCat); + out << "adapter `" << _id << "' allocated by `" << session->getUserId() << "' (" << _count << ")"; + } +} + +void +ServerAdapterEntry::released(const SessionIPtr& session) +{ + TraceLevelsPtr traceLevels = _cache.getTraceLevels(); + if(traceLevels && traceLevels->adapter > 1) + { + Ice::Trace out(traceLevels->logger, traceLevels->adapterCat); + out << "adapter `" << _id << "' released by `" << session->getUserId() << "' (" << _count << ")"; + } +} + ReplicaGroupEntry::ReplicaGroupEntry(Cache<string, AdapterEntry>& cache, const std::string& id) : AdapterEntry(cache, id), _lastReplica(0) @@ -416,3 +448,4 @@ ReplicaGroupEntry::getApplication() const Lock sync(*this); return _application; } + |