diff options
author | Matthew Newhook <matthew@zeroc.com> | 2005-04-13 09:23:42 +0000 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2005-04-13 09:23:42 +0000 |
commit | 8bc5391d691608f87854e601952679b727399de1 (patch) | |
tree | c8b91d16219e3adf316e464ae2030bc7377656b4 /cpp | |
parent | moved session impl into seperate file. (diff) | |
download | ice-8bc5391d691608f87854e601952679b727399de1.tar.bz2 ice-8bc5391d691608f87854e601952679b727399de1.tar.xz ice-8bc5391d691608f87854e601952679b727399de1.zip |
added tracing. fixed bug.
Diffstat (limited to 'cpp')
-rwxr-xr-x | cpp/demo/Ice/session/HelloSessionManagerI.cpp | 5 | ||||
-rwxr-xr-x | cpp/demo/Ice/session/HelloSessionManagerI.h | 3 | ||||
-rw-r--r-- | cpp/demo/Ice/session/Server.cpp | 5 | ||||
-rwxr-xr-x | cpp/demo/Ice/session/SessionManagerI.cpp | 24 | ||||
-rwxr-xr-x | cpp/demo/Ice/session/SessionManagerI.h | 2 |
5 files changed, 30 insertions, 9 deletions
diff --git a/cpp/demo/Ice/session/HelloSessionManagerI.cpp b/cpp/demo/Ice/session/HelloSessionManagerI.cpp index 7b7bcda8d3c..2cd5f68a05c 100755 --- a/cpp/demo/Ice/session/HelloSessionManagerI.cpp +++ b/cpp/demo/Ice/session/HelloSessionManagerI.cpp @@ -14,6 +14,11 @@ using namespace std; using namespace Demo; +HelloSessionManagerI::HelloSessionManagerI(const Ice::CommunicatorPtr& communicator) : + SessionManagerI(communicator) +{ +} + SessionPrx HelloSessionManagerI::create(const Ice::Current& c) { diff --git a/cpp/demo/Ice/session/HelloSessionManagerI.h b/cpp/demo/Ice/session/HelloSessionManagerI.h index 5ac5badc408..dda0f8adcd0 100755 --- a/cpp/demo/Ice/session/HelloSessionManagerI.h +++ b/cpp/demo/Ice/session/HelloSessionManagerI.h @@ -15,6 +15,9 @@ class HelloSessionManagerI : public SessionManagerI { public: + + HelloSessionManagerI(const Ice::CommunicatorPtr&); + virtual ::Demo::SessionPrx create(const ::Ice::Current&); }; diff --git a/cpp/demo/Ice/session/Server.cpp b/cpp/demo/Ice/session/Server.cpp index 156ce0a148f..5047d977f35 100644 --- a/cpp/demo/Ice/session/Server.cpp +++ b/cpp/demo/Ice/session/Server.cpp @@ -17,9 +17,8 @@ int run(int argc, char* argv[], const Ice::CommunicatorPtr& communicator) { Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapter("SessionManager"); - SessionManagerIPtr manager = new HelloSessionManagerI; - Ice::ObjectPtr object = new HelloSessionManagerI; - adapter->add(object, Ice::stringToIdentity("SessionManager")); + SessionManagerIPtr manager = new HelloSessionManagerI(communicator); + adapter->add(manager, Ice::stringToIdentity("SessionManager")); adapter->activate(); communicator->waitForShutdown(); manager->destroy(); diff --git a/cpp/demo/Ice/session/SessionManagerI.cpp b/cpp/demo/Ice/session/SessionManagerI.cpp index 076417a95c5..331dba1d4ca 100755 --- a/cpp/demo/Ice/session/SessionManagerI.cpp +++ b/cpp/demo/Ice/session/SessionManagerI.cpp @@ -10,8 +10,6 @@ #include <Ice/Ice.h> #include <HelloSessionManagerI.h> -#include <HelloSession.h> - using namespace std; using namespace Demo; @@ -49,9 +47,10 @@ ReapThread::destroy() notify(); } -SessionManagerI::SessionManagerI() : +SessionManagerI::SessionManagerI(const Ice::CommunicatorPtr& communicator) : _timeout(IceUtil::Time::seconds(10)), _reapThread(new ReapThread(this, _timeout)), + _logger(communicator->getLogger()), _destroy(false) { _reapThread->start(); @@ -60,6 +59,7 @@ SessionManagerI::SessionManagerI() : SessionManagerI::~SessionManagerI() { assert(_sessions.size() == 0); + assert(_destroy); } void @@ -102,6 +102,9 @@ SessionManagerI::add(const SessionPrx& session) { Lock sync(*this); + Ice::Trace trace(_logger, "SessionManagerI"); + trace << "add: " << Ice::identityToString(session->ice_getIdentity()); + assert(!_destroy); _sessions.insert(make_pair(session->ice_getIdentity(), make_pair(IceUtil::Time::now(), session))); } @@ -115,9 +118,18 @@ SessionManagerI::remove(const Ice::Identity& id) map<Ice::Identity, pair< IceUtil::Time, SessionPrx> >::iterator p = _sessions.find(id); if(p != _sessions.end()) { - p->second.second->destroyed(); + try + { + p->second.second->destroyed(); + } + catch(const Ice::Exception&) + { + } _sessions.erase(p); } + + Ice::Trace trace(_logger, "SessionManagerI"); + trace << "SessionManagerI::remove: " << Ice::identityToString(id); } void @@ -148,6 +160,9 @@ SessionManagerI::reap() { if((now - p->second.first) > _timeout) { + Ice::Trace trace(_logger, "SessionManagerI"); + trace << "SessionManagerI::reaping: " << Ice::identityToString(p->first); + try { p->second.second->destroyed(); @@ -165,4 +180,3 @@ SessionManagerI::reap() } } } - diff --git a/cpp/demo/Ice/session/SessionManagerI.h b/cpp/demo/Ice/session/SessionManagerI.h index fa6d58f0f7f..f6f8eee2308 100755 --- a/cpp/demo/Ice/session/SessionManagerI.h +++ b/cpp/demo/Ice/session/SessionManagerI.h @@ -43,7 +43,7 @@ class SessionManagerI : public ::Demo::SessionManager, public IceUtil::Mutex { public: - SessionManagerI(); + SessionManagerI(const Ice::CommunicatorPtr&); ~SessionManagerI(); virtual ::Demo::SessionPrx create(const ::Ice::Current&) = 0; |