summaryrefslogtreecommitdiff
path: root/cpp/test
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/test')
-rw-r--r--cpp/test/Glacier2/Makefile1
-rw-r--r--cpp/test/Glacier2/Makefile.mak1
-rw-r--r--cpp/test/Glacier2/override/.depend5
-rw-r--r--cpp/test/Glacier2/override/.depend.mak5
-rw-r--r--cpp/test/Glacier2/override/Callback.ice36
-rw-r--r--cpp/test/Glacier2/override/CallbackI.cpp222
-rw-r--r--cpp/test/Glacier2/override/CallbackI.h59
-rw-r--r--cpp/test/Glacier2/override/Client.cpp210
-rw-r--r--cpp/test/Glacier2/override/Makefile42
-rw-r--r--cpp/test/Glacier2/override/Makefile.mak50
-rw-r--r--cpp/test/Glacier2/override/Server.cpp47
-rwxr-xr-xcpp/test/Glacier2/override/run.py62
12 files changed, 740 insertions, 0 deletions
diff --git a/cpp/test/Glacier2/Makefile b/cpp/test/Glacier2/Makefile
index f1d077751c0..e41a3726978 100644
--- a/cpp/test/Glacier2/Makefile
+++ b/cpp/test/Glacier2/Makefile
@@ -13,6 +13,7 @@ include $(top_srcdir)/config/Make.rules
SUBDIRS = router \
attack \
+ override \
staticFiltering \
dynamicFiltering \
sessionControl \
diff --git a/cpp/test/Glacier2/Makefile.mak b/cpp/test/Glacier2/Makefile.mak
index 242a4a9c14e..9af3be4ec06 100644
--- a/cpp/test/Glacier2/Makefile.mak
+++ b/cpp/test/Glacier2/Makefile.mak
@@ -13,6 +13,7 @@ top_srcdir = ..\..
SUBDIRS = router \
attack \
+ override \
staticFiltering \
dynamicFiltering \
sessionControl \
diff --git a/cpp/test/Glacier2/override/.depend b/cpp/test/Glacier2/override/.depend
new file mode 100644
index 00000000000..5a0961312c5
--- /dev/null
+++ b/cpp/test/Glacier2/override/.depend
@@ -0,0 +1,5 @@
+Callback$(OBJEXT): Callback.cpp Callback.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Stream.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h
+CallbackI$(OBJEXT): CallbackI.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Stream.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h CallbackI.h Callback.h ../../include/TestCommon.h
+Client$(OBJEXT): Client.cpp $(includedir)/IceUtil/Random.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Application.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Stream.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Glacier2/Router.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h ../../include/TestCommon.h CallbackI.h Callback.h
+Server$(OBJEXT): Server.cpp $(includedir)/Ice/Application.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Stream.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h CallbackI.h Callback.h
+Callback.cpp: Callback.ice $(slicedir)/Ice/BuiltinSequences.ice $(SLICE2CPP) $(SLICEPARSERLIB)
diff --git a/cpp/test/Glacier2/override/.depend.mak b/cpp/test/Glacier2/override/.depend.mak
new file mode 100644
index 00000000000..f5c29ac5c0d
--- /dev/null
+++ b/cpp/test/Glacier2/override/.depend.mak
@@ -0,0 +1,5 @@
+Callback$(OBJEXT): Callback.cpp Callback.h "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointIF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/Ice/UndefSysMacros.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/GCShared.h" "$(includedir)/Ice/GCCountMap.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Direct.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/IceUtil/Iterator.h"
+CallbackI$(OBJEXT): CallbackI.cpp "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/Ice/UndefSysMacros.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointIF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/GCShared.h" "$(includedir)/Ice/GCCountMap.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/StatsF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/StringConverter.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Stream.h" "$(includedir)/IceUtil/Unicode.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/Direct.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Stats.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/IconvStringConverter.h" CallbackI.h Callback.h ../../include/TestCommon.h
+Client$(OBJEXT): Client.cpp "$(includedir)/IceUtil/Random.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/IceUtil.h" "$(includedir)/IceUtil/AbstractMutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/Cache.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/CountDownLatch.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/CtrlCHandler.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/IceUtil/RWRecMutex.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/RecMutex.h" "$(includedir)/IceUtil/StaticMutex.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/UUID.h" "$(includedir)/IceUtil/Unicode.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/Ice/UndefSysMacros.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointIF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/GCShared.h" "$(includedir)/Ice/GCCountMap.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/StatsF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/StringConverter.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/Direct.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Stats.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/IconvStringConverter.h" "$(includedir)/Glacier2/Router.h" "$(includedir)/Glacier2/Session.h" "$(includedir)/Glacier2/SSLInfo.h" ../../include/TestCommon.h CallbackI.h Callback.h
+Server$(OBJEXT): Server.cpp "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/Ice/UndefSysMacros.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointIF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/GCShared.h" "$(includedir)/Ice/GCCountMap.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/StatsF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/StringConverter.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Stream.h" "$(includedir)/IceUtil/Unicode.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/Direct.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Stats.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/IconvStringConverter.h" CallbackI.h Callback.h
+Callback.cpp: Callback.ice "$(slicedir)/Ice/BuiltinSequences.ice" "$(SLICE2CPP)" "$(SLICEPARSERLIB)"
diff --git a/cpp/test/Glacier2/override/Callback.ice b/cpp/test/Glacier2/override/Callback.ice
new file mode 100644
index 00000000000..c7f9fd2c109
--- /dev/null
+++ b/cpp/test/Glacier2/override/Callback.ice
@@ -0,0 +1,36 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2010 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.
+//
+// **********************************************************************
+
+#ifndef CALLBACK_ICE
+#define CALLBACK_ICE
+
+#include <Ice/BuiltinSequences.ice>
+
+module Test
+{
+
+interface CallbackReceiver
+{
+ ["ami"] void callback(int token);
+
+ ["ami"] void callbackWithPayload(Ice::ByteSeq payload);
+};
+
+interface Callback
+{
+ ["amd"] void initiateCallback(CallbackReceiver* proxy, int token);
+
+ ["amd"] void initiateCallbackWithPayload(CallbackReceiver* proxy);
+
+ void shutdown();
+};
+
+};
+
+#endif
diff --git a/cpp/test/Glacier2/override/CallbackI.cpp b/cpp/test/Glacier2/override/CallbackI.cpp
new file mode 100644
index 00000000000..b561b120fed
--- /dev/null
+++ b/cpp/test/Glacier2/override/CallbackI.cpp
@@ -0,0 +1,222 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2010 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 <Ice/Ice.h>
+#include <CallbackI.h>
+#include <TestCommon.h>
+
+using namespace std;
+using namespace Ice;
+using namespace Test;
+
+class Cookie : public Ice::LocalObject
+{
+};
+typedef IceUtil::Handle<Cookie> CookiePtr;
+
+template<class T>
+class CookieT : public Cookie
+{
+public:
+
+ CookieT(const T& v) : cb(v)
+ {
+ }
+
+ T cb;
+};
+
+template<typename T> CookiePtr newCookie(const T& cb)
+{
+ return new CookieT<T>(cb);
+}
+
+template<typename T> const T& getCookie(const CookiePtr& cookie)
+{
+ return dynamic_cast<CookieT<T>* >(cookie.get())->cb;
+}
+
+class AsyncCB : public IceUtil::Shared
+{
+public:
+
+ void
+ responseCallback(const CookiePtr& cookie)
+ {
+ getCookie<AMD_Callback_initiateCallbackPtr>(cookie)->ice_response();
+ }
+
+ void
+ exceptionCallback(const Ice::Exception& ex, const CookiePtr& cookie)
+ {
+ getCookie<AMD_Callback_initiateCallbackPtr>(cookie)->ice_exception(ex);
+ }
+
+ void
+ responseCallbackWithPayload(const CookiePtr& cookie)
+ {
+ getCookie<AMD_Callback_initiateCallbackWithPayloadPtr>(cookie)->ice_response();
+ }
+
+ void
+ exceptionCallbackWithPayload(const Ice::Exception& ex, const CookiePtr& cookie)
+ {
+ getCookie<AMD_Callback_initiateCallbackWithPayloadPtr>(cookie)->ice_exception(ex);
+ }
+};
+typedef IceUtil::Handle<AsyncCB> AsyncCBPtr;
+
+CallbackReceiverI::CallbackReceiverI() :
+ _holding(false),
+ _lastToken(-1),
+ _callback(0),
+ _callbackWithPayload(0)
+{
+}
+
+void
+CallbackReceiverI::callback(int token, const Current&)
+{
+ Lock sync(*this);
+ checkForHold();
+
+ if(token != _lastToken)
+ {
+ _callback = 0;
+ _lastToken = token;
+ }
+ ++_callback;
+ notifyAll();
+}
+
+void
+CallbackReceiverI::callbackWithPayload(const Ice::ByteSeq&, const Current&)
+{
+ Lock sync(*this);
+ checkForHold();
+ ++_callbackWithPayload;
+ notifyAll();
+}
+
+int
+CallbackReceiverI::callbackOK(int count, int token)
+{
+ Lock sync(*this);
+
+ while(_lastToken != token || _callback < count)
+ {
+ wait();
+ }
+
+ _callback -= count;
+ return _callback;
+}
+
+int
+CallbackReceiverI::callbackWithPayloadOK(int count)
+{
+ Lock sync(*this);
+
+ while(_callbackWithPayload < count)
+ {
+ wait();
+ }
+
+ _callbackWithPayload -= count;
+ return _callbackWithPayload;
+}
+
+void
+CallbackReceiverI::hold()
+{
+ Lock sync(*this);
+ _holding = true;
+}
+
+void
+CallbackReceiverI::activate()
+{
+ Lock sync(*this);
+ _holding = false;
+ notifyAll();
+}
+
+void
+CallbackReceiverI::checkForHold()
+{
+ while(_holding)
+ {
+ wait();
+ }
+}
+
+CallbackI::CallbackI()
+{
+}
+
+void
+CallbackI::initiateCallback_async(const AMD_Callback_initiateCallbackPtr& cb,
+ const CallbackReceiverPrx& proxy, int token, const Current& current)
+{
+ Ice::Context::const_iterator p = current.ctx.find("serverOvrd");
+ Ice::Context ctx = current.ctx;
+ if(p != current.ctx.end())
+ {
+ ctx["_ovrd"] = p->second;
+ }
+
+ if(proxy->ice_isTwoway())
+ {
+ AsyncCBPtr acb = new AsyncCB();
+ proxy->begin_callback(token, ctx,
+ newCallback_CallbackReceiver_callback(acb, &AsyncCB::responseCallback, &AsyncCB::exceptionCallback),
+ newCookie(cb));
+ }
+ else
+ {
+ proxy->callback(token, ctx);
+ cb->ice_response();
+ }
+}
+
+void
+CallbackI::initiateCallbackWithPayload_async(const AMD_Callback_initiateCallbackWithPayloadPtr& cb,
+ const CallbackReceiverPrx& proxy,
+ const Current& current)
+{
+ Ice::Context::const_iterator p = current.ctx.find("serverOvrd");
+ Ice::Context ctx = current.ctx;
+ if(p != current.ctx.end())
+ {
+ ctx["_ovrd"] = p->second;
+ }
+
+ Ice::ByteSeq seq(1000 * 1024, 0);
+ if(proxy->ice_isTwoway())
+ {
+ AsyncCBPtr acb = new AsyncCB();
+ proxy->begin_callbackWithPayload(seq, ctx,
+ newCallback_CallbackReceiver_callbackWithPayload(
+ acb,
+ &AsyncCB::responseCallbackWithPayload,
+ &AsyncCB::exceptionCallbackWithPayload),
+ newCookie(cb));
+ }
+ else
+ {
+ proxy->callbackWithPayload(seq, ctx);
+ cb->ice_response();
+ }
+}
+
+void
+CallbackI::shutdown(const Ice::Current& current)
+{
+ current.adapter->getCommunicator()->shutdown();
+}
diff --git a/cpp/test/Glacier2/override/CallbackI.h b/cpp/test/Glacier2/override/CallbackI.h
new file mode 100644
index 00000000000..29ca7ec5d81
--- /dev/null
+++ b/cpp/test/Glacier2/override/CallbackI.h
@@ -0,0 +1,59 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2010 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.
+//
+// **********************************************************************
+
+#ifndef CALLBACK_I_H
+#define CALLBACK_I_H
+
+#include <IceUtil/Mutex.h>
+#include <IceUtil/Monitor.h>
+#include <Callback.h>
+#include <vector>
+
+class CallbackReceiverI : public ::Test::CallbackReceiver, public IceUtil::Monitor<IceUtil::Mutex>
+{
+public:
+
+ CallbackReceiverI();
+
+ virtual void callback(int token, const Ice::Current&);
+ virtual void callbackWithPayload(const Ice::ByteSeq&, const ::Ice::Current&);
+
+ int callbackOK(int, int);
+ int callbackWithPayloadOK(int);
+
+ void hold();
+ void activate();
+
+private:
+
+ void checkForHold();
+
+ bool _holding;
+
+ int _lastToken;
+ int _callback;
+ int _callbackWithPayload;
+};
+typedef IceUtil::Handle<CallbackReceiverI> CallbackReceiverIPtr;
+
+class CallbackI : public ::Test::Callback
+{
+public:
+
+ CallbackI();
+
+ virtual void initiateCallback_async(const ::Test::AMD_Callback_initiateCallbackPtr&,
+ const ::Test::CallbackReceiverPrx&, int, const Ice::Current&);
+ virtual void initiateCallbackWithPayload_async(const ::Test::AMD_Callback_initiateCallbackWithPayloadPtr&,
+ const ::Test::CallbackReceiverPrx&,
+ const ::Ice::Current&);
+ virtual void shutdown(const Ice::Current&);
+};
+
+#endif
diff --git a/cpp/test/Glacier2/override/Client.cpp b/cpp/test/Glacier2/override/Client.cpp
new file mode 100644
index 00000000000..ef2896783f6
--- /dev/null
+++ b/cpp/test/Glacier2/override/Client.cpp
@@ -0,0 +1,210 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2010 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 <IceUtil/Random.h>
+#include <IceUtil/IceUtil.h>
+#include <Ice/Application.h>
+#include <Glacier2/Router.h>
+#include <TestCommon.h>
+#include <CallbackI.h>
+
+using namespace std;
+using namespace Ice;
+using namespace Test;
+
+static Ice::InitializationData initData;
+
+
+class CallbackClient : public Application
+{
+public:
+
+ virtual int run(int, char*[]);
+};
+
+int
+main(int argc, char* argv[])
+{
+ //
+ // We must disable connection warnings, because we attempt to ping
+ // the router before session establishment, as well as after
+ // session destruction. Both will cause a ConnectionLostException.
+ //
+ initData.properties = Ice::createProperties(argc, argv);
+ initData.properties->setProperty("Ice.Warn.Connections", "0");
+ initData.properties->setProperty("Ice.ThreadPool.Client.Serialize", "1");
+
+ CallbackClient app;
+ return app.main(argc, argv, initData);
+}
+
+int
+CallbackClient::run(int argc, char* argv[])
+{
+ ObjectPrx routerBase = communicator()->stringToProxy("Glacier2/router:default -p 12347");
+ Glacier2::RouterPrx router = Glacier2::RouterPrx::checkedCast(routerBase);
+ communicator()->setDefaultRouter(router);
+
+ ObjectPrx base = communicator()->stringToProxy("c/callback:tcp -p 12010");
+ Glacier2::SessionPrx session = router->createSession("userid", "abc123");
+ base->ice_ping();
+
+ CallbackPrx twoway = CallbackPrx::checkedCast(base);
+ CallbackPrx oneway = twoway->ice_oneway();
+ CallbackPrx batchOneway = twoway->ice_batchOneway();
+
+ communicator()->getProperties()->setProperty("Ice.PrintAdapterReady", "0");
+ ObjectAdapterPtr adapter = communicator()->createObjectAdapterWithRouter("CallbackReceiverAdapter", router);
+ adapter->activate();
+
+ string category = router->getCategoryForClient();
+
+ CallbackReceiverI* callbackReceiverImpl = new CallbackReceiverI;
+ ObjectPtr callbackReceiver = callbackReceiverImpl;
+
+ Identity callbackReceiverIdent;
+ callbackReceiverIdent.name = "callbackReceiver";
+ callbackReceiverIdent.category = category;
+ CallbackReceiverPrx twowayR =
+ CallbackReceiverPrx::uncheckedCast(adapter->add(callbackReceiver, callbackReceiverIdent));
+ CallbackReceiverPrx onewayR = twowayR->ice_oneway();
+
+ {
+ cout << "testing client request override... " << flush;
+ {
+ for(int i = 0; i < 5; i++)
+ {
+ oneway->initiateCallback(twowayR, 0);
+ oneway->initiateCallback(twowayR, 0);
+ callbackReceiverImpl->callbackOK(2, 0);
+ }
+ }
+
+ {
+ Ice::Context ctx;
+ ctx["_ovrd"] = "test";
+ for(int i = 0; i < 5; i++)
+ {
+ oneway->initiateCallback(twowayR, i, ctx);
+ oneway->initiateCallback(twowayR, i, ctx);
+ oneway->initiateCallback(twowayR, i, ctx);
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100));
+ test(callbackReceiverImpl->callbackOK(1, i) < 3);
+ }
+ }
+ cout << "ok" << endl;
+ }
+
+ {
+ cout << "testing server request override... " << flush;
+ Ice::Context ctx;
+ ctx["serverOvrd"] = "test";
+ for(int i = 0; i < 5; i++)
+ {
+ oneway->initiateCallback(onewayR, i, ctx);
+ oneway->initiateCallback(onewayR, i, ctx);
+ oneway->initiateCallback(onewayR, i, ctx);
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100));
+ test(callbackReceiverImpl->callbackOK(1, i) < 3);
+ }
+ oneway->initiateCallback(twowayR, 0);
+ test(callbackReceiverImpl->callbackOK(1, 0) == 0);
+
+ int count = 0;
+ int nRetry = 0;
+ do
+ {
+ callbackReceiverImpl->hold();
+ oneway->initiateCallbackWithPayload(onewayR, ctx);
+ oneway->initiateCallbackWithPayload(onewayR, ctx);
+ oneway->initiateCallbackWithPayload(onewayR, ctx);
+ oneway->initiateCallbackWithPayload(onewayR, ctx);
+ oneway->initiateCallbackWithPayload(onewayR, ctx);
+ oneway->initiateCallbackWithPayload(onewayR, ctx);
+ oneway->initiateCallbackWithPayload(onewayR, ctx);
+ oneway->initiateCallbackWithPayload(onewayR, ctx);
+ oneway->initiateCallbackWithPayload(onewayR, ctx);
+ oneway->initiateCallbackWithPayload(onewayR, ctx);
+ oneway->initiateCallback(twowayR, 0);
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(200));
+ callbackReceiverImpl->activate();
+ test(callbackReceiverImpl->callbackOK(1, 0) == 0);
+ count = callbackReceiverImpl->callbackWithPayloadOK(0);
+ callbackReceiverImpl->callbackWithPayloadOK(count);
+ }
+ while(count == 10 && nRetry++ < 10);
+ test(count < 10);
+
+ oneway->initiateCallbackWithPayload(twowayR);
+ oneway->initiateCallbackWithPayload(twowayR);
+ callbackReceiverImpl->hold();
+ oneway->initiateCallbackWithPayload(twowayR);
+ oneway->initiateCallback(onewayR, 0, ctx);
+ oneway->initiateCallback(onewayR, 0, ctx);
+ oneway->initiateCallback(onewayR, 0, ctx);
+ oneway->initiateCallback(onewayR, 0, ctx);
+ oneway->initiateCallback(onewayR, 0, ctx);
+ oneway->initiateCallbackWithPayload(twowayR);
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(1000));
+ callbackReceiverImpl->activate();
+ test(callbackReceiverImpl->callbackWithPayloadOK(4) == 0);
+ if(callbackReceiverImpl->callbackOK(1, 0) != 0)
+ {
+ cerr << callbackReceiverImpl->callbackOK(0, 0) << endl;
+ test(false);
+ }
+
+ ctx["_fwd"] = "O";
+
+ oneway->initiateCallbackWithPayload(twowayR);
+ callbackReceiverImpl->hold();
+ oneway->initiateCallbackWithPayload(twowayR);
+ oneway->initiateCallback(onewayR, 0, ctx);
+ oneway->initiateCallback(onewayR, 0, ctx);
+ oneway->initiateCallback(onewayR, 0, ctx);
+ oneway->initiateCallback(onewayR, 0, ctx);
+ oneway->initiateCallback(onewayR, 0, ctx);
+ oneway->initiateCallbackWithPayload(twowayR);
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(200));
+ callbackReceiverImpl->activate();
+ test(callbackReceiverImpl->callbackWithPayloadOK(3) == 0);
+ test(callbackReceiverImpl->callbackOK(1, 0) == 0);
+
+ cout << "ok" << endl;
+ }
+
+ {
+ cout << "shutdown... " << flush;
+ twoway->shutdown();
+
+ try
+ {
+ router->destroySession();
+ }
+ catch(const Ice::LocalException&)
+ {
+ test(false);
+ }
+
+ communicator()->setDefaultRouter(0);
+ ObjectPrx processBase = communicator()->stringToProxy("Glacier2/admin -f Process:tcp -h 127.0.0.1 -p 12348");
+ Ice::ProcessPrx process = Ice::ProcessPrx::checkedCast(processBase);
+ process->shutdown();
+ try
+ {
+ process->ice_ping();
+ test(false);
+ }
+ catch(const Ice::LocalException&)
+ {
+ cout << "ok" << endl;
+ }
+ }
+ return EXIT_SUCCESS;
+}
diff --git a/cpp/test/Glacier2/override/Makefile b/cpp/test/Glacier2/override/Makefile
new file mode 100644
index 00000000000..5693c0a6530
--- /dev/null
+++ b/cpp/test/Glacier2/override/Makefile
@@ -0,0 +1,42 @@
+# **********************************************************************
+#
+# Copyright (c) 2003-2010 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.
+#
+# **********************************************************************
+
+top_srcdir = ../../..
+
+CLIENT = client
+SERVER = server
+
+TARGETS = $(CLIENT) $(SERVER)
+
+OBJS = Callback.o \
+ CallbackI.o
+
+COBJS = Client.o
+
+SOBJS = Server.o
+
+SRCS = $(OBJS:.o=.cpp) \
+ $(COBJS:.o=.cpp) \
+ $(SOBJS:.o=.cpp)
+
+SLICE_SRCS = Callback.ice
+
+include $(top_srcdir)/config/Make.rules
+
+CPPFLAGS := -I. -I../../include $(CPPFLAGS)
+
+$(CLIENT): $(OBJS) $(COBJS)
+ rm -f $@
+ $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(COBJS) -lGlacier2 $(LIBS)
+
+$(SERVER): $(OBJS) $(SOBJS)
+ rm -f $@
+ $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SOBJS) $(LIBS)
+
+include .depend
diff --git a/cpp/test/Glacier2/override/Makefile.mak b/cpp/test/Glacier2/override/Makefile.mak
new file mode 100644
index 00000000000..5630bf075e2
--- /dev/null
+++ b/cpp/test/Glacier2/override/Makefile.mak
@@ -0,0 +1,50 @@
+# **********************************************************************
+#
+# Copyright (c) 2003-2010 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.
+#
+# **********************************************************************
+
+top_srcdir = ..\..\..
+
+CLIENT = client.exe
+SERVER = server.exe
+
+TARGETS = $(CLIENT) $(SERVER)
+
+OBJS = Callback.obj \
+ CallbackI.obj
+
+COBJS = Client.obj
+
+SOBJS = Server.obj
+
+SRCS = $(OBJS:.obj=.cpp) \
+ $(COBJS:.obj=.cpp) \
+ $(SOBJS:.obj=.cpp)
+
+!include $(top_srcdir)/config/Make.rules.mak
+
+CPPFLAGS = -I. -I../../include $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
+
+!if "$(GENERATE_PDB)" == "yes"
+CPDBFLAGS = /pdb:$(CLIENT:.exe=.pdb)
+SPDBFLAGS = /pdb:$(SERVER:.exe=.pdb)
+!endif
+
+$(CLIENT): $(OBJS) $(COBJS)
+ $(LINK) $(LD_EXEFLAGS) $(CPDBFLAGS) $(SETARGV) $(OBJS) $(COBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS) glacier2$(LIBSUFFIX).lib
+ @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \
+ $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest
+
+$(SERVER): $(OBJS) $(SOBJS)
+ $(LINK) $(LD_EXEFLAGS) $(SPDBFLAGS) $(SETARGV) $(OBJS) $(SOBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS)
+ @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \
+ $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest
+
+clean::
+ del /q Callback.cpp Callback.h
+
+!include .depend.mak
diff --git a/cpp/test/Glacier2/override/Server.cpp b/cpp/test/Glacier2/override/Server.cpp
new file mode 100644
index 00000000000..217fd7bea91
--- /dev/null
+++ b/cpp/test/Glacier2/override/Server.cpp
@@ -0,0 +1,47 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2010 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 <Ice/Application.h>
+#include <CallbackI.h>
+
+using namespace std;
+using namespace Ice;
+using namespace Test;
+
+class CallbackServer : public Application
+{
+public:
+
+ virtual int run(int, char*[]);
+};
+
+int
+main(int argc, char* argv[])
+{
+ Ice::InitializationData initData;
+ initData.properties = Ice::createProperties(argc, argv);
+
+ initData.properties->setProperty("Ice.Warn.Connections", "0");
+ initData.properties->setProperty("Ice.Warn.Dispatch", "0");
+ initData.properties->setProperty("Ice.ThreadPool.Server.Serialize", "1");
+
+ CallbackServer app;
+ return app.main(argc, argv, initData);
+}
+
+int
+CallbackServer::run(int argc, char* argv[])
+{
+ communicator()->getProperties()->setProperty("CallbackAdapter.Endpoints", "tcp -p 12010");
+ ObjectAdapterPtr adapter = communicator()->createObjectAdapter("CallbackAdapter");
+ adapter->add(new CallbackI(), communicator()->stringToIdentity("c/callback"));
+ adapter->activate();
+ communicator()->waitForShutdown();
+ return EXIT_SUCCESS;
+}
diff --git a/cpp/test/Glacier2/override/run.py b/cpp/test/Glacier2/override/run.py
new file mode 100755
index 00000000000..bc8c0b7a8cc
--- /dev/null
+++ b/cpp/test/Glacier2/override/run.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+# **********************************************************************
+#
+# Copyright (c) 2003-2010 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.
+#
+# **********************************************************************
+
+import os, sys
+
+path = [ ".", "..", "../..", "../../..", "../../../.." ]
+head = os.path.dirname(sys.argv[0])
+if len(head) > 0:
+ path = [os.path.join(head, p) for p in path]
+path = [os.path.abspath(p) for p in path if os.path.exists(os.path.join(p, "scripts", "TestUtil.py")) ]
+if len(path) == 0:
+ raise "can't find toplevel directory!"
+sys.path.append(os.path.join(path[0]))
+from scripts import *
+
+router = TestUtil.getGlacier2Router()
+
+if TestUtil.appverifier:
+ TestUtil.setAppVerifierSettings([router])
+
+def startRouter():
+
+ args = ' --Ice.Warn.Dispatch=0' + \
+ ' --Ice.Warn.Connections=0' + \
+ ' --Ice.ThreadPool.Server.Serialize=1' + \
+ ' --Ice.ThreadPool.Client.Serialize=1' + \
+ ' --Glacier2.Filter.Category.Accept="c"' + \
+ ' --Glacier2.SessionTimeout="30"' + \
+ ' --Glacier2.Client.Endpoints="default -p 12347"' + \
+ ' --Glacier2.Server.Endpoints="tcp -h 127.0.0.1"' \
+ ' --Ice.Admin.Endpoints="tcp -h 127.0.0.1 -p 12348"' + \
+ ' --Glacier2.PermissionsVerifier=Glacier2/NullPermissionsVerifier' + \
+ ' --Glacier2.Client.ForwardContext=1' + \
+ ' --Glacier2.Client.Trace.Override=0' + \
+ ' --Glacier2.Client.Trace.Request=0' + \
+ ' --Glacier2.Server.Trace.Override=0' + \
+ ' --Glacier2.Server.Trace.Request=0' + \
+ ' --Ice.Admin.InstanceName="Glacier2"' + \
+ ' --Glacier2.Client.Buffered=1 --Glacier2.Server.Buffered=1' + \
+ ' --Glacier2.Client.SleepTime=50 --Glacier2.Server.SleepTime=50'
+
+ print "starting router in buffered mode...",
+ starterProc = TestUtil.startServer(router, args, count=2)
+ print "ok"
+ return starterProc
+
+name = os.path.join("Glacier2", "override")
+
+starterProc = startRouter()
+TestUtil.clientServerTest(name, additionalClientOptions = " --shutdown")
+starterProc.waitTestSuccess()
+
+if TestUtil.appverifier:
+ TestUtil.appVerifierAfterTestEnd([router])
+