summaryrefslogtreecommitdiff
path: root/ruby/src
diff options
context:
space:
mode:
Diffstat (limited to 'ruby/src')
-rw-r--r--ruby/src/IceRuby/.depend.mak13
-rw-r--r--ruby/src/IceRuby/Communicator.cpp104
-rw-r--r--ruby/src/IceRuby/Connection.cpp140
-rw-r--r--ruby/src/IceRuby/Endpoint.cpp58
-rw-r--r--ruby/src/IceRuby/Init.cpp19
-rw-r--r--ruby/src/IceRuby/Makefile50
-rw-r--r--ruby/src/IceRuby/Makefile.mk35
-rw-r--r--ruby/src/IceRuby/ObjectFactory.cpp140
-rw-r--r--ruby/src/IceRuby/ObjectFactory.h50
-rw-r--r--ruby/src/IceRuby/Operation.cpp75
-rw-r--r--ruby/src/IceRuby/Proxy.cpp77
-rw-r--r--ruby/src/IceRuby/Slice.cpp8
-rw-r--r--ruby/src/IceRuby/Types.cpp409
-rw-r--r--ruby/src/IceRuby/Types.h182
-rw-r--r--ruby/src/IceRuby/Util.cpp20
-rw-r--r--ruby/src/IceRuby/Util.h18
-rw-r--r--ruby/src/IceRuby/ValueFactoryManager.cpp445
-rw-r--r--ruby/src/IceRuby/ValueFactoryManager.h100
-rw-r--r--ruby/src/Makefile24
19 files changed, 1196 insertions, 771 deletions
diff --git a/ruby/src/IceRuby/.depend.mak b/ruby/src/IceRuby/.depend.mak
deleted file mode 100644
index 5112d16c440..00000000000
--- a/ruby/src/IceRuby/.depend.mak
+++ /dev/null
@@ -1,13 +0,0 @@
-Communicator$(OBJEXT): Communicator.cpp Communicator.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" ImplicitContext.h "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" Logger.h "$(ice_cpp_dir)/include/Ice/Logger.h" ObjectFactory.h "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" Properties.h "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" Proxy.h Types.h Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h" "$(ice_cpp_dir)/include/IceUtil/OutputUtil.h"
-Connection$(OBJEXT): Connection.cpp Connection.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" Endpoint.h Types.h Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h" "$(ice_cpp_dir)/include/IceUtil/OutputUtil.h"
-Endpoint$(OBJEXT): Endpoint.cpp Endpoint.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h"
-ImplicitContext$(OBJEXT): ImplicitContext.cpp ImplicitContext.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h"
-Init$(OBJEXT): Init.cpp Communicator.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" ImplicitContext.h "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" Logger.h "$(ice_cpp_dir)/include/Ice/Logger.h" Operation.h Properties.h "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" Proxy.h Slice.h Types.h Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h" "$(ice_cpp_dir)/include/IceUtil/OutputUtil.h" Connection.h Endpoint.h
-Logger$(OBJEXT): Logger.cpp Logger.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h"
-ObjectFactory$(OBJEXT): ObjectFactory.cpp ObjectFactory.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" Types.h Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h" "$(ice_cpp_dir)/include/IceUtil/OutputUtil.h"
-Operation$(OBJEXT): Operation.cpp Operation.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" Proxy.h Types.h Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h" "$(ice_cpp_dir)/include/IceUtil/OutputUtil.h" "$(ice_cpp_dir)/include/Slice/RubyUtil.h" "$(ice_cpp_dir)/include/Slice/Parser.h"
-Properties$(OBJEXT): Properties.cpp Properties.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h"
-Proxy$(OBJEXT): Proxy.cpp "$(ice_cpp_dir)/include/IceUtil/DisableWarnings.h" Proxy.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" Communicator.h Connection.h "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" Endpoint.h Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h"
-Slice$(OBJEXT): Slice.cpp Slice.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h" "$(ice_cpp_dir)/include/Slice/Preprocessor.h" "$(ice_cpp_dir)/include/Slice/RubyUtil.h" "$(ice_cpp_dir)/include/Slice/Parser.h" "$(ice_cpp_dir)/include/IceUtil/OutputUtil.h" "$(ice_cpp_dir)/include/IceUtil/Options.h" "$(ice_cpp_dir)/include/IceUtil/RecMutex.h"
-Types$(OBJEXT): Types.cpp Types.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" Util.h "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h" "$(ice_cpp_dir)/include/IceUtil/OutputUtil.h" Proxy.h "$(ice_cpp_dir)/include/IceUtil/InputUtil.h"
-Util$(OBJEXT): Util.cpp Util.h Config.h "$(ice_cpp_dir)/include/Ice/Config.h" "$(ice_cpp_dir)/include/IceUtil/Config.h" "$(ice_cpp_dir)/include/Ice/Ice.h" "$(ice_cpp_dir)/include/Ice/DeprecatedStringConverter.h" "$(ice_cpp_dir)/include/Ice/CommunicatorF.h" "$(ice_cpp_dir)/include/Ice/ProxyF.h" "$(ice_cpp_dir)/include/IceUtil/Shared.h" "$(ice_cpp_dir)/include/Ice/ProxyHandle.h" "$(ice_cpp_dir)/include/IceUtil/Handle.h" "$(ice_cpp_dir)/include/IceUtil/Exception.h" "$(ice_cpp_dir)/include/Ice/ObjectF.h" "$(ice_cpp_dir)/include/Ice/Handle.h" "$(ice_cpp_dir)/include/Ice/Exception.h" "$(ice_cpp_dir)/include/Ice/Format.h" "$(ice_cpp_dir)/include/Ice/StreamF.h" "$(ice_cpp_dir)/include/Ice/LocalObject.h" "$(ice_cpp_dir)/include/Ice/LocalObjectF.h" "$(ice_cpp_dir)/include/Ice/StreamHelpers.h" "$(ice_cpp_dir)/include/IceUtil/ScopedArray.h" "$(ice_cpp_dir)/include/IceUtil/Iterator.h" "$(ice_cpp_dir)/include/IceUtil/Optional.h" "$(ice_cpp_dir)/include/IceUtil/UndefSysMacros.h" "$(ice_cpp_dir)/include/IceUtil/StringConverter.h" "$(ice_cpp_dir)/include/Ice/Initialize.h" "$(ice_cpp_dir)/include/Ice/PropertiesF.h" "$(ice_cpp_dir)/include/Ice/Proxy.h" "$(ice_cpp_dir)/include/IceUtil/Mutex.h" "$(ice_cpp_dir)/include/IceUtil/Lock.h" "$(ice_cpp_dir)/include/IceUtil/ThreadException.h" "$(ice_cpp_dir)/include/IceUtil/Time.h" "$(ice_cpp_dir)/include/IceUtil/MutexProtocol.h" "$(ice_cpp_dir)/include/Ice/ProxyFactoryF.h" "$(ice_cpp_dir)/include/Ice/ConnectionIF.h" "$(ice_cpp_dir)/include/Ice/RequestHandlerF.h" "$(ice_cpp_dir)/include/Ice/EndpointF.h" "$(ice_cpp_dir)/include/Ice/EndpointTypes.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapterF.h" "$(ice_cpp_dir)/include/Ice/ReferenceF.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsync.h" "$(ice_cpp_dir)/include/IceUtil/Monitor.h" "$(ice_cpp_dir)/include/IceUtil/Cond.h" "$(ice_cpp_dir)/include/IceUtil/Timer.h" "$(ice_cpp_dir)/include/IceUtil/Thread.h" "$(ice_cpp_dir)/include/IceUtil/UniquePtr.h" "$(ice_cpp_dir)/include/Ice/OutgoingAsyncF.h" "$(ice_cpp_dir)/include/Ice/InstanceF.h" "$(ice_cpp_dir)/include/Ice/Current.h" "$(ice_cpp_dir)/include/Ice/ConnectionF.h" "$(ice_cpp_dir)/include/Ice/Identity.h" "$(ice_cpp_dir)/include/Ice/Version.h" "$(ice_cpp_dir)/include/Ice/BasicStream.h" "$(ice_cpp_dir)/include/Ice/Object.h" "$(ice_cpp_dir)/include/Ice/IncomingAsyncF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryF.h" "$(ice_cpp_dir)/include/Ice/ObjectFactoryManagerF.h" "$(ice_cpp_dir)/include/Ice/Buffer.h" "$(ice_cpp_dir)/include/Ice/Protocol.h" "$(ice_cpp_dir)/include/Ice/SlicedDataF.h" "$(ice_cpp_dir)/include/Ice/UserExceptionFactory.h" "$(ice_cpp_dir)/include/Ice/FactoryTable.h" "$(ice_cpp_dir)/include/Ice/ObserverHelper.h" "$(ice_cpp_dir)/include/Ice/Instrumentation.h" "$(ice_cpp_dir)/include/Ice/ThreadPoolF.h" "$(ice_cpp_dir)/include/Ice/LoggerF.h" "$(ice_cpp_dir)/include/Ice/InstrumentationF.h" "$(ice_cpp_dir)/include/Ice/Dispatcher.h" "$(ice_cpp_dir)/include/Ice/BuiltinSequences.h" "$(ice_cpp_dir)/include/Ice/Plugin.h" "$(ice_cpp_dir)/include/Ice/LocalException.h" "$(ice_cpp_dir)/include/Ice/PropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/GCObject.h" "$(ice_cpp_dir)/include/IceUtil/MutexPtrLock.h" "$(ice_cpp_dir)/include/Ice/Outgoing.h" "$(ice_cpp_dir)/include/Ice/Incoming.h" "$(ice_cpp_dir)/include/Ice/ServantLocatorF.h" "$(ice_cpp_dir)/include/Ice/ServantManagerF.h" "$(ice_cpp_dir)/include/Ice/ResponseHandlerF.h" "$(ice_cpp_dir)/include/Ice/IncomingAsync.h" "$(ice_cpp_dir)/include/Ice/Properties.h" "$(ice_cpp_dir)/include/Ice/Logger.h" "$(ice_cpp_dir)/include/Ice/LoggerUtil.h" "$(ice_cpp_dir)/include/Ice/RemoteLogger.h" "$(ice_cpp_dir)/include/Ice/FactoryTableInit.h" "$(ice_cpp_dir)/include/Ice/DefaultObjectFactory.h" "$(ice_cpp_dir)/include/Ice/ObjectFactory.h" "$(ice_cpp_dir)/include/Ice/Communicator.h" "$(ice_cpp_dir)/include/Ice/RouterF.h" "$(ice_cpp_dir)/include/Ice/LocatorF.h" "$(ice_cpp_dir)/include/Ice/PluginF.h" "$(ice_cpp_dir)/include/Ice/ImplicitContextF.h" "$(ice_cpp_dir)/include/Ice/CommunicatorAsync.h" "$(ice_cpp_dir)/include/Ice/ObjectAdapter.h" "$(ice_cpp_dir)/include/Ice/FacetMap.h" "$(ice_cpp_dir)/include/Ice/Endpoint.h" "$(ice_cpp_dir)/include/Ice/ServantLocator.h" "$(ice_cpp_dir)/include/Ice/SlicedData.h" "$(ice_cpp_dir)/include/Ice/Process.h" "$(ice_cpp_dir)/include/Ice/Application.h" "$(ice_cpp_dir)/include/Ice/Connection.h" "$(ice_cpp_dir)/include/Ice/ConnectionAsync.h" "$(ice_cpp_dir)/include/Ice/Functional.h" "$(ice_cpp_dir)/include/IceUtil/Functional.h" "$(ice_cpp_dir)/include/Ice/Stream.h" "$(ice_cpp_dir)/include/Ice/ImplicitContext.h" "$(ice_cpp_dir)/include/Ice/Locator.h" "$(ice_cpp_dir)/include/Ice/ProcessF.h" "$(ice_cpp_dir)/include/Ice/Router.h" "$(ice_cpp_dir)/include/Ice/DispatchInterceptor.h" "$(ice_cpp_dir)/include/Ice/NativePropertiesAdmin.h" "$(ice_cpp_dir)/include/Ice/Metrics.h" "$(ice_cpp_dir)/include/Ice/Service.h"
diff --git a/ruby/src/IceRuby/Communicator.cpp b/ruby/src/IceRuby/Communicator.cpp
index 6bd17c05426..19d39267e44 100644
--- a/ruby/src/IceRuby/Communicator.cpp
+++ b/ruby/src/IceRuby/Communicator.cpp
@@ -10,11 +10,12 @@
#include <Communicator.h>
#include <ImplicitContext.h>
#include <Logger.h>
-#include <ObjectFactory.h>
#include <Properties.h>
#include <Proxy.h>
#include <Types.h>
#include <Util.h>
+#include <ValueFactoryManager.h>
+#include <IceUtil/DisableWarnings.h>
#include <Ice/Communicator.h>
#include <Ice/Initialize.h>
#include <Ice/Locator.h>
@@ -37,9 +38,9 @@ IceRuby_Communicator_mark(Ice::CommunicatorPtr* p)
assert(p);
try
{
- ObjectFactoryPtr pof = ObjectFactoryPtr::dynamicCast((*p)->findObjectFactory(""));
- assert(pof);
- pof->mark();
+ ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast((*p)->getValueFactoryManager());
+ assert(vfm);
+ vfm->markSelf();
}
catch(const Ice::CommunicatorDestroyedException&)
{
@@ -128,6 +129,7 @@ IceRuby_initialize(int argc, VALUE* argv, VALUE self)
seq.insert(seq.begin(), getString(progName));
data.compactIdResolver = new IdResolver;
+ data.valueFactoryManager = new ValueFactoryManager;
if(hasArgs)
{
@@ -171,6 +173,17 @@ IceRuby_initialize(int argc, VALUE* argv, VALUE self)
communicator = Ice::initialize(data);
}
}
+ catch(const Ice::LocalException& ex)
+ {
+ cerr << ex << endl;
+ for(i = 0; i < ac + 1; ++i)
+ {
+ free(av[i]);
+ }
+ delete[] av;
+
+ throw;
+ }
catch(...)
{
for(i = 0; i < ac + 1; ++i)
@@ -181,7 +194,7 @@ IceRuby_initialize(int argc, VALUE* argv, VALUE self)
throw;
}
-
+
//
// Replace the contents of the given argument list with the filtered arguments.
//
@@ -205,9 +218,6 @@ IceRuby_initialize(int argc, VALUE* argv, VALUE self)
}
delete[] av;
- ObjectFactoryPtr factory = new ObjectFactory;
- communicator->addObjectFactory(factory, "");
-
VALUE result = Data_Wrap_Struct(_communicatorClass, IceRuby_Communicator_mark,
IceRuby_Communicator_free, new Ice::CommunicatorPtr(communicator));
@@ -240,12 +250,27 @@ IceRuby_stringToIdentity(VALUE self, VALUE str)
extern "C"
VALUE
-IceRuby_identityToString(VALUE self, VALUE id)
+IceRuby_identityToString(int argc, VALUE* argv, VALUE self)
{
ICE_RUBY_TRY
{
- Ice::Identity ident = getIdentity(id);
- string str = Ice::identityToString(ident);
+ if(argc < 1 || argc > 2)
+ {
+ throw RubyException(rb_eArgError, "wrong number of arguments");
+ }
+
+ Ice::Identity ident = getIdentity(argv[0]);
+
+
+ Ice::ToStringMode toStringMode = Ice::Unicode;
+ if(argc == 2)
+ {
+ volatile VALUE modeValue = callRuby(rb_funcall, argv[1], rb_intern("to_i"), 0);
+ assert(TYPE(modeValue) == T_FIXNUM);
+ toStringMode = static_cast<Ice::ToStringMode>(FIX2LONG(modeValue));
+ }
+
+ string str = Ice::identityToString(ident, toStringMode);
return createString(str);
}
ICE_RUBY_CATCH
@@ -256,12 +281,19 @@ extern "C"
VALUE
IceRuby_Communicator_destroy(VALUE self)
{
+ Ice::CommunicatorPtr p = getCommunicator(self);
+
+ ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast(p->getValueFactoryManager());
+ assert(vfm);
+
ICE_RUBY_TRY
{
- Ice::CommunicatorPtr p = getCommunicator(self);
p->destroy();
}
ICE_RUBY_CATCH
+
+ vfm->destroy();
+
return Qnil;
}
@@ -371,7 +403,7 @@ IceRuby_Communicator_proxyToProperty(VALUE self, VALUE obj, VALUE str)
volatile VALUE value = createString(q->second);
callRuby(rb_hash_aset, result, key, value);
}
- return result;
+ return result;
}
ICE_RUBY_CATCH
return Qnil;
@@ -414,10 +446,10 @@ IceRuby_Communicator_addObjectFactory(VALUE self, VALUE factory, VALUE id)
ICE_RUBY_TRY
{
Ice::CommunicatorPtr p = getCommunicator(self);
- ObjectFactoryPtr pof = ObjectFactoryPtr::dynamicCast(p->findObjectFactory(""));
- assert(pof);
+ ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast(p->getValueFactoryManager());
+ assert(vfm);
string idstr = getString(id);
- pof->add(factory, idstr);
+ vfm->addObjectFactory(factory, idstr);
}
ICE_RUBY_CATCH
return Qnil;
@@ -430,10 +462,25 @@ IceRuby_Communicator_findObjectFactory(VALUE self, VALUE id)
ICE_RUBY_TRY
{
Ice::CommunicatorPtr p = getCommunicator(self);
- ObjectFactoryPtr pof = ObjectFactoryPtr::dynamicCast(p->findObjectFactory(""));
- assert(pof);
+ ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast(p->getValueFactoryManager());
+ assert(vfm);
string idstr = getString(id);
- return pof->find(idstr);
+ return vfm->findObjectFactory(idstr);
+ }
+ ICE_RUBY_CATCH
+ return Qnil;
+}
+
+extern "C"
+VALUE
+IceRuby_Communicator_getValueFactoryManager(VALUE self)
+{
+ ICE_RUBY_TRY
+ {
+ Ice::CommunicatorPtr p = getCommunicator(self);
+ ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast(p->getValueFactoryManager());
+ assert(vfm);
+ return vfm->getObject();
}
ICE_RUBY_CATCH
return Qnil;
@@ -566,12 +613,22 @@ IceRuby_Communicator_setDefaultLocator(VALUE self, VALUE locator)
extern "C"
VALUE
-IceRuby_Communicator_flushBatchRequests(VALUE self)
+IceRuby_Communicator_flushBatchRequests(VALUE self, VALUE compress)
{
ICE_RUBY_TRY
{
Ice::CommunicatorPtr p = getCommunicator(self);
- p->flushBatchRequests();
+
+ volatile VALUE type = callRuby(rb_path2class, "Ice::CompressBatch");
+ if(callRuby(rb_obj_is_instance_of, compress, type) != Qtrue)
+ {
+ throw RubyException(rb_eTypeError,
+ "value for 'compress' argument must be an enumerator of Ice::CompressBatch");
+ }
+ volatile VALUE compressValue = callRuby(rb_funcall, compress, rb_intern("to_i"), 0);
+ assert(TYPE(compressValue) == T_FIXNUM);
+ Ice::CompressBatch cb = static_cast<Ice::CompressBatch>(FIX2LONG(compressValue));
+ p->flushBatchRequests(cb);
}
ICE_RUBY_CATCH
return Qnil;
@@ -581,7 +638,7 @@ void
IceRuby::initCommunicator(VALUE iceModule)
{
rb_define_module_function(iceModule, "initialize", CAST_METHOD(IceRuby_initialize), -1);
- rb_define_module_function(iceModule, "identityToString", CAST_METHOD(IceRuby_identityToString), 1);
+ rb_define_module_function(iceModule, "identityToString", CAST_METHOD(IceRuby_identityToString), -1);
rb_define_module_function(iceModule, "stringToIdentity", CAST_METHOD(IceRuby_stringToIdentity), 1);
_communicatorClass = rb_define_class_under(iceModule, "CommunicatorI", rb_cObject);
@@ -596,6 +653,7 @@ IceRuby::initCommunicator(VALUE iceModule)
rb_define_method(_communicatorClass, "identityToString", CAST_METHOD(IceRuby_Communicator_identityToString), 1);
rb_define_method(_communicatorClass, "addObjectFactory", CAST_METHOD(IceRuby_Communicator_addObjectFactory), 2);
rb_define_method(_communicatorClass, "findObjectFactory", CAST_METHOD(IceRuby_Communicator_findObjectFactory), 1);
+ rb_define_method(_communicatorClass, "getValueFactoryManager", CAST_METHOD(IceRuby_Communicator_getValueFactoryManager), 0);
rb_define_method(_communicatorClass, "getImplicitContext", CAST_METHOD(IceRuby_Communicator_getImplicitContext), 0);
rb_define_method(_communicatorClass, "getProperties", CAST_METHOD(IceRuby_Communicator_getProperties), 0);
rb_define_method(_communicatorClass, "getLogger", CAST_METHOD(IceRuby_Communicator_getLogger), 0);
@@ -603,7 +661,7 @@ IceRuby::initCommunicator(VALUE iceModule)
rb_define_method(_communicatorClass, "setDefaultRouter", CAST_METHOD(IceRuby_Communicator_setDefaultRouter), 1);
rb_define_method(_communicatorClass, "getDefaultLocator", CAST_METHOD(IceRuby_Communicator_getDefaultLocator), 0);
rb_define_method(_communicatorClass, "setDefaultLocator", CAST_METHOD(IceRuby_Communicator_setDefaultLocator), 1);
- rb_define_method(_communicatorClass, "flushBatchRequests", CAST_METHOD(IceRuby_Communicator_flushBatchRequests), 0);
+ rb_define_method(_communicatorClass, "flushBatchRequests", CAST_METHOD(IceRuby_Communicator_flushBatchRequests), 1);
}
Ice::CommunicatorPtr
diff --git a/ruby/src/IceRuby/Connection.cpp b/ruby/src/IceRuby/Connection.cpp
index 2c32f9fab70..4f6b615ffc2 100644
--- a/ruby/src/IceRuby/Connection.cpp
+++ b/ruby/src/IceRuby/Connection.cpp
@@ -25,7 +25,6 @@ static VALUE _tcpConnectionInfoClass;
static VALUE _udpConnectionInfoClass;
static VALUE _wsConnectionInfoClass;
static VALUE _sslConnectionInfoClass;
-static VALUE _wssConnectionInfoClass;
// **********************************************************************
// Connection
@@ -47,14 +46,47 @@ IceRuby::createConnection(const Ice::ConnectionPtr& p)
extern "C"
VALUE
-IceRuby_Connection_close(VALUE self, VALUE b)
+IceRuby_Connection_close(VALUE self, VALUE mode)
{
ICE_RUBY_TRY
{
Ice::ConnectionPtr* p = reinterpret_cast<Ice::ConnectionPtr*>(DATA_PTR(self));
assert(p);
- (*p)->close(RTEST(b));
+ volatile VALUE type = callRuby(rb_path2class, "Ice::ConnectionClose");
+ if(callRuby(rb_obj_is_instance_of, mode, type) != Qtrue)
+ {
+ throw RubyException(rb_eTypeError,
+ "value for 'mode' argument must be an enumerator of Ice::ConnectionClose");
+ }
+ volatile VALUE modeValue = callRuby(rb_funcall, mode, rb_intern("to_i"), 0);
+ assert(TYPE(modeValue) == T_FIXNUM);
+ Ice::ConnectionClose cc = static_cast<Ice::ConnectionClose>(FIX2LONG(modeValue));
+ (*p)->close(cc);
+ }
+ ICE_RUBY_CATCH
+ return Qnil;
+}
+
+extern "C"
+VALUE
+IceRuby_Connection_flushBatchRequests(VALUE self, VALUE compress)
+{
+ ICE_RUBY_TRY
+ {
+ Ice::ConnectionPtr* p = reinterpret_cast<Ice::ConnectionPtr*>(DATA_PTR(self));
+ assert(p);
+
+ volatile VALUE type = callRuby(rb_path2class, "Ice::CompressBatch");
+ if(callRuby(rb_obj_is_instance_of, compress, type) != Qtrue)
+ {
+ throw RubyException(rb_eTypeError,
+ "value for 'compress' argument must be an enumerator of Ice::CompressBatch");
+ }
+ volatile VALUE compressValue = callRuby(rb_funcall, compress, rb_intern("to_i"), 0);
+ assert(TYPE(compressValue) == T_FIXNUM);
+ Ice::CompressBatch cb = static_cast<Ice::CompressBatch>(FIX2LONG(compressValue));
+ (*p)->flushBatchRequests(cb);
}
ICE_RUBY_CATCH
return Qnil;
@@ -62,14 +94,14 @@ IceRuby_Connection_close(VALUE self, VALUE b)
extern "C"
VALUE
-IceRuby_Connection_flushBatchRequests(VALUE self)
+IceRuby_Connection_heartbeat(VALUE self)
{
ICE_RUBY_TRY
{
Ice::ConnectionPtr* p = reinterpret_cast<Ice::ConnectionPtr*>(DATA_PTR(self));
assert(p);
- (*p)->flushBatchRequests();
+ (*p)->heartbeat();
}
ICE_RUBY_CATCH
return Qnil;
@@ -222,6 +254,7 @@ IceRuby_Connection_getEndpoint(VALUE self)
ICE_RUBY_CATCH
return Qnil;
}
+
extern "C"
VALUE
IceRuby_Connection_setBufferSize(VALUE self, VALUE r, VALUE s)
@@ -242,6 +275,21 @@ IceRuby_Connection_setBufferSize(VALUE self, VALUE r, VALUE s)
extern "C"
VALUE
+IceRuby_Connection_throwException(VALUE self)
+{
+ ICE_RUBY_TRY
+ {
+ Ice::ConnectionPtr* p = reinterpret_cast<Ice::ConnectionPtr*>(DATA_PTR(self));
+ assert(p);
+
+ (*p)->throwException();
+ }
+ ICE_RUBY_CATCH
+ return Qnil;
+}
+
+extern "C"
+VALUE
IceRuby_Connection_toString(VALUE self)
{
ICE_RUBY_TRY
@@ -293,17 +341,17 @@ IceRuby_ConnectionInfo_free(Ice::ConnectionInfoPtr* p)
VALUE
IceRuby::createConnectionInfo(const Ice::ConnectionInfoPtr& p)
{
+ if(!p)
+ {
+ return Qnil;
+ }
+
VALUE info;
if(Ice::WSConnectionInfoPtr::dynamicCast(p))
{
info = Data_Wrap_Struct(_wsConnectionInfoClass, 0, IceRuby_ConnectionInfo_free, new Ice::ConnectionInfoPtr(p));
Ice::WSConnectionInfoPtr ws = Ice::WSConnectionInfoPtr::dynamicCast(p);
- rb_ivar_set(info, rb_intern("@localAddress"), createString(ws->localAddress));
- rb_ivar_set(info, rb_intern("@localPort"), INT2FIX(ws->localPort));
- rb_ivar_set(info, rb_intern("@remoteAddress"), createString(ws->remoteAddress));
- rb_ivar_set(info, rb_intern("@remotePort"), INT2FIX(ws->remotePort));
-
volatile VALUE result = callRuby(rb_hash_new);
for(Ice::HeaderDict::const_iterator q = ws->headers.begin(); q != ws->headers.end(); ++q)
{
@@ -318,54 +366,24 @@ IceRuby::createConnectionInfo(const Ice::ConnectionInfoPtr& p)
info = Data_Wrap_Struct(_tcpConnectionInfoClass, 0, IceRuby_ConnectionInfo_free, new Ice::ConnectionInfoPtr(p));
Ice::TCPConnectionInfoPtr tcp = Ice::TCPConnectionInfoPtr::dynamicCast(p);
- rb_ivar_set(info, rb_intern("@localAddress"), createString(tcp->localAddress));
- rb_ivar_set(info, rb_intern("@localPort"), INT2FIX(tcp->localPort));
- rb_ivar_set(info, rb_intern("@remoteAddress"), createString(tcp->remoteAddress));
- rb_ivar_set(info, rb_intern("@remotePort"), INT2FIX(tcp->remotePort));
+ rb_ivar_set(info, rb_intern("@rcvSize"), INT2FIX(tcp->rcvSize));
+ rb_ivar_set(info, rb_intern("@sndSize"), INT2FIX(tcp->sndSize));
}
else if(Ice::UDPConnectionInfoPtr::dynamicCast(p))
{
info = Data_Wrap_Struct(_udpConnectionInfoClass, 0, IceRuby_ConnectionInfo_free, new Ice::ConnectionInfoPtr(p));
Ice::UDPConnectionInfoPtr udp = Ice::UDPConnectionInfoPtr::dynamicCast(p);
- rb_ivar_set(info, rb_intern("@localAddress"), createString(udp->localAddress));
- rb_ivar_set(info, rb_intern("@localPort"), INT2FIX(udp->localPort));
- rb_ivar_set(info, rb_intern("@remoteAddress"), createString(udp->remoteAddress));
- rb_ivar_set(info, rb_intern("@remotePort"), INT2FIX(udp->remotePort));
rb_ivar_set(info, rb_intern("@mcastAddress"), createString(udp->mcastAddress));
rb_ivar_set(info, rb_intern("@mcastPort"), INT2FIX(udp->mcastPort));
- }
- else if(IceSSL::WSSConnectionInfoPtr::dynamicCast(p))
- {
- info = Data_Wrap_Struct(_wssConnectionInfoClass, 0, IceRuby_ConnectionInfo_free, new Ice::ConnectionInfoPtr(p));
-
- IceSSL::WSSConnectionInfoPtr wss = IceSSL::WSSConnectionInfoPtr::dynamicCast(p);
- rb_ivar_set(info, rb_intern("@localAddress"), createString(wss->localAddress));
- rb_ivar_set(info, rb_intern("@localPort"), INT2FIX(wss->localPort));
- rb_ivar_set(info, rb_intern("@remoteAddress"), createString(wss->remoteAddress));
- rb_ivar_set(info, rb_intern("@remotePort"), INT2FIX(wss->remotePort));
- rb_ivar_set(info, rb_intern("@cipher"), createString(wss->cipher));
- rb_ivar_set(info, rb_intern("@certs"), stringSeqToArray(wss->certs));
- rb_ivar_set(info, rb_intern("@verified"), wss->verified ? Qtrue : Qfalse);
-
- volatile VALUE result = callRuby(rb_hash_new);
- for(Ice::HeaderDict::const_iterator q = wss->headers.begin(); q != wss->headers.end(); ++q)
- {
- volatile VALUE key = createString(q->first);
- volatile VALUE value = createString(q->second);
- callRuby(rb_hash_aset, result, key, value);
- }
- rb_ivar_set(info, rb_intern("@headers"), result);
+ rb_ivar_set(info, rb_intern("@rcvSize"), INT2FIX(udp->rcvSize));
+ rb_ivar_set(info, rb_intern("@sndSize"), INT2FIX(udp->sndSize));
}
else if(IceSSL::ConnectionInfoPtr::dynamicCast(p))
{
info = Data_Wrap_Struct(_sslConnectionInfoClass, 0, IceRuby_ConnectionInfo_free, new Ice::ConnectionInfoPtr(p));
IceSSL::ConnectionInfoPtr ssl = IceSSL::ConnectionInfoPtr::dynamicCast(p);
- rb_ivar_set(info, rb_intern("@localAddress"), createString(ssl->localAddress));
- rb_ivar_set(info, rb_intern("@localPort"), INT2FIX(ssl->localPort));
- rb_ivar_set(info, rb_intern("@remoteAddress"), createString(ssl->remoteAddress));
- rb_ivar_set(info, rb_intern("@remotePort"), INT2FIX(ssl->remotePort));
rb_ivar_set(info, rb_intern("@cipher"), createString(ssl->cipher));
rb_ivar_set(info, rb_intern("@certs"), stringSeqToArray(ssl->certs));
rb_ivar_set(info, rb_intern("@verified"), ssl->verified ? Qtrue : Qfalse);
@@ -374,20 +392,24 @@ IceRuby::createConnectionInfo(const Ice::ConnectionInfoPtr& p)
{
info = Data_Wrap_Struct(_ipConnectionInfoClass, 0, IceRuby_ConnectionInfo_free, new Ice::ConnectionInfoPtr(p));
+ }
+ else
+ {
+ info = Data_Wrap_Struct(_connectionInfoClass, 0, IceRuby_ConnectionInfo_free, new Ice::ConnectionInfoPtr(p));
+ }
+
+ if(Ice::IPConnectionInfoPtr::dynamicCast(p))
+ {
Ice::IPConnectionInfoPtr ip = Ice::IPConnectionInfoPtr::dynamicCast(p);
rb_ivar_set(info, rb_intern("@localAddress"), createString(ip->localAddress));
rb_ivar_set(info, rb_intern("@localPort"), INT2FIX(ip->localPort));
rb_ivar_set(info, rb_intern("@remoteAddress"), createString(ip->remoteAddress));
rb_ivar_set(info, rb_intern("@remotePort"), INT2FIX(ip->remotePort));
}
- else
- {
- info = Data_Wrap_Struct(_connectionInfoClass, 0, IceRuby_ConnectionInfo_free, new Ice::ConnectionInfoPtr(p));
- }
+
+ rb_ivar_set(info, rb_intern("@underlying"), createConnectionInfo(p->underlying));
rb_ivar_set(info, rb_intern("@incoming"), p->incoming ? Qtrue : Qfalse);
rb_ivar_set(info, rb_intern("@adapterName"), createString(p->adapterName));
- rb_ivar_set(info, rb_intern("@rcvSize"), INT2FIX(p->rcvSize));
- rb_ivar_set(info, rb_intern("@sndSize"), INT2FIX(p->sndSize));
return info;
}
@@ -403,7 +425,8 @@ IceRuby::initConnection(VALUE iceModule)
// Instance methods.
//
rb_define_method(_connectionClass, "close", CAST_METHOD(IceRuby_Connection_close), 1);
- rb_define_method(_connectionClass, "flushBatchRequests", CAST_METHOD(IceRuby_Connection_flushBatchRequests), 0);
+ rb_define_method(_connectionClass, "flushBatchRequests", CAST_METHOD(IceRuby_Connection_flushBatchRequests), 1);
+ rb_define_method(_connectionClass, "heartbeat", CAST_METHOD(IceRuby_Connection_heartbeat), 0);
rb_define_method(_connectionClass, "setACM", CAST_METHOD(IceRuby_Connection_setACM), 3);
rb_define_method(_connectionClass, "getACM", CAST_METHOD(IceRuby_Connection_getACM), 0);
rb_define_method(_connectionClass, "type", CAST_METHOD(IceRuby_Connection_type), 0);
@@ -411,6 +434,7 @@ IceRuby::initConnection(VALUE iceModule)
rb_define_method(_connectionClass, "getInfo", CAST_METHOD(IceRuby_Connection_getInfo), 0);
rb_define_method(_connectionClass, "getEndpoint", CAST_METHOD(IceRuby_Connection_getEndpoint), 0);
rb_define_method(_connectionClass, "setBufferSize", CAST_METHOD(IceRuby_Connection_setBufferSize), 2);
+ rb_define_method(_connectionClass, "throwException", CAST_METHOD(IceRuby_Connection_throwException), 0);
rb_define_method(_connectionClass, "toString", CAST_METHOD(IceRuby_Connection_toString), 0);
rb_define_method(_connectionClass, "to_s", CAST_METHOD(IceRuby_Connection_toString), 0);
rb_define_method(_connectionClass, "inspect", CAST_METHOD(IceRuby_Connection_toString), 0);
@@ -462,7 +486,7 @@ IceRuby::initConnection(VALUE iceModule)
//
// WSConnectionInfo
//
- _wsConnectionInfoClass = rb_define_class_under(iceModule, "WSConnectionInfo", _ipConnectionInfoClass);
+ _wsConnectionInfoClass = rb_define_class_under(iceModule, "WSConnectionInfo", _connectionInfoClass);
//
// Instance members.
@@ -472,7 +496,7 @@ IceRuby::initConnection(VALUE iceModule)
//
// SSLConnectionInfo
//
- _sslConnectionInfoClass = rb_define_class_under(iceModule, "SSLConnectionInfo", _ipConnectionInfoClass);
+ _sslConnectionInfoClass = rb_define_class_under(iceModule, "SSLConnectionInfo", _connectionInfoClass);
//
// Instance members.
@@ -480,14 +504,4 @@ IceRuby::initConnection(VALUE iceModule)
rb_define_attr(_wsConnectionInfoClass, "cipher", 1, 0);
rb_define_attr(_wsConnectionInfoClass, "certs", 1, 0);
rb_define_attr(_wsConnectionInfoClass, "verified", 1, 0);
-
- //
- // WSSConnectionInfo
- //
- _wssConnectionInfoClass = rb_define_class_under(iceModule, "WSSConnectionInfo", _sslConnectionInfoClass);
-
- //
- // Instance members.
- //
- rb_define_attr(_wssConnectionInfoClass, "headers", 1, 0);
}
diff --git a/ruby/src/IceRuby/Endpoint.cpp b/ruby/src/IceRuby/Endpoint.cpp
index fcd846bdb29..70893f481ca 100644
--- a/ruby/src/IceRuby/Endpoint.cpp
+++ b/ruby/src/IceRuby/Endpoint.cpp
@@ -24,7 +24,6 @@ static VALUE _udpEndpointInfoClass;
static VALUE _wsEndpointInfoClass;
static VALUE _opaqueEndpointInfoClass;
static VALUE _sslEndpointInfoClass;
-static VALUE _wssEndpointInfoClass;
// **********************************************************************
// Endpoint
@@ -132,34 +131,28 @@ IceRuby_EndpointInfo_free(Ice::EndpointPtr* p)
VALUE
IceRuby::createEndpointInfo(const Ice::EndpointInfoPtr& p)
{
+ if(!p)
+ {
+ return Qnil;
+ }
+
VALUE info;
if(Ice::WSEndpointInfoPtr::dynamicCast(p))
{
info = Data_Wrap_Struct(_wsEndpointInfoClass, 0, IceRuby_EndpointInfo_free, new Ice::EndpointInfoPtr(p));
Ice::WSEndpointInfoPtr ws = Ice::WSEndpointInfoPtr::dynamicCast(p);
- rb_ivar_set(info, rb_intern("@host"), createString(ws->host));
- rb_ivar_set(info, rb_intern("@port"), INT2FIX(ws->port));
- rb_ivar_set(info, rb_intern("@sourceAddress"), createString(ws->sourceAddress));
rb_ivar_set(info, rb_intern("@resource"), createString(ws->resource));
}
else if(Ice::TCPEndpointInfoPtr::dynamicCast(p))
{
info = Data_Wrap_Struct(_tcpEndpointInfoClass, 0, IceRuby_EndpointInfo_free, new Ice::EndpointInfoPtr(p));
-
- Ice::TCPEndpointInfoPtr tcp = Ice::TCPEndpointInfoPtr::dynamicCast(p);
- rb_ivar_set(info, rb_intern("@host"), createString(tcp->host));
- rb_ivar_set(info, rb_intern("@port"), INT2FIX(tcp->port));
- rb_ivar_set(info, rb_intern("@sourceAddress"), createString(tcp->sourceAddress));
}
else if(Ice::UDPEndpointInfoPtr::dynamicCast(p))
{
info = Data_Wrap_Struct(_udpEndpointInfoClass, 0, IceRuby_EndpointInfo_free, new Ice::EndpointInfoPtr(p));
Ice::UDPEndpointInfoPtr udp = Ice::UDPEndpointInfoPtr::dynamicCast(p);
- rb_ivar_set(info, rb_intern("@host"), createString(udp->host));
- rb_ivar_set(info, rb_intern("@port"), INT2FIX(udp->port));
- rb_ivar_set(info, rb_intern("@sourceAddress"), createString(udp->sourceAddress));
rb_ivar_set(info, rb_intern("@mcastInterface"), createString(udp->mcastInterface));
rb_ivar_set(info, rb_intern("@mcastTtl"), INT2FIX(udp->mcastTtl));
}
@@ -173,39 +166,28 @@ IceRuby::createEndpointInfo(const Ice::EndpointInfoPtr& p)
rb_ivar_set(info, rb_intern("@rawBytes"), v);
rb_ivar_set(info, rb_intern("@rawEncoding"), createEncodingVersion(opaque->rawEncoding));
}
- else if(IceSSL::WSSEndpointInfoPtr::dynamicCast(p))
- {
- info = Data_Wrap_Struct(_wssEndpointInfoClass, 0, IceRuby_EndpointInfo_free, new Ice::EndpointInfoPtr(p));
-
- IceSSL::WSSEndpointInfoPtr wss = IceSSL::WSSEndpointInfoPtr::dynamicCast(p);
- rb_ivar_set(info, rb_intern("@host"), createString(wss->host));
- rb_ivar_set(info, rb_intern("@port"), INT2FIX(wss->port));
- rb_ivar_set(info, rb_intern("@sourceAddress"), createString(wss->sourceAddress));
- rb_ivar_set(info, rb_intern("@resource"), createString(wss->resource));
- }
else if(IceSSL::EndpointInfoPtr::dynamicCast(p))
{
info = Data_Wrap_Struct(_sslEndpointInfoClass, 0, IceRuby_EndpointInfo_free, new Ice::EndpointInfoPtr(p));
-
- IceSSL::EndpointInfoPtr ssl = IceSSL::EndpointInfoPtr::dynamicCast(p);
- rb_ivar_set(info, rb_intern("@host"), createString(ssl->host));
- rb_ivar_set(info, rb_intern("@port"), INT2FIX(ssl->port));
- rb_ivar_set(info, rb_intern("@sourceAddress"), createString(ssl->sourceAddress));
}
else if(Ice::IPEndpointInfoPtr::dynamicCast(p))
{
info = Data_Wrap_Struct(_ipEndpointInfoClass, 0, IceRuby_EndpointInfo_free, new Ice::EndpointInfoPtr(p));
+ }
+ else
+ {
+ info = Data_Wrap_Struct(_endpointInfoClass, 0, IceRuby_EndpointInfo_free, new Ice::EndpointInfoPtr(p));
+ }
+ if(Ice::IPEndpointInfoPtr::dynamicCast(p))
+ {
Ice::IPEndpointInfoPtr ip = Ice::IPEndpointInfoPtr::dynamicCast(p);
rb_ivar_set(info, rb_intern("@host"), createString(ip->host));
rb_ivar_set(info, rb_intern("@port"), INT2FIX(ip->port));
rb_ivar_set(info, rb_intern("@sourceAddress"), createString(ip->sourceAddress));
}
- else
- {
- info = Data_Wrap_Struct(_endpointInfoClass, 0, IceRuby_EndpointInfo_free, new Ice::EndpointInfoPtr(p));
- }
+ rb_ivar_set(info, rb_intern("@underlying"), createEndpointInfo(p->underlying));
rb_ivar_set(info, rb_intern("@timeout"), INT2FIX(p->timeout));
rb_ivar_set(info, rb_intern("@compress"), p->compress ? Qtrue : Qfalse);
return info;
@@ -329,7 +311,7 @@ IceRuby::initEndpoint(VALUE iceModule)
//
// WSEndpointInfo
//
- _wsEndpointInfoClass = rb_define_class_under(iceModule, "WSEndpointInfo", _tcpEndpointInfoClass);
+ _wsEndpointInfoClass = rb_define_class_under(iceModule, "WSEndpointInfo", _endpointInfoClass);
//
// Instance members.
@@ -350,17 +332,7 @@ IceRuby::initEndpoint(VALUE iceModule)
//
// SSLEndpointInfo
//
- _sslEndpointInfoClass = rb_define_class_under(iceModule, "SSLEndpointInfo", _ipEndpointInfoClass);
-
- //
- // WSSEndpointInfo
- //
- _wssEndpointInfoClass = rb_define_class_under(iceModule, "WSSEndpointInfo", _sslEndpointInfoClass);
-
- //
- // Instance members.
- //
- rb_define_attr(_wssEndpointInfoClass, "resource", 1, 0);
+ _sslEndpointInfoClass = rb_define_class_under(iceModule, "SSLEndpointInfo", _endpointInfoClass);
}
bool
diff --git a/ruby/src/IceRuby/Init.cpp b/ruby/src/IceRuby/Init.cpp
index 6a3768205ff..a70dd421691 100644
--- a/ruby/src/IceRuby/Init.cpp
+++ b/ruby/src/IceRuby/Init.cpp
@@ -17,6 +17,9 @@
#include <Types.h>
#include <Connection.h>
#include <Endpoint.h>
+#include <ValueFactoryManager.h>
+
+#include <Ice/RegisterPlugins.h>
using namespace std;
using namespace IceRuby;
@@ -26,21 +29,12 @@ static VALUE iceModule;
extern "C"
{
-#ifdef ICE_STATIC_LIBS
-Ice::Plugin* createIceSSL(const Ice::CommunicatorPtr&, const std::string&, const Ice::StringSeq&);
-Ice::Plugin* createIceDiscovery(const Ice::CommunicatorPtr&, const string&, const Ice::StringSeq&);
-Ice::Plugin* createIceLocatorDiscovery(const Ice::CommunicatorPtr&, const string&, const Ice::StringSeq&);
-#endif
-
void
ICE_DECLSPEC_EXPORT Init_IceRuby()
{
-#ifdef ICE_STATIC_LIBS
- // Register the plugins manually if we're building with static libraries.
- Ice::registerPluginFactory("IceSSL", createIceSSL, false);
- Ice::registerPluginFactory("IceDiscovery", createIceDiscovery, false);
- Ice::registerPluginFactory("IceLocatorDiscovery", createIceLocatorDiscovery, false);
-#endif
+ Ice::registerIceSSL(false);
+ Ice::registerIceDiscovery(false);
+ Ice::registerIceLocatorDiscovery(false);
iceModule = rb_define_module("Ice");
initCommunicator(iceModule);
@@ -54,6 +48,7 @@ ICE_DECLSPEC_EXPORT Init_IceRuby()
initUtil(iceModule);
initConnection(iceModule);
initEndpoint(iceModule);
+ initValueFactoryManager(iceModule);
}
}
diff --git a/ruby/src/IceRuby/Makefile b/ruby/src/IceRuby/Makefile
deleted file mode 100644
index 065cea7eede..00000000000
--- a/ruby/src/IceRuby/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-# **********************************************************************
-#
-# Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
-#
-# This copy of Ice is licensed to you under the terms described in the
-# ICE_LICENSE file included in this distribution.
-#
-# **********************************************************************
-
-top_srcdir = ../..
-
-LIBFILENAME = $(call mkrblibfilename,IceRuby,$(VERSION))
-SONAME = $(call mkrbsoname,IceRuby,$(SOVERSION))
-LIBNAME = $(call mkrblibname,IceRuby)
-TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME))
-
-OBJS = Communicator.o \
- Connection.o \
- Endpoint.o \
- ImplicitContext.o \
- Init.o \
- Logger.o \
- ObjectFactory.o \
- Operation.o \
- Properties.o \
- Proxy.o \
- Slice.o \
- Types.o \
- Util.o
-
-include $(top_srcdir)/config/Make.rules
-
-CPPFLAGS := -I. -I.. $(CPPFLAGS) $(ICE_FLAGS) $(RUBY_FLAGS)
-LINKWITH := -L"$(libdir)" $(ICE_LIBS) $(RUBY_LIBS) $(CXXLIBS)
-
-$(libdir)/$(LIBFILENAME): $(OBJS)
- rm -f $@
- $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH))
-
-$(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME)
- rm -f $@
- ln -s $(LIBFILENAME) $@
-
-$(libdir)/$(LIBNAME): $(libdir)/$(SONAME)
- rm -f $@
- ln -s $(SONAME) $@
-
-install:: all
- $(call installlib,$(DESTDIR)$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
-
diff --git a/ruby/src/IceRuby/Makefile.mk b/ruby/src/IceRuby/Makefile.mk
new file mode 100644
index 00000000000..b4468e12b9c
--- /dev/null
+++ b/ruby/src/IceRuby/Makefile.mk
@@ -0,0 +1,35 @@
+# **********************************************************************
+#
+# Copyright (c) 2003-2016 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.
+#
+# **********************************************************************
+
+$(project)_libraries := IceRuby
+
+IceRuby_target := ruby-module
+IceRuby_targetname := IceRuby
+IceRuby_targetdir := $(lang_srcdir)/ruby
+IceRuby_installdir := $(install_rubylibdir)
+IceRuby_cppflags := -I$(project) -I$(top_srcdir)/cpp/include -I$(top_srcdir)/cpp/include/generated \
+ -I$(top_srcdir)/cpp/src $(ruby_cppflags)
+IceRuby_ldflags := $(ruby_ldflags)
+IceRuby_dependencies := IceDiscovery IceLocatorDiscovery IceSSL Ice
+IceRuby_libs := mcpp
+IceRuby_extra_sources := $(filter-out %Util.cpp %Python.cpp,\
+ $(wildcard $(top_srcdir)/cpp/src/Slice/*.cpp)) \
+ $(top_srcdir)/cpp/src/Slice/SliceUtil.cpp \
+ $(top_srcdir)/cpp/src/Slice/RubyUtil.cpp \
+ $(top_srcdir)/cpp/src/Slice/StringLiteralUtil.cpp
+
+
+#
+# On the default platform, always write the module in the ruby directory.
+#
+$(foreach p,$(supported-platforms),$(eval $$p_targetdir[IceRuby] := /$$p))
+$(firstword $(supported-platforms))_targetdir[IceRuby] :=
+
+projects += $(project)
+srcs:: $(project)
diff --git a/ruby/src/IceRuby/ObjectFactory.cpp b/ruby/src/IceRuby/ObjectFactory.cpp
deleted file mode 100644
index 583624eb9f2..00000000000
--- a/ruby/src/IceRuby/ObjectFactory.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2017 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 <ObjectFactory.h>
-#include <Types.h>
-#include <Util.h>
-#include <Ice/LocalException.h>
-
-using namespace std;
-using namespace IceRuby;
-
-IceRuby::ObjectFactory::ObjectFactory()
-{
-}
-
-IceRuby::ObjectFactory::~ObjectFactory()
-{
- assert(_factoryMap.empty());
-}
-
-Ice::ObjectPtr
-IceRuby::ObjectFactory::create(const string& id)
-{
- Lock sync(*this);
-
- //
- // Get the type information.
- //
- ClassInfoPtr info;
- if(id == Ice::Object::ice_staticId())
- {
- //
- // When the ID is that of Ice::Object, it indicates that the stream has not
- // found a factory and is providing us an opportunity to preserve the object.
- //
- info = lookupClassInfo("::Ice::UnknownSlicedObject");
- }
- else
- {
- info = lookupClassInfo(id);
- }
-
- if(!info)
- {
- return 0;
- }
-
- //
- // Check if the application has registered a factory for this id.
- //
- FactoryMap::iterator p = _factoryMap.find(id);
- if(p != _factoryMap.end())
- {
- //
- // Invoke the create method on the Ruby factory object.
- //
- volatile VALUE str = createString(id);
- volatile VALUE obj = callRuby(rb_funcall, p->second, rb_intern("create"), 1, str);
- if(NIL_P(obj))
- {
- return 0;
- }
- return new ObjectReader(obj, info);
- }
-
- //
- // Instantiate the object.
- //
- volatile VALUE obj = callRuby(rb_class_new_instance, 0, reinterpret_cast<VALUE*>(0), info->rubyClass);
- assert(!NIL_P(obj));
- return new ObjectReader(obj, info);
-}
-
-void
-IceRuby::ObjectFactory::destroy()
-{
- Lock sync(*this);
-
- for(FactoryMap::iterator p = _factoryMap.begin(); p != _factoryMap.end(); ++p)
- {
- //
- // Invoke the destroy method on each registered Ruby factory.
- //
- try
- {
- callRuby(rb_funcall, p->second, rb_intern("destroy"), 0);
- }
- catch(const RubyException&)
- {
- // Ignore.
- }
- }
- _factoryMap.clear();
-}
-
-void
-IceRuby::ObjectFactory::add(VALUE factory, const string& id)
-{
- Lock sync(*this);
-
- FactoryMap::iterator p = _factoryMap.find(id);
- if(p != _factoryMap.end())
- {
- Ice::AlreadyRegisteredException ex(__FILE__, __LINE__);
- ex.kindOfObject = "object factory";
- ex.id = id;
- throw ex;
- }
-
- _factoryMap.insert(FactoryMap::value_type(id, factory));
-}
-
-VALUE
-IceRuby::ObjectFactory::find(const string& id)
-{
- Lock sync(*this);
-
- FactoryMap::iterator p = _factoryMap.find(id);
- if(p == _factoryMap.end())
- {
- return Qnil;
- }
-
- return p->second;
-}
-
-void
-IceRuby::ObjectFactory::mark()
-{
- for(FactoryMap::iterator p = _factoryMap.begin(); p != _factoryMap.end(); ++p)
- {
- rb_gc_mark(p->second);
- }
-}
diff --git a/ruby/src/IceRuby/ObjectFactory.h b/ruby/src/IceRuby/ObjectFactory.h
deleted file mode 100644
index d3b6a8e9cdd..00000000000
--- a/ruby/src/IceRuby/ObjectFactory.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2017 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_RUBY_OBJECT_FACTORY_H
-#define ICE_RUBY_OBJECT_FACTORY_H
-
-#include <Config.h>
-#include <Ice/ObjectF.h>
-#include <Ice/ObjectFactory.h>
-#include <IceUtil/Mutex.h>
-
-namespace IceRuby
-{
-
-//
-// Each communicator registers an instance of ObjectFactory as its
-// default object factory. This instance delegates to registered Ruby
-// objects, and instantiates concrete classes when no factory is present.
-//
-class ObjectFactory : public Ice::ObjectFactory, public IceUtil::Mutex
-{
-public:
-
- ObjectFactory();
- ~ObjectFactory();
-
- virtual Ice::ObjectPtr create(const std::string&);
-
- virtual void destroy();
-
- void add(VALUE, const std::string&);
- VALUE find(const std::string&);
- void mark();
-
-private:
-
- typedef std::map<std::string, VALUE> FactoryMap;
- FactoryMap _factoryMap;
-};
-typedef IceUtil::Handle<ObjectFactory> ObjectFactoryPtr;
-
-}
-
-#endif
diff --git a/ruby/src/IceRuby/Operation.cpp b/ruby/src/IceRuby/Operation.cpp
index 1fdb09880a3..bc485a2b90d 100644
--- a/ruby/src/IceRuby/Operation.cpp
+++ b/ruby/src/IceRuby/Operation.cpp
@@ -71,7 +71,7 @@ private:
void convertParams(VALUE, ParamInfoList&, int, bool&);
ParamInfoPtr convertParam(VALUE, int);
- void prepareRequest(const Ice::ObjectPrx&, VALUE, Ice::OutputStreamPtr&, pair<const Ice::Byte*, const Ice::Byte*>&);
+ void prepareRequest(const Ice::ObjectPrx&, VALUE, Ice::OutputStream*, pair<const Ice::Byte*, const Ice::Byte*>&);
VALUE unmarshalResults(const vector<Ice::Byte>&, const Ice::CommunicatorPtr&);
VALUE unmarshalException(const vector<Ice::Byte>&, const Ice::CommunicatorPtr&);
bool validateException(VALUE) const;
@@ -79,27 +79,18 @@ private:
};
typedef IceUtil::Handle<OperationI> OperationIPtr;
-class UserExceptionReaderFactoryI : public Ice::UserExceptionReaderFactory
+class UserExceptionFactory : public Ice::UserExceptionFactory
{
public:
- UserExceptionReaderFactoryI(const Ice::CommunicatorPtr& communicator) :
- _communicator(communicator)
- {
- }
-
- virtual void createAndThrow(const string& id) const
+ virtual void createAndThrow(const string& id)
{
ExceptionInfoPtr info = lookupExceptionInfo(id);
if(info)
{
- throw ExceptionReader(_communicator, info);
+ throw ExceptionReader(info);
}
}
-
-private:
-
- const Ice::CommunicatorPtr _communicator;
};
}
@@ -299,9 +290,9 @@ IceRuby::OperationI::invoke(const Ice::ObjectPrx& proxy, VALUE args, VALUE hctx)
//
// Marshal the input parameters to a byte sequence.
//
- Ice::OutputStreamPtr os;
+ Ice::OutputStream os(communicator);
pair<const Ice::Byte*, const Ice::Byte*> params;
- prepareRequest(proxy, args, os, params);
+ prepareRequest(proxy, args, &os, params);
if(!_deprecateMessage.empty())
{
@@ -409,7 +400,7 @@ IceRuby::OperationI::convertParam(VALUE v, int pos)
}
void
-IceRuby::OperationI::prepareRequest(const Ice::ObjectPrx& proxy, VALUE args, Ice::OutputStreamPtr& os,
+IceRuby::OperationI::prepareRequest(const Ice::ObjectPrx& proxy, VALUE args, Ice::OutputStream* os,
pair<const Ice::Byte*, const Ice::Byte*>& params)
{
params.first = params.second = static_cast<const Ice::Byte*>(0);
@@ -430,7 +421,6 @@ IceRuby::OperationI::prepareRequest(const Ice::ObjectPrx& proxy, VALUE args, Ice
//
// Marshal the in parameters.
//
- os = Ice::createOutputStream(proxy->ice_getCommunicator());
os->startEncapsulation(proxy->ice_getEncodingVersion(), _format);
ObjectMap objectMap;
@@ -479,7 +469,7 @@ IceRuby::OperationI::prepareRequest(const Ice::ObjectPrx& proxy, VALUE args, Ice
if(_sendsClasses)
{
- os->writePendingObjects();
+ os->writePendingValues();
}
os->endEncapsulation();
@@ -503,17 +493,17 @@ IceRuby::OperationI::unmarshalResults(const vector<Ice::Byte>& bytes, const Ice:
// Unmarshal the results. If there is more than one value to be returned, then return them
// in a tuple of the form (result, outParam1, ...). Otherwise just return the value.
//
- Ice::InputStreamPtr is = Ice::wrapInputStream(communicator, bytes);
+ Ice::InputStream is(communicator, bytes);
//
- // Store a pointer to a local SlicedDataUtil object as the stream's closure.
+ // Store a pointer to a local StreamUtil object as the stream's closure.
// This is necessary to support object unmarshaling (see ObjectReader).
//
- SlicedDataUtil util;
- assert(!is->closure());
- is->closure(&util);
+ StreamUtil util;
+ assert(!is.getClosure());
+ is.setClosure(&util);
- is->startEncapsulation();
+ is.startEncapsulation();
ParamInfoList::iterator p;
@@ -526,7 +516,7 @@ IceRuby::OperationI::unmarshalResults(const vector<Ice::Byte>& bytes, const Ice:
if(!info->optional)
{
void* closure = reinterpret_cast<void*>(info->pos);
- info->type->unmarshal(is, info, results, closure, false);
+ info->type->unmarshal(&is, info, results, closure, false);
}
}
@@ -537,7 +527,7 @@ IceRuby::OperationI::unmarshalResults(const vector<Ice::Byte>& bytes, const Ice:
{
assert(_returnType->pos == 0);
void* closure = reinterpret_cast<void*>(_returnType->pos);
- _returnType->type->unmarshal(is, _returnType, results, closure, false);
+ _returnType->type->unmarshal(&is, _returnType, results, closure, false);
}
//
@@ -546,10 +536,10 @@ IceRuby::OperationI::unmarshalResults(const vector<Ice::Byte>& bytes, const Ice:
for(p = _optionalOutParams.begin(); p != _optionalOutParams.end(); ++p)
{
ParamInfoPtr info = *p;
- if(is->readOptional(info->tag, info->type->optionalFormat()))
+ if(is.readOptional(info->tag, info->type->optionalFormat()))
{
void* closure = reinterpret_cast<void*>(info->pos);
- info->type->unmarshal(is, info, results, closure, true);
+ info->type->unmarshal(&is, info, results, closure, true);
}
else
{
@@ -559,12 +549,12 @@ IceRuby::OperationI::unmarshalResults(const vector<Ice::Byte>& bytes, const Ice:
if(_returnsClasses)
{
- is->readPendingObjects();
+ is.readPendingValues();
}
- is->endEncapsulation();
+ is.endEncapsulation();
- util.update();
+ util.updateSlicedData();
return results;
}
@@ -572,37 +562,37 @@ IceRuby::OperationI::unmarshalResults(const vector<Ice::Byte>& bytes, const Ice:
VALUE
IceRuby::OperationI::unmarshalException(const vector<Ice::Byte>& bytes, const Ice::CommunicatorPtr& communicator)
{
- Ice::InputStreamPtr is = Ice::wrapInputStream(communicator, bytes);
+ Ice::InputStream is(communicator, bytes);
//
- // Store a pointer to a local SlicedDataUtil object as the stream's closure.
+ // Store a pointer to a local StreamUtil object as the stream's closure.
// This is necessary to support object unmarshaling (see ObjectReader).
//
- SlicedDataUtil util;
- assert(!is->closure());
- is->closure(&util);
+ StreamUtil util;
+ assert(!is.getClosure());
+ is.setClosure(&util);
- is->startEncapsulation();
+ is.startEncapsulation();
try
{
- Ice::UserExceptionReaderFactoryPtr factory = new UserExceptionReaderFactoryI(communicator);
- is->throwException(factory);
+ Ice::UserExceptionFactoryPtr factory = new UserExceptionFactory;
+ is.throwException(factory);
}
catch(const ExceptionReader& r)
{
- is->endEncapsulation();
+ is.endEncapsulation();
volatile VALUE ex = r.getException();
if(validateException(ex))
{
- util.update();
+ util.updateSlicedData();
Ice::SlicedDataPtr slicedData = r.getSlicedData();
if(slicedData)
{
- SlicedDataUtil::setMember(ex, slicedData);
+ StreamUtil::setSlicedDataMember(ex, slicedData);
}
return ex;
@@ -622,7 +612,6 @@ IceRuby::OperationI::unmarshalException(const vector<Ice::Byte>& bytes, const Ic
#ifdef __SUNPRO_CC
return 0;
#endif
-
}
bool
diff --git a/ruby/src/IceRuby/Proxy.cpp b/ruby/src/IceRuby/Proxy.cpp
index a6549a3fc63..51a02f5e108 100644
--- a/ruby/src/IceRuby/Proxy.cpp
+++ b/ruby/src/IceRuby/Proxy.cpp
@@ -49,9 +49,9 @@ IceRuby_ObjectPrx_free(Ice::ObjectPrx* p)
}
//
-// Returns true if a context was provided.
+// If a context was provided set it to ::Ice::noExplicitContext.
//
-static bool
+static void
checkArgs(const char* name, int numArgs, int argc, VALUE* argv, Ice::Context& ctx)
{
if(argc < numArgs || argc > numArgs + 1)
@@ -65,9 +65,11 @@ checkArgs(const char* name, int numArgs, int argc, VALUE* argv, Ice::Context& ct
{
throw RubyException(rb_eArgError, "%s: invalid context hash", name);
}
- return true;
}
- return false;
+ else
+ {
+ ctx = ::Ice::noExplicitContext;
+ }
}
extern "C"
@@ -77,7 +79,7 @@ IceRuby_ObjectPrx_hash(VALUE self)
ICE_RUBY_TRY
{
Ice::ObjectPrx p = getProxy(self);
- return INT2FIX(p->__hash());
+ return INT2FIX(p->_hash());
}
ICE_RUBY_CATCH
return Qnil;
@@ -120,20 +122,10 @@ IceRuby_ObjectPrx_ice_isA(int argc, VALUE* argv, VALUE self)
Ice::ObjectPrx p = getProxy(self);
Ice::Context ctx;
- bool haveContext = checkArgs("ice_isA", 1, argc, argv, ctx);
-
+ checkArgs("ice_isA", 1, argc, argv, ctx);
string id = getString(argv[0]);
- bool result;
- if(haveContext)
- {
- result = p->ice_isA(id, ctx);
- }
- else
- {
- result = p->ice_isA(id);
- }
- return result ? Qtrue : Qfalse;
+ return p->ice_isA(id, ctx) ? Qtrue : Qfalse;
}
ICE_RUBY_CATCH
return Qnil;
@@ -148,16 +140,8 @@ IceRuby_ObjectPrx_ice_ping(int argc, VALUE* argv, VALUE self)
Ice::ObjectPrx p = getProxy(self);
Ice::Context ctx;
- bool haveContext = checkArgs("ice_ping", 0, argc, argv, ctx);
-
- if(haveContext)
- {
- p->ice_ping(ctx);
- }
- else
- {
- p->ice_ping();
- }
+ checkArgs("ice_ping", 0, argc, argv, ctx);
+ p->ice_ping(ctx);
}
ICE_RUBY_CATCH
return Qnil;
@@ -172,18 +156,9 @@ IceRuby_ObjectPrx_ice_ids(int argc, VALUE* argv, VALUE self)
Ice::ObjectPrx p = getProxy(self);
Ice::Context ctx;
- bool haveContext = checkArgs("ice_ids", 0, argc, argv, ctx);
-
- vector<string> ids;
- if(haveContext)
- {
- ids = p->ice_ids(ctx);
- }
- else
- {
- ids = p->ice_ids();
- }
+ checkArgs("ice_ids", 0, argc, argv, ctx);
+ vector<string> ids = p->ice_ids(ctx);
volatile VALUE result = createArray(ids.size());
long i = 0;
for(vector<string>::iterator q = ids.begin(); q != ids.end(); ++q, ++i)
@@ -206,18 +181,8 @@ IceRuby_ObjectPrx_ice_id(int argc, VALUE* argv, VALUE self)
Ice::ObjectPrx p = getProxy(self);
Ice::Context ctx;
- bool haveContext = checkArgs("ice_id", 0, argc, argv, ctx);
-
- string id;
- if(haveContext)
- {
- id = p->ice_id(ctx);
- }
- else
- {
- id = p->ice_id();
- }
-
+ checkArgs("ice_id", 0, argc, argv, ctx);
+ string id = p->ice_id(ctx);
return createString(id);
}
ICE_RUBY_CATCH
@@ -1134,7 +1099,7 @@ IceRuby_ObjectPrx_uncheckedCast(int argc, VALUE* args, VALUE self)
extern "C"
VALUE
-IceRuby_ObjectPrx_ice_checkedCast(VALUE self, VALUE obj, VALUE id, VALUE facetOrCtx, VALUE ctx)
+IceRuby_ObjectPrx_ice_checkedCast(VALUE self, VALUE obj, VALUE id, VALUE facetOrContext, VALUE ctx)
{
//
// ice_checkedCast is called from generated code, therefore we always expect
@@ -1157,19 +1122,19 @@ IceRuby_ObjectPrx_ice_checkedCast(VALUE self, VALUE obj, VALUE id, VALUE facetOr
string idstr = getString(id);
volatile VALUE facet = Qnil;
- if(isString(facetOrCtx))
+ if(isString(facetOrContext))
{
- facet = facetOrCtx;
+ facet = facetOrContext;
}
- else if(isHash(facetOrCtx))
+ else if(isHash(facetOrContext))
{
if(!NIL_P(ctx))
{
throw RubyException(rb_eArgError, "facet argument to checkedCast must be a string");
}
- ctx = facetOrCtx;
+ ctx = facetOrContext;
}
- else if(!NIL_P(facetOrCtx))
+ else if(!NIL_P(facetOrContext))
{
throw RubyException(rb_eArgError, "second argument to checkedCast must be a facet or context");
}
diff --git a/ruby/src/IceRuby/Slice.cpp b/ruby/src/IceRuby/Slice.cpp
index c8a21d2ff9c..858da4819cc 100644
--- a/ruby/src/IceRuby/Slice.cpp
+++ b/ruby/src/IceRuby/Slice.cpp
@@ -187,22 +187,22 @@ IceRuby_compile(int argc, VALUE* argv, VALUE self)
}
catch(const std::exception& ex)
{
- getErrorStream() << argSeq[0] << ": error:" << ex.what() << endl;
+ cerr << argSeq[0] << ": error:" << ex.what() << endl;
rc = EXIT_FAILURE;
}
catch(const std::string& msg)
{
- getErrorStream() << argSeq[0] << ": error:" << msg << endl;
+ cerr << argSeq[0] << ": error:" << msg << endl;
rc = EXIT_FAILURE;
}
catch(const char* msg)
{
- getErrorStream() << argSeq[0] << ": error:" << msg << endl;
+ cerr << argSeq[0] << ": error:" << msg << endl;
rc = EXIT_FAILURE;
}
catch(...)
{
- getErrorStream() << argSeq[0] << ": error:" << "unknown exception" << endl;
+ cerr << argSeq[0] << ": error:" << "unknown exception" << endl;
rc = EXIT_FAILURE;
}
return INT2FIX(rc);
diff --git a/ruby/src/IceRuby/Types.cpp b/ruby/src/IceRuby/Types.cpp
index 8257db81556..16085d06347 100644
--- a/ruby/src/IceRuby/Types.cpp
+++ b/ruby/src/IceRuby/Types.cpp
@@ -13,7 +13,9 @@
#include <IceUtil/InputUtil.h>
#include <IceUtil/OutputUtil.h>
#include <IceUtil/ScopedArray.h>
+#include <Ice/InputStream.h>
#include <Ice/LocalException.h>
+#include <Ice/OutputStream.h>
#include <Ice/SlicedData.h>
#include <list>
#include <limits>
@@ -63,22 +65,6 @@ public:
};
static InfoMapDestroyer infoMapDestroyer;
-class ReadObjectCallback : public Ice::ReadObjectCallback
-{
-public:
-
- ReadObjectCallback(const ClassInfoPtr&, const UnmarshalCallbackPtr&, VALUE, void*);
-
- virtual void invoke(const Ice::ObjectPtr&);
-
-private:
-
- ClassInfoPtr _info;
- UnmarshalCallbackPtr _cb;
- VALUE _target;
- void* _closure;
-};
-
string
escapeString(const string& str)
{
@@ -184,16 +170,16 @@ addExceptionInfo(const string& id, const ExceptionInfoPtr& info)
}
//
-// SlicedDataUtil implementation
+// StreamUtil implementation
//
-VALUE IceRuby::SlicedDataUtil::_slicedDataType = Qnil;
-VALUE IceRuby::SlicedDataUtil::_sliceInfoType = Qnil;
+VALUE IceRuby::StreamUtil::_slicedDataType = Qnil;
+VALUE IceRuby::StreamUtil::_sliceInfoType = Qnil;
-IceRuby::SlicedDataUtil::SlicedDataUtil()
+IceRuby::StreamUtil::StreamUtil()
{
}
-IceRuby::SlicedDataUtil::~SlicedDataUtil()
+IceRuby::StreamUtil::~StreamUtil()
{
//
// Make sure we break any cycles among the ObjectReaders in preserved slices.
@@ -204,35 +190,41 @@ IceRuby::SlicedDataUtil::~SlicedDataUtil()
for(Ice::SliceInfoSeq::const_iterator q = slicedData->slices.begin(); q != slicedData->slices.end(); ++q)
{
//
- // Don't just call (*q)->objects.clear(), as releasing references
- // to the objects could have unexpected side effects. We exchange
+ // Don't just call (*q)->instances.clear(), as releasing references
+ // to the instances could have unexpected side effects. We exchange
// the vector into a temporary and then let the temporary fall out
// of scope.
//
vector<Ice::ObjectPtr> tmp;
- tmp.swap((*q)->objects);
+ tmp.swap((*q)->instances);
}
}
}
void
-IceRuby::SlicedDataUtil::add(const ObjectReaderPtr& reader)
+IceRuby::StreamUtil::add(const ReadObjectCallbackPtr& callback)
+{
+ _callbacks.push_back(callback);
+}
+
+void
+IceRuby::StreamUtil::add(const ObjectReaderPtr& reader)
{
assert(reader->getSlicedData());
_readers.insert(reader);
}
void
-IceRuby::SlicedDataUtil::update()
+IceRuby::StreamUtil::updateSlicedData()
{
for(set<ObjectReaderPtr>::iterator p = _readers.begin(); p != _readers.end(); ++p)
{
- setMember((*p)->getObject(), (*p)->getSlicedData());
+ setSlicedDataMember((*p)->getObject(), (*p)->getSlicedData());
}
}
void
-IceRuby::SlicedDataUtil::setMember(VALUE obj, const Ice::SlicedDataPtr& slicedData)
+IceRuby::StreamUtil::setSlicedDataMember(VALUE obj, const Ice::SlicedDataPtr& slicedData)
{
//
// Create a Ruby equivalent of the SlicedData object.
@@ -288,23 +280,23 @@ IceRuby::SlicedDataUtil::setMember(VALUE obj, const Ice::SlicedDataPtr& slicedDa
callRuby(rb_iv_set, slice, "@bytes", bytes);
//
- // objects
+ // instances
//
- volatile VALUE objects = createArray((*p)->objects.size());
- callRuby(rb_iv_set, slice, "@objects", objects);
+ volatile VALUE instances = createArray((*p)->instances.size());
+ callRuby(rb_iv_set, slice, "@instances", instances);
int j = 0;
- for(vector<Ice::ObjectPtr>::iterator q = (*p)->objects.begin(); q != (*p)->objects.end(); ++q)
+ for(vector<Ice::ObjectPtr>::iterator q = (*p)->instances.begin(); q != (*p)->instances.end(); ++q)
{
//
- // Each element in the objects list is an instance of ObjectReader that wraps a Ruby object.
+ // Each element in the instances list is an instance of ObjectReader that wraps a Ruby object.
//
assert(*q);
ObjectReaderPtr r = ObjectReaderPtr::dynamicCast(*q);
assert(r);
VALUE o = r->getObject();
assert(o != Qnil); // Should be non-nil.
- RARRAY_ASET(objects, j, o);
+ RARRAY_ASET(instances, j, o);
j++;
}
@@ -327,7 +319,7 @@ IceRuby::SlicedDataUtil::setMember(VALUE obj, const Ice::SlicedDataPtr& slicedDa
// named _ice_slicedData which is an instance of the Ruby class Ice::SlicedData.
//
Ice::SlicedDataPtr
-IceRuby::SlicedDataUtil::getMember(VALUE obj, ObjectMap* objectMap)
+IceRuby::StreamUtil::getSlicedDataMember(VALUE obj, ObjectMap* objectMap)
{
Ice::SlicedDataPtr slicedData;
@@ -369,19 +361,19 @@ IceRuby::SlicedDataUtil::getMember(VALUE obj, ObjectMap* objectMap)
info->bytes.swap(vtmp);
}
- volatile VALUE objects = callRuby(rb_iv_get, s, "@objects");
- assert(TYPE(objects) == T_ARRAY);
- long osz = RARRAY_LEN(objects);
+ volatile VALUE instances = callRuby(rb_iv_get, s, "@instances");
+ assert(TYPE(instances) == T_ARRAY);
+ long osz = RARRAY_LEN(instances);
for(long j = 0; j < osz; ++j)
{
- VALUE o = RARRAY_AREF(objects, j);
+ VALUE o = RARRAY_AREF(instances, j);
Ice::ObjectPtr writer;
ObjectMap::iterator i = objectMap->find(o);
if(i == objectMap->end())
{
- writer = new ObjectWriter(o, objectMap);
+ writer = new ObjectWriter(o, objectMap, 0);
objectMap->insert(ObjectMap::value_type(o, writer));
}
else
@@ -389,7 +381,7 @@ IceRuby::SlicedDataUtil::getMember(VALUE obj, ObjectMap* objectMap)
writer = i->second;
}
- info->objects.push_back(writer);
+ info->instances.push_back(writer);
}
volatile VALUE hasOptionalMembers = callRuby(rb_iv_get, s, "@hasOptionalMembers");
@@ -546,7 +538,7 @@ IceRuby::PrimitiveInfo::optionalFormat() const
}
void
-IceRuby::PrimitiveInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*, bool)
+IceRuby::PrimitiveInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap*, bool)
{
switch(kind)
{
@@ -633,7 +625,7 @@ IceRuby::PrimitiveInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectM
}
void
-IceRuby::PrimitiveInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
+IceRuby::PrimitiveInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target,
void* closure, bool)
{
volatile VALUE val = Qnil;
@@ -822,7 +814,7 @@ IceRuby::EnumInfo::optionalFormat() const
}
void
-IceRuby::EnumInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*, bool)
+IceRuby::EnumInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap*, bool)
{
assert(callRuby(rb_obj_is_instance_of, p, rubyClass) == Qtrue); // validate() should have caught this.
@@ -840,7 +832,7 @@ IceRuby::EnumInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*,
}
void
-IceRuby::EnumInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target, void* closure,
+IceRuby::EnumInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target, void* closure,
bool)
{
Ice::Int val = is->readEnum(maxValue);
@@ -1003,7 +995,7 @@ IceRuby::StructInfo::usesClasses() const
}
void
-IceRuby::StructInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool optional)
+IceRuby::StructInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap* objectMap, bool optional)
{
assert(NIL_P(p) || callRuby(rb_obj_is_kind_of, p, rubyClass) == Qtrue); // validate() should have caught this.
@@ -1049,7 +1041,7 @@ IceRuby::StructInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*
}
void
-IceRuby::StructInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
+IceRuby::StructInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target,
void* closure, bool optional)
{
volatile VALUE obj = callRuby(rb_class_new_instance, 0, static_cast<VALUE*>(0), rubyClass);
@@ -1186,7 +1178,7 @@ IceRuby::SequenceInfo::usesClasses() const
}
void
-IceRuby::SequenceInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool optional)
+IceRuby::SequenceInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap* objectMap, bool optional)
{
PrimitiveInfoPtr pi = PrimitiveInfoPtr::dynamicCast(elementType);
@@ -1264,7 +1256,7 @@ IceRuby::SequenceInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMa
}
void
-IceRuby::SequenceInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
+IceRuby::SequenceInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target,
void* closure, bool optional)
{
if(optional)
@@ -1363,7 +1355,7 @@ IceRuby::SequenceInfo::destroy()
}
void
-IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALUE p, const Ice::OutputStreamPtr& os)
+IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALUE p, Ice::OutputStream* os)
{
volatile VALUE arr = Qnil;
volatile VALUE str = Qnil;
@@ -1525,14 +1517,14 @@ IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALU
{
seq[i] = getString(RARRAY_AREF(arr, i));
}
- os->write(seq, true);
+ os->write(&seq[0], &seq[0] + seq.size());
break;
}
}
}
void
-IceRuby::SequenceInfo::unmarshalPrimitiveSequence(const PrimitiveInfoPtr& pi, const Ice::InputStreamPtr& is,
+IceRuby::SequenceInfo::unmarshalPrimitiveSequence(const PrimitiveInfoPtr& pi, Ice::InputStream* is,
const UnmarshalCallbackPtr& cb, VALUE target, void* closure)
{
volatile VALUE result = Qnil;
@@ -1729,7 +1721,7 @@ namespace
{
struct DictionaryMarshalIterator : public IceRuby::HashIterator
{
- DictionaryMarshalIterator(const IceRuby::DictionaryInfoPtr& d, const Ice::OutputStreamPtr o, IceRuby::ObjectMap* m)
+ DictionaryMarshalIterator(const IceRuby::DictionaryInfoPtr& d, Ice::OutputStream* o, IceRuby::ObjectMap* m)
: dict(d), os(o), objectMap(m)
{
}
@@ -1740,13 +1732,13 @@ struct DictionaryMarshalIterator : public IceRuby::HashIterator
}
IceRuby::DictionaryInfoPtr dict;
- Ice::OutputStreamPtr os;
+ Ice::OutputStream* os;
IceRuby::ObjectMap* objectMap;
};
}
void
-IceRuby::DictionaryInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool optional)
+IceRuby::DictionaryInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap* objectMap, bool optional)
{
volatile VALUE hash = Qnil;
@@ -1799,7 +1791,7 @@ IceRuby::DictionaryInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, Object
}
void
-IceRuby::DictionaryInfo::marshalElement(VALUE key, VALUE value, const Ice::OutputStreamPtr& os, ObjectMap* objectMap)
+IceRuby::DictionaryInfo::marshalElement(VALUE key, VALUE value, Ice::OutputStream* os, ObjectMap* objectMap)
{
if(!keyType->validate(key))
{
@@ -1816,7 +1808,7 @@ IceRuby::DictionaryInfo::marshalElement(VALUE key, VALUE value, const Ice::Outpu
}
void
-IceRuby::DictionaryInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
+IceRuby::DictionaryInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target,
void* closure, bool optional)
{
if(optional)
@@ -1952,7 +1944,7 @@ IceRuby::DictionaryInfo::destroy()
// ClassInfo implementation.
//
IceRuby::ClassInfo::ClassInfo(VALUE ident, bool loc) :
- compactId(-1), isBase(false), isLocal(loc), isAbstract(false), preserve(false), rubyClass(Qnil), typeObj(Qnil),
+ compactId(-1), isBase(false), isLocal(loc), preserve(false), interface(false), rubyClass(Qnil), typeObj(Qnil),
defined(false)
{
const_cast<string&>(id) = getString(ident);
@@ -1968,7 +1960,7 @@ IceRuby::ClassInfo::ClassInfo(VALUE ident, bool loc) :
}
void
-IceRuby::ClassInfo::define(VALUE t, VALUE compact, VALUE abstr, VALUE pres, VALUE b, VALUE i, VALUE m)
+IceRuby::ClassInfo::define(VALUE t, VALUE compact, VALUE pres, VALUE intf, VALUE b, VALUE m)
{
if(!NIL_P(b))
{
@@ -1977,23 +1969,9 @@ IceRuby::ClassInfo::define(VALUE t, VALUE compact, VALUE abstr, VALUE pres, VALU
}
const_cast<Ice::Int&>(compactId) = static_cast<Ice::Int>(getInteger(compact));
- const_cast<bool&>(isAbstract) = RTEST(abstr);
const_cast<bool&>(preserve) = RTEST(pres);
-
- long n;
- volatile VALUE arr;
-
- arr = callRuby(rb_check_array_type, i);
- assert(!NIL_P(arr));
- for(n = 0; n < RARRAY_LEN(arr); ++n)
- {
- ClassInfoPtr iface = ClassInfoPtr::dynamicCast(getType(RARRAY_AREF(arr, n)));
- assert(iface);
- const_cast<ClassInfoList&>(interfaces).push_back(iface);
- }
-
+ const_cast<bool&>(interface) = RTEST(intf);
convertDataMembers(m, const_cast<DataMemberList&>(members), const_cast<DataMemberList&>(optionalMembers), true);
-
const_cast<VALUE&>(rubyClass) = t;
const_cast<bool&>(defined) = true;
}
@@ -2042,7 +2020,7 @@ IceRuby::ClassInfo::validate(VALUE val)
assert(!NIL_P(type));
ClassInfoPtr info = ClassInfoPtr::dynamicCast(getType(type));
assert(info);
- return info->isA(this);
+ return this->interface || info->isA(this);
}
bool
@@ -2070,7 +2048,7 @@ IceRuby::ClassInfo::usesClasses() const
}
void
-IceRuby::ClassInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool)
+IceRuby::ClassInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap* objectMap, bool)
{
if(!defined)
{
@@ -2079,7 +2057,8 @@ IceRuby::ClassInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*
if(NIL_P(p))
{
- os->writeObject(0);
+ Ice::ObjectPtr nil;
+ os->write(nil);
return;
}
@@ -2094,7 +2073,7 @@ IceRuby::ClassInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*
ObjectMap::iterator q = objectMap->find(p);
if(q == objectMap->end())
{
- writer = new ObjectWriter(p, objectMap);
+ writer = new ObjectWriter(p, objectMap, this);
objectMap->insert(ObjectMap::value_type(p, writer));
}
else
@@ -2105,19 +2084,40 @@ IceRuby::ClassInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*
//
// Give the writer to the stream. The stream will eventually call write() on it.
//
- os->writeObject(writer);
+ os->write(writer);
+}
+
+namespace
+{
+
+void
+patchObject(void* addr, const Ice::ObjectPtr& v)
+{
+ ReadObjectCallback* cb = static_cast<ReadObjectCallback*>(addr);
+ assert(cb);
+ cb->invoke(v);
+}
+
}
void
-IceRuby::ClassInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
- void* closure, bool)
+IceRuby::ClassInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target, void* closure, bool)
{
if(!defined)
{
throw RubyException(rb_eRuntimeError, "class %s is declared but not defined", id.c_str());
}
- is->readObject(new ReadObjectCallback(this, cb, target, closure));
+ //
+ // This callback is notified when the Slice value is actually read. The StreamUtil object
+ // attached to the stream keeps a reference to the callback object to ensure it lives
+ // long enough.
+ //
+ ReadObjectCallbackPtr rocb = new ReadObjectCallback(this, cb, target, closure);
+ StreamUtil* util = reinterpret_cast<StreamUtil*>(is->getClosure());
+ assert(util);
+ util->add(rocb);
+ is->read(patchObject, rocb.get());
}
void
@@ -2190,7 +2190,6 @@ void
IceRuby::ClassInfo::destroy()
{
const_cast<ClassInfoPtr&>(base) = 0;
- const_cast<ClassInfoList&>(interfaces).clear();
if(!members.empty())
{
DataMemberList ml = members;
@@ -2264,40 +2263,40 @@ IceRuby::ClassInfo::isA(const ClassInfoPtr& info)
{
return true;
}
- else if(base && base->isA(info))
- {
- return true;
- }
- else if(!interfaces.empty())
- {
- for(ClassInfoList::const_iterator p = interfaces.begin(); p != interfaces.end(); ++p)
- {
- if((*p)->isA(info))
- {
- return true;
- }
- }
- }
-
- return false;
+
+ return base && base->isA(info);
}
//
// ProxyInfo implementation.
//
IceRuby::ProxyInfo::ProxyInfo(VALUE ident) :
- rubyClass(Qnil), typeObj(Qnil)
+ isBase(false), rubyClass(Qnil), typeObj(Qnil)
{
const_cast<string&>(id) = getString(ident);
+ const_cast<bool&>(isBase) = id == "::Ice::Object";
const_cast<VALUE&>(typeObj) = createType(this);
}
void
-IceRuby::ProxyInfo::define(VALUE t, VALUE i)
+IceRuby::ProxyInfo::define(VALUE t, VALUE b, VALUE i)
{
+ if(!NIL_P(b))
+ {
+ const_cast<ProxyInfoPtr&>(base) = ProxyInfoPtr::dynamicCast(getType(b));
+ assert(base);
+ }
+
+ volatile VALUE arr = callRuby(rb_check_array_type, i);
+ assert(!NIL_P(arr));
+ for(int n = 0; n < RARRAY_LEN(arr); ++n)
+ {
+ ProxyInfoPtr iface = ProxyInfoPtr::dynamicCast(getType(RARRAY_AREF(arr, n)));
+ assert(iface);
+ const_cast<ProxyInfoList&>(interfaces).push_back(iface);
+ }
+
const_cast<VALUE&>(rubyClass) = t;
- const_cast<ClassInfoPtr&>(classInfo) = ClassInfoPtr::dynamicCast(getType(i));
- assert(classInfo);
}
string
@@ -2320,7 +2319,7 @@ IceRuby::ProxyInfo::validate(VALUE val)
assert(!NIL_P(type));
ProxyInfoPtr info = ProxyInfoPtr::dynamicCast(getType(type));
assert(info);
- return info->classInfo->isA(classInfo);
+ return info->isA(this);
}
return true;
}
@@ -2344,7 +2343,7 @@ IceRuby::ProxyInfo::optionalFormat() const
}
void
-IceRuby::ProxyInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*, bool optional)
+IceRuby::ProxyInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap*, bool optional)
{
Ice::OutputStream::size_type sizePos = -1;
if(optional)
@@ -2369,7 +2368,7 @@ IceRuby::ProxyInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*,
}
void
-IceRuby::ProxyInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
+IceRuby::ProxyInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target,
void* closure, bool optional)
{
if(optional)
@@ -2414,28 +2413,63 @@ IceRuby::ProxyInfo::print(VALUE value, IceUtilInternal::Output& out, PrintObject
}
}
+bool
+IceRuby::ProxyInfo::isA(const ProxyInfoPtr& info)
+{
+ //
+ // Return true if this class has an is-a relationship with info.
+ //
+ if(info->isBase)
+ {
+ return true;
+ }
+ else if(this == info.get())
+ {
+ return true;
+ }
+ else if(base && base->isA(info))
+ {
+ return true;
+ }
+ else if(!interfaces.empty())
+ {
+ for(ProxyInfoList::const_iterator p = interfaces.begin(); p != interfaces.end(); ++p)
+ {
+ if((*p)->isA(info))
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
void
IceRuby::ProxyInfo::destroy()
{
- const_cast<ClassInfoPtr&>(classInfo) = 0;
+ const_cast<ProxyInfoPtr&>(base) = 0;
+ const_cast<ProxyInfoList&>(interfaces).clear();
}
//
// ObjectWriter implementation.
//
-IceRuby::ObjectWriter::ObjectWriter(VALUE object, ObjectMap* objectMap) :
- _object(object), _map(objectMap)
+IceRuby::ObjectWriter::ObjectWriter(VALUE object, ObjectMap* objectMap, const ClassInfoPtr& formal) :
+ _object(object), _map(objectMap), _formal(formal)
{
//
// Mark the object as in use for the lifetime of this wrapper.
//
rb_gc_register_address(&_object);
-
- volatile VALUE cls = CLASS_OF(object);
- volatile VALUE type = callRuby(rb_const_get, cls, rb_intern("ICE_TYPE"));
- assert(!NIL_P(type));
- _info = ClassInfoPtr::dynamicCast(getType(type));
- assert(_info);
+ if(!_formal || !_formal->interface)
+ {
+ volatile VALUE cls = CLASS_OF(object);
+ volatile VALUE type = callRuby(rb_const_get, cls, rb_intern("ICE_TYPE"));
+ assert(!NIL_P(type));
+ _info = ClassInfoPtr::dynamicCast(getType(type));
+ assert(_info);
+ }
}
IceRuby::ObjectWriter::~ObjectWriter()
@@ -2454,41 +2488,55 @@ IceRuby::ObjectWriter::ice_preMarshal()
}
void
-IceRuby::ObjectWriter::write(const Ice::OutputStreamPtr& os) const
+IceRuby::ObjectWriter::_iceWrite(Ice::OutputStream* os) const
{
Ice::SlicedDataPtr slicedData;
- if(_info->preserve)
+ if(_info && _info->preserve)
{
//
// Retrieve the SlicedData object that we stored as a hidden member of the Ruby object.
//
- slicedData = SlicedDataUtil::getMember(_object, const_cast<ObjectMap*>(_map));
+ slicedData = StreamUtil::getSlicedDataMember(_object, const_cast<ObjectMap*>(_map));
}
- os->startObject(slicedData);
-
- if(_info->id != "::Ice::UnknownSlicedObject")
+ os->startValue(slicedData);
+ if(_formal && _formal->interface)
{
- ClassInfoPtr info = _info;
- while(info)
+ ID op = rb_intern("ice_id");
+ string id = getString(callRuby(rb_funcall, _object, op, 0));
+ os->startSlice(id, -1, true);
+ os->endSlice();
+ }
+ else
+ {
+ if(_info->id != "::Ice::UnknownSlicedValue")
{
- os->startSlice(info->id, info->compactId, !info->base);
+ ClassInfoPtr info = _info;
+ while(info)
+ {
+ os->startSlice(info->id, info->compactId, !info->base);
- writeMembers(os, info->members);
- writeMembers(os, info->optionalMembers); // The optional members have already been sorted by tag.
+ writeMembers(os, info->members);
+ writeMembers(os, info->optionalMembers); // The optional members have already been sorted by tag.
- os->endSlice();
+ os->endSlice();
- info = info->base;
+ info = info->base;
+ }
}
}
+ os->endValue();
+}
- os->endObject();
+void
+IceRuby::ObjectWriter::_iceRead(Ice::InputStream*)
+{
+ assert(false);
}
void
-IceRuby::ObjectWriter::writeMembers(const Ice::OutputStreamPtr& os, const DataMemberList& members) const
+IceRuby::ObjectWriter::writeMembers(Ice::OutputStream* os, const DataMemberList& members) const
{
for(DataMemberList::const_iterator q = members.begin(); q != members.end(); ++q)
{
@@ -2539,11 +2587,17 @@ IceRuby::ObjectReader::ice_postUnmarshal()
}
void
-IceRuby::ObjectReader::read(const Ice::InputStreamPtr& is)
+IceRuby::ObjectReader::_iceWrite(Ice::OutputStream*) const
{
- is->startObject();
+ assert(false);
+}
- const bool unknown = _info->id == "::Ice::UnknownSlicedObject";
+void
+IceRuby::ObjectReader::_iceRead(Ice::InputStream* is)
+{
+ is->startValue();
+
+ const bool unknown = _info->id == "::Ice::UnknownSlicedValue";
//
// Unmarshal the slices of a user-defined class.
@@ -2585,16 +2639,16 @@ IceRuby::ObjectReader::read(const Ice::InputStreamPtr& is)
}
}
- _slicedData = is->endObject(_info->preserve);
+ _slicedData = is->endValue(_info->preserve);
if(_slicedData)
{
- SlicedDataUtil* util = reinterpret_cast<SlicedDataUtil*>(is->closure());
+ StreamUtil* util = reinterpret_cast<StreamUtil*>(is->getClosure());
assert(util);
util->add(this);
//
- // Define the "unknownTypeId" member for an instance of UnknownSlicedObject.
+ // Define the "unknownTypeId" member for an instance of UnknownSlicedValue.
//
if(unknown)
{
@@ -2666,7 +2720,7 @@ IceRuby::ReadObjectCallback::invoke(const Ice::ObjectPtr& p)
// Verify that the unmarshaled object is compatible with the formal type.
//
volatile VALUE obj = reader->getObject();
- if(!_info->validate(obj))
+ if(!_info->interface && !_info->validate(obj))
{
Ice::UnexpectedObjectException ex(__FILE__, __LINE__);
ex.reason = "unmarshaled object is not an instance of " + _info->id;
@@ -2687,7 +2741,7 @@ IceRuby::ReadObjectCallback::invoke(const Ice::ObjectPtr& p)
// ExceptionInfo implementation.
//
VALUE
-IceRuby::ExceptionInfo::unmarshal(const Ice::InputStreamPtr& is)
+IceRuby::ExceptionInfo::unmarshal(Ice::InputStream* is)
{
volatile VALUE obj = callRuby(rb_class_new_instance, 0, static_cast<VALUE*>(0), rubyClass);
@@ -2797,8 +2851,8 @@ IceRuby::ExceptionInfo::printMembers(VALUE value, IceUtilInternal::Output& out,
//
// ExceptionReader implementation.
//
-IceRuby::ExceptionReader::ExceptionReader(const Ice::CommunicatorPtr& communicator, const ExceptionInfoPtr& info) :
- Ice::UserExceptionReader(communicator), _info(info)
+IceRuby::ExceptionReader::ExceptionReader(const ExceptionInfoPtr& info) :
+ _info(info)
{
}
@@ -2807,34 +2861,20 @@ IceRuby::ExceptionReader::~ExceptionReader()
{
}
-void
-IceRuby::ExceptionReader::read(const Ice::InputStreamPtr& is) const
-{
- is->startException();
-
- const_cast<VALUE&>(_ex) = _info->unmarshal(is);
-
- const_cast<Ice::SlicedDataPtr&>(_slicedData) = is->endException(_info->preserve);
-}
-
-bool
-IceRuby::ExceptionReader::usesClasses() const
-{
- return _info->usesClasses;
-}
-
string
-IceRuby::ExceptionReader::ice_name() const
+IceRuby::ExceptionReader::ice_id() const
{
return _info->id;
}
+#ifndef ICE_CPP11_MAPPING
Ice::UserException*
IceRuby::ExceptionReader::ice_clone() const
{
assert(false);
return 0;
}
+#endif
void
IceRuby::ExceptionReader::ice_throw() const
@@ -2842,6 +2882,28 @@ IceRuby::ExceptionReader::ice_throw() const
throw *this;
}
+void
+IceRuby::ExceptionReader::_write(Ice::OutputStream*) const
+{
+ assert(false);
+}
+
+void
+IceRuby::ExceptionReader::_read(Ice::InputStream* is)
+{
+ is->startException();
+
+ const_cast<VALUE&>(_ex) = _info->unmarshal(is);
+
+ const_cast<Ice::SlicedDataPtr&>(_slicedData) = is->endException(_info->preserve);
+}
+
+bool
+IceRuby::ExceptionReader::_usesClasses() const
+{
+ return _info->usesClasses;
+}
+
VALUE
IceRuby::ExceptionReader::getException() const
{
@@ -3026,14 +3088,16 @@ IceRuby_defineException(VALUE /*self*/, VALUE id, VALUE type, VALUE preserve, VA
extern "C"
VALUE
-IceRuby_TypeInfo_defineProxy(VALUE self, VALUE type, VALUE classInfo)
+IceRuby_TypeInfo_defineProxy(VALUE self, VALUE type, VALUE base, VALUE interfaces)
{
ICE_RUBY_TRY
{
ProxyInfoPtr info = ProxyInfoPtr::dynamicCast(getType(self));
assert(info);
- info->define(type, classInfo);
+ info->define(type, base, interfaces);
+ rb_define_const(type, "ICE_TYPE", self);
+ rb_define_const(type, "ICE_ID", createString(info->id));
}
ICE_RUBY_CATCH
return Qnil;
@@ -3041,22 +3105,31 @@ IceRuby_TypeInfo_defineProxy(VALUE self, VALUE type, VALUE classInfo)
extern "C"
VALUE
-IceRuby_TypeInfo_defineClass(VALUE self, VALUE type, VALUE compactId, VALUE isAbstract, VALUE preserve, VALUE base,
- VALUE interfaces, VALUE members)
+IceRuby_TypeInfo_defineClass(VALUE self, VALUE type, VALUE compactId, VALUE preserve, VALUE interface, VALUE base,
+ VALUE members)
{
ICE_RUBY_TRY
{
ClassInfoPtr info = ClassInfoPtr::dynamicCast(getType(self));
assert(info);
- info->define(type, compactId, isAbstract, preserve, base, interfaces, members);
+ info->define(type, compactId, preserve, interface, base, members);
- CompactIdMap::iterator q = _compactIdMap.find(info->compactId);
- if(q != _compactIdMap.end())
+ if(info->compactId != -1)
+ {
+ CompactIdMap::iterator q = _compactIdMap.find(info->compactId);
+ if(q != _compactIdMap.end())
+ {
+ _compactIdMap.erase(q);
+ }
+ _compactIdMap.insert(CompactIdMap::value_type(info->compactId, info));
+ }
+
+ if(type != Qnil && !info->interface)
{
- _compactIdMap.erase(q);
+ rb_define_const(type, "ICE_TYPE", self);
+ rb_define_const(type, "ICE_ID", createString(info->id));
}
- _compactIdMap.insert(CompactIdMap::value_type(info->compactId, info));
}
ICE_RUBY_CATCH
return Qnil;
@@ -3159,8 +3232,8 @@ IceRuby::initTypes(VALUE iceModule)
rb_define_module_function(iceModule, "__declareLocalClass", CAST_METHOD(IceRuby_declareLocalClass), 1);
rb_define_module_function(iceModule, "__defineException", CAST_METHOD(IceRuby_defineException), 5);
- rb_define_method(_typeInfoClass, "defineClass", CAST_METHOD(IceRuby_TypeInfo_defineClass), 7);
- rb_define_method(_typeInfoClass, "defineProxy", CAST_METHOD(IceRuby_TypeInfo_defineProxy), 2);
+ rb_define_method(_typeInfoClass, "defineClass", CAST_METHOD(IceRuby_TypeInfo_defineClass), 6);
+ rb_define_method(_typeInfoClass, "defineProxy", CAST_METHOD(IceRuby_TypeInfo_defineProxy), 3);
rb_define_module_function(iceModule, "__stringify", CAST_METHOD(IceRuby_stringify), 2);
rb_define_module_function(iceModule, "__stringifyException", CAST_METHOD(IceRuby_stringifyException), 1);
diff --git a/ruby/src/IceRuby/Types.h b/ruby/src/IceRuby/Types.h
index c25f0b27de2..57cf634a528 100644
--- a/ruby/src/IceRuby/Types.h
+++ b/ruby/src/IceRuby/Types.h
@@ -12,7 +12,9 @@
#include <Config.h>
#include <Util.h>
-#include <Ice/Stream.h>
+#include <Ice/FactoryTable.h>
+#include <Ice/Object.h>
+#include <Ice/SlicedData.h>
#include <IceUtil/OutputUtil.h>
namespace IceRuby
@@ -24,7 +26,10 @@ typedef std::vector<ExceptionInfoPtr> ExceptionInfoList;
class ClassInfo;
typedef IceUtil::Handle<ClassInfo> ClassInfoPtr;
-typedef std::vector<ClassInfoPtr> ClassInfoList;
+
+class ProxyInfo;
+typedef IceUtil::Handle<ProxyInfo> ProxyInfoPtr;
+typedef std::vector<ProxyInfoPtr> ProxyInfoList;
//
// This class is raised as an exception when object marshaling needs to be aborted.
@@ -40,31 +45,6 @@ typedef std::map<VALUE, Ice::ObjectPtr> ObjectMap;
class ObjectReader;
typedef IceUtil::Handle<ObjectReader> ObjectReaderPtr;
-//
-// This class keeps track of Ruby objects (instances of Slice classes
-// and exceptions) that have preserved slices.
-//
-class SlicedDataUtil
-{
-public:
-
- SlicedDataUtil();
- ~SlicedDataUtil();
-
- void add(const ObjectReaderPtr&);
-
- void update();
-
- static void setMember(VALUE, const Ice::SlicedDataPtr&);
- static Ice::SlicedDataPtr getMember(VALUE, ObjectMap*);
-
-private:
-
- std::set<ObjectReaderPtr> _readers;
- static VALUE _slicedDataType;
- static VALUE _sliceInfoType;
-};
-
struct PrintObjectHistory
{
int index;
@@ -95,6 +75,64 @@ public:
typedef IceUtil::Handle<UnmarshalCallback> UnmarshalCallbackPtr;
//
+// ReadObjectCallback retains all of the information necessary to store an unmarshaled
+// Slice value as a Ruby object.
+//
+class ReadObjectCallback : public IceUtil::Shared
+{
+public:
+
+ ReadObjectCallback(const ClassInfoPtr&, const UnmarshalCallbackPtr&, VALUE, void*);
+
+ void invoke(const ::Ice::ObjectPtr&);
+
+private:
+
+ ClassInfoPtr _info;
+ UnmarshalCallbackPtr _cb;
+ VALUE _target;
+ void* _closure;
+};
+typedef IceUtil::Handle<ReadObjectCallback> ReadObjectCallbackPtr;
+
+//
+// This class assists during unmarshaling of Slice classes and exceptions.
+// We attach an instance to a stream.
+//
+class StreamUtil
+{
+public:
+
+ StreamUtil();
+ ~StreamUtil();
+
+ //
+ // Keep a reference to a ReadObjectCallback for patching purposes.
+ //
+ void add(const ReadObjectCallbackPtr&);
+
+ //
+ // Keep track of object instances that have preserved slices.
+ //
+ void add(const ObjectReaderPtr&);
+
+ //
+ // Updated the sliced data information for all stored object instances.
+ //
+ void updateSlicedData();
+
+ static void setSlicedDataMember(VALUE, const Ice::SlicedDataPtr&);
+ static Ice::SlicedDataPtr getSlicedDataMember(VALUE, ObjectMap*);
+
+private:
+
+ std::vector<ReadObjectCallbackPtr> _callbacks;
+ std::set<ObjectReaderPtr> _readers;
+ static VALUE _slicedDataType;
+ static VALUE _sliceInfoType;
+};
+
+//
// Base class for type information.
//
class TypeInfo : public UnmarshalCallback
@@ -125,8 +163,8 @@ public:
// The marshal and unmarshal functions can raise Ice exceptions, and may raise
// AbortMarshaling if an error occurs.
//
- virtual void marshal(VALUE, const Ice::OutputStreamPtr&, ObjectMap*, bool) = 0;
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, VALUE, void*, bool) = 0;
+ virtual void marshal(VALUE, Ice::OutputStream*, ObjectMap*, bool) = 0;
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, VALUE, void*, bool) = 0;
virtual void print(VALUE, IceUtilInternal::Output&, PrintObjectHistory*) = 0;
};
@@ -162,8 +200,8 @@ public:
virtual int wireSize() const;
virtual Ice::OptionalFormat optionalFormat() const;
- virtual void marshal(VALUE, const Ice::OutputStreamPtr&, ObjectMap*, bool);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, VALUE, void*, bool);
+ virtual void marshal(VALUE, Ice::OutputStream*, ObjectMap*, bool);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, VALUE, void*, bool);
virtual void print(VALUE, IceUtilInternal::Output&, PrintObjectHistory*);
@@ -192,8 +230,8 @@ public:
virtual int wireSize() const;
virtual Ice::OptionalFormat optionalFormat() const;
- virtual void marshal(VALUE, const Ice::OutputStreamPtr&, ObjectMap*, bool);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, VALUE, void*, bool);
+ virtual void marshal(VALUE, Ice::OutputStream*, ObjectMap*, bool);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, VALUE, void*, bool);
virtual void print(VALUE, IceUtilInternal::Output&, PrintObjectHistory*);
@@ -238,8 +276,8 @@ public:
virtual bool usesClasses() const; // Default implementation returns false.
- virtual void marshal(VALUE, const Ice::OutputStreamPtr&, ObjectMap*, bool);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, VALUE, void*, bool);
+ virtual void marshal(VALUE, Ice::OutputStream*, ObjectMap*, bool);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, VALUE, void*, bool);
virtual void print(VALUE, IceUtilInternal::Output&, PrintObjectHistory*);
@@ -276,8 +314,8 @@ public:
virtual bool usesClasses() const; // Default implementation returns false.
- virtual void marshal(VALUE, const Ice::OutputStreamPtr&, ObjectMap*, bool);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, VALUE, void*, bool);
+ virtual void marshal(VALUE, Ice::OutputStream*, ObjectMap*, bool);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, VALUE, void*, bool);
virtual void unmarshaled(VALUE, VALUE, void*);
virtual void print(VALUE, IceUtilInternal::Output&, PrintObjectHistory*);
@@ -289,8 +327,8 @@ public:
private:
- void marshalPrimitiveSequence(const PrimitiveInfoPtr&, VALUE, const Ice::OutputStreamPtr&);
- void unmarshalPrimitiveSequence(const PrimitiveInfoPtr&, const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&,
+ void marshalPrimitiveSequence(const PrimitiveInfoPtr&, VALUE, Ice::OutputStream*);
+ void unmarshalPrimitiveSequence(const PrimitiveInfoPtr&, Ice::InputStream*, const UnmarshalCallbackPtr&,
VALUE, void*);
};
typedef IceUtil::Handle<SequenceInfo> SequenceInfoPtr;
@@ -314,9 +352,9 @@ public:
virtual bool usesClasses() const; // Default implementation returns false.
- virtual void marshal(VALUE, const Ice::OutputStreamPtr&, ObjectMap*, bool);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, VALUE, void*, bool);
- void marshalElement(VALUE, VALUE, const Ice::OutputStreamPtr&, ObjectMap*);
+ virtual void marshal(VALUE, Ice::OutputStream*, ObjectMap*, bool);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, VALUE, void*, bool);
+ void marshalElement(VALUE, VALUE, Ice::OutputStream*, ObjectMap*);
virtual void unmarshaled(VALUE, VALUE, void*);
virtual void print(VALUE, IceUtilInternal::Output&, PrintObjectHistory*);
@@ -353,7 +391,7 @@ public:
ClassInfo(VALUE, bool);
- void define(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+ void define(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
virtual std::string getId() const;
@@ -365,8 +403,8 @@ public:
virtual bool usesClasses() const; // Default implementation returns false.
- virtual void marshal(VALUE, const Ice::OutputStreamPtr&, ObjectMap*, bool);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, VALUE, void*, bool);
+ virtual void marshal(VALUE, Ice::OutputStream*, ObjectMap*, bool);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, VALUE, void*, bool);
virtual void print(VALUE, IceUtilInternal::Output&, PrintObjectHistory*);
@@ -380,10 +418,9 @@ public:
const Ice::Int compactId;
const bool isBase; // Is this the ClassInfo for Ice::Object or Ice::LocalObject?
const bool isLocal;
- const bool isAbstract;
const bool preserve;
+ const bool interface;
const ClassInfoPtr base;
- const ClassInfoList interfaces;
const DataMemberList members;
const DataMemberList optionalMembers;
const VALUE rubyClass;
@@ -400,7 +437,7 @@ public:
ProxyInfo(VALUE);
- void define(VALUE, VALUE);
+ void define(VALUE, VALUE, VALUE);
virtual std::string getId() const;
@@ -410,19 +447,22 @@ public:
virtual int wireSize() const;
virtual Ice::OptionalFormat optionalFormat() const;
- virtual void marshal(VALUE, const Ice::OutputStreamPtr&, ObjectMap*, bool);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, VALUE, void*, bool);
+ virtual void marshal(VALUE, Ice::OutputStream*, ObjectMap*, bool);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, VALUE, void*, bool);
virtual void print(VALUE, IceUtilInternal::Output&, PrintObjectHistory*);
virtual void destroy();
+ bool isA(const ProxyInfoPtr&);
+
const std::string id;
+ const bool isBase; // Is this the ClassInfo for Ice::ObjectPrx?
+ const ProxyInfoPtr base;
+ const ProxyInfoList interfaces;
const VALUE rubyClass;
- const ClassInfoPtr classInfo;
const VALUE typeObj;
};
-typedef IceUtil::Handle<ProxyInfo> ProxyInfoPtr;
//
// Exception information.
@@ -431,7 +471,7 @@ class ExceptionInfo : public IceUtil::Shared
{
public:
- VALUE unmarshal(const Ice::InputStreamPtr&);
+ VALUE unmarshal(Ice::InputStream*);
void print(VALUE, IceUtilInternal::Output&);
void printMembers(VALUE, IceUtilInternal::Output&, PrintObjectHistory*);
@@ -448,30 +488,32 @@ public:
//
// ObjectWriter wraps a Ruby object for marshaling.
//
-class ObjectWriter : public Ice::ObjectWriter
+class ObjectWriter : public Ice::Object
{
public:
- ObjectWriter(VALUE, ObjectMap*);
+ ObjectWriter(VALUE, ObjectMap*, const ClassInfoPtr&);
virtual ~ObjectWriter();
virtual void ice_preMarshal();
- virtual void write(const Ice::OutputStreamPtr&) const;
+ virtual void _iceWrite(Ice::OutputStream*) const;
+ virtual void _iceRead(Ice::InputStream*);
private:
- void writeMembers(const Ice::OutputStreamPtr&, const DataMemberList&) const;
+ void writeMembers(Ice::OutputStream*, const DataMemberList&) const;
VALUE _object;
ObjectMap* _map;
ClassInfoPtr _info;
+ ClassInfoPtr _formal;
};
//
// ObjectReader unmarshals the state of an Ice object.
//
-class ObjectReader : public Ice::ObjectReader
+class ObjectReader : public Ice::Object
{
public:
@@ -480,7 +522,8 @@ public:
virtual void ice_postUnmarshal();
- virtual void read(const Ice::InputStreamPtr&);
+ virtual void _iceWrite(Ice::OutputStream*) const;
+ virtual void _iceRead(Ice::InputStream*);
virtual ClassInfoPtr getInfo() const;
@@ -498,24 +541,33 @@ private:
//
// ExceptionReader creates a Ruby user exception and unmarshals it.
//
-class ExceptionReader : public Ice::UserExceptionReader
+class ExceptionReader : public Ice::UserException
{
public:
- ExceptionReader(const Ice::CommunicatorPtr&, const ExceptionInfoPtr&);
+ ExceptionReader(const ExceptionInfoPtr&);
~ExceptionReader() throw();
- virtual void read(const Ice::InputStreamPtr&) const;
- virtual bool usesClasses() const;
-
- virtual std::string ice_name() const;
+ virtual std::string ice_id() const;
+#ifndef ICE_CPP11_MAPPING
virtual Ice::UserException* ice_clone() const;
+#endif
virtual void ice_throw() const;
+ virtual void _write(Ice::OutputStream*) const;
+ virtual void _read(Ice::InputStream*);
+
+ virtual bool _usesClasses() const;
+
VALUE getException() const;
Ice::SlicedDataPtr getSlicedData() const;
+protected:
+
+ virtual void _writeImpl(Ice::OutputStream*) const {}
+ virtual void _readImpl(Ice::InputStream*) {}
+
private:
ExceptionInfoPtr _info;
diff --git a/ruby/src/IceRuby/Util.cpp b/ruby/src/IceRuby/Util.cpp
index 85032cd6974..6e9b0a27c4b 100644
--- a/ruby/src/IceRuby/Util.cpp
+++ b/ruby/src/IceRuby/Util.cpp
@@ -311,7 +311,7 @@ IceRuby::createString(const string& str)
namespace
{
-template <typename T>
+template <typename T>
struct RubyCallArgs
{
volatile VALUE val;
@@ -442,8 +442,8 @@ IceRuby::contextToHash(const Ice::Context& ctx)
volatile VALUE result = callRuby(rb_hash_new);
for(Ice::Context::const_iterator p = ctx.begin(); p != ctx.end(); ++p)
{
- volatile VALUE key = callRuby(rb_str_new, p->first.c_str(), static_cast<long>(p->first.size()));
- volatile VALUE value = callRuby(rb_str_new, p->second.c_str(), static_cast<long>(p->second.size()));
+ volatile VALUE key = createString(p->first);
+ volatile VALUE value = createString(p->second);
callRuby(rb_hash_aset, result, key, value);
}
return result;
@@ -522,8 +522,8 @@ IceRuby::createIdentity(const Ice::Identity& id)
assert(!NIL_P(cls));
volatile VALUE result = callRuby(rb_class_new_instance, 0, reinterpret_cast<VALUE*>(0), cls);
- volatile VALUE name = callRuby(rb_str_new, id.name.c_str(), static_cast<long>(id.name.size()));
- volatile VALUE category = callRuby(rb_str_new, id.category.c_str(), static_cast<long>(id.category.size()));
+ volatile VALUE name = createString(id.name);
+ volatile VALUE category = createString(id.category);
callRuby(rb_iv_set, result, "@name", name);
callRuby(rb_iv_set, result, "@category", category);
return result;
@@ -699,7 +699,7 @@ setExceptionMembers(const Ice::LocalException& ex, VALUE p)
m = createEncodingVersion(e.supported);
callRuby(rb_iv_set, p, "@supported", m);
}
- catch(const Ice::NoObjectFactoryException& e)
+ catch(const Ice::NoValueFactoryException& e)
{
volatile VALUE v;
v = createString(e.reason);
@@ -732,6 +732,10 @@ setExceptionMembers(const Ice::LocalException& ex, VALUE p)
volatile VALUE v = createString(e.reason);
callRuby(rb_iv_set, p, "@reason", v);
}
+ catch(const Ice::ConnectionManuallyClosedException& e)
+ {
+ callRuby(rb_iv_set, p, "@graceful", e.graceful ? Qtrue : Qfalse);
+ }
catch(const Ice::LocalException&)
{
//
@@ -761,7 +765,7 @@ IceRuby::convertLocalException(const Ice::LocalException& ex)
//
try
{
- string name = ex.ice_name();
+ string name = ex.ice_id().substr(2);
volatile VALUE cls = callRuby(rb_path2class, name.c_str());
if(NIL_P(cls))
{
@@ -777,7 +781,7 @@ IceRuby::convertLocalException(const Ice::LocalException& ex)
}
catch(...)
{
- string msg = "failure occurred while converting exception " + ex.ice_name();
+ string msg = "failure occurred while converting exception " + ex.ice_id();
return rb_exc_new2(rb_eRuntimeError, msg.c_str());
}
}
diff --git a/ruby/src/IceRuby/Util.h b/ruby/src/IceRuby/Util.h
index a9607c6a89e..ffe792a8993 100644
--- a/ruby/src/IceRuby/Util.h
+++ b/ruby/src/IceRuby/Util.h
@@ -467,19 +467,19 @@ VALUE convertLocalException(const Ice::LocalException&);
// exceptions into Ruby exceptions and ensure that C++ objects are cleaned up properly.
//
#define ICE_RUBY_TRY \
- volatile VALUE __ice_ex = Qnil; \
+ volatile VALUE ex_ = Qnil; \
\
- goto __ice_start; \
+ goto ice_start; \
\
- __ice_handle_exception: \
- rb_exc_raise(__ice_ex); \
+ ice_handle_exception: \
+ rb_exc_raise(ex_); \
\
- __ice_start: \
+ ice_start: \
try
#define ICE_RUBY_RETHROW(ex) \
- __ice_ex = ex; \
- goto __ice_handle_exception;
+ ex_ = ex; \
+ goto ice_handle_exception;
#define ICE_RUBY_CATCH \
catch(const ::IceRuby::RubyException& ex) \
@@ -492,8 +492,8 @@ VALUE convertLocalException(const Ice::LocalException&);
} \
catch(const ::Ice::Exception& ex) \
{ \
- string __ice_msg = "unknown Ice exception: " + ex.ice_name(); \
- ICE_RUBY_RETHROW(rb_exc_new2(rb_eRuntimeError, __ice_msg.c_str())); \
+ string msg_ = "unknown Ice exception: " + ex.ice_id(); \
+ ICE_RUBY_RETHROW(rb_exc_new2(rb_eRuntimeError, msg_.c_str())); \
} \
catch(const std::bad_alloc& ex) \
{ \
diff --git a/ruby/src/IceRuby/ValueFactoryManager.cpp b/ruby/src/IceRuby/ValueFactoryManager.cpp
new file mode 100644
index 00000000000..8e54983f37c
--- /dev/null
+++ b/ruby/src/IceRuby/ValueFactoryManager.cpp
@@ -0,0 +1,445 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2016 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 <ValueFactoryManager.h>
+#include <Types.h>
+#include <Util.h>
+#include <Ice/LocalException.h>
+
+using namespace std;
+using namespace IceRuby;
+
+static VALUE _valueFactoryManagerClass;
+
+namespace
+{
+
+ClassInfoPtr
+getClassInfo(const string& id)
+{
+ ClassInfoPtr info;
+
+ if(id == Ice::Object::ice_staticId())
+ {
+ //
+ // When the ID is that of Ice::Object, it indicates that the stream has not
+ // found a factory and is providing us an opportunity to preserve the object.
+ //
+ info = lookupClassInfo("::Ice::UnknownSlicedValue");
+ }
+ else
+ {
+ info = lookupClassInfo(id);
+ }
+
+ return info;
+}
+
+}
+
+extern "C"
+void
+IceRuby_ValueFactoryManager_mark(ValueFactoryManagerPtr* p)
+{
+ assert(p);
+ (*p)->mark();
+}
+
+extern "C"
+void
+IceRuby_ValueFactoryManager_free(ValueFactoryManagerPtr* p)
+{
+ assert(p);
+ delete p;
+}
+
+IceRuby::ValueFactoryManager::ValueFactoryManager()
+{
+ //
+ // Create a Ruby wrapper around this object. Note that this is a cyclic reference.
+ //
+ _self = Data_Wrap_Struct(_valueFactoryManagerClass, IceRuby_ValueFactoryManager_mark,
+ IceRuby_ValueFactoryManager_free, new ValueFactoryManagerPtr(this));
+
+ _defaultFactory = new DefaultValueFactory;
+}
+
+IceRuby::ValueFactoryManager::~ValueFactoryManager()
+{
+ assert(_factories.empty());
+}
+
+void
+IceRuby::ValueFactoryManager::add(const Ice::ValueFactoryPtr& f, const string& id)
+{
+ Lock lock(*this);
+
+ if(id.empty())
+ {
+ if(_defaultFactory->getDelegate())
+ {
+ throw Ice::AlreadyRegisteredException(__FILE__, __LINE__, "value factory", id);
+ }
+
+ _defaultFactory->setDelegate(f);
+ }
+ else
+ {
+ FactoryMap::iterator p = _factories.find(id);
+ if(p != _factories.end())
+ {
+ throw Ice::AlreadyRegisteredException(__FILE__, __LINE__, "value factory", id);
+ }
+
+ _factories.insert(FactoryMap::value_type(id, f));
+ }
+}
+
+Ice::ValueFactoryPtr
+IceRuby::ValueFactoryManager::find(const string& id) const
+{
+ Lock lock(*this);
+
+ if(id.empty())
+ {
+ return _defaultFactory;
+ }
+
+ FactoryMap::const_iterator p = _factories.find(id);
+ if(p != _factories.end())
+ {
+ return p->second;
+ }
+
+ return 0;
+}
+
+void
+IceRuby::ValueFactoryManager::addValueFactory(VALUE f, const string& id)
+{
+ ICE_RUBY_TRY
+ {
+ add(new FactoryWrapper(f, false), id);
+ }
+ ICE_RUBY_CATCH
+}
+
+VALUE
+IceRuby::ValueFactoryManager::findValueFactory(const string& id) const
+{
+ Ice::ValueFactoryPtr f = find(id);
+ if(f)
+ {
+ FactoryWrapperPtr w = FactoryWrapperPtr::dynamicCast(f);
+ if(w)
+ {
+ return w->getObject();
+ }
+ }
+
+ return Qnil;
+}
+
+void
+IceRuby::ValueFactoryManager::addObjectFactory(VALUE f, const string& id)
+{
+ ICE_RUBY_TRY
+ {
+ add(new FactoryWrapper(f, true), id);
+ }
+ ICE_RUBY_CATCH
+}
+
+VALUE
+IceRuby::ValueFactoryManager::findObjectFactory(const string& id) const
+{
+ Ice::ValueFactoryPtr f = find(id);
+ if(f)
+ {
+ FactoryWrapperPtr w = FactoryWrapperPtr::dynamicCast(f);
+ if(w && w->isObjectFactory())
+ {
+ return w->getObject();
+ }
+ }
+
+ return Qnil;
+}
+
+void
+IceRuby::ValueFactoryManager::mark()
+{
+ Lock lock(*this);
+
+ for(FactoryMap::iterator p = _factories.begin(); p != _factories.end(); ++p)
+ {
+ FactoryWrapperPtr w = FactoryWrapperPtr::dynamicCast(p->second);
+ if(w)
+ {
+ w->mark();
+ }
+ }
+
+ _defaultFactory->mark();
+}
+
+void
+IceRuby::ValueFactoryManager::markSelf()
+{
+ volatile VALUE self;
+
+ {
+ Lock lock(*this);
+
+ self = _self;
+ }
+
+ if(!NIL_P(self))
+ {
+ rb_gc_mark(self);
+ }
+}
+
+VALUE
+IceRuby::ValueFactoryManager::getObject() const
+{
+ return _self;
+}
+
+void
+IceRuby::ValueFactoryManager::destroy()
+{
+ FactoryMap factories;
+
+ {
+ Lock lock(*this);
+ if(_self == Qnil)
+ {
+ //
+ // Nothing to do if already destroyed (this can occur if communicator destroy is called multiple times)
+ //
+ return;
+ }
+
+ factories.swap(_factories);
+
+ _self = Qnil;
+ }
+
+ for(FactoryMap::iterator p = factories.begin(); p != factories.end(); ++p)
+ {
+ FactoryWrapperPtr w = FactoryWrapperPtr::dynamicCast(p->second);
+ if(w)
+ {
+ w->destroy();
+ }
+ }
+
+ _defaultFactory->destroy();
+}
+
+IceRuby::FactoryWrapper::FactoryWrapper(VALUE factory, bool isObjectFactory) :
+ _factory(factory),
+ _isObjectFactory(isObjectFactory)
+{
+}
+
+Ice::ValuePtr
+IceRuby::FactoryWrapper::create(const string& id)
+{
+ //
+ // Get the type information.
+ //
+ ClassInfoPtr info = getClassInfo(id);
+
+ if(!info)
+ {
+ return 0;
+ }
+
+ //
+ // Invoke the create method on the Ruby factory object.
+ //
+ volatile VALUE str = createString(id);
+ volatile VALUE obj = callRuby(rb_funcall, _factory, rb_intern("create"), 1, str);
+ if(NIL_P(obj))
+ {
+ return 0;
+ }
+
+ return new ObjectReader(obj, info);
+}
+
+VALUE
+IceRuby::FactoryWrapper::getObject() const
+{
+ return _factory;
+}
+
+bool
+IceRuby::FactoryWrapper::isObjectFactory() const
+{
+ return _isObjectFactory;
+}
+
+void
+IceRuby::FactoryWrapper::mark()
+{
+ rb_gc_mark(_factory);
+}
+
+void
+IceRuby::FactoryWrapper::destroy()
+{
+ if(_isObjectFactory)
+ {
+ callRuby(rb_funcall, _factory, rb_intern("destroy"), 0);
+ }
+}
+
+Ice::ValuePtr
+IceRuby::DefaultValueFactory::create(const string& id)
+{
+ Ice::ValuePtr v;
+
+ //
+ // Give the application-provided default factory a chance to create the object first.
+ //
+ if(_delegate)
+ {
+ v = _delegate->create(id);
+ if(v)
+ {
+ return v;
+ }
+ }
+
+ //
+ // Get the type information.
+ //
+ ClassInfoPtr info = getClassInfo(id);
+
+ if(!info)
+ {
+ return 0;
+ }
+
+ //
+ // NOTE: We don't do this in Ruby because a generated class can be re-opened to define operations.
+ //
+ ////
+ //// If the requested type is an abstract class, then we give up.
+ ////
+ //if(info->isAbstract)
+ //{
+ // return 0;
+ //}
+
+ //
+ // Instantiate the object.
+ //
+ volatile VALUE obj = callRuby(rb_class_new_instance, 0, reinterpret_cast<VALUE*>(0), info->rubyClass);
+ assert(!NIL_P(obj));
+ return new ObjectReader(obj, info);
+}
+
+void
+IceRuby::DefaultValueFactory::setDelegate(const Ice::ValueFactoryPtr& d)
+{
+ _delegate = d;
+}
+
+VALUE
+IceRuby::DefaultValueFactory::getObject() const
+{
+ if(_delegate)
+ {
+ FactoryWrapperPtr w = FactoryWrapperPtr::dynamicCast(_delegate);
+ if(w)
+ {
+ return w->getObject();
+ }
+ }
+
+ return Qnil;
+}
+
+void
+IceRuby::DefaultValueFactory::mark()
+{
+ if(_delegate)
+ {
+ FactoryWrapperPtr w = FactoryWrapperPtr::dynamicCast(_delegate);
+ if(w)
+ {
+ w->mark();
+ }
+ }
+}
+
+void
+IceRuby::DefaultValueFactory::destroy()
+{
+ if(_delegate)
+ {
+ FactoryWrapperPtr w = FactoryWrapperPtr::dynamicCast(_delegate);
+ if(w)
+ {
+ w->destroy();
+ }
+ }
+
+ _delegate = 0;
+}
+
+extern "C"
+VALUE
+IceRuby_ValueFactoryManager_add(VALUE self, VALUE factory, VALUE id)
+{
+ ICE_RUBY_TRY
+ {
+ ValueFactoryManagerPtr* p = reinterpret_cast<ValueFactoryManagerPtr*>(DATA_PTR(self));
+ assert(p);
+
+ string type = getString(id);
+ (*p)->addValueFactory(factory, type);
+ }
+ ICE_RUBY_CATCH
+ return Qnil;
+}
+
+extern "C"
+VALUE
+IceRuby_ValueFactoryManager_find(VALUE self, VALUE id)
+{
+ ICE_RUBY_TRY
+ {
+ ValueFactoryManagerPtr* p = reinterpret_cast<ValueFactoryManagerPtr*>(DATA_PTR(self));
+ assert(p);
+
+ string type = getString(id);
+ return (*p)->findValueFactory(type);
+ }
+ ICE_RUBY_CATCH
+ return Qnil;
+}
+
+bool
+IceRuby::initValueFactoryManager(VALUE iceModule)
+{
+ _valueFactoryManagerClass = rb_define_class_under(iceModule, "ValueFactoryManagerI", rb_cObject);
+
+ //
+ // Instance methods.
+ //
+ rb_define_method(_valueFactoryManagerClass, "add", CAST_METHOD(IceRuby_ValueFactoryManager_add), 2);
+ rb_define_method(_valueFactoryManagerClass, "find", CAST_METHOD(IceRuby_ValueFactoryManager_find), 1);
+
+ return true;
+}
diff --git a/ruby/src/IceRuby/ValueFactoryManager.h b/ruby/src/IceRuby/ValueFactoryManager.h
new file mode 100644
index 00000000000..285d9d896ee
--- /dev/null
+++ b/ruby/src/IceRuby/ValueFactoryManager.h
@@ -0,0 +1,100 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2016 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_RUBY_OBJECT_FACTORY_H
+#define ICE_RUBY_OBJECT_FACTORY_H
+
+#include <Config.h>
+#include <Ice/ValueFactory.h>
+#include <IceUtil/Mutex.h>
+
+namespace IceRuby
+{
+
+bool initValueFactoryManager(VALUE);
+
+class FactoryWrapper : public Ice::ValueFactory
+{
+public:
+
+ FactoryWrapper(VALUE, bool);
+
+ virtual Ice::ValuePtr create(const std::string&);
+
+ VALUE getObject() const;
+
+ bool isObjectFactory() const;
+
+ void mark();
+
+ void destroy();
+
+protected:
+
+ VALUE _factory;
+ bool _isObjectFactory;
+};
+typedef IceUtil::Handle<FactoryWrapper> FactoryWrapperPtr;
+
+class DefaultValueFactory : public Ice::ValueFactory
+{
+public:
+
+ virtual Ice::ValuePtr create(const std::string&);
+
+ void setDelegate(const Ice::ValueFactoryPtr&);
+ Ice::ValueFactoryPtr getDelegate() const { return _delegate; }
+
+ VALUE getObject() const;
+
+ void mark();
+
+ void destroy();
+
+private:
+
+ Ice::ValueFactoryPtr _delegate;
+};
+typedef IceUtil::Handle<DefaultValueFactory> DefaultValueFactoryPtr;
+
+class ValueFactoryManager : public Ice::ValueFactoryManager, public IceUtil::Mutex
+{
+public:
+
+ ValueFactoryManager();
+ ~ValueFactoryManager();
+
+ virtual void add(const Ice::ValueFactoryPtr&, const std::string&);
+ virtual Ice::ValueFactoryPtr find(const std::string&) const;
+
+ void addValueFactory(VALUE, const std::string&);
+ VALUE findValueFactory(const std::string&) const;
+ void addObjectFactory(VALUE, const std::string&);
+ VALUE findObjectFactory(const std::string&) const;
+
+ void mark();
+ void markSelf();
+
+ VALUE getObject() const;
+
+ void destroy();
+
+private:
+
+ typedef std::map<std::string, Ice::ValueFactoryPtr> FactoryMap;
+
+ VALUE _self;
+ FactoryMap _factories;
+ DefaultValueFactoryPtr _defaultFactory;
+};
+typedef IceUtil::Handle<ValueFactoryManager> ValueFactoryManagerPtr;
+
+}
+
+#endif
diff --git a/ruby/src/Makefile b/ruby/src/Makefile
deleted file mode 100644
index 4f601d29527..00000000000
--- a/ruby/src/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-# **********************************************************************
-#
-# Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
-#
-# This copy of Ice is licensed to you under the terms described in the
-# ICE_LICENSE file included in this distribution.
-#
-# **********************************************************************
-
-top_srcdir = ..
-
-include $(top_srcdir)/config/Make.rules
-
-SUBDIRS = IceRuby
-
-$(EVERYTHING)::
- @for subdir in $(SUBDIRS); \
- do \
- if test -d $$subdir ; \
- then \
- echo "making $@ in $$subdir"; \
- ( cd $$subdir && $(MAKE) $@ ) || exit 1; \
- fi; \
- done