summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2009-08-21 15:55:01 +0200
committerBenoit Foucher <benoit@zeroc.com>2009-08-21 15:55:01 +0200
commitb9f2fa14fb3f222a6ec5e0a93bf25fe5ad12b56a (patch)
tree183215e2dbeadfbc871b800ce09726e58af38b91 /cpp/src
parentadding compression cookbook demo (diff)
downloadice-b9f2fa14fb3f222a6ec5e0a93bf25fe5ad12b56a.tar.bz2
ice-b9f2fa14fb3f222a6ec5e0a93bf25fe5ad12b56a.tar.xz
ice-b9f2fa14fb3f222a6ec5e0a93bf25fe5ad12b56a.zip
IOCP changes, bug 3501, 4200, 4156, 3101
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/.depend80
-rw-r--r--cpp/src/Ice/Acceptor.h16
-rw-r--r--cpp/src/Ice/ConnectRequestHandler.cpp16
-rw-r--r--cpp/src/Ice/ConnectionFactory.cpp196
-rw-r--r--cpp/src/Ice/ConnectionFactory.h19
-rw-r--r--cpp/src/Ice/ConnectionI.cpp1064
-rw-r--r--cpp/src/Ice/ConnectionI.h134
-rw-r--r--cpp/src/Ice/EndpointI.cpp10
-rw-r--r--cpp/src/Ice/EventHandler.cpp23
-rw-r--r--cpp/src/Ice/EventHandler.h79
-rw-r--r--cpp/src/Ice/EventHandlerF.h4
-rw-r--r--cpp/src/Ice/Instance.cpp28
-rw-r--r--cpp/src/Ice/Instance.h3
-rw-r--r--cpp/src/Ice/LoggerUtil.cpp99
-rw-r--r--cpp/src/Ice/Makefile2
-rw-r--r--cpp/src/Ice/Makefile.mak2
-rw-r--r--cpp/src/Ice/Network.cpp135
-rw-r--r--cpp/src/Ice/Network.h67
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp6
-rw-r--r--cpp/src/Ice/OutgoingAsync.cpp4
-rw-r--r--cpp/src/Ice/PropertyNames.cpp15
-rw-r--r--cpp/src/Ice/PropertyNames.h2
-rw-r--r--cpp/src/Ice/Selector.cpp824
-rw-r--r--cpp/src/Ice/Selector.h695
-rw-r--r--cpp/src/Ice/SelectorF.h28
-rw-r--r--cpp/src/Ice/SelectorThread.cpp319
-rw-r--r--cpp/src/Ice/SelectorThread.h78
-rw-r--r--cpp/src/Ice/SelectorThreadF.h26
-rw-r--r--cpp/src/Ice/SocketReadyCallback.h59
-rw-r--r--cpp/src/Ice/StringConverter.cpp2
-rw-r--r--cpp/src/Ice/TcpAcceptor.cpp152
-rw-r--r--cpp/src/Ice/TcpAcceptor.h19
-rw-r--r--cpp/src/Ice/TcpConnector.cpp16
-rw-r--r--cpp/src/Ice/TcpTransceiver.cpp321
-rw-r--r--cpp/src/Ice/TcpTransceiver.h28
-rw-r--r--cpp/src/Ice/ThreadPool.cpp1364
-rw-r--r--cpp/src/Ice/ThreadPool.h253
-rw-r--r--cpp/src/Ice/ThreadPoolF.h6
-rw-r--r--cpp/src/Ice/Transceiver.cpp1
-rw-r--r--cpp/src/Ice/Transceiver.h22
-rw-r--r--cpp/src/Ice/UdpTransceiver.cpp416
-rw-r--r--cpp/src/Ice/UdpTransceiver.h24
-rw-r--r--cpp/src/IceSSL/.depend10
-rw-r--r--cpp/src/IceSSL/AcceptorI.cpp159
-rw-r--r--cpp/src/IceSSL/AcceptorI.h21
-rw-r--r--cpp/src/IceSSL/ConnectorI.cpp31
-rw-r--r--cpp/src/IceSSL/ConnectorI.h1
-rw-r--r--cpp/src/IceSSL/Instance.cpp29
-rw-r--r--cpp/src/IceSSL/TransceiverI.cpp815
-rw-r--r--cpp/src/IceSSL/TransceiverI.h49
-rw-r--r--cpp/src/slice2html/Gen.cpp2
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]))))
{