diff options
author | Jose <jose@zeroc.com> | 2011-12-09 21:54:40 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2011-12-09 21:54:40 +0100 |
commit | 5e631923d9ab482455ec2c22a7f6148722f2b081 (patch) | |
tree | 0b69f0c374a72a1617ada3ac2c9594096ba204d5 /cpp | |
parent | 4711 - Only initiate connection shutdown if not already done (diff) | |
download | ice-5e631923d9ab482455ec2c22a7f6148722f2b081.tar.bz2 ice-5e631923d9ab482455ec2c22a7f6148722f2b081.tar.xz ice-5e631923d9ab482455ec2c22a7f6148722f2b081.zip |
Glacier2 SessionHelper related fixes
- Add C++ Glacier2/sessionHelper test
- Fix helpers to dispatch connect failed in a separate thread
ICE-4714
- No longer clear the communicator on connection lost or disconnect
ICE-4707
- Glacier2.SessionHelper const/final ICE-4476
Diffstat (limited to 'cpp')
-rwxr-xr-x | cpp/allTests.py | 1 | ||||
-rw-r--r-- | cpp/include/Glacier2/SessionHelper.h | 107 | ||||
-rw-r--r-- | cpp/src/Glacier2Lib/.depend | 1 | ||||
-rw-r--r-- | cpp/src/Glacier2Lib/.depend.mak | 1 | ||||
-rw-r--r-- | cpp/src/Glacier2Lib/Makefile | 3 | ||||
-rw-r--r-- | cpp/src/Glacier2Lib/Makefile.mak | 3 | ||||
-rw-r--r-- | cpp/src/Glacier2Lib/SessionFactoryHelper.cpp | 239 | ||||
-rw-r--r-- | cpp/src/Glacier2Lib/SessionHelper.cpp | 458 | ||||
-rw-r--r-- | cpp/test/Glacier2/Makefile | 1 | ||||
-rw-r--r-- | cpp/test/Glacier2/Makefile.mak | 1 | ||||
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/.depend | 4 | ||||
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/.depend.mak | 4 | ||||
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/.gitignore | 7 | ||||
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/Callback.ice | 42 | ||||
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/Client.cpp | 470 | ||||
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/Makefile | 41 | ||||
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/Makefile.mak | 49 | ||||
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/Server.cpp | 71 | ||||
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/passwords | 1 | ||||
-rwxr-xr-x | cpp/test/Glacier2/sessionHelper/run.py | 45 |
20 files changed, 1163 insertions, 386 deletions
diff --git a/cpp/allTests.py b/cpp/allTests.py index 33b7d8896cc..7e3c813e710 100755 --- a/cpp/allTests.py +++ b/cpp/allTests.py @@ -99,6 +99,7 @@ tests = [ ("Glacier2/ssl", ["service", "novalgrind", "novc6"]), # valgrind doesn't work well with openssl ("Glacier2/dynamicFiltering", ["service", "novc6"]), ("Glacier2/staticFiltering", ["service", "noipv6", "novc6"]), + ("Glacier2/sessionHelper", ["service", "novc6"]), ] # diff --git a/cpp/include/Glacier2/SessionHelper.h b/cpp/include/Glacier2/SessionHelper.h index 3dbe95faddf..2c3cb01a8cb 100644 --- a/cpp/include/Glacier2/SessionHelper.h +++ b/cpp/include/Glacier2/SessionHelper.h @@ -33,111 +33,37 @@ namespace Glacier2 const int GLACIER2_SSL_PORT = 4064; const int GLACIER2_TCP_PORT = 4063; -class SessionCallback; -typedef IceUtil::Handle<SessionCallback> SessionCallbackPtr; - -class SessionHelper; -typedef IceUtil::Handle<SessionHelper> SessionHelperPtr; - -class SessionFactoryHelper; -typedef IceUtil::Handle<SessionFactoryHelper> SessionFactoryHelperPtr; - -class ConnectThread; -class DestroyInternal; - -class SessionRefreshThread : public IceUtil::Thread +class GLACIER2_API SessionHelper : public IceUtil::Shared { - -public: - SessionRefreshThread(const SessionHelperPtr&, const Glacier2::RouterPrx&, Ice::Long); - virtual void run(); - void done(); - void success(); - void failure(const Ice::Exception&); +public: -private: + virtual void destroy() = 0; + virtual Ice::CommunicatorPtr communicator() const = 0; + virtual std::string categoryForClient() const = 0; + virtual Ice::ObjectPrx addWithUUID(const Ice::ObjectPtr&) = 0; + virtual Glacier2::SessionPrx session() const = 0; + virtual bool isConnected() const = 0; + virtual Ice::ObjectAdapterPtr objectAdapter() = 0; - const Glacier2::Callback_Router_refreshSessionPtr _cb; - const SessionHelperPtr _session; - const Glacier2::RouterPrx _router; - Ice::Long _period; - bool _done; - IceUtil::Monitor<IceUtil::Mutex> _monitor; + bool operator==(const Glacier2::SessionHelper&) const; + bool operator!=(const Glacier2::SessionHelper&) const; }; -typedef IceUtil::Handle<SessionRefreshThread> SessionRefreshThreadPtr; +typedef IceUtil::Handle<SessionHelper> SessionHelperPtr; -class SessionCallback : public IceUtil::Shared +class GLACIER2_API SessionCallback : public IceUtil::Shared { public: - - virtual ~SessionCallback(){} + virtual void createdCommunicator(const SessionHelperPtr& session) = 0; virtual void connected(const SessionHelperPtr&) = 0; virtual void disconnected(const SessionHelperPtr&) = 0; virtual void connectFailed(const SessionHelperPtr&, const Ice::Exception&) = 0; }; +typedef IceUtil::Handle<SessionCallback> SessionCallbackPtr; -class ConnectStrategy : public IceUtil::Shared -{ - -public: - - virtual Glacier2::SessionPrx connect(const Glacier2::RouterPrx& router) = 0; -}; -typedef IceUtil::Handle< ConnectStrategy> ConnectStrategyPtr; - -class SessionHelper : public IceUtil::Shared -{ - -public: - - SessionHelper(const SessionCallbackPtr&, const Ice::InitializationData&); - void destroy(); - Ice::CommunicatorPtr communicator() const; - std::string categoryForClient() const; - Ice::ObjectPrx addWithUUID(const Ice::ObjectPtr&); - Glacier2::SessionPrx session() const; - bool isConnected() const; - Ice::ObjectAdapterPtr objectAdapter(); - - friend class Glacier2::DestroyInternal; - friend class Glacier2::ConnectThread; - friend class Glacier2::SessionFactoryHelper; - - bool operator==(const SessionHelper&) const; - bool operator!=(const SessionHelper&) const; - -private: - - void destroy(const IceUtil::ThreadPtr&); - - Ice::ObjectAdapterPtr internalObjectAdapter(); - void connected(const RouterPrx&, const SessionPrx&); - void destroyInternal(const Ice::DispatcherCallPtr&); - - void connect(const std::map<std::string, std::string>&); - void connect(const std::string&, const std::string&, const std::map<std::string, std::string>&); - - void connectImpl(const ConnectStrategyPtr&); - void dispatchCallback(const Ice::DispatcherCallPtr&, const Ice::ConnectionPtr&); - void dispatchCallbackAndWait(const Ice::DispatcherCallPtr&, const Ice::ConnectionPtr&); - - IceUtil::Mutex _mutex; - Ice::CommunicatorPtr _communicator; - Ice::ObjectAdapterPtr _adapter; - Glacier2::RouterPrx _router; - Glacier2::SessionPrx _session; - SessionRefreshThreadPtr _refreshThread; - std::string _category; - bool _connected; - bool _destroy; - Ice::InitializationData _initData; - SessionCallbackPtr _callback; -}; - -class SessionFactoryHelper : public IceUtil::Shared +class GLACIER2_API SessionFactoryHelper : public IceUtil::Shared { public: @@ -183,6 +109,7 @@ private: SessionCallbackPtr _callback; std::map< std::string, std::string> _context; }; +typedef IceUtil::Handle<SessionFactoryHelper> SessionFactoryHelperPtr; } diff --git a/cpp/src/Glacier2Lib/.depend b/cpp/src/Glacier2Lib/.depend index a5ecc89316c..641dc06cd60 100644 --- a/cpp/src/Glacier2Lib/.depend +++ b/cpp/src/Glacier2Lib/.depend @@ -4,7 +4,6 @@ SSLInfo$(OBJEXT): SSLInfo.cpp $(includedir)/Glacier2/SSLInfo.h $(includedir)/Ice Session$(OBJEXT): Session.cpp $(includedir)/Glacier2/Session.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/Direct.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Stream.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h Application$(OBJEXT): Application.cpp $(includedir)/Glacier2/Application.h $(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 $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/Glacier2/Router.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/ArgVector.h SessionHelper$(OBJEXT): SessionHelper.cpp $(includedir)/Glacier2/SessionHelper.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.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)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.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/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/Ice.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.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 $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/Glacier2/Router.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/CountDownLatch.h -SessionFactoryHelper$(OBJEXT): SessionFactoryHelper.cpp $(includedir)/Glacier2/SessionHelper.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.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)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.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/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/Ice.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.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 $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/Glacier2/Router.h PermissionsVerifierF.cpp: $(slicedir)/Glacier2/PermissionsVerifierF.ice $(SLICE2CPP) $(SLICEPARSERLIB) PermissionsVerifier.cpp: $(slicedir)/Glacier2/PermissionsVerifier.ice $(slicedir)/Glacier2/SSLInfo.ice $(slicedir)/Ice/BuiltinSequences.ice $(SLICE2CPP) $(SLICEPARSERLIB) Router.cpp: $(slicedir)/Glacier2/Router.ice $(slicedir)/Ice/Router.ice $(slicedir)/Ice/BuiltinSequences.ice $(slicedir)/Glacier2/Session.ice $(slicedir)/Ice/Identity.ice $(slicedir)/Glacier2/SSLInfo.ice $(SLICE2CPP) $(SLICEPARSERLIB) diff --git a/cpp/src/Glacier2Lib/.depend.mak b/cpp/src/Glacier2Lib/.depend.mak index cfaaf44a6dc..874d34700d7 100644 --- a/cpp/src/Glacier2Lib/.depend.mak +++ b/cpp/src/Glacier2Lib/.depend.mak @@ -4,7 +4,6 @@ SSLInfo$(OBJEXT): SSLInfo.cpp "$(includedir)/Glacier2/SSLInfo.h" "$(includedir)/ Session$(OBJEXT): Session.cpp "$(includedir)/Glacier2/Session.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/Direct.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Glacier2/SSLInfo.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/IceUtil/Iterator.h" Application$(OBJEXT): Application.cpp "$(includedir)/Glacier2/Application.h" "$(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" "$(includedir)/Glacier2/Session.h" "$(includedir)/Glacier2/SSLInfo.h" "$(includedir)/Glacier2/Router.h" "$(includedir)/IceUtil/IceUtil.h" "$(includedir)/IceUtil/AbstractMutex.h" "$(includedir)/IceUtil/Cache.h" "$(includedir)/IceUtil/CountDownLatch.h" "$(includedir)/IceUtil/CtrlCHandler.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/IceUtil/RWRecMutex.h" "$(includedir)/IceUtil/RecMutex.h" "$(includedir)/IceUtil/StaticMutex.h" "$(includedir)/IceUtil/UUID.h" "$(includedir)/IceUtil/ArgVector.h" SessionHelper$(OBJEXT): SessionHelper.cpp "$(includedir)/Glacier2/SessionHelper.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.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)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.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/Properties.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/Direct.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Stats.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.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" "$(includedir)/Glacier2/Session.h" "$(includedir)/Glacier2/SSLInfo.h" "$(includedir)/Glacier2/Router.h" "$(includedir)/IceUtil/UUID.h" "$(includedir)/IceUtil/CountDownLatch.h" -SessionFactoryHelper$(OBJEXT): SessionFactoryHelper.cpp "$(includedir)/Glacier2/SessionHelper.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.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)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.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/Properties.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/Direct.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Stats.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.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" "$(includedir)/Glacier2/Session.h" "$(includedir)/Glacier2/SSLInfo.h" "$(includedir)/Glacier2/Router.h" PermissionsVerifierF.cpp: "$(slicedir)/Glacier2/PermissionsVerifierF.ice" "$(SLICE2CPP)" "$(SLICEPARSERLIB)" PermissionsVerifier.cpp: "$(slicedir)/Glacier2/PermissionsVerifier.ice" "$(slicedir)/Glacier2/SSLInfo.ice" "$(slicedir)/Ice/BuiltinSequences.ice" "$(SLICE2CPP)" "$(SLICEPARSERLIB)" Router.cpp: "$(slicedir)/Glacier2/Router.ice" "$(slicedir)/Ice/Router.ice" "$(slicedir)/Ice/BuiltinSequences.ice" "$(slicedir)/Glacier2/Session.ice" "$(slicedir)/Ice/Identity.ice" "$(slicedir)/Glacier2/SSLInfo.ice" "$(SLICE2CPP)" "$(SLICEPARSERLIB)" diff --git a/cpp/src/Glacier2Lib/Makefile b/cpp/src/Glacier2Lib/Makefile index df2bb89392e..ce0391e1790 100644 --- a/cpp/src/Glacier2Lib/Makefile +++ b/cpp/src/Glacier2Lib/Makefile @@ -21,8 +21,7 @@ OBJS = PermissionsVerifier.o \ SSLInfo.o \ Session.o \ Application.o \ - SessionHelper.o \ - SessionFactoryHelper.o + SessionHelper.o SRCS = $(OBJS:.o=.cpp) diff --git a/cpp/src/Glacier2Lib/Makefile.mak b/cpp/src/Glacier2Lib/Makefile.mak index b40de8c0b4e..71d6bcf5063 100644 --- a/cpp/src/Glacier2Lib/Makefile.mak +++ b/cpp/src/Glacier2Lib/Makefile.mak @@ -19,8 +19,7 @@ OBJS = PermissionsVerifier.obj \ SSLInfo.obj \
Session.obj \
Application.obj \
- SessionHelper.obj \
- SessionFactoryHelper.obj
+ SessionHelper.obj
SRCS = $(OBJS:.obj=.cpp)
diff --git a/cpp/src/Glacier2Lib/SessionFactoryHelper.cpp b/cpp/src/Glacier2Lib/SessionFactoryHelper.cpp deleted file mode 100644 index 4ff3ba75509..00000000000 --- a/cpp/src/Glacier2Lib/SessionFactoryHelper.cpp +++ /dev/null @@ -1,239 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2011 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 <Glacier2/SessionHelper.h> - -using namespace std; - -Glacier2::SessionFactoryHelper::SessionFactoryHelper(const SessionCallbackPtr& callback) : - _routerHost("127.0.0.1"), - _secure(true), - _port(0), - _timeout(10000), - _callback(callback) -{ - _identity.name = "router"; - _identity.category = "Glacier2"; - _initData.properties = Ice::createProperties(); - setDefaultProperties(); -} - -Glacier2::SessionFactoryHelper::SessionFactoryHelper(const Ice::InitializationData& initData, - const SessionCallbackPtr& callback) : - _routerHost("127.0.0.1"), - _secure(true), - _port(0), - _timeout(10000), - _initData(initData), - _callback(callback) -{ - _identity.name = "router"; - _identity.category = "Glacier2"; - if(!initData.properties) - { - _initData.properties = Ice::createProperties(); - } - setDefaultProperties(); -} - -Glacier2::SessionFactoryHelper::SessionFactoryHelper(const Ice::PropertiesPtr& properties, const SessionCallbackPtr& callback) : - _routerHost("127.0.0.1"), - _secure(true), - _port(0), - _timeout(10000), - _callback(callback) -{ - if(!properties) - { - throw Ice::InitializationException( - __FILE__, __LINE__, "Attempt to create a SessionFactoryHelper with a null Properties argument"); - } - _identity.name = "router"; - _identity.category = "Glacier2"; - _initData.properties = properties; - setDefaultProperties(); -} - -void -Glacier2::SessionFactoryHelper::setRouterIdentity(const Ice::Identity& identity) -{ - IceUtil::Mutex::Lock sync(_mutex); - _identity = identity; -} - -Ice::Identity -Glacier2::SessionFactoryHelper::getRouterIdentity() const -{ - IceUtil::Mutex::Lock sync(_mutex); - return _identity; -} - -void -Glacier2::SessionFactoryHelper::setRouterHost(const string& hostname) -{ - IceUtil::Mutex::Lock sync(_mutex); - _routerHost = hostname; -} - -string -Glacier2::SessionFactoryHelper::getRouterHost() const -{ - IceUtil::Mutex::Lock sync(_mutex); - return _routerHost; -} - -void -Glacier2::SessionFactoryHelper::setSecure(bool secure) -{ - IceUtil::Mutex::Lock sync(_mutex); - _secure = secure; -} - -bool -Glacier2::SessionFactoryHelper::getSecure() const -{ - IceUtil::Mutex::Lock sync(_mutex); - return _secure; -} - -void -Glacier2::SessionFactoryHelper::setTimeout(int timeout) -{ - IceUtil::Mutex::Lock sync(_mutex); - _timeout = timeout; -} - -int -Glacier2::SessionFactoryHelper::getTimeout() const -{ - IceUtil::Mutex::Lock sync(_mutex); - return _timeout; -} - -void -Glacier2::SessionFactoryHelper::setPort(int port) -{ - IceUtil::Mutex::Lock sync(_mutex); - _port = port; -} - -int -Glacier2::SessionFactoryHelper::getPort() const -{ - IceUtil::Mutex::Lock sync(_mutex); - return _port; -} - -Ice::InitializationData -Glacier2::SessionFactoryHelper::getInitializationData() const -{ - IceUtil::Mutex::Lock sync(_mutex); - return _initData; -} - -void -Glacier2::SessionFactoryHelper::setConnectContext(map<string, string> context) -{ - IceUtil::Mutex::Lock sync(_mutex); - _context = context; -} - -Glacier2::SessionHelperPtr -Glacier2::SessionFactoryHelper::connect() -{ - IceUtil::Mutex::Lock sync(_mutex); - Glacier2::SessionHelperPtr session = new Glacier2::SessionHelper(_callback, createInitData()); - session->connect(_context); - return session; -} - -Glacier2::SessionHelperPtr -Glacier2::SessionFactoryHelper::connect(const string& user, const string& password) -{ - IceUtil::Mutex::Lock sync(_mutex); - Glacier2::SessionHelperPtr session = new Glacier2::SessionHelper(_callback, createInitData()); - session->connect(user, password, _context); - return session; -} - -Ice::InitializationData -Glacier2::SessionFactoryHelper::createInitData() -{ - // - // Clone the initialization data and properties. - // - Ice::InitializationData initData = _initData; - initData.properties = initData.properties->clone(); - - if(initData.properties->getProperty("Ice.Default.Router").size() == 0) - { - ostringstream os; - os << "\""; - - // - // TODO replace with identityToString, we cannot use the Communicator::identityToString - // current implementation because we need to do that before the communicator has been - // initialized. - // - if(!_identity.category.empty()) - { - os << _identity.category << "/"; - } - os << _identity.name; - - os << "\""; - os << ":"; - if(_secure) - { - os << "ssl -p "; - } - else - { - os << "tcp -p "; - } - - if(_port != 0) - { - os << _port; - } - else - { - if(_secure) - { - os << GLACIER2_SSL_PORT; - } - else - { - os << GLACIER2_TCP_PORT; - } - } - - os << " -h "; - os << _routerHost; - if(_timeout > 0) - { - os << " -t "; - os << _timeout; - } - initData.properties->setProperty("Ice.Default.Router", os.str()); - } - return initData; -} - -void -Glacier2::SessionFactoryHelper::setDefaultProperties() -{ - assert(_initData.properties); - _initData.properties->setProperty("Ice.ACM.Client", "0"); - _initData.properties->setProperty("Ice.RetryIntervals", "-1"); - if(_secure) - { - _initData.properties->setProperty("Ice.Plugin.IceSSL","IceSSL:createIceSSL"); - } -} diff --git a/cpp/src/Glacier2Lib/SessionHelper.cpp b/cpp/src/Glacier2Lib/SessionHelper.cpp index 04ad5fcd775..efacc6e7727 100644 --- a/cpp/src/Glacier2Lib/SessionHelper.cpp +++ b/cpp/src/Glacier2Lib/SessionHelper.cpp @@ -21,7 +21,16 @@ using namespace std; namespace { + +class ConnectStrategy : public IceUtil::Shared +{ + +public: + virtual Glacier2::SessionPrx connect(const Glacier2::RouterPrx& router) = 0; +}; +typedef IceUtil::Handle< ConnectStrategy> ConnectStrategyPtr; + class Disconnected : public Ice::DispatcherCall { @@ -47,10 +56,79 @@ private: const Glacier2::SessionCallbackPtr _callback; }; -} +class SessionRefreshThread : public IceUtil::Thread +{ -Glacier2::SessionRefreshThread::SessionRefreshThread(const Glacier2::SessionHelperPtr& session, - const Glacier2::RouterPrx& router, Ice::Long period) : +public: + + SessionRefreshThread(const Glacier2::SessionHelperPtr&, const Glacier2::RouterPrx&, Ice::Long); + virtual void run(); + void done(); + void success(); + void failure(const Ice::Exception&); + +private: + + const Glacier2::Callback_Router_refreshSessionPtr _cb; + const Glacier2::SessionHelperPtr _session; + const Glacier2::RouterPrx _router; + Ice::Long _period; + bool _done; + IceUtil::Monitor<IceUtil::Mutex> _monitor; +}; +typedef IceUtil::Handle<SessionRefreshThread> SessionRefreshThreadPtr; + +class SessionHelperI : public Glacier2::SessionHelper +{ + +public: + + SessionHelperI(const Glacier2::SessionCallbackPtr&, const Ice::InitializationData&); + void destroy(); + Ice::CommunicatorPtr communicator() const; + std::string categoryForClient() const; + Ice::ObjectPrx addWithUUID(const Ice::ObjectPtr&); + Glacier2::SessionPrx session() const; + bool isConnected() const; + Ice::ObjectAdapterPtr objectAdapter(); + + friend class DestroyInternal; + friend class ConnectThread; + friend class DispatchCallThread; + friend class Glacier2::SessionFactoryHelper; + +private: + + void destroy(const IceUtil::ThreadPtr&); + + Ice::ObjectAdapterPtr internalObjectAdapter(); + void connected(const Glacier2::RouterPrx&, const Glacier2::SessionPrx&); + void destroyInternal(const Ice::DispatcherCallPtr&); + void connectFailed(); + + void connect(const std::map<std::string, std::string>&); + void connect(const std::string&, const std::string&, const std::map<std::string, std::string>&); + + void connectImpl(const ConnectStrategyPtr&); + void dispatchCallback(const Ice::DispatcherCallPtr&, const Ice::ConnectionPtr&); + void dispatchCallbackAndWait(const Ice::DispatcherCallPtr&, const Ice::ConnectionPtr&); + + IceUtil::Mutex _mutex; + Ice::CommunicatorPtr _communicator; + Ice::ObjectAdapterPtr _adapter; + Glacier2::RouterPrx _router; + Glacier2::SessionPrx _session; + SessionRefreshThreadPtr _refreshThread; + std::string _category; + bool _connected; + bool _destroy; + const Ice::InitializationData _initData; + const Glacier2::SessionCallbackPtr _callback; +}; +typedef IceUtil::Handle<SessionHelperI> SessionHelperIPtr; + +SessionRefreshThread::SessionRefreshThread(const Glacier2::SessionHelperPtr& session, + const Glacier2::RouterPrx& router, Ice::Long period) : _cb(Glacier2::newCallback_Router_refreshSession(this, &SessionRefreshThread::success, &SessionRefreshThread::failure)), _session(session), @@ -61,7 +139,7 @@ Glacier2::SessionRefreshThread::SessionRefreshThread(const Glacier2::SessionHelp } void -Glacier2::SessionRefreshThread::run() +SessionRefreshThread::run() { IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); while(true) @@ -91,7 +169,7 @@ Glacier2::SessionRefreshThread::run() } void -Glacier2::SessionRefreshThread::done() +SessionRefreshThread::done() { IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); if(!_done) @@ -102,23 +180,23 @@ Glacier2::SessionRefreshThread::done() } void -Glacier2::SessionRefreshThread::success() +SessionRefreshThread::success() { } void -Glacier2::SessionRefreshThread::failure(const Ice::Exception&) +SessionRefreshThread::failure(const Ice::Exception&) { done(); _session->destroy(); } -class Glacier2::DestroyInternal : public IceUtil::Thread +class DestroyInternal : public IceUtil::Thread { public: - DestroyInternal(const Glacier2::SessionHelperPtr& session, const Glacier2::SessionCallbackPtr& callback) : + DestroyInternal(const SessionHelperIPtr& session, const Glacier2::SessionCallbackPtr& callback) : _session(session), _disconnected(new Disconnected(session, callback)) { @@ -131,12 +209,14 @@ public: private: - const Glacier2::SessionHelperPtr _session; + const SessionHelperIPtr _session; const Ice::DispatcherCallPtr _disconnected; }; -Glacier2::SessionHelper::SessionHelper(const Glacier2::SessionCallbackPtr& callback, - const Ice::InitializationData& initData) : +} + +SessionHelperI::SessionHelperI(const Glacier2::SessionCallbackPtr& callback, + const Ice::InitializationData& initData) : _connected(false), _destroy(false), _initData(initData), @@ -145,14 +225,14 @@ Glacier2::SessionHelper::SessionHelper(const Glacier2::SessionCallbackPtr& callb } void -Glacier2::SessionHelper::destroy() +SessionHelperI::destroy() { IceUtil::Mutex::Lock sync(_mutex); - destroy(new Glacier2::DestroyInternal(this, _callback)); + destroy(new DestroyInternal(this, _callback)); } void -Glacier2::SessionHelper::destroy(const IceUtil::ThreadPtr& destroyInternal) +SessionHelperI::destroy(const IceUtil::ThreadPtr& destroyInternal) { if(_destroy) { @@ -160,7 +240,7 @@ Glacier2::SessionHelper::destroy(const IceUtil::ThreadPtr& destroyInternal) } _destroy = true; - if(!_refreshThread) + if(!_connected) { // // In this case a connecting session is being @@ -171,6 +251,7 @@ Glacier2::SessionHelper::destroy(const IceUtil::ThreadPtr& destroyInternal) return; } _session = 0; + _connected = false; // // Run the destroyInternal in a thread. This is because it @@ -180,31 +261,30 @@ Glacier2::SessionHelper::destroy(const IceUtil::ThreadPtr& destroyInternal) } Ice::CommunicatorPtr -Glacier2::SessionHelper::communicator() const +SessionHelperI::communicator() const { IceUtil::Mutex::Lock sync(_mutex); return _communicator; } string -Glacier2::SessionHelper::categoryForClient() const +SessionHelperI::categoryForClient() const { IceUtil::Mutex::Lock sync(_mutex); if(!_router) { - throw SessionNotExistException(); + throw Glacier2::SessionNotExistException(); } - return _category; } Ice::ObjectPrx -Glacier2::SessionHelper::addWithUUID(const Ice::ObjectPtr& servant) +SessionHelperI::addWithUUID(const Ice::ObjectPtr& servant) { IceUtil::Mutex::Lock sync(_mutex); if(!_router) { - throw SessionNotExistException(); + throw Glacier2::SessionNotExistException(); } Ice::Identity id; id.name = IceUtil::generateUUID(); @@ -213,48 +293,48 @@ Glacier2::SessionHelper::addWithUUID(const Ice::ObjectPtr& servant) } Glacier2::SessionPrx -Glacier2::SessionHelper::session() const +SessionHelperI::session() const { IceUtil::Mutex::Lock sync(_mutex); if(!_session) { - throw new SessionNotExistException(); + throw new Glacier2::SessionNotExistException(); } return _session; } bool -Glacier2::SessionHelper::isConnected() const +SessionHelperI::isConnected() const { IceUtil::Mutex::Lock sync(_mutex); return _connected; } Ice::ObjectAdapterPtr -Glacier2::SessionHelper::objectAdapter() +SessionHelperI::objectAdapter() { IceUtil::Mutex::Lock sync(_mutex); return internalObjectAdapter(); } bool -Glacier2::SessionHelper::operator==(const SessionHelper& other) const +Glacier2::SessionHelper::operator==(const Glacier2::SessionHelper& other) const { return this == &other; } bool -Glacier2::SessionHelper::operator!=(const SessionHelper& other) const +Glacier2::SessionHelper::operator!=(const Glacier2::SessionHelper& other) const { return this != &other; } Ice::ObjectAdapterPtr -Glacier2::SessionHelper::internalObjectAdapter() +SessionHelperI::internalObjectAdapter() { if(!_router) { - throw SessionNotExistException(); + throw Glacier2::SessionNotExistException(); } if(!_adapter) { @@ -267,7 +347,7 @@ Glacier2::SessionHelper::internalObjectAdapter() namespace { -class ConnectStrategySecureConnection : public Glacier2::ConnectStrategy +class ConnectStrategySecureConnection : public ConnectStrategy { public: @@ -288,7 +368,7 @@ private: const map<string, string> _context; }; -class ConnectStrategyUserPassword : public Glacier2::ConnectStrategy +class ConnectStrategyUserPassword : public ConnectStrategy { public: @@ -316,24 +396,26 @@ private: } void -Glacier2::SessionHelper::connect(const map<string, string>& context) +SessionHelperI::connect(const map<string, string>& context) { + IceUtil::Mutex::Lock sync(_mutex); connectImpl(new ConnectStrategySecureConnection(context)); } void -Glacier2::SessionHelper::connect(const string& user, const string& password, const map<string, string>& context) +SessionHelperI::connect(const string& user, const string& password, const map<string, string>& context) { + IceUtil::Mutex::Lock sync(_mutex); connectImpl(new ConnectStrategyUserPassword(user, password, context)); } void -Glacier2::SessionHelper::destroyInternal(const Ice::DispatcherCallPtr& disconnected) +SessionHelperI::destroyInternal(const Ice::DispatcherCallPtr& disconnected) { assert(_destroy); Ice::CommunicatorPtr communicator; Glacier2::RouterPrx router; - Glacier2::SessionRefreshThreadPtr refreshThread; + SessionRefreshThreadPtr refreshThread; { IceUtil::Mutex::Lock sync(_mutex); router = _router; @@ -344,7 +426,6 @@ Glacier2::SessionHelper::destroyInternal(const Ice::DispatcherCallPtr& disconnec _refreshThread = 0; communicator = _communicator; - _communicator = 0; } if(router) @@ -401,6 +482,27 @@ Glacier2::SessionHelper::destroyInternal(const Ice::DispatcherCallPtr& disconnec dispatchCallback(disconnected, 0); } +void +SessionHelperI::connectFailed() +{ + Ice::CommunicatorPtr communicator; + { + IceUtil::Mutex::Lock sync(_mutex); + communicator = _communicator; + } + + if(communicator) + { + try + { + communicator->destroy(); + } + catch(...) + { + } + } +} + namespace { @@ -454,15 +556,13 @@ private: const Glacier2::SessionHelperPtr _session; }; -} - -class Glacier2::ConnectThread : public IceUtil::Thread +class ConnectThread : public IceUtil::Thread { public: - ConnectThread(const Glacier2::SessionCallbackPtr& callback, const Glacier2::SessionHelperPtr& session, - const Glacier2::ConnectStrategyPtr& factory, const Ice::CommunicatorPtr& communicator) : + ConnectThread(const Glacier2::SessionCallbackPtr& callback, const SessionHelperIPtr& session, + const ConnectStrategyPtr& factory, const Ice::CommunicatorPtr& communicator) : _callback(callback), _session(session), _factory(factory), @@ -484,7 +584,7 @@ public: { try { - _communicator->destroy(); + _session->connectFailed(); } catch(...) { @@ -497,13 +597,41 @@ public: private: const Glacier2::SessionCallbackPtr _callback; - const Glacier2::SessionHelperPtr _session; - const Glacier2::ConnectStrategyPtr _factory; + const SessionHelperIPtr _session; + const ConnectStrategyPtr _factory; const Ice::CommunicatorPtr _communicator; }; + +class DispatchCallThread : public IceUtil::Thread +{ + +public: + + DispatchCallThread(const SessionHelperIPtr& session, const Ice::DispatcherCallPtr& call, + const Ice::ConnectionPtr& conn) : + _session(session), + _call(call), + _conn(conn) + { + } + + virtual void run() + { + _session->dispatchCallback(_call, _conn); + } + +private: + + const SessionHelperIPtr _session; + const Ice::DispatcherCallPtr _call; + const Ice::ConnectionPtr _conn; +}; + +} + void -Glacier2::SessionHelper::connectImpl(const ConnectStrategyPtr& factory) +SessionHelperI::connectImpl(const ConnectStrategyPtr& factory) { assert(!_destroy); @@ -514,7 +642,8 @@ Glacier2::SessionHelper::connectImpl(const ConnectStrategyPtr& factory) catch(const Ice::LocalException& ex) { _destroy = true; - dispatchCallback(new ConnectFailed(_callback, this, ex), 0); + IceUtil::ThreadPtr thread = new DispatchCallThread(this, new ConnectFailed(_callback, this, ex), 0); + thread->start(); return; } @@ -558,7 +687,7 @@ private: } void -Glacier2::SessionHelper::connected(const Glacier2::RouterPrx& router, const Glacier2::SessionPrx& session) +SessionHelperI::connected(const Glacier2::RouterPrx& router, const Glacier2::SessionPrx& session) { // // Remote invocation should be done without acquire a mutex lock. @@ -578,7 +707,7 @@ Glacier2::SessionHelper::connected(const Glacier2::RouterPrx& router, const Glac // Run the destroyInternal in a thread. This is because it // destroyInternal makes remote invocations. // - IceUtil::ThreadPtr thread = new Glacier2::DestroyInternal(this, _callback); + IceUtil::ThreadPtr thread = new DestroyInternal(this, _callback); thread->start(); return; } @@ -606,7 +735,7 @@ Glacier2::SessionHelper::connected(const Glacier2::RouterPrx& router, const Glac } void -Glacier2::SessionHelper::dispatchCallback(const Ice::DispatcherCallPtr& call, const Ice::ConnectionPtr& conn) +SessionHelperI::dispatchCallback(const Ice::DispatcherCallPtr& call, const Ice::ConnectionPtr& conn) { if(_initData.dispatcher) { @@ -649,7 +778,7 @@ private: } void -Glacier2::SessionHelper::dispatchCallbackAndWait(const Ice::DispatcherCallPtr& call, const Ice::ConnectionPtr& conn) +SessionHelperI::dispatchCallbackAndWait(const Ice::DispatcherCallPtr& call, const Ice::ConnectionPtr& conn) { if(_initData.dispatcher) { @@ -663,3 +792,230 @@ Glacier2::SessionHelper::dispatchCallbackAndWait(const Ice::DispatcherCallPtr& c call->run(); } } + +Glacier2::SessionFactoryHelper::SessionFactoryHelper(const SessionCallbackPtr& callback) : + _routerHost("127.0.0.1"), + _secure(true), + _port(0), + _timeout(10000), + _callback(callback) +{ + _identity.name = "router"; + _identity.category = "Glacier2"; + _initData.properties = Ice::createProperties(); + setDefaultProperties(); +} + +Glacier2::SessionFactoryHelper::SessionFactoryHelper(const Ice::InitializationData& initData, + const SessionCallbackPtr& callback) : + _routerHost("127.0.0.1"), + _secure(true), + _port(0), + _timeout(10000), + _initData(initData), + _callback(callback) +{ + _identity.name = "router"; + _identity.category = "Glacier2"; + if(!initData.properties) + { + _initData.properties = Ice::createProperties(); + } + setDefaultProperties(); +} + +Glacier2::SessionFactoryHelper::SessionFactoryHelper(const Ice::PropertiesPtr& properties, const SessionCallbackPtr& callback) : + _routerHost("127.0.0.1"), + _secure(true), + _port(0), + _timeout(10000), + _callback(callback) +{ + if(!properties) + { + throw Ice::InitializationException( + __FILE__, __LINE__, "Attempt to create a SessionFactoryHelper with a null Properties argument"); + } + _identity.name = "router"; + _identity.category = "Glacier2"; + _initData.properties = properties; + setDefaultProperties(); +} + +void +Glacier2::SessionFactoryHelper::setRouterIdentity(const Ice::Identity& identity) +{ + IceUtil::Mutex::Lock sync(_mutex); + _identity = identity; +} + +Ice::Identity +Glacier2::SessionFactoryHelper::getRouterIdentity() const +{ + IceUtil::Mutex::Lock sync(_mutex); + return _identity; +} + +void +Glacier2::SessionFactoryHelper::setRouterHost(const string& hostname) +{ + IceUtil::Mutex::Lock sync(_mutex); + _routerHost = hostname; +} + +string +Glacier2::SessionFactoryHelper::getRouterHost() const +{ + IceUtil::Mutex::Lock sync(_mutex); + return _routerHost; +} + +void +Glacier2::SessionFactoryHelper::setSecure(bool secure) +{ + IceUtil::Mutex::Lock sync(_mutex); + _secure = secure; +} + +bool +Glacier2::SessionFactoryHelper::getSecure() const +{ + IceUtil::Mutex::Lock sync(_mutex); + return _secure; +} + +void +Glacier2::SessionFactoryHelper::setTimeout(int timeout) +{ + IceUtil::Mutex::Lock sync(_mutex); + _timeout = timeout; +} + +int +Glacier2::SessionFactoryHelper::getTimeout() const +{ + IceUtil::Mutex::Lock sync(_mutex); + return _timeout; +} + +void +Glacier2::SessionFactoryHelper::setPort(int port) +{ + IceUtil::Mutex::Lock sync(_mutex); + _port = port; +} + +int +Glacier2::SessionFactoryHelper::getPort() const +{ + IceUtil::Mutex::Lock sync(_mutex); + return _port; +} + +Ice::InitializationData +Glacier2::SessionFactoryHelper::getInitializationData() const +{ + IceUtil::Mutex::Lock sync(_mutex); + return _initData; +} + +void +Glacier2::SessionFactoryHelper::setConnectContext(map<string, string> context) +{ + IceUtil::Mutex::Lock sync(_mutex); + _context = context; +} + +Glacier2::SessionHelperPtr +Glacier2::SessionFactoryHelper::connect() +{ + IceUtil::Mutex::Lock sync(_mutex); + SessionHelperIPtr session = new SessionHelperI(_callback, createInitData()); + session->connect(_context); + return session; +} + +Glacier2::SessionHelperPtr +Glacier2::SessionFactoryHelper::connect(const string& user, const string& password) +{ + IceUtil::Mutex::Lock sync(_mutex); + SessionHelperIPtr session = new SessionHelperI(_callback, createInitData()); + session->connect(user, password, _context); + return session; +} + +Ice::InitializationData +Glacier2::SessionFactoryHelper::createInitData() +{ + // + // Clone the initialization data and properties. + // + Ice::InitializationData initData = _initData; + initData.properties = initData.properties->clone(); + + if(initData.properties->getProperty("Ice.Default.Router").size() == 0) + { + ostringstream os; + os << "\""; + + // + // TODO replace with identityToString, we cannot use the Communicator::identityToString + // current implementation because we need to do that before the communicator has been + // initialized. + // + if(!_identity.category.empty()) + { + os << _identity.category << "/"; + } + os << _identity.name; + + os << "\""; + os << ":"; + if(_secure) + { + os << "ssl -p "; + } + else + { + os << "tcp -p "; + } + + if(_port != 0) + { + os << _port; + } + else + { + if(_secure) + { + os << GLACIER2_SSL_PORT; + } + else + { + os << GLACIER2_TCP_PORT; + } + } + + os << " -h "; + os << _routerHost; + if(_timeout > 0) + { + os << " -t "; + os << _timeout; + } + initData.properties->setProperty("Ice.Default.Router", os.str()); + } + return initData; +} + +void +Glacier2::SessionFactoryHelper::setDefaultProperties() +{ + assert(_initData.properties); + _initData.properties->setProperty("Ice.ACM.Client", "0"); + _initData.properties->setProperty("Ice.RetryIntervals", "-1"); + if(_secure) + { + _initData.properties->setProperty("Ice.Plugin.IceSSL","IceSSL:createIceSSL"); + } +} diff --git a/cpp/test/Glacier2/Makefile b/cpp/test/Glacier2/Makefile index f1bb45994b1..2d1549e6d3f 100644 --- a/cpp/test/Glacier2/Makefile +++ b/cpp/test/Glacier2/Makefile @@ -17,6 +17,7 @@ SUBDIRS = router \ staticFiltering \ dynamicFiltering \ sessionControl \ + sessionHelper \ ssl $(EVERYTHING):: diff --git a/cpp/test/Glacier2/Makefile.mak b/cpp/test/Glacier2/Makefile.mak index b570cb73801..a78aeeaf38e 100644 --- a/cpp/test/Glacier2/Makefile.mak +++ b/cpp/test/Glacier2/Makefile.mak @@ -17,6 +17,7 @@ SUBDIRS = router \ staticFiltering \
dynamicFiltering \
sessionControl \
+ sessionHelper \
ssl
$(EVERYTHING)::
diff --git a/cpp/test/Glacier2/sessionHelper/.depend b/cpp/test/Glacier2/sessionHelper/.depend new file mode 100644 index 00000000000..f9a77b642c6 --- /dev/null +++ b/cpp/test/Glacier2/sessionHelper/.depend @@ -0,0 +1,4 @@ +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/Direct.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h +Client$(OBJEXT): Client.cpp $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.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/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/Application.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/Glacier2.h $(includedir)/Glacier2/Router.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/Glacier2/PermissionsVerifier.h $(includedir)/Glacier2/Application.h $(includedir)/Glacier2/SessionHelper.h ../../include/TestCommon.h Callback.h +Server$(OBJEXT): Server.cpp $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.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/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/Application.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 Callback.h +Callback.cpp: Callback.ice $(SLICE2CPP) $(SLICEPARSERLIB) diff --git a/cpp/test/Glacier2/sessionHelper/.depend.mak b/cpp/test/Glacier2/sessionHelper/.depend.mak new file mode 100644 index 00000000000..d211f668d41 --- /dev/null +++ b/cpp/test/Glacier2/sessionHelper/.depend.mak @@ -0,0 +1,4 @@ +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/Direct.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/IceUtil/Iterator.h" +Client$(OBJEXT): Client.cpp "$(includedir)/IceUtil/IceUtil.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/AbstractMutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Exception.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/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/Application.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/Glacier2.h" "$(includedir)/Glacier2/Router.h" "$(includedir)/Glacier2/Session.h" "$(includedir)/Glacier2/SSLInfo.h" "$(includedir)/Glacier2/PermissionsVerifier.h" "$(includedir)/Glacier2/Application.h" "$(includedir)/Glacier2/SessionHelper.h" ../../include/TestCommon.h Callback.h +Server$(OBJEXT): Server.cpp "$(includedir)/IceUtil/IceUtil.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/AbstractMutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Exception.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/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/Application.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" Callback.h +Callback.cpp: Callback.ice "$(SLICE2CPP)" "$(SLICEPARSERLIB)" diff --git a/cpp/test/Glacier2/sessionHelper/.gitignore b/cpp/test/Glacier2/sessionHelper/.gitignore new file mode 100644 index 00000000000..1cb01a674d1 --- /dev/null +++ b/cpp/test/Glacier2/sessionHelper/.gitignore @@ -0,0 +1,7 @@ +// Generated by makegitignore.py + +// IMPORTANT: Do not edit this file -- any edits made here will be lost! +client +server +Callback.cpp +Callback.h diff --git a/cpp/test/Glacier2/sessionHelper/Callback.ice b/cpp/test/Glacier2/sessionHelper/Callback.ice new file mode 100644 index 00000000000..64687203df4 --- /dev/null +++ b/cpp/test/Glacier2/sessionHelper/Callback.ice @@ -0,0 +1,42 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2011 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 + +module Test +{ + +exception CallbackException +{ + double someValue; + string someString; +}; + +interface CallbackReceiver +{ + void callback(); + + void callbackEx() + throws CallbackException; +}; + +interface Callback +{ + void initiateCallback(CallbackReceiver* proxy); + + void initiateCallbackEx(CallbackReceiver* proxy) + throws CallbackException; + + void shutdown(); +}; + +}; + +#endif diff --git a/cpp/test/Glacier2/sessionHelper/Client.cpp b/cpp/test/Glacier2/sessionHelper/Client.cpp new file mode 100644 index 00000000000..8d8da2a5dcd --- /dev/null +++ b/cpp/test/Glacier2/sessionHelper/Client.cpp @@ -0,0 +1,470 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2011 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/IceUtil.h> +#include <Ice/Ice.h> +#include <Glacier2/Glacier2.h> + +#include <TestCommon.h> + +#include <iostream> +#include <iomanip> +#include <list> + +#include <Callback.h> + +using namespace std; +using namespace Test; + +namespace +{ + +class Notify +{ +public: + + virtual void notify() = 0; +}; + +Notify* instance = 0; + +class Dispatcher : public Ice::Dispatcher, public IceUtil::Thread +{ + +public: + + Dispatcher(): + _destroyed(false) + { + } + + virtual void + dispatch(const Ice::DispatcherCallPtr& call, + const Ice::ConnectionPtr& conn) + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + if(_queue.empty()) + { + _monitor.notify(); + } + _queue.push_back(call); + } + + virtual void + destroy() + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + _destroyed = true; + _monitor.notify(); + } + + virtual void + run() + { + while(1) + { + Ice::DispatcherCallPtr item = nextItem(); + if(!item) + { + break; + } + item->run(); + } + } + +private: + + Ice::DispatcherCallPtr + nextItem() + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + while(_queue.empty()) + { + if(_destroyed) + { + return 0; + } + _monitor.wait(); + } + Ice::DispatcherCallPtr item = _queue.front(); + _queue.pop_front(); + return item; + } + + + IceUtil::Monitor<IceUtil::Mutex> _monitor; + list<Ice::DispatcherCallPtr> _queue; + bool _destroyed; +}; +typedef IceUtil::Handle<Dispatcher> DispatcherPtr; + +class SuccessSessionCallback : public Glacier2::SessionCallback +{ + +public: + + virtual void + connected(const Glacier2::SessionHelperPtr& session) + { + cout << "ok" << endl; + instance->notify(); + } + + virtual void + disconnected(const Glacier2::SessionHelperPtr& session) + { + cout << "ok" << endl; + instance->notify(); + } + + virtual void + connectFailed(const Glacier2::SessionHelperPtr&, const Ice::Exception&) + { + test(false); + } + + virtual void + createdCommunicator(const Glacier2::SessionHelperPtr& session) + { + test(session->communicator()); + } +}; + +class AfterShutdownSessionCallback : public Glacier2::SessionCallback +{ + +public: + + virtual void + connected(const Glacier2::SessionHelperPtr& session) + { + test(false); + } + + virtual void + disconnected(const Glacier2::SessionHelperPtr& session) + { + test(false); + } + + virtual void + connectFailed(const Glacier2::SessionHelperPtr& session, const Ice::Exception& ex) + { + try + { + ex.ice_throw();; + } + catch(const Ice::ConnectionRefusedException&) + { + cout << "ok" << endl; + instance->notify(); + } + catch(...) + { + test(false); + } + } + + virtual void + createdCommunicator(const Glacier2::SessionHelperPtr& session) + { + test(session->communicator()); + } +}; + +class FailSessionCallback : public Glacier2::SessionCallback +{ + +public: + + virtual void + connected(const Glacier2::SessionHelperPtr&) + { + test(false); + } + + virtual void + disconnected(const Glacier2::SessionHelperPtr&) + { + test(false); + } + + virtual void + connectFailed(const Glacier2::SessionHelperPtr&, const Ice::Exception& ex) + { + try + { + ex.ice_throw(); + } + catch(const Glacier2::PermissionDeniedException&) + { + cout << "ok" << endl; + instance->notify(); + } + catch(...) + { + test(false); + } + } + + virtual void + createdCommunicator(const Glacier2::SessionHelperPtr& session) + { + test(session->communicator()); + } +}; + +class SessionHelperClient : public Ice::Application, public Notify +{ +public: + + int run(int argc, char* argv[]) + { + instance = this; + _initData.properties = Ice::createProperties(argc, argv); + _initData.properties->setProperty("Ice.Default.Router", "Glacier2/router:default -p 12347"); + + DispatcherPtr dispatcher = new Dispatcher(); + dispatcher->start(); + _initData.dispatcher = dispatcher; + + _factory = new Glacier2::SessionFactoryHelper(_initData, new FailSessionCallback()); + + // + // Test to create a session with wrong userid/password + // + + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + + cout << "testing SessionHelper connect with wrong userid/password... " << flush; + + _factory->setRouterHost("127.0.0.1"); + _factory->setPort(12347); + + _factory->setRouterIdentity(communicator()->stringToIdentity("Glacier2/router")); + _factory->setSecure(false); + _session = _factory->connect("userid", "xxx"); + + // + // Wait for connectFailed callback + // + _monitor.wait(); + } + + _factory = new Glacier2::SessionFactoryHelper(_initData, new SuccessSessionCallback()); + + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + cout << "testing SessionHelper connect... " << flush; + _factory->setRouterHost("127.0.0.1"); + _factory->setPort(12347); + _factory->setRouterIdentity(communicator()->stringToIdentity("Glacier2/router")); + _factory->setSecure(false); + _session = _factory->connect("userid", "abc123"); + + // + // Wait for connect callback + // + _monitor.wait(); + + cout << "testing SessionHelper isConnected after connect... " << flush; + test(_session->isConnected()); + cout << "ok" << endl; + + cout << "testing SessionHelper categoryForClient after connect... " << flush; + try + { + test(!_session->categoryForClient().empty()); + } + catch(const Glacier2::SessionNotExistException&) + { + test(false); + } + cout << "ok" << endl; + +// try +// { +// test(_session.session() != null); +// } +// catch(Glacier2.SessionNotExistException ex) +// { +// test(false); +// } + + cout << "testing stringToProxy for server object... " << flush; + Ice::ObjectPrx base = _session->communicator()->stringToProxy("callback:tcp -p 12010"); + cout << "ok" << endl; + + cout << "pinging server after session creation... " << flush; + base->ice_ping(); + cout << "ok" << endl; + + cout << "testing checked cast for server object... " << flush; + CallbackPrx twoway = CallbackPrx::checkedCast(base); + test(twoway); + cout << "ok" << endl; + + cout << "testing server shutdown... " << flush; + twoway->shutdown(); + cout << "ok" << endl; + + test(_session->communicator()); + cout << "testing SessionHelper destroy... " << flush; + _session->destroy(); + + // + // Wait for disconnected callback + // + _monitor.wait(); + + cout << "testing SessionHelper isConnected after destroy... " << flush; + test(_session->isConnected() == false); + cout << "ok" << endl; + + cout << "testing SessionHelper categoryForClient after destroy... " << flush; + try + { + test(!_session->categoryForClient().empty()); + test(false); + } + catch(const Glacier2::SessionNotExistException&) + { + } + cout << "ok" << endl; + +// cout << "testing SessionHelper session after destroy... " << flush; +// try +// { +// Glacier2::SessionPrx session = _session->session(); +// test(false); +// } +// catch(const Glacier2::SessionNotExistException&) +// { +// cout << "ok" << endl; +// } +// catch(const std::exception& ex) +// { +// cout << ex.what() << endl; +// } +// catch(const std::string& msg) +// { +// cout << msg << endl; +// } +// catch(...) +// { +// test(false); +// } + + cout << "testing SessionHelper communicator after destroy... " << flush; + test(_session->communicator()); + cout << "ok" << endl; + + + cout << "uninstalling router with communicator... " << flush; + communicator()->setDefaultRouter(0); + cout << "ok" << endl; + + Ice::ObjectPrx processBase; + { + cout << "testing stringToProxy for process object... " << flush; + processBase = communicator()->stringToProxy("Glacier2/admin -f Process:tcp -h 127.0.0.1 -p 12348"); + cout << "ok" << endl; + } + + + Ice::ProcessPrx process; + { + cout << "testing checked cast for admin object... " << flush; + process = Ice::ProcessPrx::checkedCast(processBase); + test(process != 0); + cout << "ok" << endl; + } + + cout << "testing Glacier2 shutdown... " << flush; + process->shutdown(); + try + { + process->ice_ping(); + test(false); + } + catch(const Ice::LocalException&) + { + cout << "ok" << endl; + } + } + + _factory = new Glacier2::SessionFactoryHelper(_initData, new AfterShutdownSessionCallback()); + + // + // Wait a bit to ensure glaci2router has been shutdown. + // + IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100)); + + + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + cout << "testing SessionHelper connect after router shutdown... " << flush; + _factory->setRouterHost("127.0.0.1"); + _factory->setPort(12347); + _factory->setRouterIdentity(communicator()->stringToIdentity("Glacier2/router")); + _factory->setSecure(false); + _session = _factory->connect("userid", "abc123"); + + // + // Wait for connectFailed callback + // + _monitor.wait(); + + cout << "testing SessionHelper isConnect after connect failure... " << flush; + test(_session->isConnected() == false); + cout << "ok" << endl; + + cout << "testing SessionHelper communicator after connect failure... " << flush; + test(_session->communicator()); + cout << "ok" << endl; + + cout << "testing SessionHelper destroy after connect failure... " << flush; + _session->destroy(); + cout << "ok" << endl; + } + + if(dispatcher) + { + dispatcher->destroy(); + dispatcher->getThreadControl().join(); + } + + return 0; + } + + void + notify() + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + _monitor.notify(); + } + +private: + + Glacier2::SessionHelperPtr _session; + Glacier2::SessionFactoryHelperPtr _factory; + Ice::InitializationData _initData; + IceUtil::Monitor<IceUtil::Mutex> _monitor; +}; + +} // Anonymous namespace end + + +int +main(int argc, char* argv[]) +{ + SessionHelperClient c; + return c.main(argc, argv); +} diff --git a/cpp/test/Glacier2/sessionHelper/Makefile b/cpp/test/Glacier2/sessionHelper/Makefile new file mode 100644 index 00000000000..cc7d12bcde1 --- /dev/null +++ b/cpp/test/Glacier2/sessionHelper/Makefile @@ -0,0 +1,41 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2011 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 + +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/sessionHelper/Makefile.mak b/cpp/test/Glacier2/sessionHelper/Makefile.mak new file mode 100644 index 00000000000..fd1d2b103d2 --- /dev/null +++ b/cpp/test/Glacier2/sessionHelper/Makefile.mak @@ -0,0 +1,49 @@ +# **********************************************************************
+#
+# Copyright (c) 2003-2011 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
+
+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/sessionHelper/Server.cpp b/cpp/test/Glacier2/sessionHelper/Server.cpp new file mode 100644 index 00000000000..403dc7ef622 --- /dev/null +++ b/cpp/test/Glacier2/sessionHelper/Server.cpp @@ -0,0 +1,71 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2011 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/IceUtil.h> +#include <Ice/Ice.h> + +#include <Callback.h> + +using namespace Test; + +namespace +{ + +class SessionHelperServer : public Ice::Application +{ +public: + + virtual int run(int, char*[]); +}; + +class CallbackI : public Callback +{ + +public: + + virtual void + initiateCallback(const CallbackReceiverPrx& proxy, const Ice::Current& current) + { + proxy->callback(current.ctx); + } + + virtual void + initiateCallbackEx(const CallbackReceiverPrx& proxy, const Ice::Current& current) + { + proxy->callbackEx(current.ctx); + } + + virtual void + shutdown(const Ice::Current& current) + { + current.adapter->getCommunicator()->shutdown(); + } +}; + +} + +int +SessionHelperServer::run(int argc, char* argv[]) +{ + communicator()->getProperties()->setProperty("CallbackAdapter.Endpoints", "default -p 12010"); + Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("CallbackAdapter"); + adapter->add(new CallbackI(), communicator()->stringToIdentity("callback")); + adapter->activate(); + communicator()->waitForShutdown(); + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + SessionHelperServer app; + return app.main(argc, argv); +} + diff --git a/cpp/test/Glacier2/sessionHelper/passwords b/cpp/test/Glacier2/sessionHelper/passwords new file mode 100644 index 00000000000..a1527dec2b9 --- /dev/null +++ b/cpp/test/Glacier2/sessionHelper/passwords @@ -0,0 +1 @@ +userid xxMqsnnDcK8tw
\ No newline at end of file diff --git a/cpp/test/Glacier2/sessionHelper/run.py b/cpp/test/Glacier2/sessionHelper/run.py new file mode 100755 index 00000000000..14f5444fa0a --- /dev/null +++ b/cpp/test/Glacier2/sessionHelper/run.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +# ********************************************************************** +# +# Copyright (c) 2003-2011 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 = os.path.join(TestUtil.getCppBinDir(), "glacier2router") + +args = ' --Ice.Warn.Dispatch=0' + \ + ' --Ice.Warn.Connections=0' + \ + ' --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"' + \ + ' --Ice.Admin.InstanceName=Glacier2' + \ + ' --Glacier2.CryptPasswords="' + os.path.join(os.getcwd(), "passwords") + '"' + +print "starting router...", +routerConfig = TestUtil.DriverConfig("server") +routerConfig.lang = "cpp" +starterProc = TestUtil.startServer(router, args, count=2, config=routerConfig) +print "ok" + + + +TestUtil.clientServerTest(additionalClientOptions=" --shutdown") + +starterProc.waitTestSuccess() + |