summaryrefslogtreecommitdiff
path: root/cpp/test/Ice/background/TestI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2007-11-27 11:58:35 +0100
committerBenoit Foucher <benoit@zeroc.com>2007-11-27 11:58:35 +0100
commit47f800495093fd7679a315e2d730fea22f6135b7 (patch)
treea7b8d3488f3841367dd03d10cae293f36fd10481 /cpp/test/Ice/background/TestI.cpp
parentFixed SystemException to no longer derive from LocalException (diff)
downloadice-47f800495093fd7679a315e2d730fea22f6135b7.tar.bz2
ice-47f800495093fd7679a315e2d730fea22f6135b7.tar.xz
ice-47f800495093fd7679a315e2d730fea22f6135b7.zip
- Added support for non-blocking AMI/batch requests, connection
creation. - Added support for AMI oneway requests. - Changed collocation optimization to not perform any DNS lookups.
Diffstat (limited to 'cpp/test/Ice/background/TestI.cpp')
-rw-r--r--cpp/test/Ice/background/TestI.cpp117
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)
+{
+}