zeroc-ice 3.6.5 → 3.7.0
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 +4 -4
- data/BZIP2_LICENSE +42 -0
- data/ICE_LICENSE +17 -17
- data/LICENSE +12 -12
- data/bin/slice2rb +1 -1
- data/ext/Communicator.cpp +150 -53
- data/ext/Communicator.h +1 -1
- data/ext/Config.h +2 -12
- data/ext/Connection.cpp +89 -68
- data/ext/Connection.h +1 -1
- data/ext/Endpoint.cpp +16 -45
- data/ext/Endpoint.h +1 -1
- data/ext/ImplicitContext.cpp +1 -5
- data/ext/ImplicitContext.h +1 -1
- data/ext/Init.cpp +4 -1
- data/ext/Logger.cpp +1 -1
- data/ext/Logger.h +1 -1
- data/ext/Operation.cpp +33 -44
- data/ext/Operation.h +1 -1
- data/ext/Properties.cpp +1 -1
- data/ext/Properties.h +1 -1
- data/ext/Proxy.cpp +22 -57
- data/ext/Proxy.h +1 -1
- data/ext/Slice.cpp +5 -5
- data/ext/Slice.h +1 -1
- data/ext/Types.cpp +244 -171
- data/ext/Types.h +118 -66
- data/ext/Util.cpp +13 -9
- data/ext/Util.h +10 -10
- data/ext/ValueFactoryManager.cpp +445 -0
- data/ext/ValueFactoryManager.h +100 -0
- data/ext/extconf.rb +47 -45
- 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/Application.h +77 -60
- data/ext/ice/cpp/include/Ice/AsyncResult.h +34 -318
- data/ext/ice/cpp/include/Ice/AsyncResultF.h +4 -2
- data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +5 -10
- data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
- data/ext/ice/cpp/include/Ice/Buffer.h +10 -10
- data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +14 -12
- data/ext/ice/cpp/include/Ice/Comparable.h +130 -0
- data/ext/ice/cpp/include/Ice/Config.h +7 -36
- data/ext/ice/cpp/include/Ice/ConnectionAsync.h +107 -11
- data/ext/ice/cpp/include/Ice/ConnectionIF.h +5 -1
- data/ext/ice/cpp/include/Ice/ConsoleUtil.h +28 -0
- data/ext/ice/cpp/include/Ice/{DefaultObjectFactory.h → DefaultValueFactory.h} +28 -14
- data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +4 -6
- data/ext/ice/cpp/include/Ice/Dispatcher.h +14 -13
- data/ext/ice/cpp/include/Ice/DynamicLibrary.h +7 -5
- data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
- data/ext/ice/cpp/include/Ice/Exception.h +66 -56
- data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +69 -0
- data/ext/ice/cpp/include/Ice/FactoryTable.h +11 -12
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +27 -25
- data/ext/ice/cpp/include/Ice/Format.h +6 -1
- data/ext/ice/cpp/include/Ice/Functional.h +33 -33
- data/ext/ice/cpp/include/Ice/GCObject.h +9 -5
- data/ext/ice/cpp/include/Ice/Handle.h +6 -11
- data/ext/ice/cpp/include/Ice/Ice.h +9 -5
- data/ext/ice/cpp/include/{IceUtil → Ice}/IconvStringConverter.h +108 -62
- data/ext/ice/cpp/include/Ice/Incoming.h +109 -33
- data/ext/ice/cpp/include/Ice/IncomingAsync.h +63 -23
- data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +7 -1
- data/ext/ice/cpp/include/Ice/Initialize.h +178 -38
- data/ext/ice/cpp/include/Ice/InputStream.h +994 -0
- data/ext/ice/cpp/include/Ice/InstanceF.h +1 -2
- data/ext/ice/cpp/include/Ice/InterfaceByValue.h +46 -0
- data/ext/ice/cpp/include/Ice/LocalObject.h +9 -9
- data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
- data/ext/ice/cpp/include/Ice/LoggerUtil.h +20 -14
- data/ext/ice/cpp/include/Ice/MetricsAdminI.h +114 -65
- data/ext/ice/cpp/include/Ice/MetricsFunctional.h +23 -5
- data/ext/ice/cpp/include/Ice/MetricsObserverI.h +99 -26
- data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +17 -4
- data/ext/ice/cpp/include/Ice/Object.h +105 -56
- data/ext/ice/cpp/include/Ice/ObjectF.h +8 -3
- data/ext/ice/cpp/include/Ice/ObserverHelper.h +18 -8
- data/ext/ice/cpp/include/Ice/Optional.h +1084 -0
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +655 -84
- data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +12 -6
- data/ext/ice/cpp/include/Ice/OutputStream.h +753 -0
- data/ext/ice/cpp/include/Ice/Protocol.h +19 -12
- data/ext/ice/cpp/include/Ice/Proxy.h +1329 -717
- data/ext/ice/cpp/include/Ice/ProxyF.h +11 -33
- data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
- data/ext/ice/cpp/include/Ice/ProxyHandle.h +34 -50
- data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
- data/ext/ice/cpp/include/Ice/RegisterPlugins.h +22 -3
- data/ext/ice/cpp/include/Ice/RequestHandlerF.h +10 -4
- data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +6 -1
- data/ext/ice/cpp/include/{IceUtil → Ice}/SHA1.h +16 -16
- data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
- data/ext/ice/cpp/include/Ice/Service.h +13 -18
- data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
- data/ext/ice/cpp/include/Ice/SlicedData.h +46 -20
- data/ext/ice/cpp/include/Ice/SlicedDataF.h +14 -6
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +159 -49
- data/ext/ice/cpp/include/Ice/StringConverter.h +52 -0
- data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
- data/{slice/Ice/ObjectFactoryF.ice → ext/ice/cpp/include/Ice/UUID.h} +9 -7
- data/ext/ice/cpp/include/{IceUtil → Ice}/UniquePtr.h +21 -22
- data/ext/ice/cpp/include/Ice/UniqueRef.h +98 -0
- data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +40 -8
- data/ext/ice/cpp/include/Ice/Value.h +104 -0
- data/{slice/Freeze/ConnectionF.ice → ext/ice/cpp/include/Ice/ValueF.h} +11 -7
- data/ext/ice/cpp/include/IceSSL/Config.h +8 -23
- data/ext/ice/cpp/include/IceSSL/IceSSL.h +17 -6
- data/ext/ice/cpp/include/IceSSL/OpenSSL.h +130 -0
- data/ext/ice/cpp/include/IceSSL/Plugin.h +172 -259
- data/ext/ice/cpp/include/IceSSL/SChannel.h +66 -0
- data/ext/ice/cpp/include/IceSSL/SecureTransport.h +66 -0
- data/ext/ice/cpp/include/IceSSL/UWP.h +58 -0
- data/ext/ice/cpp/include/IceUtil/Atomic.h +8 -10
- data/ext/ice/cpp/include/IceUtil/Cond.h +17 -18
- data/ext/ice/cpp/include/IceUtil/Config.h +138 -39
- data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +97 -0
- data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +5 -5
- data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +23 -17
- data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -3
- data/ext/ice/cpp/include/IceUtil/Exception.h +157 -67
- data/ext/ice/cpp/include/IceUtil/FileUtil.h +148 -0
- data/ext/ice/cpp/include/IceUtil/Functional.h +1 -2
- data/ext/ice/cpp/include/IceUtil/Handle.h +11 -11
- data/ext/ice/cpp/include/IceUtil/IceUtil.h +4 -10
- data/ext/ice/cpp/include/IceUtil/InputUtil.h +3 -3
- data/ext/ice/cpp/include/IceUtil/Iterator.h +2 -2
- data/ext/ice/cpp/include/IceUtil/Lock.h +8 -10
- data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -2
- data/ext/ice/cpp/include/IceUtil/Mutex.h +17 -11
- data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +2 -2
- data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
- data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +4 -4
- data/ext/ice/cpp/include/IceUtil/Optional.h +32 -18
- data/ext/ice/cpp/include/IceUtil/Options.h +17 -18
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +55 -29
- data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +6 -6
- data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +11 -10
- data/ext/ice/cpp/include/IceUtil/Random.h +3 -3
- data/ext/ice/cpp/include/IceUtil/RecMutex.h +7 -8
- data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +58 -0
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +1 -9
- data/ext/ice/cpp/include/IceUtil/ScopedArray.h +8 -2
- data/ext/ice/cpp/include/IceUtil/Shared.h +5 -7
- data/ext/ice/cpp/{src → include}/IceUtil/StopWatch.h +2 -2
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +77 -72
- data/ext/ice/cpp/include/IceUtil/StringUtil.h +32 -21
- data/ext/ice/cpp/include/IceUtil/Thread.h +10 -12
- data/ext/ice/cpp/include/IceUtil/ThreadException.h +33 -42
- data/ext/ice/cpp/include/IceUtil/Time.h +3 -3
- data/ext/ice/cpp/include/IceUtil/Timer.h +14 -13
- data/ext/ice/cpp/include/IceUtil/UUID.h +2 -2
- data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
- data/ext/ice/cpp/include/{Ice → generated/Ice}/BuiltinSequences.h +41 -8
- data/ext/ice/cpp/include/generated/Ice/Communicator.h +364 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/CommunicatorF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Connection.h +872 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ConnectionF.h +46 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Current.h +71 -8
- data/ext/ice/cpp/include/generated/Ice/Endpoint.h +582 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointF.h +62 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointTypes.h +31 -16
- data/ext/ice/cpp/include/{Ice → generated/Ice}/FacetMap.h +23 -8
- data/ext/ice/cpp/include/generated/Ice/Identity.h +221 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContext.h +72 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContextF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +602 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/InstrumentationF.h +54 -8
- data/ext/ice/cpp/include/generated/Ice/LocalException.h +2802 -0
- data/ext/ice/cpp/include/generated/Ice/Locator.h +2036 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/LocatorF.h +53 -12
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Logger.h +71 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/LoggerF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Metrics.h +2649 -0
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +302 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ObjectAdapterF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +142 -0
- data/ext/ice/cpp/include/generated/Ice/Plugin.h +197 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/PluginF.h +43 -8
- data/ext/ice/cpp/include/generated/Ice/Process.h +536 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ProcessF.h +45 -10
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Properties.h +88 -21
- data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +749 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/PropertiesF.h +48 -10
- data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1449 -0
- data/ext/ice/cpp/include/generated/Ice/Router.h +1032 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/RouterF.h +45 -10
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocator.h +65 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocatorF.h +40 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/SliceChecksumDict.h +23 -8
- data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +169 -0
- data/ext/ice/cpp/include/generated/Ice/Version.h +334 -0
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +172 -0
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +98 -0
- data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +156 -0
- data/ext/ice/cpp/src/Ice/ACM.cpp +18 -14
- data/ext/ice/cpp/src/Ice/ACM.h +9 -2
- data/ext/ice/cpp/{include → src}/Ice/ACMF.h +10 -5
- data/ext/ice/cpp/src/Ice/Acceptor.cpp +6 -1
- data/ext/ice/cpp/src/Ice/Acceptor.h +4 -3
- data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.cpp +9 -9
- data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.h +7 -7
- data/ext/ice/cpp/src/Ice/AsyncResult.cpp +15 -538
- data/ext/ice/cpp/src/Ice/Base64.cpp +11 -11
- data/ext/ice/cpp/src/Ice/Base64.h +1 -1
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +40 -12
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +15 -10
- data/ext/ice/cpp/src/Ice/Buffer.cpp +74 -12
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +20 -6
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +85 -190
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +17 -18
- data/ext/ice/cpp/src/Ice/Communicator.cpp +39 -8
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +271 -104
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +84 -28
- data/ext/ice/cpp/src/{IceUtil → Ice}/Cond.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +58 -125
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +11 -22
- data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +6 -2
- data/ext/ice/cpp/src/Ice/Connection.cpp +88 -8
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +158 -80
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +41 -23
- data/ext/ice/cpp/{include → src}/Ice/ConnectionFactoryF.h +8 -3
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +707 -653
- data/ext/ice/cpp/src/Ice/ConnectionI.h +97 -69
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +2 -15
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +4 -3
- data/ext/ice/cpp/src/Ice/Connector.cpp +6 -1
- data/ext/ice/cpp/src/Ice/Connector.h +4 -3
- data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/CountDownLatch.cpp +4 -4
- data/ext/ice/cpp/src/Ice/Current.cpp +29 -6
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +6 -5
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
- data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +5 -25
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +29 -19
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +85 -6
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +152 -1
- data/ext/ice/cpp/src/Ice/EndpointFactory.h +72 -6
- data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +35 -19
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +10 -4
- data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointI.cpp +17 -1
- data/ext/ice/cpp/src/Ice/EndpointI.h +35 -9
- data/ext/ice/cpp/src/Ice/EndpointIF.h +18 -5
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +18 -6
- data/ext/ice/cpp/src/Ice/EventHandler.cpp +6 -4
- data/ext/ice/cpp/src/Ice/EventHandler.h +13 -8
- data/ext/ice/cpp/src/Ice/EventHandlerF.h +5 -2
- data/ext/ice/cpp/src/Ice/Exception.cpp +95 -86
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +20 -6
- data/ext/ice/cpp/src/Ice/FactoryTable.cpp +37 -28
- data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -4
- data/ext/ice/cpp/src/Ice/GCObject.cpp +28 -25
- data/ext/ice/cpp/src/Ice/HashUtil.h +2 -3
- data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -2
- data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +92 -53
- data/ext/ice/cpp/src/Ice/IPEndpointI.h +19 -10
- data/ext/ice/cpp/src/Ice/IPEndpointIF.h +6 -2
- data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +56 -0
- data/ext/ice/cpp/src/Ice/Identity.cpp +24 -10
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +14 -14
- data/ext/ice/cpp/src/Ice/ImplicitContextI.h +7 -5
- data/ext/ice/cpp/src/Ice/Incoming.cpp +276 -245
- data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +104 -209
- data/ext/ice/cpp/src/Ice/IncomingRequest.h +5 -4
- data/ext/ice/cpp/src/Ice/Initialize.cpp +299 -172
- data/ext/ice/cpp/src/Ice/InputStream.cpp +2773 -0
- data/ext/ice/cpp/src/Ice/Instance.cpp +191 -231
- data/ext/ice/cpp/src/Ice/Instance.h +30 -18
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +106 -7
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +117 -99
- data/ext/ice/cpp/src/Ice/InstrumentationI.h +30 -31
- data/ext/ice/cpp/src/Ice/LocalException.cpp +1190 -416
- data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Locator.cpp +1167 -1215
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +129 -163
- data/ext/ice/cpp/src/Ice/LocatorInfo.h +29 -29
- data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
- data/ext/ice/cpp/src/Ice/Logger.cpp +35 -5
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +178 -73
- data/ext/ice/cpp/src/Ice/LoggerAdminI.h +4 -4
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +14 -44
- data/ext/ice/cpp/src/Ice/LoggerI.h +7 -13
- data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +10 -12
- data/ext/ice/cpp/src/Ice/Metrics.cpp +1059 -1069
- data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +49 -19
- data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Network.cpp +534 -170
- data/ext/ice/cpp/src/Ice/Network.h +100 -23
- data/ext/ice/cpp/src/Ice/NetworkF.h +2 -2
- data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +21 -14
- data/ext/ice/cpp/src/Ice/NetworkProxy.h +5 -2
- data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
- data/ext/ice/cpp/src/Ice/Object.cpp +217 -221
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -6
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +35 -14
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +13 -7
- data/ext/ice/cpp/{include → src}/Ice/ObjectAdapterFactoryF.h +5 -1
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +184 -58
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +32 -26
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +9 -32
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +40 -18
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +14 -5
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +803 -365
- data/ext/ice/cpp/src/Ice/OutputStream.cpp +1399 -0
- data/ext/ice/cpp/src/Ice/Plugin.cpp +45 -6
- data/ext/ice/cpp/src/Ice/PluginF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +13 -13
- data/ext/ice/cpp/src/Ice/PluginManagerI.h +5 -6
- data/ext/ice/cpp/src/Ice/Process.cpp +256 -114
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/Properties.cpp +38 -8
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +340 -328
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +81 -17
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +29 -5
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/PropertiesI.cpp +25 -26
- data/ext/ice/cpp/src/Ice/PropertiesI.h +8 -11
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +107 -50
- data/ext/ice/cpp/src/Ice/PropertyNames.h +4 -2
- data/ext/ice/cpp/src/Ice/Protocol.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +37 -2
- data/ext/ice/cpp/src/Ice/ProtocolInstance.h +9 -20
- data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +6 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +3 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
- data/ext/ice/cpp/src/Ice/Proxy.cpp +690 -964
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +23 -32
- data/ext/ice/cpp/src/Ice/ProxyFactory.h +16 -11
- data/ext/ice/cpp/src/Ice/Reference.cpp +75 -69
- data/ext/ice/cpp/src/Ice/Reference.h +27 -22
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +18 -21
- data/ext/ice/cpp/src/Ice/ReferenceFactory.h +12 -12
- data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +18 -4
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +672 -552
- data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
- data/ext/ice/cpp/src/Ice/RequestHandler.cpp +5 -3
- data/ext/ice/cpp/src/Ice/RequestHandler.h +10 -13
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +10 -6
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +2 -2
- data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +3 -6
- data/ext/ice/cpp/src/Ice/ResponseHandler.h +16 -7
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +6 -12
- data/ext/ice/cpp/src/Ice/RetryQueue.h +7 -6
- data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
- data/ext/ice/cpp/src/Ice/Router.cpp +523 -474
- data/ext/ice/cpp/src/Ice/RouterF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/RouterInfo.cpp +91 -70
- data/ext/ice/cpp/src/Ice/RouterInfo.h +43 -32
- data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/SHA1.cpp +21 -21
- data/ext/ice/cpp/src/Ice/Selector.cpp +989 -923
- data/ext/ice/cpp/src/Ice/Selector.h +100 -147
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ServantManager.cpp +9 -9
- data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
- data/ext/ice/cpp/src/Ice/SharedContext.h +2 -2
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +20 -6
- data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +2 -2
- data/ext/ice/cpp/src/Ice/SlicedData.cpp +72 -20
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +173 -18
- data/ext/ice/cpp/src/Ice/StreamSocket.h +13 -4
- data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +48 -17
- data/ext/ice/cpp/src/Ice/StringUtil.h +35 -0
- data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +8 -4
- data/ext/ice/cpp/src/Ice/SysLoggerI.h +2 -3
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +158 -32
- data/ext/ice/cpp/src/Ice/TcpAcceptor.h +12 -5
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -7
- data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -2
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +40 -32
- data/ext/ice/cpp/src/Ice/TcpEndpointI.h +11 -8
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +12 -27
- data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -10
- data/ext/ice/cpp/src/{IceUtil → Ice}/Thread.cpp +24 -41
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +175 -267
- data/ext/ice/cpp/src/Ice/ThreadPool.h +38 -43
- data/ext/ice/cpp/src/{IceUtil → Ice}/Timer.cpp +28 -21
- data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
- data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
- data/ext/ice/cpp/src/Ice/TraceLevelsF.h +2 -2
- data/ext/ice/cpp/src/Ice/TraceUtil.cpp +53 -31
- data/ext/ice/cpp/src/Ice/TraceUtil.h +13 -6
- data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Transceiver.h +8 -7
- data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
- data/ext/ice/cpp/src/Ice/UdpConnector.cpp +2 -8
- data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -2
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +92 -31
- data/ext/ice/cpp/src/Ice/UdpEndpointI.h +12 -4
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +150 -179
- data/ext/ice/cpp/src/Ice/UdpTransceiver.h +15 -17
- data/ext/ice/cpp/src/Ice/Value.cpp +81 -0
- data/ext/ice/cpp/src/Ice/ValueFactory.cpp +84 -0
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +70 -0
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +42 -0
- data/ext/ice/cpp/src/Ice/Version.cpp +24 -14
- data/ext/ice/cpp/src/Ice/VirtualShared.h +43 -0
- data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +3 -9
- data/ext/ice/cpp/src/Ice/WSAcceptor.h +3 -7
- data/ext/ice/cpp/src/Ice/WSConnector.cpp +5 -11
- data/ext/ice/cpp/src/Ice/WSConnector.h +3 -6
- data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +185 -80
- data/ext/ice/cpp/src/Ice/WSEndpoint.h +21 -31
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +41 -37
- data/ext/ice/cpp/src/Ice/WSTransceiver.h +7 -21
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +526 -264
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +341 -455
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +86 -26
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +59 -23
- data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +315 -61
- data/ext/ice/cpp/src/IceDiscovery/LookupI.h +83 -36
- data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +57 -59
- data/ext/ice/cpp/src/IceDiscovery/PluginI.h +3 -3
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +396 -159
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +251 -355
- data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +52 -0
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +526 -131
- data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +19 -165
- data/ext/ice/cpp/src/IceSSL/AcceptorI.h +8 -17
- data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +284 -0
- data/ext/ice/cpp/src/IceSSL/CertificateI.h +69 -0
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +39 -11
- data/ext/ice/cpp/src/{Ice/ObjectFactoryF.cpp → IceSSL/ConnectionInfoF.cpp} +31 -9
- data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +14 -56
- data/ext/ice/cpp/src/IceSSL/ConnectorI.h +6 -13
- data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +205 -197
- data/ext/ice/cpp/src/IceSSL/EndpointI.h +41 -33
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +39 -10
- data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
- data/ext/ice/cpp/src/IceSSL/Instance.h +7 -7
- data/ext/ice/cpp/src/IceSSL/InstanceF.h +11 -7
- data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +588 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +117 -152
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +64 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +32 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +132 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +400 -89
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +36 -21
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +291 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +63 -0
- data/ext/ice/cpp/src/IceSSL/PluginI.cpp +71 -41
- data/ext/ice/cpp/src/IceSSL/PluginI.h +13 -18
- data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +9 -54
- data/ext/ice/cpp/src/IceSSL/RFC2253.h +7 -7
- data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +585 -0
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +491 -75
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +126 -0
- data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +32 -0
- data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +78 -0
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +126 -169
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +19 -22
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +79 -74
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +24 -187
- data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +4 -19
- data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +862 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +56 -214
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +60 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +31 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +80 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +137 -144
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +25 -28
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +857 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +46 -0
- data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +9 -13
- data/ext/ice/cpp/src/IceSSL/TrustManager.h +4 -4
- data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +3 -3
- data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +271 -0
- data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +343 -0
- data/ext/ice/cpp/src/IceSSL/UWPEngine.h +46 -0
- data/ext/ice/cpp/{include/Ice/ObjectFactoryManagerF.h → src/IceSSL/UWPEngineF.h} +13 -8
- data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +94 -0
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +388 -0
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +76 -0
- data/ext/ice/cpp/src/IceSSL/Util.cpp +66 -1256
- data/ext/ice/cpp/src/IceSSL/Util.h +48 -137
- data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +162 -0
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +22 -22
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +34 -26
- data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +20 -31
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +25 -116
- data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Options.cpp +23 -46
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +7 -6
- data/ext/ice/cpp/src/IceUtil/Random.cpp +13 -13
- data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +3 -9
- data/ext/ice/cpp/src/IceUtil/Shared.cpp +8 -3
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +501 -264
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +540 -235
- data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +37 -74
- data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +10 -10
- data/ext/ice/cpp/src/IceUtil/Unicode.cpp +98 -97
- data/ext/ice/cpp/src/IceUtil/Unicode.h +21 -35
- data/ext/ice/cpp/src/IceUtil/UtilException.cpp +838 -0
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +815 -163
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +76 -0
- data/ext/ice/cpp/src/Slice/Checksum.cpp +2 -2
- data/ext/ice/cpp/{include → src}/Slice/Checksum.h +2 -2
- data/ext/ice/cpp/src/Slice/FileTracker.cpp +25 -78
- data/ext/ice/cpp/{include → src}/Slice/FileTracker.h +9 -9
- data/ext/ice/cpp/src/Slice/Grammar.cpp +1994 -1943
- data/ext/ice/cpp/src/Slice/Grammar.h +44 -24
- data/ext/ice/cpp/src/Slice/GrammarUtil.h +14 -14
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +2658 -1927
- data/ext/ice/cpp/{include → src}/Slice/JavaUtil.h +178 -59
- data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
- data/ext/ice/cpp/src/Slice/MD5.h +1 -1
- data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -1
- data/ext/ice/cpp/src/Slice/MD5I.h +1 -1
- data/ext/ice/cpp/src/Slice/PHPUtil.cpp +12 -15
- data/ext/ice/cpp/{include → src}/Slice/PHPUtil.h +6 -15
- data/ext/ice/cpp/src/Slice/Parser.cpp +802 -307
- data/ext/ice/cpp/{include → src}/Slice/Parser.h +76 -84
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +43 -21
- data/ext/ice/cpp/{include → src}/Slice/Preprocessor.h +7 -12
- data/ext/ice/cpp/src/Slice/Python.cpp +207 -86
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +683 -679
- data/ext/ice/cpp/{include → src}/Slice/PythonUtil.h +19 -8
- data/ext/ice/cpp/src/Slice/Ruby.cpp +38 -34
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +177 -445
- data/ext/ice/cpp/{include → src}/Slice/RubyUtil.h +6 -6
- data/ext/ice/cpp/src/Slice/Scanner.cpp +218 -306
- data/ext/ice/cpp/src/Slice/{Util.cpp → SliceUtil.cpp} +37 -64
- data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +374 -0
- data/ext/ice/cpp/src/Slice/Util.h +54 -0
- data/ext/ice/mcpp/Makefile +5 -2
- data/ice.gemspec +2 -7
- data/lib/Glacier2.rb +1 -1
- data/lib/Glacier2/Metrics.rb +7 -46
- data/lib/Glacier2/PermissionsVerifier.rb +24 -95
- data/lib/Glacier2/PermissionsVerifierF.rb +3 -3
- data/lib/Glacier2/Router.rb +32 -74
- data/lib/Glacier2/RouterF.rb +3 -3
- data/lib/Glacier2/SSLInfo.rb +4 -7
- data/lib/Glacier2/Session.rb +88 -307
- data/lib/Ice.rb +83 -52
- data/lib/Ice/BuiltinSequences.rb +4 -4
- data/lib/Ice/Communicator.rb +56 -58
- data/lib/Ice/CommunicatorF.rb +3 -3
- data/lib/Ice/Connection.rb +153 -162
- data/lib/Ice/ConnectionF.rb +3 -3
- data/lib/Ice/Current.rb +4 -11
- data/lib/Ice/Endpoint.rb +57 -133
- data/lib/Ice/EndpointF.rb +3 -3
- data/lib/Ice/EndpointTypes.rb +3 -7
- data/lib/Ice/FacetMap.rb +4 -4
- data/lib/Ice/Identity.rb +5 -8
- data/lib/Ice/ImplicitContext.rb +5 -34
- data/lib/Ice/ImplicitContextF.rb +3 -3
- data/lib/Ice/Instrumentation.rb +23 -275
- data/lib/Ice/InstrumentationF.rb +3 -3
- data/lib/Ice/LocalException.rb +95 -141
- data/lib/Ice/Locator.rb +51 -165
- data/lib/Ice/LocatorF.rb +3 -3
- data/lib/Ice/Logger.rb +5 -34
- data/lib/Ice/LoggerF.rb +3 -3
- data/lib/Ice/Metrics.rb +61 -416
- data/lib/Ice/ObjectAdapter.rb +34 -0
- data/lib/Ice/ObjectAdapterF.rb +3 -3
- data/lib/Ice/ObjectFactory.rb +5 -30
- data/lib/Ice/Plugin.rb +7 -60
- data/lib/Ice/PluginF.rb +3 -3
- data/lib/Ice/Process.rb +16 -52
- data/lib/Ice/ProcessF.rb +3 -3
- data/lib/Ice/Properties.rb +5 -41
- data/lib/Ice/PropertiesAdmin.rb +19 -56
- data/lib/Ice/PropertiesF.rb +3 -3
- data/lib/Ice/RemoteLogger.rb +34 -115
- data/lib/Ice/Router.rb +29 -101
- data/lib/Ice/RouterF.rb +3 -3
- data/lib/Ice/ServantLocator.rb +31 -0
- data/lib/Ice/{ObjectFactoryF.rb → ServantLocatorF.rb} +6 -6
- data/lib/Ice/SliceChecksumDict.rb +3 -3
- data/lib/Ice/ValueFactory.rb +33 -0
- data/lib/Ice/Version.rb +5 -11
- data/lib/IceBox.rb +1 -1
- data/lib/IceBox/IceBox.rb +44 -148
- data/lib/IceGrid.rb +1 -4
- data/lib/IceGrid/Admin.rb +551 -427
- data/lib/IceGrid/Descriptor.rb +62 -529
- data/lib/IceGrid/Exception.rb +24 -45
- data/lib/IceGrid/FileParser.rb +14 -50
- data/lib/IceGrid/PluginFacade.rb +40 -0
- data/lib/IceGrid/Registry.rb +151 -58
- data/lib/IceGrid/Session.rb +25 -64
- data/lib/IceGrid/UserAccountMapper.rb +14 -50
- data/lib/IcePatch2.rb +1 -1
- data/lib/IcePatch2/FileInfo.rb +5 -11
- data/lib/IcePatch2/FileServer.rb +33 -76
- data/lib/IceStorm.rb +1 -1
- data/lib/IceStorm/IceStorm.rb +79 -206
- data/lib/IceStorm/Metrics.rb +11 -89
- data/slice/Glacier2/Metrics.ice +8 -4
- data/slice/Glacier2/PermissionsVerifier.ice +10 -7
- data/slice/Glacier2/PermissionsVerifierF.ice +7 -4
- data/slice/Glacier2/Router.ice +10 -8
- data/slice/Glacier2/RouterF.ice +7 -4
- data/slice/Glacier2/SSLInfo.ice +8 -5
- data/slice/Glacier2/Session.ice +15 -13
- data/slice/Ice/BuiltinSequences.ice +7 -4
- data/slice/Ice/Communicator.ice +141 -66
- data/slice/Ice/CommunicatorF.ice +7 -4
- data/slice/Ice/Connection.ice +183 -86
- data/slice/Ice/ConnectionF.ice +7 -4
- data/slice/Ice/Current.ice +13 -9
- data/slice/Ice/Endpoint.ice +63 -14
- data/slice/Ice/EndpointF.ice +7 -4
- data/slice/Ice/EndpointTypes.ice +8 -6
- data/slice/Ice/FacetMap.ice +7 -4
- data/slice/Ice/Identity.ice +13 -5
- data/slice/Ice/ImplicitContext.ice +20 -18
- data/slice/Ice/ImplicitContextF.ice +7 -4
- data/slice/Ice/Instrumentation.ice +20 -19
- data/slice/Ice/InstrumentationF.ice +8 -5
- data/slice/Ice/LocalException.ice +87 -87
- data/slice/Ice/Locator.ice +19 -18
- data/slice/Ice/LocatorF.ice +7 -4
- data/slice/Ice/Logger.ice +9 -7
- data/slice/Ice/LoggerF.ice +7 -4
- data/slice/Ice/Metrics.ice +18 -14
- data/slice/Ice/ObjectAdapter.ice +30 -13
- data/slice/Ice/ObjectAdapterF.ice +7 -4
- data/slice/Ice/ObjectFactory.ice +15 -12
- data/slice/Ice/Plugin.ice +9 -6
- data/slice/Ice/PluginF.ice +8 -5
- data/slice/Ice/Process.ice +9 -6
- data/slice/Ice/ProcessF.ice +7 -4
- data/slice/Ice/Properties.ice +15 -12
- data/slice/Ice/PropertiesAdmin.ice +9 -5
- data/slice/Ice/PropertiesF.ice +7 -4
- data/slice/Ice/RemoteLogger.ice +33 -24
- data/slice/Ice/Router.ice +16 -7
- data/slice/Ice/RouterF.ice +7 -4
- data/slice/Ice/ServantLocator.ice +13 -10
- data/slice/Ice/ServantLocatorF.ice +7 -4
- data/slice/Ice/SliceChecksumDict.ice +7 -4
- data/slice/Ice/ValueFactory.ice +127 -0
- data/slice/Ice/Version.ice +9 -5
- data/slice/IceBT/ConnectionInfo.ice +53 -0
- data/slice/IceBT/EndpointInfo.ice +51 -0
- data/slice/IceBT/Types.ice +39 -0
- data/slice/IceBox/IceBox.ice +20 -21
- data/slice/IceDiscovery/IceDiscovery.ice +9 -5
- data/slice/IceGrid/Admin.ice +390 -30
- data/slice/IceGrid/Descriptor.ice +37 -29
- data/slice/IceGrid/Exception.ice +33 -27
- data/slice/IceGrid/FileParser.ice +9 -6
- data/slice/IceGrid/PluginFacade.ice +11 -9
- data/slice/IceGrid/Registry.ice +139 -16
- data/slice/IceGrid/Session.ice +10 -8
- data/slice/IceGrid/UserAccountMapper.ice +9 -6
- data/slice/IceIAP/ConnectionInfo.ice +70 -0
- data/slice/IceIAP/EndpointInfo.ice +64 -0
- data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +9 -7
- data/slice/IcePatch2/FileInfo.ice +9 -8
- data/slice/IcePatch2/FileServer.ice +17 -13
- data/slice/IceSSL/ConnectionInfo.ice +14 -17
- data/slice/IceSSL/ConnectionInfoF.ice +24 -0
- data/slice/IceSSL/EndpointInfo.ice +9 -30
- data/slice/IceStorm/IceStorm.ice +22 -18
- data/slice/IceStorm/Metrics.ice +9 -5
- metadata +154 -120
- data/ext/ObjectFactory.cpp +0 -140
- data/ext/ObjectFactory.h +0 -50
- data/ext/ice/cpp/include/Ice/BasicStream.h +0 -1335
- data/ext/ice/cpp/include/Ice/Communicator.h +0 -200
- data/ext/ice/cpp/include/Ice/Connection.h +0 -497
- data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +0 -62
- data/ext/ice/cpp/include/Ice/Endpoint.h +0 -341
- data/ext/ice/cpp/include/Ice/Identity.h +0 -168
- data/ext/ice/cpp/include/Ice/Instrumentation.h +0 -365
- data/ext/ice/cpp/include/Ice/LocalException.h +0 -1030
- data/ext/ice/cpp/include/Ice/Locator.h +0 -2193
- data/ext/ice/cpp/include/Ice/Metrics.h +0 -2974
- data/ext/ice/cpp/include/Ice/ObjectAdapter.h +0 -168
- data/ext/ice/cpp/include/Ice/ObjectFactory.h +0 -92
- data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +0 -66
- data/ext/ice/cpp/include/Ice/Outgoing.h +0 -225
- data/ext/ice/cpp/include/Ice/Plugin.h +0 -125
- data/ext/ice/cpp/include/Ice/Process.h +0 -574
- data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +0 -830
- data/ext/ice/cpp/include/Ice/RemoteLogger.h +0 -1500
- data/ext/ice/cpp/include/Ice/Router.h +0 -1159
- data/ext/ice/cpp/include/Ice/Stream.h +0 -447
- data/ext/ice/cpp/include/Ice/StreamF.h +0 -30
- data/ext/ice/cpp/include/Ice/Version.h +0 -262
- data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +0 -158
- data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +0 -142
- data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +0 -119
- data/ext/ice/cpp/include/IceUtil/Cache.h +0 -362
- data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +0 -65
- data/ext/ice/cpp/include/Slice/CsUtil.h +0 -92
- data/ext/ice/cpp/include/Slice/DotNetNames.h +0 -34
- data/ext/ice/cpp/include/Slice/ObjCUtil.h +0 -127
- data/ext/ice/cpp/include/Slice/Util.h +0 -56
- data/ext/ice/cpp/src/Ice/BasicStream.cpp +0 -3428
- data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +0 -62
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +0 -139
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +0 -43
- data/ext/ice/cpp/src/Ice/Outgoing.cpp +0 -694
- data/ext/ice/cpp/src/Ice/Stream.cpp +0 -53
- data/ext/ice/cpp/src/Ice/StreamI.cpp +0 -832
- data/ext/ice/cpp/src/Ice/StreamI.h +0 -198
- data/ext/ice/cpp/src/IceSSL/Certificate.cpp +0 -1336
- data/ext/ice/cpp/src/IceUtil/Exception.cpp +0 -792
- data/ext/ice/cpp/src/IceUtil/FileUtil.h +0 -185
- data/ext/ice/cpp/src/Slice/CsUtil.cpp +0 -2660
- data/ext/ice/cpp/src/Slice/DotNetNames.cpp +0 -146
- data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +0 -1310
- data/lib/IceGrid/Locator.rb +0 -106
- data/lib/IceGrid/Observer.rb +0 -572
- data/lib/IceGrid/Query.rb +0 -169
- data/slice/Freeze/BackgroundSaveEvictor.ice +0 -111
- data/slice/Freeze/CatalogData.ice +0 -49
- data/slice/Freeze/Connection.ice +0 -121
- data/slice/Freeze/DB.ice +0 -37
- data/slice/Freeze/Evictor.ice +0 -346
- data/slice/Freeze/EvictorF.ice +0 -22
- data/slice/Freeze/EvictorStorage.ice +0 -72
- data/slice/Freeze/Exception.ice +0 -100
- data/slice/Freeze/Transaction.ice +0 -58
- data/slice/Freeze/TransactionalEvictor.ice +0 -50
- data/slice/IceGrid/Locator.ice +0 -57
- data/slice/IceGrid/Observer.ice +0 -395
- data/slice/IceGrid/Query.ice +0 -131
|
@@ -0,0 +1,994 @@
|
|
|
1
|
+
// **********************************************************************
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2003-2017 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_INPUT_STREAM_H
|
|
11
|
+
#define ICE_INPUT_STREAM_H
|
|
12
|
+
|
|
13
|
+
#include <Ice/CommunicatorF.h>
|
|
14
|
+
#include <Ice/InstanceF.h>
|
|
15
|
+
#include <Ice/Object.h>
|
|
16
|
+
#include <Ice/ValueF.h>
|
|
17
|
+
#include <Ice/ProxyF.h>
|
|
18
|
+
#include <Ice/LoggerF.h>
|
|
19
|
+
#include <Ice/ValueFactory.h>
|
|
20
|
+
#include <Ice/Buffer.h>
|
|
21
|
+
#include <Ice/Protocol.h>
|
|
22
|
+
#include <Ice/SlicedDataF.h>
|
|
23
|
+
#include <Ice/UserExceptionFactory.h>
|
|
24
|
+
#include <Ice/StreamHelpers.h>
|
|
25
|
+
#include <Ice/FactoryTable.h>
|
|
26
|
+
|
|
27
|
+
namespace Ice
|
|
28
|
+
{
|
|
29
|
+
|
|
30
|
+
class UserException;
|
|
31
|
+
|
|
32
|
+
template<typename T> inline void
|
|
33
|
+
patchHandle(void* addr, const ValuePtr& v)
|
|
34
|
+
{
|
|
35
|
+
#ifdef ICE_CPP11_MAPPING
|
|
36
|
+
::std::shared_ptr<T>* handle = static_cast<::std::shared_ptr<T>*>(addr);
|
|
37
|
+
*handle = ::std::dynamic_pointer_cast<T>(v);
|
|
38
|
+
if(v && !(*handle))
|
|
39
|
+
{
|
|
40
|
+
IceInternal::Ex::throwUOE(T::ice_staticId(), v);
|
|
41
|
+
}
|
|
42
|
+
#else
|
|
43
|
+
IceInternal::Handle<T>* p = static_cast<IceInternal::Handle<T>*>(addr);
|
|
44
|
+
_icePatchObjectPtr(*p, v); // Generated _icePatchObjectPtr function, necessary for forward declarations.
|
|
45
|
+
#endif
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
class ICE_API InputStream : public IceInternal::Buffer
|
|
49
|
+
{
|
|
50
|
+
public:
|
|
51
|
+
|
|
52
|
+
typedef size_t size_type;
|
|
53
|
+
typedef void (*PatchFunc)(void*, const ValuePtr&);
|
|
54
|
+
|
|
55
|
+
//
|
|
56
|
+
// These constructors use the latest encoding version. Without a communicator, the stream
|
|
57
|
+
// will not be able to unmarshal a proxy. For other unmarshaling tasks, you can provide
|
|
58
|
+
// Helpers for objects that are normally provided by a communicator.
|
|
59
|
+
//
|
|
60
|
+
InputStream();
|
|
61
|
+
InputStream(const std::vector<Byte>&);
|
|
62
|
+
InputStream(const std::pair<const Byte*, const Byte*>&);
|
|
63
|
+
InputStream(IceInternal::Buffer&, bool = false);
|
|
64
|
+
|
|
65
|
+
//
|
|
66
|
+
// These constructors use the communicator's default encoding version.
|
|
67
|
+
//
|
|
68
|
+
InputStream(const CommunicatorPtr&);
|
|
69
|
+
InputStream(const CommunicatorPtr&, const std::vector<Byte>&);
|
|
70
|
+
InputStream(const CommunicatorPtr&, const std::pair<const Byte*, const Byte*>&);
|
|
71
|
+
InputStream(const CommunicatorPtr&, IceInternal::Buffer&, bool = false);
|
|
72
|
+
|
|
73
|
+
//
|
|
74
|
+
// These constructors use the given encoding version. Without a communicator, the stream
|
|
75
|
+
// will not be able to unmarshal a proxy. For other unmarshaling tasks, you can provide
|
|
76
|
+
// Helpers for objects that are normally provided by a communicator.
|
|
77
|
+
//
|
|
78
|
+
InputStream(const EncodingVersion&);
|
|
79
|
+
InputStream(const EncodingVersion&, const std::vector<Byte>&);
|
|
80
|
+
InputStream(const EncodingVersion&, const std::pair<const Byte*, const Byte*>&);
|
|
81
|
+
InputStream(const EncodingVersion&, IceInternal::Buffer&, bool = false);
|
|
82
|
+
|
|
83
|
+
//
|
|
84
|
+
// These constructors use the given communicator and encoding version.
|
|
85
|
+
//
|
|
86
|
+
InputStream(const CommunicatorPtr&, const EncodingVersion&);
|
|
87
|
+
InputStream(const CommunicatorPtr&, const EncodingVersion&, const std::vector<Byte>&);
|
|
88
|
+
InputStream(const CommunicatorPtr&, const EncodingVersion&, const std::pair<const Byte*, const Byte*>&);
|
|
89
|
+
InputStream(const CommunicatorPtr&, const EncodingVersion&, IceInternal::Buffer&, bool = false);
|
|
90
|
+
|
|
91
|
+
~InputStream()
|
|
92
|
+
{
|
|
93
|
+
// Inlined for performance reasons.
|
|
94
|
+
|
|
95
|
+
if(_currentEncaps != &_preAllocatedEncaps)
|
|
96
|
+
{
|
|
97
|
+
clear(); // Not inlined.
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
#ifdef ICE_CPP11_MAPPING
|
|
101
|
+
|
|
102
|
+
for(auto d: _deleters)
|
|
103
|
+
{
|
|
104
|
+
d();
|
|
105
|
+
}
|
|
106
|
+
#endif
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
//
|
|
110
|
+
// Use initialize() if you originally constructed the stream without a communicator.
|
|
111
|
+
//
|
|
112
|
+
void initialize(const CommunicatorPtr&);
|
|
113
|
+
void initialize(const CommunicatorPtr&, const EncodingVersion&);
|
|
114
|
+
|
|
115
|
+
void clear();
|
|
116
|
+
|
|
117
|
+
//
|
|
118
|
+
// Must return Instance*, because we don't hold an InstancePtr for
|
|
119
|
+
// optimization reasons (see comments below).
|
|
120
|
+
//
|
|
121
|
+
IceInternal::Instance* instance() const { return _instance; } // Inlined for performance reasons.
|
|
122
|
+
|
|
123
|
+
void setValueFactoryManager(const ValueFactoryManagerPtr&);
|
|
124
|
+
|
|
125
|
+
void setLogger(const LoggerPtr&);
|
|
126
|
+
|
|
127
|
+
#ifdef ICE_CPP11_MAPPING
|
|
128
|
+
void setCompactIdResolver(std::function<std::string(int)>);
|
|
129
|
+
#else
|
|
130
|
+
void setCompactIdResolver(const CompactIdResolverPtr&);
|
|
131
|
+
#endif
|
|
132
|
+
|
|
133
|
+
#ifndef ICE_CPP11_MAPPING
|
|
134
|
+
void setCollectObjects(bool);
|
|
135
|
+
#endif
|
|
136
|
+
|
|
137
|
+
void setSliceValues(bool);
|
|
138
|
+
|
|
139
|
+
void setTraceSlicing(bool);
|
|
140
|
+
|
|
141
|
+
void setClassGraphDepthMax(size_t);
|
|
142
|
+
|
|
143
|
+
void* getClosure() const;
|
|
144
|
+
void* setClosure(void*);
|
|
145
|
+
|
|
146
|
+
void swap(InputStream&);
|
|
147
|
+
|
|
148
|
+
void resetEncapsulation();
|
|
149
|
+
|
|
150
|
+
void resize(Container::size_type sz)
|
|
151
|
+
{
|
|
152
|
+
b.resize(sz);
|
|
153
|
+
i = b.end();
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
void startValue()
|
|
157
|
+
{
|
|
158
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
159
|
+
_currentEncaps->decoder->startInstance(ValueSlice);
|
|
160
|
+
}
|
|
161
|
+
SlicedDataPtr endValue(bool preserve)
|
|
162
|
+
{
|
|
163
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
164
|
+
return _currentEncaps->decoder->endInstance(preserve);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
void startException()
|
|
168
|
+
{
|
|
169
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
170
|
+
_currentEncaps->decoder->startInstance(ExceptionSlice);
|
|
171
|
+
}
|
|
172
|
+
SlicedDataPtr endException(bool preserve)
|
|
173
|
+
{
|
|
174
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
175
|
+
return _currentEncaps->decoder->endInstance(preserve);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const EncodingVersion& startEncapsulation()
|
|
179
|
+
{
|
|
180
|
+
Encaps* oldEncaps = _currentEncaps;
|
|
181
|
+
if(!oldEncaps) // First allocated encaps?
|
|
182
|
+
{
|
|
183
|
+
_currentEncaps = &_preAllocatedEncaps;
|
|
184
|
+
}
|
|
185
|
+
else
|
|
186
|
+
{
|
|
187
|
+
_currentEncaps = new Encaps();
|
|
188
|
+
_currentEncaps->previous = oldEncaps;
|
|
189
|
+
}
|
|
190
|
+
_currentEncaps->start = i - b.begin();
|
|
191
|
+
|
|
192
|
+
//
|
|
193
|
+
// I don't use readSize() and writeSize() for encapsulations,
|
|
194
|
+
// because when creating an encapsulation, I must know in advance
|
|
195
|
+
// how many bytes the size information will require in the data
|
|
196
|
+
// stream. If I use an Int, it is always 4 bytes. For
|
|
197
|
+
// readSize()/writeSize(), it could be 1 or 5 bytes.
|
|
198
|
+
//
|
|
199
|
+
Int sz;
|
|
200
|
+
read(sz);
|
|
201
|
+
if(sz < 6)
|
|
202
|
+
{
|
|
203
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
204
|
+
}
|
|
205
|
+
if(i - sizeof(Int) + sz > b.end())
|
|
206
|
+
{
|
|
207
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
208
|
+
}
|
|
209
|
+
_currentEncaps->sz = sz;
|
|
210
|
+
|
|
211
|
+
read(_currentEncaps->encoding);
|
|
212
|
+
IceInternal::checkSupportedEncoding(_currentEncaps->encoding); // Make sure the encoding is supported
|
|
213
|
+
|
|
214
|
+
return _currentEncaps->encoding;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
void endEncapsulation()
|
|
218
|
+
{
|
|
219
|
+
assert(_currentEncaps);
|
|
220
|
+
|
|
221
|
+
if(_currentEncaps->encoding != Encoding_1_0)
|
|
222
|
+
{
|
|
223
|
+
skipOptionals();
|
|
224
|
+
if(i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
225
|
+
{
|
|
226
|
+
throwEncapsulationException(__FILE__, __LINE__);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else if(i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
230
|
+
{
|
|
231
|
+
if(i + 1 != b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
232
|
+
{
|
|
233
|
+
throwEncapsulationException(__FILE__, __LINE__);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
//
|
|
237
|
+
// Ice version < 3.3 had a bug where user exceptions with
|
|
238
|
+
// class members could be encoded with a trailing byte
|
|
239
|
+
// when dispatched with AMD. So we tolerate an extra byte
|
|
240
|
+
// in the encapsulation.
|
|
241
|
+
//
|
|
242
|
+
++i;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
Encaps* oldEncaps = _currentEncaps;
|
|
246
|
+
_currentEncaps = _currentEncaps->previous;
|
|
247
|
+
if(oldEncaps == &_preAllocatedEncaps)
|
|
248
|
+
{
|
|
249
|
+
oldEncaps->reset();
|
|
250
|
+
}
|
|
251
|
+
else
|
|
252
|
+
{
|
|
253
|
+
delete oldEncaps;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
EncodingVersion skipEmptyEncapsulation()
|
|
258
|
+
{
|
|
259
|
+
Ice::Int sz;
|
|
260
|
+
read(sz);
|
|
261
|
+
if(sz < 6)
|
|
262
|
+
{
|
|
263
|
+
throwEncapsulationException(__FILE__, __LINE__);
|
|
264
|
+
}
|
|
265
|
+
if(i - sizeof(Ice::Int) + sz > b.end())
|
|
266
|
+
{
|
|
267
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
268
|
+
}
|
|
269
|
+
Ice::EncodingVersion encoding;
|
|
270
|
+
read(encoding);
|
|
271
|
+
IceInternal::checkSupportedEncoding(encoding); // Make sure the encoding is supported
|
|
272
|
+
|
|
273
|
+
if(encoding == Ice::Encoding_1_0)
|
|
274
|
+
{
|
|
275
|
+
if(sz != static_cast<Ice::Int>(sizeof(Ice::Int)) + 2)
|
|
276
|
+
{
|
|
277
|
+
throwEncapsulationException(__FILE__, __LINE__);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
else
|
|
281
|
+
{
|
|
282
|
+
// Skip the optional content of the encapsulation if we are expecting an
|
|
283
|
+
// empty encapsulation.
|
|
284
|
+
i += sz - sizeof(Ice::Int) - 2;
|
|
285
|
+
}
|
|
286
|
+
return encoding;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
EncodingVersion readEncapsulation(const Byte*& v, Int& sz)
|
|
290
|
+
{
|
|
291
|
+
EncodingVersion encoding;
|
|
292
|
+
v = i;
|
|
293
|
+
read(sz);
|
|
294
|
+
if(sz < 6)
|
|
295
|
+
{
|
|
296
|
+
throwEncapsulationException(__FILE__, __LINE__);
|
|
297
|
+
}
|
|
298
|
+
if(i - sizeof(Int) + sz > b.end())
|
|
299
|
+
{
|
|
300
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
read(encoding);
|
|
304
|
+
i += sz - sizeof(Int) - 2;
|
|
305
|
+
return encoding;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
const EncodingVersion& getEncoding() const
|
|
309
|
+
{
|
|
310
|
+
return _currentEncaps ? _currentEncaps->encoding : _encoding;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
Int getEncapsulationSize();
|
|
314
|
+
EncodingVersion skipEncapsulation();
|
|
315
|
+
|
|
316
|
+
std::string startSlice()
|
|
317
|
+
{
|
|
318
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
319
|
+
return _currentEncaps->decoder->startSlice();
|
|
320
|
+
}
|
|
321
|
+
void endSlice()
|
|
322
|
+
{
|
|
323
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
324
|
+
_currentEncaps->decoder->endSlice();
|
|
325
|
+
}
|
|
326
|
+
void skipSlice()
|
|
327
|
+
{
|
|
328
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
329
|
+
_currentEncaps->decoder->skipSlice();
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
void readPendingValues();
|
|
333
|
+
|
|
334
|
+
Int readSize() // Inlined for performance reasons.
|
|
335
|
+
{
|
|
336
|
+
Byte byte;
|
|
337
|
+
read(byte);
|
|
338
|
+
unsigned char val = static_cast<unsigned char>(byte);
|
|
339
|
+
if(val == 255)
|
|
340
|
+
{
|
|
341
|
+
Int v;
|
|
342
|
+
read(v);
|
|
343
|
+
if(v < 0)
|
|
344
|
+
{
|
|
345
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
346
|
+
}
|
|
347
|
+
return v;
|
|
348
|
+
}
|
|
349
|
+
else
|
|
350
|
+
{
|
|
351
|
+
return static_cast<Int>(static_cast<unsigned char>(byte));
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
Int readAndCheckSeqSize(int);
|
|
356
|
+
|
|
357
|
+
void readBlob(std::vector<Byte>&, Int);
|
|
358
|
+
|
|
359
|
+
void readBlob(const Byte*& v, Container::size_type sz)
|
|
360
|
+
{
|
|
361
|
+
if(sz > 0)
|
|
362
|
+
{
|
|
363
|
+
v = i;
|
|
364
|
+
if(static_cast<Container::size_type>(b.end() - i) < sz)
|
|
365
|
+
{
|
|
366
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
367
|
+
}
|
|
368
|
+
i += sz;
|
|
369
|
+
}
|
|
370
|
+
else
|
|
371
|
+
{
|
|
372
|
+
v = i;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
template<typename T> void read(T& v)
|
|
377
|
+
{
|
|
378
|
+
StreamHelper<T, StreamableTraits<T>::helper>::read(this, v);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
template<typename T> void read(Int tag, IceUtil::Optional<T>& v)
|
|
382
|
+
{
|
|
383
|
+
if(readOptional(tag, StreamOptionalHelper<T,
|
|
384
|
+
StreamableTraits<T>::helper,
|
|
385
|
+
StreamableTraits<T>::fixedLength>::optionalFormat))
|
|
386
|
+
{
|
|
387
|
+
#ifdef ICE_CPP11_MAPPING
|
|
388
|
+
v.emplace();
|
|
389
|
+
#else
|
|
390
|
+
v.__setIsSet();
|
|
391
|
+
#endif
|
|
392
|
+
StreamOptionalHelper<T,
|
|
393
|
+
StreamableTraits<T>::helper,
|
|
394
|
+
StreamableTraits<T>::fixedLength>::read(this, *v);
|
|
395
|
+
}
|
|
396
|
+
else
|
|
397
|
+
{
|
|
398
|
+
v = IceUtil::None;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
#ifdef ICE_CPP11_MAPPING
|
|
403
|
+
|
|
404
|
+
template<typename T> void read(std::pair<const T*, const T*>& v)
|
|
405
|
+
{
|
|
406
|
+
auto holder = new std::vector<T>;
|
|
407
|
+
_deleters.push_back([holder] { delete holder; });
|
|
408
|
+
read(*holder);
|
|
409
|
+
if(holder->size() > 0)
|
|
410
|
+
{
|
|
411
|
+
v.first = holder->data();
|
|
412
|
+
v.second = holder->data() + holder->size();
|
|
413
|
+
}
|
|
414
|
+
else
|
|
415
|
+
{
|
|
416
|
+
v.first = 0;
|
|
417
|
+
v.second = 0;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
template<typename T> void readAll(T& v)
|
|
422
|
+
{
|
|
423
|
+
read(v);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
template<typename T, typename... Te> void readAll(T& v, Te&... ve)
|
|
427
|
+
{
|
|
428
|
+
read(v);
|
|
429
|
+
readAll(ve...);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
template<typename T>
|
|
433
|
+
void readAll(std::initializer_list<int> tags, IceUtil::Optional<T>& v)
|
|
434
|
+
{
|
|
435
|
+
read(*(tags.begin() + tags.size() - 1), v);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
template<typename T, typename... Te>
|
|
439
|
+
void readAll(std::initializer_list<int> tags, IceUtil::Optional<T>& v, IceUtil::Optional<Te>&... ve)
|
|
440
|
+
{
|
|
441
|
+
size_t index = tags.size() - sizeof...(ve) - 1;
|
|
442
|
+
read(*(tags.begin() + index), v);
|
|
443
|
+
readAll(tags, ve...);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
#endif
|
|
447
|
+
|
|
448
|
+
// Read type and tag for optionals
|
|
449
|
+
bool readOptional(Int tag, OptionalFormat expectedFormat)
|
|
450
|
+
{
|
|
451
|
+
assert(_currentEncaps);
|
|
452
|
+
if(_currentEncaps->decoder)
|
|
453
|
+
{
|
|
454
|
+
return _currentEncaps->decoder->readOptional(tag, expectedFormat);
|
|
455
|
+
}
|
|
456
|
+
else
|
|
457
|
+
{
|
|
458
|
+
return readOptImpl(tag, expectedFormat);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// Byte
|
|
463
|
+
void read(Byte& v)
|
|
464
|
+
{
|
|
465
|
+
if(i >= b.end())
|
|
466
|
+
{
|
|
467
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
468
|
+
}
|
|
469
|
+
v = *i++;
|
|
470
|
+
}
|
|
471
|
+
void read(std::vector<Byte>&);
|
|
472
|
+
void read(std::pair<const Byte*, const Byte*>&);
|
|
473
|
+
|
|
474
|
+
#ifndef ICE_CPP11_MAPPING
|
|
475
|
+
// This method is useful for generic stream helpers
|
|
476
|
+
void read(std::pair<const Byte*, const Byte*>& p, ::IceUtil::ScopedArray<Byte>& result)
|
|
477
|
+
{
|
|
478
|
+
result.reset();
|
|
479
|
+
read(p);
|
|
480
|
+
}
|
|
481
|
+
#endif
|
|
482
|
+
|
|
483
|
+
// Bool
|
|
484
|
+
void read(bool& v)
|
|
485
|
+
{
|
|
486
|
+
if(i >= b.end())
|
|
487
|
+
{
|
|
488
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
489
|
+
}
|
|
490
|
+
v = (0 != *i++);
|
|
491
|
+
}
|
|
492
|
+
void read(std::vector<bool>&);
|
|
493
|
+
|
|
494
|
+
#ifdef ICE_CPP11_MAPPING
|
|
495
|
+
void read(std::pair<const bool*, const bool*>&);
|
|
496
|
+
#else
|
|
497
|
+
void read(std::pair<const bool*, const bool*>&, ::IceUtil::ScopedArray<bool>&);
|
|
498
|
+
#endif
|
|
499
|
+
|
|
500
|
+
// Short
|
|
501
|
+
void read(Short&);
|
|
502
|
+
void read(std::vector<Short>&);
|
|
503
|
+
#ifdef ICE_CPP11_MAPPING
|
|
504
|
+
void read(std::pair<const short*, const short*>&);
|
|
505
|
+
#else
|
|
506
|
+
void read(std::pair<const Short*, const Short*>&, ::IceUtil::ScopedArray<Short>&);
|
|
507
|
+
#endif
|
|
508
|
+
|
|
509
|
+
// Int
|
|
510
|
+
void read(Int& v) // Inlined for performance reasons.
|
|
511
|
+
{
|
|
512
|
+
if(b.end() - i < static_cast<int>(sizeof(Int)))
|
|
513
|
+
{
|
|
514
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
515
|
+
}
|
|
516
|
+
const Byte* src = &(*i);
|
|
517
|
+
i += sizeof(Int);
|
|
518
|
+
#ifdef ICE_BIG_ENDIAN
|
|
519
|
+
Byte* dest = reinterpret_cast<Byte*>(&v) + sizeof(Int) - 1;
|
|
520
|
+
*dest-- = *src++;
|
|
521
|
+
*dest-- = *src++;
|
|
522
|
+
*dest-- = *src++;
|
|
523
|
+
*dest = *src;
|
|
524
|
+
#else
|
|
525
|
+
Byte* dest = reinterpret_cast<Byte*>(&v);
|
|
526
|
+
*dest++ = *src++;
|
|
527
|
+
*dest++ = *src++;
|
|
528
|
+
*dest++ = *src++;
|
|
529
|
+
*dest = *src;
|
|
530
|
+
#endif
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
void read(std::vector<Int>&);
|
|
534
|
+
#ifdef ICE_CPP11_MAPPING
|
|
535
|
+
void read(std::pair<const int*, const int*>&);
|
|
536
|
+
#else
|
|
537
|
+
void read(std::pair<const Int*, const Int*>&, ::IceUtil::ScopedArray<Int>&);
|
|
538
|
+
#endif
|
|
539
|
+
|
|
540
|
+
// Long
|
|
541
|
+
|
|
542
|
+
void read(Long&);
|
|
543
|
+
void read(std::vector<Long>&);
|
|
544
|
+
#ifdef ICE_CPP11_MAPPING
|
|
545
|
+
void read(std::pair<const long long*, const long long*>&);
|
|
546
|
+
#else
|
|
547
|
+
void read(std::pair<const Long*, const Long*>&, ::IceUtil::ScopedArray<Long>&);
|
|
548
|
+
#endif
|
|
549
|
+
|
|
550
|
+
// Float
|
|
551
|
+
void read(Float&);
|
|
552
|
+
void read(std::vector<Float>&);
|
|
553
|
+
#ifdef ICE_CPP11_MAPPING
|
|
554
|
+
void read(std::pair<const float*, const float*>&);
|
|
555
|
+
#else
|
|
556
|
+
void read(std::pair<const Float*, const Float*>&, ::IceUtil::ScopedArray<Float>&);
|
|
557
|
+
#endif
|
|
558
|
+
|
|
559
|
+
// Double
|
|
560
|
+
void read(Double&);
|
|
561
|
+
void read(std::vector<Double>&);
|
|
562
|
+
#ifdef ICE_CPP11_MAPPING
|
|
563
|
+
void read(std::pair<const double*, const double*>&);
|
|
564
|
+
#else
|
|
565
|
+
void read(std::pair<const Double*, const Double*>&, ::IceUtil::ScopedArray<Double>&);
|
|
566
|
+
#endif
|
|
567
|
+
|
|
568
|
+
// String
|
|
569
|
+
void read(std::string& v, bool convert = true);
|
|
570
|
+
|
|
571
|
+
#ifdef ICE_CPP11_MAPPING
|
|
572
|
+
void read(const char*& vdata, size_t& vsize, bool convert = true);
|
|
573
|
+
#else
|
|
574
|
+
// For custom strings, convert = false
|
|
575
|
+
void read(const char*& vdata, size_t& vsize);
|
|
576
|
+
|
|
577
|
+
// For custom strings, convert = true
|
|
578
|
+
void read(const char*& vdata, size_t& vsize, std::string& holder);
|
|
579
|
+
#endif
|
|
580
|
+
|
|
581
|
+
void read(std::vector<std::string>&, bool = true);
|
|
582
|
+
|
|
583
|
+
void read(std::wstring&);
|
|
584
|
+
void read(std::vector<std::wstring>&);
|
|
585
|
+
|
|
586
|
+
// Proxy
|
|
587
|
+
#ifdef ICE_CPP11_MAPPING
|
|
588
|
+
std::shared_ptr<ObjectPrx> readProxy();
|
|
589
|
+
|
|
590
|
+
template<typename T, typename ::std::enable_if<::std::is_base_of<ObjectPrx, T>::value>::type* = nullptr>
|
|
591
|
+
void read(::std::shared_ptr<T>& v)
|
|
592
|
+
{
|
|
593
|
+
::std::shared_ptr<ObjectPrx> proxy(readProxy());
|
|
594
|
+
if(!proxy)
|
|
595
|
+
{
|
|
596
|
+
v = 0;
|
|
597
|
+
}
|
|
598
|
+
else
|
|
599
|
+
{
|
|
600
|
+
v = ::IceInternal::createProxy<T>();
|
|
601
|
+
v->_copyFrom(proxy);
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
#else
|
|
605
|
+
void read(ObjectPrx&);
|
|
606
|
+
template<typename T> void read(IceInternal::ProxyHandle<T>& v)
|
|
607
|
+
{
|
|
608
|
+
_readProxy(this, v); // Generated _readProxy method, necessary for forward declarations.
|
|
609
|
+
}
|
|
610
|
+
#endif
|
|
611
|
+
|
|
612
|
+
// Class
|
|
613
|
+
#ifdef ICE_CPP11_MAPPING // C++11 mapping
|
|
614
|
+
template<typename T, typename ::std::enable_if<::std::is_base_of<Value, T>::value>::type* = nullptr>
|
|
615
|
+
void read(::std::shared_ptr<T>& v)
|
|
616
|
+
{
|
|
617
|
+
read(&patchHandle<T>, &v);
|
|
618
|
+
}
|
|
619
|
+
#else // C++98 mapping
|
|
620
|
+
template<typename T> void read(IceInternal::Handle<T>& v)
|
|
621
|
+
{
|
|
622
|
+
read(&patchHandle<T>, &v);
|
|
623
|
+
}
|
|
624
|
+
#endif
|
|
625
|
+
|
|
626
|
+
void read(PatchFunc patchFunc, void* patchAddr)
|
|
627
|
+
{
|
|
628
|
+
initEncaps();
|
|
629
|
+
_currentEncaps->decoder->read(patchFunc, patchAddr);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
// Enum
|
|
633
|
+
Int readEnum(Int);
|
|
634
|
+
|
|
635
|
+
// Exception
|
|
636
|
+
void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)) = ICE_NULLPTR);
|
|
637
|
+
|
|
638
|
+
// Read/write/skip optionals
|
|
639
|
+
void skipOptional(OptionalFormat);
|
|
640
|
+
void skipOptionals();
|
|
641
|
+
|
|
642
|
+
// Skip bytes from the stream
|
|
643
|
+
void skip(size_type size)
|
|
644
|
+
{
|
|
645
|
+
if(i + size > b.end())
|
|
646
|
+
{
|
|
647
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
648
|
+
}
|
|
649
|
+
i += size;
|
|
650
|
+
}
|
|
651
|
+
void skipSize()
|
|
652
|
+
{
|
|
653
|
+
Byte bt;
|
|
654
|
+
read(bt);
|
|
655
|
+
if(static_cast<unsigned char>(bt) == 255)
|
|
656
|
+
{
|
|
657
|
+
skip(4);
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
size_type pos()
|
|
662
|
+
{
|
|
663
|
+
return i - b.begin();
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
void pos(size_type p)
|
|
667
|
+
{
|
|
668
|
+
i = b.begin() + p;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
InputStream(IceInternal::Instance*, const EncodingVersion&);
|
|
672
|
+
InputStream(IceInternal::Instance*, const EncodingVersion&, IceInternal::Buffer&, bool = false);
|
|
673
|
+
|
|
674
|
+
void initialize(IceInternal::Instance*, const EncodingVersion&);
|
|
675
|
+
|
|
676
|
+
bool readOptImpl(Int, OptionalFormat);
|
|
677
|
+
|
|
678
|
+
private:
|
|
679
|
+
|
|
680
|
+
void initialize(const EncodingVersion&);
|
|
681
|
+
|
|
682
|
+
//
|
|
683
|
+
// String
|
|
684
|
+
//
|
|
685
|
+
bool readConverted(std::string&, Int);
|
|
686
|
+
|
|
687
|
+
//
|
|
688
|
+
// We can't throw these exception from inline functions from within
|
|
689
|
+
// this file, because we cannot include the header with the
|
|
690
|
+
// exceptions. Doing so would screw up the whole include file
|
|
691
|
+
// ordering.
|
|
692
|
+
//
|
|
693
|
+
void throwUnmarshalOutOfBoundsException(const char*, int);
|
|
694
|
+
void throwEncapsulationException(const char*, int);
|
|
695
|
+
|
|
696
|
+
std::string resolveCompactId(int) const;
|
|
697
|
+
|
|
698
|
+
void postUnmarshal(const ValuePtr&) const;
|
|
699
|
+
|
|
700
|
+
class Encaps;
|
|
701
|
+
enum SliceType { NoSlice, ValueSlice, ExceptionSlice };
|
|
702
|
+
|
|
703
|
+
void traceSkipSlice(const std::string&, SliceType) const;
|
|
704
|
+
|
|
705
|
+
ValueFactoryManagerPtr valueFactoryManager() const;
|
|
706
|
+
|
|
707
|
+
LoggerPtr logger() const;
|
|
708
|
+
|
|
709
|
+
#ifdef ICE_CPP11_MAPPING
|
|
710
|
+
std::function<std::string(int)> compactIdResolver() const;
|
|
711
|
+
#else
|
|
712
|
+
CompactIdResolverPtr compactIdResolver() const;
|
|
713
|
+
#endif
|
|
714
|
+
|
|
715
|
+
typedef std::vector<ValuePtr> ValueList;
|
|
716
|
+
|
|
717
|
+
class ICE_API EncapsDecoder : private ::IceUtil::noncopyable
|
|
718
|
+
{
|
|
719
|
+
public:
|
|
720
|
+
|
|
721
|
+
virtual ~EncapsDecoder();
|
|
722
|
+
|
|
723
|
+
virtual void read(PatchFunc, void*) = 0;
|
|
724
|
+
virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory))) = 0;
|
|
725
|
+
|
|
726
|
+
virtual void startInstance(SliceType) = 0;
|
|
727
|
+
virtual SlicedDataPtr endInstance(bool) = 0;
|
|
728
|
+
virtual const std::string& startSlice() = 0;
|
|
729
|
+
virtual void endSlice() = 0;
|
|
730
|
+
virtual void skipSlice() = 0;
|
|
731
|
+
|
|
732
|
+
virtual bool readOptional(Int, OptionalFormat)
|
|
733
|
+
{
|
|
734
|
+
return false;
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
virtual void readPendingValues()
|
|
738
|
+
{
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
protected:
|
|
742
|
+
|
|
743
|
+
EncapsDecoder(InputStream* stream, Encaps* encaps, bool sliceValues, size_t classGraphDepthMax,
|
|
744
|
+
const Ice::ValueFactoryManagerPtr& f) :
|
|
745
|
+
_stream(stream), _encaps(encaps), _sliceValues(sliceValues), _classGraphDepthMax(classGraphDepthMax),
|
|
746
|
+
_classGraphDepth(0), _valueFactoryManager(f), _typeIdIndex(0)
|
|
747
|
+
{
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
std::string readTypeId(bool);
|
|
751
|
+
ValuePtr newInstance(const std::string&);
|
|
752
|
+
|
|
753
|
+
void addPatchEntry(Int, PatchFunc, void*);
|
|
754
|
+
void unmarshal(Int, const ValuePtr&);
|
|
755
|
+
|
|
756
|
+
typedef std::map<Int, ValuePtr> IndexToPtrMap;
|
|
757
|
+
typedef std::map<Int, std::string> TypeIdMap;
|
|
758
|
+
|
|
759
|
+
struct PatchEntry
|
|
760
|
+
{
|
|
761
|
+
PatchFunc patchFunc;
|
|
762
|
+
void* patchAddr;
|
|
763
|
+
size_t classGraphDepth;
|
|
764
|
+
};
|
|
765
|
+
typedef std::vector<PatchEntry> PatchList;
|
|
766
|
+
typedef std::map<Int, PatchList> PatchMap;
|
|
767
|
+
|
|
768
|
+
InputStream* _stream;
|
|
769
|
+
Encaps* _encaps;
|
|
770
|
+
const bool _sliceValues;
|
|
771
|
+
const size_t _classGraphDepthMax;
|
|
772
|
+
size_t _classGraphDepth;
|
|
773
|
+
Ice::ValueFactoryManagerPtr _valueFactoryManager;
|
|
774
|
+
|
|
775
|
+
// Encapsulation attributes for object un-marshalling
|
|
776
|
+
PatchMap _patchMap;
|
|
777
|
+
|
|
778
|
+
private:
|
|
779
|
+
|
|
780
|
+
// Encapsulation attributes for object un-marshalling
|
|
781
|
+
IndexToPtrMap _unmarshaledMap;
|
|
782
|
+
TypeIdMap _typeIdMap;
|
|
783
|
+
Int _typeIdIndex;
|
|
784
|
+
ValueList _valueList;
|
|
785
|
+
};
|
|
786
|
+
|
|
787
|
+
class ICE_API EncapsDecoder10 : public EncapsDecoder
|
|
788
|
+
{
|
|
789
|
+
public:
|
|
790
|
+
|
|
791
|
+
EncapsDecoder10(InputStream* stream, Encaps* encaps, bool sliceValues, size_t classGraphDepthMax,
|
|
792
|
+
const Ice::ValueFactoryManagerPtr& f) :
|
|
793
|
+
EncapsDecoder(stream, encaps, sliceValues, classGraphDepthMax, f),
|
|
794
|
+
_sliceType(NoSlice)
|
|
795
|
+
{
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
virtual void read(PatchFunc, void*);
|
|
799
|
+
virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)));
|
|
800
|
+
|
|
801
|
+
virtual void startInstance(SliceType);
|
|
802
|
+
virtual SlicedDataPtr endInstance(bool);
|
|
803
|
+
virtual const std::string& startSlice();
|
|
804
|
+
virtual void endSlice();
|
|
805
|
+
virtual void skipSlice();
|
|
806
|
+
|
|
807
|
+
virtual void readPendingValues();
|
|
808
|
+
|
|
809
|
+
private:
|
|
810
|
+
|
|
811
|
+
void readInstance();
|
|
812
|
+
|
|
813
|
+
// Instance attributes
|
|
814
|
+
SliceType _sliceType;
|
|
815
|
+
bool _skipFirstSlice;
|
|
816
|
+
|
|
817
|
+
// Slice attributes
|
|
818
|
+
Int _sliceSize;
|
|
819
|
+
std::string _typeId;
|
|
820
|
+
};
|
|
821
|
+
|
|
822
|
+
class ICE_API EncapsDecoder11 : public EncapsDecoder
|
|
823
|
+
{
|
|
824
|
+
public:
|
|
825
|
+
|
|
826
|
+
EncapsDecoder11(InputStream* stream, Encaps* encaps, bool sliceValues, size_t classGraphDepthMax,
|
|
827
|
+
const Ice::ValueFactoryManagerPtr& f) :
|
|
828
|
+
EncapsDecoder(stream, encaps, sliceValues, classGraphDepthMax, f),
|
|
829
|
+
_preAllocatedInstanceData(0), _current(0), _valueIdIndex(1)
|
|
830
|
+
{
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
virtual void read(PatchFunc, void*);
|
|
834
|
+
virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)));
|
|
835
|
+
|
|
836
|
+
virtual void startInstance(SliceType);
|
|
837
|
+
virtual SlicedDataPtr endInstance(bool);
|
|
838
|
+
virtual const std::string& startSlice();
|
|
839
|
+
virtual void endSlice();
|
|
840
|
+
virtual void skipSlice();
|
|
841
|
+
|
|
842
|
+
virtual bool readOptional(Int, OptionalFormat);
|
|
843
|
+
|
|
844
|
+
private:
|
|
845
|
+
|
|
846
|
+
Int readInstance(Int, PatchFunc, void*);
|
|
847
|
+
SlicedDataPtr readSlicedData();
|
|
848
|
+
|
|
849
|
+
struct IndirectPatchEntry
|
|
850
|
+
{
|
|
851
|
+
Int index;
|
|
852
|
+
PatchFunc patchFunc;
|
|
853
|
+
void* patchAddr;
|
|
854
|
+
};
|
|
855
|
+
typedef std::vector<IndirectPatchEntry> IndirectPatchList;
|
|
856
|
+
|
|
857
|
+
typedef std::vector<Int> IndexList;
|
|
858
|
+
typedef std::vector<IndexList> IndexListList;
|
|
859
|
+
|
|
860
|
+
struct InstanceData
|
|
861
|
+
{
|
|
862
|
+
InstanceData(InstanceData* p) : previous(p), next(0)
|
|
863
|
+
{
|
|
864
|
+
if(previous)
|
|
865
|
+
{
|
|
866
|
+
previous->next = this;
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
~InstanceData()
|
|
871
|
+
{
|
|
872
|
+
if(next)
|
|
873
|
+
{
|
|
874
|
+
delete next;
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
// Instance attributes
|
|
879
|
+
SliceType sliceType;
|
|
880
|
+
bool skipFirstSlice;
|
|
881
|
+
SliceInfoSeq slices; // Preserved slices.
|
|
882
|
+
IndexListList indirectionTables;
|
|
883
|
+
|
|
884
|
+
// Slice attributes
|
|
885
|
+
Byte sliceFlags;
|
|
886
|
+
Int sliceSize;
|
|
887
|
+
std::string typeId;
|
|
888
|
+
int compactId;
|
|
889
|
+
IndirectPatchList indirectPatchList;
|
|
890
|
+
|
|
891
|
+
InstanceData* previous;
|
|
892
|
+
InstanceData* next;
|
|
893
|
+
};
|
|
894
|
+
InstanceData _preAllocatedInstanceData;
|
|
895
|
+
InstanceData* _current;
|
|
896
|
+
|
|
897
|
+
void push(SliceType sliceType)
|
|
898
|
+
{
|
|
899
|
+
if(!_current)
|
|
900
|
+
{
|
|
901
|
+
_current = &_preAllocatedInstanceData;
|
|
902
|
+
}
|
|
903
|
+
else
|
|
904
|
+
{
|
|
905
|
+
_current = _current->next ? _current->next : new InstanceData(_current);
|
|
906
|
+
}
|
|
907
|
+
_current->sliceType = sliceType;
|
|
908
|
+
_current->skipFirstSlice = false;
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
Int _valueIdIndex; // The ID of the next value to unmarshal.
|
|
912
|
+
};
|
|
913
|
+
|
|
914
|
+
class Encaps : private ::IceUtil::noncopyable
|
|
915
|
+
{
|
|
916
|
+
public:
|
|
917
|
+
|
|
918
|
+
Encaps() : start(0), decoder(0), previous(0)
|
|
919
|
+
{
|
|
920
|
+
// Inlined for performance reasons.
|
|
921
|
+
}
|
|
922
|
+
~Encaps()
|
|
923
|
+
{
|
|
924
|
+
// Inlined for performance reasons.
|
|
925
|
+
delete decoder;
|
|
926
|
+
}
|
|
927
|
+
void reset()
|
|
928
|
+
{
|
|
929
|
+
// Inlined for performance reasons.
|
|
930
|
+
delete decoder;
|
|
931
|
+
decoder = 0;
|
|
932
|
+
|
|
933
|
+
previous = 0;
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
Container::size_type start;
|
|
937
|
+
Int sz;
|
|
938
|
+
EncodingVersion encoding;
|
|
939
|
+
|
|
940
|
+
EncapsDecoder* decoder;
|
|
941
|
+
|
|
942
|
+
Encaps* previous;
|
|
943
|
+
};
|
|
944
|
+
|
|
945
|
+
//
|
|
946
|
+
// Optimization. The instance may not be deleted while a
|
|
947
|
+
// stack-allocated stream still holds it.
|
|
948
|
+
//
|
|
949
|
+
IceInternal::Instance* _instance;
|
|
950
|
+
|
|
951
|
+
//
|
|
952
|
+
// The encoding version to use when there's no encapsulation to
|
|
953
|
+
// read from. This is for example used to read message headers.
|
|
954
|
+
//
|
|
955
|
+
EncodingVersion _encoding;
|
|
956
|
+
|
|
957
|
+
Encaps* _currentEncaps;
|
|
958
|
+
|
|
959
|
+
void initEncaps();
|
|
960
|
+
|
|
961
|
+
Encaps _preAllocatedEncaps;
|
|
962
|
+
|
|
963
|
+
#ifndef ICE_CPP11_MAPPING
|
|
964
|
+
bool _collectObjects;
|
|
965
|
+
#endif
|
|
966
|
+
|
|
967
|
+
bool _traceSlicing;
|
|
968
|
+
|
|
969
|
+
size_t _classGraphDepthMax;
|
|
970
|
+
|
|
971
|
+
void* _closure;
|
|
972
|
+
|
|
973
|
+
bool _sliceValues;
|
|
974
|
+
|
|
975
|
+
int _startSeq;
|
|
976
|
+
int _minSeqSize;
|
|
977
|
+
|
|
978
|
+
ValueFactoryManagerPtr _valueFactoryManager;
|
|
979
|
+
LoggerPtr _logger;
|
|
980
|
+
#ifdef ICE_CPP11_MAPPING
|
|
981
|
+
std::function<std::string(int)> _compactIdResolver;
|
|
982
|
+
#else
|
|
983
|
+
CompactIdResolverPtr _compactIdResolver;
|
|
984
|
+
#endif
|
|
985
|
+
|
|
986
|
+
#ifdef ICE_CPP11_MAPPING
|
|
987
|
+
std::vector<std::function<void()>> _deleters;
|
|
988
|
+
#endif
|
|
989
|
+
|
|
990
|
+
};
|
|
991
|
+
|
|
992
|
+
} // End namespace Ice
|
|
993
|
+
|
|
994
|
+
#endif
|