zeroc-ice 3.7.11 → 3.8.1
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/dist/IceRuby/Communicator.cpp +159 -376
- data/dist/IceRuby/Communicator.h +8 -9
- data/dist/IceRuby/Config.h +23 -89
- data/dist/IceRuby/Connection.cpp +111 -219
- data/dist/IceRuby/Connection.h +8 -12
- data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
- data/dist/IceRuby/DefaultSliceLoader.h +25 -0
- data/dist/IceRuby/Endpoint.cpp +63 -65
- data/dist/IceRuby/Endpoint.h +7 -11
- data/dist/IceRuby/ImplicitContext.cpp +26 -31
- data/dist/IceRuby/ImplicitContext.h +6 -10
- data/dist/IceRuby/Init.cpp +27 -40
- data/dist/IceRuby/Logger.cpp +23 -28
- data/dist/IceRuby/Logger.h +8 -12
- data/dist/IceRuby/Operation.cpp +177 -219
- data/dist/IceRuby/Operation.h +15 -18
- data/dist/IceRuby/Properties.cpp +133 -89
- data/dist/IceRuby/Properties.h +6 -10
- data/dist/IceRuby/Proxy.cpp +179 -649
- data/dist/IceRuby/Proxy.h +11 -12
- data/dist/IceRuby/RubySliceLoader.cpp +39 -0
- data/dist/IceRuby/RubySliceLoader.h +27 -0
- data/dist/IceRuby/Slice.cpp +88 -94
- data/dist/IceRuby/Slice.h +3 -7
- data/dist/IceRuby/Types.cpp +987 -1190
- data/dist/IceRuby/Types.h +390 -461
- data/dist/IceRuby/Util.cpp +214 -473
- data/dist/IceRuby/Util.h +378 -479
- data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
- data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
- data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +4 -10
- data/dist/ice/cpp/include/Ice/Buffer.h +116 -111
- data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
- data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
- data/dist/ice/cpp/include/Ice/Config.h +46 -62
- data/dist/ice/cpp/include/Ice/Connection.h +410 -0
- data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
- data/dist/ice/cpp/include/Ice/ConnectionIF.h +6 -28
- data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
- data/dist/ice/cpp/include/Ice/Current.h +60 -0
- data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
- data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
- data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
- data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
- data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
- data/dist/ice/cpp/include/Ice/Exception.h +46 -151
- data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
- data/dist/ice/cpp/include/Ice/Format.h +11 -27
- data/dist/ice/cpp/include/Ice/Ice.h +53 -48
- data/dist/ice/cpp/include/Ice/IconvStringConverter.h +165 -326
- data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
- data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
- data/dist/ice/cpp/include/Ice/Initialize.h +113 -927
- data/dist/ice/cpp/include/Ice/InputStream.h +748 -1320
- data/dist/ice/cpp/include/Ice/InstanceF.h +4 -10
- data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
- data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
- data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
- data/dist/ice/cpp/include/Ice/Logger.h +62 -0
- data/dist/ice/cpp/include/Ice/LoggerUtil.h +124 -147
- data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
- data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +41 -71
- data/dist/ice/cpp/include/Ice/Object.h +151 -490
- data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
- data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
- data/dist/ice/cpp/include/Ice/ObjectF.h +5 -19
- data/dist/ice/cpp/include/Ice/ObserverHelper.h +115 -132
- data/dist/ice/cpp/include/Ice/OutgoingAsync.h +392 -748
- data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
- data/dist/ice/cpp/include/Ice/OutputStream.h +756 -956
- data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
- data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
- data/dist/ice/cpp/include/{IceUtil → Ice}/PopDisableWarnings.h +8 -6
- data/dist/ice/cpp/include/Ice/Properties.h +307 -0
- data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
- data/dist/ice/cpp/include/Ice/Proxy.h +665 -5094
- data/dist/ice/cpp/include/Ice/ProxyF.h +2 -44
- data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
- data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
- data/dist/ice/cpp/include/Ice/ReferenceF.h +4 -19
- data/dist/ice/cpp/include/Ice/RequestHandlerF.h +8 -18
- data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +276 -0
- data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
- data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
- data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
- data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
- data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
- data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +286 -0
- data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
- data/dist/ice/cpp/include/Ice/Service.h +182 -342
- data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
- data/dist/ice/cpp/include/Ice/SlicedData.h +113 -160
- data/dist/ice/cpp/include/Ice/SlicedDataF.h +17 -27
- data/dist/ice/cpp/include/Ice/StreamHelpers.h +532 -1070
- data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
- data/dist/ice/cpp/include/Ice/StringConverter.h +152 -63
- data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
- data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
- data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
- data/dist/ice/cpp/include/Ice/UUID.h +6 -9
- data/dist/ice/cpp/include/Ice/UserException.h +46 -0
- data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +4 -79
- data/dist/ice/cpp/include/Ice/Value.h +103 -115
- data/dist/ice/cpp/include/Ice/ValueF.h +6 -11
- data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +16 -1877
- data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +16 -1185
- data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +46 -146
- data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
- data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +49 -93
- data/dist/ice/cpp/include/generated/Ice/Identity.h +70 -226
- data/dist/ice/cpp/include/generated/Ice/Locator.h +494 -3850
- data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
- data/dist/ice/cpp/include/generated/Ice/Metrics.h +937 -4603
- data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
- data/dist/ice/cpp/include/generated/Ice/Process.h +197 -929
- data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +249 -1301
- data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
- data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +637 -2620
- data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
- data/dist/ice/cpp/include/generated/Ice/Router.h +429 -1783
- data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +18 -65
- data/dist/ice/cpp/include/generated/Ice/Version.h +73 -318
- data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
- data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
- data/dist/ice/cpp/src/Ice/Acceptor.h +28 -24
- data/dist/ice/cpp/src/Ice/AcceptorF.h +6 -14
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
- data/dist/ice/cpp/src/Ice/ArgVector.cpp +17 -18
- data/dist/ice/cpp/src/Ice/ArgVector.h +19 -25
- data/dist/ice/cpp/src/Ice/Base64.cpp +66 -66
- data/dist/ice/cpp/src/Ice/Base64.h +14 -19
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +70 -121
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +37 -47
- data/dist/ice/cpp/src/Ice/Buffer.cpp +73 -41
- data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +215 -249
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +38 -60
- data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +63 -184
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +30 -51
- data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +4 -14
- data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +578 -792
- data/dist/ice/cpp/src/Ice/ConnectionFactory.h +200 -200
- data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +6 -19
- data/dist/ice/cpp/src/Ice/ConnectionI.cpp +1674 -1782
- data/dist/ice/cpp/src/Ice/ConnectionI.h +333 -293
- data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
- data/dist/ice/cpp/src/Ice/Connector.h +25 -19
- data/dist/ice/cpp/src/Ice/ConnectorF.h +4 -11
- data/dist/ice/cpp/src/{IceUtil → Ice}/ConsoleUtil.cpp +32 -53
- data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
- data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
- data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
- data/dist/ice/cpp/src/Ice/DLLMain.cpp +25 -35
- data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +41 -119
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +27 -41
- data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +4 -11
- data/dist/ice/cpp/src/Ice/Demangle.cpp +26 -0
- data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
- data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +44 -112
- data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
- data/dist/ice/cpp/src/Ice/Endian.h +40 -0
- data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +35 -59
- data/dist/ice/cpp/src/Ice/EndpointFactory.h +82 -103
- data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +4 -11
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +54 -87
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +28 -33
- data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +4 -11
- data/dist/ice/cpp/src/Ice/EndpointI.cpp +53 -23
- data/dist/ice/cpp/src/Ice/EndpointI.h +132 -200
- data/dist/ice/cpp/src/Ice/EndpointIF.h +11 -39
- data/dist/ice/cpp/src/Ice/EventHandler.cpp +3 -26
- data/dist/ice/cpp/src/Ice/EventHandler.h +46 -56
- data/dist/ice/cpp/src/Ice/EventHandlerF.h +4 -14
- data/dist/ice/cpp/src/Ice/Exception.cpp +3 -816
- data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
- data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
- data/dist/ice/cpp/src/Ice/HashUtil.h +46 -32
- data/dist/ice/cpp/src/Ice/HttpParser.cpp +431 -431
- data/dist/ice/cpp/src/Ice/HttpParser.h +95 -100
- data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +207 -324
- data/dist/ice/cpp/src/Ice/IPEndpointI.h +80 -126
- data/dist/ice/cpp/src/Ice/IPEndpointIF.h +6 -17
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
- data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
- data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
- data/dist/ice/cpp/src/Ice/Initialize.cpp +48 -542
- data/dist/ice/cpp/src/Ice/InputStream.cpp +848 -1385
- data/dist/ice/cpp/src/Ice/Instance.cpp +816 -827
- data/dist/ice/cpp/src/Ice/Instance.h +202 -212
- data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +526 -661
- data/dist/ice/cpp/src/Ice/InstrumentationI.h +171 -192
- data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
- data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
- data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +291 -329
- data/dist/ice/cpp/src/Ice/LocatorInfo.h +144 -157
- data/dist/ice/cpp/src/Ice/LocatorInfoF.h +8 -17
- data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +561 -743
- data/dist/ice/cpp/src/Ice/LoggerAdminI.h +18 -28
- data/dist/ice/cpp/src/Ice/LoggerI.cpp +66 -91
- data/dist/ice/cpp/src/Ice/LoggerI.h +36 -41
- data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
- data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
- data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +14 -38
- data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
- data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +194 -280
- data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
- data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
- data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
- data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
- data/dist/ice/cpp/src/Ice/Network.cpp +595 -917
- data/dist/ice/cpp/src/Ice/Network.h +189 -213
- data/dist/ice/cpp/src/Ice/NetworkF.h +2 -10
- data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +99 -104
- data/dist/ice/cpp/src/Ice/NetworkProxy.h +49 -54
- data/dist/ice/cpp/src/Ice/NetworkProxyF.h +4 -11
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +16 -18
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +22 -27
- data/dist/ice/cpp/src/Ice/Object.cpp +152 -338
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +170 -113
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +41 -41
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +4 -15
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +580 -727
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +149 -145
- data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +36 -17
- data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
- data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +147 -187
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +56 -64
- data/dist/ice/cpp/src/{IceUtil → Ice}/Options.cpp +187 -258
- data/dist/ice/cpp/src/Ice/Options.h +119 -0
- data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +516 -732
- data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
- data/dist/ice/cpp/src/Ice/OutputStream.cpp +610 -543
- data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
- data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
- data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +118 -277
- data/dist/ice/cpp/src/Ice/PluginManagerI.h +41 -48
- data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
- data/dist/ice/cpp/src/Ice/PropertyNames.cpp +519 -1341
- data/dist/ice/cpp/src/Ice/PropertyNames.h +49 -64
- data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
- data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
- data/dist/ice/cpp/src/Ice/Protocol.cpp +129 -94
- data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +117 -62
- data/dist/ice/cpp/src/Ice/ProtocolInstance.h +63 -82
- data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +4 -11
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +10 -32
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +25 -54
- data/dist/ice/cpp/src/Ice/Proxy.cpp +294 -1357
- data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
- data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
- data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
- data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
- data/dist/ice/cpp/src/Ice/Random.h +23 -0
- data/dist/ice/cpp/src/Ice/Reference.cpp +635 -1097
- data/dist/ice/cpp/src/Ice/Reference.h +314 -298
- data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +320 -378
- data/dist/ice/cpp/src/Ice/ReferenceFactory.h +48 -66
- data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +4 -9
- data/dist/ice/cpp/src/Ice/RequestHandler.cpp +15 -24
- data/dist/ice/cpp/src/Ice/RequestHandler.h +43 -68
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
- data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
- data/dist/ice/cpp/src/Ice/RetryQueue.cpp +51 -57
- data/dist/ice/cpp/src/Ice/RetryQueue.h +39 -46
- data/dist/ice/cpp/src/Ice/RetryQueueF.h +4 -9
- data/dist/ice/cpp/src/Ice/RouterInfo.cpp +97 -201
- data/dist/ice/cpp/src/Ice/RouterInfo.h +61 -118
- data/dist/ice/cpp/src/Ice/RouterInfoF.h +6 -14
- data/dist/ice/cpp/src/Ice/SHA1.cpp +86 -60
- data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +521 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +646 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
- data/dist/ice/cpp/src/{IceSSL → Ice/SSL}/RFC2253.cpp +85 -88
- data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +69 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +673 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +118 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1449 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1088 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +825 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1048 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +233 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
- data/dist/ice/cpp/src/Ice/Selector.cpp +341 -606
- data/dist/ice/cpp/src/Ice/Selector.h +167 -224
- data/dist/ice/cpp/src/Ice/ServantManager.cpp +195 -128
- data/dist/ice/cpp/src/Ice/ServantManager.h +52 -55
- data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Service.cpp +548 -641
- data/dist/ice/cpp/src/Ice/SharedContext.h +13 -26
- data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
- data/dist/ice/cpp/src/Ice/SlicedData.cpp +17 -96
- data/dist/ice/cpp/src/Ice/StreamSocket.cpp +104 -151
- data/dist/ice/cpp/src/Ice/StreamSocket.h +48 -60
- data/dist/ice/cpp/src/Ice/StringConverter.cpp +586 -0
- data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
- data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +41 -47
- data/dist/ice/cpp/src/Ice/SysLoggerI.h +24 -27
- data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +16 -17
- data/dist/ice/cpp/src/Ice/SystemdJournalI.h +19 -25
- data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
- data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +67 -88
- data/dist/ice/cpp/src/Ice/TcpAcceptor.h +34 -40
- data/dist/ice/cpp/src/Ice/TcpConnector.cpp +42 -41
- data/dist/ice/cpp/src/Ice/TcpConnector.h +26 -35
- data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +172 -146
- data/dist/ice/cpp/src/Ice/TcpEndpointI.h +76 -80
- data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +38 -26
- data/dist/ice/cpp/src/Ice/TcpTransceiver.h +40 -45
- data/dist/ice/cpp/src/Ice/ThreadPool.cpp +333 -515
- data/dist/ice/cpp/src/Ice/ThreadPool.h +202 -290
- data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
- data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
- data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
- data/dist/ice/cpp/src/Ice/Timer.cpp +73 -167
- data/dist/ice/cpp/src/Ice/Timer.h +212 -0
- data/dist/ice/cpp/src/Ice/TraceLevels.cpp +11 -29
- data/dist/ice/cpp/src/Ice/TraceLevels.h +22 -28
- data/dist/ice/cpp/src/Ice/TraceLevelsF.h +4 -11
- data/dist/ice/cpp/src/Ice/TraceUtil.cpp +136 -215
- data/dist/ice/cpp/src/Ice/TraceUtil.h +27 -16
- data/dist/ice/cpp/src/Ice/Transceiver.cpp +3 -7
- data/dist/ice/cpp/src/Ice/Transceiver.h +35 -32
- data/dist/ice/cpp/src/Ice/TransceiverF.h +10 -20
- data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
- data/dist/ice/cpp/src/Ice/UdpConnector.cpp +39 -39
- data/dist/ice/cpp/src/Ice/UdpConnector.h +27 -36
- data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +178 -213
- data/dist/ice/cpp/src/Ice/UdpEndpointI.h +82 -85
- data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +201 -221
- data/dist/ice/cpp/src/Ice/UdpTransceiver.h +68 -74
- data/dist/ice/cpp/{include/IceUtil → src/Ice}/UndefSysMacros.h +12 -12
- data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
- data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
- data/dist/ice/cpp/src/Ice/Value.cpp +107 -38
- data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +10 -15
- data/dist/ice/cpp/src/Ice/WSAcceptor.h +31 -37
- data/dist/ice/cpp/src/Ice/WSConnector.cpp +25 -40
- data/dist/ice/cpp/src/Ice/WSConnector.h +26 -33
- data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +164 -217
- data/dist/ice/cpp/src/Ice/WSEndpoint.h +72 -83
- data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +469 -458
- data/dist/ice/cpp/src/Ice/WSTransceiver.h +117 -123
- data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +20 -29
- data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +20 -31
- data/dist/ice/cpp/src/Ice/generated/Identity.cpp +24 -34
- data/dist/ice/cpp/src/Ice/generated/Locator.cpp +454 -1744
- data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
- data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +824 -1971
- data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
- data/dist/ice/cpp/src/Ice/generated/Process.cpp +190 -331
- data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +289 -449
- data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +547 -867
- data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
- data/dist/ice/cpp/src/Ice/generated/Router.cpp +406 -723
- data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +19 -29
- data/dist/ice/cpp/src/Ice/generated/Version.cpp +28 -31
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +76 -139
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +55 -96
- data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +190 -303
- data/dist/ice/cpp/src/IceDiscovery/LookupI.h +126 -185
- data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +56 -77
- data/dist/ice/cpp/src/IceDiscovery/PluginI.h +20 -25
- data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +14 -37
- data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +411 -649
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
- data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
- data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
- data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
- data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
- data/dist/ice/cpp/src/Slice/FileTracker.cpp +25 -75
- data/dist/ice/cpp/src/Slice/FileTracker.h +35 -56
- data/dist/ice/cpp/src/Slice/Grammar.cpp +2711 -3382
- data/dist/ice/cpp/src/Slice/Grammar.h +95 -75
- data/dist/ice/cpp/src/Slice/GrammarUtil.h +117 -217
- data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +486 -0
- data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
- data/dist/ice/cpp/src/Slice/Parser.cpp +3068 -5223
- data/dist/ice/cpp/src/Slice/Parser.h +1086 -1065
- data/dist/ice/cpp/src/Slice/Preprocessor.cpp +97 -599
- data/dist/ice/cpp/src/Slice/Preprocessor.h +26 -42
- data/dist/ice/cpp/src/Slice/Scanner.cpp +1562 -924
- data/dist/ice/cpp/src/Slice/SliceUtil.cpp +517 -113
- data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +254 -269
- data/dist/ice/cpp/src/Slice/Util.h +126 -35
- data/dist/ice/cpp/src/slice2rb/Main.cpp +13 -15
- data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
- data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
- data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
- data/dist/ice/slice/Glacier2/Metrics.ice +34 -75
- data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +42 -98
- data/dist/ice/slice/Glacier2/Router.ice +80 -173
- data/dist/ice/slice/Glacier2/SSLInfo.ice +23 -40
- data/dist/ice/slice/Glacier2/Session.ice +120 -261
- data/dist/ice/slice/Ice/BuiltinSequences.ice +33 -38
- data/dist/ice/slice/Ice/Context.ice +24 -0
- data/dist/ice/slice/Ice/EndpointTypes.ice +35 -33
- data/dist/ice/slice/Ice/Identity.ice +24 -63
- data/dist/ice/slice/Ice/Locator.ice +61 -226
- data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
- data/dist/ice/slice/Ice/Metrics.ice +189 -424
- data/dist/ice/slice/Ice/OperationMode.ice +38 -0
- data/dist/ice/slice/Ice/Process.ice +16 -52
- data/dist/ice/slice/Ice/PropertiesAdmin.ice +25 -75
- data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
- data/dist/ice/slice/Ice/RemoteLogger.ice +113 -213
- data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
- data/dist/ice/slice/Ice/Router.ice +42 -91
- data/dist/ice/slice/Ice/SliceChecksumDict.ice +7 -25
- data/dist/ice/slice/Ice/Version.ice +31 -39
- data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
- data/dist/ice/slice/IceGrid/Admin.ice +942 -1918
- data/dist/ice/slice/IceGrid/Descriptor.ice +476 -1051
- data/dist/ice/slice/IceGrid/Exception.ice +86 -384
- data/dist/ice/slice/IceGrid/FileParser.ice +23 -59
- data/dist/ice/slice/IceGrid/Registry.ice +117 -256
- data/dist/ice/slice/IceGrid/Session.ice +46 -110
- data/dist/ice/slice/IceGrid/UserAccountMapper.ice +22 -57
- data/dist/ice/slice/IceStorm/IceStorm.ice +173 -401
- data/dist/ice/slice/IceStorm/Metrics.ice +28 -70
- data/dist/lib/Glacier2/Metrics.rb +16 -31
- data/dist/lib/Glacier2/PermissionsVerifier.rb +18 -50
- data/dist/lib/Glacier2/Router.rb +20 -42
- data/dist/lib/Glacier2/SSLInfo.rb +14 -22
- data/dist/lib/Glacier2/Session.rb +53 -113
- data/dist/lib/Glacier2.rb +6 -6
- data/dist/lib/Ice/BuiltinSequences.rb +14 -26
- data/dist/lib/Ice/CompressBatch.rb +50 -0
- data/dist/lib/Ice/Context.rb +12 -0
- data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
- data/dist/lib/Ice/EndpointTypes.rb +14 -55
- data/dist/lib/Ice/Exception.rb +20 -0
- data/dist/lib/Ice/Identity.rb +10 -26
- data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
- data/dist/lib/Ice/InitializationData.rb +12 -0
- data/dist/lib/Ice/LocalExceptions.rb +168 -0
- data/dist/lib/Ice/Locator.rb +21 -134
- data/dist/lib/Ice/LocatorRegistry.rb +73 -0
- data/dist/lib/Ice/Metrics.rb +85 -132
- data/dist/lib/Ice/OperationMode.rb +58 -0
- data/dist/lib/Ice/Process.rb +12 -31
- data/dist/lib/Ice/PropertiesAdmin.rb +12 -36
- data/dist/lib/Ice/PropertyDict.rb +12 -0
- data/dist/lib/Ice/Proxy.rb +85 -0
- data/dist/lib/Ice/ProxyFunctions.rb +69 -0
- data/dist/lib/Ice/RemoteLogger.rb +29 -60
- data/dist/lib/Ice/ReplyStatus.rb +65 -0
- data/dist/lib/Ice/Router.rb +19 -47
- data/dist/lib/Ice/SliceChecksumDict.rb +5 -17
- data/dist/lib/Ice/SliceUtil.rb +41 -0
- data/dist/lib/Ice/Struct.rb +11 -0
- data/dist/lib/Ice/ToStringMode.rb +50 -0
- data/dist/lib/Ice/Value.rb +93 -0
- data/dist/lib/Ice/Version.rb +12 -24
- data/dist/lib/Ice.rb +29 -665
- data/dist/lib/IceBox/ServiceManager.rb +104 -0
- data/dist/lib/IceBox.rb +2 -4
- data/dist/lib/IceGrid/Admin.rb +303 -291
- data/dist/lib/IceGrid/Descriptor.rb +147 -192
- data/dist/lib/IceGrid/Exception.rb +26 -257
- data/dist/lib/IceGrid/FileParser.rb +12 -36
- data/dist/lib/IceGrid/Registry.rb +35 -76
- data/dist/lib/IceGrid/Session.rb +19 -34
- data/dist/lib/IceGrid/UserAccountMapper.rb +11 -34
- data/dist/lib/IceGrid.rb +3 -3
- data/dist/lib/IceStorm/IceStorm.rb +51 -132
- data/dist/lib/IceStorm/Metrics.rb +19 -37
- data/dist/lib/IceStorm.rb +3 -5
- data/extconf.rb +6 -8
- data/ice.gemspec +3 -3
- data/scripts/slice2rb +1 -3
- metadata +206 -386
- data/dist/IceRuby/ValueFactoryManager.cpp +0 -445
- data/dist/IceRuby/ValueFactoryManager.h +0 -95
- data/dist/ice/cpp/include/Ice/Application.h +0 -326
- data/dist/ice/cpp/include/Ice/AsyncResult.h +0 -155
- data/dist/ice/cpp/include/Ice/AsyncResultF.h +0 -23
- data/dist/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
- data/dist/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
- data/dist/ice/cpp/include/Ice/Comparable.h +0 -205
- data/dist/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
- data/dist/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
- data/dist/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
- data/dist/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
- data/dist/ice/cpp/include/Ice/Dispatcher.h +0 -67
- data/dist/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
- data/dist/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
- data/dist/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
- data/dist/ice/cpp/include/Ice/FactoryTable.h +0 -73
- data/dist/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
- data/dist/ice/cpp/include/Ice/Functional.h +0 -140
- data/dist/ice/cpp/include/Ice/GCObject.h +0 -76
- data/dist/ice/cpp/include/Ice/Handle.h +0 -182
- data/dist/ice/cpp/include/Ice/Incoming.h +0 -225
- data/dist/ice/cpp/include/Ice/IncomingAsync.h +0 -186
- data/dist/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
- data/dist/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
- data/dist/ice/cpp/include/Ice/LocalObject.h +0 -35
- data/dist/ice/cpp/include/Ice/LocalObjectF.h +0 -21
- data/dist/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
- data/dist/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
- data/dist/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
- data/dist/ice/cpp/include/Ice/Optional.h +0 -1114
- data/dist/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
- data/dist/ice/cpp/include/Ice/Protocol.h +0 -274
- data/dist/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
- data/dist/ice/cpp/include/Ice/ProxyHandle.h +0 -318
- data/dist/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
- data/dist/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
- data/dist/ice/cpp/include/Ice/SHA1.h +0 -40
- data/dist/ice/cpp/include/Ice/ServantManagerF.h +0 -21
- data/dist/ice/cpp/include/Ice/SliceChecksums.h +0 -33
- data/dist/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
- data/dist/ice/cpp/include/Ice/UniquePtr.h +0 -95
- data/dist/ice/cpp/include/Ice/UniqueRef.h +0 -97
- data/dist/ice/cpp/include/IceSSL/Config.h +0 -21
- data/dist/ice/cpp/include/IceSSL/IceSSL.h +0 -24
- data/dist/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
- data/dist/ice/cpp/include/IceSSL/Plugin.h +0 -712
- data/dist/ice/cpp/include/IceSSL/SChannel.h +0 -72
- data/dist/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
- data/dist/ice/cpp/include/IceUtil/Atomic.h +0 -179
- data/dist/ice/cpp/include/IceUtil/Cond.h +0 -317
- data/dist/ice/cpp/include/IceUtil/Config.h +0 -392
- data/dist/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
- data/dist/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
- data/dist/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -96
- data/dist/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
- data/dist/ice/cpp/include/IceUtil/Exception.h +0 -394
- data/dist/ice/cpp/include/IceUtil/FileUtil.h +0 -140
- data/dist/ice/cpp/include/IceUtil/Functional.h +0 -389
- data/dist/ice/cpp/include/IceUtil/Handle.h +0 -261
- data/dist/ice/cpp/include/IceUtil/IceUtil.h +0 -40
- data/dist/ice/cpp/include/IceUtil/InputUtil.h +0 -42
- data/dist/ice/cpp/include/IceUtil/Iterator.h +0 -31
- data/dist/ice/cpp/include/IceUtil/Lock.h +0 -128
- data/dist/ice/cpp/include/IceUtil/Monitor.h +0 -243
- data/dist/ice/cpp/include/IceUtil/Mutex.h +0 -349
- data/dist/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
- data/dist/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
- data/dist/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
- data/dist/ice/cpp/include/IceUtil/Optional.h +0 -433
- data/dist/ice/cpp/include/IceUtil/Options.h +0 -135
- data/dist/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
- data/dist/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
- data/dist/ice/cpp/include/IceUtil/Random.h +0 -55
- data/dist/ice/cpp/include/IceUtil/RecMutex.h +0 -107
- data/dist/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
- data/dist/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
- data/dist/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
- data/dist/ice/cpp/include/IceUtil/Shared.h +0 -127
- data/dist/ice/cpp/include/IceUtil/StopWatch.h +0 -49
- data/dist/ice/cpp/include/IceUtil/StringConverter.h +0 -195
- data/dist/ice/cpp/include/IceUtil/StringUtil.h +0 -97
- data/dist/ice/cpp/include/IceUtil/Thread.h +0 -160
- data/dist/ice/cpp/include/IceUtil/ThreadException.h +0 -94
- data/dist/ice/cpp/include/IceUtil/Time.h +0 -205
- data/dist/ice/cpp/include/IceUtil/Timer.h +0 -153
- data/dist/ice/cpp/include/IceUtil/UUID.h +0 -21
- data/dist/ice/cpp/include/generated/Glacier2/Metrics.h +0 -475
- data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifier.h +0 -1430
- data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifierF.h +0 -147
- data/dist/ice/cpp/include/generated/Glacier2/Router.h +0 -3260
- data/dist/ice/cpp/include/generated/Glacier2/RouterF.h +0 -125
- data/dist/ice/cpp/include/generated/Glacier2/SSLInfo.h +0 -223
- data/dist/ice/cpp/include/generated/Glacier2/Session.h +0 -5894
- data/dist/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
- data/dist/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/Connection.h +0 -1703
- data/dist/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
- data/dist/ice/cpp/include/generated/Ice/Current.h +0 -322
- data/dist/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
- data/dist/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
- data/dist/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
- data/dist/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
- data/dist/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
- data/dist/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
- data/dist/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
- data/dist/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
- data/dist/ice/cpp/include/generated/Ice/Logger.h +0 -237
- data/dist/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
- data/dist/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
- data/dist/ice/cpp/include/generated/Ice/Plugin.h +0 -318
- data/dist/ice/cpp/include/generated/Ice/PluginF.h +0 -110
- data/dist/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
- data/dist/ice/cpp/include/generated/Ice/Properties.h +0 -452
- data/dist/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
- data/dist/ice/cpp/include/generated/Ice/RouterF.h +0 -125
- data/dist/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
- data/dist/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
- data/dist/ice/cpp/include/generated/IceBox/IceBox.h +0 -3269
- data/dist/ice/cpp/include/generated/IceGrid/Admin.h +0 -33773
- data/dist/ice/cpp/include/generated/IceGrid/Descriptor.h +0 -5254
- data/dist/ice/cpp/include/generated/IceGrid/Exception.h +0 -2834
- data/dist/ice/cpp/include/generated/IceGrid/FileParser.h +0 -824
- data/dist/ice/cpp/include/generated/IceGrid/PluginFacade.h +0 -635
- data/dist/ice/cpp/include/generated/IceGrid/Registry.h +0 -5089
- data/dist/ice/cpp/include/generated/IceGrid/Session.h +0 -2240
- data/dist/ice/cpp/include/generated/IceGrid/UserAccountMapper.h +0 -800
- data/dist/ice/cpp/include/generated/IcePatch2/FileInfo.h +0 -325
- data/dist/ice/cpp/include/generated/IcePatch2/FileServer.h +0 -2891
- data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
- data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
- data/dist/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
- data/dist/ice/cpp/include/generated/IceStorm/IceStorm.h +0 -6627
- data/dist/ice/cpp/include/generated/IceStorm/Metrics.h +0 -665
- data/dist/ice/cpp/src/Ice/ACM.cpp +0 -380
- data/dist/ice/cpp/src/Ice/ACM.h +0 -119
- data/dist/ice/cpp/src/Ice/ACMF.h +0 -30
- data/dist/ice/cpp/src/Ice/Acceptor.cpp +0 -16
- data/dist/ice/cpp/src/Ice/Application.cpp +0 -661
- data/dist/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
- data/dist/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
- data/dist/ice/cpp/src/Ice/CommunicatorI.h +0 -167
- data/dist/ice/cpp/src/Ice/Cond.cpp +0 -381
- data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
- data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
- data/dist/ice/cpp/src/Ice/Connector.cpp +0 -16
- data/dist/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
- data/dist/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
- data/dist/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
- data/dist/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
- data/dist/ice/cpp/src/Ice/GCObject.cpp +0 -442
- data/dist/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
- data/dist/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
- data/dist/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
- data/dist/ice/cpp/src/Ice/Incoming.cpp +0 -795
- data/dist/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
- data/dist/ice/cpp/src/Ice/IncomingRequest.h +0 -33
- data/dist/ice/cpp/src/Ice/LocalObject.cpp +0 -23
- data/dist/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
- data/dist/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
- data/dist/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
- data/dist/ice/cpp/src/Ice/PropertiesI.cpp +0 -739
- data/dist/ice/cpp/src/Ice/PropertiesI.h +0 -70
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
- data/dist/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
- data/dist/ice/cpp/src/Ice/ProxyFactory.h +0 -57
- data/dist/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
- data/dist/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
- data/dist/ice/cpp/src/Ice/ReplyStatus.h +0 -24
- data/dist/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
- data/dist/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
- data/dist/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
- data/dist/ice/cpp/src/Ice/ResponseHandler.h +0 -43
- data/dist/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
- data/dist/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
- data/dist/ice/cpp/src/Ice/StringUtil.h +0 -30
- data/dist/ice/cpp/src/Ice/Thread.cpp +0 -569
- data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
- data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
- data/dist/ice/cpp/src/Ice/VirtualShared.h +0 -38
- data/dist/ice/cpp/src/Ice/generated/Communicator.cpp +0 -79
- data/dist/ice/cpp/src/Ice/generated/CommunicatorF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/Connection.cpp +0 -155
- data/dist/ice/cpp/src/Ice/generated/ConnectionF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/Current.cpp +0 -62
- data/dist/ice/cpp/src/Ice/generated/Endpoint.cpp +0 -147
- data/dist/ice/cpp/src/Ice/generated/EndpointF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/FacetMap.cpp +0 -49
- data/dist/ice/cpp/src/Ice/generated/ImplicitContext.cpp +0 -75
- data/dist/ice/cpp/src/Ice/generated/ImplicitContextF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/Instrumentation.cpp +0 -188
- data/dist/ice/cpp/src/Ice/generated/InstrumentationF.cpp +0 -66
- data/dist/ice/cpp/src/Ice/generated/LocalException.cpp +0 -3262
- data/dist/ice/cpp/src/Ice/generated/LocatorF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/Logger.cpp +0 -73
- data/dist/ice/cpp/src/Ice/generated/LoggerF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ObjectAdapter.cpp +0 -79
- data/dist/ice/cpp/src/Ice/generated/ObjectAdapterF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ObjectFactory.cpp +0 -75
- data/dist/ice/cpp/src/Ice/generated/Plugin.cpp +0 -87
- data/dist/ice/cpp/src/Ice/generated/PluginF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ProcessF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/Properties.cpp +0 -78
- data/dist/ice/cpp/src/Ice/generated/PropertiesF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/RouterF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/ServantLocator.cpp +0 -75
- data/dist/ice/cpp/src/Ice/generated/ServantLocatorF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ValueFactory.cpp +0 -83
- data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.cpp +0 -154
- data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.h +0 -49
- data/dist/ice/cpp/src/Ice/ios/StreamConnector.cpp +0 -146
- data/dist/ice/cpp/src/Ice/ios/StreamConnector.h +0 -52
- data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.cpp +0 -477
- data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.h +0 -156
- data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.cpp +0 -570
- data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.h +0 -93
- data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery/IceDiscovery.h +0 -1889
- data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery.cpp +0 -915
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery.cpp +0 -730
- data/dist/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
- data/dist/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
- data/dist/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
- data/dist/ice/cpp/src/IceSSL/CertificateI.h +0 -64
- data/dist/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
- data/dist/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
- data/dist/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
- data/dist/ice/cpp/src/IceSSL/EndpointI.h +0 -100
- data/dist/ice/cpp/src/IceSSL/Instance.cpp +0 -28
- data/dist/ice/cpp/src/IceSSL/Instance.h +0 -37
- data/dist/ice/cpp/src/IceSSL/InstanceF.h +0 -33
- data/dist/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
- data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
- data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
- data/dist/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
- data/dist/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
- data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
- data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
- data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
- data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
- data/dist/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
- data/dist/ice/cpp/src/IceSSL/PluginI.h +0 -67
- data/dist/ice/cpp/src/IceSSL/RFC2253.h +0 -62
- data/dist/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
- data/dist/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
- data/dist/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
- data/dist/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
- data/dist/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
- data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
- data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
- data/dist/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
- data/dist/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
- data/dist/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
- data/dist/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
- data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
- data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
- data/dist/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
- data/dist/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
- data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
- data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
- data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
- data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
- data/dist/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
- data/dist/ice/cpp/src/IceSSL/TrustManager.h +0 -46
- data/dist/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
- data/dist/ice/cpp/src/IceSSL/Util.cpp +0 -192
- data/dist/ice/cpp/src/IceSSL/Util.h +0 -99
- data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfo.cpp +0 -75
- data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfoF.cpp +0 -61
- data/dist/ice/cpp/src/IceSSL/generated/EndpointInfo.cpp +0 -75
- data/dist/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
- data/dist/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
- data/dist/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
- data/dist/ice/cpp/src/IceUtil/FileUtil.cpp +0 -471
- data/dist/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
- data/dist/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
- data/dist/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
- data/dist/ice/cpp/src/IceUtil/Random.cpp +0 -180
- data/dist/ice/cpp/src/IceUtil/RecMutex.cpp +0 -238
- data/dist/ice/cpp/src/IceUtil/Shared.cpp +0 -71
- data/dist/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
- data/dist/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1135
- data/dist/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
- data/dist/ice/cpp/src/IceUtil/Time.cpp +0 -307
- data/dist/ice/cpp/src/IceUtil/UUID.cpp +0 -165
- data/dist/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
- data/dist/ice/cpp/src/IceUtil/Unicode.h +0 -43
- data/dist/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
- data/dist/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
- data/dist/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
- data/dist/ice/cpp/src/Slice/Checksum.cpp +0 -447
- data/dist/ice/cpp/src/Slice/Checksum.h +0 -21
- data/dist/ice/cpp/src/Slice/JavaUtil.cpp +0 -5183
- data/dist/ice/cpp/src/Slice/JavaUtil.h +0 -407
- data/dist/ice/cpp/src/Slice/MD5.cpp +0 -52
- data/dist/ice/cpp/src/Slice/MD5.h +0 -39
- data/dist/ice/cpp/src/Slice/MD5I.cpp +0 -393
- data/dist/ice/cpp/src/Slice/MD5I.h +0 -91
- data/dist/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
- data/dist/ice/cpp/src/Slice/PHPUtil.h +0 -36
- data/dist/ice/cpp/src/Slice/Python.cpp +0 -830
- data/dist/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
- data/dist/ice/cpp/src/Slice/PythonUtil.h +0 -70
- data/dist/ice/cpp/src/Slice/Ruby.cpp +0 -350
- data/dist/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
- data/dist/ice/cpp/src/Slice/RubyUtil.h +0 -49
- data/dist/ice/slice/Glacier2/PermissionsVerifierF.ice +0 -30
- data/dist/ice/slice/Glacier2/RouterF.ice +0 -29
- data/dist/ice/slice/Ice/Communicator.ice +0 -676
- data/dist/ice/slice/Ice/CommunicatorF.ice +0 -31
- data/dist/ice/slice/Ice/Connection.ice +0 -516
- data/dist/ice/slice/Ice/ConnectionF.ice +0 -33
- data/dist/ice/slice/Ice/Current.ice +0 -170
- data/dist/ice/slice/Ice/Endpoint.ice +0 -291
- data/dist/ice/slice/Ice/EndpointF.ice +0 -43
- data/dist/ice/slice/Ice/FacetMap.ice +0 -36
- data/dist/ice/slice/Ice/ImplicitContext.ice +0 -119
- data/dist/ice/slice/Ice/ImplicitContextF.ice +0 -30
- data/dist/ice/slice/Ice/Instrumentation.ice +0 -509
- data/dist/ice/slice/Ice/InstrumentationF.ice +0 -38
- data/dist/ice/slice/Ice/LocalException.ice +0 -1040
- data/dist/ice/slice/Ice/LocatorF.ice +0 -32
- data/dist/ice/slice/Ice/Logger.ice +0 -99
- data/dist/ice/slice/Ice/LoggerF.ice +0 -31
- data/dist/ice/slice/Ice/ObjectAdapter.ice +0 -710
- data/dist/ice/slice/Ice/ObjectAdapterF.ice +0 -31
- data/dist/ice/slice/Ice/ObjectFactory.ice +0 -71
- data/dist/ice/slice/Ice/Plugin.ice +0 -131
- data/dist/ice/slice/Ice/PluginF.ice +0 -36
- data/dist/ice/slice/Ice/ProcessF.ice +0 -31
- data/dist/ice/slice/Ice/Properties.ice +0 -244
- data/dist/ice/slice/Ice/PropertiesF.ice +0 -32
- data/dist/ice/slice/Ice/RouterF.ice +0 -31
- data/dist/ice/slice/Ice/ServantLocator.ice +0 -136
- data/dist/ice/slice/Ice/ServantLocatorF.ice +0 -31
- data/dist/ice/slice/Ice/ValueFactory.ice +0 -133
- data/dist/ice/slice/IceBox/IceBox.ice +0 -216
- data/dist/ice/slice/IceGrid/PluginFacade.ice +0 -329
- data/dist/ice/slice/IcePatch2/FileInfo.ice +0 -85
- data/dist/ice/slice/IcePatch2/FileServer.ice +0 -191
- data/dist/lib/Glacier2/PermissionsVerifierF.rb +0 -30
- data/dist/lib/Glacier2/RouterF.rb +0 -25
- data/dist/lib/Ice/Communicator.rb +0 -87
- data/dist/lib/Ice/CommunicatorF.rb +0 -24
- data/dist/lib/Ice/Connection.rb +0 -413
- data/dist/lib/Ice/ConnectionF.rb +0 -32
- data/dist/lib/Ice/Current.rb +0 -141
- data/dist/lib/Ice/Endpoint.rb +0 -187
- data/dist/lib/Ice/EndpointF.rb +0 -48
- data/dist/lib/Ice/FacetMap.rb +0 -24
- data/dist/lib/Ice/ImplicitContext.rb +0 -26
- data/dist/lib/Ice/ImplicitContextF.rb +0 -24
- data/dist/lib/Ice/Instrumentation.rb +0 -169
- data/dist/lib/Ice/InstrumentationF.rb +0 -31
- data/dist/lib/Ice/LocalException.rb +0 -1031
- data/dist/lib/Ice/LocatorF.rb +0 -30
- data/dist/lib/Ice/Logger.rb +0 -24
- data/dist/lib/Ice/LoggerF.rb +0 -24
- data/dist/lib/Ice/ObjectAdapter.rb +0 -29
- data/dist/lib/Ice/ObjectAdapterF.rb +0 -24
- data/dist/lib/Ice/ObjectFactory.rb +0 -24
- data/dist/lib/Ice/Plugin.rb +0 -30
- data/dist/lib/Ice/PluginF.rb +0 -28
- data/dist/lib/Ice/ProcessF.rb +0 -25
- data/dist/lib/Ice/Properties.rb +0 -25
- data/dist/lib/Ice/PropertiesF.rb +0 -29
- data/dist/lib/Ice/RouterF.rb +0 -25
- data/dist/lib/Ice/ServantLocator.rb +0 -26
- data/dist/lib/Ice/ServantLocatorF.rb +0 -24
- data/dist/lib/Ice/ValueFactory.rb +0 -28
- data/dist/lib/IceBox/IceBox.rb +0 -164
- data/dist/lib/IceGrid/PluginFacade.rb +0 -35
- data/dist/lib/IcePatch2/FileInfo.rb +0 -115
- data/dist/lib/IcePatch2/FileServer.rb +0 -123
- data/dist/lib/IcePatch2.rb +0 -5
|
@@ -1,1513 +1,941 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
|
-
//
|
|
1
|
+
// Copyright (c) ZeroC, Inc.
|
|
4
2
|
|
|
5
3
|
#ifndef ICE_INPUT_STREAM_H
|
|
6
4
|
#define ICE_INPUT_STREAM_H
|
|
7
5
|
|
|
8
|
-
#include
|
|
9
|
-
#include
|
|
10
|
-
#include
|
|
11
|
-
#include
|
|
12
|
-
#include
|
|
13
|
-
#include
|
|
14
|
-
#include
|
|
15
|
-
#include
|
|
16
|
-
#include
|
|
17
|
-
#include
|
|
18
|
-
#include
|
|
19
|
-
#include
|
|
20
|
-
|
|
6
|
+
#include "Buffer.h"
|
|
7
|
+
#include "CommunicatorF.h"
|
|
8
|
+
#include "Ice/Version.h"
|
|
9
|
+
#include "InstanceF.h"
|
|
10
|
+
#include "LocalException.h"
|
|
11
|
+
#include "Logger.h"
|
|
12
|
+
#include "ReferenceF.h"
|
|
13
|
+
#include "SliceLoader.h"
|
|
14
|
+
#include "SlicedDataF.h"
|
|
15
|
+
#include "StreamableTraits.h"
|
|
16
|
+
#include "UserExceptionFactory.h"
|
|
17
|
+
#include "ValueF.h"
|
|
18
|
+
|
|
19
|
+
#include <cassert>
|
|
20
|
+
#include <cstdint>
|
|
21
|
+
#include <map>
|
|
22
|
+
#include <string>
|
|
23
|
+
#include <string_view>
|
|
24
|
+
|
|
25
|
+
namespace IceInternal::Ex
|
|
26
|
+
{
|
|
27
|
+
ICE_API void throwUOE(const char* file, int line, const std::string&, const Ice::ValuePtr&);
|
|
28
|
+
ICE_API void throwMemoryLimitException(const char* file, int line, size_t, std::int32_t);
|
|
29
|
+
ICE_API void throwMarshalException(const char* file, int line, std::string);
|
|
30
|
+
}
|
|
21
31
|
|
|
22
32
|
namespace Ice
|
|
23
33
|
{
|
|
34
|
+
class ObjectPrx;
|
|
24
35
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/// \cond INTERNAL
|
|
28
|
-
template<typename T> inline void
|
|
29
|
-
patchHandle(void* addr, const ValuePtr& v)
|
|
30
|
-
{
|
|
31
|
-
#ifdef ICE_CPP11_MAPPING
|
|
32
|
-
::std::shared_ptr<T>* handle = static_cast<::std::shared_ptr<T>*>(addr);
|
|
33
|
-
*handle = ::std::dynamic_pointer_cast<T>(v);
|
|
34
|
-
if(v && !(*handle))
|
|
36
|
+
/// @private
|
|
37
|
+
template<typename T> inline void patchValue(void* addr, const ValuePtr& v)
|
|
35
38
|
{
|
|
36
|
-
|
|
39
|
+
auto* ptr = static_cast<std::shared_ptr<T>*>(addr);
|
|
40
|
+
*ptr = std::dynamic_pointer_cast<T>(v);
|
|
41
|
+
if (v && !(*ptr))
|
|
42
|
+
{
|
|
43
|
+
IceInternal::Ex::throwUOE(__FILE__, __LINE__, std::string{T::ice_staticId()}, v);
|
|
44
|
+
}
|
|
37
45
|
}
|
|
38
|
-
#else
|
|
39
|
-
IceInternal::Handle<T>* p = static_cast<IceInternal::Handle<T>*>(addr);
|
|
40
|
-
_icePatchObjectPtr(*p, v); // Generated _icePatchObjectPtr function, necessary for forward declarations.
|
|
41
|
-
#endif
|
|
42
|
-
}
|
|
43
|
-
/// \endcond
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
*/
|
|
49
|
-
class ICE_API InputStream : public IceInternal::Buffer
|
|
50
|
-
{
|
|
51
|
-
public:
|
|
52
|
-
|
|
53
|
-
typedef size_t size_type;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Signature for a patch function, used to receive an unmarshaled value.
|
|
57
|
-
* @param addr The target address.
|
|
58
|
-
* @param v The unmarshaled value.
|
|
59
|
-
*/
|
|
60
|
-
typedef void (*PatchFunc)(void* addr, const ValuePtr& v);
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Constructs a stream using the latest encoding version but without a communicator.
|
|
64
|
-
* This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
|
|
65
|
-
* you can provide Helpers for objects that are normally provided by a communicator.
|
|
66
|
-
* You can supply a communicator later by calling initialize().
|
|
67
|
-
*/
|
|
68
|
-
InputStream();
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Constructs a stream using the latest encoding version but without a communicator.
|
|
72
|
-
* This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
|
|
73
|
-
* you can provide Helpers for objects that are normally provided by a communicator.
|
|
74
|
-
* You can supply a communicator later by calling initialize().
|
|
75
|
-
* @param bytes The encoded data.
|
|
76
|
-
*/
|
|
77
|
-
InputStream(const std::vector<Byte>& bytes);
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Constructs a stream using the latest encoding version but without a communicator.
|
|
81
|
-
* This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
|
|
82
|
-
* you can provide Helpers for objects that are normally provided by a communicator.
|
|
83
|
-
* You can supply a communicator later by calling initialize().
|
|
84
|
-
* @param bytes The encoded data.
|
|
85
|
-
*/
|
|
86
|
-
InputStream(const std::pair<const Byte*, const Byte*>& bytes);
|
|
87
|
-
|
|
88
|
-
/// \cond INTERNAL
|
|
89
|
-
InputStream(IceInternal::Buffer&, bool = false);
|
|
90
|
-
/// \endcond
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Constructs a stream using the communicator's default encoding version.
|
|
94
|
-
* @param communicator The communicator to use for unmarshaling tasks.
|
|
95
|
-
*/
|
|
96
|
-
InputStream(const CommunicatorPtr& communicator);
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Constructs a stream using the communicator's default encoding version.
|
|
100
|
-
* @param communicator The communicator to use for unmarshaling tasks.
|
|
101
|
-
* @param bytes The encoded data.
|
|
102
|
-
*/
|
|
103
|
-
InputStream(const CommunicatorPtr& communicator, const std::vector<Byte>& bytes);
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Constructs a stream using the communicator's default encoding version.
|
|
107
|
-
* @param communicator The communicator to use for unmarshaling tasks.
|
|
108
|
-
* @param bytes The encoded data.
|
|
109
|
-
*/
|
|
110
|
-
InputStream(const CommunicatorPtr& communicator, const std::pair<const Byte*, const Byte*>& bytes);
|
|
111
|
-
|
|
112
|
-
/// \cond INTERNAL
|
|
113
|
-
InputStream(const CommunicatorPtr& communicator, IceInternal::Buffer&, bool = false);
|
|
114
|
-
/// \endcond
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Constructs a stream using the given encoding version but without a communicator.
|
|
118
|
-
* This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
|
|
119
|
-
* you can provide Helpers for objects that are normally provided by a communicator.
|
|
120
|
-
* You can supply a communicator later by calling initialize().
|
|
121
|
-
* @param version The encoding version used to encode the data to be unmarshaled.
|
|
122
|
-
*/
|
|
123
|
-
InputStream(const EncodingVersion& version);
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Constructs a stream using the given encoding version but without a communicator.
|
|
127
|
-
* This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
|
|
128
|
-
* you can provide Helpers for objects that are normally provided by a communicator.
|
|
129
|
-
* You can supply a communicator later by calling initialize().
|
|
130
|
-
* @param version The encoding version used to encode the data to be unmarshaled.
|
|
131
|
-
* @param bytes The encoded data.
|
|
132
|
-
*/
|
|
133
|
-
InputStream(const EncodingVersion& version, const std::vector<Byte>& bytes);
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Constructs a stream using the given encoding version but without a communicator.
|
|
137
|
-
* This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
|
|
138
|
-
* you can provide Helpers for objects that are normally provided by a communicator.
|
|
139
|
-
* You can supply a communicator later by calling initialize().
|
|
140
|
-
* @param version The encoding version used to encode the data to be unmarshaled.
|
|
141
|
-
* @param bytes The encoded data.
|
|
142
|
-
*/
|
|
143
|
-
InputStream(const EncodingVersion& version, const std::pair<const Byte*, const Byte*>& bytes);
|
|
144
|
-
|
|
145
|
-
/// \cond INTERNAL
|
|
146
|
-
InputStream(const EncodingVersion&, IceInternal::Buffer&, bool = false);
|
|
147
|
-
/// \endcond
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Constructs a stream using the given communicator and encoding version.
|
|
151
|
-
* @param communicator The communicator to use for unmarshaling tasks.
|
|
152
|
-
* @param version The encoding version used to encode the data to be unmarshaled.
|
|
153
|
-
*/
|
|
154
|
-
InputStream(const CommunicatorPtr& communicator, const EncodingVersion& version);
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Constructs a stream using the given communicator and encoding version.
|
|
158
|
-
* @param communicator The communicator to use for unmarshaling tasks.
|
|
159
|
-
* @param version The encoding version used to encode the data to be unmarshaled.
|
|
160
|
-
* @param bytes The encoded data.
|
|
161
|
-
*/
|
|
162
|
-
InputStream(const CommunicatorPtr& communicator, const EncodingVersion& version, const std::vector<Byte>& bytes);
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Constructs a stream using the given communicator and encoding version.
|
|
166
|
-
* @param communicator The communicator to use for unmarshaling tasks.
|
|
167
|
-
* @param version The encoding version used to encode the data to be unmarshaled.
|
|
168
|
-
* @param bytes The encoded data.
|
|
169
|
-
*/
|
|
170
|
-
InputStream(const CommunicatorPtr& communicator, const EncodingVersion& version,
|
|
171
|
-
const std::pair<const Byte*, const Byte*>& bytes);
|
|
172
|
-
|
|
173
|
-
/// \cond INTERNAL
|
|
174
|
-
InputStream(const CommunicatorPtr&, const EncodingVersion&, IceInternal::Buffer&, bool = false);
|
|
175
|
-
/// \endcond
|
|
176
|
-
|
|
177
|
-
~InputStream()
|
|
47
|
+
/// Represents a byte buffer used for unmarshaling data encoded using the Slice encoding.
|
|
48
|
+
/// @headerfile Ice/Ice.h
|
|
49
|
+
class ICE_API InputStream final : public IceInternal::Buffer
|
|
178
50
|
{
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
51
|
+
public:
|
|
52
|
+
/// The size type for this byte buffer.
|
|
53
|
+
using size_type = std::size_t;
|
|
54
|
+
|
|
55
|
+
/// @private
|
|
56
|
+
using PatchFunc = std::function<void(void* addr, const ValuePtr& v)>;
|
|
57
|
+
|
|
58
|
+
/// Constructs an InputStream using a communicator and this communicator's default encoding version.
|
|
59
|
+
/// @param communicator The communicator to use for unmarshaling tasks.
|
|
60
|
+
/// @param bytes The encoded data.
|
|
61
|
+
/// @param sliceLoader The Slice loader. When nullptr, use the communicator's Slice loader.
|
|
62
|
+
InputStream(
|
|
63
|
+
const CommunicatorPtr& communicator,
|
|
64
|
+
const std::vector<std::byte>& bytes,
|
|
65
|
+
SliceLoaderPtr sliceLoader = nullptr);
|
|
66
|
+
|
|
67
|
+
/// @copydoc InputStream(const CommunicatorPtr&, const std::vector<std::byte>&, SliceLoaderPtr)
|
|
68
|
+
InputStream(
|
|
69
|
+
const CommunicatorPtr& communicator,
|
|
70
|
+
std::pair<const std::byte*, const std::byte*> bytes,
|
|
71
|
+
SliceLoaderPtr sliceLoader = nullptr);
|
|
72
|
+
|
|
73
|
+
/// Constructs an InputStream using a communicator and encoding version.
|
|
74
|
+
/// @param communicator The communicator to use for unmarshaling tasks.
|
|
75
|
+
/// @param encoding The encoding version used to encode the data to be unmarshaled.
|
|
76
|
+
/// @param bytes The encoded data.
|
|
77
|
+
/// @param sliceLoader The Slice loader. When nullptr, use the communicator's Slice loader.
|
|
78
|
+
InputStream(
|
|
79
|
+
const CommunicatorPtr& communicator,
|
|
80
|
+
EncodingVersion encoding,
|
|
81
|
+
const std::vector<std::byte>& bytes,
|
|
82
|
+
SliceLoaderPtr sliceLoader = nullptr);
|
|
83
|
+
|
|
84
|
+
/// @copydoc InputStream(const CommunicatorPtr&, EncodingVersion, const std::vector<std::byte>&, SliceLoaderPtr)
|
|
85
|
+
InputStream(
|
|
86
|
+
const CommunicatorPtr& communicator,
|
|
87
|
+
EncodingVersion encoding,
|
|
88
|
+
std::pair<const std::byte*, const std::byte*> bytes,
|
|
89
|
+
SliceLoaderPtr sliceLoader = nullptr);
|
|
90
|
+
|
|
91
|
+
/// @private
|
|
92
|
+
/// Constructs a stream with an empty buffer.
|
|
93
|
+
InputStream(IceInternal::Instance* instance, EncodingVersion encoding, SliceLoaderPtr sliceLoader = nullptr);
|
|
94
|
+
|
|
95
|
+
/// @private
|
|
96
|
+
/// Constructs a stream with the specified encoding and buffer.
|
|
97
|
+
InputStream(
|
|
98
|
+
IceInternal::Instance* instance,
|
|
99
|
+
EncodingVersion encoding,
|
|
100
|
+
IceInternal::Buffer& buf,
|
|
101
|
+
bool adopt,
|
|
102
|
+
SliceLoaderPtr sliceLoader = nullptr);
|
|
103
|
+
|
|
104
|
+
/// Move constructor.
|
|
105
|
+
/// @param other The input stream to move into this input stream.
|
|
106
|
+
InputStream(InputStream&& other) noexcept;
|
|
107
|
+
|
|
108
|
+
/// Move assignment operator.
|
|
109
|
+
/// @param other The input stream to move into this input stream.
|
|
110
|
+
/// @return A reference to this input stream.
|
|
111
|
+
InputStream& operator=(InputStream&& other) noexcept;
|
|
112
|
+
|
|
113
|
+
~InputStream()
|
|
182
114
|
{
|
|
183
|
-
|
|
184
|
-
}
|
|
115
|
+
// Inlined for performance reasons.
|
|
185
116
|
|
|
186
|
-
|
|
117
|
+
if (_currentEncaps != &_preAllocatedEncaps)
|
|
118
|
+
{
|
|
119
|
+
clear(); // Not inlined.
|
|
120
|
+
}
|
|
187
121
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
122
|
+
for (const auto& d : _deleters)
|
|
123
|
+
{
|
|
124
|
+
d();
|
|
125
|
+
}
|
|
191
126
|
}
|
|
192
|
-
#endif
|
|
193
|
-
}
|
|
194
127
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
* Use initialize() if you originally constructed the stream without a communicator.
|
|
198
|
-
* @param communicator The communicator to use for unmarshaling tasks.
|
|
199
|
-
*/
|
|
200
|
-
void initialize(const CommunicatorPtr& communicator);
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Initializes the stream to use the given communicator and encoding version.
|
|
204
|
-
* Use initialize() if you originally constructed the stream without a communicator.
|
|
205
|
-
* @param communicator The communicator to use for unmarshaling tasks.
|
|
206
|
-
* @param version The encoding version used to encode the data to be unmarshaled.
|
|
207
|
-
*/
|
|
208
|
-
void initialize(const CommunicatorPtr& communicator, const EncodingVersion& version);
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Releases any data retained by encapsulations.
|
|
212
|
-
*/
|
|
213
|
-
void clear();
|
|
214
|
-
|
|
215
|
-
/// \cond INTERNAL
|
|
216
|
-
//
|
|
217
|
-
// Must return Instance*, because we don't hold an InstancePtr for
|
|
218
|
-
// optimization reasons (see comments below).
|
|
219
|
-
//
|
|
220
|
-
IceInternal::Instance* instance() const { return _instance; } // Inlined for performance reasons.
|
|
221
|
-
/// \endcond
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Sets the value factory manager to use when unmarshaling value instances. If the stream
|
|
225
|
-
* was initialized with a communicator, the communicator's value factory manager will
|
|
226
|
-
* be used by default.
|
|
227
|
-
*
|
|
228
|
-
* @param vfm The value factory manager.
|
|
229
|
-
*/
|
|
230
|
-
void setValueFactoryManager(const ValueFactoryManagerPtr& vfm);
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Sets the logger to use when logging trace messages. If the stream
|
|
234
|
-
* was initialized with a communicator, the communicator's logger will
|
|
235
|
-
* be used by default.
|
|
236
|
-
*
|
|
237
|
-
* @param logger The logger to use for logging trace messages.
|
|
238
|
-
*/
|
|
239
|
-
void setLogger(const LoggerPtr& logger);
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* Sets the compact ID resolver to use when unmarshaling value and exception
|
|
243
|
-
* instances. If the stream was initialized with a communicator, the communicator's
|
|
244
|
-
* resolver will be used by default.
|
|
245
|
-
*
|
|
246
|
-
* @param r The compact ID resolver.
|
|
247
|
-
*/
|
|
248
|
-
#ifdef ICE_CPP11_MAPPING
|
|
249
|
-
void setCompactIdResolver(std::function<std::string(int)> r);
|
|
250
|
-
#else
|
|
251
|
-
void setCompactIdResolver(const CompactIdResolverPtr& r);
|
|
252
|
-
#endif
|
|
128
|
+
/// Releases any data retained by encapsulations.
|
|
129
|
+
void clear();
|
|
253
130
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
* initialized with a communicator, this setting defaults to the value of the
|
|
258
|
-
* Ice.CollectObjects property, otherwise the setting defaults to false.
|
|
259
|
-
* @param b True to mark instances as collectable, false otherwise.
|
|
260
|
-
*/
|
|
261
|
-
void setCollectObjects(bool b);
|
|
262
|
-
#endif
|
|
131
|
+
/// @private
|
|
132
|
+
// Must return Instance*, because we don't hold an InstancePtr for optimization reasons (see comments below).
|
|
133
|
+
[[nodiscard]] IceInternal::Instance* instance() const { return _instance; } // Inlined for performance reasons.
|
|
263
134
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
* for a Slice type ID and no factory can be found for that type, resulting in the creation
|
|
268
|
-
* of an instance of a less-derived type. If slicing is disabled in this situation, the
|
|
269
|
-
* stream raises the exception NoValueFactoryException. The default behavior is to allow slicing.
|
|
270
|
-
* @param b True to enable slicing, false otherwise.
|
|
271
|
-
*/
|
|
272
|
-
void setSliceValues(bool b);
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* Indicates whether to log messages when instances of Slice classes are sliced. If the stream
|
|
276
|
-
* is initialized with a communicator, this setting defaults to the value of the Ice.Trace.Slicing
|
|
277
|
-
* property, otherwise the setting defaults to false.
|
|
278
|
-
* @param b True to enable logging, false otherwise.
|
|
279
|
-
*/
|
|
280
|
-
void setTraceSlicing(bool b);
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Sets an upper limit on the depth of a class graph. If this limit is exceeded during
|
|
284
|
-
* unmarshaling, the stream raises MarshalException.
|
|
285
|
-
* @param n The maximum depth.
|
|
286
|
-
*/
|
|
287
|
-
void setClassGraphDepthMax(size_t n);
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* Obtains the closure data associated with this stream.
|
|
291
|
-
* @return The data as a void pointer.
|
|
292
|
-
*/
|
|
293
|
-
void* getClosure() const;
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* Associates closure data with this stream.
|
|
297
|
-
* @param p The data as a void pointer.
|
|
298
|
-
* @return The previous closure data, or nil.
|
|
299
|
-
*/
|
|
300
|
-
void* setClosure(void* p);
|
|
301
|
-
|
|
302
|
-
/**
|
|
303
|
-
* Swaps the contents of one stream with another.
|
|
304
|
-
*
|
|
305
|
-
* @param other The other stream.
|
|
306
|
-
*/
|
|
307
|
-
void swap(InputStream& other);
|
|
308
|
-
|
|
309
|
-
/// \cond INTERNAL
|
|
310
|
-
void resetEncapsulation();
|
|
311
|
-
/// \endcond
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Resizes the stream to a new size.
|
|
315
|
-
*
|
|
316
|
-
* @param sz The new size.
|
|
317
|
-
*/
|
|
318
|
-
void resize(Container::size_type sz)
|
|
319
|
-
{
|
|
320
|
-
b.resize(sz);
|
|
321
|
-
i = b.end();
|
|
322
|
-
}
|
|
135
|
+
/// Swaps the contents of one stream with another.
|
|
136
|
+
/// @param other The other stream.
|
|
137
|
+
void swap(InputStream& other) noexcept;
|
|
323
138
|
|
|
324
|
-
|
|
325
|
-
* Marks the start of a class instance.
|
|
326
|
-
*/
|
|
327
|
-
void startValue()
|
|
328
|
-
{
|
|
329
|
-
assert(_currentEncaps && _currentEncaps->decoder);
|
|
330
|
-
_currentEncaps->decoder->startInstance(ValueSlice);
|
|
331
|
-
}
|
|
139
|
+
/// @cond INTERNAL
|
|
332
140
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
* @param preserve Pass true and the stream will preserve the unknown slices of the instance, or false
|
|
337
|
-
* to discard the unknown slices.
|
|
338
|
-
* @return An object that encapsulates the unknown slice data.
|
|
339
|
-
*/
|
|
340
|
-
SlicedDataPtr endValue(bool preserve)
|
|
341
|
-
{
|
|
342
|
-
assert(_currentEncaps && _currentEncaps->decoder);
|
|
343
|
-
return _currentEncaps->decoder->endInstance(preserve);
|
|
344
|
-
}
|
|
141
|
+
/// Gets the closure associated with this stream.
|
|
142
|
+
/// @return The closure.
|
|
143
|
+
[[nodiscard]] void* getClosure() const;
|
|
345
144
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
{
|
|
351
|
-
assert(_currentEncaps && _currentEncaps->decoder);
|
|
352
|
-
_currentEncaps->decoder->startInstance(ExceptionSlice);
|
|
353
|
-
}
|
|
145
|
+
/// Associates a closure with this stream.
|
|
146
|
+
/// @param p The closure.
|
|
147
|
+
/// @return The previous closure, or nullptr.
|
|
148
|
+
void* setClosure(void* p);
|
|
354
149
|
|
|
355
|
-
|
|
356
|
-
* Marks the end of a user exception.
|
|
357
|
-
*
|
|
358
|
-
* @param preserve Pass true and the stream will preserve the unknown slices of the exception, or false
|
|
359
|
-
* to discard the unknown slices.
|
|
360
|
-
* @return An object that encapsulates the unknown slice data.
|
|
361
|
-
*/
|
|
362
|
-
SlicedDataPtr endException(bool preserve)
|
|
363
|
-
{
|
|
364
|
-
assert(_currentEncaps && _currentEncaps->decoder);
|
|
365
|
-
return _currentEncaps->decoder->endInstance(preserve);
|
|
366
|
-
}
|
|
150
|
+
void resetEncapsulation();
|
|
367
151
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
* @return The encoding version used by the encapsulation.
|
|
372
|
-
*/
|
|
373
|
-
const EncodingVersion& startEncapsulation()
|
|
374
|
-
{
|
|
375
|
-
Encaps* oldEncaps = _currentEncaps;
|
|
376
|
-
if(!oldEncaps) // First allocated encaps?
|
|
152
|
+
/// Resizes the stream to a new size.
|
|
153
|
+
/// @param sz The new size.
|
|
154
|
+
void resize(Container::size_type sz)
|
|
377
155
|
{
|
|
378
|
-
|
|
156
|
+
b.resize(sz);
|
|
157
|
+
i = b.end();
|
|
379
158
|
}
|
|
380
|
-
|
|
159
|
+
/// @endcond
|
|
160
|
+
|
|
161
|
+
/// Marks the start of a class instance.
|
|
162
|
+
void startValue()
|
|
381
163
|
{
|
|
382
|
-
_currentEncaps
|
|
383
|
-
_currentEncaps->
|
|
164
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
165
|
+
_currentEncaps->decoder->startInstance(ValueSlice);
|
|
384
166
|
}
|
|
385
|
-
_currentEncaps->start = static_cast<size_t>(i - b.begin());
|
|
386
167
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
168
|
+
/// Marks the end of a class instance.
|
|
169
|
+
/// @return An object that encapsulates the unknown slice data.
|
|
170
|
+
SlicedDataPtr endValue()
|
|
171
|
+
{
|
|
172
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
173
|
+
return _currentEncaps->decoder->endInstance();
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/// Marks the start of a user exception.
|
|
177
|
+
void startException()
|
|
397
178
|
{
|
|
398
|
-
|
|
179
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
180
|
+
_currentEncaps->decoder->startInstance(ExceptionSlice);
|
|
399
181
|
}
|
|
400
|
-
|
|
182
|
+
|
|
183
|
+
/// Marks the end of a user exception.
|
|
184
|
+
void endException()
|
|
401
185
|
{
|
|
402
|
-
|
|
186
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
187
|
+
_currentEncaps->decoder->endInstance();
|
|
403
188
|
}
|
|
404
|
-
_currentEncaps->sz = sz;
|
|
405
189
|
|
|
406
|
-
|
|
407
|
-
|
|
190
|
+
/// Reads the start of an encapsulation.
|
|
191
|
+
/// @return The encoding version used by the encapsulation.
|
|
192
|
+
const EncodingVersion& startEncapsulation();
|
|
408
193
|
|
|
409
|
-
|
|
410
|
-
|
|
194
|
+
/// Ends the current encapsulation.
|
|
195
|
+
void endEncapsulation();
|
|
411
196
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
void endEncapsulation()
|
|
416
|
-
{
|
|
417
|
-
assert(_currentEncaps);
|
|
197
|
+
/// Skips an empty encapsulation.
|
|
198
|
+
/// @return The encapsulation's encoding version.
|
|
199
|
+
EncodingVersion skipEmptyEncapsulation();
|
|
418
200
|
|
|
419
|
-
|
|
201
|
+
/// Returns a blob of bytes representing an encapsulation.
|
|
202
|
+
/// @param[out] v A pointer into the internal marshaling buffer representing the start of the encoded
|
|
203
|
+
/// encapsulation.
|
|
204
|
+
/// @param[out] sz The number of bytes in the encapsulation.
|
|
205
|
+
/// @return encoding The encapsulation's encoding version.
|
|
206
|
+
EncodingVersion readEncapsulation(const std::byte*& v, std::int32_t& sz);
|
|
207
|
+
|
|
208
|
+
/// Gets the current encoding version.
|
|
209
|
+
/// @return The encoding version.
|
|
210
|
+
[[nodiscard]] const EncodingVersion& getEncoding() const
|
|
420
211
|
{
|
|
421
|
-
|
|
422
|
-
if(i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
423
|
-
{
|
|
424
|
-
throwEncapsulationException(__FILE__, __LINE__);
|
|
425
|
-
}
|
|
212
|
+
return _currentEncaps ? _currentEncaps->encoding : _encoding;
|
|
426
213
|
}
|
|
427
|
-
else if(i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
428
|
-
{
|
|
429
|
-
if(i + 1 != b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
430
|
-
{
|
|
431
|
-
throwEncapsulationException(__FILE__, __LINE__);
|
|
432
|
-
}
|
|
433
214
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
// when dispatched with AMD. So we tolerate an extra byte
|
|
438
|
-
// in the encapsulation.
|
|
439
|
-
//
|
|
440
|
-
++i;
|
|
441
|
-
}
|
|
215
|
+
/// Gets the size of the current encapsulation, excluding the encapsulation header.
|
|
216
|
+
/// @return The size of the encapsulated data.
|
|
217
|
+
std::int32_t getEncapsulationSize();
|
|
442
218
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
else
|
|
219
|
+
/// Skips over an encapsulation.
|
|
220
|
+
/// @return The encoding version of the skipped encapsulation.
|
|
221
|
+
EncodingVersion skipEncapsulation();
|
|
222
|
+
|
|
223
|
+
/// Reads the start of a value or exception slice.
|
|
224
|
+
void startSlice()
|
|
450
225
|
{
|
|
451
|
-
|
|
226
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
227
|
+
_currentEncaps->decoder->startSlice();
|
|
452
228
|
}
|
|
453
|
-
}
|
|
454
229
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
*
|
|
458
|
-
* @return The encapsulation's encoding version.
|
|
459
|
-
*/
|
|
460
|
-
EncodingVersion skipEmptyEncapsulation()
|
|
461
|
-
{
|
|
462
|
-
Ice::Int sz;
|
|
463
|
-
read(sz);
|
|
464
|
-
if(sz < 6)
|
|
230
|
+
/// Indicates that the end of a value or exception slice has been reached.
|
|
231
|
+
void endSlice()
|
|
465
232
|
{
|
|
466
|
-
|
|
233
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
234
|
+
_currentEncaps->decoder->endSlice();
|
|
467
235
|
}
|
|
468
|
-
|
|
236
|
+
|
|
237
|
+
/// Skips over a value or exception slice.
|
|
238
|
+
void skipSlice()
|
|
469
239
|
{
|
|
470
|
-
|
|
240
|
+
assert(_currentEncaps && _currentEncaps->decoder);
|
|
241
|
+
_currentEncaps->decoder->skipSlice();
|
|
471
242
|
}
|
|
472
|
-
Ice::EncodingVersion encoding;
|
|
473
|
-
read(encoding);
|
|
474
|
-
IceInternal::checkSupportedEncoding(encoding); // Make sure the encoding is supported
|
|
475
243
|
|
|
476
|
-
|
|
244
|
+
/// Indicates that unmarshaling is complete, except for any class instances. The application must call this
|
|
245
|
+
/// function only when the stream actually contains class instances. Calling `readPendingValues` triggers the
|
|
246
|
+
/// patch callbacks to inform the application that unmarshaling of an instance is complete.
|
|
247
|
+
void readPendingValues();
|
|
248
|
+
|
|
249
|
+
/// Reads a size from the stream.
|
|
250
|
+
/// @return The unmarshaled size.
|
|
251
|
+
std::int32_t readSize() // Inlined for performance reasons.
|
|
477
252
|
{
|
|
478
|
-
|
|
253
|
+
std::uint8_t byte;
|
|
254
|
+
read(byte);
|
|
255
|
+
auto val = static_cast<unsigned char>(byte);
|
|
256
|
+
if (val == 255)
|
|
479
257
|
{
|
|
480
|
-
|
|
258
|
+
std::int32_t v;
|
|
259
|
+
read(v);
|
|
260
|
+
if (v < 0)
|
|
261
|
+
{
|
|
262
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
263
|
+
}
|
|
264
|
+
return v;
|
|
265
|
+
}
|
|
266
|
+
else
|
|
267
|
+
{
|
|
268
|
+
return static_cast<std::int32_t>(static_cast<unsigned char>(byte));
|
|
481
269
|
}
|
|
482
|
-
}
|
|
483
|
-
else
|
|
484
|
-
{
|
|
485
|
-
// Skip the optional content of the encapsulation if we are expecting an
|
|
486
|
-
// empty encapsulation.
|
|
487
|
-
i += static_cast<size_t>(sz) - sizeof(Ice::Int) - 2;
|
|
488
|
-
}
|
|
489
|
-
return encoding;
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
/**
|
|
493
|
-
* Returns a blob of bytes representing an encapsulation.
|
|
494
|
-
*
|
|
495
|
-
* @param v A pointer into the internal marshaling buffer representing the start of the encoded encapsulation.
|
|
496
|
-
* @param sz The number of bytes in the encapsulation.
|
|
497
|
-
* @return encoding The encapsulation's encoding version.
|
|
498
|
-
*/
|
|
499
|
-
EncodingVersion readEncapsulation(const Byte*& v, Int& sz)
|
|
500
|
-
{
|
|
501
|
-
EncodingVersion encoding;
|
|
502
|
-
v = i;
|
|
503
|
-
read(sz);
|
|
504
|
-
if(sz < 6)
|
|
505
|
-
{
|
|
506
|
-
throwEncapsulationException(__FILE__, __LINE__);
|
|
507
|
-
}
|
|
508
|
-
if(i - sizeof(Int) + sz > b.end())
|
|
509
|
-
{
|
|
510
|
-
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
511
270
|
}
|
|
512
271
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
return
|
|
516
|
-
|
|
272
|
+
/// Reads and validates a sequence size.
|
|
273
|
+
/// @param minSize The minimum size required by the sequence type.
|
|
274
|
+
/// @return The extracted size.
|
|
275
|
+
std::int32_t readAndCheckSeqSize(int minSize);
|
|
517
276
|
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
*/
|
|
523
|
-
const EncodingVersion& getEncoding() const
|
|
524
|
-
{
|
|
525
|
-
return _currentEncaps ? _currentEncaps->encoding : _encoding;
|
|
526
|
-
}
|
|
277
|
+
/// Reads a blob of bytes from the stream.
|
|
278
|
+
/// @param[out] bytes The vector to hold a copy of the bytes from the marshaling buffer.
|
|
279
|
+
/// @param sz The number of bytes to read.
|
|
280
|
+
void readBlob(std::vector<std::byte>& bytes, std::int32_t sz);
|
|
527
281
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
*/
|
|
533
|
-
Int getEncapsulationSize();
|
|
534
|
-
|
|
535
|
-
/**
|
|
536
|
-
* Skips over an encapsulation.
|
|
537
|
-
*
|
|
538
|
-
* @return The encoding version of the skipped encapsulation.
|
|
539
|
-
*/
|
|
540
|
-
EncodingVersion skipEncapsulation();
|
|
541
|
-
|
|
542
|
-
/**
|
|
543
|
-
* Reads the start of a value or exception slice.
|
|
544
|
-
*
|
|
545
|
-
* @return The Slice type ID for this slice.
|
|
546
|
-
*/
|
|
547
|
-
std::string startSlice()
|
|
548
|
-
{
|
|
549
|
-
assert(_currentEncaps && _currentEncaps->decoder);
|
|
550
|
-
return _currentEncaps->decoder->startSlice();
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
/**
|
|
554
|
-
* Indicates that the end of a value or exception slice has been reached.
|
|
555
|
-
*/
|
|
556
|
-
void endSlice()
|
|
557
|
-
{
|
|
558
|
-
assert(_currentEncaps && _currentEncaps->decoder);
|
|
559
|
-
_currentEncaps->decoder->endSlice();
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
/**
|
|
563
|
-
* Skips over a value or exception slice.
|
|
564
|
-
*/
|
|
565
|
-
void skipSlice()
|
|
566
|
-
{
|
|
567
|
-
assert(_currentEncaps && _currentEncaps->decoder);
|
|
568
|
-
_currentEncaps->decoder->skipSlice();
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
/**
|
|
572
|
-
* Indicates that unmarshaling is complete, except for any class instances. The application must call this method
|
|
573
|
-
* only if the stream actually contains class instances. Calling readPendingValues triggers the
|
|
574
|
-
* patch callbacks to inform the application that unmarshaling of an instance is complete.
|
|
575
|
-
*/
|
|
576
|
-
void readPendingValues();
|
|
577
|
-
|
|
578
|
-
/**
|
|
579
|
-
* Extracts a size from the stream.
|
|
580
|
-
*
|
|
581
|
-
* @return The extracted size.
|
|
582
|
-
*/
|
|
583
|
-
Int readSize() // Inlined for performance reasons.
|
|
584
|
-
{
|
|
585
|
-
Byte byte;
|
|
586
|
-
read(byte);
|
|
587
|
-
unsigned char val = static_cast<unsigned char>(byte);
|
|
588
|
-
if(val == 255)
|
|
282
|
+
/// Reads a blob of bytes from the stream.
|
|
283
|
+
/// @param[out] v A pointer into the internal marshaling buffer representing the start of the blob.
|
|
284
|
+
/// @param sz The number of bytes to read.
|
|
285
|
+
void readBlob(const std::byte*& v, Container::size_type sz)
|
|
589
286
|
{
|
|
590
|
-
|
|
591
|
-
read(v);
|
|
592
|
-
if(v < 0)
|
|
287
|
+
if (sz > 0)
|
|
593
288
|
{
|
|
594
|
-
|
|
289
|
+
v = i;
|
|
290
|
+
if (static_cast<Container::size_type>(b.end() - i) < sz)
|
|
291
|
+
{
|
|
292
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
293
|
+
}
|
|
294
|
+
i += sz;
|
|
595
295
|
}
|
|
596
|
-
|
|
597
|
-
}
|
|
598
|
-
else
|
|
599
|
-
{
|
|
600
|
-
return static_cast<Int>(static_cast<unsigned char>(byte));
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
/**
|
|
605
|
-
* Reads and validates a sequence size.
|
|
606
|
-
*
|
|
607
|
-
* @param minSize The minimum size required by the sequence type.
|
|
608
|
-
* @return The extracted size.
|
|
609
|
-
*/
|
|
610
|
-
Int readAndCheckSeqSize(int minSize);
|
|
611
|
-
|
|
612
|
-
/**
|
|
613
|
-
* Reads a blob of bytes from the stream.
|
|
614
|
-
*
|
|
615
|
-
* @param bytes The vector to hold a copy of the bytes from the marshaling buffer.
|
|
616
|
-
* @param sz The number of bytes to read.
|
|
617
|
-
*/
|
|
618
|
-
void readBlob(std::vector<Byte>& bytes, Int sz);
|
|
619
|
-
|
|
620
|
-
/**
|
|
621
|
-
* Reads a blob of bytes from the stream.
|
|
622
|
-
*
|
|
623
|
-
* @param v A pointer into the internal marshaling buffer representing the start of the blob.
|
|
624
|
-
* @param sz The number of bytes to read.
|
|
625
|
-
*/
|
|
626
|
-
void readBlob(const Byte*& v, Container::size_type sz)
|
|
627
|
-
{
|
|
628
|
-
if(sz > 0)
|
|
629
|
-
{
|
|
630
|
-
v = i;
|
|
631
|
-
if(static_cast<Container::size_type>(b.end() - i) < sz)
|
|
296
|
+
else
|
|
632
297
|
{
|
|
633
|
-
|
|
298
|
+
v = i;
|
|
634
299
|
}
|
|
635
|
-
i += sz;
|
|
636
|
-
}
|
|
637
|
-
else
|
|
638
|
-
{
|
|
639
|
-
v = i;
|
|
640
300
|
}
|
|
641
|
-
}
|
|
642
301
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
template<typename T> void read(T& v)
|
|
648
|
-
{
|
|
649
|
-
StreamHelper<T, StreamableTraits<T>::helper>::read(this, v);
|
|
650
|
-
}
|
|
302
|
+
/// Reads a value from the stream.
|
|
303
|
+
/// @tparam T The type of the value to read.
|
|
304
|
+
/// @param[out] v The unmarshaled value.
|
|
305
|
+
template<typename T> void read(T& v) { StreamHelper<T, StreamableTraits<T>::helper>::read(this, v); }
|
|
651
306
|
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
{
|
|
659
|
-
if(readOptional(tag, StreamOptionalHelper<T,
|
|
660
|
-
StreamableTraits<T>::helper,
|
|
661
|
-
StreamableTraits<T>::fixedLength>::optionalFormat))
|
|
662
|
-
{
|
|
663
|
-
#ifdef ICE_CPP11_MAPPING
|
|
664
|
-
v.emplace();
|
|
665
|
-
#else
|
|
666
|
-
v.__setIsSet();
|
|
307
|
+
#ifdef ICE_DOXYGEN
|
|
308
|
+
/// Reads an optional value from the stream.
|
|
309
|
+
/// @tparam T The type of the value to read.
|
|
310
|
+
/// @param tag The tag.
|
|
311
|
+
/// @param[out] v The unmarshaled value.
|
|
312
|
+
template<typename T> void read(std::int32_t tag, T& v);
|
|
667
313
|
#endif
|
|
668
|
-
StreamOptionalHelper<T,
|
|
669
|
-
StreamableTraits<T>::helper,
|
|
670
|
-
StreamableTraits<T>::fixedLength>::read(this, *v);
|
|
671
|
-
}
|
|
672
|
-
else
|
|
673
|
-
{
|
|
674
|
-
v = IceUtil::None;
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
314
|
|
|
678
|
-
|
|
315
|
+
/// Reads a value (single element list) from the stream.
|
|
316
|
+
/// @tparam T The type of value.
|
|
317
|
+
/// @param[out] v The unmarshaled value
|
|
318
|
+
template<typename T> void readAll(T& v) { read(v); }
|
|
679
319
|
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
auto holder = new std::vector<T>;
|
|
687
|
-
_deleters.push_back([holder] { delete holder; });
|
|
688
|
-
read(*holder);
|
|
689
|
-
if(holder->size() > 0)
|
|
320
|
+
/// Reads a list of values from the stream.
|
|
321
|
+
/// @tparam T The type of the first value.
|
|
322
|
+
/// @tparam Te The types of the remaining values.
|
|
323
|
+
/// @param[out] v The first unmarshaled value
|
|
324
|
+
/// @param[out] ve The remaining unmarshaled values.
|
|
325
|
+
template<typename T, typename... Te> void readAll(T& v, Te&... ve)
|
|
690
326
|
{
|
|
691
|
-
v
|
|
692
|
-
|
|
693
|
-
}
|
|
694
|
-
else
|
|
695
|
-
{
|
|
696
|
-
v.first = 0;
|
|
697
|
-
v.second = 0;
|
|
327
|
+
read(v);
|
|
328
|
+
readAll(ve...);
|
|
698
329
|
}
|
|
699
|
-
}
|
|
700
330
|
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
read(v);
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
/**
|
|
710
|
-
* Reads a list of mandatory data values.
|
|
711
|
-
*/
|
|
712
|
-
template<typename T, typename... Te> void readAll(T& v, Te&... ve)
|
|
713
|
-
{
|
|
714
|
-
read(v);
|
|
715
|
-
readAll(ve...);
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
/**
|
|
719
|
-
* Reads a list of optional data values.
|
|
720
|
-
*/
|
|
721
|
-
template<typename T>
|
|
722
|
-
void readAll(std::initializer_list<int> tags, IceUtil::Optional<T>& v)
|
|
723
|
-
{
|
|
724
|
-
read(*(tags.begin() + tags.size() - 1), v);
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
/**
|
|
728
|
-
* Reads a list of optional data values.
|
|
729
|
-
*/
|
|
730
|
-
template<typename T, typename... Te>
|
|
731
|
-
void readAll(std::initializer_list<int> tags, IceUtil::Optional<T>& v, IceUtil::Optional<Te>&... ve)
|
|
732
|
-
{
|
|
733
|
-
size_t index = tags.size() - sizeof...(ve) - 1;
|
|
734
|
-
read(*(tags.begin() + index), v);
|
|
735
|
-
readAll(tags, ve...);
|
|
736
|
-
}
|
|
737
|
-
|
|
738
|
-
#endif
|
|
739
|
-
|
|
740
|
-
/**
|
|
741
|
-
* Determine if an optional value is available for reading.
|
|
742
|
-
*
|
|
743
|
-
* @param tag The tag associated with the value.
|
|
744
|
-
* @param expectedFormat The optional format for the value.
|
|
745
|
-
* @return True if the value is present, false otherwise.
|
|
746
|
-
*/
|
|
747
|
-
bool readOptional(Int tag, OptionalFormat expectedFormat)
|
|
748
|
-
{
|
|
749
|
-
assert(_currentEncaps);
|
|
750
|
-
if(_currentEncaps->decoder)
|
|
331
|
+
/// Reads an optional value (single element list) from the stream.
|
|
332
|
+
/// @tparam T The type of the value.
|
|
333
|
+
/// @param tags The tag list.
|
|
334
|
+
/// @param[out] v The unmarshaled value.
|
|
335
|
+
template<typename T> void readAll(std::initializer_list<std::int32_t> tags, std::optional<T>& v)
|
|
751
336
|
{
|
|
752
|
-
|
|
337
|
+
read(*(tags.begin() + tags.size() - 1), v);
|
|
753
338
|
}
|
|
754
|
-
else
|
|
755
|
-
{
|
|
756
|
-
return readOptImpl(tag, expectedFormat);
|
|
757
|
-
}
|
|
758
|
-
}
|
|
759
339
|
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
340
|
+
/// Reads a list of optional values from the stream.
|
|
341
|
+
/// @tparam T The type of the first value.
|
|
342
|
+
/// @tparam Te The types of the remaining values.
|
|
343
|
+
/// @param tags The tag list.
|
|
344
|
+
/// @param[out] v The first unmarshaled value.
|
|
345
|
+
/// @param[out] ve The remaining unmarshaled values.
|
|
346
|
+
template<typename T, typename... Te>
|
|
347
|
+
void readAll(std::initializer_list<std::int32_t> tags, std::optional<T>& v, std::optional<Te>&... ve)
|
|
767
348
|
{
|
|
768
|
-
|
|
349
|
+
size_t index = tags.size() - sizeof...(ve) - 1;
|
|
350
|
+
read(*(tags.begin() + index), v);
|
|
351
|
+
readAll(tags, ve...);
|
|
769
352
|
}
|
|
770
|
-
v = *i++;
|
|
771
|
-
}
|
|
772
|
-
|
|
773
|
-
/**
|
|
774
|
-
* Reads a sequence of bytes from the stream.
|
|
775
|
-
* @param v A vector to hold a copy of the bytes.
|
|
776
|
-
*/
|
|
777
|
-
void read(std::vector<Byte>& v);
|
|
778
|
-
|
|
779
|
-
/**
|
|
780
|
-
* Reads a sequence of bytes from the stream.
|
|
781
|
-
* @param v A pair of pointers into the internal marshaling buffer representing the start and end of the
|
|
782
|
-
* sequence elements.
|
|
783
|
-
*/
|
|
784
|
-
void read(std::pair<const Byte*, const Byte*>& v);
|
|
785
|
-
|
|
786
|
-
#ifndef ICE_CPP11_MAPPING
|
|
787
|
-
/**
|
|
788
|
-
* Reads a sequence of bytes from the stream.
|
|
789
|
-
* @param v A pair of pointers into the internal marshaling buffer representing the start and end of the
|
|
790
|
-
* sequence elements.
|
|
791
|
-
* @param arr A scoped array.
|
|
792
|
-
*/
|
|
793
|
-
void read(std::pair<const Byte*, const Byte*>& v, ::IceUtil::ScopedArray<Byte>& arr)
|
|
794
|
-
{
|
|
795
|
-
arr.reset();
|
|
796
|
-
read(v);
|
|
797
|
-
}
|
|
798
|
-
#endif
|
|
799
353
|
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
{
|
|
806
|
-
if(i >= b.end())
|
|
354
|
+
/// Checks if an optional value is available for reading.
|
|
355
|
+
/// @param tag The tag associated with the value.
|
|
356
|
+
/// @param expectedFormat The optional format for the value.
|
|
357
|
+
/// @return `true` if the value is present, `false` otherwise.
|
|
358
|
+
bool readOptional(std::int32_t tag, OptionalFormat expectedFormat)
|
|
807
359
|
{
|
|
808
|
-
|
|
360
|
+
assert(_currentEncaps);
|
|
361
|
+
if (_currentEncaps->decoder)
|
|
362
|
+
{
|
|
363
|
+
return _currentEncaps->decoder->readOptional(tag, expectedFormat);
|
|
364
|
+
}
|
|
365
|
+
else
|
|
366
|
+
{
|
|
367
|
+
return readOptImpl(tag, expectedFormat);
|
|
368
|
+
}
|
|
809
369
|
}
|
|
810
|
-
v = (0 != *i++);
|
|
811
|
-
}
|
|
812
370
|
|
|
813
|
-
|
|
814
|
-
* Reads a sequence of boolean values from the stream.
|
|
815
|
-
* @param v A vector to hold a copy of the boolean values.
|
|
816
|
-
*/
|
|
817
|
-
void read(std::vector<bool>& v);
|
|
818
|
-
|
|
819
|
-
#ifdef ICE_CPP11_MAPPING
|
|
820
|
-
/**
|
|
821
|
-
* Reads a sequence of boolean values from the stream.
|
|
822
|
-
* @param v A pair of pointers into the internal marshaling buffer representing the start and end of the
|
|
823
|
-
* sequence elements.
|
|
824
|
-
*/
|
|
825
|
-
void read(std::pair<const bool*, const bool*>& v);
|
|
826
|
-
#else
|
|
827
|
-
/**
|
|
828
|
-
* Reads a sequence of boolean values from the stream.
|
|
829
|
-
* @param v A pair of pointers into the internal marshaling buffer representing the start and end of the
|
|
830
|
-
* sequence elements.
|
|
831
|
-
* @param arr A scoped array.
|
|
832
|
-
*/
|
|
833
|
-
void read(std::pair<const bool*, const bool*>& v, ::IceUtil::ScopedArray<bool>& arr);
|
|
834
|
-
#endif
|
|
371
|
+
/// @cond INTERNAL
|
|
835
372
|
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
* @param v The extracted short.
|
|
839
|
-
*/
|
|
840
|
-
void read(Short& v);
|
|
841
|
-
|
|
842
|
-
/**
|
|
843
|
-
* Reads a sequence of shorts from the stream.
|
|
844
|
-
* @param v A vector to hold a copy of the short values.
|
|
845
|
-
*/
|
|
846
|
-
void read(std::vector<Short>& v);
|
|
847
|
-
|
|
848
|
-
#ifdef ICE_CPP11_MAPPING
|
|
849
|
-
/**
|
|
850
|
-
* Reads a sequence of boolean values from the stream.
|
|
851
|
-
* @param v A pair of pointers representing the start and end of the sequence elements.
|
|
852
|
-
*/
|
|
853
|
-
void read(std::pair<const short*, const short*>& v);
|
|
854
|
-
#else
|
|
855
|
-
/**
|
|
856
|
-
* Reads a sequence of shorts from the stream.
|
|
857
|
-
* @param v A pair of pointers representing the start and end of the sequence elements.
|
|
858
|
-
* @param arr A scoped array.
|
|
859
|
-
*/
|
|
860
|
-
void read(std::pair<const Short*, const Short*>& v, ::IceUtil::ScopedArray<Short>& arr);
|
|
861
|
-
#endif
|
|
373
|
+
// We don't document all the read "specializations" in Doxygen. But we do keep them mostly documented for
|
|
374
|
+
// tool-tips.
|
|
862
375
|
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
if(b.end() - i < static_cast<int>(sizeof(Int)))
|
|
376
|
+
/// Reads an optional value from the stream.
|
|
377
|
+
/// @tparam T The type of the value to read.
|
|
378
|
+
/// @param tag The tag.
|
|
379
|
+
/// @param[out] v The unmarshaled value.
|
|
380
|
+
template<typename T, std::enable_if_t<!std::is_base_of_v<ObjectPrx, T>, bool> = true>
|
|
381
|
+
void read(std::int32_t tag, std::optional<T>& v)
|
|
870
382
|
{
|
|
871
|
-
|
|
383
|
+
if (readOptional(
|
|
384
|
+
tag,
|
|
385
|
+
StreamOptionalHelper<T, StreamableTraits<T>::helper, StreamableTraits<T>::fixedLength>::
|
|
386
|
+
optionalFormat))
|
|
387
|
+
{
|
|
388
|
+
v.emplace();
|
|
389
|
+
StreamOptionalHelper<T, StreamableTraits<T>::helper, StreamableTraits<T>::fixedLength>::read(this, *v);
|
|
390
|
+
}
|
|
391
|
+
else
|
|
392
|
+
{
|
|
393
|
+
v = std::nullopt;
|
|
394
|
+
}
|
|
872
395
|
}
|
|
873
|
-
const Byte* src = &(*i);
|
|
874
|
-
i += sizeof(Int);
|
|
875
|
-
#ifdef ICE_BIG_ENDIAN
|
|
876
|
-
Byte* dest = reinterpret_cast<Byte*>(&v) + sizeof(Int) - 1;
|
|
877
|
-
*dest-- = *src++;
|
|
878
|
-
*dest-- = *src++;
|
|
879
|
-
*dest-- = *src++;
|
|
880
|
-
*dest = *src;
|
|
881
|
-
#else
|
|
882
|
-
Byte* dest = reinterpret_cast<Byte*>(&v);
|
|
883
|
-
*dest++ = *src++;
|
|
884
|
-
*dest++ = *src++;
|
|
885
|
-
*dest++ = *src++;
|
|
886
|
-
*dest = *src;
|
|
887
|
-
#endif
|
|
888
|
-
}
|
|
889
|
-
|
|
890
|
-
/**
|
|
891
|
-
* Reads a sequence of ints from the stream.
|
|
892
|
-
* @param v A vector to hold a copy of the int values.
|
|
893
|
-
*/
|
|
894
|
-
void read(std::vector<Int>& v);
|
|
895
|
-
|
|
896
|
-
#ifdef ICE_CPP11_MAPPING
|
|
897
|
-
/**
|
|
898
|
-
* Reads a sequence of ints from the stream.
|
|
899
|
-
* @param v A pair of pointers representing the start and end of the sequence elements.
|
|
900
|
-
*/
|
|
901
|
-
void read(std::pair<const int*, const int*>& v);
|
|
902
|
-
#else
|
|
903
|
-
/**
|
|
904
|
-
* Reads a sequence of ints from the stream.
|
|
905
|
-
* @param v A pair of pointers representing the start and end of the sequence elements.
|
|
906
|
-
* @param arr A scoped array.
|
|
907
|
-
*/
|
|
908
|
-
void read(std::pair<const Int*, const Int*>& v, ::IceUtil::ScopedArray<Int>& arr);
|
|
909
|
-
#endif
|
|
910
396
|
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
* @param v A vector to hold a copy of the long values.
|
|
920
|
-
*/
|
|
921
|
-
void read(std::vector<Long>& v);
|
|
922
|
-
|
|
923
|
-
#ifdef ICE_CPP11_MAPPING
|
|
924
|
-
/**
|
|
925
|
-
* Reads a sequence of longs from the stream.
|
|
926
|
-
* @param v A pair of pointers representing the start and end of the sequence elements.
|
|
927
|
-
*/
|
|
928
|
-
void read(std::pair<const long long*, const long long*>& v);
|
|
929
|
-
#else
|
|
930
|
-
/**
|
|
931
|
-
* Reads a sequence of longs from the stream.
|
|
932
|
-
* @param v A pair of pointers representing the start and end of the sequence elements.
|
|
933
|
-
* @param arr A scoped array.
|
|
934
|
-
*/
|
|
935
|
-
void read(std::pair<const Long*, const Long*>& v, ::IceUtil::ScopedArray<Long>& arr);
|
|
936
|
-
#endif
|
|
937
|
-
|
|
938
|
-
/**
|
|
939
|
-
* Reads a float from the stream.
|
|
940
|
-
* @param v The extracted float.
|
|
941
|
-
*/
|
|
942
|
-
void read(Float& v);
|
|
943
|
-
|
|
944
|
-
/**
|
|
945
|
-
* Reads a sequence of floats from the stream.
|
|
946
|
-
* @param v A vector to hold a copy of the float values.
|
|
947
|
-
*/
|
|
948
|
-
void read(std::vector<Float>& v);
|
|
949
|
-
|
|
950
|
-
#ifdef ICE_CPP11_MAPPING
|
|
951
|
-
/**
|
|
952
|
-
* Reads a sequence of floats from the stream.
|
|
953
|
-
* @param v A pair of pointers representing the start and end of the sequence elements.
|
|
954
|
-
*/
|
|
955
|
-
void read(std::pair<const float*, const float*>& v);
|
|
956
|
-
#else
|
|
957
|
-
/**
|
|
958
|
-
* Reads a sequence of floats from the stream.
|
|
959
|
-
* @param v A pair of pointers representing the start and end of the sequence elements.
|
|
960
|
-
* @param arr A scoped array.
|
|
961
|
-
*/
|
|
962
|
-
void read(std::pair<const Float*, const Float*>& v, ::IceUtil::ScopedArray<Float>& arr);
|
|
963
|
-
#endif
|
|
964
|
-
|
|
965
|
-
/**
|
|
966
|
-
* Reads a double from the stream.
|
|
967
|
-
* @param v The extracted double.
|
|
968
|
-
*/
|
|
969
|
-
void read(Double& v);
|
|
970
|
-
|
|
971
|
-
/**
|
|
972
|
-
* Reads a sequence of doubles from the stream.
|
|
973
|
-
* @param v A vector to hold a copy of the double values.
|
|
974
|
-
*/
|
|
975
|
-
void read(std::vector<Double>& v);
|
|
976
|
-
|
|
977
|
-
#ifdef ICE_CPP11_MAPPING
|
|
978
|
-
/**
|
|
979
|
-
* Reads a sequence of doubles from the stream.
|
|
980
|
-
* @param v A pair of pointers representing the start and end of the sequence elements.
|
|
981
|
-
*/
|
|
982
|
-
void read(std::pair<const double*, const double*>& v);
|
|
983
|
-
#else
|
|
984
|
-
/**
|
|
985
|
-
* Reads a sequence of doubles from the stream.
|
|
986
|
-
* @param v A pair of pointers representing the start and end of the sequence elements.
|
|
987
|
-
* @param arr A scoped array.
|
|
988
|
-
*/
|
|
989
|
-
void read(std::pair<const Double*, const Double*>& v, ::IceUtil::ScopedArray<Double>& arr);
|
|
990
|
-
#endif
|
|
991
|
-
|
|
992
|
-
/**
|
|
993
|
-
* Reads a string from the stream.
|
|
994
|
-
* @param v The extracted string.
|
|
995
|
-
* @param convert Determines whether the string is processed by the string converter, if one
|
|
996
|
-
* is installed. The default behavior is to convert strings.
|
|
997
|
-
*/
|
|
998
|
-
void read(std::string& v, bool convert = true);
|
|
999
|
-
|
|
1000
|
-
#ifdef ICE_CPP11_MAPPING
|
|
1001
|
-
/**
|
|
1002
|
-
* Reads a string from the stream.
|
|
1003
|
-
* @param vdata A pointer to the beginning of the string.
|
|
1004
|
-
* @param vsize The number of bytes in the string.
|
|
1005
|
-
* @param convert Determines whether the string is processed by the string converter, if one
|
|
1006
|
-
* is installed. The default behavior is to convert strings.
|
|
1007
|
-
*/
|
|
1008
|
-
void read(const char*& vdata, size_t& vsize, bool convert = true);
|
|
1009
|
-
#else
|
|
1010
|
-
// For custom strings, convert = false
|
|
1011
|
-
/**
|
|
1012
|
-
* Reads a string from the stream. String conversion is disabled.
|
|
1013
|
-
* @param vdata A pointer to the beginning of the string.
|
|
1014
|
-
* @param vsize The number of bytes in the string.
|
|
1015
|
-
*/
|
|
1016
|
-
void read(const char*& vdata, size_t& vsize);
|
|
1017
|
-
|
|
1018
|
-
// For custom strings, convert = true
|
|
1019
|
-
/**
|
|
1020
|
-
* Reads a string from the stream. String conversion is enabled.
|
|
1021
|
-
* @param vdata A pointer to the beginning of the string.
|
|
1022
|
-
* @param vsize The number of bytes in the string.
|
|
1023
|
-
* @param holder Holds the string contents.
|
|
1024
|
-
*/
|
|
1025
|
-
void read(const char*& vdata, size_t& vsize, std::string& holder);
|
|
1026
|
-
#endif
|
|
1027
|
-
|
|
1028
|
-
/**
|
|
1029
|
-
* Reads a sequence of strings from the stream.
|
|
1030
|
-
* @param v The extracted string sequence.
|
|
1031
|
-
* @param convert Determines whether strings are processed by the string converter, if one
|
|
1032
|
-
* is installed. The default behavior is to convert the strings.
|
|
1033
|
-
*/
|
|
1034
|
-
void read(std::vector<std::string>& v, bool convert = true);
|
|
1035
|
-
|
|
1036
|
-
/**
|
|
1037
|
-
* Reads a wide string from the stream.
|
|
1038
|
-
* @param v The extracted string.
|
|
1039
|
-
*/
|
|
1040
|
-
void read(std::wstring& v);
|
|
1041
|
-
|
|
1042
|
-
/**
|
|
1043
|
-
* Reads a sequence of wide strings from the stream.
|
|
1044
|
-
* @param v The extracted sequence.
|
|
1045
|
-
*/
|
|
1046
|
-
void read(std::vector<std::wstring>& v);
|
|
1047
|
-
|
|
1048
|
-
#ifdef ICE_CPP11_MAPPING
|
|
1049
|
-
/**
|
|
1050
|
-
* Reads a proxy from the stream.
|
|
1051
|
-
* @return The proxy as the base ObjectPrx type.
|
|
1052
|
-
*/
|
|
1053
|
-
std::shared_ptr<ObjectPrx> readProxy();
|
|
1054
|
-
|
|
1055
|
-
/**
|
|
1056
|
-
* Reads a typed proxy from the stream.
|
|
1057
|
-
* @param v The proxy as a user-defined type.
|
|
1058
|
-
*/
|
|
1059
|
-
template<typename T, typename ::std::enable_if<::std::is_base_of<ObjectPrx, T>::value>::type* = nullptr>
|
|
1060
|
-
void read(::std::shared_ptr<T>& v)
|
|
1061
|
-
{
|
|
1062
|
-
::std::shared_ptr<ObjectPrx> proxy(readProxy());
|
|
1063
|
-
if(!proxy)
|
|
397
|
+
/// Reads an optional proxy from the stream.
|
|
398
|
+
/// @tparam T The type of the value to read.
|
|
399
|
+
/// @param tag The tag.
|
|
400
|
+
/// @param[out] v The proxy unmarshaled by this function. If nullopt, the proxy was not present in the stream or
|
|
401
|
+
/// was set to nullopt (set to nullopt is supported for backward compatibility with Ice 3.7 and earlier
|
|
402
|
+
/// releases).
|
|
403
|
+
template<typename T, std::enable_if_t<std::is_base_of_v<ObjectPrx, T>, bool> = true>
|
|
404
|
+
void read(std::int32_t tag, std::optional<T>& v)
|
|
1064
405
|
{
|
|
1065
|
-
|
|
406
|
+
if (readOptional(tag, OptionalFormat::FSize))
|
|
407
|
+
{
|
|
408
|
+
skip(4); // the fixed-length size on 4 bytes
|
|
409
|
+
read(v); // can be nullopt
|
|
410
|
+
}
|
|
411
|
+
else
|
|
412
|
+
{
|
|
413
|
+
v = std::nullopt;
|
|
414
|
+
}
|
|
1066
415
|
}
|
|
1067
|
-
|
|
416
|
+
|
|
417
|
+
/// Reads a sequence from the stream.
|
|
418
|
+
/// @param[out] v A pair of pointers representing the beginning and end of the sequence elements.
|
|
419
|
+
template<typename T> void read(std::pair<const T*, const T*>& v)
|
|
1068
420
|
{
|
|
1069
|
-
|
|
1070
|
-
|
|
421
|
+
auto holder = new std::vector<T>;
|
|
422
|
+
_deleters.push_back([holder] { delete holder; });
|
|
423
|
+
read(*holder);
|
|
424
|
+
if (holder->size() > 0)
|
|
425
|
+
{
|
|
426
|
+
v.first = holder->data();
|
|
427
|
+
v.second = holder->data() + holder->size();
|
|
428
|
+
}
|
|
429
|
+
else
|
|
430
|
+
{
|
|
431
|
+
v.first = 0;
|
|
432
|
+
v.second = 0;
|
|
433
|
+
}
|
|
1071
434
|
}
|
|
1072
|
-
}
|
|
1073
|
-
#else
|
|
1074
|
-
/**
|
|
1075
|
-
* Reads a proxy from the stream.
|
|
1076
|
-
* @param v The proxy as the base ObjectPrx type.
|
|
1077
|
-
*/
|
|
1078
|
-
void read(ObjectPrx& v);
|
|
1079
|
-
|
|
1080
|
-
/**
|
|
1081
|
-
* Reads a typed proxy from the stream.
|
|
1082
|
-
* @param v The proxy as a user-defined type.
|
|
1083
|
-
*/
|
|
1084
|
-
template<typename T> void read(IceInternal::ProxyHandle<T>& v)
|
|
1085
|
-
{
|
|
1086
|
-
_readProxy(this, v); // Generated _readProxy method, necessary for forward declarations.
|
|
1087
|
-
}
|
|
1088
|
-
#endif
|
|
1089
435
|
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
{
|
|
1098
|
-
read(&patchHandle<T>, &v);
|
|
1099
|
-
}
|
|
1100
|
-
#else // C++98 mapping
|
|
1101
|
-
template<typename T> void read(IceInternal::Handle<T>& v)
|
|
1102
|
-
{
|
|
1103
|
-
read(&patchHandle<T>, &v);
|
|
1104
|
-
}
|
|
436
|
+
#if defined(ICE_UNALIGNED) || (defined(_WIN32) && defined(ICE_API_EXPORTS))
|
|
437
|
+
// Optimization with unaligned reads
|
|
438
|
+
void read(std::pair<const std::int16_t*, const std::int16_t*>& v) { unalignedRead(v); }
|
|
439
|
+
void read(std::pair<const std::int32_t*, const std::int32_t*>& v) { unalignedRead(v); }
|
|
440
|
+
void read(std::pair<const std::int64_t*, const std::int64_t*>& v) { unalignedRead(v); }
|
|
441
|
+
void read(std::pair<const float*, const float*>& v) { unalignedRead(v); }
|
|
442
|
+
void read(std::pair<const double*, const double*>& v) { unalignedRead(v); }
|
|
1105
443
|
#endif
|
|
1106
444
|
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
* @param patchAddr Closure data passed to the callback.
|
|
1111
|
-
*/
|
|
1112
|
-
void read(PatchFunc patchFunc, void* patchAddr)
|
|
1113
|
-
{
|
|
1114
|
-
initEncaps();
|
|
1115
|
-
_currentEncaps->decoder->read(patchFunc, patchAddr);
|
|
1116
|
-
}
|
|
1117
|
-
|
|
1118
|
-
/**
|
|
1119
|
-
* Reads an enumerator from the stream.
|
|
1120
|
-
* @param maxValue The maximum enumerator value in the definition.
|
|
1121
|
-
* @return The enumerator value.
|
|
1122
|
-
*/
|
|
1123
|
-
Int readEnum(Int maxValue);
|
|
1124
|
-
|
|
1125
|
-
/**
|
|
1126
|
-
* Extracts a user exception from the stream and throws it.
|
|
1127
|
-
* @param factory If provided, this factory is given the first opportunity to instantiate
|
|
1128
|
-
* the exception. If not provided, or if the factory does not throw an exception when invoked,
|
|
1129
|
-
* the stream will attempt to instantiate the exception using static type information.
|
|
1130
|
-
* @throws UserException The user exception that was unmarshaled.
|
|
1131
|
-
*/
|
|
1132
|
-
void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)) factory = ICE_NULLPTR);
|
|
1133
|
-
|
|
1134
|
-
/**
|
|
1135
|
-
* Skips one optional value with the given format.
|
|
1136
|
-
* @param format The expected format of the optional, if present.
|
|
1137
|
-
*/
|
|
1138
|
-
void skipOptional(OptionalFormat format);
|
|
1139
|
-
|
|
1140
|
-
/**
|
|
1141
|
-
* Skips all remaining optional values.
|
|
1142
|
-
*/
|
|
1143
|
-
void skipOptionals();
|
|
1144
|
-
|
|
1145
|
-
/**
|
|
1146
|
-
* Advances the current stream position by the given number of bytes.
|
|
1147
|
-
* @param size The number of bytes to skip.
|
|
1148
|
-
*/
|
|
1149
|
-
void skip(size_type size)
|
|
1150
|
-
{
|
|
1151
|
-
if(i + size > b.end())
|
|
445
|
+
/// Reads a byte from the stream.
|
|
446
|
+
/// @param[out] v The extracted byte.
|
|
447
|
+
void read(std::byte& v)
|
|
1152
448
|
{
|
|
1153
|
-
|
|
449
|
+
if (i >= b.end())
|
|
450
|
+
{
|
|
451
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
452
|
+
}
|
|
453
|
+
v = *i++;
|
|
1154
454
|
}
|
|
1155
|
-
i += size;
|
|
1156
|
-
}
|
|
1157
455
|
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
void skipSize()
|
|
1162
|
-
{
|
|
1163
|
-
Byte bt;
|
|
1164
|
-
read(bt);
|
|
1165
|
-
if(static_cast<unsigned char>(bt) == 255)
|
|
456
|
+
/// Reads a byte from the stream.
|
|
457
|
+
/// @param[out] v The extracted byte.
|
|
458
|
+
void read(std::uint8_t& v)
|
|
1166
459
|
{
|
|
1167
|
-
|
|
460
|
+
if (i >= b.end())
|
|
461
|
+
{
|
|
462
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
463
|
+
}
|
|
464
|
+
v = static_cast<std::uint8_t>(*i++);
|
|
1168
465
|
}
|
|
1169
|
-
}
|
|
1170
466
|
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
*/
|
|
1175
|
-
size_type pos()
|
|
1176
|
-
{
|
|
1177
|
-
return static_cast<size_t>(i - b.begin());
|
|
1178
|
-
}
|
|
467
|
+
/// Reads a sequence of bytes from the stream.
|
|
468
|
+
/// @param[out] v A vector to hold a copy of the bytes.
|
|
469
|
+
void read(std::vector<std::byte>& v);
|
|
1179
470
|
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
471
|
+
/// Reads a sequence of bytes from the stream.
|
|
472
|
+
/// @param[out] v A pair of pointers into the internal marshaling buffer representing the start and end of the
|
|
473
|
+
/// sequence elements.
|
|
474
|
+
void read(std::pair<const std::byte*, const std::byte*>& v);
|
|
475
|
+
|
|
476
|
+
/// Reads a bool from the stream.
|
|
477
|
+
/// @param[out] v The extracted bool.
|
|
478
|
+
void read(bool& v)
|
|
479
|
+
{
|
|
480
|
+
if (i >= b.end())
|
|
481
|
+
{
|
|
482
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
483
|
+
}
|
|
484
|
+
v = (std::byte{0} != *i++);
|
|
485
|
+
}
|
|
1188
486
|
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
487
|
+
/// Reads a sequence of boolean values from the stream.
|
|
488
|
+
/// @param[out] v A vector to hold a copy of the boolean values.
|
|
489
|
+
void read(std::vector<bool>& v);
|
|
1192
490
|
|
|
1193
|
-
|
|
491
|
+
/// Reads a sequence of boolean values from the stream.
|
|
492
|
+
/// @param[out] v A pair of pointers into the internal marshaling buffer representing the start and end of the
|
|
493
|
+
/// sequence elements.
|
|
494
|
+
void read(std::pair<const bool*, const bool*>& v);
|
|
1194
495
|
|
|
1195
|
-
|
|
1196
|
-
|
|
496
|
+
/// Reads a short into an int16_t.
|
|
497
|
+
/// @param[out] v The extracted int16_t.
|
|
498
|
+
void read(std::int16_t& v);
|
|
1197
499
|
|
|
1198
|
-
|
|
500
|
+
/// Reads a sequence of Slice shorts into a vector of int16_t.
|
|
501
|
+
/// @param[out] v A vector to hold a copy of the int16_t values.
|
|
502
|
+
void read(std::vector<std::int16_t>& v);
|
|
1199
503
|
|
|
1200
|
-
|
|
504
|
+
/// Reads an int from the stream.
|
|
505
|
+
/// @param[out] v The extracted int.
|
|
506
|
+
void read(std::int32_t& v);
|
|
1201
507
|
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
bool readConverted(std::string&, Int);
|
|
508
|
+
/// Reads a sequence of ints from the stream.
|
|
509
|
+
/// @param[out] v A vector to hold a copy of the int values.
|
|
510
|
+
void read(std::vector<std::int32_t>& v);
|
|
1206
511
|
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
// exceptions. Doing so would screw up the whole include file
|
|
1211
|
-
// ordering.
|
|
1212
|
-
//
|
|
1213
|
-
void throwUnmarshalOutOfBoundsException(const char*, int);
|
|
1214
|
-
void throwEncapsulationException(const char*, int);
|
|
512
|
+
/// Reads a long from the stream.
|
|
513
|
+
/// @param[out]v The extracted long.
|
|
514
|
+
void read(std::int64_t& v);
|
|
1215
515
|
|
|
1216
|
-
|
|
516
|
+
/// Reads a sequence of longs from the stream.
|
|
517
|
+
/// @param[out] v A vector to hold a copy of the long values.
|
|
518
|
+
void read(std::vector<std::int64_t>& v);
|
|
1217
519
|
|
|
1218
|
-
|
|
520
|
+
/// Read a float into a float.
|
|
521
|
+
/// @param[out] v The extracted float.
|
|
522
|
+
void read(float& v);
|
|
1219
523
|
|
|
1220
|
-
|
|
1221
|
-
|
|
524
|
+
/// Reads a sequence of floats into a vector of float.
|
|
525
|
+
/// @param[out] v An output vector filled by this function.
|
|
526
|
+
void read(std::vector<float>& v);
|
|
1222
527
|
|
|
1223
|
-
|
|
528
|
+
/// Reads a double into a double.
|
|
529
|
+
/// @param[out] v The extracted double.
|
|
530
|
+
void read(double& v);
|
|
1224
531
|
|
|
1225
|
-
|
|
532
|
+
/// Reads a sequence of doubles into a vector of double.
|
|
533
|
+
/// @param[out] v An output vector filled by this function.
|
|
534
|
+
void read(std::vector<double>& v);
|
|
1226
535
|
|
|
1227
|
-
|
|
536
|
+
/// @endcond
|
|
1228
537
|
|
|
1229
|
-
|
|
1230
|
-
std::function<std::string(int)> compactIdResolver() const;
|
|
1231
|
-
#else
|
|
1232
|
-
CompactIdResolverPtr compactIdResolver() const;
|
|
1233
|
-
#endif
|
|
538
|
+
// We document read functions with an extra parameter.
|
|
1234
539
|
|
|
1235
|
-
|
|
540
|
+
/// Reads a string from the stream.
|
|
541
|
+
/// @param[out] v The unmarshaled string.
|
|
542
|
+
/// @param convert `true` to process the unmarshaled string through the string converter (if installed on the
|
|
543
|
+
/// communicator), `false` otherwise.
|
|
544
|
+
void read(std::string& v, bool convert = true);
|
|
1236
545
|
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
546
|
+
/// Reads a string from the stream.
|
|
547
|
+
/// @param[out] vdata A pointer to the beginning of the string.
|
|
548
|
+
/// @param[out] vsize The number of bytes in the string.
|
|
549
|
+
/// @param convert `true` to process the unmarshaled string through the string converter (if installed on the
|
|
550
|
+
/// communicator), `false` otherwise.
|
|
551
|
+
void read(const char*& vdata, size_t& vsize, bool convert = true);
|
|
1240
552
|
|
|
1241
|
-
|
|
553
|
+
/// Reads a sequence of strings from the stream.
|
|
554
|
+
/// @param[out] v The unmarshaled string sequence.
|
|
555
|
+
/// @param convert `true` to process the unmarshaled string through the string converter (if installed on the
|
|
556
|
+
/// communicator), `false` otherwise.
|
|
557
|
+
void read(std::vector<std::string>& v, bool convert = true);
|
|
1242
558
|
|
|
1243
|
-
|
|
1244
|
-
virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory))) = 0;
|
|
559
|
+
/// @cond INTERNAL
|
|
1245
560
|
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
virtual void endSlice() = 0;
|
|
1250
|
-
virtual void skipSlice() = 0;
|
|
561
|
+
/// Reads a wide string from the stream.
|
|
562
|
+
/// @param[out] v The extracted string.
|
|
563
|
+
void read(std::wstring& v);
|
|
1251
564
|
|
|
1252
|
-
|
|
565
|
+
/// Reads a sequence of wide strings from the stream.
|
|
566
|
+
/// @param[out] v The extracted sequence.
|
|
567
|
+
void read(std::vector<std::wstring>& v);
|
|
568
|
+
|
|
569
|
+
/// Reads a typed proxy from the stream.
|
|
570
|
+
/// @tparam Prx The type of the value to read.
|
|
571
|
+
/// @param[out] v The unmarshaled proxy.
|
|
572
|
+
template<typename Prx, std::enable_if_t<std::is_base_of_v<ObjectPrx, Prx>, bool> = true>
|
|
573
|
+
void read(std::optional<Prx>& v)
|
|
1253
574
|
{
|
|
1254
|
-
|
|
575
|
+
IceInternal::ReferencePtr ref = readReference();
|
|
576
|
+
if (ref)
|
|
577
|
+
{
|
|
578
|
+
v = Prx::_fromReference(ref);
|
|
579
|
+
}
|
|
580
|
+
else
|
|
581
|
+
{
|
|
582
|
+
v = std::nullopt;
|
|
583
|
+
}
|
|
1255
584
|
}
|
|
1256
585
|
|
|
1257
|
-
|
|
586
|
+
/// Reads an instance of a Slice class from the stream.
|
|
587
|
+
/// @tparam T The type of the value to read.
|
|
588
|
+
/// @param[out] v The unmarshaled instance.
|
|
589
|
+
template<typename T, std::enable_if_t<std::is_base_of_v<Value, T>>* = nullptr> void read(std::shared_ptr<T>& v)
|
|
1258
590
|
{
|
|
591
|
+
read(patchValue<T>, &v);
|
|
1259
592
|
}
|
|
1260
593
|
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
_classGraphDepth(0), _valueFactoryManager(f), _typeIdIndex(0)
|
|
594
|
+
/// @private
|
|
595
|
+
/// Reads a value (instance of a Slice class) from the stream.
|
|
596
|
+
/// @param patchFunc The patch callback function.
|
|
597
|
+
/// @param patchAddr Closure data passed to the callback.
|
|
598
|
+
void read(PatchFunc patchFunc, void* patchAddr)
|
|
1267
599
|
{
|
|
600
|
+
initEncaps();
|
|
601
|
+
_currentEncaps->decoder->read(std::move(patchFunc), patchAddr);
|
|
1268
602
|
}
|
|
1269
603
|
|
|
1270
|
-
|
|
1271
|
-
ValuePtr newInstance(const std::string&);
|
|
1272
|
-
|
|
1273
|
-
void addPatchEntry(Int, PatchFunc, void*);
|
|
1274
|
-
void unmarshal(Int, const ValuePtr&);
|
|
1275
|
-
|
|
1276
|
-
typedef std::map<Int, ValuePtr> IndexToPtrMap;
|
|
1277
|
-
typedef std::map<Int, std::string> TypeIdMap;
|
|
1278
|
-
|
|
1279
|
-
struct PatchEntry
|
|
1280
|
-
{
|
|
1281
|
-
PatchFunc patchFunc;
|
|
1282
|
-
void* patchAddr;
|
|
1283
|
-
size_t classGraphDepth;
|
|
1284
|
-
};
|
|
1285
|
-
typedef std::vector<PatchEntry> PatchList;
|
|
1286
|
-
typedef std::map<Int, PatchList> PatchMap;
|
|
604
|
+
/// @endcond
|
|
1287
605
|
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
size_t _classGraphDepth;
|
|
1293
|
-
Ice::ValueFactoryManagerPtr _valueFactoryManager;
|
|
606
|
+
/// Reads an enumerator from the stream.
|
|
607
|
+
/// @param maxValue The maximum enumerator value in the definition.
|
|
608
|
+
/// @return The enumerator value.
|
|
609
|
+
std::int32_t readEnum(std::int32_t maxValue);
|
|
1294
610
|
|
|
1295
|
-
|
|
1296
|
-
|
|
611
|
+
/// Reads a user exception from the stream and throws it.
|
|
612
|
+
/// @param factory The factory function that creates the exception instance. When null, the exception is created
|
|
613
|
+
/// using helper functions generated by the Slice compiler.
|
|
614
|
+
/// @throws UserException The user exception that was unmarshaled.
|
|
615
|
+
void throwException(UserExceptionFactory factory = nullptr);
|
|
1297
616
|
|
|
1298
|
-
|
|
617
|
+
/// Skips one optional value with the given format.
|
|
618
|
+
/// @param format The expected format of the optional, if present.
|
|
619
|
+
void skipOptional(OptionalFormat format);
|
|
1299
620
|
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
TypeIdMap _typeIdMap;
|
|
1303
|
-
Int _typeIdIndex;
|
|
1304
|
-
ValueList _valueList;
|
|
1305
|
-
};
|
|
621
|
+
/// Skips all remaining optional values.
|
|
622
|
+
void skipOptionals();
|
|
1306
623
|
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
624
|
+
/// Advances the current stream position by the given number of bytes.
|
|
625
|
+
/// @param size The number of bytes to skip.
|
|
626
|
+
void skip(size_type size)
|
|
627
|
+
{
|
|
628
|
+
if (i + size > b.end())
|
|
629
|
+
{
|
|
630
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
631
|
+
}
|
|
632
|
+
i += size;
|
|
633
|
+
}
|
|
1310
634
|
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
EncapsDecoder(stream, encaps, sliceValues, classGraphDepthMax, f),
|
|
1314
|
-
_sliceType(NoSlice)
|
|
635
|
+
/// Reads a size at the current position and skips that number of bytes.
|
|
636
|
+
void skipSize()
|
|
1315
637
|
{
|
|
638
|
+
std::uint8_t bt;
|
|
639
|
+
read(bt);
|
|
640
|
+
if (static_cast<unsigned char>(bt) == 255)
|
|
641
|
+
{
|
|
642
|
+
skip(4);
|
|
643
|
+
}
|
|
1316
644
|
}
|
|
1317
645
|
|
|
1318
|
-
|
|
1319
|
-
|
|
646
|
+
/// Gets the current position of the stream.
|
|
647
|
+
/// @return The current position.
|
|
648
|
+
size_type pos() { return static_cast<size_t>(i - b.begin()); }
|
|
1320
649
|
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
virtual void endSlice();
|
|
1325
|
-
virtual void skipSlice();
|
|
650
|
+
/// Sets a new position for the stream.
|
|
651
|
+
/// @param p The new position.
|
|
652
|
+
void pos(size_type p) { i = b.begin() + p; }
|
|
1326
653
|
|
|
1327
|
-
|
|
654
|
+
/// @private
|
|
655
|
+
bool readOptImpl(std::int32_t, OptionalFormat);
|
|
1328
656
|
|
|
1329
657
|
private:
|
|
658
|
+
#if defined(ICE_UNALIGNED) || (defined(_WIN32) && defined(ICE_API_EXPORTS))
|
|
659
|
+
template<typename T> void unalignedRead(std::pair<const T*, const T*>& v)
|
|
660
|
+
{
|
|
661
|
+
int sz = readAndCheckSeqSize(static_cast<int>(sizeof(T)));
|
|
1330
662
|
|
|
1331
|
-
|
|
663
|
+
if (sz > 0)
|
|
664
|
+
{
|
|
665
|
+
v.first = reinterpret_cast<T*>(i);
|
|
666
|
+
i += sz * static_cast<int>(sizeof(T));
|
|
667
|
+
v.second = reinterpret_cast<T*>(i);
|
|
668
|
+
}
|
|
669
|
+
else
|
|
670
|
+
{
|
|
671
|
+
v.first = v.second = nullptr;
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
#endif
|
|
1332
675
|
|
|
1333
|
-
//
|
|
1334
|
-
|
|
1335
|
-
|
|
676
|
+
// The primary constructor, called by all other constructors. It requires a non-null instance.
|
|
677
|
+
InputStream(
|
|
678
|
+
IceInternal::Instance* instance,
|
|
679
|
+
EncodingVersion encoding,
|
|
680
|
+
IceInternal::Buffer&& buf,
|
|
681
|
+
SliceLoaderPtr sliceLoader);
|
|
1336
682
|
|
|
1337
|
-
//
|
|
1338
|
-
|
|
1339
|
-
std::string _typeId;
|
|
1340
|
-
};
|
|
683
|
+
// Reads a reference from the stream; the return value can be null.
|
|
684
|
+
IceInternal::ReferencePtr readReference();
|
|
1341
685
|
|
|
1342
|
-
|
|
1343
|
-
{
|
|
1344
|
-
public:
|
|
686
|
+
bool readConverted(std::string&, std::int32_t);
|
|
1345
687
|
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
688
|
+
void throwUnmarshalOutOfBoundsException(const char*, int);
|
|
689
|
+
|
|
690
|
+
class Encaps;
|
|
691
|
+
enum SliceType
|
|
1350
692
|
{
|
|
1351
|
-
|
|
693
|
+
NoSlice,
|
|
694
|
+
ValueSlice,
|
|
695
|
+
ExceptionSlice
|
|
696
|
+
};
|
|
1352
697
|
|
|
1353
|
-
|
|
1354
|
-
virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)));
|
|
698
|
+
void traceSkipSlice(std::string_view, SliceType) const;
|
|
1355
699
|
|
|
1356
|
-
|
|
1357
|
-
virtual SlicedDataPtr endInstance(bool);
|
|
1358
|
-
virtual const std::string& startSlice();
|
|
1359
|
-
virtual void endSlice();
|
|
1360
|
-
virtual void skipSlice();
|
|
700
|
+
using ValueList = std::vector<ValuePtr>;
|
|
1361
701
|
|
|
1362
|
-
|
|
702
|
+
class ICE_API EncapsDecoder
|
|
703
|
+
{
|
|
704
|
+
public:
|
|
705
|
+
EncapsDecoder(const EncapsDecoder&) = delete;
|
|
706
|
+
virtual ~EncapsDecoder();
|
|
1363
707
|
|
|
1364
|
-
|
|
708
|
+
EncapsDecoder& operator=(const EncapsDecoder&) = delete;
|
|
1365
709
|
|
|
1366
|
-
|
|
1367
|
-
|
|
710
|
+
virtual void read(PatchFunc, void*) = 0;
|
|
711
|
+
virtual void throwException(UserExceptionFactory) = 0;
|
|
1368
712
|
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
void
|
|
1374
|
-
};
|
|
1375
|
-
typedef std::vector<IndirectPatchEntry> IndirectPatchList;
|
|
713
|
+
virtual void startInstance(SliceType) = 0;
|
|
714
|
+
virtual SlicedDataPtr endInstance() = 0;
|
|
715
|
+
virtual void startSlice() = 0;
|
|
716
|
+
virtual void endSlice() = 0;
|
|
717
|
+
virtual void skipSlice() = 0;
|
|
1376
718
|
|
|
1377
|
-
|
|
1378
|
-
typedef std::vector<IndexList> IndexListList;
|
|
719
|
+
virtual bool readOptional(std::int32_t, OptionalFormat) { return false; }
|
|
1379
720
|
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
721
|
+
virtual void readPendingValues() {}
|
|
722
|
+
|
|
723
|
+
protected:
|
|
724
|
+
EncapsDecoder(InputStream* stream, Encaps* encaps, std::int32_t classGraphDepthMax)
|
|
725
|
+
: _stream(stream),
|
|
726
|
+
_encaps(encaps),
|
|
727
|
+
_classGraphDepthMax(classGraphDepthMax)
|
|
1383
728
|
{
|
|
1384
|
-
if(previous)
|
|
1385
|
-
{
|
|
1386
|
-
previous->next = this;
|
|
1387
|
-
}
|
|
1388
729
|
}
|
|
1389
730
|
|
|
1390
|
-
|
|
731
|
+
std::string readTypeId(bool);
|
|
732
|
+
ValuePtr newInstance(std::string_view);
|
|
733
|
+
|
|
734
|
+
void addPatchEntry(std::int32_t, const PatchFunc&, void*);
|
|
735
|
+
void unmarshal(std::int32_t, const ValuePtr&);
|
|
736
|
+
|
|
737
|
+
using IndexToPtrMap = std::map<std::int32_t, ValuePtr>;
|
|
738
|
+
using TypeIdMap = std::map<std::int32_t, std::string>;
|
|
739
|
+
|
|
740
|
+
/// @private
|
|
741
|
+
struct PatchEntry
|
|
742
|
+
{
|
|
743
|
+
PatchFunc patchFunc;
|
|
744
|
+
void* patchAddr;
|
|
745
|
+
std::int32_t classGraphDepth;
|
|
746
|
+
};
|
|
747
|
+
using PatchList = std::vector<PatchEntry>;
|
|
748
|
+
using PatchMap = std::map<std::int32_t, PatchList>;
|
|
749
|
+
|
|
750
|
+
InputStream* _stream;
|
|
751
|
+
Encaps* _encaps;
|
|
752
|
+
const std::int32_t _classGraphDepthMax;
|
|
753
|
+
std::int32_t _classGraphDepth{0};
|
|
754
|
+
|
|
755
|
+
// Encapsulation attributes for object un-marshaling
|
|
756
|
+
PatchMap _patchMap;
|
|
757
|
+
|
|
758
|
+
private:
|
|
759
|
+
// Encapsulation attributes for object un-marshaling
|
|
760
|
+
IndexToPtrMap _unmarshaledMap;
|
|
761
|
+
TypeIdMap _typeIdMap;
|
|
762
|
+
std::int32_t _typeIdIndex{0};
|
|
763
|
+
ValueList _valueList;
|
|
764
|
+
};
|
|
765
|
+
|
|
766
|
+
class ICE_API EncapsDecoder10 : public EncapsDecoder
|
|
767
|
+
{
|
|
768
|
+
public:
|
|
769
|
+
EncapsDecoder10(InputStream* stream, Encaps* encaps, std::int32_t classGraphDepthMax)
|
|
770
|
+
: EncapsDecoder(stream, encaps, classGraphDepthMax)
|
|
1391
771
|
{
|
|
1392
|
-
if(next)
|
|
1393
|
-
{
|
|
1394
|
-
delete next;
|
|
1395
|
-
}
|
|
1396
772
|
}
|
|
1397
773
|
|
|
774
|
+
void read(PatchFunc, void*) override;
|
|
775
|
+
void throwException(UserExceptionFactory) override;
|
|
776
|
+
|
|
777
|
+
void startInstance(SliceType) override;
|
|
778
|
+
SlicedDataPtr endInstance() override;
|
|
779
|
+
void startSlice() override;
|
|
780
|
+
void endSlice() override;
|
|
781
|
+
void skipSlice() override;
|
|
782
|
+
|
|
783
|
+
void readPendingValues() override;
|
|
784
|
+
|
|
785
|
+
private:
|
|
786
|
+
void readInstance();
|
|
787
|
+
|
|
1398
788
|
// Instance attributes
|
|
1399
|
-
SliceType
|
|
1400
|
-
bool
|
|
1401
|
-
SliceInfoSeq slices; // Preserved slices.
|
|
1402
|
-
IndexListList indirectionTables;
|
|
789
|
+
SliceType _sliceType{NoSlice};
|
|
790
|
+
bool _skipFirstSlice{false};
|
|
1403
791
|
|
|
1404
792
|
// Slice attributes
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
std::string typeId;
|
|
1408
|
-
int compactId;
|
|
1409
|
-
IndirectPatchList indirectPatchList;
|
|
1410
|
-
|
|
1411
|
-
InstanceData* previous;
|
|
1412
|
-
InstanceData* next;
|
|
793
|
+
std::int32_t _sliceSize{0};
|
|
794
|
+
std::string _typeId;
|
|
1413
795
|
};
|
|
1414
|
-
InstanceData _preAllocatedInstanceData;
|
|
1415
|
-
InstanceData* _current;
|
|
1416
796
|
|
|
1417
|
-
|
|
797
|
+
class ICE_API EncapsDecoder11 : public EncapsDecoder
|
|
1418
798
|
{
|
|
1419
|
-
|
|
799
|
+
public:
|
|
800
|
+
EncapsDecoder11(InputStream* stream, Encaps* encaps, std::int32_t classGraphDepthMax)
|
|
801
|
+
: EncapsDecoder(stream, encaps, classGraphDepthMax),
|
|
802
|
+
_preAllocatedInstanceData(nullptr)
|
|
1420
803
|
{
|
|
1421
|
-
_current = &_preAllocatedInstanceData;
|
|
1422
804
|
}
|
|
1423
|
-
|
|
805
|
+
|
|
806
|
+
void read(PatchFunc, void*) override;
|
|
807
|
+
void throwException(UserExceptionFactory) override;
|
|
808
|
+
|
|
809
|
+
void startInstance(SliceType) override;
|
|
810
|
+
SlicedDataPtr endInstance() override;
|
|
811
|
+
void startSlice() override;
|
|
812
|
+
void endSlice() override;
|
|
813
|
+
void skipSlice() override;
|
|
814
|
+
|
|
815
|
+
bool readOptional(std::int32_t, OptionalFormat) override;
|
|
816
|
+
|
|
817
|
+
private:
|
|
818
|
+
std::int32_t readInstance(std::int32_t, const PatchFunc&, void*);
|
|
819
|
+
SlicedDataPtr readSlicedData();
|
|
820
|
+
|
|
821
|
+
struct IndirectPatchEntry
|
|
1424
822
|
{
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
823
|
+
std::int32_t index;
|
|
824
|
+
PatchFunc patchFunc;
|
|
825
|
+
void* patchAddr;
|
|
826
|
+
};
|
|
827
|
+
using IndirectPatchList = std::vector<IndirectPatchEntry>;
|
|
1430
828
|
|
|
1431
|
-
|
|
1432
|
-
|
|
829
|
+
using IndexList = std::vector<std::int32_t>;
|
|
830
|
+
using IndexListList = std::vector<IndexList>;
|
|
1433
831
|
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
832
|
+
struct InstanceData
|
|
833
|
+
{
|
|
834
|
+
InstanceData(InstanceData* p) : previous(p)
|
|
835
|
+
{
|
|
836
|
+
if (previous)
|
|
837
|
+
{
|
|
838
|
+
previous->next = this;
|
|
839
|
+
}
|
|
840
|
+
}
|
|
1437
841
|
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
delete decoder;
|
|
1446
|
-
}
|
|
1447
|
-
void reset()
|
|
1448
|
-
{
|
|
1449
|
-
// Inlined for performance reasons.
|
|
1450
|
-
delete decoder;
|
|
1451
|
-
decoder = 0;
|
|
842
|
+
~InstanceData()
|
|
843
|
+
{
|
|
844
|
+
if (next)
|
|
845
|
+
{
|
|
846
|
+
delete next;
|
|
847
|
+
}
|
|
848
|
+
}
|
|
1452
849
|
|
|
1453
|
-
|
|
1454
|
-
|
|
850
|
+
// Instance attributes
|
|
851
|
+
SliceType sliceType{NoSlice};
|
|
852
|
+
bool skipFirstSlice{false};
|
|
853
|
+
SliceInfoSeq slices; // Preserved slices.
|
|
854
|
+
IndexListList indirectionTables;
|
|
855
|
+
|
|
856
|
+
// Slice attributes
|
|
857
|
+
std::uint8_t sliceFlags{0};
|
|
858
|
+
std::int32_t sliceSize{0};
|
|
859
|
+
std::string typeId;
|
|
860
|
+
int compactId{-1};
|
|
861
|
+
IndirectPatchList indirectPatchList;
|
|
862
|
+
|
|
863
|
+
InstanceData* previous{nullptr};
|
|
864
|
+
InstanceData* next{nullptr};
|
|
865
|
+
};
|
|
866
|
+
InstanceData _preAllocatedInstanceData;
|
|
867
|
+
InstanceData* _current{nullptr};
|
|
868
|
+
|
|
869
|
+
void push(SliceType sliceType)
|
|
870
|
+
{
|
|
871
|
+
if (!_current)
|
|
872
|
+
{
|
|
873
|
+
_current = &_preAllocatedInstanceData;
|
|
874
|
+
}
|
|
875
|
+
else
|
|
876
|
+
{
|
|
877
|
+
_current = _current->next ? _current->next : new InstanceData(_current);
|
|
878
|
+
}
|
|
879
|
+
_current->sliceType = sliceType;
|
|
880
|
+
_current->skipFirstSlice = false;
|
|
881
|
+
}
|
|
1455
882
|
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
EncodingVersion encoding;
|
|
883
|
+
std::int32_t _valueIdIndex{1}; // The ID of the next value to unmarshal.
|
|
884
|
+
};
|
|
1459
885
|
|
|
1460
|
-
|
|
886
|
+
class Encaps
|
|
887
|
+
{
|
|
888
|
+
public:
|
|
889
|
+
Encaps() = default;
|
|
890
|
+
Encaps(const Encaps&) = delete;
|
|
891
|
+
~Encaps() { delete decoder; }
|
|
892
|
+
Encaps& operator=(const Encaps&) = delete;
|
|
1461
893
|
|
|
1462
|
-
|
|
1463
|
-
|
|
894
|
+
void reset()
|
|
895
|
+
{
|
|
896
|
+
// Inlined for performance reasons.
|
|
897
|
+
delete decoder;
|
|
898
|
+
decoder = nullptr;
|
|
1464
899
|
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
// stack-allocated stream still holds it.
|
|
1468
|
-
//
|
|
1469
|
-
IceInternal::Instance* _instance;
|
|
900
|
+
previous = nullptr;
|
|
901
|
+
}
|
|
1470
902
|
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
//
|
|
1475
|
-
EncodingVersion _encoding;
|
|
903
|
+
Container::size_type start{0};
|
|
904
|
+
std::int32_t sz;
|
|
905
|
+
EncodingVersion encoding;
|
|
1476
906
|
|
|
1477
|
-
|
|
907
|
+
EncapsDecoder* decoder{nullptr};
|
|
1478
908
|
|
|
1479
|
-
|
|
909
|
+
Encaps* previous{nullptr};
|
|
910
|
+
};
|
|
1480
911
|
|
|
1481
|
-
|
|
912
|
+
// Optimization. The instance may not be deleted while a stack-allocated stream still holds it.
|
|
913
|
+
IceInternal::Instance* const _instance;
|
|
1482
914
|
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
915
|
+
//
|
|
916
|
+
// The encoding version to use when there's no encapsulation to
|
|
917
|
+
// read from. This is for example used to read message headers.
|
|
918
|
+
//
|
|
919
|
+
EncodingVersion _encoding;
|
|
1486
920
|
|
|
1487
|
-
|
|
921
|
+
Encaps* _currentEncaps{nullptr};
|
|
1488
922
|
|
|
1489
|
-
|
|
923
|
+
void initEncaps();
|
|
1490
924
|
|
|
1491
|
-
|
|
925
|
+
Encaps _preAllocatedEncaps;
|
|
1492
926
|
|
|
1493
|
-
|
|
927
|
+
// Retrieved during construction and cached.
|
|
928
|
+
const std::int32_t _classGraphDepthMax;
|
|
1494
929
|
|
|
1495
|
-
|
|
1496
|
-
int _minSeqSize;
|
|
930
|
+
void* _closure{nullptr};
|
|
1497
931
|
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
#ifdef ICE_CPP11_MAPPING
|
|
1501
|
-
std::function<std::string(int)> _compactIdResolver;
|
|
1502
|
-
#else
|
|
1503
|
-
CompactIdResolverPtr _compactIdResolver;
|
|
1504
|
-
#endif
|
|
932
|
+
int _startSeq{-1};
|
|
933
|
+
int _minSeqSize{0};
|
|
1505
934
|
|
|
1506
|
-
|
|
1507
|
-
std::vector<std::function<void()>> _deleters;
|
|
1508
|
-
#endif
|
|
935
|
+
const SliceLoaderPtr _sliceLoader; // never null
|
|
1509
936
|
|
|
1510
|
-
|
|
937
|
+
std::vector<std::function<void()>> _deleters;
|
|
938
|
+
};
|
|
1511
939
|
|
|
1512
940
|
} // End namespace Ice
|
|
1513
941
|
|