diff options
Diffstat (limited to 'cpp/test/Ice/background/TestI.cpp')
-rw-r--r-- | cpp/test/Ice/background/TestI.cpp | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/cpp/test/Ice/background/TestI.cpp b/cpp/test/Ice/background/TestI.cpp new file mode 100644 index 00000000000..4883931db1b --- /dev/null +++ b/cpp/test/Ice/background/TestI.cpp @@ -0,0 +1,117 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 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 <TestI.h> +#include <Ice/Ice.h> + +using namespace std; +using namespace Ice; + +void +BackgroundI::op(const Ice::Current& current) +{ + _controller->checkCallPause(current); +} + +void +BackgroundI::opWithPayload(const Ice::ByteSeq&, const Ice::Current& current) +{ + _controller->checkCallPause(current); +} + +void +BackgroundI::shutdown(const Ice::Current& current) +{ + current.adapter->getCommunicator()->shutdown(); +} + +BackgroundI::BackgroundI(const BackgroundControllerIPtr& controller) : + _controller(controller) +{ +} + +void +BackgroundControllerI::pauseCall(const string& opName, const Ice::Current&) +{ + Lock sync(*this); + _pausedCalls.insert(opName); +} + +void +BackgroundControllerI::resumeCall(const string& opName, const Ice::Current&) +{ + Lock sync(*this); + _pausedCalls.erase(opName); + notifyAll(); +} + +void +BackgroundControllerI::checkCallPause(const Ice::Current& current) +{ + Lock sync(*this); + while(_pausedCalls.find(current.operation) != _pausedCalls.end()) + { + wait(); + } +} + +void +BackgroundControllerI::holdAdapter(const Ice::Current&) +{ + _adapter->hold(); +} + +void +BackgroundControllerI::resumeAdapter(const Ice::Current&) +{ + _adapter->activate(); +} + +void +BackgroundControllerI::initializeSocketStatus(int status, const Ice::Current&) +{ + _configuration->initializeSocketStatus(static_cast<IceInternal::SocketStatus>(status)); +} + +void +BackgroundControllerI::initializeException(bool enable, const Ice::Current&) +{ + _configuration->initializeException(enable ? new Ice::SocketException(__FILE__, __LINE__) : 0); +} + +void +BackgroundControllerI::readReady(bool enable, const Ice::Current&) +{ + _configuration->readReady(enable); +} + +void +BackgroundControllerI::readException(bool enable, const Ice::Current&) +{ + _configuration->readException(enable ? new Ice::SocketException(__FILE__, __LINE__) : 0); +} + +void +BackgroundControllerI::writeReady(bool enable, const Ice::Current&) +{ + _configuration->writeReady(enable); +} + +void +BackgroundControllerI::writeException(bool enable, const Ice::Current&) +{ + _configuration->writeException(enable ? new Ice::SocketException(__FILE__, __LINE__) : 0); +} + +BackgroundControllerI::BackgroundControllerI(const Ice::ObjectAdapterPtr& adapter, + const ConfigurationPtr& configuration) : + _adapter(adapter), + _configuration(configuration) +{ +} |