diff options
author | Benoit Foucher <benoit@zeroc.com> | 2009-08-21 15:55:01 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2009-08-21 15:55:01 +0200 |
commit | b9f2fa14fb3f222a6ec5e0a93bf25fe5ad12b56a (patch) | |
tree | 183215e2dbeadfbc871b800ce09726e58af38b91 /cpp/src | |
parent | adding compression cookbook demo (diff) | |
download | ice-b9f2fa14fb3f222a6ec5e0a93bf25fe5ad12b56a.tar.bz2 ice-b9f2fa14fb3f222a6ec5e0a93bf25fe5ad12b56a.tar.xz ice-b9f2fa14fb3f222a6ec5e0a93bf25fe5ad12b56a.zip |
IOCP changes, bug 3501, 4200, 4156, 3101
Diffstat (limited to 'cpp/src')
51 files changed, 4684 insertions, 3090 deletions
diff --git a/cpp/src/Ice/.depend b/cpp/src/Ice/.depend index 8bbd3b9ac69..b6606a7d129 100644 --- a/cpp/src/Ice/.depend +++ b/cpp/src/Ice/.depend @@ -1,17 +1,17 @@ -Acceptor$(OBJEXT): Acceptor.cpp ../Ice/Acceptor.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/AcceptorF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/TransceiverF.h +Acceptor$(OBJEXT): Acceptor.cpp ../Ice/Acceptor.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/AcceptorF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/TransceiverF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Protocol.h Application$(OBJEXT): Application.cpp $(includedir)/Ice/Application.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.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/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/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h ../Ice/LoggerI.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/ArgVector.h ../Ice/GC.h Base64$(OBJEXT): Base64.cpp ../Ice/Base64.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h Buffer$(OBJEXT): Buffer.cpp $(includedir)/Ice/Buffer.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h -BasicStream$(OBJEXT): BasicStream.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.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/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/ProxyFactory.h $(includedir)/Ice/ObjectFactory.h ../Ice/ObjectFactoryManager.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h ../Ice/TraceUtil.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h +BasicStream$(OBJEXT): BasicStream.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.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/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/ProxyFactory.h $(includedir)/Ice/ObjectFactory.h ../Ice/ObjectFactoryManager.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h ../Ice/TraceUtil.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h BuiltinSequences$(OBJEXT): BuiltinSequences.cpp $(includedir)/Ice/BuiltinSequences.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Stream.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -CommunicatorI$(OBJEXT): CommunicatorI.cpp $(includedir)/IceUtil/DisableWarnings.h ../Ice/CommunicatorI.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h ../Ice/Instance.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Properties.h ../Ice/ReferenceFactory.h ../Ice/Reference.h ../Ice/SharedContext.h ../Ice/ProxyFactory.h ../Ice/ObjectFactoryManager.h ../Ice/ObjectAdapterFactory.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/Endpoint.h ../Ice/ConnectorF.h $(includedir)/Ice/LoggerUtil.h ../Ice/DefaultsAndOverrides.h ../Ice/TraceLevels.h ../Ice/GC.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Router.h +CommunicatorI$(OBJEXT): CommunicatorI.cpp $(includedir)/IceUtil/DisableWarnings.h ../Ice/CommunicatorI.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h ../Ice/Instance.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Properties.h ../Ice/ReferenceFactory.h ../Ice/Reference.h ../Ice/SharedContext.h ../Ice/ProxyFactory.h ../Ice/ObjectFactoryManager.h ../Ice/ObjectAdapterFactory.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/Endpoint.h ../Ice/ConnectorF.h $(includedir)/Ice/LoggerUtil.h ../Ice/DefaultsAndOverrides.h ../Ice/TraceLevels.h ../Ice/GC.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Router.h Communicator$(OBJEXT): Communicator.cpp $(includedir)/Ice/Communicator.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -ConnectRequestHandler$(OBJEXT): ConnectRequestHandler.cpp ../Ice/ConnectRequestHandler.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/MutexProtocol.h ../Ice/RequestHandler.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h ../Ice/RouterInfo.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../Ice/ConnectionRequestHandler.h ../Ice/Instance.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/TransceiverF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/Network.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h $(includedir)/Ice/Properties.h ../Ice/ThreadPool.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Ice/LoggerUtil.h -ConnectionFactory$(OBJEXT): ConnectionFactory.cpp ../Ice/ConnectionFactory.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h ../Ice/SelectorThreadF.h $(includedir)/Ice/Endpoint.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/RouterInfoF.h ../Ice/EndpointI.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h ../Ice/TraceLevels.h ../Ice/DefaultsAndOverrides.h $(includedir)/Ice/Properties.h ../Ice/Transceiver.h ../Ice/Connector.h ../Ice/Acceptor.h ../Ice/ThreadPool.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocatorF.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h ../Ice/SharedContext.h ../Ice/RouterInfo.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Random.h -ConnectionI$(OBJEXT): ConnectionI.cpp $(includedir)/IceUtil/DisableWarnings.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Connection.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h ../Ice/SelectorThreadF.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Properties.h ../Ice/TraceUtil.h ../Ice/DefaultsAndOverrides.h $(includedir)/Ice/Endpoint.h ../Ice/Transceiver.h ../Ice/ThreadPool.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/SelectorThread.h ../Ice/ConnectionMonitor.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocatorF.h ../Ice/ConnectorF.h ../Ice/EndpointI.h ../Ice/AcceptorF.h ../Ice/ReferenceFactory.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h ../Ice/SharedContext.h ../Ice/ProxyFactory.h -ConnectionMonitor$(OBJEXT): ConnectionMonitor.cpp ../Ice/ConnectionMonitor.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/ConnectionMonitorF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/InstanceF.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h ../Ice/SelectorThreadF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/Direct.h +ConnectRequestHandler$(OBJEXT): ConnectRequestHandler.cpp ../Ice/ConnectRequestHandler.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/MutexProtocol.h ../Ice/RequestHandler.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h ../Ice/RouterInfo.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../Ice/ConnectionRequestHandler.h ../Ice/Instance.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/TransceiverF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/Network.h $(includedir)/Ice/Properties.h ../Ice/ThreadPool.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h +ConnectionFactory$(OBJEXT): ConnectionFactory.cpp ../Ice/ConnectionFactory.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Connection.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Endpoint.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/RouterInfoF.h ../Ice/EndpointI.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h ../Ice/TraceLevels.h ../Ice/DefaultsAndOverrides.h $(includedir)/Ice/Properties.h ../Ice/Transceiver.h ../Ice/Connector.h ../Ice/Acceptor.h ../Ice/ThreadPool.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocatorF.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h ../Ice/SharedContext.h ../Ice/RouterInfo.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Random.h +ConnectionI$(OBJEXT): ConnectionI.cpp $(includedir)/IceUtil/DisableWarnings.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Connection.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Properties.h ../Ice/TraceUtil.h ../Ice/DefaultsAndOverrides.h $(includedir)/Ice/Endpoint.h ../Ice/Transceiver.h ../Ice/ThreadPool.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/ConnectionMonitor.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocatorF.h ../Ice/ConnectorF.h ../Ice/EndpointI.h ../Ice/AcceptorF.h ../Ice/ReferenceFactory.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h ../Ice/SharedContext.h ../Ice/ProxyFactory.h +ConnectionMonitor$(OBJEXT): ConnectionMonitor.cpp ../Ice/ConnectionMonitor.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/ConnectionMonitorF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/InstanceF.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/Direct.h Connection$(OBJEXT): Connection.cpp $(includedir)/Ice/Connection.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -ConnectionRequestHandler$(OBJEXT): ConnectionRequestHandler.cpp ../Ice/ConnectionRequestHandler.h ../Ice/RequestHandler.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.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/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h ../Ice/SelectorThreadF.h ../Ice/RouterInfo.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h +ConnectionRequestHandler$(OBJEXT): ConnectionRequestHandler.cpp ../Ice/ConnectionRequestHandler.h ../Ice/RequestHandler.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.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/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h ../Ice/RouterInfo.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h Connector$(OBJEXT): Connector.cpp ../Ice/Connector.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/ConnectorF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/TransceiverF.h Current$(OBJEXT): Current.cpp $(includedir)/Ice/Current.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h DefaultsAndOverrides$(OBJEXT): DefaultsAndOverrides.cpp ../Ice/DefaultsAndOverrides.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/DefaultsAndOverridesF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/Network.h $(includedir)/Ice/LocalException.h @@ -19,11 +19,11 @@ Direct$(OBJEXT): Direct.cpp $(includedir)/Ice/Direct.h $(includedir)/Ice/Servant DispatchInterceptor$(OBJEXT): DispatchInterceptor.cpp $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Config.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h ../Ice/IncomingRequest.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h DynamicLibrary$(OBJEXT): DynamicLibrary.cpp $(includedir)/Ice/DynamicLibrary.h $(includedir)/Ice/DynamicLibraryF.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 Endpoint$(OBJEXT): Endpoint.cpp $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -EndpointFactoryManager$(OBJEXT): EndpointFactoryManager.cpp ../Ice/EndpointFactoryManager.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/EndpointFactoryManagerF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h ../Ice/OpaqueEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Properties.h ../Ice/DefaultsAndOverrides.h +EndpointFactoryManager$(OBJEXT): EndpointFactoryManager.cpp ../Ice/EndpointFactoryManager.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/EndpointFactoryManagerF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h ../Ice/OpaqueEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Properties.h ../Ice/DefaultsAndOverrides.h EndpointFactory$(OBJEXT): EndpointFactory.cpp $(includedir)/Ice/EndpointFactory.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/Ice/Protocol.h -EndpointI$(OBJEXT): EndpointI.cpp ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/Network.h ../Ice/PropertiesI.h $(includedir)/Ice/Properties.h $(includedir)/Ice/LoggerUtil.h +EndpointI$(OBJEXT): EndpointI.cpp ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/Network.h ../Ice/PropertiesI.h $(includedir)/Ice/Properties.h $(includedir)/Ice/LoggerUtil.h EndpointTypes$(OBJEXT): EndpointTypes.cpp $(includedir)/Ice/EndpointTypes.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -EventHandler$(OBJEXT): EventHandler.cpp ../Ice/EventHandler.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/EventHandlerF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/SelectorF.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h +EventHandler$(OBJEXT): EventHandler.cpp ../Ice/EventHandler.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/EventHandlerF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h Exception$(OBJEXT): Exception.cpp $(includedir)/Ice/Exception.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/StringUtil.h FacetMap$(OBJEXT): FacetMap.cpp $(includedir)/Ice/FacetMap.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h FactoryTable$(OBJEXT): FactoryTable.cpp $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/UserExceptionFactory.h @@ -32,27 +32,27 @@ GC$(OBJEXT): GC.cpp $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h Identity$(OBJEXT): Identity.cpp $(includedir)/Ice/Identity.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h ImplicitContextI$(OBJEXT): ImplicitContextI.cpp ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/MutexPtrLock.h ImplicitContext$(OBJEXT): ImplicitContext.cpp $(includedir)/Ice/ImplicitContext.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -IncomingAsync$(OBJEXT): IncomingAsync.cpp $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/IncomingAsyncF.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/Incoming.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/ServantLocator.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h ../Ice/SelectorThreadF.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Properties.h ../Ice/ReplyStatus.h $(includedir)/IceUtil/MutexPtrLock.h -Incoming$(OBJEXT): Incoming.cpp $(includedir)/Ice/Incoming.h $(includedir)/Ice/InstanceF.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/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/IncomingAsync.h ../Ice/IncomingRequest.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h ../Ice/ServantManager.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h ../Ice/SelectorThreadF.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Properties.h $(includedir)/Ice/LoggerUtil.h ../Ice/ReplyStatus.h $(includedir)/IceUtil/StringUtil.h +IncomingAsync$(OBJEXT): IncomingAsync.cpp $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/IncomingAsyncF.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/Incoming.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/ServantLocator.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Properties.h ../Ice/ReplyStatus.h $(includedir)/IceUtil/MutexPtrLock.h +Incoming$(OBJEXT): Incoming.cpp $(includedir)/Ice/Incoming.h $(includedir)/Ice/InstanceF.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/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/IncomingAsync.h ../Ice/IncomingRequest.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h ../Ice/ServantManager.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Properties.h $(includedir)/Ice/LoggerUtil.h ../Ice/ReplyStatus.h $(includedir)/IceUtil/StringUtil.h Initialize$(OBJEXT): Initialize.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/ArgVector.h $(includedir)/IceUtil/Config.h ../Ice/GC.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/CommunicatorI.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h ../Ice/PropertiesI.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h ../Ice/StreamI.h $(includedir)/Ice/Stream.h ../Ice/LoggerI.h $(includedir)/Ice/Logger.h $(includedir)/IceUtil/MutexPtrLock.h -Instance$(OBJEXT): Instance.cpp $(includedir)/IceUtil/DisableWarnings.h ../Ice/Instance.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h ../Ice/DefaultsAndOverrides.h $(includedir)/Ice/Endpoint.h ../Ice/RouterInfo.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/Router.h ../Ice/LocatorInfo.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/Locator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h ../Ice/ReferenceFactory.h ../Ice/Reference.h ../Ice/SharedContext.h ../Ice/ProxyFactory.h ../Ice/ThreadPool.h ../Ice/EventHandlerF.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/Network.h ../Ice/SelectorF.h $(includedir)/Ice/LoggerUtil.h ../Ice/SelectorThread.h ../Ice/SocketReadyCallback.h ../Ice/ConnectionFactory.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/TransceiverF.h ../Ice/EventHandler.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/EndpointI.h ../Ice/ConnectionMonitor.h ../Ice/ObjectFactoryManager.h ../Ice/ObjectAdapterFactory.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h ../Ice/PropertiesI.h $(includedir)/Ice/Properties.h ../Ice/LoggerI.h $(includedir)/Ice/Logger.h ../Ice/EndpointFactoryManager.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/RetryQueue.h ../Ice/TcpEndpointI.h $(includedir)/Ice/EndpointFactory.h ../Ice/UdpEndpointI.h $(includedir)/Ice/DynamicLibrary.h ../Ice/PluginManagerI.h $(includedir)/IceUtil/UUID.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/IceUtil/MutexPtrLock.h ../Ice/SysLoggerI.h +Instance$(OBJEXT): Instance.cpp $(includedir)/IceUtil/DisableWarnings.h ../Ice/Instance.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h ../Ice/DefaultsAndOverrides.h $(includedir)/Ice/Endpoint.h ../Ice/RouterInfo.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/Router.h ../Ice/LocatorInfo.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/Locator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h ../Ice/ReferenceFactory.h ../Ice/Reference.h ../Ice/SharedContext.h ../Ice/ProxyFactory.h ../Ice/ThreadPool.h ../Ice/EventHandlerF.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/Network.h ../Ice/ConnectionFactory.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/TransceiverF.h ../Ice/EventHandler.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/EndpointI.h ../Ice/ConnectionMonitor.h ../Ice/ObjectFactoryManager.h ../Ice/ObjectAdapterFactory.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h ../Ice/PropertiesI.h $(includedir)/Ice/Properties.h ../Ice/LoggerI.h $(includedir)/Ice/Logger.h ../Ice/EndpointFactoryManager.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/RetryQueue.h ../Ice/TcpEndpointI.h $(includedir)/Ice/EndpointFactory.h ../Ice/UdpEndpointI.h $(includedir)/Ice/DynamicLibrary.h ../Ice/PluginManagerI.h $(includedir)/Ice/LoggerUtil.h $(includedir)/IceUtil/UUID.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/IceUtil/MutexPtrLock.h ../Ice/SysLoggerI.h LocalException$(OBJEXT): LocalException.cpp $(includedir)/Ice/LocalException.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h LocalObject$(OBJEXT): LocalObject.cpp $(includedir)/Ice/LocalObject.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h -LocatorInfo$(OBJEXT): LocatorInfo.cpp ../Ice/LocatorInfo.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/LocatorInfoF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Locator.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h ../Ice/EndpointI.h $(includedir)/Ice/Endpoint.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h ../Ice/SharedContext.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Properties.h +LocatorInfo$(OBJEXT): LocatorInfo.cpp ../Ice/LocatorInfo.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/LocatorInfoF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Locator.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h ../Ice/EndpointI.h $(includedir)/Ice/Endpoint.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h ../Ice/SharedContext.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Properties.h Locator$(OBJEXT): Locator.cpp $(includedir)/Ice/Locator.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -LoggerI$(OBJEXT): LoggerI.cpp $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h ../Ice/LoggerI.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/LocalException.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h +LoggerI$(OBJEXT): LoggerI.cpp $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h ../Ice/LoggerI.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/LocalException.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h Logger$(OBJEXT): Logger.cpp $(includedir)/Ice/Logger.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -LoggerUtil$(OBJEXT): LoggerUtil.cpp $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/LoggerF.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h +LoggerUtil$(OBJEXT): LoggerUtil.cpp $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/LoggerF.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h Network$(OBJEXT): Network.cpp $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Config.h ../Ice/Network.h $(includedir)/Ice/Config.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h ObjectAdapterFactory$(OBJEXT): ObjectAdapterFactory.cpp ../Ice/ObjectAdapterFactory.h ../Ice/ObjectAdapterI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectAdapterFactoryF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ServantManagerF.h ../Ice/RouterInfoF.h ../Ice/ConnectorF.h ../Ice/LocatorInfoF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/UUID.h -ObjectAdapterI$(OBJEXT): ObjectAdapterI.cpp $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Config.h ../Ice/ObjectAdapterI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectAdapterFactoryF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ServantManagerF.h ../Ice/RouterInfoF.h ../Ice/ConnectorF.h ../Ice/LocatorInfoF.h ../Ice/ThreadPoolF.h ../Ice/ObjectAdapterFactory.h ../Ice/Instance.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/ReferenceFactoryF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/Direct.h ../Ice/ProxyFactory.h ../Ice/ReferenceFactory.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h ../Ice/SharedContext.h ../Ice/EndpointI.h ../Ice/TransceiverF.h ../Ice/AcceptorF.h ../Ice/EndpointFactoryManager.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/ConnectionFactory.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/Network.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h ../Ice/ServantManager.h ../Ice/RouterInfo.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h ../Ice/LocatorInfo.h $(includedir)/Ice/Locator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/LoggerUtil.h ../Ice/ThreadPool.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Router.h ../Ice/DefaultsAndOverrides.h ../Ice/TraceLevels.h ../Ice/PropertyNames.h +ObjectAdapterI$(OBJEXT): ObjectAdapterI.cpp $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Config.h ../Ice/ObjectAdapterI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectAdapterFactoryF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ServantManagerF.h ../Ice/RouterInfoF.h ../Ice/ConnectorF.h ../Ice/LocatorInfoF.h ../Ice/ThreadPoolF.h ../Ice/ObjectAdapterFactory.h ../Ice/Instance.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/Direct.h ../Ice/ProxyFactory.h ../Ice/ReferenceFactory.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h ../Ice/SharedContext.h ../Ice/EndpointI.h ../Ice/TransceiverF.h ../Ice/AcceptorF.h ../Ice/EndpointFactoryManager.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/ConnectionFactory.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/Network.h ../Ice/ServantManager.h ../Ice/RouterInfo.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h ../Ice/LocatorInfo.h $(includedir)/Ice/Locator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/LoggerUtil.h ../Ice/ThreadPool.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Router.h ../Ice/DefaultsAndOverrides.h ../Ice/TraceLevels.h ../Ice/PropertyNames.h ObjectAdapter$(OBJEXT): ObjectAdapter.cpp $(includedir)/Ice/ObjectAdapter.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h ObjectFactoryManager$(OBJEXT): ObjectFactoryManager.cpp ../Ice/ObjectFactoryManager.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/LocalException.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h ObjectFactory$(OBJEXT): ObjectFactory.cpp $(includedir)/Ice/ObjectFactory.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h Object$(OBJEXT): Object.cpp $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Config.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/IncomingAsync.h ../Ice/IncomingRequest.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Stream.h -OpaqueEndpointI$(OBJEXT): OpaqueEndpointI.cpp ../Ice/OpaqueEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/Base64.h -OutgoingAsync$(OBJEXT): OutgoingAsync.cpp $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StreamF.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h ../Ice/SelectorThreadF.h ../Ice/RequestHandler.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h ../Ice/Instance.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Properties.h $(includedir)/Ice/LoggerUtil.h ../Ice/LocatorInfo.h ../Ice/ProxyFactory.h ../Ice/RouterInfo.h ../Ice/ReplyStatus.h ../Ice/ThreadPool.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/RetryQueue.h -Outgoing$(OBJEXT): Outgoing.cpp $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/RequestHandler.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h ../Ice/SelectorThreadF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/Direct.h ../Ice/ReplyStatus.h +OpaqueEndpointI$(OBJEXT): OpaqueEndpointI.cpp ../Ice/OpaqueEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/Base64.h +OutgoingAsync$(OBJEXT): OutgoingAsync.cpp $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StreamF.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h ../Ice/RequestHandler.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h ../Ice/Instance.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Properties.h $(includedir)/Ice/LoggerUtil.h ../Ice/LocatorInfo.h ../Ice/ProxyFactory.h ../Ice/RouterInfo.h ../Ice/ReplyStatus.h ../Ice/ThreadPool.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/RetryQueue.h +Outgoing$(OBJEXT): Outgoing.cpp $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/RequestHandler.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h ../Ice/TransceiverF.h $(includedir)/Ice/ServantManagerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/Direct.h ../Ice/ReplyStatus.h PluginManagerI$(OBJEXT): PluginManagerI.cpp ../Ice/PluginManagerI.h $(includedir)/Ice/Plugin.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/DynamicLibrary.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/LocalException.h Plugin$(OBJEXT): Plugin.cpp $(includedir)/Ice/Plugin.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h Process$(OBJEXT): Process.cpp $(includedir)/Ice/Process.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h @@ -60,37 +60,37 @@ PropertiesI$(OBJEXT): PropertiesI.cpp $(includedir)/IceUtil/DisableWarnings.h $( Properties$(OBJEXT): Properties.cpp $(includedir)/Ice/Properties.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h PropertyNames$(OBJEXT): PropertyNames.cpp ../Ice/PropertyNames.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h Protocol$(OBJEXT): Protocol.cpp $(includedir)/Ice/Protocol.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h -ProtocolPluginFacade$(OBJEXT): ProtocolPluginFacade.cpp $(includedir)/Ice/ProtocolPluginFacade.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Protocol.h ../Ice/Instance.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/EndpointFactoryManager.h ../Ice/TraceLevels.h ../Ice/DefaultsAndOverrides.h $(includedir)/Ice/Endpoint.h -ProxyFactory$(OBJEXT): ProxyFactory.cpp $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h ../Ice/ProxyFactory.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/OutgoingAsyncF.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.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/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/ReferenceFactory.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h ../Ice/SharedContext.h ../Ice/LocatorInfo.h $(includedir)/Ice/Properties.h $(includedir)/Ice/LoggerUtil.h ../Ice/TraceLevels.h -Proxy$(OBJEXT): Proxy.cpp $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Handle.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h ../Ice/ProxyFactory.h $(includedir)/Ice/InstanceF.h ../Ice/ReferenceFactory.h ../Ice/ReferenceFactoryF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h $(includedir)/Ice/BuiltinSequences.h ../Ice/ObjectAdapterFactory.h ../Ice/ObjectAdapterI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterFactoryF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ServantManagerF.h ../Ice/ConnectorF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h ../Ice/ConnectRequestHandler.h ../Ice/RequestHandler.h ../Ice/RouterInfo.h ../Ice/ConnectionRequestHandler.h $(includedir)/Ice/Direct.h ../Ice/EndpointI.h ../Ice/TransceiverF.h ../Ice/AcceptorF.h ../Ice/Instance.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Process.h $(includedir)/Ice/Incoming.h ../Ice/LocatorInfo.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/Network.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h $(includedir)/Ice/Stream.h -ReferenceFactory$(OBJEXT): ReferenceFactory.cpp $(includedir)/Ice/Communicator.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h ../Ice/ReferenceFactory.h ../Ice/ReferenceFactoryF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/InstanceF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h $(includedir)/Ice/BuiltinSequences.h ../Ice/ProxyFactory.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/EndpointI.h $(includedir)/Ice/Endpoint.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/EndpointFactoryManager.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/RouterInfo.h $(includedir)/Ice/Router.h ../Ice/LocatorInfo.h $(includedir)/Ice/Locator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Properties.h ../Ice/DefaultsAndOverrides.h ../Ice/PropertyNames.h $(includedir)/IceUtil/StringUtil.h -Reference$(OBJEXT): Reference.cpp ../Ice/Reference.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h ../Ice/ReferenceFactory.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/EndpointI.h $(includedir)/Ice/Endpoint.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/OpaqueEndpointI.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/RouterInfo.h $(includedir)/Ice/Router.h ../Ice/LocatorInfo.h $(includedir)/Ice/Locator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/Network.h ../Ice/SelectorF.h ../Ice/SocketReadyCallback.h ../Ice/ConnectionFactory.h $(includedir)/Ice/LoggerUtil.h ../Ice/TraceLevels.h ../Ice/DefaultsAndOverrides.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Random.h -RetryQueue$(OBJEXT): RetryQueue.cpp ../Ice/RetryQueue.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/RetryQueueF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h +ProtocolPluginFacade$(OBJEXT): ProtocolPluginFacade.cpp $(includedir)/Ice/ProtocolPluginFacade.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Protocol.h ../Ice/Instance.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/EndpointFactoryManager.h ../Ice/TraceLevels.h ../Ice/DefaultsAndOverrides.h $(includedir)/Ice/Endpoint.h +ProxyFactory$(OBJEXT): ProxyFactory.cpp $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h ../Ice/ProxyFactory.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/OutgoingAsyncF.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.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/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/ReferenceFactory.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h ../Ice/SharedContext.h ../Ice/LocatorInfo.h $(includedir)/Ice/Properties.h $(includedir)/Ice/LoggerUtil.h ../Ice/TraceLevels.h +Proxy$(OBJEXT): Proxy.cpp $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Handle.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h ../Ice/ProxyFactory.h $(includedir)/Ice/InstanceF.h ../Ice/ReferenceFactory.h ../Ice/ReferenceFactoryF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h $(includedir)/Ice/BuiltinSequences.h ../Ice/ObjectAdapterFactory.h ../Ice/ObjectAdapterI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterFactoryF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ServantManagerF.h ../Ice/ConnectorF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h ../Ice/ConnectRequestHandler.h ../Ice/RequestHandler.h ../Ice/RouterInfo.h ../Ice/ConnectionRequestHandler.h $(includedir)/Ice/Direct.h ../Ice/EndpointI.h ../Ice/TransceiverF.h ../Ice/AcceptorF.h ../Ice/Instance.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Process.h $(includedir)/Ice/Incoming.h ../Ice/LocatorInfo.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/Network.h $(includedir)/Ice/Stream.h +ReferenceFactory$(OBJEXT): ReferenceFactory.cpp $(includedir)/Ice/Communicator.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h ../Ice/ReferenceFactory.h ../Ice/ReferenceFactoryF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/InstanceF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h $(includedir)/Ice/BuiltinSequences.h ../Ice/ProxyFactory.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/EndpointI.h $(includedir)/Ice/Endpoint.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/EndpointFactoryManager.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/RouterInfo.h $(includedir)/Ice/Router.h ../Ice/LocatorInfo.h $(includedir)/Ice/Locator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Properties.h ../Ice/DefaultsAndOverrides.h ../Ice/PropertyNames.h $(includedir)/IceUtil/StringUtil.h +Reference$(OBJEXT): Reference.cpp ../Ice/Reference.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h ../Ice/ReferenceFactory.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/EndpointI.h $(includedir)/Ice/Endpoint.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/OpaqueEndpointI.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/RouterInfo.h $(includedir)/Ice/Router.h ../Ice/LocatorInfo.h $(includedir)/Ice/Locator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/Network.h ../Ice/ConnectionFactory.h $(includedir)/Ice/LoggerUtil.h ../Ice/TraceLevels.h ../Ice/DefaultsAndOverrides.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Random.h +RetryQueue$(OBJEXT): RetryQueue.cpp ../Ice/RetryQueue.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/RetryQueueF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h RequestHandler$(OBJEXT): RequestHandler.cpp ../Ice/RequestHandler.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocatorF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h RouterInfo$(OBJEXT): RouterInfo.cpp ../Ice/RouterInfo.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h ../Ice/RouterInfoF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Router.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h ../Ice/Reference.h $(includedir)/IceUtil/RecMutex.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/LocatorF.h ../Ice/LocatorInfoF.h ../Ice/SharedContext.h Router$(OBJEXT): Router.cpp $(includedir)/Ice/Router.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -SelectorThread$(OBJEXT): SelectorThread.cpp $(includedir)/IceUtil/DisableWarnings.h ../Ice/SelectorThread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Config.h ../Ice/SelectorThreadF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/ProxyHandle.h ../Ice/SocketReadyCallback.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Protocol.h ../Ice/SelectorF.h $(includedir)/Ice/InstanceF.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/PropertiesI.h $(includedir)/Ice/Properties.h +Selector$(OBJEXT): Selector.cpp ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Config.h ../Ice/Network.h $(includedir)/Ice/Config.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/InstanceF.h ../Ice/EventHandlerF.h ../Ice/EventHandler.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h ServantLocator$(OBJEXT): ServantLocator.cpp $(includedir)/Ice/ServantLocator.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -ServantManager$(OBJEXT): ServantManager.cpp ../Ice/ServantManager.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Identity.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/LocalException.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/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Plugin.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/Direct.h $(includedir)/IceUtil/StringUtil.h +ServantManager$(OBJEXT): ServantManager.cpp ../Ice/ServantManager.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Identity.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/LocalException.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/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Plugin.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/Direct.h $(includedir)/IceUtil/StringUtil.h Service$(OBJEXT): Service.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/ArgVector.h $(includedir)/Ice/Service.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.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/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/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h ../Ice/LoggerI.h ../Ice/Network.h SliceChecksumDict$(OBJEXT): SliceChecksumDict.cpp $(includedir)/Ice/SliceChecksumDict.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h SliceChecksums$(OBJEXT): SliceChecksums.cpp $(includedir)/Ice/SliceChecksums.h $(includedir)/Ice/SliceChecksumDict.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/MutexPtrLock.h Stats$(OBJEXT): Stats.cpp $(includedir)/Ice/Stats.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h StreamI$(OBJEXT): StreamI.cpp ../Ice/StreamI.h $(includedir)/Ice/Stream.h $(includedir)/Ice/StreamF.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/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.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/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/LocalException.h Stream$(OBJEXT): Stream.cpp $(includedir)/Ice/Stream.h $(includedir)/Ice/StreamF.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/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h -StringConverter$(OBJEXT): StringConverter.cpp $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.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/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/StatsF.h ../Ice/Instance.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/IconvStringConverter.h +StringConverter$(OBJEXT): StringConverter.cpp $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Plugin.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.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/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/StatsF.h ../Ice/Instance.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/IconvStringConverter.h SysLoggerI$(OBJEXT): SysLoggerI.cpp ../Ice/SysLoggerI.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h -TcpAcceptor$(OBJEXT): TcpAcceptor.cpp ../Ice/TcpAcceptor.h ../Ice/TransceiverF.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/InstanceF.h ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/Acceptor.h ../Ice/AcceptorF.h ../Ice/TcpTransceiver.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/SelectorF.h ../Ice/Instance.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/CommunicatorF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h ../Ice/Network.h $(includedir)/Ice/Properties.h -TcpConnector$(OBJEXT): TcpConnector.cpp ../Ice/TcpConnector.h ../Ice/TransceiverF.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/InstanceF.h ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/Connector.h ../Ice/ConnectorF.h ../Ice/TcpTransceiver.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/SelectorF.h ../Ice/TcpEndpointI.h ../Ice/EndpointI.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)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h ../Ice/Network.h -TcpEndpointI$(OBJEXT): TcpEndpointI.cpp ../Ice/TcpEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h ../Ice/TcpAcceptor.h ../Ice/TraceLevelsF.h ../Ice/Acceptor.h ../Ice/TcpConnector.h ../Ice/Connector.h ../Ice/TcpTransceiver.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/SelectorF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/DefaultsAndOverrides.h -TcpTransceiver$(OBJEXT): TcpTransceiver.cpp ../Ice/TcpTransceiver.h $(includedir)/Ice/InstanceF.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 ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/SelectorF.h ../Ice/Instance.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/CommunicatorF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h ../Ice/Network.h -ThreadPool$(OBJEXT): ThreadPool.cpp $(includedir)/IceUtil/DisableWarnings.h ../Ice/ThreadPool.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h ../Ice/ThreadPoolF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/EventHandlerF.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/Network.h $(includedir)/Ice/Protocol.h ../Ice/SelectorF.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/EventHandler.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h ../Ice/ObjectAdapterFactory.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/Endpoint.h ../Ice/ConnectorF.h $(includedir)/Ice/Properties.h ../Ice/TraceLevels.h +TcpAcceptor$(OBJEXT): TcpAcceptor.cpp ../Ice/TcpAcceptor.h ../Ice/TransceiverF.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/InstanceF.h ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/Acceptor.h ../Ice/AcceptorF.h ../Ice/Network.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h ../Ice/TcpTransceiver.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Properties.h +TcpConnector$(OBJEXT): TcpConnector.cpp ../Ice/TcpConnector.h ../Ice/TransceiverF.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/InstanceF.h ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/Connector.h ../Ice/ConnectorF.h ../Ice/TcpTransceiver.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/Network.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h ../Ice/TcpEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h +TcpEndpointI$(OBJEXT): TcpEndpointI.cpp ../Ice/TcpEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h ../Ice/TcpAcceptor.h ../Ice/TraceLevelsF.h ../Ice/Acceptor.h ../Ice/TcpConnector.h ../Ice/Connector.h ../Ice/TcpTransceiver.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/DefaultsAndOverrides.h +TcpTransceiver$(OBJEXT): TcpTransceiver.cpp ../Ice/TcpTransceiver.h $(includedir)/Ice/InstanceF.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 ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h +ThreadPool$(OBJEXT): ThreadPool.cpp $(includedir)/IceUtil/DisableWarnings.h ../Ice/ThreadPool.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h ../Ice/ThreadPoolF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/EventHandlerF.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/Network.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/EventHandler.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h ../Ice/ObjectAdapterFactory.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/Endpoint.h ../Ice/ConnectorF.h $(includedir)/Ice/Properties.h ../Ice/TraceLevels.h TraceLevels$(OBJEXT): TraceLevels.cpp ../Ice/TraceLevels.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/TraceLevelsF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h -TraceUtil$(OBJEXT): TraceUtil.cpp $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/StringUtil.h ../Ice/TraceUtil.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/TraceLevelsF.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/Logger.h ../Ice/ReplyStatus.h -Transceiver$(OBJEXT): Transceiver.cpp ../Ice/Transceiver.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/TransceiverF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/SelectorF.h -UdpConnector$(OBJEXT): UdpConnector.cpp ../Ice/UdpConnector.h ../Ice/TransceiverF.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/InstanceF.h ../Ice/Connector.h ../Ice/ConnectorF.h $(includedir)/Ice/Protocol.h ../Ice/UdpTransceiver.h ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/SelectorF.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h ../Ice/UdpEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocalException.h -UdpEndpointI$(OBJEXT): UdpEndpointI.cpp ../Ice/UdpEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h ../Ice/UdpConnector.h ../Ice/Connector.h ../Ice/UdpTransceiver.h ../Ice/TraceLevelsF.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/SelectorF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/DefaultsAndOverrides.h -UdpTransceiver$(OBJEXT): UdpTransceiver.cpp ../Ice/UdpTransceiver.h $(includedir)/Ice/InstanceF.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 ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/SelectorF.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/CommunicatorF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h ../Ice/Network.h $(includedir)/Ice/Properties.h +TraceUtil$(OBJEXT): TraceUtil.cpp $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/StringUtil.h ../Ice/TraceUtil.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/TraceLevelsF.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/StatsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/Logger.h ../Ice/ReplyStatus.h +Transceiver$(OBJEXT): Transceiver.cpp ../Ice/Transceiver.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/TransceiverF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Protocol.h +UdpConnector$(OBJEXT): UdpConnector.cpp ../Ice/UdpConnector.h ../Ice/TransceiverF.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/InstanceF.h ../Ice/Connector.h ../Ice/ConnectorF.h $(includedir)/Ice/Protocol.h ../Ice/UdpTransceiver.h ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/Network.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../Ice/UdpEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/Ice/LocalException.h +UdpEndpointI$(OBJEXT): UdpEndpointI.cpp ../Ice/UdpEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h ../Ice/UdpConnector.h ../Ice/Connector.h ../Ice/UdpTransceiver.h ../Ice/TraceLevelsF.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/DefaultsAndOverrides.h +UdpTransceiver$(OBJEXT): UdpTransceiver.cpp ../Ice/UdpTransceiver.h $(includedir)/Ice/InstanceF.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 ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Properties.h DLLMain$(OBJEXT): DLLMain.cpp ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Service.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.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/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/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h BuiltinSequences.cpp: $(slicedir)/Ice/BuiltinSequences.ice CommunicatorF.cpp: $(slicedir)/Ice/CommunicatorF.ice diff --git a/cpp/src/Ice/Acceptor.h b/cpp/src/Ice/Acceptor.h index be771c54fec..ad2888ac564 100644 --- a/cpp/src/Ice/Acceptor.h +++ b/cpp/src/Ice/Acceptor.h @@ -13,24 +13,22 @@ #include <IceUtil/Shared.h> #include <Ice/AcceptorF.h> #include <Ice/TransceiverF.h> - -#ifdef _WIN32 -#include <winsock2.h> -typedef int ssize_t; -#else -# define SOCKET int -#endif +#include <Ice/Network.h> namespace IceInternal { -class ICE_API Acceptor : public ::IceUtil::Shared +class ICE_API Acceptor : virtual public ::IceUtil::Shared { public: - virtual SOCKET fd() = 0; + virtual NativeInfoPtr getNativeInfo() = 0; virtual void close() = 0; virtual void listen() = 0; +#ifdef ICE_USE_IOCP + virtual void startAccept() = 0; + virtual void finishAccept() = 0; +#endif virtual TransceiverPtr accept() = 0; virtual std::string toString() const = 0; }; diff --git a/cpp/src/Ice/ConnectRequestHandler.cpp b/cpp/src/Ice/ConnectRequestHandler.cpp index 5953691c640..f400b03d418 100644 --- a/cpp/src/Ice/ConnectRequestHandler.cpp +++ b/cpp/src/Ice/ConnectRequestHandler.cpp @@ -36,9 +36,9 @@ public: } virtual void - execute(const ThreadPoolPtr& threadPool) + execute(ThreadPoolCurrent& current) { - threadPool->promoteFollower(); + current.ioCompleted(); _handler->flushRequestsWithException(*_exception.get()); } @@ -59,9 +59,9 @@ public: } virtual void - execute(const ThreadPoolPtr& threadPool) + execute(ThreadPoolCurrent& current) { - threadPool->promoteFollower(); + current.ioCompleted(); _handler->flushRequestsWithException(_exception); } @@ -81,9 +81,9 @@ public: } virtual void - execute(const ThreadPoolPtr& threadPool) + execute(ThreadPoolCurrent& current) { - threadPool->promoteFollower(); + current.ioCompleted(); for(vector<OutgoingAsyncMessageCallbackPtr>::const_iterator p = _callbacks.begin(); p != _callbacks.end(); ++p) { (*p)->__sentCallback(_instance); @@ -438,14 +438,14 @@ ConnectRequestHandler::flushRequests() req.os->i = req.os->b.begin(); req.os->readBlob(bytes, req.os->b.size()); os.writeBlob(bytes, req.os->b.size()); - _connection->finishBatchRequest(&os, _compress); - delete req.os; } catch(const Ice::LocalException&) { _connection->abortBatchRequest(); throw; } + _connection->finishBatchRequest(&os, _compress); + delete req.os; } _requests.pop_front(); } diff --git a/cpp/src/Ice/ConnectionFactory.cpp b/cpp/src/Ice/ConnectionFactory.cpp index 32de59ba16e..38b922c795f 100644 --- a/cpp/src/Ice/ConnectionFactory.cpp +++ b/cpp/src/Ice/ConnectionFactory.cpp @@ -658,6 +658,7 @@ IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& t // is necessary to support the interruption of the connection initialization and validation // in case the communicator is destroyed. // + Ice::ConnectionIPtr connection; try { if(_destroyed) @@ -665,10 +666,7 @@ IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& t throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__); } - Ice::ConnectionIPtr connection = new ConnectionI(_instance, transceiver, ci.endpoint->compress(false), 0); - _connections.insert(pair<const ConnectorInfo, ConnectionIPtr>(ci, connection)); - _connectionsByEndpoint.insert(pair<const EndpointIPtr, ConnectionIPtr>(ci.endpoint, connection)); - return connection; + connection = new ConnectionI(_instance, transceiver, ci.endpoint->compress(false), 0); } catch(const Ice::LocalException&) { @@ -682,6 +680,10 @@ IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& t } throw; } + + _connections.insert(pair<const ConnectorInfo, ConnectionIPtr>(ci, connection)); + _connectionsByEndpoint.insert(pair<const EndpointIPtr, ConnectionIPtr>(ci.endpoint, connection)); + return connection; } void @@ -1260,7 +1262,7 @@ IceInternal::IncomingConnectionFactory::waitUntilFinished() // First we wait until the factory is destroyed. If we are using // an acceptor, we also wait for it to be closed. // - while(_state != StateClosed || _acceptor) + while(_state != StateFinished) { wait(); } @@ -1270,7 +1272,6 @@ IceInternal::IncomingConnectionFactory::waitUntilFinished() // _adapter = 0; - // // We want to wait until all connections are finished outside the // thread synchronization. // @@ -1326,73 +1327,74 @@ IceInternal::IncomingConnectionFactory::flushBatchRequests() } } +#ifdef ICE_USE_IOCP bool -IceInternal::IncomingConnectionFactory::datagram() const +IceInternal::IncomingConnectionFactory::startAsync(SocketOperation) { - return _endpoint->datagram(); -} + if(_state >= StateClosed) + { + return false; + } -bool -IceInternal::IncomingConnectionFactory::readable() const -{ - return false; + try + { + _acceptor->startAccept(); + } + catch(const Ice::LocalException& ex) + { + { + Error out(_instance->initializationData().logger); + out << "can't accept connections:\n" << ex << '\n' << _acceptor->toString(); + } + abort(); + } + return true; } bool -IceInternal::IncomingConnectionFactory::read(BasicStream&) +IceInternal::IncomingConnectionFactory::finishAsync(SocketOperation) { - assert(false); // Must not be called, readable() returns false. - return false; -} - -namespace -{ - -class PromoteFollower -{ -public: - - PromoteFollower(const ThreadPoolPtr& threadPool) : - _threadPool(threadPool) + assert(_acceptor); + try { + _acceptor->finishAccept(); } - - ~PromoteFollower() + catch(const LocalException& ex) { - _threadPool->promoteFollower(); - } - -private: - - const ThreadPoolPtr _threadPool; -}; - + Error out(_instance->initializationData().logger); + out << "couldn't accept connection:\n" << ex << '\n' << _acceptor->toString(); + return false; + } + return _state < StateClosed; } +#endif void -IceInternal::IncomingConnectionFactory::message(BasicStream&, const ThreadPoolPtr& threadPool) +IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current) { ConnectionIPtr connection; + ThreadPoolMessage<IncomingConnectionFactory> msg(current, *this); + { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - - // - // This makes sure that we promote a follower before we leave - // the scope of the mutex above, but after we call accept() - // (if we call it). - // - // If _threadPool is null, then this class doesn't do - // anything. - // - PromoteFollower promote(threadPool); - if(_state != StateActive) + ThreadPoolMessage<IncomingConnectionFactory>::IOScope io(msg); + if(!io) + { + return; + } + + if(_state >= StateClosed) + { + return; + } + else if(_state == StateHolding) { IceUtil::ThreadControl::yield(); return; } - + // // Reap connections for which destruction has completed. // @@ -1422,11 +1424,6 @@ IceInternal::IncomingConnectionFactory::message(BasicStream&, const ThreadPoolPt // Ignore socket exceptions. return; } - catch(const TimeoutException&) - { - // Ignore timeouts. - return; - } catch(const LocalException& ex) { // Warn about other Ice local exceptions. @@ -1474,30 +1471,15 @@ IceInternal::IncomingConnectionFactory::message(BasicStream&, const ThreadPoolPt } assert(connection); - connection->start(this); } void -IceInternal::IncomingConnectionFactory::finished(const ThreadPoolPtr& threadPool) +IceInternal::IncomingConnectionFactory::finished(ThreadPoolCurrent&) { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - - threadPool->promoteFollower(); - assert(threadPool.get() == dynamic_cast<ObjectAdapterI*>(_adapter.get())->getThreadPool().get()); assert(_state == StateClosed); - - dynamic_cast<ObjectAdapterI*>(_adapter.get())->getThreadPool()->decFdsInUse(); - _acceptor->close(); - _acceptor = 0; - _fd = 0; - notifyAll(); -} - -void -IceInternal::IncomingConnectionFactory::exception(const LocalException&) -{ - assert(false); // Must not be called. + setState(StateFinished); } string @@ -1514,6 +1496,18 @@ IceInternal::IncomingConnectionFactory::toString() const return _acceptor->toString(); } +NativeInfoPtr +IceInternal::IncomingConnectionFactory::getNativeInfo() +{ + if(_transceiver) + { + return _transceiver->getNativeInfo(); + } + + assert(_acceptor); + return _acceptor->getNativeInfo(); +} + void IceInternal::IncomingConnectionFactory::connectionStartCompleted(const Ice::ConnectionIPtr& connection) { @@ -1534,7 +1528,7 @@ IceInternal::IncomingConnectionFactory::connectionStartFailed(const Ice::Connect const Ice::LocalException& ex) { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - if(_state == StateClosed) + if(_state >= StateClosed) { return; } @@ -1567,7 +1561,7 @@ IceInternal::IncomingConnectionFactory::connectionStartFailed(const Ice::Connect IceInternal::IncomingConnectionFactory::IncomingConnectionFactory(const InstancePtr& instance, const EndpointIPtr& endpoint, const ObjectAdapterPtr& adapter) : - EventHandler(instance), + _instance(instance), _endpoint(endpoint), _adapter(adapter), _warn(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Connections") > 0), @@ -1590,8 +1584,6 @@ IceInternal::IncomingConnectionFactory::initialize(const string& adapterName) _endpoint->compress(_instance->defaultsAndOverrides()->overrideCompressValue); } - ObjectAdapterI* adapterImpl = dynamic_cast<ObjectAdapterI*>(_adapter.get()); - const_cast<TransceiverPtr&>(_transceiver) = _endpoint->transceiver(const_cast<EndpointIPtr&>(_endpoint)); if(_transceiver) { @@ -1623,23 +1615,14 @@ IceInternal::IncomingConnectionFactory::initialize(const string& adapterName) _acceptor = _endpoint->acceptor(const_cast<EndpointIPtr&>(_endpoint), adapterName); assert(_acceptor); _acceptor->listen(); - _fd = _acceptor->fd(); try { - adapterImpl->getThreadPool()->incFdsInUse(); + dynamic_cast<ObjectAdapterI*>(_adapter.get())->getThreadPool()->initialize(this); } - catch(const IceUtil::Exception&) + catch(const Ice::Exception&) { - try - { - _acceptor->close(); - _acceptor = 0; - } - catch(const LocalException&) - { - // Here we ignore any exceptions in close(). - } + _acceptor->close(); _acceptor = 0; throw; } @@ -1648,8 +1631,7 @@ IceInternal::IncomingConnectionFactory::initialize(const string& adapterName) IceInternal::IncomingConnectionFactory::~IncomingConnectionFactory() { - //assert(_state == StateClosed); - assert(!_acceptor); + //assert(_state == StateFinished); assert(_connections.empty()); } @@ -1671,7 +1653,7 @@ IceInternal::IncomingConnectionFactory::setState(State state) } if(_acceptor) { - dynamic_cast<ObjectAdapterI*>(_adapter.get())->getThreadPool()->_register(this); + dynamic_cast<ObjectAdapterI*>(_adapter.get())->getThreadPool()->_register(this, SocketOperationRead); } for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::activate)); break; @@ -1685,7 +1667,7 @@ IceInternal::IncomingConnectionFactory::setState(State state) } if(_acceptor) { - dynamic_cast<ObjectAdapterI*>(_adapter.get())->getThreadPool()->unregister(this); + dynamic_cast<ObjectAdapterI*>(_adapter.get())->getThreadPool()->unregister(this, SocketOperationRead); } for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::hold)); break; @@ -1697,6 +1679,24 @@ IceInternal::IncomingConnectionFactory::setState(State state) { dynamic_cast<ObjectAdapterI*>(_adapter.get())->getThreadPool()->finish(this); } + else + { + state = StateFinished; + } + +#ifdef ICE_USE_IOCP + // + // With IOCP, we close the acceptor now to cancel all the pending asynchronous + // operations. It's important to wait for the pending asynchronous operations + // to return before ConnectionI::finished(). Otherwise, if there was a pending + // message waiting to be sent, the connection wouldn't know whether or not the + // send failed or succeeded, potentially breaking at-most-once semantics. + // + if(_acceptor) + { + _acceptor->close(); + } +#endif #ifdef _STLP_BEGIN_NAMESPACE // voidbind2nd is an STLport extension for broken compilers in IceUtil/Functional.h @@ -1708,6 +1708,18 @@ IceInternal::IncomingConnectionFactory::setState(State state) #endif break; } + + case StateFinished: + { + assert(_state == StateClosed); +#ifndef ICE_USE_IOCP + if(_acceptor) + { + _acceptor->close(); + } +#endif + break; + } } _state = state; diff --git a/cpp/src/Ice/ConnectionFactory.h b/cpp/src/Ice/ConnectionFactory.h index 89ef6bc514b..417d8b30d43 100644 --- a/cpp/src/Ice/ConnectionFactory.h +++ b/cpp/src/Ice/ConnectionFactory.h @@ -172,13 +172,15 @@ public: // // Operations from EventHandler // - virtual bool datagram() const; - virtual bool readable() const; - virtual bool read(BasicStream&); - virtual void message(BasicStream&, const ThreadPoolPtr&); - virtual void finished(const ThreadPoolPtr&); - virtual void exception(const Ice::LocalException&); + +#ifdef ICE_USE_IOCP + virtual bool startAsync(SocketOperation); + virtual bool finishAsync(SocketOperation); +#endif + virtual void message(ThreadPoolCurrent&); + virtual void finished(ThreadPoolCurrent&); virtual std::string toString() const; + virtual NativeInfoPtr getNativeInfo(); virtual void connectionStartCompleted(const Ice::ConnectionIPtr&); virtual void connectionStartFailed(const Ice::ConnectionIPtr&, const Ice::LocalException&); @@ -194,11 +196,14 @@ private: { StateActive, StateHolding, - StateClosed + StateClosed, + StateFinished }; void setState(State); + const InstancePtr _instance; + AcceptorPtr _acceptor; const TransceiverPtr _transceiver; const EndpointIPtr _endpoint; diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp index 6fc70a46dd4..64137e7953c 100644 --- a/cpp/src/Ice/ConnectionI.cpp +++ b/cpp/src/Ice/ConnectionI.cpp @@ -16,7 +16,6 @@ #include <Ice/DefaultsAndOverrides.h> #include <Ice/Transceiver.h> #include <Ice/ThreadPool.h> -#include <Ice/SelectorThread.h> #include <Ice/ConnectionMonitor.h> #include <Ice/ObjectAdapterI.h> // For getThreadPool() and getServantManager(). #include <Ice/EndpointI.h> @@ -34,27 +33,26 @@ using namespace IceInternal; Ice::LocalObject* IceInternal::upCast(ConnectionI* p) { return p; } -namespace IceInternal +namespace { -class FlushSentCallbacks : public ThreadPoolWorkItem +class TimeoutCallback : public IceUtil::TimerTask { public: - FlushSentCallbacks(const Ice::ConnectionIPtr& connection) : _connection(connection) + TimeoutCallback(Ice::ConnectionI* connection) : _connection(connection) { } void - execute(const ThreadPoolPtr& threadPool) + runTimerTask() { - threadPool->promoteFollower(); - _connection->flushSentCallbacks(); + _connection->timedOut(); } - + private: - const Ice::ConnectionIPtr _connection; + Ice::ConnectionI* _connection; }; } @@ -146,34 +144,14 @@ Ice::ConnectionI::start(const StartCallbackPtr& callback) try { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - if(_state == StateClosed) // The connection might already be closed if the communicator was destroyed. + if(_state >= StateClosed) // The connection might already be closed if the communicator was destroyed. { assert(_exception.get()); _exception->ice_throw(); } - SocketStatus status = initialize(); - if(status == Finished) - { - status = validate(); - } - - if(status != Finished) + if(!initialize() || !validate()) { - int timeout; - DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides(); - if(defaultsAndOverrides->overrideConnectTimeout) - { - timeout = defaultsAndOverrides->overrideConnectTimeoutValue; - } - else - { - timeout = _endpoint->timeout(); - } - - _sendInProgress = true; - _selectorThread->_register(_transceiver->fd(), this, status, timeout); - if(callback) { _startCallback = callback; @@ -194,6 +172,11 @@ Ice::ConnectionI::start(const StartCallbackPtr& callback) _exception->ice_throw(); } } + + // + // We start out in holding state. + // + setState(StateHolding); } catch(const Ice::LocalException& ex) { @@ -321,12 +304,12 @@ Ice::ConnectionI::isFinished() const return false; } - if(_transceiver || _dispatchCount != 0) + if(_state != StateFinished || _dispatchCount != 0) { return false; } - assert(_state == StateClosed); + assert(_state == StateFinished); return true; } @@ -374,9 +357,9 @@ Ice::ConnectionI::waitUntilFinished() // Now we must wait until close() has been called on the // transceiver. // - while(_transceiver) + while(_state != StateFinished) { - if(_state != StateClosed && _endpoint->timeout() >= 0) + if(_state < StateClosed && _endpoint->timeout() >= 0) { IceUtil::Time timeout = IceUtil::Time::milliSeconds(_endpoint->timeout()); IceUtil::Time waitTime = _stateTime + timeout - IceUtil::Time::now(IceUtil::Time::Monotonic); @@ -412,7 +395,7 @@ Ice::ConnectionI::waitUntilFinished() } } - assert(_state == StateClosed); + assert(_state == StateFinished); // // Clear the OA. See bug 1673 for the details of why this is necessary. @@ -438,9 +421,8 @@ Ice::ConnectionI::monitor(const IceUtil::Time& now) // Active connection management for idle connections. // if(_acmTimeout <= 0 || - !_requests.empty() || !_asyncRequests.empty() || - _batchStreamInUse || !_batchStream.b.empty() || - _sendInProgress || _dispatchCount > 0) + !_requests.empty() || !_asyncRequests.empty() || _dispatchCount > 0 || + static_cast<Int>(_readStream.b.size()) > headerSize || !_writeStream.b.empty() || !_batchStream.b.empty()) { return; } @@ -925,7 +907,7 @@ Ice::ConnectionI::sendResponse(BasicStream* os, Byte compressFlag) notifyAll(); } - if(_state == StateClosed) + if(_state >= StateClosed) { assert(_exception.get()); _exception->ice_throw(); @@ -938,12 +920,6 @@ Ice::ConnectionI::sendResponse(BasicStream* os, Byte compressFlag) { initiateShutdown(); } - - if(_acmTimeout > 0) - { - _acmAbsoluteTimeout = IceUtil::Time::now(IceUtil::Time::Monotonic) + - IceUtil::Time::seconds(_acmTimeout); - } } catch(const LocalException& ex) { @@ -964,7 +940,7 @@ Ice::ConnectionI::sendNoResponse() notifyAll(); } - if(_state == StateClosed) + if(_state >= StateClosed) { assert(_exception.get()); _exception->ice_throw(); @@ -974,12 +950,6 @@ Ice::ConnectionI::sendNoResponse() { initiateShutdown(); } - - if(_acmTimeout > 0) - { - _acmAbsoluteTimeout = IceUtil::Time::now(IceUtil::Time::Monotonic) + - IceUtil::Time::seconds(_acmTimeout); - } } catch(const LocalException& ex) { @@ -1042,33 +1012,62 @@ Ice::ConnectionI::createProxy(const Identity& ident) const return _instance->proxyFactory()->referenceToProxy(_instance->referenceFactory()->create(ident, self)); } +#ifdef ICE_USE_IOCP bool -Ice::ConnectionI::datagram() const +Ice::ConnectionI::startAsync(SocketOperation operation) { - return _endpoint->datagram(); // No mutex protection necessary, _endpoint is immutable. -} + if(_state >= StateClosed) + { + return false; + } -bool -Ice::ConnectionI::readable() const -{ + try + { + if(operation & SocketOperationWrite) + { + _transceiver->startWrite(_writeStream); + } + else if(operation & SocketOperationRead) + { + _transceiver->startRead(_readStream); + } + } + catch(const Ice::LocalException& ex) + { + setState(StateClosed, ex); + return false; + } return true; } bool -Ice::ConnectionI::read(BasicStream& stream) +Ice::ConnectionI::finishAsync(SocketOperation operation) { - return _transceiver->read(stream); + try + { + if(operation & SocketOperationWrite) + { + _transceiver->finishWrite(_writeStream); + } + else if(operation & SocketOperationRead) + { + _transceiver->finishRead(_readStream); + } - // - // Updating _acmAbsoluteTimeout is too expensive here, because we - // would have to acquire a lock just for this purpose. Instead, we - // update _acmAbsoluteTimeout in message(). - // + } + catch(const Ice::LocalException& ex) + { + setState(StateClosed, ex); + } + return _state < StateClosed; } +#endif void -Ice::ConnectionI::message(BasicStream& stream, const ThreadPoolPtr& threadPool) +Ice::ConnectionI::message(ThreadPoolCurrent& current) { + StartCallbackPtr startCB; + vector<OutgoingAsyncMessageCallbackPtr> sentCBs; Byte compress = 0; Int requestId = 0; Int invokeNum = 0; @@ -1076,29 +1075,225 @@ Ice::ConnectionI::message(BasicStream& stream, const ThreadPoolPtr& threadPool) ObjectAdapterPtr adapter; OutgoingAsyncPtr outAsync; + ThreadPoolMessage<ConnectionI> msg(current, *this); + { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - // - // We must promote within the synchronization, otherwise there - // could be various race conditions with close connection - // messages and other messages. - // - threadPool->promoteFollower(this); + ThreadPoolMessage<ConnectionI>::IOScope io(msg); + if(!io) + { + return; + } - if(_state != StateClosed) + if(_state >= StateClosed) { - parseMessage(stream, invokeNum, requestId, compress, servantManager, adapter, outAsync); + return; } - // - // parseMessage() can close the connection, so we must check - // for closed state again. - // - if(_state == StateClosed) + try + { + unscheduleTimeout(current.operation); + if(current.operation & SocketOperationWrite && !_writeStream.b.empty()) + { + if(_writeStream.i != _writeStream.b.end() && !_transceiver->write(_writeStream)) + { + assert(!_writeStream.b.empty()); + scheduleTimeout(SocketOperationWrite, _endpoint->timeout()); + return; + } + assert(_writeStream.i == _writeStream.b.end()); + } + if(current.operation & SocketOperationRead && !_readStream.b.empty()) + { + if(static_cast<Int>(_readStream.b.size()) == headerSize) // Read header. + { + if(_readStream.i != _readStream.b.end() && !_transceiver->read(_readStream)) + { + return; + } + assert(_readStream.i == _readStream.b.end()); + + ptrdiff_t pos = _readStream.i - _readStream.b.begin(); + if(pos < headerSize) + { + // + // This situation is possible for small UDP packets. + // + throw IllegalMessageSizeException(__FILE__, __LINE__); + } + + _readStream.i = _readStream.b.begin(); + const Byte* m; + _readStream.readBlob(m, static_cast<Int>(sizeof(magic))); + if(m[0] != magic[0] || m[1] != magic[1] || m[2] != magic[2] || m[3] != magic[3]) + { + BadMagicException ex(__FILE__, __LINE__); + ex.badMagic = Ice::ByteSeq(&m[0], &m[0] + sizeof(magic)); + throw ex; + } + Byte pMajor; + Byte pMinor; + _readStream.read(pMajor); + _readStream.read(pMinor); + if(pMajor != protocolMajor + || static_cast<unsigned char>(pMinor) > static_cast<unsigned char>(protocolMinor)) + { + UnsupportedProtocolException ex(__FILE__, __LINE__); + ex.badMajor = static_cast<unsigned char>(pMajor); + ex.badMinor = static_cast<unsigned char>(pMinor); + ex.major = static_cast<unsigned char>(protocolMajor); + ex.minor = static_cast<unsigned char>(protocolMinor); + throw ex; + } + Byte eMajor; + Byte eMinor; + _readStream.read(eMajor); + _readStream.read(eMinor); + if(eMajor != encodingMajor + || static_cast<unsigned char>(eMinor) > static_cast<unsigned char>(encodingMinor)) + { + UnsupportedEncodingException ex(__FILE__, __LINE__); + ex.badMajor = static_cast<unsigned char>(eMajor); + ex.badMinor = static_cast<unsigned char>(eMinor); + ex.major = static_cast<unsigned char>(encodingMajor); + ex.minor = static_cast<unsigned char>(encodingMinor); + throw ex; + } + Byte messageType; + _readStream.read(messageType); + Byte compress; + _readStream.read(compress); + Int size; + _readStream.read(size); + if(size < headerSize) + { + throw IllegalMessageSizeException(__FILE__, __LINE__); + } + if(size > static_cast<Int>(_instance->messageSizeMax())) + { + throw MemoryLimitException(__FILE__, __LINE__); + } + if(size > static_cast<Int>(_readStream.b.size())) + { + _readStream.b.resize(size); + } + _readStream.i = _readStream.b.begin() + pos; + } + + if(_readStream.i != _readStream.b.end()) + { + if(_endpoint->datagram()) + { + if(_warnUdp) + { + Warning out(_instance->initializationData().logger); + out << "DatagramLimitException: maximum size of " << _readStream.i - _readStream.b.begin() + << " exceeded"; + } + throw DatagramLimitException(__FILE__, __LINE__); + } + else + { + if(!_transceiver->read(_readStream)) + { + assert(!_readStream.b.empty()); + scheduleTimeout(SocketOperationRead, _endpoint->timeout()); + return; + } + assert(_readStream.i == _readStream.b.end()); + } + } + } + + if(_state <= StateNotValidated) + { + if(_state == StateNotInitialized && !initialize(current.operation)) + { + return; + } + + if(_state <= StateNotValidated && !validate(current.operation)) + { + return; + } + + _threadPool->unregister(this, current.operation); + + // + // We start out in holding state. + // + setState(StateHolding); + swap(_startCallback, startCB); + } + else + { + assert(_state <= StateClosing); + + if(current.operation & SocketOperationWrite) + { + sendNextMessage(sentCBs); + } + + if(current.operation & SocketOperationRead) + { + parseMessage(current.stream, invokeNum, requestId, compress, servantManager, adapter, outAsync); + } + } + } + catch(const DatagramLimitException&) // Expected. { + _readStream.resize(headerSize); + _readStream.i = _readStream.b.begin(); return; } + catch(const SocketException& ex) + { + setState(StateClosed, ex); + return; + } + catch(const LocalException& ex) + { + if(_endpoint->datagram()) + { + if(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Connections") > 0) + { + Warning out(_instance->initializationData().logger); + out << "datagram connection exception:\n" << ex << '\n' << _desc; + } + _readStream.resize(headerSize); + _readStream.i = _readStream.b.begin(); + } + else + { + setState(StateClosed, ex); + } + return; + } + + if(_acmTimeout > 0) + { + _acmAbsoluteTimeout = IceUtil::Time::now(IceUtil::Time::Monotonic) + IceUtil::Time::seconds(_acmTimeout); + } + + io.completed(); + } + + // + // Notify the factory that the connection establishment and + // validation has completed. + // + if(startCB) + { + startCB->connectionStartCompleted(this); + } + + // + // Notify AMI calls that the message was sent. + // + for(vector<OutgoingAsyncMessageCallbackPtr>::const_iterator p = sentCBs.begin(); p != sentCBs.end(); ++p) + { + (*p)->__sentCallback(_instance); } // @@ -1107,7 +1302,7 @@ Ice::ConnectionI::message(BasicStream& stream, const ThreadPoolPtr& threadPool) // if(outAsync) { - outAsync->__finished(stream); + outAsync->__finished(current.stream); } // @@ -1115,22 +1310,29 @@ Ice::ConnectionI::message(BasicStream& stream, const ThreadPoolPtr& threadPool) // must be done outside the thread synchronization, so that nested // calls are possible. // - invokeAll(stream, invokeNum, requestId, compress, servantManager, adapter); + if(invokeNum) + { + invokeAll(current.stream, invokeNum, requestId, compress, servantManager, adapter); + } } void -Ice::ConnectionI::finished(const ThreadPoolPtr& threadPool) +Ice::ConnectionI::finished(ThreadPoolCurrent& current) { { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - assert(threadPool.get() == _threadPool.get() && _state == StateClosed && !_sendInProgress); - - threadPool->promoteFollower(); - - _threadPool->decFdsInUse(); - _selectorThread->decFdsInUse(); + assert(_state == StateClosed); + unscheduleTimeout(static_cast<SocketOperation>(SocketOperationRead | SocketOperationWrite)); + } - _flushSentCallbacks = 0; // Clear cyclic reference count. + // + // If there are no callbacks to call, we don't call ioCompleted() since we're not going + // to call code that will potentially block (this avoids promoting a new leader and + // unecessary thread creation, especially if this is called on shutdown). + // + if(_startCallback || !_sendStreams.empty() || !_asyncRequests.empty()) + { + current.ioCompleted(); } if(_startCallback) @@ -1139,19 +1341,43 @@ Ice::ConnectionI::finished(const ThreadPoolPtr& threadPool) _startCallback = 0; } - for(deque<OutgoingMessage>::iterator o = _sendStreams.begin(); o != _sendStreams.end(); ++o) + if(!_sendStreams.empty()) { - o->finished(*_exception.get()); + assert(!_writeStream.b.empty()); + +#ifdef ICE_USE_IOCP + // + // The current message might be sent but not yet removed from _sendStreams if the + // connection was closed shortly after. We check if that's the case here and mark + // the message as sent if necessary. + // + OutgoingMessage* message = &_sendStreams.front(); + _writeStream.swap(*message->stream); + if(message->stream->i == message->stream->b.end()) + { + message->sent(this, true); + if(dynamic_cast<Ice::AMISentCallback*>(message->outAsync.get())) + { + message->outAsync->__sentCallback(_instance); + } + _sendStreams.pop_front(); + } +#endif + + for(deque<OutgoingMessage>::iterator o = _sendStreams.begin(); o != _sendStreams.end(); ++o) + { + o->finished(*_exception.get()); + } + _sendStreams.clear(); // Must be cleared before _requests because of Outgoing* references in OutgoingMessage } - _sendStreams.clear(); // Must be cleared before _requests because of Outgoing* references in OutgoingMessage - for(map<Int, Outgoing*>::iterator p = _requests.begin(); p != _requests.end(); ++p) + for(map<Int, Outgoing*>::const_iterator p = _requests.begin(); p != _requests.end(); ++p) { p->second->finished(*_exception.get()); } _requests.clear(); - for(map<Int, OutgoingAsyncPtr>::iterator q = _asyncRequests.begin(); q != _asyncRequests.end(); ++q) + for(map<Int, OutgoingAsyncPtr>::const_iterator q = _asyncRequests.begin(); q != _asyncRequests.end(); ++q) { q->second->__finished(*_exception.get()); } @@ -1163,48 +1389,33 @@ Ice::ConnectionI::finished(const ThreadPoolPtr& threadPool) // { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - try - { - _transceiver->close(); - _transceiver = 0; - notifyAll(); - } - catch(const Ice::LocalException&) - { - _transceiver = 0; - notifyAll(); - throw; - } + setState(StateFinished); } } -void -Ice::ConnectionI::exception(const LocalException& ex) +string +Ice::ConnectionI::toString() const { - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - setState(StateClosed, ex); + return _desc; // No mutex lock, _desc is immutable. } -void -Ice::ConnectionI::invokeException(const LocalException& ex, int invokeNum) +NativeInfoPtr +Ice::ConnectionI::getNativeInfo() { - // - // Fatal exception while invoking a request. Since sendResponse/sendNoResponse isn't - // called in case of a fatal exception we decrement _dispatchCount here. - // + return _transceiver->getNativeInfo(); +} +void +Ice::ConnectionI::timedOut() +{ IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - setState(StateClosed, ex); - - if(invokeNum > 0) + if(_state <= StateNotValidated) { - assert(_dispatchCount > 0); - _dispatchCount -= invokeNum; - assert(_dispatchCount >= 0); - if(_dispatchCount == 0) - { - notifyAll(); - } + setState(StateClosed, ConnectTimeoutException(__FILE__, __LINE__)); + } + else if(_state <= StateClosing) + { + setState(StateClosed, TimeoutException(__FILE__, __LINE__)); } } @@ -1220,137 +1431,67 @@ Ice::ConnectionI::timeout() const return _endpoint->timeout(); // No mutex lock, _endpoint is immutable. } -string -Ice::ConnectionI::toString() const -{ - return _desc; // No mutex lock, _desc is immutable. -} - // -// Operations from SocketReadyCallback +// Only used by the SSL plug-in. +// +// The external party has to synchronize the connection, since the +// connection is the object that protects the transceiver. // -SocketStatus -Ice::ConnectionI::socketReady() +IceInternal::TransceiverPtr +Ice::ConnectionI::getTransceiver() const { - StartCallbackPtr callback; - - { - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - assert(_sendInProgress); - - if(_state == StateClosed) - { - return Finished; - } - - try - { - // - // First, we check if there's something to send. If that's the case, the connection - // must be active and the only thing to do is send the queued streams. - // - if(!_sendStreams.empty()) - { - if(!send()) - { - return NeedWrite; - } - assert(_sendStreams.empty()); - } - else - { - assert(_state == StateClosed || _state <= StateNotValidated); - if(_state == StateNotInitialized) - { - SocketStatus status = initialize(); - if(status != Finished) - { - return status; - } - } - - if(_state <= StateNotValidated) - { - SocketStatus status = validate(); - if(status != Finished) - { - return status; - } - } - - swap(_startCallback, callback); - } - } - catch(const Ice::LocalException& ex) - { - setState(StateClosed, ex); - return Finished; - } - - assert(_sendStreams.empty()); - _selectorThread->unregister(this); - _sendInProgress = false; - if(_acmTimeout > 0) - { - _acmAbsoluteTimeout = IceUtil::Time::now(IceUtil::Time::Monotonic) + IceUtil::Time::seconds(_acmTimeout); - } - } - - if(callback) - { - callback->connectionStartCompleted(this); - } - return Finished; + return _transceiver; } void -Ice::ConnectionI::socketFinished() +Ice::ConnectionI::exception(const LocalException& ex) { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - assert(_sendInProgress && _state == StateClosed); - _sendInProgress = false; - _threadPool->finish(this); + setState(StateClosed, ex); } void -Ice::ConnectionI::socketTimeout() +Ice::ConnectionI::invokeException(const LocalException& ex, int invokeNum) { + // + // Fatal exception while invoking a request. Since sendResponse/sendNoResponse isn't + // called in case of a fatal exception we decrement _dispatchCount here. + // + IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - if(_state <= StateNotValidated) - { - setState(StateClosed, ConnectTimeoutException(__FILE__, __LINE__)); - } - else if(_state <= StateClosing) + setState(StateClosed, ex); + + if(invokeNum > 0) { - setState(StateClosed, TimeoutException(__FILE__, __LINE__)); + assert(_dispatchCount > 0); + _dispatchCount -= invokeNum; + assert(_dispatchCount >= 0); + if(_dispatchCount == 0) + { + notifyAll(); + } } } -// -// Only used by the SSL plug-in. -// -// The external party has to synchronize the connection, since the -// connection is the object that protects the transceiver. -// -IceInternal::TransceiverPtr -Ice::ConnectionI::getTransceiver() const -{ - return _transceiver; -} - Ice::ConnectionI::ConnectionI(const InstancePtr& instance, const TransceiverPtr& transceiver, const EndpointIPtr& endpoint, const ObjectAdapterPtr& adapter) : - EventHandler(instance, transceiver->fd()), _transceiver(transceiver), + _instance(instance), _desc(transceiver->toString()), _type(transceiver->type()), _endpoint(endpoint), _adapter(adapter), _logger(_instance->initializationData().logger), // Cached for better performance. _traceLevels(_instance->traceLevels()), // Cached for better performance. + _timer(_instance->timer()), // Cached for better performance. + _writeTimeout(new TimeoutCallback(this)), + _writeTimeoutScheduled(false), + _readTimeout(new TimeoutCallback(this)), + _readTimeoutScheduled(false), _warn(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Connections") > 0), + _warnUdp(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Datagrams") > 0), _acmTimeout(0), _compressionLevel(1), _nextRequestId(1), @@ -1363,7 +1504,8 @@ Ice::ConnectionI::ConnectionI(const InstancePtr& instance, _batchRequestNum(0), _batchRequestCompress(false), _batchMarker(0), - _sendInProgress(false), + _readStream(_instance.get()), + _writeStream(_instance.get()), _dispatchCount(0), _state(StateNotInitialized), _stateTime(IceUtil::Time::now(IceUtil::Time::Monotonic)) @@ -1414,12 +1556,7 @@ Ice::ConnectionI::ConnectionI(const InstancePtr& instance, { const_cast<ThreadPoolPtr&>(_threadPool) = _instance->clientThreadPool(); } - _threadPool->incFdsInUse(); - - const_cast<SelectorThreadPtr&>(_selectorThread) = _instance->selectorThread(); - _selectorThread->incFdsInUse(); - - _flushSentCallbacks = new FlushSentCallbacks(this); + _threadPool->initialize(this); } catch(const IceUtil::Exception&) { @@ -1432,9 +1569,9 @@ Ice::ConnectionI::ConnectionI(const InstancePtr& instance, Ice::ConnectionI::~ConnectionI() { assert(!_startCallback); - assert(_state == StateClosed); - assert(!_transceiver); + assert(_state == StateFinished); assert(_dispatchCount == 0); + assert(_sendStreams.empty()); assert(_requests.empty()); assert(_asyncRequests.empty()); } @@ -1446,7 +1583,7 @@ Ice::ConnectionI::setState(State state, const LocalException& ex) // If setState() is called with an exception, then only closed and // closing states are permissible. // - assert(state == StateClosing || state == StateClosed); + assert(state >= StateClosing); if(_state == state) // Don't switch twice. { @@ -1522,85 +1659,103 @@ Ice::ConnectionI::setState(State state) return; } - switch(state) - { - case StateNotInitialized: - { - assert(false); - break; - } - - case StateNotValidated: + try { - if(_state != StateNotInitialized) + switch(state) { - assert(_state == StateClosed); - return; + case StateNotInitialized: + { + assert(false); + break; } - break; - } - case StateActive: - { - // - // Can only switch from holding or not validated to - // active. - // - if(_state != StateHolding && _state != StateNotValidated) + case StateNotValidated: { - return; + if(_state != StateNotInitialized) + { + assert(_state == StateClosed); + return; + } + break; } - _threadPool->_register(this); - break; - } - case StateHolding: - { - // - // Can only switch from active or not validated to - // holding. - // - if(_state != StateActive && _state != StateNotValidated) + case StateActive: { - return; + // + // Can only switch from holding or not validated to + // active. + // + if(_state != StateHolding && _state != StateNotValidated) + { + return; + } + _threadPool->_register(this, SocketOperationRead); + break; } - _threadPool->unregister(this); - break; - } - case StateClosing: - { - // - // Can't change back from closed. - // - if(_state == StateClosed) + case StateHolding: { - return; + // + // Can only switch from active or not validated to + // holding. + // + if(_state != StateActive && _state != StateNotValidated) + { + return; + } + if(_state == StateActive) + { + _threadPool->unregister(this, SocketOperationRead); + } + break; } - _threadPool->_register(this); // We need to continue to read in closing state. - break; - } - case StateClosed: - { - if(_sendInProgress) + case StateClosing: { // - // Unregister with both the pool and the selector thread. We unregister with - // the pool to ensure that it stops reading on the socket (otherwise, if the - // socket is closed the thread pool would spin always reading 0 from the FD). - // The selector thread will register again the FD with the pool once it's - // done. + // Can't change back from closed. // - _selectorThread->finish(this); - _threadPool->unregister(this); + if(_state >= StateClosed) + { + return; + } + if(_state == StateHolding) + { + _threadPool->_register(this, SocketOperationRead); // We need to continue to read in closing state. + } + break; } - else + + case StateClosed: { + if(_state == StateFinished) + { + return; + } _threadPool->finish(this); +#ifdef ICE_USE_IOCP + _transceiver->close(); +#endif + break; + } + + case StateFinished: + { + assert(_state == StateClosed); +#ifndef ICE_USE_IOCP + _transceiver->close(); +#endif + break; + } } - break; } + catch(const Ice::LocalException& ex) + { + Error out(_logger); + out << "unexpected connection exception:\n" << ex << '\n' << _desc; +#ifdef __GNUC__ + out << "\n" << ex.ice_stackTrace(); +#endif } // @@ -1661,7 +1816,7 @@ Ice::ConnectionI::initiateShutdown() os.write(encodingMajor); os.write(encodingMinor); os.write(closeConnectionMsg); - os.write((Byte)1); // Compression status: compression supported but not used. + os.write((Byte)1); // compression status: compression supported but not used. os.write(headerSize); // Message size. OutgoingMessage message(&os, false); @@ -1679,13 +1834,15 @@ Ice::ConnectionI::initiateShutdown() } } -SocketStatus -Ice::ConnectionI::initialize() +bool +Ice::ConnectionI::initialize(SocketOperation operation) { - SocketStatus status = _transceiver->initialize(); - if(status != Finished) + SocketOperation s = _transceiver->initialize(); + if(s != SocketOperationNone) { - return status; + scheduleTimeout(s, connectTimeout()); + _threadPool->update(this, operation, s); + return false; } // @@ -1693,60 +1850,62 @@ Ice::ConnectionI::initialize() // const_cast<string&>(_desc) = _transceiver->toString(); setState(StateNotValidated); - return Finished; + return true; } -SocketStatus -Ice::ConnectionI::validate() +bool +Ice::ConnectionI::validate(SocketOperation operation) { if(!_endpoint->datagram()) // Datagram connections are always implicitly validated. { if(_adapter) // The server side has the active role for connection validation. { - BasicStream& os = _stream; - if(os.b.empty()) + if(_writeStream.b.empty()) { - os.write(magic[0]); - os.write(magic[1]); - os.write(magic[2]); - os.write(magic[3]); - os.write(protocolMajor); - os.write(protocolMinor); - os.write(encodingMajor); - os.write(encodingMinor); - os.write(validateConnectionMsg); - os.write(static_cast<Byte>(0)); // Compression status (always zero for validate connection). - os.write(headerSize); // Message size. - os.i = os.b.begin(); - traceSend(os, _logger, _traceLevels); + _writeStream.write(magic[0]); + _writeStream.write(magic[1]); + _writeStream.write(magic[2]); + _writeStream.write(magic[3]); + _writeStream.write(protocolMajor); + _writeStream.write(protocolMinor); + _writeStream.write(encodingMajor); + _writeStream.write(encodingMinor); + _writeStream.write(validateConnectionMsg); + _writeStream.write(static_cast<Byte>(0)); // Compression status (always zero for validate connection). + _writeStream.write(headerSize); // Message size. + _writeStream.i = _writeStream.b.begin(); + traceSend(_writeStream, _logger, _traceLevels); } - if(!_transceiver->write(os)) + if(_writeStream.i != _writeStream.b.end() && !_transceiver->write(_writeStream)) { - return NeedWrite; + scheduleTimeout(SocketOperationWrite, connectTimeout()); + _threadPool->update(this, operation, SocketOperationWrite); + return false; } } else // The client side has the passive role for connection validation. { - BasicStream& is = _stream; - if(is.b.empty()) + if(_readStream.b.empty()) { - is.b.resize(headerSize); - is.i = is.b.begin(); + _readStream.b.resize(headerSize); + _readStream.i = _readStream.b.begin(); } - if(!_transceiver->read(is)) + if(_readStream.i != _readStream.b.end() && !_transceiver->read(_readStream)) { - return NeedRead; + scheduleTimeout(SocketOperationRead, connectTimeout()); + _threadPool->update(this, operation, SocketOperationRead); + return false; } - assert(is.i == is.b.end()); - is.i = is.b.begin(); + assert(_readStream.i == _readStream.b.end()); + _readStream.i = _readStream.b.begin(); Byte m[4]; - is.read(m[0]); - is.read(m[1]); - is.read(m[2]); - is.read(m[3]); + _readStream.read(m[0]); + _readStream.read(m[1]); + _readStream.read(m[2]); + _readStream.read(m[3]); if(m[0] != magic[0] || m[1] != magic[1] || m[2] != magic[2] || m[3] != magic[3]) { BadMagicException ex(__FILE__, __LINE__); @@ -1755,8 +1914,8 @@ Ice::ConnectionI::validate() } Byte pMajor; Byte pMinor; - is.read(pMajor); - is.read(pMinor); + _readStream.read(pMajor); + _readStream.read(pMinor); if(pMajor != protocolMajor) { UnsupportedProtocolException ex(__FILE__, __LINE__); @@ -1768,8 +1927,8 @@ Ice::ConnectionI::validate() } Byte eMajor; Byte eMinor; - is.read(eMajor); - is.read(eMinor); + _readStream.read(eMajor); + _readStream.read(eMinor); if(eMajor != encodingMajor) { UnsupportedEncodingException ex(__FILE__, __LINE__); @@ -1780,181 +1939,159 @@ Ice::ConnectionI::validate() throw ex; } Byte messageType; - is.read(messageType); + _readStream.read(messageType); if(messageType != validateConnectionMsg) { throw ConnectionNotValidatedException(__FILE__, __LINE__); } Byte compress; - is.read(compress); // Ignore compression status for validate connection. + _readStream.read(compress); // Ignore compression status for validate connection. Int size; - is.read(size); + _readStream.read(size); if(size != headerSize) { throw IllegalMessageSizeException(__FILE__, __LINE__); } - traceRecv(is, _logger, _traceLevels); + traceRecv(_readStream, _logger, _traceLevels); } } - _stream.resize(0); - _stream.i = _stream.b.begin(); + _writeStream.resize(0); + _writeStream.i = _writeStream.b.begin(); - // - // We start out in holding state. - // - setState(StateHolding); - return Finished; + _readStream.resize(headerSize); + _readStream.i = _readStream.b.begin(); + + return true; } -bool -Ice::ConnectionI::send() +void +Ice::ConnectionI::sendNextMessage(vector<OutgoingAsyncMessageCallbackPtr>& callbacks) { - assert(_transceiver); - assert(!_sendStreams.empty()); - - bool flushSentCallbacks = _sentCallbacks.empty(); + assert(!_sendStreams.empty()); + assert(!_writeStream.b.empty() && _writeStream.i == _writeStream.b.end()); try { - while(!_sendStreams.empty()) - { + while(true) + { + // + // Notify the message that it was sent. + // OutgoingMessage* message = &_sendStreams.front(); + _writeStream.swap(*message->stream); + message->sent(this, true); + if(dynamic_cast<Ice::AMISentCallback*>(message->outAsync.get())) + { + callbacks.push_back(message->outAsync); + } + _sendStreams.pop_front(); // - // Prepare the message stream for writing if necessary. + // If there's nothing left to send, we're done. // - if(!message->stream->i) + if(_sendStreams.empty()) { - message->stream->i = message->stream->b.begin(); - if(message->compress && message->stream->b.size() >= 100) // Only compress messages > 100 bytes. - { - // - // Message compressed. Request compressed response, if any. - // - message->stream->b[9] = 2; + break; + } - // - // Do compression. - // - BasicStream stream(_instance.get()); - doCompress(*message->stream, stream); + // + // Otherwise, prepare the next message stream for writing. + // + message = &_sendStreams.front(); + assert(!message->stream->i); + if(message->compress && message->stream->b.size() >= 100) // Only compress messages > 100 bytes. + { + // + // Message compressed. Request compressed response, if any. + // + message->stream->b[9] = 2; - if(message->outAsync) - { - trace("sending asynchronous request", *message->stream, _logger, _traceLevels); - } - else - { - traceSend(*message->stream, _logger, _traceLevels); - } + // + // Do compression. + // + BasicStream stream(_instance.get()); + doCompress(*message->stream, stream); - message->adopt(&stream); // Adopt the compressed stream. - message->stream->i = message->stream->b.begin(); + if(message->outAsync) + { + trace("sending asynchronous request", *message->stream, _logger, _traceLevels); } else { - if(message->compress) - { - // - // Message not compressed. Request compressed response, if any. - // - message->stream->b[9] = 1; - } + traceSend(*message->stream, _logger, _traceLevels); + } + message->adopt(&stream); // Adopt the compressed stream. + message->stream->i = message->stream->b.begin(); + } + else + { + if(message->compress) + { // - // No compression, just fill in the message size. + // Message not compressed. Request compressed response, if any. // - Int sz = static_cast<Int>(message->stream->b.size()); - const Byte* p = reinterpret_cast<const Byte*>(&sz); + message->stream->b[9] = 1; + } + + // + // No compression, just fill in the message size. + // + Int sz = static_cast<Int>(message->stream->b.size()); + const Byte* p = reinterpret_cast<const Byte*>(&sz); #ifdef ICE_BIG_ENDIAN - reverse_copy(p, p + sizeof(Int), message->stream->b.begin() + 10); + reverse_copy(p, p + sizeof(Int), message->stream->b.begin() + 10); #else - copy(p, p + sizeof(Int), message->stream->b.begin() + 10); + copy(p, p + sizeof(Int), message->stream->b.begin() + 10); #endif - message->stream->i = message->stream->b.begin(); - - if(message->outAsync) - { - trace("sending asynchronous request", *message->stream, _logger, _traceLevels); - } - else - { - traceSend(*message->stream, _logger, _traceLevels); - } + message->stream->i = message->stream->b.begin(); + if(message->outAsync) + { + trace("sending asynchronous request", *message->stream, _logger, _traceLevels); } - } - - // - // Send the first message. - // - assert(message->stream->i); - if(!_transceiver->write(*message->stream)) - { - if(flushSentCallbacks && !_sentCallbacks.empty()) + else { - _threadPool->execute(_flushSentCallbacks); + traceSend(*message->stream, _logger, _traceLevels); } - return false; } + _writeStream.swap(*message->stream); // - // Notify the message that it was sent. + // Send the message. // - message->sent(this, true); - if(dynamic_cast<Ice::AMISentCallback*>(message->outAsync.get())) + assert(_writeStream.i); + if(_writeStream.i != _writeStream.b.end() && !_transceiver->write(_writeStream)) { - _sentCallbacks.push_back(message->outAsync); + assert(!_writeStream.b.empty()); + scheduleTimeout(SocketOperationWrite, _endpoint->timeout()); + return; } - _sendStreams.pop_front(); } } - catch(const Ice::LocalException&) - { - if(flushSentCallbacks && !_sentCallbacks.empty()) - { - _threadPool->execute(_flushSentCallbacks); - } - throw; - } - - if(flushSentCallbacks && !_sentCallbacks.empty()) + catch(const Ice::LocalException& ex) { - _threadPool->execute(_flushSentCallbacks); + setState(StateClosed, ex); + return; } - return true; -} -void -Ice::ConnectionI::flushSentCallbacks() -{ - vector<OutgoingAsyncMessageCallbackPtr> callbacks; - { - Lock sync(*this); - assert(!_sentCallbacks.empty()); - _sentCallbacks.swap(callbacks); - } - for(vector<OutgoingAsyncMessageCallbackPtr>::const_iterator p = callbacks.begin(); p != callbacks.end(); ++p) - { - (*p)->__sentCallback(_instance); - } + assert(_writeStream.b.empty()); + _threadPool->unregister(this, SocketOperationWrite); } bool Ice::ConnectionI::sendMessage(OutgoingMessage& message) { - assert(_state != StateClosed); + assert(_state < StateClosed); message.stream->i = 0; // Reset the message stream iterator before starting sending the message. - if(_sendInProgress) + if(!_sendStreams.empty()) { _sendStreams.push_back(message); _sendStreams.back().adopt(0); return false; } - assert(!_sendInProgress); - // // Attempt to send the message without blocking. If the send blocks, we register // the connection with the selector thread. @@ -2051,8 +2188,9 @@ Ice::ConnectionI::sendMessage(OutgoingMessage& message) _sendStreams.back().adopt(0); // Adopt the stream. } - _sendInProgress = true; - _selectorThread->_register(_transceiver->fd(), this, NeedWrite, _endpoint->timeout()); + _writeStream.swap(*_sendStreams.back().stream); + scheduleTimeout(SocketOperationWrite, _endpoint->timeout()); + _threadPool->_register(this, SocketOperationWrite); return false; } @@ -2208,10 +2346,11 @@ Ice::ConnectionI::parseMessage(BasicStream& stream, Int& invokeNum, Int& request { assert(_state > StateNotValidated && _state < StateClosed); - if(_acmTimeout > 0) - { - _acmAbsoluteTimeout = IceUtil::Time::now(IceUtil::Time::Monotonic) + IceUtil::Time::seconds(_acmTimeout); - } + _readStream.swap(stream); + _readStream.resize(headerSize); + _readStream.i = _readStream.b.begin(); + + assert(stream.i == stream.b.end()); try { @@ -2461,3 +2600,16 @@ Ice::ConnectionI::invokeAll(BasicStream& stream, Int invokeNum, Int requestId, B } } +int +Ice::ConnectionI::connectTimeout() +{ + DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides(); + if(defaultsAndOverrides->overrideConnectTimeout) + { + return defaultsAndOverrides->overrideConnectTimeoutValue; + } + else + { + return _endpoint->timeout(); + } +} diff --git a/cpp/src/Ice/ConnectionI.h b/cpp/src/Ice/ConnectionI.h index 04fe3f100df..fb068c6352b 100644 --- a/cpp/src/Ice/ConnectionI.h +++ b/cpp/src/Ice/ConnectionI.h @@ -13,6 +13,8 @@ #include <IceUtil/Mutex.h> #include <IceUtil/Monitor.h> #include <IceUtil/Time.h> +#include <IceUtil/Timer.h> + #include <Ice/Connection.h> #include <Ice/ConnectionIF.h> #include <Ice/ConnectionFactoryF.h> @@ -25,8 +27,6 @@ #include <Ice/TraceLevelsF.h> #include <Ice/OutgoingAsyncF.h> #include <Ice/EventHandler.h> -#include <Ice/SocketReadyCallback.h> -#include <Ice/SelectorThreadF.h> #include <deque> #include <memory> @@ -37,7 +37,7 @@ namespace IceInternal class Outgoing; class BatchOutgoing; class OutgoingMessageCallback; -class FlushSentCallbacks; + } namespace Ice @@ -45,10 +45,7 @@ namespace Ice class LocalException; -class ICE_API ConnectionI : public Connection, - public IceInternal::EventHandler, - public IceInternal::SocketReadyCallback, - public IceUtil::Monitor<IceUtil::Mutex> +class ICE_API ConnectionI : public Connection, public IceInternal::EventHandler, public IceUtil::Monitor<IceUtil::Mutex> { public: @@ -107,35 +104,28 @@ public: // // Operations from EventHandler // - virtual bool datagram() const; - virtual bool readable() const; - virtual bool read(IceInternal::BasicStream&); - virtual void message(IceInternal::BasicStream&, const IceInternal::ThreadPoolPtr&); - virtual void finished(const IceInternal::ThreadPoolPtr&); - virtual void exception(const LocalException&); - virtual void invokeException(const LocalException&, int); +#ifdef ICE_USE_IOCP + bool startAsync(IceInternal::SocketOperation); + bool finishAsync(IceInternal::SocketOperation); +#endif + virtual void message(IceInternal::ThreadPoolCurrent&); + virtual void finished(IceInternal::ThreadPoolCurrent&); + virtual std::string toString() const; // From Connection and EvantHandler. + virtual IceInternal::NativeInfoPtr getNativeInfo(); + + void timedOut(); + virtual std::string type() const; // From Connection. virtual Ice::Int timeout() const; // From Connection. - virtual std::string toString() const; // From Connection and EvantHandler. - // - // Operations from SocketReadyCallback - // - virtual IceInternal::SocketStatus socketReady(); - virtual void socketFinished(); - virtual void socketTimeout(); // SSL plug-in needs to be able to get the transceiver. IceInternal::TransceiverPtr getTransceiver() const; -private: - - ConnectionI(const IceInternal::InstancePtr&, const IceInternal::TransceiverPtr&, const IceInternal::EndpointIPtr&, - const ObjectAdapterPtr&); - virtual ~ConnectionI(); + void exception(const LocalException&); + void invokeException(const LocalException&, int); - friend class IceInternal::IncomingConnectionFactory; - friend class IceInternal::OutgoingConnectionFactory; +private: enum State { @@ -144,14 +134,10 @@ private: StateActive, StateHolding, StateClosing, - StateClosed + StateClosed, + StateFinished }; - void setState(State, const LocalException&); - void setState(State); - - void initiateShutdown(); - struct OutgoingMessage { OutgoingMessage(IceInternal::BasicStream* str, bool comp) : @@ -182,11 +168,21 @@ private: bool adopted; }; - IceInternal::SocketStatus initialize(); - IceInternal::SocketStatus validate(); - bool send(); - friend class IceInternal::FlushSentCallbacks; - void flushSentCallbacks(); + ConnectionI(const IceInternal::InstancePtr&, const IceInternal::TransceiverPtr&, const IceInternal::EndpointIPtr&, + const ObjectAdapterPtr&); + virtual ~ConnectionI(); + + friend class IceInternal::IncomingConnectionFactory; + friend class IceInternal::OutgoingConnectionFactory; + + void setState(State, const LocalException&); + void setState(State); + + void initiateShutdown(); + + bool initialize(IceInternal::SocketOperation = IceInternal::SocketOperationNone); + bool validate(IceInternal::SocketOperation = IceInternal::SocketOperationNone); + void sendNextMessage(std::vector<IceInternal::OutgoingAsyncMessageCallbackPtr>&); bool sendMessage(OutgoingMessage&); void doCompress(IceInternal::BasicStream&, IceInternal::BasicStream&); @@ -197,7 +193,50 @@ private: void invokeAll(IceInternal::BasicStream&, Int, Int, Byte, const IceInternal::ServantManagerPtr&, const ObjectAdapterPtr&); - IceInternal::TransceiverPtr _transceiver; + void scheduleTimeout(IceInternal::SocketOperation status, int timeout) + { + if(timeout < 0) + { + return; + } + + try + { + if(status & IceInternal::SocketOperationRead) + { + _timer->schedule(_readTimeout, IceUtil::Time::milliSeconds(timeout)); + _readTimeoutScheduled = true; + } + if(status & IceInternal::SocketOperationWrite) + { + _timer->schedule(_writeTimeout, IceUtil::Time::milliSeconds(timeout)); + _writeTimeoutScheduled = true; + } + } + catch(const IceUtil::Exception&) + { + assert(false); + } + } + + void unscheduleTimeout(IceInternal::SocketOperation status) + { + if((status & IceInternal::SocketOperationRead) && _readTimeoutScheduled) + { + _timer->cancel(_readTimeout); + _readTimeoutScheduled = false; + } + if((status & IceInternal::SocketOperationWrite) && _writeTimeoutScheduled) + { + _timer->cancel(_writeTimeout); + _writeTimeoutScheduled = false; + } + } + + int connectTimeout(); + + const IceInternal::TransceiverPtr _transceiver; + const IceInternal::InstancePtr _instance; const std::string _desc; const std::string _type; const IceInternal::EndpointIPtr _endpoint; @@ -208,11 +247,17 @@ private: const LoggerPtr _logger; const IceInternal::TraceLevelsPtr _traceLevels; const IceInternal::ThreadPoolPtr _threadPool; - const IceInternal::SelectorThreadPtr _selectorThread; + + const IceUtil::TimerPtr _timer; + const IceUtil::TimerTaskPtr _writeTimeout; + bool _writeTimeoutScheduled; + const IceUtil::TimerTaskPtr _readTimeout; + bool _readTimeoutScheduled; StartCallbackPtr _startCallback; const bool _warn; + const bool _warnUdp; const int _acmTimeout; IceUtil::Time _acmAbsoluteTimeout; @@ -236,11 +281,10 @@ private: size_t _batchMarker; std::deque<OutgoingMessage> _sendStreams; - bool _sendInProgress; - std::vector<IceInternal::OutgoingAsyncMessageCallbackPtr> _sentCallbacks; - IceInternal::ThreadPoolWorkItemPtr _flushSentCallbacks; - + IceInternal::BasicStream _readStream; + IceInternal::BasicStream _writeStream; + int _dispatchCount; State _state; // The current state. diff --git a/cpp/src/Ice/EndpointI.cpp b/cpp/src/Ice/EndpointI.cpp index 3840656abee..64c6efa5cf2 100644 --- a/cpp/src/Ice/EndpointI.cpp +++ b/cpp/src/Ice/EndpointI.cpp @@ -108,11 +108,6 @@ IceInternal::EndpointHostResolver::destroy() void IceInternal::EndpointHostResolver::run() { - if(_instance->initializationData().threadHook) - { - _instance->initializationData().threadHook->start(); - } - while(true) { ResolveEntry resolve; @@ -151,9 +146,4 @@ IceInternal::EndpointHostResolver::run() p->callback->exception(Ice::CommunicatorDestroyedException(__FILE__, __LINE__)); } _queue.clear(); - - if(_instance->initializationData().threadHook) - { - _instance->initializationData().threadHook->stop(); - } } diff --git a/cpp/src/Ice/EventHandler.cpp b/cpp/src/Ice/EventHandler.cpp index dd9412a9b7d..33cb73632e8 100644 --- a/cpp/src/Ice/EventHandler.cpp +++ b/cpp/src/Ice/EventHandler.cpp @@ -15,20 +15,17 @@ using namespace Ice; using namespace IceInternal; IceUtil::Shared* IceInternal::upCast(EventHandler* p) { return p; } -ICE_DECLSPEC_EXPORT IceUtil::Shared* IceInternal::upCast(ThreadPoolWorkItem* p) { return p; } -InstancePtr -IceInternal::EventHandler::instance() const -{ - return _instance; -} - -IceInternal::EventHandler::EventHandler(const InstancePtr& instance, SOCKET fd) : - _instance(instance), - _stream(_instance.get()), - _fd(fd), - _serializing(false), - _registered(false) +IceInternal::EventHandler::EventHandler() : +#ifdef ICE_USE_IOCP + _pending(SocketOperationNone), + _ready(SocketOperationNone), + _started(SocketOperationNone), + _finish(false), +#else + _disabled(SocketOperationNone), +#endif + _registered(SocketOperationNone) { } diff --git a/cpp/src/Ice/EventHandler.h b/cpp/src/Ice/EventHandler.h index 2c3686fd54f..2b6073cc578 100644 --- a/cpp/src/Ice/EventHandler.h +++ b/cpp/src/Ice/EventHandler.h @@ -16,14 +16,6 @@ #include <Ice/ThreadPoolF.h> #include <Ice/BasicStream.h> #include <Ice/Network.h> -#include <Ice/SelectorF.h> - -namespace Ice -{ - -class LocalException; - -} namespace IceInternal { @@ -32,70 +24,51 @@ class EventHandler : virtual public ::IceUtil::Shared { public: - InstancePtr instance() const; - +#ifdef ICE_USE_IOCP // - // Return true if the handler is for a datagram transport, false otherwise. + // Called to start a new asynchronous read or write operation. // - virtual bool datagram() const = 0; - - // - // Return true if read() must be called before calling message(). - // - virtual bool readable() const = 0; - - // - // Read data via the event handler. May only be called if - // readable() returns true. - // - virtual bool read(BasicStream&) = 0; + virtual bool startAsync(SocketOperation) = 0; + virtual bool finishAsync(SocketOperation) = 0; +#endif // - // A complete message has been received. + // Called when there's a message ready to be processed. // - virtual void message(BasicStream&, const ThreadPoolPtr&) = 0; + virtual void message(ThreadPoolCurrent&) = 0; // - // Will be called if the event handler is finally - // unregistered. (Calling unregister() does not unregister - // immediately.) + // Called when the event handler is unregistered. // - virtual void finished(const ThreadPoolPtr&) = 0; + virtual void finished(ThreadPoolCurrent&) = 0; // - // Propagate an exception to the event handler. + // Get a textual representation of the event handler. // - virtual void exception(const ::Ice::LocalException&) = 0; + virtual std::string toString() const = 0; // - // Get a textual representation of the event handler. + // Get the native information of the handler, this is used by the selector. // - virtual std::string toString() const = 0; + virtual NativeInfoPtr getNativeInfo() = 0; protected: - EventHandler(const InstancePtr&, SOCKET = INVALID_SOCKET); - ICE_API virtual ~EventHandler(); - - const InstancePtr _instance; + EventHandler(); + virtual ~EventHandler(); + +#ifdef ICE_USE_IOCP + SocketOperation _ready; + SocketOperation _pending; + SocketOperation _started; + bool _finish; +#else + SocketOperation _disabled; +#endif + SocketOperation _registered; - // - // The _stream data member is for use by ThreadPool or by the - // connection for connection validation only. - // - BasicStream _stream; - SOCKET _fd; - bool _serializing; - bool _registered; friend class ThreadPool; - friend class Selector<EventHandler>; -}; - -class ThreadPoolWorkItem : virtual public IceUtil::Shared -{ -public: - - virtual void execute(const ThreadPoolPtr&) = 0; + friend class Selector; }; } diff --git a/cpp/src/Ice/EventHandlerF.h b/cpp/src/Ice/EventHandlerF.h index f6ced6c7ab5..49f25e13110 100644 --- a/cpp/src/Ice/EventHandlerF.h +++ b/cpp/src/Ice/EventHandlerF.h @@ -21,10 +21,6 @@ class EventHandler; ICE_API IceUtil::Shared* upCast(EventHandler*); typedef Handle<EventHandler> EventHandlerPtr; -class ThreadPoolWorkItem; -ICE_API IceUtil::Shared* upCast(ThreadPoolWorkItem*); -typedef Handle<ThreadPoolWorkItem> ThreadPoolWorkItemPtr; - } #endif diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp index 21d1fdbde53..1f9e3fe3858 100644 --- a/cpp/src/Ice/Instance.cpp +++ b/cpp/src/Ice/Instance.cpp @@ -18,7 +18,6 @@ #include <Ice/ReferenceFactory.h> #include <Ice/ProxyFactory.h> #include <Ice/ThreadPool.h> -#include <Ice/SelectorThread.h> #include <Ice/ConnectionFactory.h> #include <Ice/ConnectionMonitor.h> #include <Ice/ObjectFactoryManager.h> @@ -277,19 +276,6 @@ IceInternal::Instance::serverThreadPool() return _serverThreadPool; } -SelectorThreadPtr -IceInternal::Instance::selectorThread() -{ - IceUtil::RecMutex::Lock sync(*this); - if(_state == StateDestroyed) - { - throw CommunicatorDestroyedException(__FILE__, __LINE__); - } - - assert(_selectorThread); - return _selectorThread; -} - EndpointHostResolverPtr IceInternal::Instance::endpointHostResolver() { @@ -1041,8 +1027,6 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi _clientThreadPool = new ThreadPool(this, "Ice.ThreadPool.Client", 0); - _selectorThread = new SelectorThread(this); - if(_initData.wstringConverter == 0) { _initData.wstringConverter = new UnicodeWstringConverter(); @@ -1088,7 +1072,6 @@ IceInternal::Instance::~Instance() assert(!_objectAdapterFactory); assert(!_clientThreadPool); assert(!_serverThreadPool); - assert(!_selectorThread); assert(!_endpointHostResolver); assert(!_retryQueue); assert(!_timer); @@ -1269,7 +1252,6 @@ IceInternal::Instance::destroy() ThreadPoolPtr serverThreadPool; ThreadPoolPtr clientThreadPool; - SelectorThreadPtr selectorThread; EndpointHostResolverPtr endpointHostResolver; { @@ -1297,12 +1279,6 @@ IceInternal::Instance::destroy() std::swap(_clientThreadPool, clientThreadPool); } - if(_selectorThread) - { - _selectorThread->destroy(); - std::swap(selectorThread, _selectorThread); - } - if(_endpointHostResolver) { _endpointHostResolver->destroy(); @@ -1372,10 +1348,6 @@ IceInternal::Instance::destroy() { serverThreadPool->joinWithAllThreads(); } - if(selectorThread) - { - selectorThread->joinWithThread(); - } if(endpointHostResolver) { endpointHostResolver->getThreadControl().join(); diff --git a/cpp/src/Ice/Instance.h b/cpp/src/Ice/Instance.h index 9ec5d090dfd..283cfcadc09 100644 --- a/cpp/src/Ice/Instance.h +++ b/cpp/src/Ice/Instance.h @@ -24,7 +24,6 @@ #include <Ice/ReferenceFactoryF.h> #include <Ice/ProxyFactoryF.h> #include <Ice/ThreadPoolF.h> -#include <Ice/SelectorThreadF.h> #include <Ice/ConnectionFactoryF.h> #include <Ice/ConnectionMonitorF.h> #include <Ice/ObjectFactoryManagerF.h> @@ -69,7 +68,6 @@ public: ProtocolSupport protocolSupport() const; ThreadPoolPtr clientThreadPool(); ThreadPoolPtr serverThreadPool(); - SelectorThreadPtr selectorThread(); EndpointHostResolverPtr endpointHostResolver(); RetryQueuePtr retryQueue(); IceUtil::TimerPtr timer(); @@ -131,7 +129,6 @@ private: ProtocolSupport _protocolSupport; ThreadPoolPtr _clientThreadPool; ThreadPoolPtr _serverThreadPool; - SelectorThreadPtr _selectorThread; EndpointHostResolverPtr _endpointHostResolver; RetryQueuePtr _retryQueue; IceUtil::TimerPtr _timer; diff --git a/cpp/src/Ice/LoggerUtil.cpp b/cpp/src/Ice/LoggerUtil.cpp index ade72124d97..b1cec4f8fc4 100644 --- a/cpp/src/Ice/LoggerUtil.cpp +++ b/cpp/src/Ice/LoggerUtil.cpp @@ -1,3 +1,4 @@ + // ********************************************************************** // // Copyright (c) 2003-2009 ZeroC, Inc. All rights reserved. @@ -14,8 +15,34 @@ #include <Ice/Instance.h> using namespace std; -using namespace Ice; -using namespace IceInternal; + +ostringstream& +Ice::LoggerOutputBase::__str() +{ + return _str; +} + +Ice::LoggerOutputBase& +Ice::operator<<(Ice::LoggerOutputBase& out, ios_base& (*val)(ios_base&)) +{ + out.__str() << val; + return out; +} + +Ice::LoggerOutputBase& +Ice::operator<<(Ice::LoggerOutputBase& out, const std::exception& ex) +{ +#ifdef __GNUC__ + const ::IceUtil::Exception* exception = dynamic_cast<const ::IceUtil::Exception*>(&ex); + if(exception) + { + out.__str() << exception->what() << '\n' << exception->ice_stackTrace(); + return out; + } +#endif + out.__str() << ex.what(); + return out; +} Ice::Print::Print(const LoggerPtr& logger) : _logger(logger) @@ -30,25 +57,12 @@ Ice::Print::~Print() void Ice::Print::flush() { - string s = _str.str(); + string s = __str().str(); if(!s.empty()) { _logger->print(s); } - _str.str(""); -} - -ostringstream& -Ice::Print::__str() -{ - return _str; -} - -Print& -Ice::operator<<(Print& out, ios_base& (*val)(ios_base&)) -{ - out.__str() << val; - return out; + __str().str(""); } Ice::Warning::Warning(const LoggerPtr& logger) : @@ -64,25 +78,12 @@ Ice::Warning::~Warning() void Ice::Warning::flush() { - string s = _str.str(); + string s = __str().str(); if(!s.empty()) { _logger->warning(s); } - _str.str(""); -} - -ostringstream& -Ice::Warning::__str() -{ - return _str; -} - -Warning& -Ice::operator<<(Warning& out, ios_base& (*val)(ios_base&)) -{ - out.__str() << val; - return out; + __str().str(""); } Ice::Error::Error(const LoggerPtr& logger) : @@ -98,25 +99,12 @@ Ice::Error::~Error() void Ice::Error::flush() { - string s = _str.str(); + string s = __str().str(); if(!s.empty()) { _logger->error(s); } - _str.str(""); -} - -ostringstream& -Ice::Error::__str() -{ - return _str; -} - -Error& -Ice::operator<<(Error& out, ios_base& (*val)(ios_base&)) -{ - out.__str() << val; - return out; + __str().str(""); } Ice::Trace::Trace(const LoggerPtr& logger, const string& category) : @@ -133,25 +121,12 @@ Ice::Trace::~Trace() void Ice::Trace::flush() { - string s = _str.str(); + string s = __str().str(); if(!s.empty()) { _logger->trace(_category, s); } - _str.str(""); -} - -ostringstream& -Ice::Trace::__str() -{ - return _str; -} - -Trace& -Ice::operator<<(Trace& out, ios_base& (*val)(ios_base&)) -{ - out.__str() << val; - return out; + __str().str(""); } Ice::LoggerPlugin::LoggerPlugin(const CommunicatorPtr& communicator, const LoggerPtr& logger) diff --git a/cpp/src/Ice/Makefile b/cpp/src/Ice/Makefile index 482fcc956f2..08e5e6749ef 100644 --- a/cpp/src/Ice/Makefile +++ b/cpp/src/Ice/Makefile @@ -86,7 +86,7 @@ OBJS = Acceptor.o \ RequestHandler.o \ RouterInfo.o \ Router.o \ - SelectorThread.o \ + Selector.o \ ServantLocator.o \ ServantManager.o \ Service.o \ diff --git a/cpp/src/Ice/Makefile.mak b/cpp/src/Ice/Makefile.mak index 5069001b630..9ec0a7e854e 100644 --- a/cpp/src/Ice/Makefile.mak +++ b/cpp/src/Ice/Makefile.mak @@ -86,7 +86,7 @@ OBJS = Acceptor.obj \ RequestHandler.obj \
RouterInfo.obj \
Router.obj \
- SelectorThread.obj \
+ Selector.obj \
ServantLocator.obj \
ServantManager.obj \
Service.obj \
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp index ca473739b9a..85bd7c8a997 100644 --- a/cpp/src/Ice/Network.cpp +++ b/cpp/src/Ice/Network.cpp @@ -35,6 +35,7 @@ # include <winsock2.h> # include <ws2tcpip.h> # include <iphlpapi.h> +# include <Mswsock.h> #else # include <net/if.h> # include <sys/ioctl.h> @@ -473,6 +474,14 @@ getInterfaceAddress(const string& name) } +#ifdef ICE_USE_IOCP +IceInternal::AsyncInfo::AsyncInfo(SocketOperation s) +{ + ZeroMemory(this, sizeof(AsyncInfo)); + status = s; +} +#endif + int IceInternal::getSocketErrno() { @@ -533,7 +542,8 @@ bool IceInternal::wouldBlock() { #ifdef _WIN32 - return WSAGetLastError() == WSAEWOULDBLOCK; + int error = WSAGetLastError(); + return error == WSAEWOULDBLOCK || error == WSA_IO_PENDING; #else return errno == EAGAIN || errno == EWOULDBLOCK; #endif @@ -567,7 +577,7 @@ IceInternal::connectionRefused() { #ifdef _WIN32 int error = WSAGetLastError(); - return error == WSAECONNREFUSED; + return error == WSAECONNREFUSED || error == ERROR_CONNECTION_REFUSED; #else return errno == ECONNREFUSED; #endif @@ -577,7 +587,8 @@ bool IceInternal::connectInProgress() { #ifdef _WIN32 - return WSAGetLastError() == WSAEWOULDBLOCK; + int error = WSAGetLastError(); + return error == WSAEWOULDBLOCK || error == WSA_IO_PENDING; #else return errno == EINPROGRESS; #endif @@ -591,6 +602,9 @@ IceInternal::connectionLost() return error == WSAECONNRESET || error == WSAESHUTDOWN || error == WSAENOTCONN || +#ifdef ICE_USE_IOCP + error == ERROR_NETNAME_DELETED || +#endif error == WSAECONNABORTED; #else return errno == ECONNRESET || @@ -1239,6 +1253,121 @@ IceInternal::doFinishConnect(SOCKET fd) #endif } +#ifdef ICE_USE_IOCP +void +IceInternal::doConnectAsync(SOCKET fd, const struct sockaddr_storage& addr, AsyncInfo& info) +{ + struct sockaddr_storage bindAddr; + memset(&bindAddr, 0, sizeof(bindAddr)); + + int size; + if(addr.ss_family == AF_INET) + { + size = sizeof(sockaddr_in); + + struct sockaddr_in* addrin = reinterpret_cast<struct sockaddr_in*>(&bindAddr); + addrin->sin_family = AF_INET; + addrin->sin_port = htons(0); + addrin->sin_addr.s_addr = htonl(INADDR_ANY); + } + else if(addr.ss_family == AF_INET6) + { + size = sizeof(sockaddr_in6); + + struct sockaddr_in6* addrin = reinterpret_cast<struct sockaddr_in6*>(&bindAddr); + addrin->sin6_family = AF_INET6; + addrin->sin6_port = htons(0); + addrin->sin6_addr = in6addr_any; + } + else + { + assert(false); + size = 0; // Keep the compiler happy. + } + + doBind(fd, bindAddr); + + LPFN_CONNECTEX ConnectEx = NULL; // a pointer to the 'ConnectEx()' function + GUID GuidConnectEx = WSAID_CONNECTEX; // The Guid + DWORD dwBytes; + if(WSAIoctl(fd, + SIO_GET_EXTENSION_FUNCTION_POINTER, + &GuidConnectEx, + sizeof(GuidConnectEx), + &ConnectEx, + sizeof(ConnectEx), + &dwBytes, + NULL, + NULL) == SOCKET_ERROR) + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + + if(!ConnectEx(fd, reinterpret_cast<const struct sockaddr*>(&addr), size, 0, 0, 0, &info)) + { + if(!connectInProgress()) + { + closeSocketNoThrow(fd); + if(connectionRefused()) + { + ConnectionRefusedException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else if(connectFailed()) + { + ConnectFailedException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + } + } + +} + +void +IceInternal::doFinishConnectAsync(SOCKET fd, AsyncInfo& info) +{ + if(info.count == SOCKET_ERROR) + { + WSASetLastError(info.error); + if(connectionRefused()) + { + ConnectionRefusedException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else if(connectFailed()) + { + ConnectFailedException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + } + + if(setsockopt(fd, SOL_SOCKET, SO_UPDATE_CONNECT_CONTEXT, NULL, 0) == SOCKET_ERROR) + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } +} +#endif + SOCKET IceInternal::doAccept(SOCKET fd) { diff --git a/cpp/src/Ice/Network.h b/cpp/src/Ice/Network.h index a12948e35b5..7ad2de80828 100644 --- a/cpp/src/Ice/Network.h +++ b/cpp/src/Ice/Network.h @@ -34,6 +34,20 @@ typedef int ssize_t; # include <netdb.h> #endif +#if defined(__linux) && !defined(ICE_NO_EPOLL) +# define ICE_USE_EPOLL 1 +#elif defined(__APPLE__) && !defined(ICE_NO_KQUEUE) +# define ICE_USE_KQUEUE 1 +#elif defined(_WIN32) +# if !defined(ICE_NO_IOCP) +# define ICE_USE_IOCP 1 +# else +# define ICE_USE_SELECT 1 +# endif +#else +# define ICE_USE_POLL 1 +#endif + #if defined(_WIN32) || defined(__osf__) typedef int socklen_t; #endif @@ -67,6 +81,55 @@ typedef int socklen_t; namespace IceInternal { +enum SocketOperation +{ + SocketOperationNone = 0, + SocketOperationRead = 1, + SocketOperationWrite = 2, + SocketOperationConnect = 2 +}; + +#ifdef ICE_USE_IOCP + +struct ICE_API AsyncInfo : WSAOVERLAPPED +{ + AsyncInfo(SocketOperation); + + SocketOperation status; + WSABUF buf; + DWORD flags; + DWORD count; + int error; +}; + +#endif + +class ICE_API NativeInfo : virtual public IceUtil::Shared +{ +public: + + NativeInfo(SOCKET fd = INVALID_SOCKET) : _fd(fd) + { + } + + SOCKET fd() + { + return _fd; + } + +#ifdef ICE_USE_IOCP + // + // This is implemented by transceiver and acceptor implementations. + // + virtual AsyncInfo* getAsyncInfo(SocketOperation) = 0; +#endif + +protected: + + SOCKET _fd; +}; +typedef IceUtil::Handle<NativeInfo> NativeInfoPtr; + ICE_API bool interrupted(); ICE_API bool acceptInterrupted(); ICE_API bool noBuffers(); @@ -101,6 +164,10 @@ ICE_API struct sockaddr_storage doBind(SOCKET, const struct sockaddr_storage&); ICE_API void doListen(SOCKET, int); ICE_API bool doConnect(SOCKET, const struct sockaddr_storage&); ICE_API void doFinishConnect(SOCKET); +#ifdef ICE_USE_IOCP +ICE_API void doConnectAsync(SOCKET, const struct sockaddr_storage&, AsyncInfo&); +ICE_API void doFinishConnectAsync(SOCKET, AsyncInfo&); +#endif ICE_API SOCKET doAccept(SOCKET); ICE_API struct sockaddr_storage getAddressForServer(const std::string&, int, ProtocolSupport); diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index 0e3f6942ffc..2e6dfa913b3 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -56,10 +56,6 @@ Ice::ObjectAdapterI::getName() const CommunicatorPtr Ice::ObjectAdapterI::getCommunicator() const { - IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this); - - checkForDeactivation(); - return _communicator; } @@ -357,7 +353,6 @@ Ice::ObjectAdapterI::destroy() // _instance = 0; _threadPool = 0; - _communicator = 0; _routerEndpoints.clear(); _routerInfo = 0; _publishedEndpoints.clear(); @@ -982,7 +977,6 @@ Ice::ObjectAdapterI::~ObjectAdapterI() { //assert(!_servantManager); // We don't clear this reference, it needs to be immutable. assert(!_threadPool); - assert(!_communicator); assert(_incomingConnectionFactories.empty()); assert(_directCount == 0); assert(!_waitForActivate); diff --git a/cpp/src/Ice/OutgoingAsync.cpp b/cpp/src/Ice/OutgoingAsync.cpp index ae70612be37..e72d0458603 100644 --- a/cpp/src/Ice/OutgoingAsync.cpp +++ b/cpp/src/Ice/OutgoingAsync.cpp @@ -51,9 +51,9 @@ public: } virtual void - execute(const ThreadPoolPtr& threadPool) + execute(ThreadPoolCurrent& current) { - threadPool->promoteFollower(); + current.ioCompleted(); _outAsync->__exception(*_exception.get()); } diff --git a/cpp/src/Ice/PropertyNames.cpp b/cpp/src/Ice/PropertyNames.cpp index 8837d3c740a..f297cd7ac9a 100644 --- a/cpp/src/Ice/PropertyNames.cpp +++ b/cpp/src/Ice/PropertyNames.cpp @@ -8,7 +8,7 @@ // ********************************************************************** // -// Generated by makeprops.py from file ../config/PropertyNames.xml, Wed Jul 29 10:07:20 2009 +// Generated by makeprops.py from file ./config/PropertyNames.xml, Tue Aug 11 09:12:32 2009 // IMPORTANT: Do not edit this file -- any edits made here will be lost! @@ -31,6 +31,7 @@ const IceInternal::Property IcePropsData[] = IceInternal::Property("Ice.Admin.ThreadPool.SizeWarn", false, 0), IceInternal::Property("Ice.Admin.ThreadPool.StackSize", false, 0), IceInternal::Property("Ice.Admin.ThreadPool.Serialize", false, 0), + IceInternal::Property("Ice.Admin.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("Ice.Admin.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("Ice.Admin.DelayCreation", false, 0), IceInternal::Property("Ice.Admin.Facets", false, 0), @@ -98,12 +99,14 @@ const IceInternal::Property IcePropsData[] = IceInternal::Property("Ice.ThreadPool.Client.SizeWarn", false, 0), IceInternal::Property("Ice.ThreadPool.Client.StackSize", false, 0), IceInternal::Property("Ice.ThreadPool.Client.Serialize", false, 0), + IceInternal::Property("Ice.ThreadPool.Client.ThreadIdleTime", false, 0), IceInternal::Property("Ice.ThreadPool.Client.ThreadPriority", false, 0), IceInternal::Property("Ice.ThreadPool.Server.Size", false, 0), IceInternal::Property("Ice.ThreadPool.Server.SizeMax", false, 0), IceInternal::Property("Ice.ThreadPool.Server.SizeWarn", false, 0), IceInternal::Property("Ice.ThreadPool.Server.StackSize", false, 0), IceInternal::Property("Ice.ThreadPool.Server.Serialize", false, 0), + IceInternal::Property("Ice.ThreadPool.Server.ThreadIdleTime", false, 0), IceInternal::Property("Ice.ThreadPool.Server.ThreadPriority", false, 0), IceInternal::Property("Ice.ThreadPriority", false, 0), IceInternal::Property("Ice.Trace.GC", false, 0), @@ -154,6 +157,7 @@ const IceInternal::Property IceBoxPropsData[] = IceInternal::Property("IceBox.ServiceManager.ThreadPool.SizeWarn", false, 0), IceInternal::Property("IceBox.ServiceManager.ThreadPool.StackSize", false, 0), IceInternal::Property("IceBox.ServiceManager.ThreadPool.Serialize", false, 0), + IceInternal::Property("IceBox.ServiceManager.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("IceBox.ServiceManager.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("IceBox.Trace.ServiceObserver", false, 0), IceInternal::Property("IceBox.UseSharedCommunicator.*", false, 0), @@ -210,6 +214,7 @@ const IceInternal::Property IceGridPropsData[] = IceInternal::Property("IceGrid.Node.ThreadPool.SizeWarn", false, 0), IceInternal::Property("IceGrid.Node.ThreadPool.StackSize", false, 0), IceInternal::Property("IceGrid.Node.ThreadPool.Serialize", false, 0), + IceInternal::Property("IceGrid.Node.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("IceGrid.Node.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("IceGrid.Node.AllowRunningServersAsRoot", false, 0), IceInternal::Property("IceGrid.Node.AllowEndpointsOverride", false, 0), @@ -261,6 +266,7 @@ const IceInternal::Property IceGridPropsData[] = IceInternal::Property("IceGrid.Registry.AdminSessionManager.ThreadPool.SizeWarn", false, 0), IceInternal::Property("IceGrid.Registry.AdminSessionManager.ThreadPool.StackSize", false, 0), IceInternal::Property("IceGrid.Registry.AdminSessionManager.ThreadPool.Serialize", false, 0), + IceInternal::Property("IceGrid.Registry.AdminSessionManager.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("IceGrid.Registry.AdminSessionManager.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("IceGrid.Registry.AdminSSLPermissionsVerifier.EndpointSelection", false, 0), IceInternal::Property("IceGrid.Registry.AdminSSLPermissionsVerifier.ConnectionCached", false, 0), @@ -284,6 +290,7 @@ const IceInternal::Property IceGridPropsData[] = IceInternal::Property("IceGrid.Registry.Client.ThreadPool.SizeWarn", false, 0), IceInternal::Property("IceGrid.Registry.Client.ThreadPool.StackSize", false, 0), IceInternal::Property("IceGrid.Registry.Client.ThreadPool.Serialize", false, 0), + IceInternal::Property("IceGrid.Registry.Client.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("IceGrid.Registry.Client.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("IceGrid.Registry.CryptPasswords", false, 0), IceInternal::Property("IceGrid.Registry.Data", false, 0), @@ -302,6 +309,7 @@ const IceInternal::Property IceGridPropsData[] = IceInternal::Property("IceGrid.Registry.Internal.ThreadPool.SizeWarn", false, 0), IceInternal::Property("IceGrid.Registry.Internal.ThreadPool.StackSize", false, 0), IceInternal::Property("IceGrid.Registry.Internal.ThreadPool.Serialize", false, 0), + IceInternal::Property("IceGrid.Registry.Internal.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("IceGrid.Registry.Internal.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("IceGrid.Registry.NodeSessionTimeout", false, 0), IceInternal::Property("IceGrid.Registry.PermissionsVerifier.EndpointSelection", false, 0), @@ -328,6 +336,7 @@ const IceInternal::Property IceGridPropsData[] = IceInternal::Property("IceGrid.Registry.Server.ThreadPool.SizeWarn", false, 0), IceInternal::Property("IceGrid.Registry.Server.ThreadPool.StackSize", false, 0), IceInternal::Property("IceGrid.Registry.Server.ThreadPool.Serialize", false, 0), + IceInternal::Property("IceGrid.Registry.Server.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("IceGrid.Registry.Server.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("IceGrid.Registry.SessionFilters", false, 0), IceInternal::Property("IceGrid.Registry.SessionManager.AdapterId", false, 0), @@ -343,6 +352,7 @@ const IceInternal::Property IceGridPropsData[] = IceInternal::Property("IceGrid.Registry.SessionManager.ThreadPool.SizeWarn", false, 0), IceInternal::Property("IceGrid.Registry.SessionManager.ThreadPool.StackSize", false, 0), IceInternal::Property("IceGrid.Registry.SessionManager.ThreadPool.Serialize", false, 0), + IceInternal::Property("IceGrid.Registry.SessionManager.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("IceGrid.Registry.SessionManager.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("IceGrid.Registry.SessionTimeout", false, 0), IceInternal::Property("IceGrid.Registry.SSLPermissionsVerifier.EndpointSelection", false, 0), @@ -388,6 +398,7 @@ const IceInternal::Property IcePatch2PropsData[] = IceInternal::Property("IcePatch2.ThreadPool.SizeWarn", false, 0), IceInternal::Property("IcePatch2.ThreadPool.StackSize", false, 0), IceInternal::Property("IcePatch2.ThreadPool.Serialize", false, 0), + IceInternal::Property("IcePatch2.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("IcePatch2.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("IcePatch2.Admin.AdapterId", true, 0), IceInternal::Property("IcePatch2.Admin.Endpoints", true, 0), @@ -487,6 +498,7 @@ const IceInternal::Property Glacier2PropsData[] = IceInternal::Property("Glacier2.Client.ThreadPool.SizeWarn", false, 0), IceInternal::Property("Glacier2.Client.ThreadPool.StackSize", false, 0), IceInternal::Property("Glacier2.Client.ThreadPool.Serialize", false, 0), + IceInternal::Property("Glacier2.Client.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("Glacier2.Client.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("Glacier2.Client.AlwaysBatch", false, 0), IceInternal::Property("Glacier2.Client.Buffered", false, 0), @@ -537,6 +549,7 @@ const IceInternal::Property Glacier2PropsData[] = IceInternal::Property("Glacier2.Server.ThreadPool.SizeWarn", false, 0), IceInternal::Property("Glacier2.Server.ThreadPool.StackSize", false, 0), IceInternal::Property("Glacier2.Server.ThreadPool.Serialize", false, 0), + IceInternal::Property("Glacier2.Server.ThreadPool.ThreadIdleTime", false, 0), IceInternal::Property("Glacier2.Server.ThreadPool.ThreadPriority", false, 0), IceInternal::Property("Glacier2.Server.AlwaysBatch", false, 0), IceInternal::Property("Glacier2.Server.Buffered", false, 0), diff --git a/cpp/src/Ice/PropertyNames.h b/cpp/src/Ice/PropertyNames.h index 0c130f16ce3..3c9417577f6 100644 --- a/cpp/src/Ice/PropertyNames.h +++ b/cpp/src/Ice/PropertyNames.h @@ -8,7 +8,7 @@ // ********************************************************************** // -// Generated by makeprops.py from file ../config/PropertyNames.xml, Wed Jul 29 10:07:20 2009 +// Generated by makeprops.py from file ./config/PropertyNames.xml, Tue Aug 11 09:12:32 2009 // IMPORTANT: Do not edit this file -- any edits made here will be lost! diff --git a/cpp/src/Ice/Selector.cpp b/cpp/src/Ice/Selector.cpp new file mode 100644 index 00000000000..fefcca7a540 --- /dev/null +++ b/cpp/src/Ice/Selector.cpp @@ -0,0 +1,824 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2009 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <Ice/Selector.h> +#include <Ice/EventHandler.h> +#include <Ice/Instance.h> +#include <Ice/LoggerUtil.h> +#include <Ice/LocalException.h> + +using namespace std; +using namespace IceInternal; + +#if defined(ICE_USE_IOCP) +Selector::Selector(const InstancePtr& instance) : _instance(instance) +{ +} + +Selector::~Selector() +{ +} + +void +Selector::setup(int sizeIO) +{ + _handle = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, NULL, sizeIO); + if(_handle == NULL) + { + Ice::SocketException ex(__FILE__, __LINE__); + ex.error = GetLastError(); + throw ex; + } +} + +void +Selector::destroy() +{ + CloseHandle(_handle); +} + +void +Selector::initialize(EventHandler* handler) +{ + HANDLE socket = reinterpret_cast<HANDLE>(handler->getNativeInfo()->fd()); + if(CreateIoCompletionPort(socket, _handle, reinterpret_cast<ULONG_PTR>(handler), 0) == NULL) + { + Ice::SocketException ex(__FILE__, __LINE__); + ex.error = GetLastError(); + throw ex; + } + handler->__incRef(); +} + +void +Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation add) +{ + SocketOperation previous = handler->_registered; + handler->_registered = static_cast<SocketOperation>(handler->_registered & ~remove); + handler->_registered = static_cast<SocketOperation>(handler->_registered | add); + AsyncInfo* info = 0; + if(add & SocketOperationRead && !(handler->_pending & SocketOperationRead)) + { + handler->_pending = static_cast<SocketOperation>(handler->_pending | SocketOperationRead); + info = handler->getNativeInfo()->getAsyncInfo(SocketOperationRead); + } + else if(add & SocketOperationWrite && !(handler->_pending & SocketOperationWrite)) + { + handler->_pending = static_cast<SocketOperation>(handler->_pending | SocketOperationWrite); + info = handler->getNativeInfo()->getAsyncInfo(SocketOperationWrite); + } + + if(info) + { + if(!PostQueuedCompletionStatus(_handle, 0, reinterpret_cast<ULONG_PTR>(handler), info)) + { + Ice::SocketException ex(__FILE__, __LINE__); + ex.error = GetLastError(); + throw ex; + } + } +} + +void +Selector::finish(EventHandler* handler) +{ + handler->_registered = SocketOperationNone; + handler->__decRef(); +} + +EventHandler* +Selector::getNextHandler(SocketOperation& status, int timeout) +{ + ULONG_PTR key; + LPOVERLAPPED ol; + DWORD count; + + if(!GetQueuedCompletionStatus(_handle, &count, &key, &ol, timeout > 0 ? timeout * 1000 : INFINITE)) + { + int err = WSAGetLastError(); + if(ol == 0) + { + if(err == WAIT_TIMEOUT) + { + throw SelectorTimeoutException(); + } + else + { + { + Ice::SocketException ex(__FILE__, __LINE__, err); + Ice::Error out(_instance->initializationData().logger); + out << "fatal error: couldn't dequeue packet from completion port:\n" << ex; + } + abort(); + } + } + + AsyncInfo* info = static_cast<AsyncInfo*>(ol); + status = info->status; + info->count = SOCKET_ERROR; + info->error = WSAGetLastError(); + return reinterpret_cast<EventHandler*>(key); + } + + assert(ol); + AsyncInfo* info = static_cast<AsyncInfo*>(ol); + status = info->status; + info->count = count; + info->error = 0; + return reinterpret_cast<EventHandler*>(key); +} + +#elif defined(ICE_USE_KQUEUE) || defined(ICE_USE_EPOLL) + +Selector::Selector(const InstancePtr& instance) : _instance(instance) +{ + _events.resize(256); +#if defined(ICE_USE_EPOLL) + _queueFd = epoll_create(1); + if(_queueFd < 0) + { + Ice::SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } +#else + _queueFd = kqueue(); + if(_queueFd < 0) + { + Ice::SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + _selecting = false; +#endif +} + +Selector::~Selector() +{ +} + +void +Selector::destroy() +{ + try + { + closeSocket(_queueFd); + } + catch(const Ice::LocalException& ex) + { + Ice::Error out(_instance->initializationData().logger); + out << "exception in selector while calling closeSocket():\n" << ex; + } +} + +void +Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation add) +{ + SocketOperation previous = handler->_registered; + handler->_registered = static_cast<SocketOperation>(handler->_registered & ~remove); + handler->_registered = static_cast<SocketOperation>(handler->_registered | add); + if(previous == handler->_registered) + { + return; + } + + SOCKET fd = handler->getNativeInfo()->fd(); +#if defined(ICE_USE_EPOLL) + epoll_event event; + memset(&event, 0, sizeof(epoll_event)); + event.data.ptr = handler; + SocketOperation status = handler->_registered; + if(handler->_disabled) + { + status = static_cast<SocketOperation>(status & ~handler->_disabled); + previous = static_cast<SocketOperation>(previous & ~handler->_disabled); + } + event.events |= status & SocketOperationRead ? EPOLLIN : 0; + event.events |= status & SocketOperationWrite ? EPOLLOUT : 0; + int op; + if(!previous && status) + { + op = EPOLL_CTL_ADD; + } + else if(previous && !status) + { + op = EPOLL_CTL_DEL; + } + else if(!previous && !status) + { + return; + } + else + { + op = EPOLL_CTL_MOD; + } + if(epoll_ctl(_queueFd, op, fd, &event) != 0) + { + Ice::Error out(_instance->initializationData().logger); + out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno()); + } +#else // ICE_USE_KQUEUE + if(remove & SocketOperationRead) + { + struct kevent ev; + EV_SET(&ev, fd, EVFILT_READ, EV_DELETE, 0, 0, handler); + _changes.push_back(ev); + } + if(remove & SocketOperationWrite) + { + struct kevent ev; + EV_SET(&ev, fd, EVFILT_WRITE, EV_DELETE, 0, 0, handler); + _changes.push_back(ev); + } + if(add & SocketOperationRead) + { + struct kevent ev; + EV_SET(&ev, fd, EVFILT_READ, EV_ADD | (handler->_disabled & SocketOperationRead ? EV_DISABLE : 0), 0, 0, + handler); + _changes.push_back(ev); + } + if(add & SocketOperationWrite) + { + struct kevent ev; + EV_SET(&ev, fd, EVFILT_WRITE, EV_ADD | (handler->_disabled & SocketOperationWrite ? EV_DISABLE : 0), 0, 0, + handler); + _changes.push_back(ev); + } + if(_selecting) + { + updateSelector(); + } +#endif +} + +void +Selector::enable(EventHandler* handler, SocketOperation status) +{ + if(!(handler->_disabled & status)) + { + return; + } + handler->_disabled = static_cast<SocketOperation>(handler->_disabled & ~status); + + if(handler->_registered & status) + { + SOCKET fd = handler->getNativeInfo()->fd(); +#if defined(ICE_USE_EPOLL) + SocketOperation previous = static_cast<SocketOperation>(handler->_registered & ~status); + epoll_event event; + memset(&event, 0, sizeof(epoll_event)); + event.data.ptr = handler; + event.events |= handler->_registered & SocketOperationRead ? EPOLLIN : 0; + event.events |= handler->_registered & SocketOperationWrite ? EPOLLOUT : 0; + if(epoll_ctl(_queueFd, previous ? EPOLL_CTL_MOD : EPOLL_CTL_ADD, fd, &event) != 0) + { + Ice::Error out(_instance->initializationData().logger); + out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno()); + } +#else // ICE_USE_KQUEUE + struct kevent ev; + EV_SET(&ev, fd, status == SocketOperationRead ? EVFILT_READ : EVFILT_WRITE, EV_ENABLE, 0, 0, handler); + _changes.push_back(ev); + if(_selecting) + { + updateSelector(); + } +#endif + } +} + +void +Selector::disable(EventHandler* handler, SocketOperation status) +{ + if(handler->_disabled & status) + { + return; + } + handler->_disabled = static_cast<SocketOperation>(handler->_disabled | status); + + if(handler->_registered & status) + { + SOCKET fd = handler->getNativeInfo()->fd(); +#if defined(ICE_USE_EPOLL) + SocketOperation newStatus = static_cast<SocketOperation>(handler->_registered & ~status); + epoll_event event; + memset(&event, 0, sizeof(epoll_event)); + event.data.ptr = handler; + event.events |= newStatus & SocketOperationRead ? EPOLLIN : 0; + event.events |= newStatus & SocketOperationWrite ? EPOLLOUT : 0; + if(epoll_ctl(_queueFd, newStatus ? EPOLL_CTL_MOD : EPOLL_CTL_DEL, fd, &event) != 0) + { + Ice::Error out(_instance->initializationData().logger); + out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno()); + } +#else // ICE_USE_KQUEUE + struct kevent ev; + EV_SET(&ev, fd, status == SocketOperationRead ? EVFILT_READ : EVFILT_WRITE, EV_DISABLE, 0, 0, handler); + _changes.push_back(ev); + if(_selecting) + { + updateSelector(); + } +#endif + } +} + +void +Selector::finish(EventHandler* handler) +{ + if(handler->_registered) + { + update(handler, handler->_registered, SocketOperationNone); + } +} + +#if defined(ICE_USE_KQUEUE) +void +Selector::updateSelector() +{ + int rs = kevent(_queueFd, &_changes[0], _changes.size(), 0, 0, 0); + if(rs < 0) + { + Ice::Error out(_instance->initializationData().logger); + out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno()); + } + _changes.clear(); +} +#endif + +void +Selector::select(vector<pair<EventHandler*, SocketOperation> >& handlers, int timeout) +{ + int ret = 0; + while(true) + { +#if defined(ICE_USE_EPOLL) + ret = epoll_wait(_queueFd, &_events[0], _events.size(), timeout > 0 ? timeout * 1000 : -1); +#else + assert(!_events.empty()); + if(timeout > 0) + { + struct timespec ts; + ts.tv_sec = timeout; + ts.tv_nsec = 0; + ret = kevent(_queueFd, 0, 0, &_events[0], _events.size(), &ts); + } + else + { + ret = kevent(_queueFd, 0, 0, &_events[0], _events.size(), 0); + } +#endif + if(ret == SOCKET_ERROR) + { + if(interrupted()) + { + continue; + } + + { + Ice::SocketException ex(__FILE__, __LINE__, IceInternal::getSocketErrno()); + Ice::Error out(_instance->initializationData().logger); + out << "fatal error: selector failed:\n" << ex; + } + abort(); + } + break; + } + + if(ret == 0) + { + throw SelectorTimeoutException(); + } + + assert(ret > 0); + handlers.clear(); + for(int i = 0; i < ret; ++i) + { + pair<EventHandler*, SocketOperation> p; +#if defined(ICE_USE_EPOLL) + struct epoll_event& ev = _events[i]; + p.first = reinterpret_cast<EventHandler*>(ev.data.ptr); + p.second = static_cast<SocketOperation>(((ev.events & EPOLLIN) ? SocketOperationRead : SocketOperationNone) | + ((ev.events & EPOLLOUT) ? SocketOperationWrite : SocketOperationNone)); +#else + struct kevent& ev = _events[i]; + if(ev.flags & EV_ERROR) + { + Ice::Error out(_instance->initializationData().logger); + out << "error while updating selector:\n" << IceUtilInternal::errorToString(ev.data); + continue; + } + p.first = reinterpret_cast<EventHandler*>(ev.udata); + p.second = (ev.filter == EVFILT_READ) ? SocketOperationRead : SocketOperationWrite; +#endif + handlers.push_back(p); + } +} + +#elif defined(ICE_USE_SELECT) || defined(ICE_USE_POLL) + +Selector::Selector(const InstancePtr& instance) : _instance(instance), _selecting(false), _interrupted(false) +{ + SOCKET fds[2]; + createPipe(fds); + _fdIntrRead = fds[0]; + _fdIntrWrite = fds[1]; +#if defined(ICE_USE_SELECT) + FD_ZERO(&_readFdSet); + FD_ZERO(&_writeFdSet); + FD_ZERO(&_errorFdSet); + FD_SET(_fdIntrRead, &_readFdSet); +#else + struct pollfd pollFd; + pollFd.fd = _fdIntrRead; + pollFd.events = POLLIN; + _pollFdSet.push_back(pollFd); +#endif +} + +Selector::~Selector() +{ + try + { + closeSocket(_fdIntrWrite); + } + catch(const Ice::LocalException& ex) + { + Ice::Error out(_instance->initializationData().logger); + out << "exception in selector while calling closeSocket():\n" << ex; + } + + try + { + closeSocket(_fdIntrRead); + } + catch(const Ice::LocalException& ex) + { + Ice::Error out(_instance->initializationData().logger); + out << "exception in selector while calling closeSocket():\n" << ex; + } +} + +void +Selector::destroy() +{ +} + +void +Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation add) +{ + SocketOperation previous = handler->_registered; + handler->_registered = static_cast<SocketOperation>(handler->_registered & ~remove); + handler->_registered = static_cast<SocketOperation>(handler->_registered | add); + if(previous == handler->_registered) + { + return; + } + + updateImpl(handler); +} + +void +Selector::enable(EventHandler* handler, SocketOperation status) +{ + if(!(handler->_disabled & status)) + { + return; + } + handler->_disabled = static_cast<SocketOperation>(handler->_disabled & ~status); + + if(handler->_registered & status) + { + updateImpl(handler); + } +} + +void +Selector::disable(EventHandler* handler, SocketOperation status) +{ + if(handler->_disabled & status) + { + return; + } + handler->_disabled = static_cast<SocketOperation>(handler->_disabled | status); + + if(handler->_registered & status) + { + updateImpl(handler); + } +} + +void +Selector::finish(EventHandler* handler) +{ + if(handler->_registered) + { + update(handler, handler->_registered, SocketOperationNone); + } +} + +void +Selector::startSelect() +{ + if(_interrupted) + { + char c; + while(true) + { + ssize_t ret; +#ifdef _WIN32 + ret = ::recv(_fdIntrRead, &c, 1, 0); +#else + ret = ::read(_fdIntrRead, &c, 1); +#endif + if(ret == SOCKET_ERROR) + { + if(interrupted()) + { + continue; + } + + Ice::SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + break; + } + _interrupted = false; + + if(!_changes.empty()) + { + updateSelector(); + } + } + _selecting = true; +} + +void +Selector::finishSelect() +{ + _selecting = false; +} + +void +Selector::select(vector<pair<EventHandler*, SocketOperation> >& handlers, int timeout) +{ + int ret = 0; + while(true) + { +#if defined(ICE_USE_SELECT) + fd_set* rFdSet = fdSetCopy(_selectedReadFdSet, _readFdSet); + fd_set* wFdSet = fdSetCopy(_selectedWriteFdSet, _writeFdSet); + fd_set* eFdSet = fdSetCopy(_selectedErrorFdSet, _errorFdSet); + if(timeout > 0) + { + struct timeval tv; + tv.tv_sec = timeout; + tv.tv_usec = 0; + ret = ::select(0, rFdSet, wFdSet, eFdSet, &tv); // The first parameter is ignored on Windows + } + else + { + ret = ::select(0, rFdSet, wFdSet, eFdSet, 0); // The first parameter is ignored on Windows + } +#else + ret = poll(&_pollFdSet[0], _pollFdSet.size(), timeout > 0 ? timeout * 1000 : -1); +#endif + if(ret == SOCKET_ERROR) + { + if(interrupted()) + { + continue; + } + + { + Ice::SocketException ex(__FILE__, __LINE__, IceInternal::getSocketErrno()); + Error out(_instance->initializationData().logger); + out << "fatal error: selector failed:\n" << ex; + } + abort(); + } + break; + } + + if(ret == 0) + { + throw SelectorTimeoutException(); + } + + assert(ret > 0); + handlers.clear(); + +#if defined(ICE_USE_SELECT) + if(_selectedReadFdSet.fd_count == 0 && _selectedWriteFdSet.fd_count == 0 && _selectedErrorFdSet.fd_count == 0) + { + Ice::Error out(_instance->initializationData().logger); + out << "select() in selector returned " << ret << " but no filedescriptor is ready"; + return; + } + + for(unsigned int i = 0; i < static_cast<unsigned int>(ret); ++i) + { + pair<EventHandler*, SocketOperation> p; + + // + // Round robin for the filedescriptors. + // + SOCKET fd; + p.second = SocketOperationNone; + if(i < _selectedReadFdSet.fd_count) + { + fd = _selectedReadFdSet.fd_array[i]; + p.second = static_cast<SocketOperation>(p.second | SocketOperationRead); + } + else if(i < _selectedWriteFdSet.fd_count + _selectedReadFdSet.fd_count) + { + fd = _selectedWriteFdSet.fd_array[i - _selectedReadFdSet.fd_count]; + p.second = static_cast<SocketOperation>(p.second | SocketOperationWrite); + } + else + { + fd = _selectedErrorFdSet.fd_array[i - _selectedReadFdSet.fd_count - _selectedWriteFdSet.fd_count]; + p.second = static_cast<SocketOperation>(p.second | SocketOperationConnect); + } + + if(fd == _fdIntrRead) // Interrupted, we have to process the interrupt before returning any handlers + { + handlers.clear(); + return; + } + + assert(_handlers.find(fd) != _handlers.end()); + p.first = _handlers[fd]; + handlers.push_back(p); + } +#else + if(_pollFdSet[0].revents == POLLIN) // Interrupted, we have to process the interrupt before returning any handlers + { + return; + } + + for(vector<struct pollfd>::const_iterator q = _pollFdSet.begin(); q != _pollFdSet.end(); ++q) + { + pair<EventHandler*, SocketOperation> p; + if(q->revents != 0) + { + SOCKET fd = q->fd; + assert(fd != _fdIntrRead); + assert(_handlers.find(fd) != _handlers.end()); + p.first = _handlers[fd]; + p.second = SocketOperationNone; + if(q->revents & (POLLIN | POLLERR | POLLHUP)) + { + p.second = static_cast<SocketOperation>(p.second | SocketOperationRead); + } + if(q->revents & POLLOUT) + { + p.second = static_cast<SocketOperation>(p.second | SocketOperationWrite); + } + assert(p.second); + handlers.push_back(p); + } + } +#endif +} + +void +Selector::updateImpl(EventHandler* handler) +{ + SocketOperation status = static_cast<SocketOperation>(handler->_registered & ~handler->_disabled); + _changes.push_back(make_pair(handler, status)); + if(_selecting) + { + if(!_interrupted) + { + char c = 0; + while(true) + { +#ifdef _WIN32 + if(::send(_fdIntrWrite, &c, 1, 0) == SOCKET_ERROR) +#else + if(::write(_fdIntrWrite, &c, 1) == SOCKET_ERROR) +#endif + { + if(interrupted()) + { + continue; + } + + Ice::SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + break; + } + _interrupted = true; + } + } + else + { + updateSelector(); + } +} + +void +Selector::updateSelector() +{ + for(vector<pair<EventHandler*, SocketOperation> >::const_iterator p = _changes.begin(); p != _changes.end(); ++p) + { + EventHandler* handler = p->first; + SocketOperation status = p->second; + + SOCKET fd = handler->getNativeInfo()->fd(); + if(status) + { +#if defined(ICE_USE_SELECT) + if(status & SocketOperationRead) + { + FD_SET(fd, &_readFdSet); + } + else + { + FD_CLR(fd, &_readFdSet); + } + if(status & SocketOperationWrite) + { + FD_SET(fd, &_writeFdSet); + } + else + { + FD_CLR(fd, &_writeFdSet); + } + if(status & SocketOperationConnect) + { + FD_SET(fd, &_writeFdSet); + FD_SET(fd, &_errorFdSet); + } + else + { + FD_CLR(fd, &_writeFdSet); + FD_CLR(fd, &_errorFdSet); + } + _handlers[fd] = handler; +#else + short events = 0; + if(status & SocketOperationRead) + { + events |= POLLIN; + } + if(status & SocketOperationWrite) + { + events |= POLLOUT; + } + map<SOCKET, EventHandler*>::const_iterator q = _handlers.find(fd); + if(q == _handlers.end()) + { + struct pollfd pollFd; + pollFd.fd = fd; + pollFd.events = events; + pollFd.revents = 0; + _pollFdSet.push_back(pollFd); + _handlers.insert(make_pair(fd, handler)); + } + else + { + for(vector<struct pollfd>::iterator r = _pollFdSet.begin(); r != _pollFdSet.end(); ++r) + { + if(r->fd == fd) + { + r->events = events; + break; + } + } + } +#endif + } + else + { +#if defined(ICE_USE_SELECT) + FD_CLR(fd, &_readFdSet); + FD_CLR(fd, &_writeFdSet); + FD_CLR(fd, &_errorFdSet); +#else + for(vector<struct pollfd>::iterator r = _pollFdSet.begin(); r != _pollFdSet.end(); ++r) + { + if(r->fd == fd) + { + _pollFdSet.erase(r); + break; + } + } +#endif + _handlers.erase(fd); + } + } + _changes.clear(); +} + +#endif diff --git a/cpp/src/Ice/Selector.h b/cpp/src/Ice/Selector.h index 2c958130e5a..553c8c6ae06 100644 --- a/cpp/src/Ice/Selector.h +++ b/cpp/src/Ice/Selector.h @@ -12,660 +12,153 @@ #include <IceUtil/StringUtil.h> -#include <Ice/Config.h> #include <Ice/Network.h> -#include <Ice/SelectorF.h> #include <Ice/InstanceF.h> -#include <Ice/LoggerUtil.h> -#include <Ice/LocalException.h> -#include <Ice/Instance.h> - -#if defined(__linux) && !defined(ICE_NO_EPOLL) -# define ICE_USE_EPOLL 1 -#elif defined(__APPLE__) && !defined(ICE_NO_KQUEUE) -# define ICE_USE_KQUEUE 1 -#elif defined(_WIN32) -# define ICE_USE_SELECT 1 -#endif +#include <Ice/EventHandlerF.h> #if defined(ICE_USE_EPOLL) # include <sys/epoll.h> #elif defined(ICE_USE_KQUEUE) # include <sys/event.h> -#elif !defined(ICE_USE_SELECT) +#elif defined(ICE_USE_IOCP) +// Nothing to include +#elif defined(ICE_USE_POLL) # include <sys/poll.h> #endif namespace IceInternal { -template<class T> class Selector +// +// Exception raised if select times out. +// +class SelectorTimeoutException { -public: - - Selector(const InstancePtr& instance, int timeout = 0) : - _instance(instance), - _timeout(timeout), - _interruptCount(0) - { - SOCKET fds[2]; - createPipe(fds); - _fdIntrRead = fds[0]; - _fdIntrWrite = fds[1]; - _lastFd = _fdIntrRead; - -#if defined(ICE_USE_EPOLL) || defined(ICE_USE_KQUEUE) - _count = 0; - _events.resize(32); -#if defined(ICE_USE_EPOLL) - _queueFd = epoll_create(1); - if(_queueFd < 0) - { - Ice::SocketException ex(__FILE__, __LINE__); - ex.error = IceInternal::getSocketErrno(); - throw ex; - } - epoll_event event; - memset(&event, 0, sizeof(epoll_event)); - event.events = EPOLLIN; - event.data.ptr = 0; - if(epoll_ctl(_queueFd, EPOLL_CTL_ADD, _fdIntrRead, &event) != 0) - { - Ice::SocketException ex(__FILE__, __LINE__); - ex.error = IceInternal::getSocketErrno(); - throw ex; - } -#else - _queueFd = kqueue(); - if(_queueFd < 0) - { - Ice::SocketException ex(__FILE__, __LINE__); - ex.error = getSocketErrno(); - throw ex; - } - struct kevent event; - EV_SET(&event, _fdIntrRead, EVFILT_READ, EV_ADD, 0, 0, 0); - if(kevent(_queueFd, &event, 1, 0, 0, 0) < 0) - { - Ice::SocketException ex(__FILE__, __LINE__); - ex.error = IceInternal::getSocketErrno(); - throw ex; - } -#endif -#elif defined(ICE_USE_SELECT) - _fdsInUse = 1; - FD_ZERO(&_readFdSet); - FD_ZERO(&_writeFdSet); - FD_ZERO(&_errorFdSet); - FD_SET(_fdIntrRead, &_readFdSet); -#else - struct pollfd pollFd; - pollFd.fd = _fdIntrRead; - pollFd.events = POLLIN; - _pollFdSet.push_back(pollFd); -#endif - } - - ~Selector() - { -#if defined(ICE_USE_EPOLL) || defined(ICE_USE_KQUEUE) - try - { - closeSocket(_queueFd); - } - catch(const Ice::LocalException& ex) - { - Ice::Error out(_instance->initializationData().logger); - out << "exception in selector while calling closeSocket():\n" << ex; - } -#endif +}; - try - { - closeSocket(_fdIntrWrite); - } - catch(const Ice::LocalException& ex) - { - Ice::Error out(_instance->initializationData().logger); - out << "exception in selector while calling closeSocket():\n" << ex; - } +#ifdef ICE_USE_IOCP - try - { - closeSocket(_fdIntrRead); - } - catch(const Ice::LocalException& ex) - { - Ice::Error out(_instance->initializationData().logger); - out << "exception in selector while calling closeSocket():\n" << ex; - } - } +class Selector +{ +public: - void add(T* handler, SocketStatus status, bool noInterrupt = false) - { - assert(status != Finished); -#if defined(ICE_USE_EPOLL) || defined(ICE_USE_KQUEUE) -#if defined(ICE_USE_EPOLL) - epoll_event event; - memset(&event, 0, sizeof(epoll_event)); - event.events = status == NeedRead ? EPOLLIN : EPOLLOUT; - event.data.ptr = handler; - if(epoll_ctl(_queueFd, EPOLL_CTL_ADD, handler->_fd, &event) != 0) -#else // ICE_USE_KQUEUE - struct kevent event; - if(status == NeedRead) - { - EV_SET(&event, handler->_fd, EVFILT_READ, EV_ADD, 0, 0, handler); - } - else - { - EV_SET(&event, handler->_fd, EVFILT_WRITE, EV_ADD, 0, 0, handler); - } - if(kevent(_queueFd, &event, 1, 0, 0, 0) < 0) -#endif - { - Ice::Error out(_instance->initializationData().logger); - out << "error while adding filedescriptor to selector:\n"; - out << IceUtilInternal::errorToString(IceInternal::getSocketErrno()); - } - ++_count; -#else // ICE_USE_SELECT or ICE_USE_POLL - if(noInterrupt) - { - processInterrupt(); - addImpl(handler, status); - } - else - { - _changes.push_back(ChangeInfo(handler, status, false)); - setInterrupt(); - } -#endif - } + Selector(const InstancePtr&); + ~Selector(); - void update(T* handler, SocketStatus oldStatus, SocketStatus newStatus) - { - // Note: can only be called from the select() thread (remove/add don't use interrupts) - assert(newStatus != Finished); -#if defined(ICE_USE_EPOLL) - epoll_event event; - memset(&event, 0, sizeof(epoll_event)); - event.events = newStatus == NeedRead ? EPOLLIN : EPOLLOUT; - event.data.ptr = handler; - if(epoll_ctl(_queueFd, EPOLL_CTL_MOD, handler->_fd, &event) != 0) - { - Ice::Error out(_instance->initializationData().logger); - out << "error while updating filedescriptor from selector:\n"; - out << IceUtilInternal::errorToString(IceInternal::getSocketErrno()); - } -#else - remove(handler, oldStatus, true); - add(handler, newStatus, true); -#endif - } + void setup(int); + void destroy(); - void remove(T* handler, SocketStatus status, bool noInterrupt = false) - { -#if defined(ICE_USE_EPOLL) || defined(ICE_USE_KQUEUE) -#if defined(ICE_USE_EPOLL) - epoll_event event; - memset(&event, 0, sizeof(epoll_event)); - event.events = 0; - int rs = epoll_ctl(_queueFd, EPOLL_CTL_DEL, handler->_fd, &event); -#else // ICE_USE_KQUEUE - struct kevent event; - if(status == NeedRead) - { - EV_SET(&event, handler->_fd, EVFILT_READ, EV_DELETE, 0, 0, 0); - } - else - { - EV_SET(&event, handler->_fd, EVFILT_WRITE, EV_DELETE, 0, 0, 0); - } - int rs = kevent(_queueFd, &event, 1, 0, 0, 0); -#endif - if(rs < 0) - { - // - // It's possible for the socket to already be closed at this point. - // - //Ice::Error out(_instance->initializationData().logger); - //out << "error while removing filedescriptor from epoll set:\n"; - //out << IceUtilInternal::errorToString(IceInternal::getSocketErrno()); - } - --_count; -#else - if(noInterrupt) - { - processInterrupt(); - removeImpl(handler, status); - } - else - { - _changes.push_back(ChangeInfo(handler, status, true)); - setInterrupt(); - } -#endif - } + void initialize(EventHandler*); + void update(EventHandler*, SocketOperation, SocketOperation); + void finish(EventHandler*); - int select() - { - while(true) - { - int ret; - _nSelectedReturned = 0; - _nSelected = 0; -#if defined(ICE_USE_EPOLL) - ret = epoll_wait(_queueFd, &_events[0], _events.size(), _timeout > 0 ? _timeout * 1000 : -1); -#elif defined(ICE_USE_KQUEUE) - assert(!_events.empty()); - if(_timeout > 0) - { - struct timespec ts; - ts.tv_sec = _timeout; - ts.tv_nsec = 0; - ret = kevent(_queueFd, 0, 0, &_events[0], _events.size(), &ts); - } - else - { - ret = kevent(_queueFd, 0, 0, &_events[0], _events.size(), 0); - } -#elif defined(ICE_USE_SELECT) - fd_set* rFdSet = fdSetCopy(_selectedReadFdSet, _readFdSet); - fd_set* wFdSet = fdSetCopy(_selectedWriteFdSet, _writeFdSet); - fd_set* eFdSet = fdSetCopy(_selectedErrorFdSet, _errorFdSet); - if(_timeout > 0) - { - struct timeval tv; - tv.tv_sec = _timeout; - tv.tv_usec = 0; - ret = ::select(0, rFdSet, wFdSet, eFdSet, &tv); // The first parameter is ignored on Windows - } - else - { - ret = ::select(0, rFdSet, wFdSet, eFdSet, 0); // The first parameter is ignored on Windows - } -#else - ret = poll(&_pollFdSet[0], _pollFdSet.size(), _timeout > 0 ? _timeout * 1000 : -1); -#endif - if(ret == SOCKET_ERROR) - { - if(interrupted()) - { - continue; - } - - assert(false); - Ice::SocketException ex(__FILE__, __LINE__); - ex.error = IceInternal::getSocketErrno(); - throw ex; - } - - assert(ret >= 0); - _nSelected = static_cast<unsigned int>(ret); - if(_nSelected == 0) - { - assert(_timeout > 0); - _timeout = 0; - } - return _nSelected; - } - } + EventHandler* getNextHandler(SocketOperation&, int); - T* getNextSelected() - { - assert(_nSelected > 0); + HANDLE getIOCPHandle() { return _handle; } + +private: -#if defined(ICE_USE_EPOLL) || defined(ICE_USE_KQUEUE) - if(_nSelectedReturned == _nSelected) - { - if(_count != _events.size()) - { - _events.resize(_count); - } - return 0; - } + const InstancePtr _instance; + HANDLE _handle; +}; - // - // Round robin for the filedescriptors. - // - T* larger = 0; - T* smallest = 0; - for(unsigned int i = 0; i < _nSelected; ++i) - { -#if defined(ICE_USE_EPOLL) - T* handler = reinterpret_cast<T*>(_events[i].data.ptr); -#else - T* handler = reinterpret_cast<T*>(_events[i].udata); -#endif - if(!handler) // _fdIntrRead - { - assert(_nSelectedReturned > 0 && _interruptCount == 0); - continue; - } - - if(handler->_fd > _lastFd && (larger == 0 || handler->_fd < larger->_fd)) - { - larger = handler; - } - - if(smallest == 0 || handler->_fd < smallest->_fd) - { - smallest = handler; - } - } +#elif defined(ICE_USE_KQUEUE) || defined(ICE_USE_EPOLL) - ++_nSelectedReturned; - if(larger) - { - _lastFd = larger->_fd; - return larger; - } - else - { - assert(smallest); - _lastFd = smallest->_fd; - return smallest; - } -#else - if(_nSelectedReturned == _nSelected) - { - return 0; - } +class Selector +{ +public: - // - // Round robin for the filedescriptors. - // - SOCKET largerFd = INVALID_SOCKET; - SOCKET smallestFd = INVALID_SOCKET; -#if defined(ICE_USE_SELECT) - if(_selectedReadFdSet.fd_count == 0 && _selectedWriteFdSet.fd_count == 0 && _selectedErrorFdSet.fd_count == 0) - { - Error out(_instance->initializationData().logger); - out << "select() in selector returned " << _nSelected << " but no filedescriptor is ready"; - return 0; - } + Selector(const InstancePtr&); + ~Selector(); - const fd_set* fdSet; - if(_nSelectedReturned < _selectedReadFdSet.fd_count) - { - fdSet = &_selectedReadFdSet; - } - else if(_nSelectedReturned < _selectedWriteFdSet.fd_count + _selectedReadFdSet.fd_count) - { - fdSet = &_selectedWriteFdSet; - } - else - { - fdSet = &_selectedErrorFdSet; - } + void destroy(); - for(u_short i = 0; i < fdSet->fd_count; ++i) - { - SOCKET fd = fdSet->fd_array[i]; -#else - for(std::vector<struct pollfd>::const_iterator p = _pollFdSet.begin(); p != _pollFdSet.end(); ++p) - { - if(p->revents == 0) - { - continue; - } - SOCKET fd = p->fd; -#endif - if(fd == _fdIntrRead) - { - assert(_nSelectedReturned > 0 && _interruptCount == 0); - continue; - } - - assert(fd != INVALID_SOCKET); - if(fd > _lastFd && (largerFd == INVALID_SOCKET || largerFd > fd)) - { - largerFd = fd; - } - - if(smallestFd == INVALID_SOCKET || fd < smallestFd) - { - smallestFd = fd; - } - } + void initialize(EventHandler*) + { + // Nothing to do + } + void update(EventHandler*, SocketOperation, SocketOperation); + void enable(EventHandler*, SocketOperation); + void disable(EventHandler*, SocketOperation); + void finish(EventHandler*); - if(largerFd != INVALID_SOCKET) - { - _lastFd = largerFd; - } - else - { - assert(smallestFd != INVALID_SOCKET); - _lastFd = smallestFd; - } +#if defined(ICE_USE_KQUEUE) + void updateSelector(); +#endif - typename std::map<SOCKET, T*>::const_iterator q = _handlerMap.find(_lastFd); - if(q == _handlerMap.end()) + void + startSelect() + { +#ifdef ICE_USE_KQUEUE + _selecting = true; + if(!_changes.empty()) { - Ice::Error out(_instance->initializationData().logger); - out << "filedescriptor " << _lastFd << " not registered with selector"; - return 0; + updateSelector(); } - ++_nSelectedReturned; - return q->second; #endif } - bool processInterrupt() + void + finishSelect() { -#if !defined(ICE_USE_EPOLL) && !defined(ICE_USE_KQUEUE) - assert(_changes.size() <= _interruptCount); - while(!_changes.empty()) - { - clearInterrupt(); - ChangeInfo& change = _changes.front(); - if(change.remove) - { - removeImpl(change.handler, change.status); - } - else - { - addImpl(change.handler, change.status); - } - _changes.pop_front(); - } +#ifdef ICE_USE_KQUEUE + _selecting = false; #endif - return _interruptCount == 0; // No more interrupts to process. } - bool isInterrupted() - { - return _interruptCount > 0; - } + void select(std::vector<std::pair<EventHandler*, SocketOperation> >&, int); - void setInterrupt() - { - if(++_interruptCount == 1) - { - char c = 0; - while(true) - { -#ifdef _WIN32 - if(::send(_fdIntrWrite, &c, 1, 0) == SOCKET_ERROR) +private: + + const InstancePtr _instance; +#if defined(ICE_USE_EPOLL) + std::vector<struct epoll_event> _events; #else - if(::write(_fdIntrWrite, &c, 1) == SOCKET_ERROR) + std::vector<struct kevent> _events; + std::vector<struct kevent> _changes; + bool _selecting; #endif - { - if(interrupted()) - { - continue; - } - - Ice::SocketException ex(__FILE__, __LINE__); - ex.error = IceInternal::getSocketErrno(); - throw ex; - } - break; - } - } - } + int _queueFd; +}; - bool clearInterrupt() - { - assert(_interruptCount > 0); - if(--_interruptCount == 0) - { - char c; +#elif defined(ICE_USE_SELECT) || defined(ICE_USE_POLL) - while(true) - { - ssize_t ret; -#ifdef _WIN32 - ret = ::recv(_fdIntrRead, &c, 1, 0); -#else - ret = ::read(_fdIntrRead, &c, 1); -#endif - if(ret == SOCKET_ERROR) - { - if(interrupted()) - { - continue; - } - - Ice::SocketException ex(__FILE__, __LINE__); - ex.error = IceInternal::getSocketErrno(); - throw ex; - } - break; - } - ++_nSelectedReturned; - return false; - } - return true; - } +class Selector +{ +public: -#if defined(ICE_USE_SELECT) - void incFdsInUse() - { - if(_fdsInUse + 1 > FD_SETSIZE) - { - Ice::Warning warn(_instance->initializationData().logger); - warn << "maximum number of connections exceeded"; - - // - // No appropriate errno. - // - Ice::SocketException ex(__FILE__, __LINE__); - ex.error = 0; - throw ex; - } - ++_fdsInUse; - } + Selector(const InstancePtr&); + ~Selector(); - void decFdsInUse() + void destroy(); + + void initialize(EventHandler*) { - // This is windows specific since every other platform uses an API - // that doesn't have a specific FD limit. - if(_fdsInUse <= 1) - { - Trace trace(_instance->initializationData().logger, "ThreadPool"); - trace << "selector: about to assert"; - } - --_fdsInUse; + // Nothing to do } -#endif + void update(EventHandler*, SocketOperation, SocketOperation); + void enable(EventHandler*, SocketOperation); + void disable(EventHandler*, SocketOperation); + void finish(EventHandler*); + + void startSelect(); + void finishSelect(); + void select(std::vector<std::pair<EventHandler*, SocketOperation> >&, int); private: -#if !defined(ICE_USE_EPOLL) && !defined(ICE_USE_KQUEUE) - void addImpl(T* handler, SocketStatus status) - { - assert(_handlerMap.find(handler->_fd) == _handlerMap.end()); - _handlerMap.insert(make_pair(handler->_fd, handler)); -#if defined(ICE_USE_SELECT) - switch(status) - { - case NeedRead: - FD_SET(handler->_fd, &_readFdSet); - break; - case NeedWrite: - FD_SET(handler->_fd, &_writeFdSet); - break; - case NeedConnect: - FD_SET(handler->_fd, &_writeFdSet); - FD_SET(handler->_fd, &_errorFdSet); - break; - case Finished: - assert(false); - } -#else - struct pollfd pollFd; - pollFd.fd = handler->_fd; - pollFd.events = status == NeedRead ? POLLIN : POLLOUT; - _pollFdSet.push_back(pollFd); -#endif - } + void updateSelector(); + void updateImpl(EventHandler*); - void removeImpl(T* handler, SocketStatus status) - { - typename std::map<SOCKET, T*>::iterator p = _handlerMap.find(handler->_fd); - assert(p != _handlerMap.end()); - _handlerMap.erase(p); -#if defined(ICE_USE_SELECT) - switch(status) - { - case NeedRead: - FD_CLR(handler->_fd, &_readFdSet); - break; - case NeedWrite: - FD_CLR(handler->_fd, &_writeFdSet); - break; - case NeedConnect: - FD_CLR(handler->_fd, &_writeFdSet); - FD_CLR(handler->_fd, &_errorFdSet); - break; - case Finished: - assert(false); - } -#else - for(std::vector<struct pollfd>::iterator p = _pollFdSet.begin(); p != _pollFdSet.end(); ++p) - { - if(p->fd == handler->_fd) - { - _pollFdSet.erase(p); - break; - } - } -#endif - } -#endif + const InstancePtr _instance; - InstancePtr _instance; - int _timeout; - SOCKET _lastFd; - unsigned int _nSelected; - unsigned int _nSelectedReturned; SOCKET _fdIntrRead; SOCKET _fdIntrWrite; - unsigned int _interruptCount; + bool _selecting; + bool _interrupted; -#if defined(ICE_USE_EPOLL) || defined(ICE_USE_KQUEUE) -#if defined(ICE_USE_EPOLL) - std::vector<struct epoll_event> _events; -#else - std::vector<struct kevent> _events; -#endif - int _queueFd; - unsigned int _count; -#else - - struct ChangeInfo - { - ChangeInfo(T* h, SocketStatus s, bool r) : handler(h), status(s), remove(r) - { - } - T* handler; - SocketStatus status; - bool remove; - }; - typename std::list<ChangeInfo> _changes; // handler set for addition; null for removal. - typename std::map<SOCKET, T*> _handlerMap; + std::vector<std::pair<EventHandler*, SocketOperation> > _changes; + std::map<SOCKET, EventHandler*> _handlers; #if defined(ICE_USE_SELECT) fd_set _readFdSet; @@ -674,7 +167,6 @@ private: fd_set _selectedReadFdSet; fd_set _selectedWriteFdSet; fd_set _selectedErrorFdSet; - int _fdsInUse; fd_set* fdSetCopy(fd_set& dest, fd_set& src) @@ -690,9 +182,10 @@ private: #else std::vector<struct pollfd> _pollFdSet; #endif -#endif }; +#endif + } #endif diff --git a/cpp/src/Ice/SelectorF.h b/cpp/src/Ice/SelectorF.h deleted file mode 100644 index 8d2ac54bf9c..00000000000 --- a/cpp/src/Ice/SelectorF.h +++ /dev/null @@ -1,28 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2009 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 ICE_SELECTOR_F_H -#define ICE_SELECTOR_F_H - -namespace IceInternal -{ - -enum SocketStatus -{ - Finished, - NeedConnect, - NeedRead, - NeedWrite -}; - -template<class T> class Selector; - -}; - -#endif diff --git a/cpp/src/Ice/SelectorThread.cpp b/cpp/src/Ice/SelectorThread.cpp deleted file mode 100644 index 511bd47a184..00000000000 --- a/cpp/src/Ice/SelectorThread.cpp +++ /dev/null @@ -1,319 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2009 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/DisableWarnings.h> -#include <Ice/SelectorThread.h> -#include <Ice/Network.h> -#include <Ice/Instance.h> -#include <Ice/PropertiesI.h> -#include <Ice/LoggerUtil.h> - -using namespace std; -using namespace Ice; -using namespace IceInternal; - -ICE_DECLSPEC_EXPORT IceUtil::Shared* IceInternal::upCast(SelectorThread* p) { return p; } - -IceInternal::SelectorThread::SelectorThread(const InstancePtr& instance) : - _instance(instance), - _destroyed(false), - _selector(instance), - _timer(_instance->timer()) -{ - __setNoDelete(true); - try - { - _thread = new HelperThread(this); - bool hasPriority = _instance->initializationData().properties->getProperty("Ice.ThreadPriority") != ""; - int priority = _instance->initializationData().properties->getPropertyAsInt("Ice.ThreadPriority"); - if(hasPriority) - { - _thread->start(0, priority); - } - else - { - _thread->start(); - } - } - catch(const IceUtil::Exception& ex) - { - { - Error out(_instance->initializationData().logger); - out << "cannot create thread for selector thread:\n" << ex; -#ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); -#endif - } - _thread = 0; - __setNoDelete(false); - throw; - } - catch(...) - { - { - Error out(_instance->initializationData().logger); - out << "cannot create thread for selector thread"; - } - _thread = 0; - __setNoDelete(false); - throw; - } - __setNoDelete(false); -} - -IceInternal::SelectorThread::~SelectorThread() -{ - assert(_destroyed); -} - -void -IceInternal::SelectorThread::destroy() -{ - Lock sync(*this); - assert(!_destroyed); - _destroyed = true; - _selector.setInterrupt(); -} - -void -IceInternal::SelectorThread::incFdsInUse() -{ -#ifdef ICE_USE_SELECT - Lock sync(*this); - _selector.incFdsInUse(); -#endif -} - -void -IceInternal::SelectorThread::decFdsInUse() -{ -#ifdef ICE_USE_SELECT - Lock sync(*this); - _selector.decFdsInUse(); -#endif -} - -void -IceInternal::SelectorThread::_register(SOCKET fd, const SocketReadyCallbackPtr& cb, SocketStatus status, int timeout) -{ - Lock sync(*this); - assert(!_destroyed); // The selector thread is destroyed after the incoming/outgoing connection factories. - assert(status != Finished); - assert(cb->_status == Finished); - - cb->_fd = fd; - cb->_status = status; - cb->_timeout = timeout; - if(cb->_timeout >= 0) - { - _timer->schedule(cb, IceUtil::Time::milliSeconds(cb->_timeout)); - } - - _selector.add(cb.get(), cb->_status); -} - -void -IceInternal::SelectorThread::unregister(const SocketReadyCallbackPtr& cb) -{ - // Note: unregister should only be called from the socketReady() call-back. - Lock sync(*this); - assert(!_destroyed); // The selector thread is destroyed after the incoming/outgoing connection factories. - assert(cb->_fd != INVALID_SOCKET); - assert(cb->_status != Finished); - - _selector.remove(cb.get(), cb->_status, true); // No interrupt needed, it's always called from the selector thread. - cb->_status = Finished; -} - -void -IceInternal::SelectorThread::finish(const SocketReadyCallbackPtr& cb) -{ - Lock sync(*this); - assert(!_destroyed); // The selector thread is destroyed after the incoming/outgoing connection factories. - assert(cb->_fd != INVALID_SOCKET); - assert(cb->_status != Finished); - - _selector.remove(cb.get(), cb->_status); - cb->_status = Finished; - - _finished.push_back(cb); - _selector.setInterrupt(); -} - -void -IceInternal::SelectorThread::joinWithThread() -{ - assert(_destroyed); - if(_thread) - { - _thread->getThreadControl().join(); - } -} - -void -IceInternal::SelectorThread::run() -{ - while(true) - { - try - { - _selector.select(); - } - catch(const Ice::LocalException& ex) - { - Error out(_instance->initializationData().logger); - out << "exception in selector thread:\n" << ex; -#ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); -#endif - continue; - } - - vector<pair<SocketReadyCallbackPtr, SocketStatus> > readyList; - bool finished = false; - - { - Lock sync(*this); - if(_selector.isInterrupted()) - { - if(_selector.processInterrupt()) - { - continue; - } - - // - // There are two possiblities for an interrupt: - // - // 1. The selector thread has been destroyed. - // 2. A callback is being finished (closed). - // - - // - // Thread destroyed? - // - if(_destroyed) - { - break; - } - - do - { - SocketReadyCallbackPtr cb = _finished.front(); - _finished.pop_front(); - readyList.push_back(make_pair(cb, Finished)); - } - while(_selector.clearInterrupt()); // As long as there are interrupts. - finished = true; - } - else - { - // - // Examine the selection key set. - // - SocketReadyCallbackPtr cb; - while(cb = _selector.getNextSelected()) - { - readyList.push_back(make_pair(cb, cb->_status)); - } - } - } - - vector<pair<SocketReadyCallbackPtr, SocketStatus> >::const_iterator p; - for(p = readyList.begin(); p != readyList.end(); ++p) - { - const SocketReadyCallbackPtr cb = p->first; - const SocketStatus previousStatus = p->second; - SocketStatus status = Finished; - try - { - if(cb->_timeout >= 0) - { - _timer->cancel(cb); - } - - if(finished) - { - cb->socketFinished(); - } - else - { - status = cb->socketReady(); - } - } - catch(const Ice::Exception& ex) - { - Error out(_instance->initializationData().logger); - out << "exception in selector thread while calling socketReady():\n" << ex.what(); -#ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); -#endif - status = Finished; - } - catch(const std::exception& ex) - { - Error out(_instance->initializationData().logger); - out << "exception in selector thread while calling socketReady():\n" << ex.what(); - status = Finished; - } - catch(...) - { - Error out(_instance->initializationData().logger); - out << "unknown exception in selector thread while calling socketReady()"; - status = Finished; - } - - if(status != Finished) - { - if(status != previousStatus) - { - Lock sync(*this); - if(cb->_status != Finished) // The callback might have been finished concurrently. - { - _selector.update(cb.get(), cb->_status, status); - cb->_status = status; - } - } - - if(cb->_timeout >= 0) - { - _timer->schedule(cb, IceUtil::Time::milliSeconds(cb->_timeout)); - } - } - } - } - - assert(_destroyed); -} - -IceInternal::SelectorThread::HelperThread::HelperThread(const SelectorThreadPtr& selectorThread) : - IceUtil::Thread("Ice selector thread"), - _selectorThread(selectorThread) -{ -} - -void -IceInternal::SelectorThread::HelperThread::run() -{ - try - { - _selectorThread->run(); - } - catch(const std::exception& ex) - { - Error out(_selectorThread->_instance->initializationData().logger); - out << "exception in selector thread:\n" << ex.what(); - } - catch(...) - { - Error out(_selectorThread->_instance->initializationData().logger); - out << "unknown exception in selector thread"; - } - - _selectorThread = 0; // Break cyclic dependency. -} diff --git a/cpp/src/Ice/SelectorThread.h b/cpp/src/Ice/SelectorThread.h deleted file mode 100644 index 2e169925f48..00000000000 --- a/cpp/src/Ice/SelectorThread.h +++ /dev/null @@ -1,78 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2009 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 ICE_SELECTOR_THREAD_H -#define ICE_SELECTOR_THREAD_H - -#include <IceUtil/Shared.h> -#include <IceUtil/Handle.h> -#include <IceUtil/Mutex.h> -#include <IceUtil/Thread.h> -#include <IceUtil/Timer.h> - -#include <Ice/Config.h> -#include <Ice/SelectorThreadF.h> -#include <Ice/SocketReadyCallback.h> -#include <Ice/InstanceF.h> -#include <Ice/Selector.h> - -#include <deque> - -namespace IceInternal -{ - -class SelectorThread : public IceUtil::Shared, IceUtil::Mutex -{ -public: - - SelectorThread(const InstancePtr&); - virtual ~SelectorThread(); - - void destroy(); - - void incFdsInUse(); - void decFdsInUse(); - - void _register(SOCKET, const SocketReadyCallbackPtr&, SocketStatus status, int timeout); - void unregister(const SocketReadyCallbackPtr&); - void finish(const SocketReadyCallbackPtr&); - - void joinWithThread(); - -private: - - void run(); - - class HelperThread : public IceUtil::Thread - { - public: - - HelperThread(const SelectorThreadPtr&); - virtual void run(); - - private: - - SelectorThreadPtr _selectorThread; - }; - friend class HelperThread; - - InstancePtr _instance; - bool _destroyed; - - Selector<SocketReadyCallback> _selector; - - std::deque<SocketReadyCallbackPtr> _finished; - - IceUtil::ThreadPtr _thread; - IceUtil::TimerPtr _timer; -}; - -} - -#endif diff --git a/cpp/src/Ice/SelectorThreadF.h b/cpp/src/Ice/SelectorThreadF.h deleted file mode 100644 index 19f9d6b1e4f..00000000000 --- a/cpp/src/Ice/SelectorThreadF.h +++ /dev/null @@ -1,26 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2009 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 ICE_SELECTOR_THREAD_F_H -#define ICE_SELECTOR_THREAD_F_H - -#include <IceUtil/Shared.h> - -#include <Ice/Handle.h> - -namespace IceInternal -{ - -class SelectorThread; -ICE_API IceUtil::Shared* upCast(SelectorThread*); -typedef Handle<SelectorThread> SelectorThreadPtr; - -} - -#endif diff --git a/cpp/src/Ice/SocketReadyCallback.h b/cpp/src/Ice/SocketReadyCallback.h deleted file mode 100644 index 383f6a0fca7..00000000000 --- a/cpp/src/Ice/SocketReadyCallback.h +++ /dev/null @@ -1,59 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2009 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 ICE_SOCKET_READY_CALLBACK_H -#define ICE_SOCKET_READY_CALLBACK_H - -#include <IceUtil/Timer.h> -#include <IceUtil/Handle.h> -#include <Ice/Network.h> -#include <Ice/SelectorF.h> - -namespace IceInternal -{ - -class SocketReadyCallback : public IceUtil::TimerTask -{ -public: - - SocketReadyCallback() : _fd(INVALID_SOCKET), _status(Finished), _timeout(0) - { - } - - virtual SocketStatus socketReady() = 0; - - virtual void socketFinished() = 0; - - // - // The selector thread doesn't unregister the callback when sockectTimeout is called; socketTimeout - // must unregister the callback either explicitly with unregister() or by shutting down the socket - // (if necessary). - // - virtual void socketTimeout() = 0; - -private: - - void - runTimerTask() - { - this->socketTimeout(); - } - - friend class SelectorThread; - friend class Selector<SocketReadyCallback>; - - SOCKET _fd; - SocketStatus _status; - int _timeout; -}; -typedef IceUtil::Handle<SocketReadyCallback> SocketReadyCallbackPtr; - -} - -#endif diff --git a/cpp/src/Ice/StringConverter.cpp b/cpp/src/Ice/StringConverter.cpp index 52c9dc2ed4b..3485a19c7e3 100644 --- a/cpp/src/Ice/StringConverter.cpp +++ b/cpp/src/Ice/StringConverter.cpp @@ -229,7 +229,7 @@ extern "C" using namespace Ice; ICE_DECLSPEC_EXPORT Plugin* -createStringConverter(const CommunicatorPtr& communicator, const string& name, const StringSeq& args) +createIceStringConverter(const CommunicatorPtr& communicator, const string& name, const StringSeq& args) { StringConverterPtr stringConverter; WstringConverterPtr wstringConverter; diff --git a/cpp/src/Ice/TcpAcceptor.cpp b/cpp/src/Ice/TcpAcceptor.cpp index d2c4778069b..0b008234f82 100644 --- a/cpp/src/Ice/TcpAcceptor.cpp +++ b/cpp/src/Ice/TcpAcceptor.cpp @@ -16,15 +16,28 @@ #include <Ice/Exception.h> #include <Ice/Properties.h> +#ifdef ICE_USE_IOCP +# include <Mswsock.h> +#endif + using namespace std; using namespace Ice; using namespace IceInternal; -SOCKET -IceInternal::TcpAcceptor::fd() +NativeInfoPtr +IceInternal::TcpAcceptor::getNativeInfo() +{ + return this; +} + +#ifdef ICE_USE_IOCP +AsyncInfo* +IceInternal::TcpAcceptor::getAsyncInfo(SocketOperation op) { - return _fd; + assert(op == SocketOperationRead); + return &_info; } +#endif void IceInternal::TcpAcceptor::close() @@ -78,19 +91,86 @@ IceInternal::TcpAcceptor::listen() } } +#ifdef ICE_USE_IOCP +void +IceInternal::TcpAcceptor::startAccept() +{ + LPFN_ACCEPTEX AcceptEx = NULL; // a pointer to the 'AcceptEx()' function + GUID GuidAcceptEx = WSAID_ACCEPTEX; // The Guid + DWORD dwBytes; + if(WSAIoctl(_fd, + SIO_GET_EXTENSION_FUNCTION_POINTER, + &GuidAcceptEx, + sizeof(GuidAcceptEx), + &AcceptEx, + sizeof(AcceptEx), + &dwBytes, + NULL, + NULL) == SOCKET_ERROR) + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + + assert(_acceptFd == INVALID_SOCKET); + _acceptFd = createSocket(false, _addr.ss_family); + const int sz = static_cast<int>(_acceptBuf.size() / 2); + if(!AcceptEx(_fd, _acceptFd, &_acceptBuf[0], 0, sz, sz, &_info.count, &_info)) + { + if(WSAGetLastError() != WSA_IO_PENDING) + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + } +} + +void +IceInternal::TcpAcceptor::finishAccept() +{ + if(_info.count == SOCKET_ERROR || _fd == INVALID_SOCKET) + { + closeSocketNoThrow(_acceptFd); + _acceptFd = INVALID_SOCKET; + _acceptError = _info.error; + } +} +#endif + TransceiverPtr IceInternal::TcpAcceptor::accept() { - SOCKET fd = doAccept(_fd); - setBlock(fd, false); - setTcpBufSize(fd, _instance->initializationData().properties, _logger); + SOCKET fd; +#ifndef ICE_USE_IOCP + fd = doAccept(_fd); +#else + if(_acceptFd == INVALID_SOCKET) + { + SocketException ex(__FILE__, __LINE__); + ex.error = _acceptError; + throw ex; + } + if(setsockopt(_acceptFd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, (char*)&_acceptFd, sizeof(_acceptFd)) == + SOCKET_ERROR) + { + closeSocketNoThrow(_acceptFd); + _acceptFd = INVALID_SOCKET; + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + + fd = _acceptFd; + _acceptFd = INVALID_SOCKET; +#endif if(_traceLevels->network >= 1) { Trace out(_logger, _traceLevels->networkCat); out << "accepted tcp connection\n" << fdToString(fd); } - return new TcpTransceiver(_instance, fd, true); } @@ -111,6 +191,10 @@ IceInternal::TcpAcceptor::TcpAcceptor(const InstancePtr& instance, const string& _traceLevels(instance->traceLevels()), _logger(instance->initializationData().logger), _addr(getAddressForServer(host, port, instance->protocolSupport())) +#ifdef ICE_USE_IOCP + , _acceptFd(INVALID_SOCKET), + _info(SocketOperationRead) +#endif { #ifdef SOMAXCONN _backlog = instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.TCP.Backlog", SOMAXCONN); @@ -118,41 +202,39 @@ IceInternal::TcpAcceptor::TcpAcceptor(const InstancePtr& instance, const string& _backlog = instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.TCP.Backlog", 511); #endif - try - { - _fd = createSocket(false, _addr.ss_family); - setBlock(_fd, false); - setTcpBufSize(_fd, _instance->initializationData().properties, _logger); + _fd = createSocket(false, _addr.ss_family); +#ifdef ICE_USE_IOCP + _acceptBuf.resize((sizeof(sockaddr_storage) + 16) * 2); +#endif + setBlock(_fd, false); + setTcpBufSize(_fd, _instance->initializationData().properties, _logger); #ifndef _WIN32 - // - // Enable SO_REUSEADDR on Unix platforms to allow re-using the - // socket even if it's in the TIME_WAIT state. On Windows, - // this doesn't appear to be necessary and enabling - // SO_REUSEADDR would actually not be a good thing since it - // allows a second process to bind to an address even it's - // already bound by another process. - // - // TODO: using SO_EXCLUSIVEADDRUSE on Windows would probably - // be better but it's only supported by recent Windows - // versions (XP SP2, Windows Server 2003). - // - setReuseAddress(_fd, true); + // + // Enable SO_REUSEADDR on Unix platforms to allow re-using the + // socket even if it's in the TIME_WAIT state. On Windows, + // this doesn't appear to be necessary and enabling + // SO_REUSEADDR would actually not be a good thing since it + // allows a second process to bind to an address even it's + // already bound by another process. + // + // TODO: using SO_EXCLUSIVEADDRUSE on Windows would probably + // be better but it's only supported by recent Windows + // versions (XP SP2, Windows Server 2003). + // + setReuseAddress(_fd, true); #endif - if(_traceLevels->network >= 2) - { - Trace out(_logger, _traceLevels->networkCat); - out << "attempting to bind to tcp socket " << toString(); - } - const_cast<struct sockaddr_storage&>(_addr) = doBind(_fd, _addr); - } - catch(...) + if(_traceLevels->network >= 2) { - _fd = INVALID_SOCKET; - throw; + Trace out(_logger, _traceLevels->networkCat); + out << "attempting to bind to tcp socket " << toString(); } + const_cast<struct sockaddr_storage&>(_addr) = doBind(_fd, _addr); } IceInternal::TcpAcceptor::~TcpAcceptor() { assert(_fd == INVALID_SOCKET); +#ifdef ICE_USE_IOCP + assert(_acceptFd == INVALID_SOCKET); +#endif } diff --git a/cpp/src/Ice/TcpAcceptor.h b/cpp/src/Ice/TcpAcceptor.h index e933c7c6d25..64406b330be 100644 --- a/cpp/src/Ice/TcpAcceptor.h +++ b/cpp/src/Ice/TcpAcceptor.h @@ -25,13 +25,21 @@ namespace IceInternal class TcpEndpoint; -class TcpAcceptor : public Acceptor +class TcpAcceptor : public Acceptor, public NativeInfo { public: - virtual SOCKET fd(); + virtual NativeInfoPtr getNativeInfo(); +#ifdef ICE_USE_IOCP + virtual AsyncInfo* getAsyncInfo(SocketOperation); +#endif + virtual void close(); virtual void listen(); +#ifdef ICE_USE_IOCP + virtual void startAccept(); + virtual void finishAccept(); +#endif virtual TransceiverPtr accept(); virtual std::string toString() const; @@ -48,8 +56,13 @@ private: const ::Ice::LoggerPtr _logger; const struct sockaddr_storage _addr; - SOCKET _fd; int _backlog; +#ifdef ICE_USE_IOCP + SOCKET _acceptFd; + int _acceptError; + std::vector<char> _acceptBuf; + AsyncInfo _info; +#endif }; } diff --git a/cpp/src/Ice/TcpConnector.cpp b/cpp/src/Ice/TcpConnector.cpp index 310e58bc058..9d45fdf82bd 100644 --- a/cpp/src/Ice/TcpConnector.cpp +++ b/cpp/src/Ice/TcpConnector.cpp @@ -31,19 +31,9 @@ IceInternal::TcpConnector::connect() try { - SOCKET fd = createSocket(false, _addr.ss_family); - setBlock(fd, false); - setTcpBufSize(fd, _instance->initializationData().properties, _logger); - bool connected = doConnect(fd, _addr); - if(connected) - { - if(_traceLevels->network >= 1) - { - Trace out(_logger, _traceLevels->networkCat); - out << "tcp connection established\n" << fdToString(fd); - } - } - return new TcpTransceiver(_instance, fd, connected); + TransceiverPtr transceiver = new TcpTransceiver(_instance, createSocket(false, _addr.ss_family), false); + dynamic_cast<TcpTransceiver*>(transceiver.get())->connect(_addr); + return transceiver; } catch(const Ice::LocalException& ex) { diff --git a/cpp/src/Ice/TcpTransceiver.cpp b/cpp/src/Ice/TcpTransceiver.cpp index 8089d5e4a9b..88efe8c0dc4 100644 --- a/cpp/src/Ice/TcpTransceiver.cpp +++ b/cpp/src/Ice/TcpTransceiver.cpp @@ -20,17 +20,73 @@ using namespace std; using namespace Ice; using namespace IceInternal; -SOCKET -IceInternal::TcpTransceiver::fd() +NativeInfoPtr +IceInternal::TcpTransceiver::getNativeInfo() { - assert(_fd != INVALID_SOCKET); - return _fd; + return this; +} + +#ifdef ICE_USE_IOCP +AsyncInfo* +IceInternal::TcpTransceiver::getAsyncInfo(SocketOperation status) +{ + switch(status) + { + case SocketOperationRead: + return &_read; + case SocketOperationWrite: + return &_write; + default: + assert(false); + return 0; + } +} +#endif + +SocketOperation +IceInternal::TcpTransceiver::initialize() +{ + if(_state == StateNeedConnect) + { + _state = StateConnectPending; + return SocketOperationConnect; + } + else if(_state <= StateConnectPending) + { + try + { +#ifndef ICE_USE_IOCP + doFinishConnect(_fd); +#else + doFinishConnectAsync(_fd, _write); +#endif + _state = StateConnected; + _desc = fdToString(_fd); + } + catch(const Ice::LocalException& ex) + { + if(_traceLevels->network >= 2) + { + Trace out(_logger, _traceLevels->networkCat); + out << "failed to establish tcp connection\n" << _desc << "\n" << ex; + } + throw; + } + + if(_traceLevels->network >= 1) + { + Trace out(_logger, _traceLevels->networkCat); + out << "tcp connection established\n" << _desc; + } + } + assert(_state == StateConnected); + return SocketOperationNone; } void IceInternal::TcpTransceiver::close() { - if(_traceLevels->network >= 1) + if(_state == StateConnected && _traceLevels->network >= 1) { Trace out(_logger, _traceLevels->networkCat); out << "closing tcp connection\n" << toString(); @@ -55,21 +111,21 @@ IceInternal::TcpTransceiver::write(Buffer& buf) // Its impossible for the packetSize to be more than an Int. int packetSize = static_cast<int>(buf.b.end() - buf.i); -#ifdef _WIN32 +#ifdef ICE_USE_IOCP // // Limit packet size to avoid performance problems on WIN32 // - if(packetSize > _maxPacketSize) + if(_maxSendPacketSize > 0 && packetSize > _maxSendPacketSize) { - packetSize = _maxPacketSize; + packetSize = _maxSendPacketSize; } #endif while(buf.i != buf.b.end()) { assert(_fd != INVALID_SOCKET); - ssize_t ret = ::send(_fd, reinterpret_cast<const char*>(&*buf.i), packetSize, 0); + ssize_t ret = ::send(_fd, reinterpret_cast<const char*>(&*buf.i), packetSize, 0); if(ret == 0) { ConnectionLostException ex(__FILE__, __LINE__); @@ -213,61 +269,188 @@ IceInternal::TcpTransceiver::read(Buffer& buf) buf.i += ret; - if(packetSize > buf.b.end() - buf.i) - { - packetSize = static_cast<int>(buf.b.end() - buf.i); - } + packetSize = static_cast<int>(buf.b.end() - buf.i); } return true; } -string -IceInternal::TcpTransceiver::type() const +#ifdef ICE_USE_IOCP +void +IceInternal::TcpTransceiver::startWrite(Buffer& buf) { - return "tcp"; -} + if(_state < StateConnected) + { + doConnectAsync(_fd, _connectAddr, _write); + _desc = fdToString(_fd); + return; + } -string -IceInternal::TcpTransceiver::toString() const -{ - return _desc; + assert(!buf.b.empty() && buf.i != buf.b.end()); + + int packetSize = static_cast<int>(buf.b.end() - buf.i); + if(_maxSendPacketSize > 0 && packetSize > _maxSendPacketSize) + { + packetSize = _maxSendPacketSize; + } + + _write.buf.len = packetSize; + _write.buf.buf = reinterpret_cast<char*>(&*buf.i); + int err = WSASend(_fd, &_write.buf, 1, &_write.count, 0, &_write, NULL); + if(err == SOCKET_ERROR) + { + if(!wouldBlock()) + { + if(connectionLost()) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + } + } } -SocketStatus -IceInternal::TcpTransceiver::initialize() +void +IceInternal::TcpTransceiver::finishWrite(Buffer& buf) { - if(_state == StateNeedConnect) + if(_state < StateConnected) { - _state = StateConnectPending; - return NeedConnect; + return; } - else if(_state <= StateConnectPending) + + if(_write.count == SOCKET_ERROR) { - try + WSASetLastError(_write.error); + if(connectionLost()) { - doFinishConnect(_fd); - _state = StateConnected; - _desc = fdToString(_fd); + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; } - catch(const Ice::LocalException& ex) + else { - if(_traceLevels->network >= 2) + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + } + + if(_traceLevels->network >= 3) + { + int packetSize = static_cast<int>(buf.b.end() - buf.i); + if(_maxSendPacketSize > 0 && packetSize > _maxSendPacketSize) + { + packetSize = _maxSendPacketSize; + } + Trace out(_logger, _traceLevels->networkCat); + out << "sent " << _write.count << " of " << packetSize << " bytes via tcp\n" << toString(); + } + + if(_stats) + { + _stats->bytesSent(type(), _write.count); + } + + buf.i += _write.count; +} + +void +IceInternal::TcpTransceiver::startRead(Buffer& buf) +{ + int packetSize = static_cast<int>(buf.b.end() - buf.i); + if(_maxReceivePacketSize > 0 && packetSize > _maxReceivePacketSize) + { + packetSize = _maxReceivePacketSize; + } + + assert(!buf.b.empty() && buf.i != buf.b.end()); + + _read.buf.len = packetSize; + _read.buf.buf = reinterpret_cast<char*>(&*buf.i); + int err = WSARecv(_fd, &_read.buf, 1, &_read.count, &_read.flags, &_read, NULL); + if(err == SOCKET_ERROR) + { + if(!wouldBlock()) + { + if(connectionLost()) { - Trace out(_logger, _traceLevels->networkCat); - out << "failed to establish tcp connection\n" << _desc << "\n" << ex; + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; } - throw; } + } +} - if(_traceLevels->network >= 1) +void +IceInternal::TcpTransceiver::finishRead(Buffer& buf) +{ + if(_read.count == SOCKET_ERROR) + { + WSASetLastError(_read.error); + if(connectionLost()) { - Trace out(_logger, _traceLevels->networkCat); - out << "tcp connection established\n" << _desc; + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; } } - assert(_state == StateConnected); - return Finished; + else if(_read.count == 0) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = 0; + throw ex; + } + + if(_traceLevels->network >= 3) + { + int packetSize = static_cast<int>(buf.b.end() - buf.i); + if(_maxReceivePacketSize > 0 && packetSize > _maxReceivePacketSize) + { + packetSize = _maxReceivePacketSize; + } + Trace out(_logger, _traceLevels->networkCat); + out << "received " << _read.count << " of " << packetSize << " bytes via tcp\n" << toString(); + } + + if(_stats) + { + _stats->bytesReceived(type(), static_cast<Int>(_read.count)); + } + + buf.i += _read.count; +} +#endif + +string +IceInternal::TcpTransceiver::type() const +{ + return "tcp"; +} + +string +IceInternal::TcpTransceiver::toString() const +{ + return _desc; } void @@ -280,23 +463,36 @@ IceInternal::TcpTransceiver::checkSendSize(const Buffer& buf, size_t messageSize } IceInternal::TcpTransceiver::TcpTransceiver(const InstancePtr& instance, SOCKET fd, bool connected) : + NativeInfo(fd), _traceLevels(instance->traceLevels()), _logger(instance->initializationData().logger), _stats(instance->initializationData().stats), - _fd(fd), _state(connected ? StateConnected : StateNeedConnect), - _desc(fdToString(_fd)) + _desc(connected ? fdToString(_fd) : string()) +#ifdef ICE_USE_IOCP + , _read(SocketOperationRead), + _write(SocketOperationWrite) +#endif { -#ifdef _WIN32 + setBlock(_fd, false); + setTcpBufSize(_fd, instance->initializationData().properties, _logger); + +#ifdef ICE_USE_IOCP // // On Windows, limiting the buffer size is important to prevent // poor throughput performances when transfering large amount of // data. See Microsoft KB article KB823764. // - _maxPacketSize = IceInternal::getSendBufferSize(_fd) / 2; - if(_maxPacketSize < 512) + _maxSendPacketSize = IceInternal::getSendBufferSize(fd) / 2; + if(_maxSendPacketSize < 512) + { + _maxSendPacketSize = 0; + } + + _maxReceivePacketSize = IceInternal::getRecvBufferSize(fd); + if(_maxReceivePacketSize < 512) { - _maxPacketSize = 0; + _maxReceivePacketSize = 0; } #endif } @@ -305,3 +501,34 @@ IceInternal::TcpTransceiver::~TcpTransceiver() { assert(_fd == INVALID_SOCKET); } + +void +IceInternal::TcpTransceiver::connect(const struct sockaddr_storage& addr) +{ +#ifndef ICE_USE_IOCP + try + { + if(doConnect(_fd, addr)) + { + _state = StateConnected; + _desc = fdToString(_fd); + if(_traceLevels->network >= 1) + { + Trace out(_logger, _traceLevels->networkCat); + out << "tcp connection established\n" << _desc; + } + } + else + { + _desc = fdToString(_fd); + } + } + catch(...) + { + _fd = INVALID_SOCKET; + throw; + } +#else + _connectAddr = addr; +#endif +} diff --git a/cpp/src/Ice/TcpTransceiver.h b/cpp/src/Ice/TcpTransceiver.h index 36077057d7b..7c1c80c94b7 100644 --- a/cpp/src/Ice/TcpTransceiver.h +++ b/cpp/src/Ice/TcpTransceiver.h @@ -22,7 +22,7 @@ namespace IceInternal class TcpConnector; class TcpAcceptor; -class TcpTransceiver : public Transceiver +class TcpTransceiver : public Transceiver, public NativeInfo { enum State { @@ -33,19 +33,32 @@ class TcpTransceiver : public Transceiver public: - virtual SOCKET fd(); + virtual NativeInfoPtr getNativeInfo(); +#ifdef ICE_USE_IOCP + virtual AsyncInfo* getAsyncInfo(SocketOperation); +#endif + + virtual SocketOperation initialize(); virtual void close(); virtual bool write(Buffer&); virtual bool read(Buffer&); +#ifdef ICE_USE_IOCP + virtual void startWrite(Buffer&); + virtual void finishWrite(Buffer&); + virtual void startRead(Buffer&); + virtual void finishRead(Buffer&); +#endif virtual std::string type() const; virtual std::string toString() const; - virtual SocketStatus initialize(); virtual void checkSendSize(const Buffer&, size_t); private: TcpTransceiver(const InstancePtr&, SOCKET, bool); virtual ~TcpTransceiver(); + + void connect(const struct sockaddr_storage&); + friend class TcpConnector; friend class TcpAcceptor; @@ -53,11 +66,14 @@ private: const Ice::LoggerPtr _logger; const Ice::StatsPtr _stats; - SOCKET _fd; State _state; std::string _desc; -#ifdef _WIN32 - int _maxPacketSize; +#ifdef ICE_USE_IOCP + struct sockaddr_storage _connectAddr; + AsyncInfo _read; + AsyncInfo _write; + int _maxSendPacketSize; + int _maxReceivePacketSize; #endif }; diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp index 835b28b3c08..d74b0222ddc 100644 --- a/cpp/src/Ice/ThreadPool.cpp +++ b/cpp/src/Ice/ThreadPool.cpp @@ -7,6 +7,13 @@ // // ********************************************************************** +// +// The following is required for GetThreadIOPendingFlag +// +#if defined(_WIN32) && !defined(_WIN32_WINNT) +# define _WIN32_WINNT 0x0501 +#endif + #include <IceUtil/DisableWarnings.h> #include <Ice/ThreadPool.h> #include <Ice/EventHandler.h> @@ -14,7 +21,6 @@ #include <Ice/LocalException.h> #include <Ice/Instance.h> #include <Ice/LoggerUtil.h> -#include <Ice/Functional.h> #include <Ice/Protocol.h> #include <Ice/ObjectAdapterFactory.h> #include <Ice/Properties.h> @@ -25,47 +31,358 @@ using namespace Ice; using namespace IceInternal; ICE_DECLSPEC_EXPORT IceUtil::Shared* IceInternal::upCast(ThreadPool* p) { return p; } +ICE_DECLSPEC_EXPORT IceUtil::Shared* IceInternal::upCast(ThreadPoolWorkItem* p) { return p; } + +namespace +{ + +class ShutdownWorkItem : public ThreadPoolWorkItem +{ +public: + + ShutdownWorkItem(const InstancePtr& instance) : _instance(instance) + { + } + + virtual void + execute(ThreadPoolCurrent& current) + { + current.ioCompleted(); + try + { + _instance->objectAdapterFactory()->shutdown(); + } + catch(const CommunicatorDestroyedException&) + { + } + } + +private: + + const InstancePtr _instance; +}; + +class FinishedWorkItem : public ThreadPoolWorkItem +{ +public: + + FinishedWorkItem(const EventHandlerPtr& handler) : _handler(handler) + { + } + + virtual void + execute(ThreadPoolCurrent& current) + { + _handler->finished(current); + } + +private: + + const EventHandlerPtr _handler; +}; + +class JoinThreadWorkItem : public ThreadPoolWorkItem +{ +public: + + JoinThreadWorkItem(const IceUtil::ThreadPtr& thread) : _thread(thread) + { + } + + virtual void + execute(ThreadPoolCurrent&) + { + // No call to ioCompleted, this shouldn't block (and we don't want to cause + // a new thread to be started). + _thread->getThreadControl().join(); + } + +private: + + IceUtil::ThreadPtr _thread; +}; + +// +// Exception raised by the thread pool work queue when the thread pool +// is destroyed. +// +class ThreadPoolDestroyedException +{ +}; + +} + +namespace IceInternal +{ + +class ThreadPoolWorkQueue : public EventHandler, public IceUtil::Mutex +{ +public: + + ThreadPoolWorkQueue(ThreadPool* threadPool, const InstancePtr& instance, Selector& selector) : + _threadPool(threadPool), + _instance(instance), + _selector(selector), + _destroyed(false) +#ifdef ICE_USE_IOCP + , _info(SocketOperationRead) +#endif + { +#ifndef ICE_USE_IOCP + SOCKET fds[2]; + createPipe(fds); + _fdIntrRead = fds[0]; + _fdIntrWrite = fds[1]; + + _selector.initialize(this); + _selector.update(this, SocketOperationNone, SocketOperationRead); +#endif + } + + ~ThreadPoolWorkQueue() + { + assert(_destroyed); + +#ifndef ICE_USE_IOCP + try + { + closeSocket(_fdIntrRead); + } + catch(const LocalException& ex) + { + Error out(_instance->initializationData().logger); + out << "exception in selector while calling closeSocket():\n" << ex; + } + + try + { + closeSocket(_fdIntrWrite); + } + catch(const LocalException& ex) + { + Error out(_instance->initializationData().logger); + out << "exception in selector while calling closeSocket():\n" << ex; + } +#endif + } + + void destroy() + { + Lock sync(*this); + assert(!_destroyed); + _destroyed = true; + postMessage(); + } + + void queue(const ThreadPoolWorkItemPtr& item) + { + Lock sync(*this); + if(_destroyed) + { + throw CommunicatorDestroyedException(__FILE__, __LINE__); + } + _workItems.push_back(item); + if(_workItems.size() == 1) + { + postMessage(); + } + } + +#ifdef ICE_USE_IOCP + bool startAsync(SocketOperation) + { + assert(false); + return false; + } + + bool finishAsync(SocketOperation) + { + assert(false); + return false; + } +#endif + + virtual void message(ThreadPoolCurrent& current) + { + ThreadPoolWorkItemPtr workItem; + { + Lock sync(*this); + if(!_workItems.empty()) + { + workItem = _workItems.front(); + _workItems.pop_front(); + + if(_workItems.empty()) + { +#ifndef ICE_USE_IOCP + char c; + while(true) + { + ssize_t ret; +#ifdef _WIN32 + ret = ::recv(_fdIntrRead, &c, 1, 0); +#else + ret = ::read(_fdIntrRead, &c, 1); +#endif + if(ret == SOCKET_ERROR) + { + if(interrupted()) + { + continue; + } + + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + break; + } +#endif + } + } + else + { + assert(_destroyed); + } + } + + if(workItem) + { + workItem->execute(current); + } + else + { + current.ioCompleted(); + throw ThreadPoolDestroyedException(); + } + } + + virtual void finished(ThreadPoolCurrent&) + { + assert(false); + } + + virtual string toString() const + { + return "work queue"; + } + + virtual NativeInfoPtr getNativeInfo() + { +#ifndef ICE_USE_IOCP + return new NativeInfo(_fdIntrRead); +#endif + return 0; + } + + virtual void postMessage() + { +#ifndef ICE_USE_IOCP + char c = 0; + while(true) + { +#ifdef _WIN32 + if(::send(_fdIntrWrite, &c, 1, 0) == SOCKET_ERROR) +#else + if(::write(_fdIntrWrite, &c, 1) == SOCKET_ERROR) +#endif + { + if(interrupted()) + { + continue; + } + + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + break; + } +#else + if(!PostQueuedCompletionStatus(_selector.getIOCPHandle(), 0, reinterpret_cast<ULONG_PTR>(this), &_info)) + { + SocketException ex(__FILE__, __LINE__); + ex.error = GetLastError(); + throw ex; + } +#endif + } + +private: + + const ThreadPool* _threadPool; + const InstancePtr _instance; + Selector& _selector; + bool _destroyed; +#ifdef ICE_USE_IOCP + AsyncInfo _info; +#else + SOCKET _fdIntrRead; + SOCKET _fdIntrWrite; +#endif + list<ThreadPoolWorkItemPtr> _workItems; +}; + +} IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& prefix, int timeout) : _instance(instance), _destroyed(false), _prefix(prefix), - _selector(instance, timeout), + _selector(instance), _size(0), + _sizeIO(0), _sizeMax(0), _sizeWarn(0), _serialize(_instance->initializationData().properties->getPropertyAsInt(_prefix + ".Serialize") > 0), + _hasPriority(false), + _priority(0), + _serverIdleTime(timeout), + _threadIdleTime(0), _stackSize(0), - _running(0), _inUse(0), - _load(1.0), - _promote(true), - _warnUdp(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Datagrams") > 0), - _hasPriority(false), - _priority(0) +#ifndef ICE_USE_IOCP + _inUseIO(0), + _nextHandler(_handlers.end()), +#endif + _promote(true) { + PropertiesPtr properties = _instance->initializationData().properties; + +#ifdef _WIN32 + SYSTEM_INFO sysInfo; + GetSystemInfo(&sysInfo); + int nProcessors = sysInfo.dwNumberOfProcessors; +#else + int nProcessors = static_cast<int>(sysconf(_SC_NPROCESSORS_ONLN)); +#endif + // // We use just one thread as the default. This is the fastest // possible setting, still allows one level of nesting, and // doesn't require to make the servants thread safe. // - int size = _instance->initializationData().properties->getPropertyAsIntWithDefault(_prefix + ".Size", 1); + int size = properties->getPropertyAsIntWithDefault(_prefix + ".Size", 1); if(size < 1) { Warning out(_instance->initializationData().logger); out << _prefix << ".Size < 1; Size adjusted to 1"; size = 1; } - - int sizeMax = _instance->initializationData().properties->getPropertyAsIntWithDefault(_prefix + ".SizeMax", size); + + int sizeMax = properties->getPropertyAsIntWithDefault(_prefix + ".SizeMax", size); + if(sizeMax == -1) + { + sizeMax = nProcessors; + } if(sizeMax < size) { Warning out(_instance->initializationData().logger); out << _prefix << ".SizeMax < " << _prefix << ".Size; SizeMax adjusted to Size (" << size << ")"; sizeMax = size; - } + } - int sizeWarn = _instance->initializationData().properties->getPropertyAsInt(_prefix + ".SizeWarn"); + int sizeWarn = properties->getPropertyAsIntWithDefault(_prefix + ".SizeWarn", sizeMax * 80 / 100); if(sizeWarn != 0 && sizeWarn < size) { Warning out(_instance->initializationData().logger); @@ -79,11 +396,25 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p sizeWarn = sizeMax; } + int threadIdleTime = properties->getPropertyAsIntWithDefault(_prefix + ".ThreadIdleTime", 60); + if(threadIdleTime < 0) + { + Warning out(_instance->initializationData().logger); + out << _prefix << ".ThreadIdleTime < 0; ThreadIdleTime adjusted to 0"; + threadIdleTime = 0; + } + const_cast<int&>(_size) = size; const_cast<int&>(_sizeMax) = sizeMax; const_cast<int&>(_sizeWarn) = sizeWarn; + const_cast<int&>(_sizeIO) = min(sizeMax, nProcessors); + const_cast<int&>(_threadIdleTime) = threadIdleTime; - int stackSize = _instance->initializationData().properties->getPropertyAsInt(_prefix + ".StackSize"); +#ifdef ICE_USE_IOCP + _selector.setup(_sizeIO); +#endif + + int stackSize = properties->getPropertyAsInt(_prefix + ".StackSize"); if(stackSize < 0) { Warning out(_instance->initializationData().logger); @@ -92,15 +423,16 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p } const_cast<size_t&>(_stackSize) = static_cast<size_t>(stackSize); - - const_cast<bool&>(_hasPriority) = _instance->initializationData().properties->getProperty(_prefix + ".ThreadPriority") != ""; - const_cast<int&>(_priority) = _instance->initializationData().properties->getPropertyAsInt(_prefix + ".ThreadPriority"); + const_cast<bool&>(_hasPriority) = properties->getProperty(_prefix + ".ThreadPriority") != ""; + const_cast<int&>(_priority) = properties->getPropertyAsInt(_prefix + ".ThreadPriority"); if(!_hasPriority) { - const_cast<bool&>(_hasPriority) = _instance->initializationData().properties->getProperty("Ice.ThreadPriority") != ""; - const_cast<int&>(_priority) = _instance->initializationData().properties->getPropertyAsInt("Ice.ThreadPriority"); + const_cast<bool&>(_hasPriority) = properties->getProperty("Ice.ThreadPriority") != ""; + const_cast<int&>(_priority) = properties->getPropertyAsInt("Ice.ThreadPriority"); } + _workQueue = new ThreadPoolWorkQueue(this, _instance, _selector); + if(_instance->traceLevels()->threadPool >= 1) { Trace out(_instance->initializationData().logger, _instance->traceLevels()->threadPoolCat); @@ -122,8 +454,7 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p { thread->start(_stackSize); } - _threads.push_back(thread); - ++_running; + _threads.insert(thread); } } catch(const IceUtil::Exception& ex) @@ -131,9 +462,6 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p { Error out(_instance->initializationData().logger); out << "cannot create thread for `" << _prefix << "':\n" << ex; -#ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); -#endif } destroy(); @@ -157,171 +485,83 @@ IceInternal::ThreadPool::~ThreadPool() void IceInternal::ThreadPool::destroy() { - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); + Lock sync(*this); assert(!_destroyed); _destroyed = true; - _selector.setInterrupt(); + _workQueue->destroy(); } void -IceInternal::ThreadPool::incFdsInUse() +IceInternal::ThreadPool::initialize(const EventHandlerPtr& handler) { -#ifdef ICE_USE_SELECT - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - _selector.incFdsInUse(); -#endif + Lock sync(*this); + assert(!_destroyed); + _selector.initialize(handler.get()); } void -IceInternal::ThreadPool::decFdsInUse() +IceInternal::ThreadPool::update(const EventHandlerPtr& handler, SocketOperation remove, SocketOperation add) { -#ifdef ICE_USE_SELECT - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - _selector.decFdsInUse(); -#endif + Lock sync(*this); + assert(!_destroyed); + _selector.update(handler.get(), remove, add); } void -IceInternal::ThreadPool::_register(const EventHandlerPtr& handler) +IceInternal::ThreadPool::finish(const EventHandlerPtr& handler) { - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - assert(!_destroyed && handler->_fd != INVALID_SOCKET); - if(!handler->_registered) - { - if(!handler->_serializing) - { - _selector.add(handler.get(), NeedRead); - } - handler->_registered = true; - } -} + Lock sync(*this); + assert(!_destroyed); +#ifndef ICE_USE_IOCP + _selector.finish(handler.get()); // This must be called before! + _workQueue->queue(new FinishedWorkItem(handler)); -void -IceInternal::ThreadPool::unregister(const EventHandlerPtr& handler) -{ - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - assert(!_destroyed && handler->_fd != INVALID_SOCKET); - if(handler->_registered) + // + // Clear the current ready handlers. The handlers from this vector can't be + // reference counted and a handler might get destroyed once it's finished. + // + _handlers.clear(); + _nextHandler = _handlers.end(); +#else + // If there are no pending asynchronous operations, we can call finish on the handler now. + if(!handler->_pending) { - if(!handler->_serializing) - { - _selector.remove(handler.get(), NeedRead); - } - handler->_registered = false; + _workQueue->queue(new FinishedWorkItem(handler)); + _selector.finish(handler.get()); } -} - -void -IceInternal::ThreadPool::finish(const EventHandlerPtr& handler) -{ - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - assert(!_destroyed && handler->_fd != INVALID_SOCKET); - if(handler->_registered) + else { - if(!handler->_serializing) - { - _selector.remove(handler.get(), NeedRead); - } - handler->_registered = false; + handler->_finish = true; } - _finished.push_back(handler); - _selector.setInterrupt(); +#endif } void IceInternal::ThreadPool::execute(const ThreadPoolWorkItemPtr& workItem) { - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - if(_destroyed) - { - throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__); - } - _workItems.push_back(workItem); - _selector.setInterrupt(); -} - -void -IceInternal::ThreadPool::promoteFollower(EventHandler* handler) -{ - if(_sizeMax > 1) - { - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - - if(_serialize && handler) - { - handler->_serializing = true; - if(handler->_registered) - { - _selector.remove(handler, NeedRead, true); // No interrupt, no thread is blocked on select(). - } - } - - assert(!_promote); - _promote = true; - notify(); - - if(!_destroyed) - { - assert(_inUse >= 0); - ++_inUse; - - if(_inUse == _sizeWarn) - { - Warning out(_instance->initializationData().logger); - out << "thread pool `" << _prefix << "' is running low on threads\n" - << "Size=" << _size << ", " << "SizeMax=" << _sizeMax << ", " << "SizeWarn=" << _sizeWarn; - } - - assert(_inUse <= _running); - if(_inUse < _sizeMax && _inUse == _running) - { - if(_instance->traceLevels()->threadPool >= 1) - { - Trace out(_instance->initializationData().logger, _instance->traceLevels()->threadPoolCat); - out << "growing " << _prefix << ": Size = " << (_running + 1); - } - - try - { - IceUtil::ThreadPtr thread = new EventHandlerThread(this); - if(_hasPriority) - { - thread->start(_stackSize, _priority); - } - else - { - thread->start(_stackSize); - } - _threads.push_back(thread); - ++_running; - } - catch(const IceUtil::Exception& ex) - { - Error out(_instance->initializationData().logger); - out << "cannot create thread for `" << _prefix << "':\n" << ex; -#ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); -#endif - } - } - } - } + _workQueue->queue(workItem); } void IceInternal::ThreadPool::joinWithAllThreads() { + assert(_destroyed); + // // _threads is immutable after destroy() has been called, // therefore no synchronization is needed. (Synchronization // wouldn't be possible here anyway, because otherwise the other // threads would never terminate.) // - assert(_destroyed); - for(vector<IceUtil::ThreadPtr>::iterator p = _threads.begin(); p != _threads.end(); ++p) + for(set<IceUtil::ThreadPtr>::iterator p = _threads.begin(); p != _threads.end(); ++p) { (*p)->getThreadControl().join(); } + +#ifndef ICE_USE_IOCP + _selector.finish(_workQueue.get()); +#endif + _selector.destroy(); } string @@ -330,505 +570,461 @@ IceInternal::ThreadPool::prefix() const return _prefix; } -bool -IceInternal::ThreadPool::run() +void +IceInternal::ThreadPool::run(const IceUtil::ThreadPtr& thread) { - ThreadPoolPtr self = this; - - if(_sizeMax > 1) - { - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - - while(!_promote) - { - wait(); - } - - _promote = false; - } - +#ifndef ICE_USE_IOCP + ThreadPoolCurrent current(_instance, this); + bool select = false; + vector<pair<EventHandler*, SocketOperation> > handlers; while(true) { - int ret; - try + if(current._handler) { - ret = _selector.select(); + try + { + current._handler->message(current); + } + catch(ThreadPoolDestroyedException&) + { + return; + } + catch(const exception& ex) + { + Error out(_instance->initializationData().logger); + out << "exception in `" << _prefix << "':\n" << ex << "\nevent handler: " + << current._handler->toString(); + } + catch(...) + { + Error out(_instance->initializationData().logger); + out << "exception in `" << _prefix << "':\nevent handler: " << current._handler->toString(); + } } - catch(const Ice::LocalException& ex) + else if(select) { - Error out(_instance->initializationData().logger); - out << "exception in `" << _prefix << "':\n" << ex; -#ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); -#endif - continue; + try + { + _selector.select(handlers, _serverIdleTime); + } + catch(SelectorTimeoutException&) + { + Lock sync(*this); + if(!_destroyed && _inUse == 0) + { + _workQueue->queue(new ShutdownWorkItem(_instance)); // Select timed-out. + } + continue; + } } - EventHandlerPtr handler; - ThreadPoolWorkItemPtr workItem; - bool finished = false; - bool shutdown = false; - - if(ret == 0) // We initiate a shutdown if there is a thread pool timeout. { - shutdown = true; - } - else - { - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - if(_selector.isInterrupted()) + Lock sync(*this); + if(!current._handler) { - if(_selector.processInterrupt()) + if(select) { - continue; + _handlers.swap(handlers); + _nextHandler = _handlers.begin(); + _selector.finishSelect(); + select = false; } - - // - // There are three possiblities for an interrupt: - // - // 1. An event handler is being finished (closed). - // - // 2. The thread pool has been destroyed. - // - // 3. A work item has been schedulded. - // - if(!_finished.empty()) + else if(!current._leader && followerWait(thread, current)) { - _selector.clearInterrupt(); - handler = _finished.front(); - _finished.pop_front(); - finished = true; + return; // Wait timed-out. } - else if(!_workItems.empty()) + } + else if(_sizeMax > 1) + { + if(!current._ioCompleted) { // - // Work items must be executed first even if the thread pool is destroyed. + // The handler didn't call ioCompleted() so we take care of decreasing + // the IO thread count now. // - _selector.clearInterrupt(); - workItem = _workItems.front(); - _workItems.pop_front(); + --_inUseIO; } - else if(_destroyed) + else { // - // Don't clear the interrupt if destroyed, so that the other threads exit as well. + // If the handler called ioCompleted(), we re-enable the handler in + // case it was disabled and we decrease the number of thread in use. // - return true; + _selector.enable(current._handler.get(), current.operation); + assert(_inUse > 0); + --_inUse; } - else - { - assert(false); - } - } - else - { - handler = _selector.getNextSelected(); - if(!handler) + + if(!current._leader && followerWait(thread, current)) { - continue; + return; // Wait timed-out. } } - } - - // - // Now we are outside the thread synchronization. - // - if(shutdown) - { - // - // Initiate server shutdown. - // - ObjectAdapterFactoryPtr factory; - try - { - factory = _instance->objectAdapterFactory(); - } - catch(const Ice::CommunicatorDestroyedException&) - { - continue; - } - - promoteFollower(); - factory->shutdown(); // - // No "continue", because we want shutdown to be done in - // its own thread from this pool. Therefore we called - // promoteFollower(). + // Get the next ready handler. // - } - else if(workItem) - { - try + if(_nextHandler != _handlers.end()) { - // - // "self" is faster than "this", as the reference - // count is not modified. - // - workItem->execute(self); + current._ioCompleted = false; + current._handler = _nextHandler->first; + current.operation = _nextHandler->second; + ++_nextHandler; } - catch(const LocalException& ex) + else { - Error out(_instance->initializationData().logger); - out << "exception in `" << _prefix << "' while calling execute():\n" << ex; -#ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); -#endif + current._handler = 0; } - - // - // No "continue", because we want execute() to be - // called in its own thread from this pool. Note that - // this means that execute() must call - // promoteFollower(). - // - } - else - { - assert(handler); - - if(finished) + + if(!current._handler) { // - // Notify a handler about it's removal from the thread pool. + // If there are no more ready handlers and there are still threads busy performing + // IO, we give up leadership and promote another follower (which will perform the + // select() only once all the IOs are completed). Otherwise, if there are no more + // threads peforming IOs, it's time to do another select(). // - try + if(_inUseIO > 0) { - // - // "self" is faster than "this", as the reference count is not modified. - // - handler->finished(self); + promoteFollower(current); } - catch(const LocalException& ex) + else { - Error out(_instance->initializationData().logger); - out << "exception in `" << _prefix << "' while calling finished():\n" - << ex << '\n' << handler->toString(); -#ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); -#endif + _selector.startSelect(); + select = true; } - - // - // No "continue", because we want finished() to be - // called in its own thread from this pool. Note that - // this means that finished() must call - // promoteFollower(). - // } - else + else if(_sizeMax > 1) { // - // If the handler is "readable", try to read a message. + // Increment the IO thread count and if there are still threads available + // to perform IO and more handlers ready, we promote a follower. // - BasicStream stream(_instance.get()); - if(handler->readable()) + ++_inUseIO; + if(_nextHandler != _handlers.end() && _inUseIO < _sizeIO) { - try - { - if(!read(handler)) - { - continue; // Can't read without blocking. - } - } - catch(const TimeoutException&) - { - assert(false); // This shouldn't occur as we only perform non-blocking reads. - continue; - } - catch(const DatagramLimitException&) // Expected. - { - handler->_stream.resize(0); - handler->_stream.i = stream.b.begin(); - continue; - } - catch(const SocketException& ex) + promoteFollower(current); + } + } + } + } +#else + ThreadPoolCurrent current(_instance, this); + while(true) + { + try + { + current._ioCompleted = false; + current._handler = _selector.getNextHandler(current.operation, _threadIdleTime); + } + catch(const SelectorTimeoutException&) + { + if(_sizeMax > 1) + { + Lock sync(*this); + + if(_destroyed) + { + continue; + } + else if(_inUse < static_cast<int>(_threads.size() - 1)) // If not the last idle thread, we can exit. + { + BOOL hasIO = false; + GetThreadIOPendingFlag(GetCurrentThread(), &hasIO); + if(hasIO) { - handler->exception(ex); continue; } - catch(const LocalException& ex) + + if(_instance->traceLevels()->threadPool >= 1) { - if(handler->datagram()) - { - if(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Connections") > 0) - { - Warning out(_instance->initializationData().logger); - out << "datagram connection exception:\n" << ex << '\n' << handler->toString(); - } - handler->_stream.resize(0); - handler->_stream.i = stream.b.begin(); - } - else - { - handler->exception(ex); - } - continue; + Trace out(_instance->initializationData().logger, _instance->traceLevels()->threadPoolCat); + out << "shrinking " << _prefix << ": Size = " << (_threads.size() - 1); } - - stream.swap(handler->_stream); - assert(stream.i == stream.b.end()); + _threads.erase(thread); + _workQueue->queue(new JoinThreadWorkItem(thread)); + return; } - - // - // Provide a new mesage to the handler. - // - try + else if(_inUse > 0) { // - // "self" is faster than "this", as the reference count is not modified. - // - handler->message(stream, self); + // If this is the last idle thread but there are still other threads + // busy dispatching, we go back waiting with _threadIdleTime. We only + // wait with _serverIdleTime when there's only one thread left. + // + continue; } - catch(const LocalException& ex) + assert(_threads.size() == 1); + } + + try + { + current._handler = _selector.getNextHandler(current.operation, _serverIdleTime); + } + catch(const SelectorTimeoutException&) + { + Lock sync(*this); + if(!_destroyed) { - Error out(_instance->initializationData().logger); - out << "exception in `" << _prefix << "' while calling message():\n" - << ex << '\n' << handler->toString(); -#ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); -#endif + _workQueue->queue(new ShutdownWorkItem(_instance)); } - - // - // No "continue", because we want message() to be - // called in its own thread from this pool. Note that - // this means that message() must call - // promoteFollower(). - // + continue; } } - if(_sizeMax > 1) + assert(current._handler); + try { - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); + current._handler->message(current); - if(!_destroyed) + if(_sizeMax > 1 && current._ioCompleted) { - if(_serialize && handler && handler->_serializing) - { - if(handler->_registered) - { - // No interrupt if no thread is blocked on select (_promote == true) - _selector.add(handler.get(), NeedRead, _promote); - } - handler->_serializing = false; - } + Lock sync(*this); + assert(_inUse > 0); + --_inUse; + } + } + catch(ThreadPoolDestroyedException&) + { + return; + } + catch(const exception& ex) + { + Error out(_instance->initializationData().logger); + out << "exception in `" << _prefix << "':\n" << ex << "\nevent handler: " << current._handler->toString(); + } + catch(...) + { + Error out(_instance->initializationData().logger); + out << "exception in `" << _prefix << "':\nevent handler: " << current._handler->toString(); + } + } +#endif +} - if(_size < _sizeMax) // Dynamic thread pool - { - // - // First we reap threads that have been destroyed before. - // - int sz = static_cast<int>(_threads.size()); - assert(_running <= sz); - if(_running < sz) - { - vector<IceUtil::ThreadPtr>::iterator start = - partition(_threads.begin(), _threads.end(), - IceUtil::constMemFun(&IceUtil::Thread::isAlive)); +bool +IceInternal::ThreadPool::ioCompleted(ThreadPoolCurrent& current) +{ + current._ioCompleted = true; // Set the IO completed flag to specifiy that ioCompleted() has been called. - for(vector<IceUtil::ThreadPtr>::iterator p = start; p != _threads.end(); ++p) - { - (*p)->getThreadControl().join(); - } + if(_sizeMax > 1) + { + IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); +#ifndef ICE_USE_IOCP + --_inUseIO; + + if(_serialize && !_destroyed) + { + _selector.disable(current._handler.get(), current.operation); + } - _threads.erase(start, _threads.end()); - } - - // - // Now we check if this thread can be destroyed, based - // on a load factor. - // + if(current._leader) + { + // + // If this thread is still the leader, it's time to promote a new leader. + // + promoteFollower(current); + } + else if(_promote && (_nextHandler != _handlers.end() || _inUseIO == 0)) + { + notify(); + } +#endif - // - // The load factor jumps immediately to the number of - // threads that are currently in use, but decays - // exponentially if the number of threads in use is - // smaller than the load factor. This reflects that we - // create threads immediately when they are needed, - // but want the number of threads to slowly decline to - // the configured minimum. - // - double inUse = static_cast<double>(_inUse); - if(_load < inUse) + assert(_inUse >= 0); + ++_inUse; + + if(_inUse == _sizeWarn) + { + Warning out(_instance->initializationData().logger); + out << "thread pool `" << _prefix << "' is running low on threads\n" + << "Size=" << _size << ", " << "SizeMax=" << _sizeMax << ", " << "SizeWarn=" << _sizeWarn; + } + + if(!_destroyed) + { + assert(_inUse <= static_cast<int>(_threads.size())); + if(_inUse < _sizeMax && _inUse == static_cast<int>(_threads.size())) + { + if(_instance->traceLevels()->threadPool >= 1) + { + Trace out(_instance->initializationData().logger, _instance->traceLevels()->threadPoolCat); + out << "growing " << _prefix << ": Size=" << _threads.size() + 1; + } + + try + { + IceUtil::ThreadPtr thread = new EventHandlerThread(this); + if(_hasPriority) { - _load = inUse; + thread->start(_stackSize, _priority); } else { - const double loadFactor = 0.05; // TODO: Configurable? - const double oneMinusLoadFactor = 1 - loadFactor; - _load = _load * oneMinusLoadFactor + inUse * loadFactor; - } - - if(_running > _size) - { - int load = static_cast<int>(_load + 0.5); - - // - // We add one to the load factor because on - // additional thread is needed for select(). - // - if(load + 1 < _running) - { - if(_instance->traceLevels()->threadPool >= 1) - { - Trace out(_instance->initializationData().logger, - _instance->traceLevels()->threadPoolCat); - out << "shrinking " << _prefix << ": Size = " << (_running - 1); - } - - assert(_inUse > 0); - --_inUse; - - assert(_running > 0); - --_running; - - return false; - } + thread->start(_stackSize); } + _threads.insert(thread); + } + catch(const IceUtil::Exception& ex) + { + Error out(_instance->initializationData().logger); + out << "cannot create thread for `" << _prefix << "':\n" << ex; } - - assert(_inUse > 0); - --_inUse; - } - - // - // Do not wait to be promoted again to release these objects. - // - handler = 0; - workItem = 0; - - while(!_promote) - { - wait(); } - - _promote = false; } } + + return _serialize; } +#ifdef ICE_USE_IOCP bool -IceInternal::ThreadPool::read(const EventHandlerPtr& handler) +IceInternal::ThreadPool::startMessage(ThreadPoolCurrent& current) { - BasicStream& stream = handler->_stream; + assert(current._handler->_pending & current.operation); - if(stream.i - stream.b.begin() >= headerSize) + if(current._handler->_started & current.operation) { - if(!handler->read(stream)) + assert(!(current._handler->_ready & current.operation)); + current._handler->_ready = static_cast<SocketOperation>(current._handler->_ready | current.operation); + current._handler->_started = static_cast<SocketOperation>(current._handler->_started & ~current.operation); + if(!current._handler->finishAsync(current.operation)) // Returns false if the handler is finished. { + current._handler->_pending = static_cast<SocketOperation>(current._handler->_pending & ~current.operation); + if(!current._handler->_pending && current._handler->_finish) + { + _workQueue->queue(new FinishedWorkItem(current._handler)); + _selector.finish(current._handler.get()); + } + return false; + } + } + else if(!(current._handler->_ready & current.operation) && (current._handler->_registered & current.operation)) + { + assert(!(current._handler->_started & current.operation)); + if(!current._handler->startAsync(current.operation)) + { + current._handler->_pending = static_cast<SocketOperation>(current._handler->_pending & ~current.operation); + if(!current._handler->_pending && current._handler->_finish) + { + _workQueue->queue(new FinishedWorkItem(current._handler)); + _selector.finish(current._handler.get()); + } + return false; + } + else + { + current._handler->_started = static_cast<SocketOperation>(current._handler->_started | current.operation); return false; } - assert(stream.i == stream.b.end()); - return true; } - if(stream.b.size() == 0) + if(current._handler->_registered & current.operation) { - stream.b.resize(headerSize); - stream.i = stream.b.begin(); + assert(current._handler->_ready & current.operation); + current._handler->_ready = static_cast<SocketOperation>(current._handler->_ready & ~current.operation); + return true; + } + else + { + current._handler->_pending = static_cast<SocketOperation>(current._handler->_pending & ~current.operation); + if(!current._handler->_pending && current._handler->_finish) + { + _workQueue->queue(new FinishedWorkItem(current._handler)); + _selector.finish(current._handler.get()); + } + return false; } +} - if(stream.i != stream.b.end()) +void +IceInternal::ThreadPool::finishMessage(ThreadPoolCurrent& current) +{ + if(current._handler->_registered & current.operation) { - if(!handler->read(stream)) + assert(!(current._handler->_ready & current.operation)); + if(!current._handler->startAsync(current.operation)) { - return false; + current._handler->_pending = static_cast<SocketOperation>(current._handler->_pending & ~current.operation); + } + else + { + assert(current._handler->_pending & current.operation); + current._handler->_started = static_cast<SocketOperation>(current._handler->_started | current.operation); } - assert(stream.i == stream.b.end()); } - - ptrdiff_t pos = stream.i - stream.b.begin(); - if(pos < headerSize) - { - // - // This situation is possible for small UDP packets. - // - throw IllegalMessageSizeException(__FILE__, __LINE__); - } - - stream.i = stream.b.begin(); - const Byte* m; - stream.readBlob(m, static_cast<Int>(sizeof(magic))); - if(m[0] != magic[0] || m[1] != magic[1] || m[2] != magic[2] || m[3] != magic[3]) - { - BadMagicException ex(__FILE__, __LINE__); - ex.badMagic = Ice::ByteSeq(&m[0], &m[0] + sizeof(magic)); - throw ex; - } - Byte pMajor; - Byte pMinor; - stream.read(pMajor); - stream.read(pMinor); - if(pMajor != protocolMajor - || static_cast<unsigned char>(pMinor) > static_cast<unsigned char>(protocolMinor)) - { - UnsupportedProtocolException ex(__FILE__, __LINE__); - ex.badMajor = static_cast<unsigned char>(pMajor); - ex.badMinor = static_cast<unsigned char>(pMinor); - ex.major = static_cast<unsigned char>(protocolMajor); - ex.minor = static_cast<unsigned char>(protocolMinor); - throw ex; - } - Byte eMajor; - Byte eMinor; - stream.read(eMajor); - stream.read(eMinor); - if(eMajor != encodingMajor - || static_cast<unsigned char>(eMinor) > static_cast<unsigned char>(encodingMinor)) - { - UnsupportedEncodingException ex(__FILE__, __LINE__); - ex.badMajor = static_cast<unsigned char>(eMajor); - ex.badMinor = static_cast<unsigned char>(eMinor); - ex.major = static_cast<unsigned char>(encodingMajor); - ex.minor = static_cast<unsigned char>(encodingMinor); - throw ex; - } - Byte messageType; - stream.read(messageType); - Byte compress; - stream.read(compress); - Int size; - stream.read(size); - if(size < headerSize) - { - throw IllegalMessageSizeException(__FILE__, __LINE__); - } - if(size > static_cast<Int>(_instance->messageSizeMax())) - { - Ex::throwMemoryLimitException(__FILE__, __LINE__, size, _instance->messageSizeMax()); - } - if(size > static_cast<Int>(stream.b.size())) - { - stream.b.resize(size); - } - stream.i = stream.b.begin() + pos; - - if(stream.i != stream.b.end()) + else + { + current._handler->_pending = static_cast<SocketOperation>(current._handler->_pending & ~current.operation); + } + + if(!current._handler->_pending && current._handler->_finish) + { + // There are no more pending async operations, it's time to call finish. + _workQueue->queue(new FinishedWorkItem(current._handler)); + _selector.finish(current._handler.get()); + } +} +#else +void +IceInternal::ThreadPool::promoteFollower(ThreadPoolCurrent& current) +{ + assert(!_promote && current._leader); + _promote = true; + if(_inUseIO < _sizeIO && (_nextHandler != _handlers.end() || _inUseIO == 0)) + { + notify(); + } + current._leader = false; +} + +bool +IceInternal::ThreadPool::followerWait(const IceUtil::ThreadPtr& thread, ThreadPoolCurrent& current) +{ + assert(!current._leader); + + // + // It's important to clear the handler before waiting to make sure that + // resources for the handler are released now if it's finished. We also + // clear the per-thread stream. + // + current._handler = 0; + current.stream.clear(); + current.stream.b.clear(); + + // + // Wait to be promoted and for all the IO threads to be done. + // + while(!_promote || _inUseIO == _sizeIO || _nextHandler == _handlers.end() && _inUseIO > 0) { - if(handler->datagram()) + if(_threadIdleTime) { - if(_warnUdp) + if(!timedWait(IceUtil::Time::seconds(_threadIdleTime))) { - Warning out(_instance->initializationData().logger); - out << "DatagramLimitException: maximum size of " << pos << " exceeded"; + if(!_destroyed && (!_promote || _inUseIO == _sizeIO || _nextHandler == _handlers.end() && _inUseIO > 0)) + { + if(_instance->traceLevels()->threadPool >= 1) + { + Trace out(_instance->initializationData().logger, _instance->traceLevels()->threadPoolCat); + out << "shrinking " << _prefix << ": Size=" << (_threads.size() - 1); + } + assert(_threads.size() > 1); // Can only be called by a waiting follower thread. + _threads.erase(thread); + _workQueue->queue(new JoinThreadWorkItem(thread)); + return true; + } } - throw DatagramLimitException(__FILE__, __LINE__); } else { - if(!handler->read(stream)) - { - return false; - } - assert(stream.i == stream.b.end()); + wait(); } } - - return true; + current._leader = true; // The current thread has become the leader. + _promote = false; + return false; } +#endif IceInternal::ThreadPool::EventHandlerThread::EventHandlerThread(const ThreadPoolPtr& pool) : IceUtil::Thread(pool->_prefix + " thread"), @@ -841,55 +1037,65 @@ IceInternal::ThreadPool::EventHandlerThread::run() { if(_pool->_instance->initializationData().threadHook) { - _pool->_instance->initializationData().threadHook->start(); + try + { + _pool->_instance->initializationData().threadHook->start(); + } + catch(const exception& ex) + { + Error out(_pool->_instance->initializationData().logger); + out << "thread hook start() method raised an unexpected exception in `" << _pool->_prefix << "':\n" << ex; + } + catch(...) + { + Error out(_pool->_instance->initializationData().logger); + out << "thread hook start() method raised an unexpected exception in `" << _pool->_prefix << "'"; + } } - bool promote; - try { - promote = _pool->run(); + _pool->run(this); } - catch(const Ice::Exception& ex) + catch(const exception& ex) { Error out(_pool->_instance->initializationData().logger); - out << "exception in `" << _pool->_prefix << "':\n" << ex.what(); -#ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); -#endif - promote = true; - } - catch(const std::exception& ex) - { - Error out(_pool->_instance->initializationData().logger); - out << "exception in `" << _pool->_prefix << "':\n" << ex.what(); - promote = true; + out << "exception in `" << _pool->_prefix << "':\n" << ex; } catch(...) { Error out(_pool->_instance->initializationData().logger); out << "unknown exception in `" << _pool->_prefix << "'"; - promote = true; } - if(promote && _pool->_sizeMax > 1) + if(_pool->_instance->initializationData().threadHook) { - // - // Promote a follower, but w/o modifying _inUse or creating - // new threads. - // + try { - IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*_pool.get()); - assert(!_pool->_promote); - _pool->_promote = true; - _pool->notify(); + _pool->_instance->initializationData().threadHook->stop(); + } + catch(const exception& ex) + { + Error out(_pool->_instance->initializationData().logger); + out << "thread hook stop() method raised an unexpected exception in `" << _pool->_prefix << "':\n" << ex; + } + catch(...) + { + Error out(_pool->_instance->initializationData().logger); + out << "thread hook stop() method raised an unexpected exception in `" << _pool->_prefix << "'"; } - } - - if(_pool->_instance->initializationData().threadHook) - { - _pool->_instance->initializationData().threadHook->stop(); } _pool = 0; // Break cyclic dependency. } + +ThreadPoolCurrent::ThreadPoolCurrent(const InstancePtr& instance, const ThreadPoolPtr& threadPool) : + operation(SocketOperationNone), + stream(instance.get()), + _threadPool(threadPool.get()), + _ioCompleted(false) +#ifndef ICE_USE_IOCP + , _leader(false) +#endif +{ +} diff --git a/cpp/src/Ice/ThreadPool.h b/cpp/src/Ice/ThreadPool.h index 567e6143468..1b52124ea1c 100644 --- a/cpp/src/Ice/ThreadPool.h +++ b/cpp/src/Ice/ThreadPool.h @@ -22,12 +22,17 @@ #include <Ice/PropertiesF.h> #include <Ice/EventHandlerF.h> #include <Ice/Selector.h> -#include <list> +#include <Ice/BasicStream.h> + +#include <set> namespace IceInternal { -class BasicStream; +class ThreadPoolCurrent; + +class ThreadPoolWorkQueue; +typedef IceUtil::Handle<ThreadPoolWorkQueue> ThreadPoolWorkQueuePtr; class ThreadPool : public IceUtil::Shared, public IceUtil::Monitor<IceUtil::Mutex> { @@ -38,32 +43,42 @@ public: void destroy(); - void incFdsInUse(); - void decFdsInUse(); - - void _register(const EventHandlerPtr&); - void unregister(const EventHandlerPtr&); + void initialize(const EventHandlerPtr&); + void _register(const EventHandlerPtr& handler, SocketOperation status) + { + update(handler, SocketOperationNone, status); + } + void update(const EventHandlerPtr&, SocketOperation, SocketOperation); + void unregister(const EventHandlerPtr& handler, SocketOperation status) + { + update(handler, status, SocketOperationNone); + } void finish(const EventHandlerPtr&); void execute(const ThreadPoolWorkItemPtr&); - void promoteFollower(EventHandler* = 0); void joinWithAllThreads(); std::string prefix() const; - + private: - bool run(); // Returns true if a follower should be promoted. - bool read(const EventHandlerPtr&); + void run(const IceUtil::ThreadPtr&); - InstancePtr _instance; - bool _destroyed; - const std::string _prefix; + bool ioCompleted(ThreadPoolCurrent&); - Selector<EventHandler> _selector; +#ifdef ICE_USE_IOCP + bool startMessage(ThreadPoolCurrent&); + void finishMessage(ThreadPoolCurrent&); +#else + void promoteFollower(ThreadPoolCurrent&); + bool followerWait(const IceUtil::ThreadPtr&, ThreadPoolCurrent&); +#endif - std::list<ThreadPoolWorkItemPtr> _workItems; - std::list<EventHandlerPtr> _finished; + const InstancePtr _instance; + ThreadPoolWorkQueuePtr _workQueue; + bool _destroyed; + const std::string _prefix; + Selector _selector; class EventHandlerThread : public IceUtil::Thread { @@ -76,28 +91,216 @@ private: ThreadPoolPtr _pool; }; + friend class EventHandlerThread; + friend class ThreadPoolCurrent; const int _size; // Number of threads that are pre-created. + const int _sizeIO; // Maximum number of threads that can concurrently perform IO. const int _sizeMax; // Maximum number of threads. const int _sizeWarn; // If _inUse reaches _sizeWarn, a "low on threads" warning will be printed. const bool _serialize; // True if requests need to be serialized over the connection. - + const bool _hasPriority; + const int _priority; + const int _serverIdleTime; + const int _threadIdleTime; const size_t _stackSize; - std::vector<IceUtil::ThreadPtr> _threads; // All threads, running or not. - int _running; // Number of running threads. + std::set<IceUtil::ThreadPtr> _threads; // All threads, running or not. int _inUse; // Number of threads that are currently in use. - double _load; // Current load in number of threads. +#ifndef ICE_USE_IOCP + int _inUseIO; // Number of threads that are currently performing IO. + std::vector<std::pair<EventHandler*, SocketOperation> > _handlers; + std::vector<std::pair<EventHandler*, SocketOperation> >::const_iterator _nextHandler; +#endif bool _promote; +}; - const bool _warnUdp; +class ThreadPoolCurrent +{ +public: + + ThreadPoolCurrent(const InstancePtr&, const ThreadPoolPtr&); + + SocketOperation operation; + BasicStream stream; // A per-thread stream to be used by event handlers for optimization. + + bool ioCompleted() const + { + return _threadPool->ioCompleted(const_cast<ThreadPoolCurrent&>(*this)); + } + +#ifdef ICE_USE_IOCP + bool startMessage() + { + return _threadPool->startMessage(const_cast<ThreadPoolCurrent&>(*this)); + } + + void finishMessage() + { + _threadPool->finishMessage(const_cast<ThreadPoolCurrent&>(*this)); + } +#endif + +private: + + ThreadPool* _threadPool; + EventHandlerPtr _handler; + bool _ioCompleted; +#ifndef ICE_USE_IOCP + bool _leader; +#endif + friend class ThreadPool; +}; + +class ThreadPoolWorkItem : virtual public IceUtil::Shared +{ +public: + + virtual void execute(ThreadPoolCurrent&) = 0; +}; + +// +// The ThreadPoolMessage class below hides the IOCP implementation details from +// the event handler implementations. Only event handler implementation that +// require IO need to use this class. +// +// An instance of the IOScope subclass must be created within the synchronization +// of the event handler. It takes care of calling startMessage/finishMessage for +// the IOCP implementation and ensures that finishMessage isn't called multiple +// times. +// +#ifndef ICE_USE_IOCP +template<class T> class ThreadPoolMessage +{ +public: + + class IOScope + { + public: + + IOScope(ThreadPoolMessage<T>& message) : _message(message) + { + // Nothing to do. + } + + ~IOScope() + { + // Nothing to do. + } + + operator bool() + { + return true; + } + + void completed() + { + _message._current.ioCompleted(); + } + + private: + + ThreadPoolMessage<T>& _message; + }; + friend class IOScope; + + ThreadPoolMessage(ThreadPoolCurrent& current, const T&) : _current(current) + { + } + + ~ThreadPoolMessage() + { + // Nothing to do. + } + +private: + + ThreadPoolCurrent& _current; +}; + +#else + +template<class T> class ThreadPoolMessage +{ +public: + + class IOScope + { + public: + + IOScope(ThreadPoolMessage& message) : _message(message) + { + // This must be called with the handler locked. + _finish = _message._current.startMessage(); + } + + ~IOScope() + { + if(_finish) + { + // This must be called with the handler locked. + _message._current.finishMessage(); + } + } + + operator bool() + { + return _finish; + } + + void + completed() + { + // + // Call finishMessage once IO is completed only if serialization is not enabled. + // Otherwise, finishMessage will be called when the event handler is done with + // the message (it will be called from ~ThreadPoolMessage below). + // + assert(_finish); + if(_message._current.ioCompleted()) + { + _finish = false; + _message._finish = true; + } + } + + private: + + ThreadPoolMessage& _message; + bool _finish; + }; + friend class IOScope; + + ThreadPoolMessage(ThreadPoolCurrent& current, const T& mutex) : + _current(current), _mutex(mutex), _finish(false) + { + } + + ~ThreadPoolMessage() + { + if(_finish) + { + // + // A ThreadPoolMessage instance must be created outside the synchronization + // of the event handler. We need to lock the event handler here to call + // finishMessage. + // + IceUtil::LockT<typename T> sync(_mutex); + _current.finishMessage(); + } + } + +private: + + ThreadPoolCurrent& _current; + const T& _mutex; + bool _finish; +}; +#endif - const bool _hasPriority; - const int _priority; }; -} #endif diff --git a/cpp/src/Ice/ThreadPoolF.h b/cpp/src/Ice/ThreadPoolF.h index 5a26ae48bc4..d5b8592b5ad 100644 --- a/cpp/src/Ice/ThreadPoolF.h +++ b/cpp/src/Ice/ThreadPoolF.h @@ -21,6 +21,12 @@ class ThreadPool; ICE_API IceUtil::Shared* upCast(ThreadPool*); typedef Handle<ThreadPool> ThreadPoolPtr; +class ThreadPoolWorkItem; +ICE_API IceUtil::Shared* upCast(ThreadPoolWorkItem*); +typedef Handle<ThreadPoolWorkItem> ThreadPoolWorkItemPtr; + +class ThreadPoolCurrent; + } #endif diff --git a/cpp/src/Ice/Transceiver.cpp b/cpp/src/Ice/Transceiver.cpp index d915813b4e1..0f8be3bcd27 100644 --- a/cpp/src/Ice/Transceiver.cpp +++ b/cpp/src/Ice/Transceiver.cpp @@ -14,3 +14,4 @@ using namespace Ice; using namespace IceInternal; IceUtil::Shared* IceInternal::upCast(Transceiver* p) { return p; } + diff --git a/cpp/src/Ice/Transceiver.h b/cpp/src/Ice/Transceiver.h index f2c08648eb2..56b23a61bcf 100644 --- a/cpp/src/Ice/Transceiver.h +++ b/cpp/src/Ice/Transceiver.h @@ -12,31 +12,31 @@ #include <IceUtil/Shared.h> #include <Ice/TransceiverF.h> -#include <Ice/SelectorF.h> - -#ifdef _WIN32 -# include <winsock2.h> -typedef int ssize_t; -#else -# define SOCKET int -#endif +#include <Ice/Network.h> namespace IceInternal { class Buffer; -class ICE_API Transceiver : public ::IceUtil::Shared +class ICE_API Transceiver : virtual public ::IceUtil::Shared { public: - virtual SOCKET fd() = 0; + virtual NativeInfoPtr getNativeInfo() = 0; + virtual SocketOperation initialize() = 0; virtual void close() = 0; virtual bool write(Buffer&) = 0; virtual bool read(Buffer&) = 0; +#ifdef ICE_USE_IOCP + virtual void startWrite(Buffer&) = 0; + virtual void finishWrite(Buffer&) = 0; + virtual void startRead(Buffer&) = 0; + virtual void finishRead(Buffer&) = 0; +#endif virtual std::string type() const = 0; virtual std::string toString() const = 0; - virtual SocketStatus initialize() = 0; + virtual void checkSendSize(const Buffer&, size_t) = 0; }; diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp index 79475ff8f71..30e4f7a8c07 100644 --- a/cpp/src/Ice/UdpTransceiver.cpp +++ b/cpp/src/Ice/UdpTransceiver.cpp @@ -29,17 +29,61 @@ using namespace std; using namespace Ice; using namespace IceInternal; -SOCKET -IceInternal::UdpTransceiver::fd() +NativeInfoPtr +IceInternal::UdpTransceiver::getNativeInfo() { - assert(_fd != INVALID_SOCKET); - return _fd; + return this; +} + + +#if defined(ICE_USE_IOCP) +AsyncInfo* +IceInternal::UdpTransceiver::getAsyncInfo(SocketOperation status) +{ + switch(status) + { + case SocketOperationRead: + return &_read; + case SocketOperationWrite: + return &_write; + default: + assert(false); + return 0; + } +} +#endif + +SocketOperation +IceInternal::UdpTransceiver::initialize() +{ + if(!_incoming) + { + if(_connect) + { + // + // If we're not connected yet, return SocketOperationConnect. The transceiver will be + // connected once initialize is called again. + // + _connect = false; + return SocketOperationConnect; + } + else + { + if(_traceLevels->network >= 1) + { + Trace out(_logger, _traceLevels->networkCat); + out << "starting to send udp packets\n" << toString(); + } + return SocketOperationNone; + } + } + return SocketOperationNone; } void IceInternal::UdpTransceiver::close() { - if(_traceLevels->network >= 1) + if(!_connect && _traceLevels->network >= 1) { Trace out(_logger, _traceLevels->networkCat); out << "closing udp connection\n" << toString(); @@ -69,7 +113,7 @@ IceInternal::UdpTransceiver::write(Buffer& buf) } repeat: - + assert(!_connect); assert(_fd != INVALID_SOCKET); #ifdef _WIN32 ssize_t ret = ::send(_fd, reinterpret_cast<const char*>(&buf.b[0]), static_cast<int>(buf.b.size()), 0); @@ -220,50 +264,190 @@ repeat: return true; } -string -IceInternal::UdpTransceiver::type() const +#ifdef ICE_USE_IOCP +void +IceInternal::UdpTransceiver::startWrite(Buffer& buf) { - return "udp"; + assert(buf.i == buf.b.begin()); + + // + // The maximum packetSize is either the maximum allowable UDP + // packet size, or the UDP send buffer size (which ever is + // smaller). + // + const int packetSize = min(_maxPacketSize, _sndSize - _udpOverhead); + if(packetSize < static_cast<int>(buf.b.size())) + { + // + // We don't log a warning here because the client gets an exception anyway. + // + throw DatagramLimitException(__FILE__, __LINE__); + } + + assert(!_connect); + assert(_fd != INVALID_SOCKET); + + _write.buf.len = static_cast<int>(buf.b.size()); + _write.buf.buf = reinterpret_cast<char*>(&*buf.i); + int err = WSASend(_fd, &_write.buf, 1, &_write.count, 0, &_write, NULL); + if(err == SOCKET_ERROR) + { + if(!wouldBlock()) + { + if(connectionLost()) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + } + } } -string -IceInternal::UdpTransceiver::toString() const +void +IceInternal::UdpTransceiver::finishWrite(Buffer& buf) { - if(_mcastAddr.ss_family != AF_UNSPEC && _fd != INVALID_SOCKET) + if(_write.count == SOCKET_ERROR) { - return fdToString(_fd) + "\nmulticast address = " + addrToString(_mcastAddr); + WSASetLastError(_write.error); + if(connectionLost()) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } } - else + + if(_traceLevels->network >= 3) { - return fdToString(_fd); + Trace out(_logger, _traceLevels->networkCat); + out << "sent " << _write.count << " bytes via udp\n" << toString(); + } + + if(_stats) + { + _stats->bytesSent(type(), static_cast<Int>(_write.count)); } + + assert(_write.count == static_cast<ssize_t>(buf.b.size())); + buf.i = buf.b.end(); } -SocketStatus -IceInternal::UdpTransceiver::initialize() +void +IceInternal::UdpTransceiver::startRead(Buffer& buf) { - if(!_incoming) + // + // The maximum packetSize is either the maximum allowable UDP + // packet size, or the UDP send buffer size (which ever is + // smaller). + // + const int packetSize = min(_maxPacketSize, _rcvSize - _udpOverhead); + if(packetSize < static_cast<int>(buf.b.size())) { - if(_connect) + // + // We log a warning here because this is the server side -- without the + // the warning, there would only be silence. + // + if(_warn) { - // - // If we're not connected yet, return NeedConnect. The transceiver will be - // connected once initialize is called again. - // - _connect = false; - return NeedConnect; + Warning out(_logger); + out << "DatagramLimitException: maximum size of " << packetSize << " exceeded"; } - else + throw DatagramLimitException(__FILE__, __LINE__); + } + buf.b.resize(packetSize); + buf.i = buf.b.begin(); + + assert(!buf.b.empty() && buf.i != buf.b.end()); + + _read.buf.len = packetSize; + _read.buf.buf = reinterpret_cast<char*>(&*buf.i); + int err = WSARecv(_fd, &_read.buf, 1, &_read.count, &_read.flags, &_read, NULL); + if(err == SOCKET_ERROR) + { + if(!wouldBlock()) { - if(_traceLevels->network >= 1) + if(connectionLost()) { - Trace out(_logger, _traceLevels->networkCat); - out << "starting to send udp packets\n" << toString(); + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; } - return Finished; } } - return Finished; +} + +void +IceInternal::UdpTransceiver::finishRead(Buffer& buf) +{ + if(_read.count == SOCKET_ERROR) + { + WSASetLastError(_read.error); + if(connectionLost()) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = getSocketErrno(); + throw ex; + } + } + + if(_traceLevels->network >= 3) + { + Trace out(_logger, _traceLevels->networkCat); + out << "received " << _read.count << " bytes via udp\n" << toString(); + } + + if(_stats) + { + _stats->bytesReceived(type(), static_cast<Int>(_read.count)); + } + + buf.b.resize(_read.count); + buf.i = buf.b.end(); +} +#endif + +string +IceInternal::UdpTransceiver::type() const +{ + return "udp"; +} + +string +IceInternal::UdpTransceiver::toString() const +{ + if(_mcastAddr.ss_family != AF_UNSPEC && _fd != INVALID_SOCKET) + { + return fdToString(_fd) + "\nmulticast address = " + addrToString(_mcastAddr); + } + else + { + return fdToString(_fd); + } } void @@ -296,38 +480,34 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s _addr(addr), _connect(true), _warn(instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Datagrams") > 0) +#ifdef ICE_USE_IOCP + , _read(SocketOperationRead), + _write(SocketOperationWrite) +#endif { - try + // AF_UNSPEC means not multicast. + _mcastAddr.ss_family = AF_UNSPEC; + + _fd = createSocket(true, _addr.ss_family); + setBufSize(instance); + setBlock(_fd, false); + + if(doConnect(_fd, _addr)) { - // AF_UNSPEC means not multicast. - _mcastAddr.ss_family = AF_UNSPEC; - - _fd = createSocket(true, _addr.ss_family); - setBufSize(instance); - setBlock(_fd, false); - - if(doConnect(_fd, _addr)) + _connect = false; // We're connected now + } + + if(isMulticast(_addr)) + { + if(mcastInterface.length() > 0) { - _connect = false; // We're connected now + setMcastInterface(_fd, mcastInterface, _addr.ss_family == AF_INET); } - - if(isMulticast(_addr)) + if(mcastTtl != -1) { - if(mcastInterface.length() > 0) - { - setMcastInterface(_fd, mcastInterface, _addr.ss_family == AF_INET); - } - if(mcastTtl != -1) - { - setMcastTtl(_fd, mcastTtl, _addr.ss_family == AF_INET); - } + setMcastTtl(_fd, mcastTtl, _addr.ss_family == AF_INET); } } - catch(...) - { - _fd = INVALID_SOCKET; - throw; - } } IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const string& host, int port, @@ -340,91 +520,87 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s _addr(getAddressForServer(host, port, instance->protocolSupport())), _connect(connect), _warn(instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Datagrams") > 0) +#ifdef ICE_USE_IOCP + , _read(SocketOperationRead), + _write(SocketOperationWrite) +#endif { - try + _fd = createSocket(true, _addr.ss_family); + setBufSize(instance); + setBlock(_fd, false); + if(_traceLevels->network >= 2) { - _fd = createSocket(true, _addr.ss_family); - setBufSize(instance); - setBlock(_fd, false); - if(_traceLevels->network >= 2) - { - Trace out(_logger, _traceLevels->networkCat); - out << "attempting to bind to udp socket " << addrToString(_addr); - } + Trace out(_logger, _traceLevels->networkCat); + out << "attempting to bind to udp socket " << addrToString(_addr); + } - if(isMulticast(_addr)) - { - setReuseAddress(_fd, true); - _mcastAddr = _addr; + if(isMulticast(_addr)) + { + setReuseAddress(_fd, true); + _mcastAddr = _addr; #ifdef _WIN32 - // - // Windows does not allow binding to the mcast address itself - // so we bind to INADDR_ANY (0.0.0.0) instead. - // - const_cast<struct sockaddr_storage&>(_addr) = - getAddressForServer("", getPort(_mcastAddr), - _mcastAddr.ss_family == AF_INET ? EnableIPv4 : EnableIPv6); + // + // Windows does not allow binding to the mcast address itself + // so we bind to INADDR_ANY (0.0.0.0) instead. + // + const_cast<struct sockaddr_storage&>(_addr) = + getAddressForServer("", getPort(_mcastAddr), + _mcastAddr.ss_family == AF_INET ? EnableIPv4 : EnableIPv6); #endif - const_cast<struct sockaddr_storage&>(_addr) = doBind(_fd, _addr); - if(getPort(_mcastAddr) == 0) - { - setPort(_mcastAddr, getPort(_addr)); - } - setMcastGroup(_fd, _mcastAddr, mcastInterface); - } - else + const_cast<struct sockaddr_storage&>(_addr) = doBind(_fd, _addr); + if(getPort(_mcastAddr) == 0) { + setPort(_mcastAddr, getPort(_addr)); + } + setMcastGroup(_fd, _mcastAddr, mcastInterface); + } + else + { #ifndef _WIN32 - // - // Enable SO_REUSEADDR on Unix platforms to allow re-using - // the socket even if it's in the TIME_WAIT state. On - // Windows, this doesn't appear to be necessary and - // enabling SO_REUSEADDR would actually not be a good - // thing since it allows a second process to bind to an - // address even it's already bound by another process. - // - // TODO: using SO_EXCLUSIVEADDRUSE on Windows would - // probably be better but it's only supported by recent - // Windows versions (XP SP2, Windows Server 2003). - // - setReuseAddress(_fd, true); + // + // Enable SO_REUSEADDR on Unix platforms to allow re-using + // the socket even if it's in the TIME_WAIT state. On + // Windows, this doesn't appear to be necessary and + // enabling SO_REUSEADDR would actually not be a good + // thing since it allows a second process to bind to an + // address even it's already bound by another process. + // + // TODO: using SO_EXCLUSIVEADDRUSE on Windows would + // probably be better but it's only supported by recent + // Windows versions (XP SP2, Windows Server 2003). + // + setReuseAddress(_fd, true); #endif - const_cast<struct sockaddr_storage&>(_addr) = doBind(_fd, _addr); + const_cast<struct sockaddr_storage&>(_addr) = doBind(_fd, _addr); - // AF_UNSPEC means not multicast. - _mcastAddr.ss_family = AF_UNSPEC; - } + // AF_UNSPEC means not multicast. + _mcastAddr.ss_family = AF_UNSPEC; + } - if(_traceLevels->network >= 1) + if(_traceLevels->network >= 1) + { + Trace out(_logger, _traceLevels->networkCat); + out << "starting to receive udp packets\n" << toString(); + + if(_traceLevels->network >= 3) { - Trace out(_logger, _traceLevels->networkCat); - out << "starting to receive udp packets\n" << toString(); - - if(_traceLevels->network >= 3) + vector<string> interfaces = getHostsForEndpointExpand(inetAddrToString(_addr), _protocolSupport, true); + if(!interfaces.empty()) { - vector<string> interfaces = getHostsForEndpointExpand(inetAddrToString(_addr), _protocolSupport, true); - if(!interfaces.empty()) + out << "\nlocal interfaces: "; + for(unsigned int i = 0; i < interfaces.size(); ++i) { - out << "\nlocal interfaces: "; - for(unsigned int i = 0; i < interfaces.size(); ++i) + if(i != 0) { - if(i != 0) - { - out << ", "; - } - out << interfaces[i]; + out << ", "; } + out << interfaces[i]; } } } } - catch(...) - { - _fd = INVALID_SOCKET; - throw; - } } IceInternal::UdpTransceiver::~UdpTransceiver() diff --git a/cpp/src/Ice/UdpTransceiver.h b/cpp/src/Ice/UdpTransceiver.h index 6aa5e5332b9..df86f0c9e9c 100644 --- a/cpp/src/Ice/UdpTransceiver.h +++ b/cpp/src/Ice/UdpTransceiver.h @@ -33,17 +33,27 @@ class UdpEndpoint; class SUdpTransceiver; -class UdpTransceiver : public Transceiver +class UdpTransceiver : public Transceiver, public NativeInfo { public: - virtual SOCKET fd(); + virtual NativeInfoPtr getNativeInfo(); +#ifdef ICE_USE_IOCP + virtual AsyncInfo* getAsyncInfo(SocketOperation); +#endif + + virtual SocketOperation initialize(); virtual void close(); virtual bool write(Buffer&); virtual bool read(Buffer&); +#ifdef ICE_USE_IOCP + virtual void startWrite(Buffer&); + virtual void finishWrite(Buffer&); + virtual void startRead(Buffer&); + virtual void finishRead(Buffer&); +#endif virtual std::string type() const; virtual std::string toString() const; - virtual SocketStatus initialize(); virtual void checkSendSize(const Buffer&, size_t); int effectivePort() const; @@ -67,15 +77,17 @@ private: const struct sockaddr_storage _addr; struct sockaddr_storage _mcastAddr; - SOCKET _fd; bool _connect; int _rcvSize; int _sndSize; const bool _warn; static const int _udpOverhead; static const int _maxPacketSize; - bool _shutdownReadWrite; - IceUtil::Mutex _shutdownReadWriteMutex; + +#ifdef ICE_USE_IOCP + AsyncInfo _read; + AsyncInfo _write; +#endif }; } diff --git a/cpp/src/IceSSL/.depend b/cpp/src/IceSSL/.depend index 207cb3e7805..a06fa3f9a7f 100644 --- a/cpp/src/IceSSL/.depend +++ b/cpp/src/IceSSL/.depend @@ -1,11 +1,11 @@ -AcceptorI$(OBJEXT): AcceptorI.cpp ../IceSSL/AcceptorI.h $(includedir)/Ice/LoggerF.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/TransceiverF.h ../Ice/Acceptor.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/CommunicatorF.h ../Ice/Network.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/TrustManagerF.h ../IceSSL/TransceiverI.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/SelectorF.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h +AcceptorI$(OBJEXT): AcceptorI.cpp ../IceSSL/AcceptorI.h $(includedir)/Ice/LoggerF.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/TransceiverF.h ../Ice/Acceptor.h ../Ice/AcceptorF.h ../Ice/Network.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/TrustManagerF.h ../IceSSL/TransceiverI.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h Certificate$(OBJEXT): Certificate.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h ../IceSSL/RFC2253.h -ConnectorI$(OBJEXT): ConnectorI.cpp ../IceSSL/ConnectorI.h $(includedir)/Ice/LoggerF.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/TransceiverF.h ../Ice/Connector.h ../Ice/ConnectorF.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/CommunicatorF.h ../Ice/Network.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/TrustManagerF.h ../IceSSL/TransceiverI.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/SelectorF.h ../IceSSL/EndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/InstanceF.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/IceSSL/Endpoint.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h +ConnectorI$(OBJEXT): ConnectorI.cpp ../IceSSL/ConnectorI.h $(includedir)/Ice/LoggerF.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/TransceiverF.h ../Ice/Connector.h ../Ice/ConnectorF.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/CommunicatorF.h ../Ice/Network.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/TrustManagerF.h ../IceSSL/TransceiverI.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../IceSSL/EndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/InstanceF.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/IceSSL/Endpoint.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h Endpoint$(OBJEXT): Endpoint.cpp $(includedir)/IceSSL/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h -EndpointI$(OBJEXT): EndpointI.cpp ../IceSSL/EndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/IceSSL/Endpoint.h ../IceSSL/InstanceF.h ../IceSSL/AcceptorI.h $(includedir)/Ice/LoggerF.h ../Ice/Acceptor.h ../IceSSL/ConnectorI.h ../Ice/Connector.h ../IceSSL/TransceiverI.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/SelectorF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h ../Ice/DefaultsAndOverrides.h ../Ice/DefaultsAndOverridesF.h +EndpointI$(OBJEXT): EndpointI.cpp ../IceSSL/EndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.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/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/IceSSL/Endpoint.h ../IceSSL/InstanceF.h ../IceSSL/AcceptorI.h $(includedir)/Ice/LoggerF.h ../Ice/Acceptor.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../IceSSL/ConnectorI.h ../Ice/Connector.h ../IceSSL/TransceiverI.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h ../Ice/DefaultsAndOverrides.h ../Ice/DefaultsAndOverridesF.h Instance$(OBJEXT): Instance.cpp ../IceSSL/Instance.h ../IceSSL/InstanceF.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 ../IceSSL/UtilF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/LoggerF.h ../Ice/Network.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/TrustManagerF.h ../IceSSL/EndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/IceSSL/Endpoint.h ../IceSSL/Util.h ../IceSSL/TrustManager.h ../IceSSL/RFC2253.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/ProtocolPluginFacade.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/DisableWarnings.h -PluginI$(OBJEXT): PluginI.cpp ../IceSSL/PluginI.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.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/GCCountMap.h $(includedir)/Ice/GCShared.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/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h ../IceSSL/TransceiverI.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/SelectorF.h $(includedir)/Ice/LocalException.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ServantManagerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h ../Ice/SocketReadyCallback.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h ../Ice/SelectorThreadF.h -TransceiverI$(OBJEXT): TransceiverI.cpp ../IceSSL/TransceiverI.h ../IceSSL/InstanceF.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)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/SelectorF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/LocalException.h +PluginI$(OBJEXT): PluginI.cpp ../IceSSL/PluginI.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.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/GCCountMap.h $(includedir)/Ice/GCShared.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/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h ../IceSSL/TransceiverI.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h $(includedir)/Ice/LocalException.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ServantManagerF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h +TransceiverI$(OBJEXT): TransceiverI.cpp ../IceSSL/TransceiverI.h ../IceSSL/InstanceF.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)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/LocalException.h Util$(OBJEXT): Util.cpp ../IceSSL/Util.h ../IceSSL/UtilF.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 ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.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)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Protocol.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/IceUtil/DisableWarnings.h RFC2253$(OBJEXT): RFC2253.cpp $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.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/GCCountMap.h $(includedir)/Ice/GCShared.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/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/RFC2253.h TrustManager$(OBJEXT): TrustManager.cpp ../IceSSL/TrustManager.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/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../IceSSL/TrustManagerF.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.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/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/RFC2253.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h ../Ice/Network.h diff --git a/cpp/src/IceSSL/AcceptorI.cpp b/cpp/src/IceSSL/AcceptorI.cpp index c939ba626db..b70ca0e965c 100644 --- a/cpp/src/IceSSL/AcceptorI.cpp +++ b/cpp/src/IceSSL/AcceptorI.cpp @@ -19,16 +19,30 @@ #include <Ice/Network.h> #include <Ice/Properties.h> +#ifdef ICE_USE_IOCP +# include <Mswsock.h> +#endif + using namespace std; using namespace Ice; using namespace IceSSL; -SOCKET -IceSSL::AcceptorI::fd() +IceInternal::NativeInfoPtr +IceSSL::AcceptorI::getNativeInfo() { - return _fd; + return this; } + +#ifdef ICE_USE_IOCP +IceInternal::AsyncInfo* +IceSSL::AcceptorI::getAsyncInfo(IceInternal::SocketOperation status) +{ + assert(status == IceInternal::SocketOperationRead); + return &_info; +} +#endif + void IceSSL::AcceptorI::close() { @@ -83,6 +97,54 @@ IceSSL::AcceptorI::listen() } } +#ifdef ICE_USE_IOCP +void +IceSSL::AcceptorI::startAccept() +{ + LPFN_ACCEPTEX AcceptEx = NULL; // a pointer to the 'AcceptEx()' function + GUID GuidAcceptEx = WSAID_ACCEPTEX; // The Guid + DWORD dwBytes; + if(WSAIoctl(_fd, + SIO_GET_EXTENSION_FUNCTION_POINTER, + &GuidAcceptEx, + sizeof(GuidAcceptEx), + &AcceptEx, + sizeof(AcceptEx), + &dwBytes, + NULL, + NULL) == SOCKET_ERROR) + { + SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + + assert(_acceptFd == INVALID_SOCKET); + _acceptFd = IceInternal::createSocket(false, _addr.ss_family); + const int sz = static_cast<int>(_acceptBuf.size() / 2); + if(!AcceptEx(_fd, _acceptFd, &_acceptBuf[0], 0, sz, sz, &_info.count, &_info)) + { + if(WSAGetLastError() != WSA_IO_PENDING) + { + SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + } +} + +void +IceSSL::AcceptorI::finishAccept() +{ + if(_info.count == SOCKET_ERROR || _fd == INVALID_SOCKET) + { + IceInternal::closeSocketNoThrow(_acceptFd); + _acceptFd = INVALID_SOCKET; + _acceptError = _info.error; + } +} +#endif + IceInternal::TransceiverPtr IceSSL::AcceptorI::accept() { @@ -96,28 +158,29 @@ IceSSL::AcceptorI::accept() throw ex; } +#ifndef ICE_USE_IOCP SOCKET fd = IceInternal::doAccept(_fd); - IceInternal::setBlock(fd, false); - IceInternal::setTcpBufSize(fd, _instance->communicator()->getProperties(), _logger); - - BIO* bio = BIO_new_socket(static_cast<int>(fd), BIO_CLOSE); - if(!bio) +#else + if(_acceptFd == INVALID_SOCKET) { - IceInternal::closeSocketNoThrow(fd); - SecurityException ex(__FILE__, __LINE__); - ex.reason = "openssl failure"; - throw ex; + SocketException ex(__FILE__, __LINE__); + ex.error = _acceptError; + throw ex; } - SSL* ssl = SSL_new(_instance->context()); - if(!ssl) + if(setsockopt(_acceptFd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, (char*)&_acceptFd, sizeof(_acceptFd)) == + SOCKET_ERROR) { - BIO_free(bio); // Also closes the socket. - SecurityException ex(__FILE__, __LINE__); - ex.reason = "openssl failure"; + IceInternal::closeSocketNoThrow(_acceptFd); + _acceptFd = INVALID_SOCKET; + SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); throw ex; } - SSL_set_bio(ssl, bio, bio); + + SOCKET fd = _acceptFd; + _acceptFd = INVALID_SOCKET; +#endif if(_instance->networkTraceLevel() >= 1) { @@ -129,7 +192,7 @@ IceSSL::AcceptorI::accept() // SSL handshaking is performed in TransceiverI::initialize, since // accept must not block. // - return new TransceiverI(_instance, ssl, fd, "", true, true, _adapterName); + return new TransceiverI(_instance, fd, _adapterName); } string @@ -156,6 +219,10 @@ IceSSL::AcceptorI::AcceptorI(const InstancePtr& instance, const string& adapterN _adapterName(adapterName), _logger(instance->communicator()->getLogger()), _addr(IceInternal::getAddressForServer(host, port, instance->protocolSupport())) +#ifdef ICE_USE_IOCP + , _acceptFd(INVALID_SOCKET), + _info(IceInternal::SocketOperationRead) +#endif { #ifdef SOMAXCONN _backlog = instance->communicator()->getProperties()->getPropertyAsIntWithDefault("Ice.TCP.Backlog", SOMAXCONN); @@ -163,41 +230,39 @@ IceSSL::AcceptorI::AcceptorI(const InstancePtr& instance, const string& adapterN _backlog = instance->communicator()->getProperties()->getPropertyAsIntWithDefault("Ice.TCP.Backlog", 511); #endif - try - { - _fd = IceInternal::createSocket(false, _addr.ss_family); - IceInternal::setBlock(_fd, false); - IceInternal::setTcpBufSize(_fd, _instance->communicator()->getProperties(), _logger); + _fd = IceInternal::createSocket(false, _addr.ss_family); +#ifdef ICE_USE_IOCP + _acceptBuf.resize((sizeof(sockaddr_storage) + 16) * 2); +#endif + IceInternal::setBlock(_fd, false); + IceInternal::setTcpBufSize(_fd, _instance->communicator()->getProperties(), _logger); #ifndef _WIN32 - // - // Enable SO_REUSEADDR on Unix platforms to allow re-using the - // socket even if it's in the TIME_WAIT state. On Windows, - // this doesn't appear to be necessary and enabling - // SO_REUSEADDR would actually not be a good thing since it - // allows a second process to bind to an address even it's - // already bound by another process. - // - // TODO: using SO_EXCLUSIVEADDRUSE on Windows would probably - // be better but it's only supported by recent Windows - // versions (XP SP2, Windows Server 2003). - // - IceInternal::setReuseAddress(_fd, true); + // + // Enable SO_REUSEADDR on Unix platforms to allow re-using the + // socket even if it's in the TIME_WAIT state. On Windows, + // this doesn't appear to be necessary and enabling + // SO_REUSEADDR would actually not be a good thing since it + // allows a second process to bind to an address even it's + // already bound by another process. + // + // TODO: using SO_EXCLUSIVEADDRUSE on Windows would probably + // be better but it's only supported by recent Windows + // versions (XP SP2, Windows Server 2003). + // + IceInternal::setReuseAddress(_fd, true); #endif - if(_instance->networkTraceLevel() >= 2) - { - Trace out(_logger, _instance->networkTraceCategory()); - out << "attempting to bind to ssl socket " << toString(); - } - const_cast<struct sockaddr_storage&>(_addr) = IceInternal::doBind(_fd, _addr); - } - catch(...) + if(_instance->networkTraceLevel() >= 2) { - _fd = INVALID_SOCKET; - throw; + Trace out(_logger, _instance->networkTraceCategory()); + out << "attempting to bind to ssl socket " << toString(); } + const_cast<struct sockaddr_storage&>(_addr) = IceInternal::doBind(_fd, _addr); } IceSSL::AcceptorI::~AcceptorI() { assert(_fd == INVALID_SOCKET); +#ifdef ICE_USE_IOCP + assert(_acceptFd == INVALID_SOCKET); +#endif } diff --git a/cpp/src/IceSSL/AcceptorI.h b/cpp/src/IceSSL/AcceptorI.h index 56e26379391..71ce3991b2b 100644 --- a/cpp/src/IceSSL/AcceptorI.h +++ b/cpp/src/IceSSL/AcceptorI.h @@ -20,18 +20,28 @@ # include <sys/socket.h> // For struct sockaddr_storage #endif +#include <vector> + namespace IceSSL { class EndpointI; -class AcceptorI : public IceInternal::Acceptor +class AcceptorI : public IceInternal::Acceptor, public IceInternal::NativeInfo { public: - virtual SOCKET fd(); + virtual IceInternal::NativeInfoPtr getNativeInfo(); +#ifdef ICE_USE_IOCP + virtual IceInternal::AsyncInfo* getAsyncInfo(IceInternal::SocketOperation); +#endif + virtual void close(); virtual void listen(); +#ifdef ICE_USE_IOCP + virtual void startAccept(); + virtual void finishAccept(); +#endif virtual IceInternal::TransceiverPtr accept(); virtual std::string toString() const; @@ -47,8 +57,13 @@ private: const std::string _adapterName; const Ice::LoggerPtr _logger; const struct sockaddr_storage _addr; - SOCKET _fd; int _backlog; +#ifdef ICE_USE_IOCP + SOCKET _acceptFd; + int _acceptError; + std::vector<char> _acceptBuf; + IceInternal::AsyncInfo _info; +#endif }; } diff --git a/cpp/src/IceSSL/ConnectorI.cpp b/cpp/src/IceSSL/ConnectorI.cpp index aa034e66a18..9b5e14a6fe9 100644 --- a/cpp/src/IceSSL/ConnectorI.cpp +++ b/cpp/src/IceSSL/ConnectorI.cpp @@ -42,36 +42,7 @@ IceSSL::ConnectorI::connect() try { - SOCKET fd = IceInternal::createSocket(false, _addr.ss_family); - IceInternal::setBlock(fd, false); - IceInternal::setTcpBufSize(fd, _instance->communicator()->getProperties(), _logger); - bool connected = IceInternal::doConnect(fd, _addr); - - // This static_cast is necessary due to 64bit windows. There SOCKET is a non-int type. - BIO* bio = BIO_new_socket(static_cast<int>(fd), BIO_CLOSE); - if(!bio) - { - IceInternal::closeSocketNoThrow(fd); - SecurityException ex(__FILE__, __LINE__); - ex.reason = "openssl failure"; - throw ex; - } - - SSL* ssl = SSL_new(_instance->context()); - if(!ssl) - { - BIO_free(bio); // Also closes the socket. - SecurityException ex(__FILE__, __LINE__); - ex.reason = "openssl failure"; - throw ex; - } - SSL_set_bio(ssl, bio, bio); - - // - // SSL handshaking is performed in TransceiverI::initialize, since - // connect must not block. - // - return new TransceiverI(_instance, ssl, fd, _host, connected, false); + return new TransceiverI(_instance, IceInternal::createSocket(false, _addr.ss_family), _host, _addr); } catch(const Ice::LocalException& ex) { diff --git a/cpp/src/IceSSL/ConnectorI.h b/cpp/src/IceSSL/ConnectorI.h index e659421fc5f..d8c79a6e0c4 100644 --- a/cpp/src/IceSSL/ConnectorI.h +++ b/cpp/src/IceSSL/ConnectorI.h @@ -51,7 +51,6 @@ private: struct sockaddr_storage _addr; const Ice::Int _timeout; const std::string _connectionId; - SOCKET _fd; }; } diff --git a/cpp/src/IceSSL/Instance.cpp b/cpp/src/IceSSL/Instance.cpp index 51e7a76b51b..03bb4010062 100644 --- a/cpp/src/IceSSL/Instance.cpp +++ b/cpp/src/IceSSL/Instance.cpp @@ -54,6 +54,12 @@ public: { delete staticMutex; staticMutex = 0; + + if(locks) + { + delete[] locks; + locks = 0; + } } }; @@ -70,6 +76,7 @@ extern "C" void IceSSL_opensslLockCallback(int mode, int n, const char* file, int line) { + assert(locks); if(mode & CRYPTO_LOCK) { locks[n].lock(); @@ -170,9 +177,12 @@ IceSSL::Instance::Instance(const CommunicatorPtr& communicator) : // // Create the mutexes and set the callbacks. // - locks = new IceUtil::Mutex[CRYPTO_num_locks()]; - CRYPTO_set_locking_callback(IceSSL_opensslLockCallback); - CRYPTO_set_id_callback(IceSSL_opensslThreadIdCallback); + if(!locks) + { + locks = new IceUtil::Mutex[CRYPTO_num_locks()]; + CRYPTO_set_locking_callback(IceSSL_opensslLockCallback); + CRYPTO_set_id_callback(IceSSL_opensslThreadIdCallback); + } // // Load human-readable error messages. @@ -274,10 +284,15 @@ IceSSL::Instance::~Instance() if(--instanceCount == 0) { - CRYPTO_set_locking_callback(0); - CRYPTO_set_id_callback(0); - delete[] locks; - locks = 0; + // + // NOTE: We can't destroy the locks here: threads wich might have called openssl methods + // might access openssl locks upon termination (from DllMain/THREAD_DETACHED). Instead, + // we release the locks in the ~Init() static destructor. See bug #4156. + // + //CRYPTO_set_locking_callback(0); + //CRYPTO_set_id_callback(0); + //delete[] locks; + //locks = 0; CRYPTO_cleanup_all_ex_data(); RAND_cleanup(); diff --git a/cpp/src/IceSSL/TransceiverI.cpp b/cpp/src/IceSSL/TransceiverI.cpp index 07c3932544d..bdc97d52bae 100644 --- a/cpp/src/IceSSL/TransceiverI.cpp +++ b/cpp/src/IceSSL/TransceiverI.cpp @@ -18,31 +18,268 @@ #include <Ice/LocalException.h> #include <openssl/err.h> +#include <openssl/bio.h> using namespace std; using namespace Ice; using namespace IceSSL; -SOCKET -IceSSL::TransceiverI::fd() +IceInternal::NativeInfoPtr +IceSSL::TransceiverI::getNativeInfo() { - assert(_fd != INVALID_SOCKET); - return _fd; + return this; +} + +#if defined(ICE_USE_IOCP) +IceInternal::AsyncInfo* +IceSSL::TransceiverI::getAsyncInfo(IceInternal::SocketOperation status) +{ + switch(status) + { + case IceInternal::SocketOperationRead: + return &_read; + case IceInternal::SocketOperationWrite: + return &_write; + default: + assert(false); + return 0; + } +} +#endif + +IceInternal::SocketOperation +IceSSL::TransceiverI::initialize() +{ + try + { + if(_state == StateNeedConnect) + { + _state = StateConnectPending; + return IceInternal::SocketOperationConnect; + } + else if(_state <= StateConnectPending) + { +#ifndef ICE_USE_IOCP + IceInternal::doFinishConnect(_fd); +#else + IceInternal::doFinishConnectAsync(_fd, _write); +#endif + _state = StateConnected; + _desc = IceInternal::fdToString(_fd); + } + assert(_state == StateConnected); + + if(!_ssl) + { +#ifdef ICE_USE_IOCP + // + // On Windows, limiting the buffer size is important to prevent + // poor throughput performances when transfering large amount of + // data. See Microsoft KB article KB823764. + // + _maxSendPacketSize = IceInternal::getSendBufferSize(_fd) / 2; + if(_maxSendPacketSize < 512) + { + _maxSendPacketSize = 0; + } + + _maxReceivePacketSize = IceInternal::getRecvBufferSize(_fd); + if(_maxReceivePacketSize < 512) + { + _maxReceivePacketSize = 0; + } + + _readI = _readBuffer.end(); + _writeI = _writeBuffer.end(); + _sentBytes = 0; +#endif + +#ifndef ICE_USE_IOCP + // This static_cast is necessary due to 64bit windows. There SOCKET is a non-int type. + BIO* bio = BIO_new_socket(static_cast<int>(_fd), 0); +#else + BIO* bio; + if(!BIO_new_bio_pair(&bio, _maxSendPacketSize, &_iocpBio, _maxReceivePacketSize)) + { + bio = 0; + } +#endif + if(!bio) + { + SecurityException ex(__FILE__, __LINE__); + ex.reason = "openssl failure"; + throw ex; + } + + _ssl = SSL_new(_instance->context()); + if(!_ssl) + { + BIO_free(bio); + SecurityException ex(__FILE__, __LINE__); + ex.reason = "openssl failure"; + throw ex; + } + SSL_set_bio(_ssl, bio, bio); + } + + while(!SSL_is_init_finished(_ssl)) + { + // + // Only one thread calls initialize(), so synchronization is not necessary here. + // + int ret = _incoming ? SSL_accept(_ssl) : SSL_connect(_ssl); +#ifdef ICE_USE_IOCP + if(BIO_ctrl_pending(_iocpBio)) + { + if(!send()) + { + return IceInternal::SocketOperationWrite; + } + continue; + } +#endif + if(ret <= 0) + { + switch(SSL_get_error(_ssl, ret)) + { + case SSL_ERROR_NONE: + assert(SSL_is_init_finished(_ssl)); + break; + case SSL_ERROR_ZERO_RETURN: + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + case SSL_ERROR_WANT_READ: + { +#ifdef ICE_USE_IOCP + if(receive()) + { + continue; + } +#endif + return IceInternal::SocketOperationRead; + } + case SSL_ERROR_WANT_WRITE: + { +#ifdef ICE_USE_IOCP + if(send()) + { + continue; + } +#endif + return IceInternal::SocketOperationWrite; + } + case SSL_ERROR_SYSCALL: + { + if(ret == 0) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = 0; + throw ex; + } + +#ifndef ICE_USE_IOCP + if(ret == -1) + { + if(IceInternal::interrupted()) + { + break; + } + + if(IceInternal::wouldBlock()) + { + if(SSL_want_read(_ssl)) + { + return IceInternal::SocketOperationRead; + } + else if(SSL_want_write(_ssl)) + { + return IceInternal::SocketOperationWrite; + } + + break; + } + + if(IceInternal::connectionLost()) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + } +#endif + SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + case SSL_ERROR_SSL: + { + struct sockaddr_storage remoteAddr; + string desc = "<not available>"; + if(IceInternal::fdToRemoteAddress(_fd, remoteAddr)) + { + desc = IceInternal::addrToString(remoteAddr); + } + ostringstream ostr; + ostr << "SSL error occurred for new " << (_incoming ? "incoming" : "outgoing") + << " connection:\nremote address = " << desc << "\n" << _instance->sslErrors(); + ProtocolException ex(__FILE__, __LINE__); + ex.reason = ostr.str(); + throw ex; + } + } + } + } + + _instance->verifyPeer(_ssl, _fd, _host, _adapterName, _incoming); + _state = StateHandshakeComplete; + } + catch(const Ice::LocalException& ex) + { + if(_instance->networkTraceLevel() >= 2) + { + Trace out(_logger, _instance->networkTraceCategory()); + out << "failed to establish ssl connection\n" << _desc << "\n" << ex; + } + throw; + } + + if(_instance->networkTraceLevel() >= 1) + { + Trace out(_logger, _instance->networkTraceCategory()); + if(_incoming) + { + out << "accepted ssl connection\n" << _desc; + } + else + { + out << "ssl connection established\n" << _desc; + } + } + + if(_instance->securityTraceLevel() >= 1) + { + _instance->traceConnection(_ssl, _incoming); + } + + return IceInternal::SocketOperationNone; } void IceSSL::TransceiverI::close() { - if(_instance->networkTraceLevel() >= 1) + if(_state == StateHandshakeComplete && _instance->networkTraceLevel() >= 1) { Trace out(_logger, _instance->networkTraceCategory()); out << "closing ssl connection\n" << toString(); } + if(_ssl) { - IceUtil::Mutex::Lock sync(_sslMutex); int err = SSL_shutdown(_ssl); - + // // Call it one more time if it returned 0. // @@ -50,50 +287,68 @@ IceSSL::TransceiverI::close() { SSL_shutdown(_ssl); } - } - // - // Only one thread calls close(), so synchronization is not necessary here. - // - SSL_free(_ssl); - _ssl = 0; + SSL_free(_ssl); + _ssl = 0; + } assert(_fd != INVALID_SOCKET); - _fd = INVALID_SOCKET; + try + { + IceInternal::closeSocket(_fd); + _fd = INVALID_SOCKET; + } + catch(const SocketException&) + { + _fd = INVALID_SOCKET; + throw; + } } bool IceSSL::TransceiverI::write(IceInternal::Buffer& buf) { - // Its impossible for the packetSize to be more than an Int. - int packetSize = static_cast<int>(buf.b.end() - buf.i); - -#ifdef _WIN32 - // - // Limit packet size to avoid performance problems on WIN32 - // - if(packetSize > _maxPacketSize) - { - packetSize = _maxPacketSize; +#ifdef ICE_USE_IOCP + if(_writeI != _writeBuffer.end()) + { + if(!send()) + { + return false; + } } #endif + // Its impossible for the packetSize to be more than an Int. + int packetSize = static_cast<int>(buf.b.end() - buf.i); while(buf.i != buf.b.end()) { ERR_clear_error(); // Clear any spurious errors. assert(_fd != INVALID_SOCKET); - int ret, err; - bool wantWrite; +#ifndef ICE_USE_IOCP + int ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize); +#else + int ret; + if(_sentBytes) + { + ret = _sentBytes; + _sentBytes = 0; + } + else { - IceUtil::Mutex::Lock sync(_sslMutex); ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize); - err = SSL_get_error(_ssl, ret); - wantWrite = SSL_want_write(_ssl); + if(ret > 0) + { + if(!send()) + { + _sentBytes = ret; + return false; + } + } } - +#endif if(ret <= 0) { - switch(err) + switch(SSL_get_error(_ssl, ret)) { case SSL_ERROR_NONE: assert(false); @@ -111,10 +366,17 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf) } case SSL_ERROR_WANT_WRITE: { +#ifdef ICE_USE_IOCP + if(send()) + { + continue; + } +#endif return false; } case SSL_ERROR_SYSCALL: { +#ifndef ICE_USE_IOCP if(ret == -1) { if(IceInternal::interrupted()) @@ -130,11 +392,8 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf) if(IceInternal::wouldBlock()) { - if(wantWrite) - { - return false; - } - continue; + assert(SSL_want_write(_ssl)); + return false; } if(IceInternal::connectionLost()) @@ -144,7 +403,7 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf) throw ex; } } - +#endif if(ret == 0) { ConnectionLostException ex(__FILE__, __LINE__); @@ -190,25 +449,26 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf) bool IceSSL::TransceiverI::read(IceInternal::Buffer& buf) { +#ifdef ICE_USE_IOCP + if(_readI != _readBuffer.end()) + { + if(!receive()) + { + return false; + } + } +#endif + // It's impossible for the packetSize to be more than an Int. - int packetSize = static_cast<int>(buf.b.end() - buf.i); - + int packetSize = static_cast<int>(buf.b.end() - buf.i); while(buf.i != buf.b.end()) { ERR_clear_error(); // Clear any spurious errors. assert(_fd != INVALID_SOCKET); - int ret, err; - bool wantRead; - { - IceUtil::Mutex::Lock sync(_sslMutex); - ret = SSL_read(_ssl, reinterpret_cast<void*>(&*buf.i), packetSize); - err = SSL_get_error(_ssl, ret); - wantRead = SSL_want_read(_ssl); - } - + int ret = SSL_read(_ssl, reinterpret_cast<void*>(&*buf.i), packetSize); if(ret <= 0) { - switch(err) + switch(SSL_get_error(_ssl, ret)) { case SSL_ERROR_NONE: assert(false); @@ -232,6 +492,12 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf) } case SSL_ERROR_WANT_READ: { +#ifdef ICE_USE_IOCP + if(receive()) + { + continue; + } +#endif return false; } case SSL_ERROR_WANT_WRITE: @@ -241,6 +507,7 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf) } case SSL_ERROR_SYSCALL: { +#ifndef ICE_USE_IOCP if(ret == -1) { if(IceInternal::interrupted()) @@ -256,11 +523,8 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf) if(IceInternal::wouldBlock()) { - if(wantRead) - { - return false; - } - continue; + assert(SSL_want_read(_ssl)); + return false; } if(IceInternal::connectionLost()) @@ -278,6 +542,7 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf) throw ex; } } +#endif if(ret == 0) { @@ -345,153 +610,171 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf) return true; } -string -IceSSL::TransceiverI::type() const +#ifdef ICE_USE_IOCP +void +IceSSL::TransceiverI::startWrite(IceInternal::Buffer& buf) { - return "ssl"; -} + if(_state < StateConnected) + { + IceInternal::doConnectAsync(_fd, _connectAddr, _write); + _desc = IceInternal::fdToString(_fd); + return; + } -string -IceSSL::TransceiverI::toString() const -{ - return _desc; + assert(!_writeBuffer.empty() && _writeI != _writeBuffer.end()); + + int packetSize = static_cast<int>(_writeBuffer.end() - _writeI); + if(_maxSendPacketSize > 0 && packetSize > _maxSendPacketSize) + { + packetSize = _maxSendPacketSize; + } + + _write.buf.len = packetSize; + _write.buf.buf = reinterpret_cast<char*>(&*_writeI); + int err = WSASend(_fd, &_write.buf, 1, &_write.count, 0, &_write, NULL); + if(err == SOCKET_ERROR) + { + if(!IceInternal::wouldBlock()) + { + if(IceInternal::connectionLost()) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + } + } } -IceInternal::SocketStatus -IceSSL::TransceiverI::initialize() +void +IceSSL::TransceiverI::finishWrite(IceInternal::Buffer& buf) { - try + if(_state < StateConnected) { - if(_state == StateNeedConnect) + return; + } + + if(_write.count == SOCKET_ERROR) + { + WSASetLastError(_write.error); + if(IceInternal::connectionLost()) { - _state = StateConnectPending; - return IceInternal::NeedConnect; + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; } - else if(_state <= StateConnectPending) + else { - IceInternal::doFinishConnect(_fd); - _state = StateConnected; - _desc = IceInternal::fdToString(_fd); + SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; } - assert(_state == StateConnected); + } + + _writeI += _write.count; +} + +void +IceSSL::TransceiverI::startRead(IceInternal::Buffer& buf) +{ + if(_readI == _readBuffer.end()) + { + assert(!buf.b.empty() && buf.i != buf.b.end()); + assert(!BIO_ctrl_get_read_request(_iocpBio)); + + ERR_clear_error(); // Clear any spurious errors. + int ret = SSL_read(_ssl, reinterpret_cast<void*>(&*buf.i), static_cast<int>(buf.b.end() - buf.i)); + assert(ret <= 0 && SSL_get_error(_ssl, ret) == SSL_ERROR_WANT_READ); + + assert(BIO_ctrl_get_read_request(_iocpBio)); + _readBuffer.resize(BIO_ctrl_get_read_request(_iocpBio)); + _readI = _readBuffer.begin(); + } + + assert(!_readBuffer.empty() && _readI != _readBuffer.end()); + + int packetSize = static_cast<int>(_readBuffer.end() - _readI); + if(_maxReceivePacketSize > 0 && packetSize > _maxReceivePacketSize) + { + packetSize = _maxReceivePacketSize; + } - do + _read.buf.len = packetSize; + _read.buf.buf = reinterpret_cast<char*>(&*_readI); + int err = WSARecv(_fd, &_read.buf, 1, &_read.count, &_read.flags, &_read, NULL); + if(err == SOCKET_ERROR) + { + if(!IceInternal::wouldBlock()) { - // - // Only one thread calls initialize(), so synchronization is not necessary here. - // - int ret = _incoming ? SSL_accept(_ssl) : SSL_connect(_ssl); - switch(SSL_get_error(_ssl, ret)) - { - case SSL_ERROR_NONE: - assert(SSL_is_init_finished(_ssl)); - break; - case SSL_ERROR_ZERO_RETURN: + if(IceInternal::connectionLost()) { ConnectionLostException ex(__FILE__, __LINE__); ex.error = IceInternal::getSocketErrno(); throw ex; } - case SSL_ERROR_WANT_READ: - { - return IceInternal::NeedRead; - } - case SSL_ERROR_WANT_WRITE: + else { - return IceInternal::NeedWrite; - } - case SSL_ERROR_SYSCALL: - { - if(ret == -1) - { - if(IceInternal::interrupted()) - { - break; - } - - if(IceInternal::wouldBlock()) - { - if(SSL_want_read(_ssl)) - { - return IceInternal::NeedRead; - } - else if(SSL_want_write(_ssl)) - { - return IceInternal::NeedWrite; - } - - break; - } - - if(IceInternal::connectionLost()) - { - ConnectionLostException ex(__FILE__, __LINE__); - ex.error = IceInternal::getSocketErrno(); - throw ex; - } - } - - if(ret == 0) - { - ConnectionLostException ex(__FILE__, __LINE__); - ex.error = 0; - throw ex; - } - SocketException ex(__FILE__, __LINE__); ex.error = IceInternal::getSocketErrno(); throw ex; } - case SSL_ERROR_SSL: - { - struct sockaddr_storage remoteAddr; - string desc = "<not available>"; - if(IceInternal::fdToRemoteAddress(_fd, remoteAddr)) - { - desc = IceInternal::addrToString(remoteAddr); - } - ostringstream ostr; - ostr << "SSL error occurred for new " << (_incoming ? "incoming" : "outgoing") - << " connection:\nremote address = " << desc << "\n" << _instance->sslErrors(); - ProtocolException ex(__FILE__, __LINE__); - ex.reason = ostr.str(); - throw ex; - } - } - } - while(!SSL_is_init_finished(_ssl)); - - _instance->verifyPeer(_ssl, _fd, _host, _adapterName, _incoming); - } - catch(const Ice::LocalException& ex) - { - if(_instance->networkTraceLevel() >= 2) - { - Trace out(_logger, _instance->networkTraceCategory()); - out << "failed to establish ssl connection\n" << _desc << "\n" << ex; } - throw; } +} - if(_instance->networkTraceLevel() >= 1) +void +IceSSL::TransceiverI::finishRead(IceInternal::Buffer& buf) +{ + if(_read.count == SOCKET_ERROR) { - Trace out(_logger, _instance->networkTraceCategory()); - if(_incoming) + WSASetLastError(_read.error); + if(IceInternal::connectionLost()) { - out << "accepted ssl connection\n" << _desc; + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; } else { - out << "ssl connection established\n" << _desc; + SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; } } - if(_instance->securityTraceLevel() >= 1) + _readI += _read.count; + + if(_readI == _readBuffer.end()) { - _instance->traceConnection(_ssl, _incoming); + assert(_readI == _readBuffer.end()); + int n = BIO_write(_iocpBio, &_readBuffer[0], static_cast<int>(_readBuffer.size())); + if(n < 0) // Expected if the transceiver was closed. + { + SecurityException ex(__FILE__, __LINE__); + ex.reason = "SSL bio write failed"; + throw ex; + } + assert(n == static_cast<int>(_readBuffer.size())); } +} +#endif - return IceInternal::Finished; +string +IceSSL::TransceiverI::type() const +{ + return "ssl"; +} + +string +IceSSL::TransceiverI::toString() const +{ + return _desc; } void @@ -513,31 +796,61 @@ IceSSL::TransceiverI::getConnectionInfo() const return populateConnectionInfo(_ssl, _fd, _adapterName, _incoming); } -IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SSL* ssl, SOCKET fd, const string& host, bool connected, - bool incoming, const string& adapterName) : +IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SOCKET fd, const string& host, + const struct sockaddr_storage& addr) : + NativeInfo(fd), _instance(instance), _logger(instance->communicator()->getLogger()), _stats(instance->communicator()->getStats()), - _ssl(ssl), - _fd(fd), + _ssl(0), _host(host), - _incoming(incoming), - _adapterName(adapterName), - _state(connected ? StateConnected : StateNeedConnect), - _desc(IceInternal::fdToString(fd)) + _incoming(false), + _state(StateNeedConnect) +#ifdef ICE_USE_IOCP + , _read(IceInternal::SocketOperationRead), + _write(IceInternal::SocketOperationWrite) +#endif { -#ifdef _WIN32 - // - // On Windows, limiting the buffer size is important to prevent - // poor throughput performances when transfering large amount of - // data. See Microsoft KB article KB823764. - // - _maxPacketSize = IceInternal::getSendBufferSize(_fd) / 2; - if(_maxPacketSize < 512) + IceInternal::setBlock(fd, false); + IceInternal::setTcpBufSize(fd, _instance->communicator()->getProperties(), _logger); + +#ifndef ICE_USE_IOCP + if(IceInternal::doConnect(_fd, addr)) { - _maxPacketSize = 0; + _state = StateConnected; + _desc = IceInternal::fdToString(_fd); + if(_instance->networkTraceLevel() >= 1) + { + Trace out(_logger, _instance->networkTraceCategory()); + out << "ssl connection established\n" << _desc; + } } + else + { + _desc = IceInternal::fdToString(_fd); + } +#else + _connectAddr = addr; +#endif +} + +IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SOCKET fd, const string& adapterName) : + NativeInfo(fd), + _instance(instance), + _logger(instance->communicator()->getLogger()), + _stats(instance->communicator()->getStats()), + _ssl(0), + _incoming(true), + _adapterName(adapterName), + _state(StateConnected), + _desc(IceInternal::fdToString(fd)) +#ifdef ICE_USE_IOCP + , _read(IceInternal::SocketOperationRead), + _write(IceInternal::SocketOperationWrite) #endif +{ + IceInternal::setBlock(fd, false); + IceInternal::setTcpBufSize(fd, _instance->communicator()->getProperties(), _logger); } IceSSL::TransceiverI::~TransceiverI() @@ -545,3 +858,141 @@ IceSSL::TransceiverI::~TransceiverI() assert(_fd == INVALID_SOCKET); } +#ifdef ICE_USE_IOCP +bool +IceSSL::TransceiverI::receive() +{ + if(_readI == _readBuffer.end()) + { + assert(BIO_ctrl_get_read_request(_iocpBio)); + _readBuffer.resize(BIO_ctrl_get_read_request(_iocpBio)); + _readI = _readBuffer.begin(); + } + + int packetSize = static_cast<int>(_readBuffer.end() - _readI); + while(_readI != _readBuffer.end()) + { + assert(_fd != INVALID_SOCKET); + ssize_t ret = ::recv(_fd, reinterpret_cast<char*>(&*_readI), packetSize, 0); + if(ret == 0) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = 0; + throw ex; + } + + if(ret == SOCKET_ERROR) + { + if(IceInternal::interrupted()) + { + continue; + } + + if(IceInternal::noBuffers() && packetSize > 1024) + { + packetSize /= 2; + continue; + } + + if(IceInternal::wouldBlock()) + { + return false; + } + + if(IceInternal::connectionLost()) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + } + + _readI += ret; + if(packetSize > _readBuffer.end() - _readI) + { + packetSize = static_cast<int>(_readBuffer.end() - _readI); + } + } + + assert(_readI == _readBuffer.end()); + int n = BIO_write(_iocpBio, &_readBuffer[0], static_cast<int>(_readBuffer.size())); + assert(n == static_cast<int>(_readBuffer.size())); + return true; +} + +bool +IceSSL::TransceiverI::send() +{ + if(_writeI == _writeBuffer.end()) + { + assert(BIO_ctrl_pending(_iocpBio)); + _writeBuffer.resize(BIO_ctrl_pending(_iocpBio)); + int n = BIO_read(_iocpBio, &_writeBuffer[0], static_cast<int>(_writeBuffer.size())); + assert(n == static_cast<int>(_writeBuffer.size())); + _writeI = _writeBuffer.begin(); + } + + int packetSize = static_cast<int>(_writeBuffer.end() - _writeI); + if(_maxSendPacketSize > 0 && packetSize > _maxSendPacketSize) + { + packetSize = _maxSendPacketSize; + } + + while(_writeI != _writeBuffer.end()) + { + int ret = ::send(_fd, reinterpret_cast<const char*>(&*_writeI), packetSize, 0); + if(ret == 0) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = 0; + throw ex; + } + + if(ret == SOCKET_ERROR) + { + if(IceInternal::interrupted()) + { + continue; + } + + if(IceInternal::noBuffers() && packetSize > 1024) + { + packetSize /= 2; + continue; + } + + if(IceInternal::wouldBlock()) + { + return false; + } + + if(IceInternal::connectionLost()) + { + ConnectionLostException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + else + { + SocketException ex(__FILE__, __LINE__); + ex.error = IceInternal::getSocketErrno(); + throw ex; + } + } + + _writeI += ret; + if(packetSize > _writeBuffer.end() - _writeI) + { + packetSize = static_cast<int>(_writeBuffer.end() - _writeI); + } + } + return true; +} + +#endif diff --git a/cpp/src/IceSSL/TransceiverI.h b/cpp/src/IceSSL/TransceiverI.h index cb982fca9b3..f66a8b4ccb0 100644 --- a/cpp/src/IceSSL/TransceiverI.h +++ b/cpp/src/IceSSL/TransceiverI.h @@ -17,9 +17,8 @@ #include <Ice/StatsF.h> #include <Ice/Transceiver.h> -#include <IceUtil/Mutex.h> - typedef struct ssl_st SSL; +typedef struct bio_st BIO; namespace IceSSL { @@ -27,32 +26,50 @@ namespace IceSSL class ConnectorI; class AcceptorI; -class TransceiverI : public IceInternal::Transceiver +class TransceiverI : public IceInternal::Transceiver, public IceInternal::NativeInfo { enum State { StateNeedConnect, StateConnectPending, - StateConnected + StateConnected, + StateHandshakeComplete }; public: - virtual SOCKET fd(); + virtual IceInternal::NativeInfoPtr getNativeInfo(); +#ifdef ICE_USE_IOCP + virtual IceInternal::AsyncInfo* getAsyncInfo(IceInternal::SocketOperation); +#endif + + virtual IceInternal::SocketOperation initialize(); virtual void close(); virtual bool write(IceInternal::Buffer&); virtual bool read(IceInternal::Buffer&); +#ifdef ICE_USE_IOCP + virtual void startWrite(IceInternal::Buffer&); + virtual void finishWrite(IceInternal::Buffer&); + virtual void startRead(IceInternal::Buffer&); + virtual void finishRead(IceInternal::Buffer&); +#endif virtual std::string type() const; virtual std::string toString() const; - virtual IceInternal::SocketStatus initialize(); virtual void checkSendSize(const IceInternal::Buffer&, size_t); ConnectionInfo getConnectionInfo() const; private: - TransceiverI(const InstancePtr&, SSL*, SOCKET, const std::string&, bool, bool, const std::string& = ""); + TransceiverI(const InstancePtr&, SOCKET, const std::string&, const struct sockaddr_storage&); + TransceiverI(const InstancePtr&, SOCKET, const std::string&); virtual ~TransceiverI(); + +#ifdef ICE_USE_IOCP + bool send(); + bool receive(); +#endif + friend class ConnectorI; friend class AcceptorI; @@ -61,9 +78,6 @@ private: const Ice::StatsPtr _stats; SSL* _ssl; - IceUtil::Mutex _sslMutex; // Access to the SSL data structure must be synchronized. - - SOCKET _fd; const std::string _host; @@ -72,8 +86,19 @@ private: State _state; std::string _desc; -#ifdef _WIN32 - int _maxPacketSize; +#ifdef ICE_USE_IOCP + int _maxSendPacketSize; + int _maxReceivePacketSize; + BIO* _iocpBio; + struct sockaddr_storage _connectAddr; + IceInternal::AsyncInfo _read; + IceInternal::AsyncInfo _write; + std::vector<char> _writeBuffer; + std::vector<char>::iterator _writeI; + std::vector<char> _readBuffer; + std::vector<char>::iterator _readI; + int _sentBytes; + int _sentPacketSize; #endif }; typedef IceUtil::Handle<TransceiverI> TransceiverIPtr; diff --git a/cpp/src/slice2html/Gen.cpp b/cpp/src/slice2html/Gen.cpp index bfbb4985e59..603738f105b 100644 --- a/cpp/src/slice2html/Gen.cpp +++ b/cpp/src/slice2html/Gen.cpp @@ -1136,7 +1136,7 @@ Slice::GeneratorBase::getComment(const ContainedPtr& contained, const ContainerP size_t sz = 0; comment += toString(toSliceID(literal, contained->file()), container, false, forIndex, summary ? &sz : 0); summarySize += sz; - i = endpos; + i = static_cast<unsigned int>(endpos); } else if(summary && s[i] == '.' && (i + 1 >= s.size() || isspace(static_cast<unsigned char>(s[i + 1])))) { |