zeroc-ice 3.6b1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/ICE_LICENSE +54 -0
- data/LICENSE +339 -0
- data/bin/slice2rb +17 -0
- data/ext/Communicator.cpp +596 -0
- data/ext/Communicator.h +25 -0
- data/ext/Config.h +111 -0
- data/ext/Connection.cpp +381 -0
- data/ext/Connection.h +26 -0
- data/ext/Endpoint.cpp +311 -0
- data/ext/Endpoint.h +27 -0
- data/ext/ImplicitContext.cpp +152 -0
- data/ext/ImplicitContext.h +25 -0
- data/ext/Init.cpp +52 -0
- data/ext/Logger.cpp +151 -0
- data/ext/Logger.h +28 -0
- data/ext/ObjectFactory.cpp +140 -0
- data/ext/ObjectFactory.h +50 -0
- data/ext/Operation.cpp +676 -0
- data/ext/Operation.h +36 -0
- data/ext/Properties.cpp +369 -0
- data/ext/Properties.h +25 -0
- data/ext/Proxy.cpp +1354 -0
- data/ext/Proxy.h +27 -0
- data/ext/Slice.cpp +223 -0
- data/ext/Slice.h +22 -0
- data/ext/Types.cpp +3160 -0
- data/ext/Types.h +545 -0
- data/ext/Util.cpp +792 -0
- data/ext/Util.h +511 -0
- data/ext/extconf.rb +118 -0
- data/ext/ice/BZIP_LICENSE +42 -0
- data/ext/ice/MCPP_LICENSE +36 -0
- data/ext/ice/bzip2/blocksort.c +1094 -0
- data/ext/ice/bzip2/bzlib.c +1572 -0
- data/ext/ice/bzip2/bzlib.h +282 -0
- data/ext/ice/bzip2/bzlib_private.h +509 -0
- data/ext/ice/bzip2/compress.c +672 -0
- data/ext/ice/bzip2/crctable.c +104 -0
- data/ext/ice/bzip2/decompress.c +646 -0
- data/ext/ice/bzip2/huffman.c +205 -0
- data/ext/ice/bzip2/randtable.c +84 -0
- data/ext/ice/cpp/include/Ice/ACMF.h +30 -0
- data/ext/ice/cpp/include/Ice/Application.h +156 -0
- data/ext/ice/cpp/include/Ice/AsyncResult.h +363 -0
- data/ext/ice/cpp/include/Ice/AsyncResultF.h +26 -0
- data/ext/ice/cpp/include/Ice/BasicStream.h +1315 -0
- data/ext/ice/cpp/include/Ice/Buffer.h +159 -0
- data/ext/ice/cpp/include/Ice/BuiltinSequences.h +74 -0
- data/ext/ice/cpp/include/Ice/Communicator.h +194 -0
- data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +115 -0
- data/ext/ice/cpp/include/Ice/CommunicatorF.h +60 -0
- data/ext/ice/cpp/include/Ice/Config.h +97 -0
- data/ext/ice/cpp/include/Ice/Connection.h +495 -0
- data/ext/ice/cpp/include/Ice/ConnectionAsync.h +115 -0
- data/ext/ice/cpp/include/Ice/ConnectionF.h +72 -0
- data/ext/ice/cpp/include/Ice/ConnectionFactoryF.h +30 -0
- data/ext/ice/cpp/include/Ice/ConnectionIF.h +37 -0
- data/ext/ice/cpp/include/Ice/Current.h +94 -0
- data/ext/ice/cpp/include/Ice/DefaultObjectFactory.h +48 -0
- data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +62 -0
- data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +33 -0
- data/ext/ice/cpp/include/Ice/Dispatcher.h +51 -0
- data/ext/ice/cpp/include/Ice/DynamicLibrary.h +105 -0
- data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +29 -0
- data/ext/ice/cpp/include/Ice/Endpoint.h +350 -0
- data/ext/ice/cpp/include/Ice/EndpointF.h +97 -0
- data/ext/ice/cpp/include/Ice/EndpointTypes.h +74 -0
- data/ext/ice/cpp/include/Ice/Exception.h +114 -0
- data/ext/ice/cpp/include/Ice/FacetMap.h +56 -0
- data/ext/ice/cpp/include/Ice/FactoryTable.h +69 -0
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +87 -0
- data/ext/ice/cpp/include/Ice/Format.h +39 -0
- data/ext/ice/cpp/include/Ice/Functional.h +138 -0
- data/ext/ice/cpp/include/Ice/GCObject.h +73 -0
- data/ext/ice/cpp/include/Ice/Handle.h +192 -0
- data/ext/ice/cpp/include/Ice/Ice.h +54 -0
- data/ext/ice/cpp/include/Ice/Identity.h +160 -0
- data/ext/ice/cpp/include/Ice/ImplicitContext.h +96 -0
- data/ext/ice/cpp/include/Ice/ImplicitContextF.h +60 -0
- data/ext/ice/cpp/include/Ice/Incoming.h +131 -0
- data/ext/ice/cpp/include/Ice/IncomingAsync.h +108 -0
- data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +35 -0
- data/ext/ice/cpp/include/Ice/Initialize.h +141 -0
- data/ext/ice/cpp/include/Ice/InstanceF.h +26 -0
- data/ext/ice/cpp/include/Ice/Instrumentation.h +377 -0
- data/ext/ice/cpp/include/Ice/InstrumentationF.h +71 -0
- data/ext/ice/cpp/include/Ice/LocalException.h +1022 -0
- data/ext/ice/cpp/include/Ice/LocalObject.h +36 -0
- data/ext/ice/cpp/include/Ice/LocalObjectF.h +26 -0
- data/ext/ice/cpp/include/Ice/Locator.h +2191 -0
- data/ext/ice/cpp/include/Ice/LocatorF.h +89 -0
- data/ext/ice/cpp/include/Ice/Logger.h +94 -0
- data/ext/ice/cpp/include/Ice/LoggerF.h +60 -0
- data/ext/ice/cpp/include/Ice/LoggerUtil.h +153 -0
- data/ext/ice/cpp/include/Ice/Makefile +26 -0
- data/ext/ice/cpp/include/Ice/Metrics.h +2989 -0
- data/ext/ice/cpp/include/Ice/MetricsAdminI.h +662 -0
- data/ext/ice/cpp/include/Ice/MetricsFunctional.h +144 -0
- data/ext/ice/cpp/include/Ice/MetricsObserverI.h +576 -0
- data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +55 -0
- data/ext/ice/cpp/include/Ice/Object.h +165 -0
- data/ext/ice/cpp/include/Ice/ObjectAdapter.h +162 -0
- data/ext/ice/cpp/include/Ice/ObjectAdapterF.h +60 -0
- data/ext/ice/cpp/include/Ice/ObjectAdapterFactoryF.h +26 -0
- data/ext/ice/cpp/include/Ice/ObjectF.h +26 -0
- data/ext/ice/cpp/include/Ice/ObjectFactory.h +86 -0
- data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +60 -0
- data/ext/ice/cpp/include/Ice/ObjectFactoryManagerF.h +26 -0
- data/ext/ice/cpp/include/Ice/ObserverHelper.h +177 -0
- data/ext/ice/cpp/include/Ice/Outgoing.h +197 -0
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +264 -0
- data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +38 -0
- data/ext/ice/cpp/include/Ice/Plugin.h +121 -0
- data/ext/ice/cpp/include/Ice/PluginF.h +66 -0
- data/ext/ice/cpp/include/Ice/Process.h +568 -0
- data/ext/ice/cpp/include/Ice/ProcessF.h +77 -0
- data/ext/ice/cpp/include/Ice/Properties.h +130 -0
- data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +824 -0
- data/ext/ice/cpp/include/Ice/PropertiesF.h +83 -0
- data/ext/ice/cpp/include/Ice/Protocol.h +242 -0
- data/ext/ice/cpp/include/Ice/Proxy.h +2448 -0
- data/ext/ice/cpp/include/Ice/ProxyF.h +78 -0
- data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +26 -0
- data/ext/ice/cpp/include/Ice/ProxyHandle.h +330 -0
- data/ext/ice/cpp/include/Ice/ReferenceF.h +34 -0
- data/ext/ice/cpp/include/Ice/RemoteLogger.h +1496 -0
- data/ext/ice/cpp/include/Ice/RequestHandlerF.h +29 -0
- data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +25 -0
- data/ext/ice/cpp/include/Ice/Router.h +1155 -0
- data/ext/ice/cpp/include/Ice/RouterF.h +77 -0
- data/ext/ice/cpp/include/Ice/ServantLocator.h +90 -0
- data/ext/ice/cpp/include/Ice/ServantLocatorF.h +60 -0
- data/ext/ice/cpp/include/Ice/ServantManagerF.h +26 -0
- data/ext/ice/cpp/include/Ice/Service.h +260 -0
- data/ext/ice/cpp/include/Ice/SliceChecksumDict.h +56 -0
- data/ext/ice/cpp/include/Ice/SliceChecksums.h +34 -0
- data/ext/ice/cpp/include/Ice/SlicedData.h +103 -0
- data/ext/ice/cpp/include/Ice/SlicedDataF.h +34 -0
- data/ext/ice/cpp/include/Ice/Stream.h +449 -0
- data/ext/ice/cpp/include/Ice/StreamF.h +30 -0
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +877 -0
- data/ext/ice/cpp/include/Ice/ThreadPoolF.h +28 -0
- data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +56 -0
- data/ext/ice/cpp/include/Ice/Version.h +254 -0
- data/ext/ice/cpp/include/IceSSL/Config.h +23 -0
- data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +119 -0
- data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +101 -0
- data/ext/ice/cpp/include/IceSSL/IceSSL.h +22 -0
- data/ext/ice/cpp/include/IceSSL/Makefile +26 -0
- data/ext/ice/cpp/include/IceSSL/Plugin.h +558 -0
- data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +119 -0
- data/ext/ice/cpp/include/IceUtil/Cache.h +362 -0
- data/ext/ice/cpp/include/IceUtil/Cond.h +323 -0
- data/ext/ice/cpp/include/IceUtil/Config.h +234 -0
- data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +50 -0
- data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +70 -0
- data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +45 -0
- data/ext/ice/cpp/include/IceUtil/Exception.h +184 -0
- data/ext/ice/cpp/include/IceUtil/Functional.h +389 -0
- data/ext/ice/cpp/include/IceUtil/Handle.h +266 -0
- data/ext/ice/cpp/include/IceUtil/IceUtil.h +51 -0
- data/ext/ice/cpp/include/IceUtil/IconvStringConverter.h +302 -0
- data/ext/ice/cpp/include/IceUtil/InputUtil.h +47 -0
- data/ext/ice/cpp/include/IceUtil/Iterator.h +36 -0
- data/ext/ice/cpp/include/IceUtil/Lock.h +135 -0
- data/ext/ice/cpp/include/IceUtil/Makefile +26 -0
- data/ext/ice/cpp/include/IceUtil/Monitor.h +249 -0
- data/ext/ice/cpp/include/IceUtil/Mutex.h +357 -0
- data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +28 -0
- data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +83 -0
- data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +82 -0
- data/ext/ice/cpp/include/IceUtil/Optional.h +322 -0
- data/ext/ice/cpp/include/IceUtil/Options.h +141 -0
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +362 -0
- data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +19 -0
- data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +26 -0
- data/ext/ice/cpp/include/IceUtil/Random.h +24 -0
- data/ext/ice/cpp/include/IceUtil/RecMutex.h +113 -0
- data/ext/ice/cpp/include/IceUtil/SHA1.h +65 -0
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +44 -0
- data/ext/ice/cpp/include/IceUtil/ScopedArray.h +97 -0
- data/ext/ice/cpp/include/IceUtil/Shared.h +168 -0
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +175 -0
- data/ext/ice/cpp/include/IceUtil/StringUtil.h +91 -0
- data/ext/ice/cpp/include/IceUtil/Thread.h +181 -0
- data/ext/ice/cpp/include/IceUtil/ThreadException.h +108 -0
- data/ext/ice/cpp/include/IceUtil/Time.h +209 -0
- data/ext/ice/cpp/include/IceUtil/Timer.h +143 -0
- data/ext/ice/cpp/include/IceUtil/UUID.h +22 -0
- data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +42 -0
- data/ext/ice/cpp/include/IceUtil/UniquePtr.h +101 -0
- data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +64 -0
- data/ext/ice/cpp/include/Slice/Checksum.h +26 -0
- data/ext/ice/cpp/include/Slice/CsUtil.h +92 -0
- data/ext/ice/cpp/include/Slice/DotNetNames.h +34 -0
- data/ext/ice/cpp/include/Slice/FileTracker.h +71 -0
- data/ext/ice/cpp/include/Slice/JavaUtil.h +277 -0
- data/ext/ice/cpp/include/Slice/Makefile +26 -0
- data/ext/ice/cpp/include/Slice/PHPUtil.h +50 -0
- data/ext/ice/cpp/include/Slice/Parser.h +1116 -0
- data/ext/ice/cpp/include/Slice/Preprocessor.h +68 -0
- data/ext/ice/cpp/include/Slice/PythonUtil.h +64 -0
- data/ext/ice/cpp/include/Slice/RubyUtil.h +54 -0
- data/ext/ice/cpp/include/Slice/Util.h +33 -0
- data/ext/ice/cpp/src/Ice/ACM.cpp +343 -0
- data/ext/ice/cpp/src/Ice/ACM.h +117 -0
- data/ext/ice/cpp/src/Ice/Acceptor.cpp +16 -0
- data/ext/ice/cpp/src/Ice/Acceptor.h +41 -0
- data/ext/ice/cpp/src/Ice/AcceptorF.h +30 -0
- data/ext/ice/cpp/src/Ice/Application.cpp +760 -0
- data/ext/ice/cpp/src/Ice/AsyncResult.cpp +599 -0
- data/ext/ice/cpp/src/Ice/Base64.cpp +269 -0
- data/ext/ice/cpp/src/Ice/Base64.h +36 -0
- data/ext/ice/cpp/src/Ice/BasicStream.cpp +3393 -0
- data/ext/ice/cpp/src/Ice/Buffer.cpp +98 -0
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +34 -0
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +718 -0
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +106 -0
- data/ext/ice/cpp/src/Ice/Communicator.cpp +45 -0
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +386 -0
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +112 -0
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +546 -0
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +97 -0
- data/ext/ice/cpp/src/Ice/Connection.cpp +58 -0
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +1639 -0
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +236 -0
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +3876 -0
- data/ext/ice/cpp/src/Ice/ConnectionI.h +364 -0
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +115 -0
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +50 -0
- data/ext/ice/cpp/src/Ice/Connector.cpp +16 -0
- data/ext/ice/cpp/src/Ice/Connector.h +36 -0
- data/ext/ice/cpp/src/Ice/ConnectorF.h +26 -0
- data/ext/ice/cpp/src/Ice/Current.cpp +38 -0
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +168 -0
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +57 -0
- data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +26 -0
- data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +60 -0
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +49 -0
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +281 -0
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +53 -0
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +25 -0
- data/ext/ice/cpp/src/Ice/EndpointFactory.h +44 -0
- data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +26 -0
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +208 -0
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +46 -0
- data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +26 -0
- data/ext/ice/cpp/src/Ice/EndpointI.cpp +87 -0
- data/ext/ice/cpp/src/Ice/EndpointI.h +165 -0
- data/ext/ice/cpp/src/Ice/EndpointIF.h +41 -0
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +38 -0
- data/ext/ice/cpp/src/Ice/EventHandler.cpp +35 -0
- data/ext/ice/cpp/src/Ice/EventHandler.h +78 -0
- data/ext/ice/cpp/src/Ice/EventHandlerF.h +26 -0
- data/ext/ice/cpp/src/Ice/EventLoggerMsg.h +53 -0
- data/ext/ice/cpp/src/Ice/Exception.cpp +832 -0
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +34 -0
- data/ext/ice/cpp/src/Ice/FactoryTable.cpp +158 -0
- data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +95 -0
- data/ext/ice/cpp/src/Ice/GCObject.cpp +444 -0
- data/ext/ice/cpp/src/Ice/HashUtil.h +59 -0
- data/ext/ice/cpp/src/Ice/HttpParser.cpp +680 -0
- data/ext/ice/cpp/src/Ice/HttpParser.h +124 -0
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +733 -0
- data/ext/ice/cpp/src/Ice/IPEndpointI.h +157 -0
- data/ext/ice/cpp/src/Ice/IPEndpointIF.h +29 -0
- data/ext/ice/cpp/src/Ice/Identity.cpp +42 -0
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +41 -0
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +639 -0
- data/ext/ice/cpp/src/Ice/ImplicitContextI.h +51 -0
- data/ext/ice/cpp/src/Ice/Incoming.cpp +757 -0
- data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +340 -0
- data/ext/ice/cpp/src/Ice/IncomingRequest.h +37 -0
- data/ext/ice/cpp/src/Ice/Initialize.cpp +401 -0
- data/ext/ice/cpp/src/Ice/Instance.cpp +1928 -0
- data/ext/ice/cpp/src/Ice/Instance.h +198 -0
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +68 -0
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +43 -0
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1083 -0
- data/ext/ice/cpp/src/Ice/InstrumentationI.h +262 -0
- data/ext/ice/cpp/src/Ice/LocalException.cpp +2091 -0
- data/ext/ice/cpp/src/Ice/LocalObject.cpp +29 -0
- data/ext/ice/cpp/src/Ice/Locator.cpp +1946 -0
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +39 -0
- data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +917 -0
- data/ext/ice/cpp/src/Ice/LocatorInfo.h +193 -0
- data/ext/ice/cpp/src/Ice/LocatorInfoF.h +34 -0
- data/ext/ice/cpp/src/Ice/Logger.cpp +40 -0
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +862 -0
- data/ext/ice/cpp/src/Ice/LoggerAdminI.h +46 -0
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +199 -0
- data/ext/ice/cpp/src/Ice/LoggerI.h +57 -0
- data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +107 -0
- data/ext/ice/cpp/src/Ice/Makefile +190 -0
- data/ext/ice/cpp/src/Ice/Metrics.cpp +2159 -0
- data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +669 -0
- data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +14 -0
- data/ext/ice/cpp/src/Ice/Network.cpp +2694 -0
- data/ext/ice/cpp/src/Ice/Network.h +291 -0
- data/ext/ice/cpp/src/Ice/NetworkF.h +28 -0
- data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +325 -0
- data/ext/ice/cpp/src/Ice/NetworkProxy.h +74 -0
- data/ext/ice/cpp/src/Ice/NetworkProxyF.h +26 -0
- data/ext/ice/cpp/src/Ice/Object.cpp +440 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +241 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +52 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +1498 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +155 -0
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +41 -0
- data/ext/ice/cpp/src/Ice/ObjectFactoryF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +140 -0
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +43 -0
- data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +84 -0
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +407 -0
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +70 -0
- data/ext/ice/cpp/src/Ice/Outgoing.cpp +737 -0
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +874 -0
- data/ext/ice/cpp/src/Ice/Plugin.cpp +43 -0
- data/ext/ice/cpp/src/Ice/PluginF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +503 -0
- data/ext/ice/cpp/src/Ice/PluginManagerI.h +67 -0
- data/ext/ice/cpp/src/Ice/Process.cpp +299 -0
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +39 -0
- data/ext/ice/cpp/src/Ice/Properties.cpp +45 -0
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +555 -0
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +207 -0
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +45 -0
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +39 -0
- data/ext/ice/cpp/src/Ice/PropertiesI.cpp +759 -0
- data/ext/ice/cpp/src/Ice/PropertiesI.h +78 -0
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +1293 -0
- data/ext/ice/cpp/src/Ice/PropertyNames.h +81 -0
- data/ext/ice/cpp/src/Ice/Protocol.cpp +137 -0
- data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +98 -0
- data/ext/ice/cpp/src/Ice/ProtocolInstance.h +91 -0
- data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +26 -0
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +51 -0
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +67 -0
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +26 -0
- data/ext/ice/cpp/src/Ice/Proxy.cpp +1810 -0
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +305 -0
- data/ext/ice/cpp/src/Ice/ProxyFactory.h +57 -0
- data/ext/ice/cpp/src/Ice/Reference.cpp +1947 -0
- data/ext/ice/cpp/src/Ice/Reference.h +305 -0
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +937 -0
- data/ext/ice/cpp/src/Ice/ReferenceFactory.h +81 -0
- data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +24 -0
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +958 -0
- data/ext/ice/cpp/src/Ice/ReplyStatus.h +29 -0
- data/ext/ice/cpp/src/Ice/RequestHandler.cpp +40 -0
- data/ext/ice/cpp/src/Ice/RequestHandler.h +90 -0
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +70 -0
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +41 -0
- data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +20 -0
- data/ext/ice/cpp/src/Ice/ResponseHandler.h +39 -0
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +154 -0
- data/ext/ice/cpp/src/Ice/RetryQueue.h +69 -0
- data/ext/ice/cpp/src/Ice/RetryQueueF.h +24 -0
- data/ext/ice/cpp/src/Ice/Router.cpp +849 -0
- data/ext/ice/cpp/src/Ice/RouterF.cpp +39 -0
- data/ext/ice/cpp/src/Ice/RouterInfo.cpp +381 -0
- data/ext/ice/cpp/src/Ice/RouterInfo.h +148 -0
- data/ext/ice/cpp/src/Ice/RouterInfoF.h +30 -0
- data/ext/ice/cpp/src/Ice/Selector.cpp +926 -0
- data/ext/ice/cpp/src/Ice/Selector.h +231 -0
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +41 -0
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/ServantManager.cpp +495 -0
- data/ext/ice/cpp/src/Ice/ServantManager.h +74 -0
- data/ext/ice/cpp/src/Ice/Service.cpp +1897 -0
- data/ext/ice/cpp/src/Ice/SharedContext.h +51 -0
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +34 -0
- data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +80 -0
- data/ext/ice/cpp/src/Ice/SlicedData.cpp +80 -0
- data/ext/ice/cpp/src/Ice/Stream.cpp +53 -0
- data/ext/ice/cpp/src/Ice/StreamI.cpp +832 -0
- data/ext/ice/cpp/src/Ice/StreamI.h +198 -0
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +521 -0
- data/ext/ice/cpp/src/Ice/StreamSocket.h +85 -0
- data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +145 -0
- data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +167 -0
- data/ext/ice/cpp/src/Ice/SysLoggerI.h +43 -0
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +235 -0
- data/ext/ice/cpp/src/Ice/TcpAcceptor.h +67 -0
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +133 -0
- data/ext/ice/cpp/src/Ice/TcpConnector.h +51 -0
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +397 -0
- data/ext/ice/cpp/src/Ice/TcpEndpointI.h +93 -0
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +127 -0
- data/ext/ice/cpp/src/Ice/TcpTransceiver.h +61 -0
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +1357 -0
- data/ext/ice/cpp/src/Ice/ThreadPool.h +399 -0
- data/ext/ice/cpp/src/Ice/TraceLevels.cpp +43 -0
- data/ext/ice/cpp/src/Ice/TraceLevels.h +50 -0
- data/ext/ice/cpp/src/Ice/TraceLevelsF.h +26 -0
- data/ext/ice/cpp/src/Ice/TraceUtil.cpp +452 -0
- data/ext/ice/cpp/src/Ice/TraceUtil.h +28 -0
- data/ext/ice/cpp/src/Ice/Transceiver.cpp +24 -0
- data/ext/ice/cpp/src/Ice/Transceiver.h +52 -0
- data/ext/ice/cpp/src/Ice/TransceiverF.h +38 -0
- data/ext/ice/cpp/src/Ice/UdpConnector.cpp +144 -0
- data/ext/ice/cpp/src/Ice/UdpConnector.h +51 -0
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +483 -0
- data/ext/ice/cpp/src/Ice/UdpEndpointI.h +95 -0
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +1156 -0
- data/ext/ice/cpp/src/Ice/UdpTransceiver.h +123 -0
- data/ext/ice/cpp/src/Ice/Version.cpp +46 -0
- data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +103 -0
- data/ext/ice/cpp/src/Ice/WSAcceptor.h +61 -0
- data/ext/ice/cpp/src/Ice/WSConnector.cpp +113 -0
- data/ext/ice/cpp/src/Ice/WSConnector.h +51 -0
- data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +441 -0
- data/ext/ice/cpp/src/Ice/WSEndpoint.h +97 -0
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +1728 -0
- data/ext/ice/cpp/src/Ice/WSTransceiver.h +149 -0
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +594 -0
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +1035 -0
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +208 -0
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +78 -0
- data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +308 -0
- data/ext/ice/cpp/src/IceDiscovery/LookupI.h +183 -0
- data/ext/ice/cpp/src/IceDiscovery/Makefile +61 -0
- data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +148 -0
- data/ext/ice/cpp/src/IceDiscovery/PluginI.h +39 -0
- data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +258 -0
- data/ext/ice/cpp/src/IceSSL/AcceptorI.h +66 -0
- data/ext/ice/cpp/src/IceSSL/Certificate.cpp +1334 -0
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +42 -0
- data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +151 -0
- data/ext/ice/cpp/src/IceSSL/ConnectorI.h +56 -0
- data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +397 -0
- data/ext/ice/cpp/src/IceSSL/EndpointI.h +96 -0
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +41 -0
- data/ext/ice/cpp/src/IceSSL/Instance.cpp +38 -0
- data/ext/ice/cpp/src/IceSSL/Instance.h +42 -0
- data/ext/ice/cpp/src/IceSSL/InstanceF.h +34 -0
- data/ext/ice/cpp/src/IceSSL/Makefile +82 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +1001 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +607 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +75 -0
- data/ext/ice/cpp/src/IceSSL/PluginI.cpp +102 -0
- data/ext/ice/cpp/src/IceSSL/PluginI.h +56 -0
- data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +541 -0
- data/ext/ice/cpp/src/IceSSL/RFC2253.h +67 -0
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +729 -0
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +1062 -0
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +130 -0
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +291 -0
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +264 -0
- data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +41 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +1514 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +609 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +91 -0
- data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +246 -0
- data/ext/ice/cpp/src/IceSSL/TrustManager.h +51 -0
- data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +26 -0
- data/ext/ice/cpp/src/IceSSL/Util.cpp +1423 -0
- data/ext/ice/cpp/src/IceSSL/Util.h +136 -0
- data/ext/ice/cpp/src/IceUtil/ArgVector.cpp +65 -0
- data/ext/ice/cpp/src/IceUtil/ArgVector.h +41 -0
- data/ext/ice/cpp/src/IceUtil/Cond.cpp +386 -0
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +477 -0
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +144 -0
- data/ext/ice/cpp/src/IceUtil/CountDownLatch.cpp +184 -0
- data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +273 -0
- data/ext/ice/cpp/src/IceUtil/Exception.cpp +782 -0
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +532 -0
- data/ext/ice/cpp/src/IceUtil/FileUtil.h +159 -0
- data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +41 -0
- data/ext/ice/cpp/src/IceUtil/Makefile +68 -0
- data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +24 -0
- data/ext/ice/cpp/src/IceUtil/Options.cpp +1049 -0
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +591 -0
- data/ext/ice/cpp/src/IceUtil/Random.cpp +185 -0
- data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +257 -0
- data/ext/ice/cpp/src/IceUtil/SHA1.cpp +126 -0
- data/ext/ice/cpp/src/IceUtil/Shared.cpp +200 -0
- data/ext/ice/cpp/src/IceUtil/StopWatch.h +54 -0
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +450 -0
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +842 -0
- data/ext/ice/cpp/src/IceUtil/Thread.cpp +809 -0
- data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +172 -0
- data/ext/ice/cpp/src/IceUtil/Time.cpp +306 -0
- data/ext/ice/cpp/src/IceUtil/Timer.cpp +251 -0
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +174 -0
- data/ext/ice/cpp/src/IceUtil/Unicode.cpp +131 -0
- data/ext/ice/cpp/src/IceUtil/Unicode.h +49 -0
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +1139 -0
- data/ext/ice/cpp/src/Slice/Checksum.cpp +452 -0
- data/ext/ice/cpp/src/Slice/CsUtil.cpp +2650 -0
- data/ext/ice/cpp/src/Slice/DotNetNames.cpp +146 -0
- data/ext/ice/cpp/src/Slice/FileTracker.cpp +203 -0
- data/ext/ice/cpp/src/Slice/Grammar.cpp +4755 -0
- data/ext/ice/cpp/src/Slice/Grammar.h +98 -0
- data/ext/ice/cpp/src/Slice/GrammarUtil.h +234 -0
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +4376 -0
- data/ext/ice/cpp/src/Slice/MD5.cpp +57 -0
- data/ext/ice/cpp/src/Slice/MD5.h +44 -0
- data/ext/ice/cpp/src/Slice/MD5I.cpp +385 -0
- data/ext/ice/cpp/src/Slice/MD5I.h +91 -0
- data/ext/ice/cpp/src/Slice/Makefile +65 -0
- data/ext/ice/cpp/src/Slice/PHPUtil.cpp +156 -0
- data/ext/ice/cpp/src/Slice/Parser.cpp +6386 -0
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +686 -0
- data/ext/ice/cpp/src/Slice/Python.cpp +675 -0
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +2614 -0
- data/ext/ice/cpp/src/Slice/Ruby.cpp +317 -0
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +1774 -0
- data/ext/ice/cpp/src/Slice/Scanner.cpp +2426 -0
- data/ext/ice/cpp/src/Slice/Util.cpp +325 -0
- data/ext/ice/mcpp/config.h.Darwin +227 -0
- data/ext/ice/mcpp/config.h.Linux +227 -0
- data/ext/ice/mcpp/config.h.MINGW +7 -0
- data/ext/ice/mcpp/configed.H +382 -0
- data/ext/ice/mcpp/directive.c +1699 -0
- data/ext/ice/mcpp/eval.c +1673 -0
- data/ext/ice/mcpp/expand.c +2980 -0
- data/ext/ice/mcpp/internal.H +564 -0
- data/ext/ice/mcpp/main.c +1131 -0
- data/ext/ice/mcpp/mbchar.c +869 -0
- data/ext/ice/mcpp/mcpp_lib.h +31 -0
- data/ext/ice/mcpp/mcpp_out.h +13 -0
- data/ext/ice/mcpp/support.c +2811 -0
- data/ext/ice/mcpp/system.H +396 -0
- data/ext/ice/mcpp/system.c +4940 -0
- data/ice.gemspec +41 -0
- data/lib/Glacier2.rb +12 -0
- data/lib/Glacier2/Metrics.rb +99 -0
- data/lib/Glacier2/PermissionsVerifier.rb +168 -0
- data/lib/Glacier2/PermissionsVerifierF.rb +34 -0
- data/lib/Glacier2/Router.rb +141 -0
- data/lib/Glacier2/RouterF.rb +29 -0
- data/lib/Glacier2/SSLInfo.rb +79 -0
- data/lib/Glacier2/Session.rb +470 -0
- data/lib/Ice.rb +659 -0
- data/lib/Ice/BuiltinSequences.rb +64 -0
- data/lib/Ice/Communicator.rb +93 -0
- data/lib/Ice/CommunicatorF.rb +28 -0
- data/lib/Ice/Connection.rb +414 -0
- data/lib/Ice/ConnectionF.rb +36 -0
- data/lib/Ice/Current.rb +152 -0
- data/lib/Ice/Endpoint.rb +265 -0
- data/lib/Ice/EndpointF.rb +52 -0
- data/lib/Ice/EndpointTypes.rb +77 -0
- data/lib/Ice/FacetMap.rb +28 -0
- data/lib/Ice/Identity.rb +70 -0
- data/lib/Ice/ImplicitContext.rb +59 -0
- data/lib/Ice/ImplicitContextF.rb +28 -0
- data/lib/Ice/Instrumentation.rb +425 -0
- data/lib/Ice/InstrumentationF.rb +35 -0
- data/lib/Ice/LocalException.rb +1081 -0
- data/lib/Ice/Locator.rb +314 -0
- data/lib/Ice/LocatorF.rb +34 -0
- data/lib/Ice/Logger.rb +57 -0
- data/lib/Ice/LoggerF.rb +28 -0
- data/lib/Ice/Metrics.rb +696 -0
- data/lib/Ice/ObjectAdapterF.rb +28 -0
- data/lib/Ice/ObjectFactory.rb +53 -0
- data/lib/Ice/ObjectFactoryF.rb +28 -0
- data/lib/Ice/Plugin.rb +87 -0
- data/lib/Ice/PluginF.rb +32 -0
- data/lib/Ice/Process.rb +93 -0
- data/lib/Ice/ProcessF.rb +29 -0
- data/lib/Ice/Properties.rb +65 -0
- data/lib/Ice/PropertiesAdmin.rb +104 -0
- data/lib/Ice/PropertiesF.rb +33 -0
- data/lib/Ice/Router.rb +163 -0
- data/lib/Ice/RouterF.rb +29 -0
- data/lib/Ice/SliceChecksumDict.rb +28 -0
- data/lib/Ice/Version.rb +100 -0
- data/lib/IceBox.rb +10 -0
- data/lib/IceBox/IceBox.rb +272 -0
- data/lib/IceGrid.rb +17 -0
- data/lib/IceGrid/Admin.rb +1076 -0
- data/lib/IceGrid/Descriptor.rb +1505 -0
- data/lib/IceGrid/Exception.rb +401 -0
- data/lib/IceGrid/FileParser.rb +105 -0
- data/lib/IceGrid/Locator.rb +105 -0
- data/lib/IceGrid/Observer.rb +571 -0
- data/lib/IceGrid/Query.rb +168 -0
- data/lib/IceGrid/Registry.rb +120 -0
- data/lib/IceGrid/Session.rb +114 -0
- data/lib/IceGrid/UserAccountMapper.rb +101 -0
- data/lib/IcePatch2.rb +10 -0
- data/lib/IcePatch2/FileInfo.rb +75 -0
- data/lib/IcePatch2/FileServer.rb +141 -0
- data/lib/IceStorm.rb +11 -0
- data/lib/IceStorm/IceStorm.rb +463 -0
- data/lib/IceStorm/Metrics.rb +155 -0
- data/slice/Freeze/BackgroundSaveEvictor.ice +111 -0
- data/slice/Freeze/CatalogData.ice +49 -0
- data/slice/Freeze/Connection.ice +111 -0
- data/slice/Freeze/ConnectionF.ice +20 -0
- data/slice/Freeze/DB.ice +37 -0
- data/slice/Freeze/Evictor.ice +339 -0
- data/slice/Freeze/EvictorF.ice +22 -0
- data/slice/Freeze/EvictorStorage.ice +72 -0
- data/slice/Freeze/Exception.ice +100 -0
- data/slice/Freeze/Transaction.ice +57 -0
- data/slice/Freeze/TransactionalEvictor.ice +50 -0
- data/slice/Glacier2/Metrics.ice +77 -0
- data/slice/Glacier2/PermissionsVerifier.ice +105 -0
- data/slice/Glacier2/PermissionsVerifierF.ice +21 -0
- data/slice/Glacier2/Router.ice +178 -0
- data/slice/Glacier2/RouterF.ice +20 -0
- data/slice/Glacier2/SSLInfo.ice +50 -0
- data/slice/Glacier2/Session.ice +273 -0
- data/slice/Ice/BuiltinSequences.ice +48 -0
- data/slice/Ice/Communicator.ice +567 -0
- data/slice/Ice/CommunicatorF.ice +20 -0
- data/slice/Ice/Connection.ice +323 -0
- data/slice/Ice/ConnectionF.ice +22 -0
- data/slice/Ice/Current.ice +160 -0
- data/slice/Ice/Endpoint.ice +227 -0
- data/slice/Ice/EndpointF.ice +32 -0
- data/slice/Ice/EndpointTypes.ice +38 -0
- data/slice/Ice/FacetMap.ice +25 -0
- data/slice/Ice/Identity.ice +59 -0
- data/slice/Ice/ImplicitContext.ice +109 -0
- data/slice/Ice/ImplicitContextF.ice +20 -0
- data/slice/Ice/Instrumentation.ice +499 -0
- data/slice/Ice/InstrumentationF.ice +26 -0
- data/slice/Ice/LocalException.ice +1015 -0
- data/slice/Ice/Locator.ice +227 -0
- data/slice/Ice/LocatorF.ice +21 -0
- data/slice/Ice/Logger.ice +86 -0
- data/slice/Ice/LoggerF.ice +20 -0
- data/slice/Ice/Metrics.ice +422 -0
- data/slice/Ice/ObjectAdapter.ice +673 -0
- data/slice/Ice/ObjectAdapterF.ice +20 -0
- data/slice/Ice/ObjectFactory.ice +60 -0
- data/slice/Ice/ObjectFactoryF.ice +20 -0
- data/slice/Ice/Plugin.ice +117 -0
- data/slice/Ice/PluginF.ice +21 -0
- data/slice/Ice/Process.ice +54 -0
- data/slice/Ice/ProcessF.ice +20 -0
- data/slice/Ice/Properties.ice +228 -0
- data/slice/Ice/PropertiesAdmin.ice +75 -0
- data/slice/Ice/PropertiesF.ice +21 -0
- data/slice/Ice/RemoteLogger.ice +232 -0
- data/slice/Ice/Router.ice +83 -0
- data/slice/Ice/RouterF.ice +20 -0
- data/slice/Ice/ServantLocator.ice +117 -0
- data/slice/Ice/ServantLocatorF.ice +20 -0
- data/slice/Ice/SliceChecksumDict.ice +25 -0
- data/slice/Ice/Version.ice +39 -0
- data/slice/IceBox/IceBox.ice +194 -0
- data/slice/IceDiscovery/IceDiscovery.ice +32 -0
- data/slice/IceGrid/Admin.ice +1578 -0
- data/slice/IceGrid/Descriptor.ice +1079 -0
- data/slice/IceGrid/Discovery.ice +73 -0
- data/slice/IceGrid/Exception.ice +383 -0
- data/slice/IceGrid/FileParser.ice +61 -0
- data/slice/IceGrid/Locator.ice +56 -0
- data/slice/IceGrid/Observer.ice +394 -0
- data/slice/IceGrid/PluginFacade.ice +316 -0
- data/slice/IceGrid/Query.ice +130 -0
- data/slice/IceGrid/Registry.ice +138 -0
- data/slice/IceGrid/Session.ice +124 -0
- data/slice/IceGrid/UserAccountMapper.ice +58 -0
- data/slice/IcePatch2/FileInfo.ice +49 -0
- data/slice/IcePatch2/FileServer.ice +129 -0
- data/slice/IceSSL/ConnectionInfo.ice +34 -0
- data/slice/IceSSL/EndpointInfo.ice +41 -0
- data/slice/IceStorm/IceStorm.ice +405 -0
- data/slice/IceStorm/Metrics.ice +71 -0
- metadata +737 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
// **********************************************************************
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This copy of Ice is licensed to you under the terms described in the
|
|
6
|
+
// ICE_LICENSE file included in this distribution.
|
|
7
|
+
//
|
|
8
|
+
// **********************************************************************
|
|
9
|
+
|
|
10
|
+
#ifndef ICE_ASYNC_RESULT_H
|
|
11
|
+
#define ICE_ASYNC_RESULT_H
|
|
12
|
+
|
|
13
|
+
#include <IceUtil/Monitor.h>
|
|
14
|
+
#include <IceUtil/Mutex.h>
|
|
15
|
+
#include <IceUtil/UniquePtr.h>
|
|
16
|
+
#include <Ice/LocalObject.h>
|
|
17
|
+
#include <Ice/CommunicatorF.h>
|
|
18
|
+
#include <Ice/ConnectionF.h>
|
|
19
|
+
#include <Ice/ProxyF.h>
|
|
20
|
+
#include <Ice/InstanceF.h>
|
|
21
|
+
#include <Ice/RequestHandlerF.h>
|
|
22
|
+
#include <Ice/AsyncResultF.h>
|
|
23
|
+
#include <Ice/ObserverHelper.h>
|
|
24
|
+
#include <Ice/BasicStream.h>
|
|
25
|
+
|
|
26
|
+
#ifdef ICE_CPP11
|
|
27
|
+
# include <functional> // for std::function
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
namespace IceInternal
|
|
31
|
+
{
|
|
32
|
+
|
|
33
|
+
class CallbackBase;
|
|
34
|
+
typedef IceUtil::Handle<CallbackBase> CallbackBasePtr;
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
namespace Ice
|
|
39
|
+
{
|
|
40
|
+
|
|
41
|
+
class ICE_API AsyncResult : public Ice::LocalObject, private IceUtil::noncopyable
|
|
42
|
+
{
|
|
43
|
+
public:
|
|
44
|
+
|
|
45
|
+
void cancel();
|
|
46
|
+
|
|
47
|
+
Int getHash() const;
|
|
48
|
+
|
|
49
|
+
CommunicatorPtr getCommunicator() const;
|
|
50
|
+
virtual ConnectionPtr getConnection() const;
|
|
51
|
+
virtual ObjectPrx getProxy() const;
|
|
52
|
+
|
|
53
|
+
bool isCompleted() const;
|
|
54
|
+
void waitForCompleted();
|
|
55
|
+
|
|
56
|
+
bool isSent() const;
|
|
57
|
+
void waitForSent();
|
|
58
|
+
|
|
59
|
+
void throwLocalException() const;
|
|
60
|
+
|
|
61
|
+
bool sentSynchronously() const;
|
|
62
|
+
LocalObjectPtr getCookie() const;
|
|
63
|
+
const std::string& getOperation() const;
|
|
64
|
+
|
|
65
|
+
::IceInternal::BasicStream* __startReadParams()
|
|
66
|
+
{
|
|
67
|
+
_is.startReadEncaps();
|
|
68
|
+
return &_is;
|
|
69
|
+
}
|
|
70
|
+
void __endReadParams()
|
|
71
|
+
{
|
|
72
|
+
_is.endReadEncaps();
|
|
73
|
+
}
|
|
74
|
+
void __readEmptyParams()
|
|
75
|
+
{
|
|
76
|
+
_is.skipEmptyEncaps();
|
|
77
|
+
}
|
|
78
|
+
void __readParamEncaps(const ::Ice::Byte*& encaps, ::Ice::Int& sz)
|
|
79
|
+
{
|
|
80
|
+
_is.readEncaps(encaps, sz);
|
|
81
|
+
}
|
|
82
|
+
void __throwUserException();
|
|
83
|
+
|
|
84
|
+
bool __wait();
|
|
85
|
+
|
|
86
|
+
static void __check(const AsyncResultPtr&, const ::IceProxy::Ice::Object*, const ::std::string&);
|
|
87
|
+
static void __check(const AsyncResultPtr&, const Connection*, const ::std::string&);
|
|
88
|
+
static void __check(const AsyncResultPtr&, const Communicator*, const ::std::string&);
|
|
89
|
+
|
|
90
|
+
protected:
|
|
91
|
+
|
|
92
|
+
static void __check(const AsyncResultPtr&, const ::std::string&);
|
|
93
|
+
|
|
94
|
+
AsyncResult(const CommunicatorPtr&, const IceInternal::InstancePtr&, const std::string&,
|
|
95
|
+
const IceInternal::CallbackBasePtr&, const LocalObjectPtr&);
|
|
96
|
+
virtual ~AsyncResult(); // Must be heap-allocated
|
|
97
|
+
|
|
98
|
+
bool sent(bool);
|
|
99
|
+
bool finished(bool);
|
|
100
|
+
bool finished(const Exception&);
|
|
101
|
+
|
|
102
|
+
void invokeSentAsync();
|
|
103
|
+
void invokeCompletedAsync();
|
|
104
|
+
|
|
105
|
+
void invokeSent();
|
|
106
|
+
void invokeCompleted();
|
|
107
|
+
|
|
108
|
+
void cancel(const LocalException&);
|
|
109
|
+
virtual void cancelable(const IceInternal::CancellationHandlerPtr&);
|
|
110
|
+
void checkCanceled();
|
|
111
|
+
|
|
112
|
+
void warning(const std::exception&) const;
|
|
113
|
+
void warning() const;
|
|
114
|
+
|
|
115
|
+
//
|
|
116
|
+
// This virtual method is necessary for the communicator flush
|
|
117
|
+
// batch requests implementation.
|
|
118
|
+
//
|
|
119
|
+
virtual IceInternal::InvocationObserver& getObserver()
|
|
120
|
+
{
|
|
121
|
+
return _observer;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const IceInternal::InstancePtr _instance;
|
|
125
|
+
IceInternal::InvocationObserver _observer;
|
|
126
|
+
Ice::ConnectionPtr _cachedConnection;
|
|
127
|
+
bool _sentSynchronously;
|
|
128
|
+
|
|
129
|
+
IceInternal::BasicStream _is;
|
|
130
|
+
|
|
131
|
+
IceUtil::Monitor<IceUtil::Mutex> _monitor;
|
|
132
|
+
|
|
133
|
+
private:
|
|
134
|
+
|
|
135
|
+
const CommunicatorPtr _communicator;
|
|
136
|
+
const std::string& _operation;
|
|
137
|
+
const IceInternal::CallbackBasePtr _callback;
|
|
138
|
+
const LocalObjectPtr _cookie;
|
|
139
|
+
IceUtil::UniquePtr<Exception> _exception;
|
|
140
|
+
|
|
141
|
+
IceInternal::CancellationHandlerPtr _cancellationHandler;
|
|
142
|
+
IceUtil::UniquePtr<Ice::LocalException> _cancellationException;
|
|
143
|
+
|
|
144
|
+
static const unsigned char OK;
|
|
145
|
+
static const unsigned char Done;
|
|
146
|
+
static const unsigned char Sent;
|
|
147
|
+
static const unsigned char EndCalled;
|
|
148
|
+
static const unsigned char Canceled;
|
|
149
|
+
unsigned char _state;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
namespace IceInternal
|
|
155
|
+
{
|
|
156
|
+
|
|
157
|
+
//
|
|
158
|
+
// Base class for all callbacks.
|
|
159
|
+
//
|
|
160
|
+
class ICE_API CallbackBase : public IceUtil::Shared
|
|
161
|
+
{
|
|
162
|
+
public:
|
|
163
|
+
|
|
164
|
+
void checkCallback(bool, bool);
|
|
165
|
+
|
|
166
|
+
virtual void completed(const ::Ice::AsyncResultPtr&) const = 0;
|
|
167
|
+
virtual CallbackBasePtr verify(const ::Ice::LocalObjectPtr&) = 0;
|
|
168
|
+
virtual void sent(const ::Ice::AsyncResultPtr&) const = 0;
|
|
169
|
+
virtual bool hasSentCallback() const = 0;
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
//
|
|
173
|
+
// Base class for generic callbacks.
|
|
174
|
+
//
|
|
175
|
+
class ICE_API GenericCallbackBase : virtual public CallbackBase
|
|
176
|
+
{
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
//
|
|
180
|
+
// See comments in OutgoingAsync.cpp
|
|
181
|
+
//
|
|
182
|
+
extern ICE_API CallbackBasePtr __dummyCallback;
|
|
183
|
+
|
|
184
|
+
//
|
|
185
|
+
// Generic callback template that requires the caller to down-cast the
|
|
186
|
+
// proxy and the cookie that are obtained from the AsyncResult.
|
|
187
|
+
//
|
|
188
|
+
template<class T>
|
|
189
|
+
class AsyncCallback : public GenericCallbackBase
|
|
190
|
+
{
|
|
191
|
+
public:
|
|
192
|
+
|
|
193
|
+
typedef T callback_type;
|
|
194
|
+
typedef IceUtil::Handle<T> TPtr;
|
|
195
|
+
|
|
196
|
+
typedef void (T::*Callback)(const ::Ice::AsyncResultPtr&);
|
|
197
|
+
|
|
198
|
+
AsyncCallback(const TPtr& instance, Callback cb, Callback sentcb = 0) :
|
|
199
|
+
_callback(instance), _completed(cb), _sent(sentcb)
|
|
200
|
+
{
|
|
201
|
+
checkCallback(instance, cb != 0);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
virtual void completed(const ::Ice::AsyncResultPtr& result) const
|
|
205
|
+
{
|
|
206
|
+
(_callback.get()->*_completed)(result);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
virtual CallbackBasePtr verify(const ::Ice::LocalObjectPtr&)
|
|
210
|
+
{
|
|
211
|
+
return this; // Nothing to do, the cookie is not type-safe.
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
virtual void sent(const ::Ice::AsyncResultPtr& result) const
|
|
215
|
+
{
|
|
216
|
+
if(_sent)
|
|
217
|
+
{
|
|
218
|
+
(_callback.get()->*_sent)(result);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
virtual bool hasSentCallback() const
|
|
223
|
+
{
|
|
224
|
+
return _sent != 0;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
private:
|
|
228
|
+
|
|
229
|
+
TPtr _callback;
|
|
230
|
+
Callback _completed;
|
|
231
|
+
Callback _sent;
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
#ifdef ICE_CPP11
|
|
235
|
+
|
|
236
|
+
template<typename T> struct callback_type
|
|
237
|
+
{
|
|
238
|
+
static const int value = 1;
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
template<> struct callback_type<void(const ::Ice::AsyncResultPtr&)>
|
|
242
|
+
{
|
|
243
|
+
static const int value = 2;
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
template<> struct callback_type<void(const ::Ice::Exception&)>
|
|
247
|
+
{
|
|
248
|
+
static const int value = 3;
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
template<typename Callable, typename = void> struct callable_type
|
|
252
|
+
{
|
|
253
|
+
static const int value = 1;
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
template<class Callable> struct callable_type<Callable, typename ::std::enable_if<
|
|
257
|
+
::std::is_class<Callable>::value &&
|
|
258
|
+
!::std::is_bind_expression<Callable>::value>::type>
|
|
259
|
+
{
|
|
260
|
+
template<typename T, T> struct TypeCheck;
|
|
261
|
+
template<typename T> struct AsyncResultCallback
|
|
262
|
+
{
|
|
263
|
+
typedef void (T::*ok)(const ::Ice::AsyncResultPtr&) const;
|
|
264
|
+
};
|
|
265
|
+
template<typename T> struct ExceptionCallback
|
|
266
|
+
{
|
|
267
|
+
typedef void (T::*ok)(const ::Ice::Exception&) const;
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
typedef char (&other)[1];
|
|
271
|
+
typedef char (&asyncResult)[2];
|
|
272
|
+
typedef char (&exception)[3];
|
|
273
|
+
|
|
274
|
+
template<typename T> static other check(...);
|
|
275
|
+
template<typename T> static asyncResult check(TypeCheck<typename AsyncResultCallback<T>::ok, &T::operator()>*);
|
|
276
|
+
template<typename T> static exception check(TypeCheck<typename ExceptionCallback<T>::ok, &T::operator()>*);
|
|
277
|
+
|
|
278
|
+
enum { value = sizeof(check<Callable>(0)) };
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
template<> struct callable_type<void(*)(const ::Ice::AsyncResultPtr&)>
|
|
282
|
+
{
|
|
283
|
+
static const int value = 2;
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
template<> struct callable_type<void(*)(const ::Ice::Exception&)>
|
|
287
|
+
{
|
|
288
|
+
static const int value = 3;
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
template<typename Callable, typename Callback> struct is_callable
|
|
292
|
+
{
|
|
293
|
+
static const bool value = callable_type<Callable>::value == callback_type<Callback>::value;
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
template<class S> class Function : public std::function<S>
|
|
297
|
+
{
|
|
298
|
+
|
|
299
|
+
public:
|
|
300
|
+
|
|
301
|
+
template<typename T> Function(T f, typename ::std::enable_if<is_callable<T, S>::value>::type* = 0)
|
|
302
|
+
: std::function<S>(f)
|
|
303
|
+
{
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
Function()
|
|
307
|
+
{
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
Function(::std::nullptr_t) : ::std::function<S>(nullptr)
|
|
311
|
+
{
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
#else
|
|
316
|
+
|
|
317
|
+
template<class S> class Function
|
|
318
|
+
{
|
|
319
|
+
public:
|
|
320
|
+
Function()
|
|
321
|
+
{
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
#endif
|
|
326
|
+
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
namespace Ice
|
|
330
|
+
{
|
|
331
|
+
|
|
332
|
+
typedef IceUtil::Handle< ::IceInternal::GenericCallbackBase> CallbackPtr;
|
|
333
|
+
|
|
334
|
+
template<class T> CallbackPtr
|
|
335
|
+
newCallback(const IceUtil::Handle<T>& instance,
|
|
336
|
+
void (T::*cb)(const AsyncResultPtr&),
|
|
337
|
+
void (T::*sentcb)(const AsyncResultPtr&) = 0)
|
|
338
|
+
{
|
|
339
|
+
return new ::IceInternal::AsyncCallback<T>(instance, cb, sentcb);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
template<class T> CallbackPtr
|
|
343
|
+
newCallback(T* instance,
|
|
344
|
+
void (T::*cb)(const AsyncResultPtr&),
|
|
345
|
+
void (T::*sentcb)(const AsyncResultPtr&) = 0)
|
|
346
|
+
{
|
|
347
|
+
return new ::IceInternal::AsyncCallback<T>(instance, cb, sentcb);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
#ifdef ICE_CPP11
|
|
351
|
+
|
|
352
|
+
ICE_API CallbackPtr
|
|
353
|
+
newCallback(const ::IceInternal::Function<void (const AsyncResultPtr&)>&,
|
|
354
|
+
const ::IceInternal::Function<void (const AsyncResultPtr&)>& =
|
|
355
|
+
::IceInternal::Function<void (const AsyncResultPtr&)>());
|
|
356
|
+
#endif
|
|
357
|
+
|
|
358
|
+
//
|
|
359
|
+
// Operation callbacks are specified in Proxy.h
|
|
360
|
+
//
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
#endif
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// **********************************************************************
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This copy of Ice is licensed to you under the terms described in the
|
|
6
|
+
// ICE_LICENSE file included in this distribution.
|
|
7
|
+
//
|
|
8
|
+
// **********************************************************************
|
|
9
|
+
|
|
10
|
+
#ifndef ICE_ASYNC_RESULT_F_H
|
|
11
|
+
#define ICE_ASYNC_RESULT_F_H
|
|
12
|
+
|
|
13
|
+
#include <IceUtil/Shared.h>
|
|
14
|
+
|
|
15
|
+
#include <Ice/Handle.h>
|
|
16
|
+
|
|
17
|
+
namespace Ice
|
|
18
|
+
{
|
|
19
|
+
|
|
20
|
+
class AsyncResult;
|
|
21
|
+
ICE_API IceUtil::Shared* upCast(::Ice::AsyncResult*);
|
|
22
|
+
typedef IceInternal::Handle<AsyncResult> AsyncResultPtr;
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
#endif
|
|
@@ -0,0 +1,1315 @@
|
|
|
1
|
+
// **********************************************************************
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This copy of Ice is licensed to you under the terms described in the
|
|
6
|
+
// ICE_LICENSE file included in this distribution.
|
|
7
|
+
//
|
|
8
|
+
// **********************************************************************
|
|
9
|
+
|
|
10
|
+
#ifndef ICE_BASIC_STREAM_H
|
|
11
|
+
#define ICE_BASIC_STREAM_H
|
|
12
|
+
|
|
13
|
+
#include <IceUtil/StringConverter.h>
|
|
14
|
+
#include <Ice/InstanceF.h>
|
|
15
|
+
#include <Ice/Object.h>
|
|
16
|
+
#include <Ice/ProxyF.h>
|
|
17
|
+
#include <Ice/ObjectFactoryF.h>
|
|
18
|
+
#include <Ice/ObjectFactoryManagerF.h>
|
|
19
|
+
#include <Ice/Buffer.h>
|
|
20
|
+
#include <Ice/Protocol.h>
|
|
21
|
+
#include <Ice/SlicedDataF.h>
|
|
22
|
+
#include <Ice/UserExceptionFactory.h>
|
|
23
|
+
#include <Ice/StreamHelpers.h>
|
|
24
|
+
#include <Ice/FactoryTable.h>
|
|
25
|
+
|
|
26
|
+
namespace Ice
|
|
27
|
+
{
|
|
28
|
+
|
|
29
|
+
class UserException;
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
namespace IceInternal
|
|
34
|
+
{
|
|
35
|
+
|
|
36
|
+
template<typename T> inline void
|
|
37
|
+
patchHandle(void* addr, const Ice::ObjectPtr& v)
|
|
38
|
+
{
|
|
39
|
+
IceInternal::Handle<T>* p = static_cast<IceInternal::Handle<T>*>(addr);
|
|
40
|
+
__patch(*p, v); // Generated __patch method, necessary for forward declarations.
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
class ICE_API BasicStream : public Buffer
|
|
44
|
+
{
|
|
45
|
+
public:
|
|
46
|
+
|
|
47
|
+
typedef size_t size_type;
|
|
48
|
+
typedef void (*PatchFunc)(void*, const Ice::ObjectPtr&);
|
|
49
|
+
|
|
50
|
+
BasicStream(Instance*, const Ice::EncodingVersion&);
|
|
51
|
+
BasicStream(Instance*, const Ice::EncodingVersion&, const Ice::Byte*, const Ice::Byte*);
|
|
52
|
+
~BasicStream()
|
|
53
|
+
{
|
|
54
|
+
// Inlined for performance reasons.
|
|
55
|
+
|
|
56
|
+
if(_currentReadEncaps != &_preAllocatedReadEncaps || _currentWriteEncaps != &_preAllocatedWriteEncaps)
|
|
57
|
+
{
|
|
58
|
+
clear(); // Not inlined.
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
void clear();
|
|
63
|
+
|
|
64
|
+
//
|
|
65
|
+
// Must return Instance*, because we don't hold an InstancePtr for
|
|
66
|
+
// optimization reasons (see comments below).
|
|
67
|
+
//
|
|
68
|
+
Instance* instance() const { return _instance; } // Inlined for performance reasons.
|
|
69
|
+
|
|
70
|
+
void* closure() const;
|
|
71
|
+
void* closure(void*);
|
|
72
|
+
|
|
73
|
+
void swap(BasicStream&);
|
|
74
|
+
void resetEncaps();
|
|
75
|
+
|
|
76
|
+
void resize(Container::size_type sz)
|
|
77
|
+
{
|
|
78
|
+
b.resize(sz);
|
|
79
|
+
i = b.end();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
void startWriteObject(const Ice::SlicedDataPtr& data)
|
|
83
|
+
{
|
|
84
|
+
assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
|
|
85
|
+
_currentWriteEncaps->encoder->startInstance(ObjectSlice, data);
|
|
86
|
+
}
|
|
87
|
+
void endWriteObject()
|
|
88
|
+
{
|
|
89
|
+
assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
|
|
90
|
+
_currentWriteEncaps->encoder->endInstance();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
void startReadObject()
|
|
94
|
+
{
|
|
95
|
+
assert(_currentReadEncaps && _currentReadEncaps->decoder);
|
|
96
|
+
_currentReadEncaps->decoder->startInstance(ObjectSlice);
|
|
97
|
+
}
|
|
98
|
+
Ice::SlicedDataPtr endReadObject(bool preserve)
|
|
99
|
+
{
|
|
100
|
+
assert(_currentReadEncaps && _currentReadEncaps->decoder);
|
|
101
|
+
return _currentReadEncaps->decoder->endInstance(preserve);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
void startWriteException(const Ice::SlicedDataPtr& data)
|
|
105
|
+
{
|
|
106
|
+
assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
|
|
107
|
+
_currentWriteEncaps->encoder->startInstance(ExceptionSlice, data);
|
|
108
|
+
}
|
|
109
|
+
void endWriteException()
|
|
110
|
+
{
|
|
111
|
+
assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
|
|
112
|
+
_currentWriteEncaps->encoder->endInstance();
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
void startReadException()
|
|
116
|
+
{
|
|
117
|
+
assert(_currentReadEncaps && _currentReadEncaps->decoder);
|
|
118
|
+
_currentReadEncaps->decoder->startInstance(ExceptionSlice);
|
|
119
|
+
}
|
|
120
|
+
Ice::SlicedDataPtr endReadException(bool preserve)
|
|
121
|
+
{
|
|
122
|
+
assert(_currentReadEncaps && _currentReadEncaps->decoder);
|
|
123
|
+
return _currentReadEncaps->decoder->endInstance(preserve);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
void startWriteEncaps();
|
|
127
|
+
|
|
128
|
+
void startWriteEncaps(const Ice::EncodingVersion& encoding, Ice::FormatType format)
|
|
129
|
+
{
|
|
130
|
+
checkSupportedEncoding(encoding);
|
|
131
|
+
|
|
132
|
+
WriteEncaps* oldEncaps = _currentWriteEncaps;
|
|
133
|
+
if(!oldEncaps) // First allocated encaps?
|
|
134
|
+
{
|
|
135
|
+
_currentWriteEncaps = &_preAllocatedWriteEncaps;
|
|
136
|
+
}
|
|
137
|
+
else
|
|
138
|
+
{
|
|
139
|
+
_currentWriteEncaps = new WriteEncaps();
|
|
140
|
+
_currentWriteEncaps->previous = oldEncaps;
|
|
141
|
+
}
|
|
142
|
+
_currentWriteEncaps->format = format;
|
|
143
|
+
_currentWriteEncaps->encoding = encoding;
|
|
144
|
+
_currentWriteEncaps->start = b.size();
|
|
145
|
+
|
|
146
|
+
write(Ice::Int(0)); // Placeholder for the encapsulation length.
|
|
147
|
+
write(_currentWriteEncaps->encoding);
|
|
148
|
+
}
|
|
149
|
+
void endWriteEncaps()
|
|
150
|
+
{
|
|
151
|
+
assert(_currentWriteEncaps);
|
|
152
|
+
|
|
153
|
+
// Size includes size and version.
|
|
154
|
+
const Ice::Int sz = static_cast<Ice::Int>(b.size() - _currentWriteEncaps->start);
|
|
155
|
+
write(sz, &(*(b.begin() + _currentWriteEncaps->start)));
|
|
156
|
+
|
|
157
|
+
WriteEncaps* oldEncaps = _currentWriteEncaps;
|
|
158
|
+
_currentWriteEncaps = _currentWriteEncaps->previous;
|
|
159
|
+
if(oldEncaps == &_preAllocatedWriteEncaps)
|
|
160
|
+
{
|
|
161
|
+
oldEncaps->reset();
|
|
162
|
+
}
|
|
163
|
+
else
|
|
164
|
+
{
|
|
165
|
+
delete oldEncaps;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
void endWriteEncapsChecked(); // Used by public stream API.
|
|
169
|
+
void writeEmptyEncaps(const Ice::EncodingVersion& encoding)
|
|
170
|
+
{
|
|
171
|
+
checkSupportedEncoding(encoding);
|
|
172
|
+
write(Ice::Int(6)); // Size
|
|
173
|
+
write(encoding);
|
|
174
|
+
}
|
|
175
|
+
void writeEncaps(const Ice::Byte* v, Ice::Int sz)
|
|
176
|
+
{
|
|
177
|
+
if(sz < 6)
|
|
178
|
+
{
|
|
179
|
+
throwEncapsulationException(__FILE__, __LINE__);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
Container::size_type position = b.size();
|
|
183
|
+
resize(position + sz);
|
|
184
|
+
memcpy(&b[position], &v[0], sz);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const Ice::EncodingVersion& getWriteEncoding() const
|
|
188
|
+
{
|
|
189
|
+
return _currentWriteEncaps ? _currentWriteEncaps->encoding : _encoding;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const Ice::EncodingVersion& startReadEncaps()
|
|
193
|
+
{
|
|
194
|
+
ReadEncaps* oldEncaps = _currentReadEncaps;
|
|
195
|
+
if(!oldEncaps) // First allocated encaps?
|
|
196
|
+
{
|
|
197
|
+
_currentReadEncaps = &_preAllocatedReadEncaps;
|
|
198
|
+
}
|
|
199
|
+
else
|
|
200
|
+
{
|
|
201
|
+
_currentReadEncaps = new ReadEncaps();
|
|
202
|
+
_currentReadEncaps->previous = oldEncaps;
|
|
203
|
+
}
|
|
204
|
+
_currentReadEncaps->start = i - b.begin();
|
|
205
|
+
|
|
206
|
+
//
|
|
207
|
+
// I don't use readSize() and writeSize() for encapsulations,
|
|
208
|
+
// because when creating an encapsulation, I must know in advance
|
|
209
|
+
// how many bytes the size information will require in the data
|
|
210
|
+
// stream. If I use an Int, it is always 4 bytes. For
|
|
211
|
+
// readSize()/writeSize(), it could be 1 or 5 bytes.
|
|
212
|
+
//
|
|
213
|
+
Ice::Int sz;
|
|
214
|
+
read(sz);
|
|
215
|
+
if(sz < 6)
|
|
216
|
+
{
|
|
217
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
218
|
+
}
|
|
219
|
+
if(i - sizeof(Ice::Int) + sz > b.end())
|
|
220
|
+
{
|
|
221
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
222
|
+
}
|
|
223
|
+
_currentReadEncaps->sz = sz;
|
|
224
|
+
|
|
225
|
+
read(_currentReadEncaps->encoding);
|
|
226
|
+
checkSupportedEncoding(_currentReadEncaps->encoding); // Make sure the encoding is supported
|
|
227
|
+
|
|
228
|
+
return _currentReadEncaps->encoding;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
void endReadEncaps()
|
|
232
|
+
{
|
|
233
|
+
assert(_currentReadEncaps);
|
|
234
|
+
|
|
235
|
+
if(_currentReadEncaps->encoding != Ice::Encoding_1_0)
|
|
236
|
+
{
|
|
237
|
+
skipOpts();
|
|
238
|
+
if(i != b.begin() + _currentReadEncaps->start + _currentReadEncaps->sz)
|
|
239
|
+
{
|
|
240
|
+
throwEncapsulationException(__FILE__, __LINE__);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
else if(i != b.begin() + _currentReadEncaps->start + _currentReadEncaps->sz)
|
|
244
|
+
{
|
|
245
|
+
if(i + 1 != b.begin() + _currentReadEncaps->start + _currentReadEncaps->sz)
|
|
246
|
+
{
|
|
247
|
+
throwEncapsulationException(__FILE__, __LINE__);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
//
|
|
251
|
+
// Ice version < 3.3 had a bug where user exceptions with
|
|
252
|
+
// class members could be encoded with a trailing byte
|
|
253
|
+
// when dispatched with AMD. So we tolerate an extra byte
|
|
254
|
+
// in the encapsulation.
|
|
255
|
+
//
|
|
256
|
+
++i;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
ReadEncaps* oldEncaps = _currentReadEncaps;
|
|
260
|
+
_currentReadEncaps = _currentReadEncaps->previous;
|
|
261
|
+
if(oldEncaps == &_preAllocatedReadEncaps)
|
|
262
|
+
{
|
|
263
|
+
oldEncaps->reset();
|
|
264
|
+
}
|
|
265
|
+
else
|
|
266
|
+
{
|
|
267
|
+
delete oldEncaps;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
Ice::EncodingVersion skipEmptyEncaps()
|
|
271
|
+
{
|
|
272
|
+
Ice::Int sz;
|
|
273
|
+
read(sz);
|
|
274
|
+
if(sz != static_cast<Ice::Int>(sizeof(Ice::Int)) + 2)
|
|
275
|
+
{
|
|
276
|
+
throwEncapsulationException(__FILE__, __LINE__);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
if(i + 2 > b.end())
|
|
280
|
+
{
|
|
281
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
Ice::EncodingVersion encoding;
|
|
285
|
+
read(encoding);
|
|
286
|
+
return encoding;
|
|
287
|
+
}
|
|
288
|
+
void endReadEncapsChecked(); // Used by public stream API.
|
|
289
|
+
Ice::EncodingVersion readEncaps(const Ice::Byte*& v, Ice::Int& sz)
|
|
290
|
+
{
|
|
291
|
+
Ice::EncodingVersion encoding;
|
|
292
|
+
v = i;
|
|
293
|
+
read(sz);
|
|
294
|
+
if(sz < 6)
|
|
295
|
+
{
|
|
296
|
+
throwEncapsulationException(__FILE__, __LINE__);
|
|
297
|
+
}
|
|
298
|
+
if(i - sizeof(Ice::Int) + sz > b.end())
|
|
299
|
+
{
|
|
300
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
read(encoding);
|
|
304
|
+
i += sz - sizeof(Ice::Int) - 2;
|
|
305
|
+
return encoding;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
const Ice::EncodingVersion& getReadEncoding() const
|
|
309
|
+
{
|
|
310
|
+
return _currentReadEncaps ? _currentReadEncaps->encoding : _encoding;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
Ice::Int getReadEncapsSize();
|
|
314
|
+
Ice::EncodingVersion skipEncaps();
|
|
315
|
+
|
|
316
|
+
void startWriteSlice(const std::string& typeId, int compactId, bool last)
|
|
317
|
+
{
|
|
318
|
+
assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
|
|
319
|
+
_currentWriteEncaps->encoder->startSlice(typeId, compactId, last);
|
|
320
|
+
}
|
|
321
|
+
void endWriteSlice()
|
|
322
|
+
{
|
|
323
|
+
assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
|
|
324
|
+
_currentWriteEncaps->encoder->endSlice();
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
std::string startReadSlice()
|
|
328
|
+
{
|
|
329
|
+
assert(_currentReadEncaps && _currentReadEncaps->decoder);
|
|
330
|
+
return _currentReadEncaps->decoder->startSlice();
|
|
331
|
+
}
|
|
332
|
+
void endReadSlice()
|
|
333
|
+
{
|
|
334
|
+
assert(_currentReadEncaps && _currentReadEncaps->decoder);
|
|
335
|
+
_currentReadEncaps->decoder->endSlice();
|
|
336
|
+
}
|
|
337
|
+
void skipSlice()
|
|
338
|
+
{
|
|
339
|
+
assert(_currentReadEncaps && _currentReadEncaps->decoder);
|
|
340
|
+
_currentReadEncaps->decoder->skipSlice();
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
void readPendingObjects();
|
|
344
|
+
void writePendingObjects();
|
|
345
|
+
|
|
346
|
+
void writeSize(Ice::Int v) // Inlined for performance reasons.
|
|
347
|
+
{
|
|
348
|
+
assert(v >= 0);
|
|
349
|
+
if(v > 254)
|
|
350
|
+
{
|
|
351
|
+
write(Ice::Byte(255));
|
|
352
|
+
write(v);
|
|
353
|
+
}
|
|
354
|
+
else
|
|
355
|
+
{
|
|
356
|
+
write(static_cast<Ice::Byte>(v));
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
void rewriteSize(Ice::Int v, Container::iterator dest)
|
|
360
|
+
{
|
|
361
|
+
assert(v >= 0);
|
|
362
|
+
if(v > 254)
|
|
363
|
+
{
|
|
364
|
+
*dest++ = Ice::Byte(255);
|
|
365
|
+
write(v, dest);
|
|
366
|
+
}
|
|
367
|
+
else
|
|
368
|
+
{
|
|
369
|
+
*dest = static_cast<Ice::Byte>(v);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
Ice::Int readSize() // Inlined for performance reasons.
|
|
373
|
+
{
|
|
374
|
+
Ice::Byte byte;
|
|
375
|
+
read(byte);
|
|
376
|
+
unsigned char val = static_cast<unsigned char>(byte);
|
|
377
|
+
if(val == 255)
|
|
378
|
+
{
|
|
379
|
+
Ice::Int v;
|
|
380
|
+
read(v);
|
|
381
|
+
if(v < 0)
|
|
382
|
+
{
|
|
383
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
384
|
+
}
|
|
385
|
+
return v;
|
|
386
|
+
}
|
|
387
|
+
else
|
|
388
|
+
{
|
|
389
|
+
return static_cast<Ice::Int>(static_cast<unsigned char>(byte));
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
Ice::Int readAndCheckSeqSize(int);
|
|
394
|
+
|
|
395
|
+
size_type startSize()
|
|
396
|
+
{
|
|
397
|
+
size_type position = b.size();
|
|
398
|
+
write(Ice::Int(0));
|
|
399
|
+
return position;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
void endSize(size_type position)
|
|
403
|
+
{
|
|
404
|
+
rewrite(static_cast<Ice::Int>(b.size() - position) - 4, position);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
void writeBlob(const std::vector<Ice::Byte>&);
|
|
408
|
+
void readBlob(std::vector<Ice::Byte>&, Ice::Int);
|
|
409
|
+
|
|
410
|
+
void writeBlob(const Ice::Byte* v, Container::size_type sz)
|
|
411
|
+
{
|
|
412
|
+
if(sz > 0)
|
|
413
|
+
{
|
|
414
|
+
Container::size_type position = b.size();
|
|
415
|
+
resize(position + sz);
|
|
416
|
+
memcpy(&b[position], &v[0], sz);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
void readBlob(const Ice::Byte*& v, Container::size_type sz)
|
|
421
|
+
{
|
|
422
|
+
if(sz > 0)
|
|
423
|
+
{
|
|
424
|
+
v = i;
|
|
425
|
+
if(static_cast<Container::size_type>(b.end() - i) < sz)
|
|
426
|
+
{
|
|
427
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
428
|
+
}
|
|
429
|
+
i += sz;
|
|
430
|
+
}
|
|
431
|
+
else
|
|
432
|
+
{
|
|
433
|
+
v = i;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
template<typename T> void write(const T& v)
|
|
438
|
+
{
|
|
439
|
+
Ice::StreamHelper<T, Ice::StreamableTraits<T>::helper>::write(this, v);
|
|
440
|
+
}
|
|
441
|
+
template<typename T> void read(T& v)
|
|
442
|
+
{
|
|
443
|
+
Ice::StreamHelper<T, Ice::StreamableTraits<T>::helper>::read(this, v);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
template<typename T> void write(Ice::Int tag, const IceUtil::Optional<T>& v)
|
|
447
|
+
{
|
|
448
|
+
if(!v)
|
|
449
|
+
{
|
|
450
|
+
return; // Optional not set
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
if(writeOpt(tag, Ice::StreamOptionalHelper<T,
|
|
454
|
+
Ice::StreamableTraits<T>::helper,
|
|
455
|
+
Ice::StreamableTraits<T>::fixedLength>::optionalFormat))
|
|
456
|
+
{
|
|
457
|
+
Ice::StreamOptionalHelper<T,
|
|
458
|
+
Ice::StreamableTraits<T>::helper,
|
|
459
|
+
Ice::StreamableTraits<T>::fixedLength>::write(this, *v);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
template<typename T> void read(Ice::Int tag, IceUtil::Optional<T>& v)
|
|
463
|
+
{
|
|
464
|
+
if(readOpt(tag, Ice::StreamOptionalHelper<T,
|
|
465
|
+
Ice::StreamableTraits<T>::helper,
|
|
466
|
+
Ice::StreamableTraits<T>::fixedLength>::optionalFormat))
|
|
467
|
+
{
|
|
468
|
+
v.__setIsSet();
|
|
469
|
+
Ice::StreamOptionalHelper<T,
|
|
470
|
+
Ice::StreamableTraits<T>::helper,
|
|
471
|
+
Ice::StreamableTraits<T>::fixedLength>::read(this, *v);
|
|
472
|
+
}
|
|
473
|
+
else
|
|
474
|
+
{
|
|
475
|
+
v = IceUtil::None;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
//
|
|
480
|
+
// Template functions for sequences and custom sequences
|
|
481
|
+
//
|
|
482
|
+
template<typename T> void write(const std::vector<T>& v)
|
|
483
|
+
{
|
|
484
|
+
if(v.empty())
|
|
485
|
+
{
|
|
486
|
+
writeSize(0);
|
|
487
|
+
}
|
|
488
|
+
else
|
|
489
|
+
{
|
|
490
|
+
write(&v[0], &v[0] + v.size());
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
template<typename T> void write(const T* begin, const T* end)
|
|
494
|
+
{
|
|
495
|
+
writeSize(static_cast<Ice::Int>(end - begin));
|
|
496
|
+
for(const T* p = begin; p != end; ++p)
|
|
497
|
+
{
|
|
498
|
+
write(*p);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
// Read/write type and tag for optionals
|
|
503
|
+
bool writeOpt(Ice::Int tag, Ice::OptionalFormat format)
|
|
504
|
+
{
|
|
505
|
+
assert(_currentWriteEncaps);
|
|
506
|
+
if(_currentWriteEncaps->encoder)
|
|
507
|
+
{
|
|
508
|
+
return _currentWriteEncaps->encoder->writeOpt(tag, format);
|
|
509
|
+
}
|
|
510
|
+
else
|
|
511
|
+
{
|
|
512
|
+
return writeOptImpl(tag, format);
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
bool readOpt(Ice::Int tag, Ice::OptionalFormat expectedFormat)
|
|
516
|
+
{
|
|
517
|
+
assert(_currentReadEncaps);
|
|
518
|
+
if(_currentReadEncaps->decoder)
|
|
519
|
+
{
|
|
520
|
+
return _currentReadEncaps->decoder->readOpt(tag, expectedFormat);
|
|
521
|
+
}
|
|
522
|
+
else
|
|
523
|
+
{
|
|
524
|
+
return readOptImpl(tag, expectedFormat);
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// Byte
|
|
529
|
+
void write(Ice::Byte v)
|
|
530
|
+
{
|
|
531
|
+
b.push_back(v);
|
|
532
|
+
}
|
|
533
|
+
void write(const Ice::Byte*, const Ice::Byte*);
|
|
534
|
+
void read(Ice::Byte& v)
|
|
535
|
+
{
|
|
536
|
+
if(i >= b.end())
|
|
537
|
+
{
|
|
538
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
539
|
+
}
|
|
540
|
+
v = *i++;
|
|
541
|
+
}
|
|
542
|
+
void read(std::vector<Ice::Byte>&);
|
|
543
|
+
void read(std::pair<const Ice::Byte*, const Ice::Byte*>&);
|
|
544
|
+
|
|
545
|
+
// This method is useful for generic stream helpers
|
|
546
|
+
void read(std::pair<const Ice::Byte*, const Ice::Byte*>& p, ::IceUtil::ScopedArray<Ice::Byte>& result)
|
|
547
|
+
{
|
|
548
|
+
result.reset();
|
|
549
|
+
read(p);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// Bool
|
|
553
|
+
void write(bool v)
|
|
554
|
+
{
|
|
555
|
+
b.push_back(static_cast<Ice::Byte>(v));
|
|
556
|
+
}
|
|
557
|
+
void write(const std::vector<bool>&);
|
|
558
|
+
void write(const bool*, const bool*);
|
|
559
|
+
void read(bool& v)
|
|
560
|
+
{
|
|
561
|
+
if(i >= b.end())
|
|
562
|
+
{
|
|
563
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
564
|
+
}
|
|
565
|
+
v = (0 != *i++);
|
|
566
|
+
}
|
|
567
|
+
void read(std::vector<bool>&);
|
|
568
|
+
void read(std::pair<const bool*, const bool*>&, ::IceUtil::ScopedArray<bool>&);
|
|
569
|
+
|
|
570
|
+
// Short
|
|
571
|
+
void write(Ice::Short);
|
|
572
|
+
void write(const Ice::Short*, const Ice::Short*);
|
|
573
|
+
void read(Ice::Short&);
|
|
574
|
+
void read(std::vector<Ice::Short>&);
|
|
575
|
+
void read(std::pair<const Ice::Short*, const Ice::Short*>&, ::IceUtil::ScopedArray<Ice::Short>&);
|
|
576
|
+
|
|
577
|
+
// Int
|
|
578
|
+
void write(Ice::Int v) // Inlined for performance reasons.
|
|
579
|
+
{
|
|
580
|
+
Container::size_type position = b.size();
|
|
581
|
+
resize(position + sizeof(Ice::Int));
|
|
582
|
+
write(v, &b[position]);
|
|
583
|
+
}
|
|
584
|
+
void write(Ice::Int v, Container::iterator dest)
|
|
585
|
+
{
|
|
586
|
+
#ifdef ICE_BIG_ENDIAN
|
|
587
|
+
const Ice::Byte* src = reinterpret_cast<const Ice::Byte*>(&v) + sizeof(Ice::Int) - 1;
|
|
588
|
+
*dest++ = *src--;
|
|
589
|
+
*dest++ = *src--;
|
|
590
|
+
*dest++ = *src--;
|
|
591
|
+
*dest = *src;
|
|
592
|
+
#else
|
|
593
|
+
const Ice::Byte* src = reinterpret_cast<const Ice::Byte*>(&v);
|
|
594
|
+
*dest++ = *src++;
|
|
595
|
+
*dest++ = *src++;
|
|
596
|
+
*dest++ = *src++;
|
|
597
|
+
*dest = *src;
|
|
598
|
+
#endif
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
void read(Ice::Int& v) // Inlined for performance reasons.
|
|
602
|
+
{
|
|
603
|
+
if(b.end() - i < static_cast<int>(sizeof(Ice::Int)))
|
|
604
|
+
{
|
|
605
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
606
|
+
}
|
|
607
|
+
const Ice::Byte* src = &(*i);
|
|
608
|
+
i += sizeof(Ice::Int);
|
|
609
|
+
#ifdef ICE_BIG_ENDIAN
|
|
610
|
+
Ice::Byte* dest = reinterpret_cast<Ice::Byte*>(&v) + sizeof(Ice::Int) - 1;
|
|
611
|
+
*dest-- = *src++;
|
|
612
|
+
*dest-- = *src++;
|
|
613
|
+
*dest-- = *src++;
|
|
614
|
+
*dest = *src;
|
|
615
|
+
#else
|
|
616
|
+
Ice::Byte* dest = reinterpret_cast<Ice::Byte*>(&v);
|
|
617
|
+
*dest++ = *src++;
|
|
618
|
+
*dest++ = *src++;
|
|
619
|
+
*dest++ = *src++;
|
|
620
|
+
*dest = *src;
|
|
621
|
+
#endif
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
void write(const Ice::Int*, const Ice::Int*);
|
|
625
|
+
void read(std::vector<Ice::Int>&);
|
|
626
|
+
void read(std::pair<const Ice::Int*, const Ice::Int*>&, ::IceUtil::ScopedArray<Ice::Int>&);
|
|
627
|
+
|
|
628
|
+
// Long
|
|
629
|
+
void write(Ice::Long);
|
|
630
|
+
void write(const Ice::Long*, const Ice::Long*);
|
|
631
|
+
void read(Ice::Long&);
|
|
632
|
+
void read(std::vector<Ice::Long>&);
|
|
633
|
+
void read(std::pair<const Ice::Long*, const Ice::Long*>&, ::IceUtil::ScopedArray<Ice::Long>&);
|
|
634
|
+
|
|
635
|
+
// Float
|
|
636
|
+
void write(Ice::Float);
|
|
637
|
+
void write(const Ice::Float*, const Ice::Float*);
|
|
638
|
+
void read(Ice::Float&);
|
|
639
|
+
void read(std::vector<Ice::Float>&);
|
|
640
|
+
void read(std::pair<const Ice::Float*, const Ice::Float*>&, ::IceUtil::ScopedArray<Ice::Float>&);
|
|
641
|
+
|
|
642
|
+
// Double
|
|
643
|
+
void write(Ice::Double);
|
|
644
|
+
void write(const Ice::Double*, const Ice::Double*);
|
|
645
|
+
void read(Ice::Double&);
|
|
646
|
+
void read(std::vector<Ice::Double>&);
|
|
647
|
+
void read(std::pair<const Ice::Double*, const Ice::Double*>&, ::IceUtil::ScopedArray<Ice::Double>&);
|
|
648
|
+
|
|
649
|
+
// String
|
|
650
|
+
void write(const std::string& v, bool convert = true)
|
|
651
|
+
{
|
|
652
|
+
Ice::Int sz = static_cast<Ice::Int>(v.size());
|
|
653
|
+
if(convert && sz > 0 && _stringConverter != 0)
|
|
654
|
+
{
|
|
655
|
+
writeConverted(v.data(), static_cast<size_t>(sz));
|
|
656
|
+
}
|
|
657
|
+
else
|
|
658
|
+
{
|
|
659
|
+
writeSize(sz);
|
|
660
|
+
if(sz > 0)
|
|
661
|
+
{
|
|
662
|
+
Container::size_type position = b.size();
|
|
663
|
+
resize(position + sz);
|
|
664
|
+
memcpy(&b[position], v.data(), sz);
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
// for custom strings
|
|
670
|
+
void write(const char* vdata, size_t vsize, bool convert = true)
|
|
671
|
+
{
|
|
672
|
+
Ice::Int sz = static_cast<Ice::Int>(vsize);
|
|
673
|
+
if(convert && sz > 0 && _stringConverter != 0)
|
|
674
|
+
{
|
|
675
|
+
writeConverted(vdata, vsize);
|
|
676
|
+
}
|
|
677
|
+
else
|
|
678
|
+
{
|
|
679
|
+
writeSize(sz);
|
|
680
|
+
if(sz > 0)
|
|
681
|
+
{
|
|
682
|
+
Container::size_type position = b.size();
|
|
683
|
+
resize(position + sz);
|
|
684
|
+
memcpy(&b[position], vdata, vsize);
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
// Null-terminated C string
|
|
690
|
+
void write(const char* vdata, bool convert = true)
|
|
691
|
+
{
|
|
692
|
+
write(vdata, strlen(vdata), convert);
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
void write(const std::string*, const std::string*, bool = true);
|
|
696
|
+
|
|
697
|
+
void read(std::string& v, bool convert = true)
|
|
698
|
+
{
|
|
699
|
+
Ice::Int sz = readSize();
|
|
700
|
+
if(sz > 0)
|
|
701
|
+
{
|
|
702
|
+
if(b.end() - i < sz)
|
|
703
|
+
{
|
|
704
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
705
|
+
}
|
|
706
|
+
if(convert && _stringConverter != 0)
|
|
707
|
+
{
|
|
708
|
+
readConverted(v, sz);
|
|
709
|
+
}
|
|
710
|
+
else
|
|
711
|
+
{
|
|
712
|
+
std::string(reinterpret_cast<const char*>(&*i), reinterpret_cast<const char*>(&*i) + sz).swap(v);
|
|
713
|
+
}
|
|
714
|
+
i += sz;
|
|
715
|
+
}
|
|
716
|
+
else
|
|
717
|
+
{
|
|
718
|
+
v.clear();
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
// For custom strings, convert = false
|
|
723
|
+
void read(const char*& vdata, size_t& vsize)
|
|
724
|
+
{
|
|
725
|
+
Ice::Int sz = readSize();
|
|
726
|
+
if(sz > 0)
|
|
727
|
+
{
|
|
728
|
+
if(b.end() - i < sz)
|
|
729
|
+
{
|
|
730
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
vdata = reinterpret_cast<const char*>(&*i);
|
|
734
|
+
vsize = static_cast<size_t>(sz);
|
|
735
|
+
i += sz;
|
|
736
|
+
}
|
|
737
|
+
else
|
|
738
|
+
{
|
|
739
|
+
vdata = 0;
|
|
740
|
+
vsize = 0;
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
// For custom strings, convert = true
|
|
745
|
+
void read(const char*& vdata, size_t& vsize, std::string& holder)
|
|
746
|
+
{
|
|
747
|
+
if(_stringConverter == 0)
|
|
748
|
+
{
|
|
749
|
+
holder.clear();
|
|
750
|
+
read(vdata, vsize);
|
|
751
|
+
}
|
|
752
|
+
else
|
|
753
|
+
{
|
|
754
|
+
Ice::Int sz = readSize();
|
|
755
|
+
if(sz > 0)
|
|
756
|
+
{
|
|
757
|
+
if(b.end() - i < sz)
|
|
758
|
+
{
|
|
759
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
readConverted(holder, sz);
|
|
763
|
+
vdata = holder.data();
|
|
764
|
+
vsize = holder.size();
|
|
765
|
+
}
|
|
766
|
+
else
|
|
767
|
+
{
|
|
768
|
+
holder.clear();
|
|
769
|
+
vdata = 0;
|
|
770
|
+
vsize = 0;
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
void read(std::vector<std::string>&, bool = true);
|
|
776
|
+
|
|
777
|
+
void write(const std::wstring& v);
|
|
778
|
+
void write(const std::wstring*, const std::wstring*);
|
|
779
|
+
void read(std::wstring&);
|
|
780
|
+
void read(std::vector<std::wstring>&);
|
|
781
|
+
|
|
782
|
+
// Proxy
|
|
783
|
+
void write(const Ice::ObjectPrx&);
|
|
784
|
+
template<typename T> void write(const IceInternal::ProxyHandle<T>& v)
|
|
785
|
+
{
|
|
786
|
+
write(Ice::ObjectPrx(upCast(v.get())));
|
|
787
|
+
}
|
|
788
|
+
void read(Ice::ObjectPrx&);
|
|
789
|
+
template<typename T> void read(IceInternal::ProxyHandle<T>& v)
|
|
790
|
+
{
|
|
791
|
+
__read(this, v); // Generated __read method, necessary for forward declarations.
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
// Class
|
|
795
|
+
void write(const Ice::ObjectPtr& v)
|
|
796
|
+
{
|
|
797
|
+
initWriteEncaps();
|
|
798
|
+
_currentWriteEncaps->encoder->write(v);
|
|
799
|
+
}
|
|
800
|
+
template<typename T> void write(const IceInternal::Handle<T>& v)
|
|
801
|
+
{
|
|
802
|
+
write(Ice::ObjectPtr(upCast(v.get())));
|
|
803
|
+
}
|
|
804
|
+
void read(PatchFunc patchFunc, void* patchAddr)
|
|
805
|
+
{
|
|
806
|
+
initReadEncaps();
|
|
807
|
+
_currentReadEncaps->decoder->read(patchFunc, patchAddr);
|
|
808
|
+
}
|
|
809
|
+
template<typename T> void read(IceInternal::Handle<T>& v)
|
|
810
|
+
{
|
|
811
|
+
read(&patchHandle<T>, &v);
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
// Enum
|
|
815
|
+
Ice::Int readEnum(Ice::Int);
|
|
816
|
+
void writeEnum(Ice::Int, Ice::Int);
|
|
817
|
+
|
|
818
|
+
// Exception
|
|
819
|
+
void writeException(const Ice::UserException&);
|
|
820
|
+
void throwException(const UserExceptionFactoryPtr& = 0);
|
|
821
|
+
|
|
822
|
+
void sliceObjects(bool);
|
|
823
|
+
|
|
824
|
+
// Read/write/skip optionals
|
|
825
|
+
bool readOptImpl(Ice::Int, Ice::OptionalFormat);
|
|
826
|
+
bool writeOptImpl(Ice::Int, Ice::OptionalFormat);
|
|
827
|
+
void skipOpt(Ice::OptionalFormat);
|
|
828
|
+
void skipOpts();
|
|
829
|
+
|
|
830
|
+
// Skip bytes from the stream
|
|
831
|
+
void skip(size_type size)
|
|
832
|
+
{
|
|
833
|
+
if(i + size > b.end())
|
|
834
|
+
{
|
|
835
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
836
|
+
}
|
|
837
|
+
i += size;
|
|
838
|
+
}
|
|
839
|
+
void skipSize()
|
|
840
|
+
{
|
|
841
|
+
Ice::Byte bt;
|
|
842
|
+
read(bt);
|
|
843
|
+
if(static_cast<unsigned char>(bt) == 255)
|
|
844
|
+
{
|
|
845
|
+
skip(4);
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
size_type pos()
|
|
850
|
+
{
|
|
851
|
+
return i - b.begin();
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
void rewrite(Ice::Int value, size_type p)
|
|
855
|
+
{
|
|
856
|
+
write(value, b.begin() + p);
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
private:
|
|
860
|
+
|
|
861
|
+
//
|
|
862
|
+
// String
|
|
863
|
+
//
|
|
864
|
+
void writeConverted(const char*, size_t);
|
|
865
|
+
void readConverted(std::string&, Ice::Int);
|
|
866
|
+
|
|
867
|
+
//
|
|
868
|
+
// I can't throw these exception from inline functions from within
|
|
869
|
+
// this file, because I cannot include the header with the
|
|
870
|
+
// exceptions. Doing so would screw up the whole include file
|
|
871
|
+
// ordering.
|
|
872
|
+
//
|
|
873
|
+
void throwUnmarshalOutOfBoundsException(const char*, int);
|
|
874
|
+
void throwEncapsulationException(const char*, int);
|
|
875
|
+
|
|
876
|
+
//
|
|
877
|
+
// Optimization. The instance may not be deleted while a
|
|
878
|
+
// stack-allocated BasicStream still holds it.
|
|
879
|
+
//
|
|
880
|
+
Instance* _instance;
|
|
881
|
+
|
|
882
|
+
//
|
|
883
|
+
// The public stream API needs to attach data to a stream.
|
|
884
|
+
//
|
|
885
|
+
void* _closure;
|
|
886
|
+
|
|
887
|
+
class ReadEncaps;
|
|
888
|
+
class WriteEncaps;
|
|
889
|
+
enum SliceType { NoSlice, ObjectSlice, ExceptionSlice };
|
|
890
|
+
|
|
891
|
+
typedef std::vector<Ice::ObjectPtr> ObjectList;
|
|
892
|
+
|
|
893
|
+
class ICE_API EncapsDecoder : private ::IceUtil::noncopyable
|
|
894
|
+
{
|
|
895
|
+
public:
|
|
896
|
+
|
|
897
|
+
virtual ~EncapsDecoder() { }
|
|
898
|
+
|
|
899
|
+
virtual void read(PatchFunc, void*) = 0;
|
|
900
|
+
virtual void throwException(const UserExceptionFactoryPtr&) = 0;
|
|
901
|
+
|
|
902
|
+
virtual void startInstance(SliceType) = 0;
|
|
903
|
+
virtual Ice::SlicedDataPtr endInstance(bool) = 0;
|
|
904
|
+
virtual const std::string& startSlice() = 0;
|
|
905
|
+
virtual void endSlice() = 0;
|
|
906
|
+
virtual void skipSlice() = 0;
|
|
907
|
+
|
|
908
|
+
virtual bool readOpt(Ice::Int, Ice::OptionalFormat)
|
|
909
|
+
{
|
|
910
|
+
return false;
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
virtual void readPendingObjects()
|
|
914
|
+
{
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
protected:
|
|
918
|
+
|
|
919
|
+
EncapsDecoder(BasicStream* stream, ReadEncaps* encaps, bool sliceObjects, const ObjectFactoryManagerPtr& f) :
|
|
920
|
+
_stream(stream), _encaps(encaps), _sliceObjects(sliceObjects), _servantFactoryManager(f), _typeIdIndex(0)
|
|
921
|
+
{
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
std::string readTypeId(bool);
|
|
925
|
+
Ice::ObjectPtr newInstance(const std::string&);
|
|
926
|
+
|
|
927
|
+
void addPatchEntry(Ice::Int, PatchFunc, void*);
|
|
928
|
+
void unmarshal(Ice::Int, const Ice::ObjectPtr&);
|
|
929
|
+
|
|
930
|
+
typedef std::map<Ice::Int, Ice::ObjectPtr> IndexToPtrMap;
|
|
931
|
+
typedef std::map<Ice::Int, std::string> TypeIdReadMap;
|
|
932
|
+
|
|
933
|
+
struct PatchEntry
|
|
934
|
+
{
|
|
935
|
+
PatchFunc patchFunc;
|
|
936
|
+
void* patchAddr;
|
|
937
|
+
};
|
|
938
|
+
typedef std::vector<PatchEntry> PatchList;
|
|
939
|
+
typedef std::map<Ice::Int, PatchList> PatchMap;
|
|
940
|
+
|
|
941
|
+
BasicStream* _stream;
|
|
942
|
+
ReadEncaps* _encaps;
|
|
943
|
+
const bool _sliceObjects;
|
|
944
|
+
ObjectFactoryManagerPtr _servantFactoryManager;
|
|
945
|
+
|
|
946
|
+
// Encapsulation attributes for object un-marshalling
|
|
947
|
+
PatchMap _patchMap;
|
|
948
|
+
|
|
949
|
+
private:
|
|
950
|
+
|
|
951
|
+
// Encapsulation attributes for object un-marshalling
|
|
952
|
+
IndexToPtrMap _unmarshaledMap;
|
|
953
|
+
TypeIdReadMap _typeIdMap;
|
|
954
|
+
Ice::Int _typeIdIndex;
|
|
955
|
+
ObjectList _objectList;
|
|
956
|
+
};
|
|
957
|
+
|
|
958
|
+
class ICE_API EncapsDecoder10 : public EncapsDecoder
|
|
959
|
+
{
|
|
960
|
+
public:
|
|
961
|
+
|
|
962
|
+
EncapsDecoder10(BasicStream* stream, ReadEncaps* encaps, bool sliceObjects, const ObjectFactoryManagerPtr& f) :
|
|
963
|
+
EncapsDecoder(stream, encaps, sliceObjects, f), _sliceType(NoSlice)
|
|
964
|
+
{
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
virtual void read(PatchFunc, void*);
|
|
968
|
+
virtual void throwException(const UserExceptionFactoryPtr&);
|
|
969
|
+
|
|
970
|
+
virtual void startInstance(SliceType);
|
|
971
|
+
virtual Ice::SlicedDataPtr endInstance(bool);
|
|
972
|
+
virtual const std::string& startSlice();
|
|
973
|
+
virtual void endSlice();
|
|
974
|
+
virtual void skipSlice();
|
|
975
|
+
|
|
976
|
+
virtual void readPendingObjects();
|
|
977
|
+
|
|
978
|
+
private:
|
|
979
|
+
|
|
980
|
+
void readInstance();
|
|
981
|
+
|
|
982
|
+
// Instance attributes
|
|
983
|
+
SliceType _sliceType;
|
|
984
|
+
bool _skipFirstSlice;
|
|
985
|
+
|
|
986
|
+
// Slice attributes
|
|
987
|
+
Ice::Int _sliceSize;
|
|
988
|
+
std::string _typeId;
|
|
989
|
+
};
|
|
990
|
+
|
|
991
|
+
class ICE_API EncapsDecoder11 : public EncapsDecoder
|
|
992
|
+
{
|
|
993
|
+
public:
|
|
994
|
+
|
|
995
|
+
EncapsDecoder11(BasicStream* stream, ReadEncaps* encaps, bool sliceObjects, const ObjectFactoryManagerPtr& f) :
|
|
996
|
+
EncapsDecoder(stream, encaps, sliceObjects, f), _preAllocatedInstanceData(0), _current(0), _objectIdIndex(1)
|
|
997
|
+
{
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
virtual void read(PatchFunc, void*);
|
|
1001
|
+
virtual void throwException(const UserExceptionFactoryPtr&);
|
|
1002
|
+
|
|
1003
|
+
virtual void startInstance(SliceType);
|
|
1004
|
+
virtual Ice::SlicedDataPtr endInstance(bool);
|
|
1005
|
+
virtual const std::string& startSlice();
|
|
1006
|
+
virtual void endSlice();
|
|
1007
|
+
virtual void skipSlice();
|
|
1008
|
+
|
|
1009
|
+
virtual bool readOpt(Ice::Int, Ice::OptionalFormat);
|
|
1010
|
+
|
|
1011
|
+
private:
|
|
1012
|
+
|
|
1013
|
+
Ice::Int readInstance(Ice::Int, PatchFunc, void*);
|
|
1014
|
+
Ice::SlicedDataPtr readSlicedData();
|
|
1015
|
+
|
|
1016
|
+
struct IndirectPatchEntry
|
|
1017
|
+
{
|
|
1018
|
+
Ice::Int index;
|
|
1019
|
+
PatchFunc patchFunc;
|
|
1020
|
+
void* patchAddr;
|
|
1021
|
+
};
|
|
1022
|
+
typedef std::vector<IndirectPatchEntry> IndirectPatchList;
|
|
1023
|
+
|
|
1024
|
+
typedef std::vector<Ice::Int> IndexList;
|
|
1025
|
+
typedef std::vector<IndexList> IndexListList;
|
|
1026
|
+
|
|
1027
|
+
struct InstanceData
|
|
1028
|
+
{
|
|
1029
|
+
InstanceData(InstanceData* p) : previous(p), next(0)
|
|
1030
|
+
{
|
|
1031
|
+
if(previous)
|
|
1032
|
+
{
|
|
1033
|
+
previous->next = this;
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
~InstanceData()
|
|
1038
|
+
{
|
|
1039
|
+
if(next)
|
|
1040
|
+
{
|
|
1041
|
+
delete next;
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
// Instance attributes
|
|
1046
|
+
SliceType sliceType;
|
|
1047
|
+
bool skipFirstSlice;
|
|
1048
|
+
Ice::SliceInfoSeq slices; // Preserved slices.
|
|
1049
|
+
IndexListList indirectionTables;
|
|
1050
|
+
|
|
1051
|
+
// Slice attributes
|
|
1052
|
+
Ice::Byte sliceFlags;
|
|
1053
|
+
Ice::Int sliceSize;
|
|
1054
|
+
std::string typeId;
|
|
1055
|
+
int compactId;
|
|
1056
|
+
IndirectPatchList indirectPatchList;
|
|
1057
|
+
|
|
1058
|
+
InstanceData* previous;
|
|
1059
|
+
InstanceData* next;
|
|
1060
|
+
};
|
|
1061
|
+
InstanceData _preAllocatedInstanceData;
|
|
1062
|
+
InstanceData* _current;
|
|
1063
|
+
|
|
1064
|
+
void push(SliceType sliceType)
|
|
1065
|
+
{
|
|
1066
|
+
if(!_current)
|
|
1067
|
+
{
|
|
1068
|
+
_current = &_preAllocatedInstanceData;
|
|
1069
|
+
}
|
|
1070
|
+
else
|
|
1071
|
+
{
|
|
1072
|
+
_current = _current->next ? _current->next : new InstanceData(_current);
|
|
1073
|
+
}
|
|
1074
|
+
_current->sliceType = sliceType;
|
|
1075
|
+
_current->skipFirstSlice = false;
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
Ice::Int _objectIdIndex; // The ID of the next object to un-marshal.
|
|
1079
|
+
};
|
|
1080
|
+
|
|
1081
|
+
class ICE_API EncapsEncoder : private ::IceUtil::noncopyable
|
|
1082
|
+
{
|
|
1083
|
+
public:
|
|
1084
|
+
|
|
1085
|
+
virtual ~EncapsEncoder() { }
|
|
1086
|
+
|
|
1087
|
+
virtual void write(const Ice::ObjectPtr&) = 0;
|
|
1088
|
+
virtual void write(const Ice::UserException&) = 0;
|
|
1089
|
+
|
|
1090
|
+
virtual void startInstance(SliceType, const Ice::SlicedDataPtr&) = 0;
|
|
1091
|
+
virtual void endInstance() = 0;
|
|
1092
|
+
virtual void startSlice(const std::string&, int, bool) = 0;
|
|
1093
|
+
virtual void endSlice() = 0;
|
|
1094
|
+
|
|
1095
|
+
virtual bool writeOpt(Ice::Int, Ice::OptionalFormat)
|
|
1096
|
+
{
|
|
1097
|
+
return false;
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
virtual void writePendingObjects()
|
|
1101
|
+
{
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
protected:
|
|
1105
|
+
|
|
1106
|
+
EncapsEncoder(BasicStream* stream, WriteEncaps* encaps) : _stream(stream), _encaps(encaps), _typeIdIndex(0)
|
|
1107
|
+
{
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
Ice::Int registerTypeId(const std::string&);
|
|
1111
|
+
|
|
1112
|
+
BasicStream* _stream;
|
|
1113
|
+
WriteEncaps* _encaps;
|
|
1114
|
+
|
|
1115
|
+
typedef std::map<Ice::ObjectPtr, Ice::Int> PtrToIndexMap;
|
|
1116
|
+
typedef std::map<std::string, Ice::Int> TypeIdWriteMap;
|
|
1117
|
+
|
|
1118
|
+
// Encapsulation attributes for object marshalling.
|
|
1119
|
+
PtrToIndexMap _marshaledMap;
|
|
1120
|
+
|
|
1121
|
+
private:
|
|
1122
|
+
|
|
1123
|
+
// Encapsulation attributes for object marshalling.
|
|
1124
|
+
TypeIdWriteMap _typeIdMap;
|
|
1125
|
+
Ice::Int _typeIdIndex;
|
|
1126
|
+
};
|
|
1127
|
+
|
|
1128
|
+
class ICE_API EncapsEncoder10 : public EncapsEncoder
|
|
1129
|
+
{
|
|
1130
|
+
public:
|
|
1131
|
+
|
|
1132
|
+
EncapsEncoder10(BasicStream* stream, WriteEncaps* encaps) :
|
|
1133
|
+
EncapsEncoder(stream, encaps), _sliceType(NoSlice), _objectIdIndex(0)
|
|
1134
|
+
{
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
virtual void write(const Ice::ObjectPtr&);
|
|
1138
|
+
virtual void write(const Ice::UserException&);
|
|
1139
|
+
|
|
1140
|
+
virtual void startInstance(SliceType, const Ice::SlicedDataPtr&);
|
|
1141
|
+
virtual void endInstance();
|
|
1142
|
+
virtual void startSlice(const std::string&, int, bool);
|
|
1143
|
+
virtual void endSlice();
|
|
1144
|
+
|
|
1145
|
+
virtual void writePendingObjects();
|
|
1146
|
+
|
|
1147
|
+
private:
|
|
1148
|
+
|
|
1149
|
+
Ice::Int registerObject(const Ice::ObjectPtr&);
|
|
1150
|
+
|
|
1151
|
+
// Instance attributes
|
|
1152
|
+
SliceType _sliceType;
|
|
1153
|
+
|
|
1154
|
+
// Slice attributes
|
|
1155
|
+
Container::size_type _writeSlice; // Position of the slice data members
|
|
1156
|
+
|
|
1157
|
+
// Encapsulation attributes for object marshalling.
|
|
1158
|
+
Ice::Int _objectIdIndex;
|
|
1159
|
+
PtrToIndexMap _toBeMarshaledMap;
|
|
1160
|
+
};
|
|
1161
|
+
|
|
1162
|
+
class ICE_API EncapsEncoder11 : public EncapsEncoder
|
|
1163
|
+
{
|
|
1164
|
+
public:
|
|
1165
|
+
|
|
1166
|
+
EncapsEncoder11(BasicStream* stream, WriteEncaps* encaps) :
|
|
1167
|
+
EncapsEncoder(stream, encaps), _preAllocatedInstanceData(0), _current(0), _objectIdIndex(1)
|
|
1168
|
+
{
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
virtual void write(const Ice::ObjectPtr&);
|
|
1172
|
+
virtual void write(const Ice::UserException&);
|
|
1173
|
+
|
|
1174
|
+
virtual void startInstance(SliceType, const Ice::SlicedDataPtr&);
|
|
1175
|
+
virtual void endInstance();
|
|
1176
|
+
virtual void startSlice(const std::string&, int, bool);
|
|
1177
|
+
virtual void endSlice();
|
|
1178
|
+
|
|
1179
|
+
virtual bool writeOpt(Ice::Int, Ice::OptionalFormat);
|
|
1180
|
+
|
|
1181
|
+
private:
|
|
1182
|
+
|
|
1183
|
+
void writeSlicedData(const Ice::SlicedDataPtr&);
|
|
1184
|
+
void writeInstance(const Ice::ObjectPtr&);
|
|
1185
|
+
|
|
1186
|
+
struct InstanceData
|
|
1187
|
+
{
|
|
1188
|
+
InstanceData(InstanceData* p) : previous(p), next(0)
|
|
1189
|
+
{
|
|
1190
|
+
if(previous)
|
|
1191
|
+
{
|
|
1192
|
+
previous->next = this;
|
|
1193
|
+
}
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
~InstanceData()
|
|
1197
|
+
{
|
|
1198
|
+
if(next)
|
|
1199
|
+
{
|
|
1200
|
+
delete next;
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
// Instance attributes
|
|
1205
|
+
SliceType sliceType;
|
|
1206
|
+
bool firstSlice;
|
|
1207
|
+
|
|
1208
|
+
// Slice attributes
|
|
1209
|
+
Ice::Byte sliceFlags;
|
|
1210
|
+
Container::size_type writeSlice; // Position of the slice data members
|
|
1211
|
+
Container::size_type sliceFlagsPos; // Position of the slice flags
|
|
1212
|
+
PtrToIndexMap indirectionMap;
|
|
1213
|
+
ObjectList indirectionTable;
|
|
1214
|
+
|
|
1215
|
+
InstanceData* previous;
|
|
1216
|
+
InstanceData* next;
|
|
1217
|
+
};
|
|
1218
|
+
InstanceData _preAllocatedInstanceData;
|
|
1219
|
+
InstanceData* _current;
|
|
1220
|
+
|
|
1221
|
+
Ice::Int _objectIdIndex; // The ID of the next object to marhsal
|
|
1222
|
+
};
|
|
1223
|
+
|
|
1224
|
+
class ReadEncaps : private ::IceUtil::noncopyable
|
|
1225
|
+
{
|
|
1226
|
+
public:
|
|
1227
|
+
|
|
1228
|
+
ReadEncaps() : start(0), decoder(0), previous(0)
|
|
1229
|
+
{
|
|
1230
|
+
// Inlined for performance reasons.
|
|
1231
|
+
}
|
|
1232
|
+
~ReadEncaps()
|
|
1233
|
+
{
|
|
1234
|
+
// Inlined for performance reasons.
|
|
1235
|
+
delete decoder;
|
|
1236
|
+
}
|
|
1237
|
+
void reset()
|
|
1238
|
+
{
|
|
1239
|
+
// Inlined for performance reasons.
|
|
1240
|
+
delete decoder;
|
|
1241
|
+
decoder = 0;
|
|
1242
|
+
|
|
1243
|
+
previous = 0;
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1246
|
+
Container::size_type start;
|
|
1247
|
+
Ice::Int sz;
|
|
1248
|
+
Ice::EncodingVersion encoding;
|
|
1249
|
+
|
|
1250
|
+
EncapsDecoder* decoder;
|
|
1251
|
+
|
|
1252
|
+
ReadEncaps* previous;
|
|
1253
|
+
};
|
|
1254
|
+
|
|
1255
|
+
class WriteEncaps : private ::IceUtil::noncopyable
|
|
1256
|
+
{
|
|
1257
|
+
|
|
1258
|
+
public:
|
|
1259
|
+
|
|
1260
|
+
WriteEncaps() : format(Ice::DefaultFormat), encoder(0), previous(0)
|
|
1261
|
+
{
|
|
1262
|
+
// Inlined for performance reasons.
|
|
1263
|
+
}
|
|
1264
|
+
~WriteEncaps()
|
|
1265
|
+
{
|
|
1266
|
+
// Inlined for performance reasons.
|
|
1267
|
+
delete encoder;
|
|
1268
|
+
}
|
|
1269
|
+
void reset()
|
|
1270
|
+
{
|
|
1271
|
+
// Inlined for performance reasons.
|
|
1272
|
+
delete encoder;
|
|
1273
|
+
encoder = 0;
|
|
1274
|
+
|
|
1275
|
+
previous = 0;
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
Container::size_type start;
|
|
1279
|
+
Ice::EncodingVersion encoding;
|
|
1280
|
+
Ice::FormatType format;
|
|
1281
|
+
|
|
1282
|
+
EncapsEncoder* encoder;
|
|
1283
|
+
|
|
1284
|
+
WriteEncaps* previous;
|
|
1285
|
+
};
|
|
1286
|
+
|
|
1287
|
+
//
|
|
1288
|
+
// The encoding version to use when there's no encapsulation to
|
|
1289
|
+
// read from or write to. This is for example used to read message
|
|
1290
|
+
// headers or when the user is using the streaming API with no
|
|
1291
|
+
// encapsulation.
|
|
1292
|
+
//
|
|
1293
|
+
Ice::EncodingVersion _encoding;
|
|
1294
|
+
|
|
1295
|
+
ReadEncaps* _currentReadEncaps;
|
|
1296
|
+
WriteEncaps* _currentWriteEncaps;
|
|
1297
|
+
|
|
1298
|
+
void initReadEncaps();
|
|
1299
|
+
void initWriteEncaps();
|
|
1300
|
+
|
|
1301
|
+
ReadEncaps _preAllocatedReadEncaps;
|
|
1302
|
+
WriteEncaps _preAllocatedWriteEncaps;
|
|
1303
|
+
|
|
1304
|
+
bool _sliceObjects;
|
|
1305
|
+
|
|
1306
|
+
const IceUtil::StringConverterPtr _stringConverter;
|
|
1307
|
+
const IceUtil::WstringConverterPtr _wstringConverter;
|
|
1308
|
+
|
|
1309
|
+
int _startSeq;
|
|
1310
|
+
int _minSeqSize;
|
|
1311
|
+
};
|
|
1312
|
+
|
|
1313
|
+
} // End namespace IceInternal
|
|
1314
|
+
|
|
1315
|
+
#endif
|