diff options
Diffstat (limited to 'cppe/demo/IceE/chat/PingThread.cpp')
-rw-r--r-- | cppe/demo/IceE/chat/PingThread.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/cppe/demo/IceE/chat/PingThread.cpp b/cppe/demo/IceE/chat/PingThread.cpp new file mode 100644 index 00000000000..52e6b49cce3 --- /dev/null +++ b/cppe/demo/IceE/chat/PingThread.cpp @@ -0,0 +1,47 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <PingThread.h> + +SessionPingThread::SessionPingThread(const Glacier2::SessionPrx& session) : + _session(session), + _timeout(IceUtil::Time::seconds(20)), + _destroy(false) +{ +} + +void +SessionPingThread::run() +{ + Lock sync(*this); + while(!_destroy) + { + timedWait(_timeout); + if(_destroy) + { + break; + } + try + { + _session->ice_ping(); + } + catch(const Ice::Exception&) + { + break; + } + } +} + +void +SessionPingThread::destroy() +{ + Lock sync(*this); + _destroy = true; + notify(); +} |