zeroc-ice 3.7.9.1 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/dist/IceRuby/Communicator.cpp +575 -0
- data/dist/IceRuby/Communicator.h +19 -0
- data/dist/IceRuby/Config.h +77 -0
- data/dist/IceRuby/Connection.cpp +428 -0
- data/dist/IceRuby/Connection.h +20 -0
- data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
- data/dist/IceRuby/DefaultSliceLoader.h +25 -0
- data/dist/IceRuby/Endpoint.cpp +342 -0
- data/dist/IceRuby/Endpoint.h +18 -0
- data/dist/IceRuby/ImplicitContext.cpp +143 -0
- data/dist/IceRuby/ImplicitContext.h +16 -0
- data/dist/IceRuby/Init.cpp +36 -0
- data/dist/IceRuby/Logger.cpp +146 -0
- data/dist/IceRuby/Logger.h +19 -0
- data/dist/IceRuby/Operation.cpp +623 -0
- data/dist/IceRuby/Operation.h +28 -0
- data/dist/IceRuby/Properties.cpp +413 -0
- data/dist/IceRuby/Properties.h +16 -0
- data/dist/IceRuby/Proxy.cpp +926 -0
- data/dist/IceRuby/Proxy.h +21 -0
- data/dist/IceRuby/RubySliceLoader.cpp +39 -0
- data/dist/IceRuby/RubySliceLoader.h +27 -0
- data/dist/IceRuby/Slice.cpp +199 -0
- data/dist/IceRuby/Slice.h +13 -0
- data/dist/IceRuby/Types.cpp +3133 -0
- data/dist/IceRuby/Types.h +533 -0
- data/dist/IceRuby/Util.cpp +553 -0
- data/dist/IceRuby/Util.h +485 -0
- 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 +14 -0
- data/dist/ice/cpp/include/Ice/Buffer.h +159 -0
- 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 +60 -0
- 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 +16 -0
- 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 +56 -0
- data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
- data/dist/ice/cpp/include/Ice/Format.h +22 -0
- data/dist/ice/cpp/include/Ice/Ice.h +60 -0
- data/dist/ice/cpp/include/Ice/IconvStringConverter.h +216 -0
- 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 +143 -0
- data/dist/ice/cpp/include/Ice/InputStream.h +942 -0
- data/dist/ice/cpp/include/Ice/InstanceF.h +14 -0
- 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 +162 -0
- data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
- data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +54 -0
- data/dist/ice/cpp/include/Ice/Object.h +168 -0
- 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 +16 -0
- data/dist/ice/cpp/include/Ice/ObserverHelper.h +164 -0
- data/dist/ice/cpp/include/Ice/OutgoingAsync.h +512 -0
- data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
- data/dist/ice/cpp/include/Ice/OutputStream.h +872 -0
- 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/Ice/PopDisableWarnings.h +16 -0
- 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 +742 -0
- data/dist/ice/cpp/include/Ice/ProxyF.h +11 -0
- 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 +14 -0
- data/dist/ice/cpp/include/Ice/RequestHandlerF.h +20 -0
- data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +268 -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 +278 -0
- data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
- data/dist/ice/cpp/include/Ice/Service.h +219 -0
- data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
- data/dist/ice/cpp/include/Ice/SlicedData.h +125 -0
- data/dist/ice/cpp/include/Ice/SlicedDataF.h +30 -0
- data/dist/ice/cpp/include/Ice/StreamHelpers.h +652 -0
- data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
- data/dist/ice/cpp/include/Ice/StringConverter.h +167 -0
- 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 +16 -0
- data/dist/ice/cpp/include/Ice/UserException.h +46 -0
- data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +15 -0
- data/dist/ice/cpp/include/Ice/Value.h +127 -0
- data/dist/ice/cpp/include/Ice/ValueF.h +16 -0
- data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +28 -0
- data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +28 -0
- data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +70 -0
- data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
- data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +74 -0
- data/dist/ice/cpp/include/generated/Ice/Identity.h +108 -0
- data/dist/ice/cpp/include/generated/Ice/Locator.h +542 -0
- data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
- data/dist/ice/cpp/include/generated/Ice/Metrics.h +1103 -0
- data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
- data/dist/ice/cpp/include/generated/Ice/Process.h +245 -0
- data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +314 -0
- data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
- data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +724 -0
- data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
- data/dist/ice/cpp/include/generated/Ice/Router.h +496 -0
- data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +37 -0
- data/dist/ice/cpp/include/generated/Ice/Version.h +112 -0
- 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 +41 -0
- data/dist/ice/cpp/src/Ice/AcceptorF.h +17 -0
- 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 +58 -0
- data/dist/ice/cpp/src/Ice/ArgVector.h +30 -0
- data/dist/ice/cpp/src/Ice/Base64.cpp +263 -0
- data/dist/ice/cpp/src/Ice/Base64.h +26 -0
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +199 -0
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +49 -0
- data/dist/ice/cpp/src/Ice/Buffer.cpp +187 -0
- data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +373 -0
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +65 -0
- 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 +227 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +51 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +1758 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactory.h +264 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +17 -0
- data/dist/ice/cpp/src/Ice/ConnectionI.cpp +3563 -0
- data/dist/ice/cpp/src/Ice/ConnectionI.h +429 -0
- data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
- data/dist/ice/cpp/src/Ice/Connector.h +38 -0
- data/dist/ice/cpp/src/Ice/ConnectorF.h +14 -0
- data/dist/ice/cpp/src/Ice/ConsoleUtil.cpp +136 -0
- 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 +40 -0
- data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +81 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +38 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +14 -0
- data/dist/ice/cpp/src/Ice/Demangle.cpp +25 -0
- data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
- data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +216 -0
- 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 +165 -0
- data/dist/ice/cpp/src/Ice/EndpointFactory.h +96 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +14 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +180 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +42 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/EndpointI.cpp +128 -0
- data/dist/ice/cpp/src/Ice/EndpointI.h +150 -0
- data/dist/ice/cpp/src/Ice/EndpointIF.h +21 -0
- data/dist/ice/cpp/src/Ice/EventHandler.cpp +9 -0
- data/dist/ice/cpp/src/Ice/EventHandler.h +71 -0
- data/dist/ice/cpp/src/Ice/EventHandlerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Exception.cpp +5 -0
- 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 +67 -0
- data/dist/ice/cpp/src/Ice/HttpParser.cpp +684 -0
- data/dist/ice/cpp/src/Ice/HttpParser.h +112 -0
- data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +593 -0
- data/dist/ice/cpp/src/Ice/IPEndpointI.h +106 -0
- data/dist/ice/cpp/src/Ice/IPEndpointIF.h +17 -0
- 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 +160 -0
- data/dist/ice/cpp/src/Ice/InputStream.cpp +2206 -0
- data/dist/ice/cpp/src/Ice/Instance.cpp +1956 -0
- data/dist/ice/cpp/src/Ice/Instance.h +225 -0
- data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +959 -0
- data/dist/ice/cpp/src/Ice/InstrumentationI.h +235 -0
- 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 +851 -0
- data/dist/ice/cpp/src/Ice/LocatorInfo.h +176 -0
- data/dist/ice/cpp/src/Ice/LocatorInfoF.h +20 -0
- data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +774 -0
- data/dist/ice/cpp/src/Ice/LoggerAdminI.h +31 -0
- data/dist/ice/cpp/src/Ice/LoggerI.cpp +234 -0
- data/dist/ice/cpp/src/Ice/LoggerI.h +47 -0
- 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 +76 -0
- data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
- data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +608 -0
- 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 +1927 -0
- data/dist/ice/cpp/src/Ice/Network.h +265 -0
- data/dist/ice/cpp/src/Ice/NetworkF.h +11 -0
- data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +306 -0
- data/dist/ice/cpp/src/Ice/NetworkProxy.h +67 -0
- data/dist/ice/cpp/src/Ice/NetworkProxyF.h +14 -0
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +55 -0
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +35 -0
- data/dist/ice/cpp/src/Ice/Object.cpp +249 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +348 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +53 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +14 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +1383 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +163 -0
- data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +75 -0
- 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 +368 -0
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +66 -0
- data/dist/ice/cpp/src/Ice/Options.cpp +980 -0
- data/dist/ice/cpp/src/Ice/Options.h +119 -0
- data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +1106 -0
- data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
- data/dist/ice/cpp/src/Ice/OutputStream.cpp +1454 -0
- 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 +344 -0
- data/dist/ice/cpp/src/Ice/PluginManagerI.h +54 -0
- data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
- data/dist/ice/cpp/src/Ice/PropertyNames.cpp +606 -0
- data/dist/ice/cpp/src/Ice/PropertyNames.h +63 -0
- 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 +159 -0
- data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +186 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstance.h +74 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +14 -0
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +29 -0
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +35 -0
- data/dist/ice/cpp/src/Ice/Proxy.cpp +541 -0
- 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 +1584 -0
- data/dist/ice/cpp/src/Ice/Reference.h +339 -0
- data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +830 -0
- data/dist/ice/cpp/src/Ice/ReferenceFactory.h +58 -0
- data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +14 -0
- data/dist/ice/cpp/src/Ice/RequestHandler.cpp +28 -0
- data/dist/ice/cpp/src/Ice/RequestHandler.h +53 -0
- 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 +151 -0
- data/dist/ice/cpp/src/Ice/RetryQueue.h +59 -0
- data/dist/ice/cpp/src/Ice/RetryQueueF.h +14 -0
- data/dist/ice/cpp/src/Ice/RouterInfo.cpp +275 -0
- data/dist/ice/cpp/src/Ice/RouterInfo.h +95 -0
- data/dist/ice/cpp/src/Ice/RouterInfoF.h +17 -0
- data/dist/ice/cpp/src/Ice/SHA1.cpp +195 -0
- 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 +513 -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 +635 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
- data/dist/ice/cpp/src/Ice/SSL/RFC2253.cpp +487 -0
- 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 +72 -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 +654 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +104 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1437 -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 +1085 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +822 -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 +1061 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +222 -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 +1270 -0
- data/dist/ice/cpp/src/Ice/Selector.h +235 -0
- data/dist/ice/cpp/src/Ice/ServantManager.cpp +547 -0
- data/dist/ice/cpp/src/Ice/ServantManager.h +66 -0
- data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Service.cpp +1790 -0
- data/dist/ice/cpp/src/Ice/SharedContext.h +33 -0
- data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
- data/dist/ice/cpp/src/Ice/SlicedData.cpp +48 -0
- data/dist/ice/cpp/src/Ice/StreamSocket.cpp +472 -0
- data/dist/ice/cpp/src/Ice/StreamSocket.h +73 -0
- data/dist/ice/cpp/src/Ice/StringConverter.cpp +582 -0
- data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
- data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +160 -0
- data/dist/ice/cpp/src/Ice/SysLoggerI.h +34 -0
- data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +65 -0
- data/dist/ice/cpp/src/Ice/SystemdJournalI.h +33 -0
- data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
- data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +213 -0
- data/dist/ice/cpp/src/Ice/TcpAcceptor.h +55 -0
- data/dist/ice/cpp/src/Ice/TcpConnector.cpp +128 -0
- data/dist/ice/cpp/src/Ice/TcpConnector.h +36 -0
- data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +411 -0
- data/dist/ice/cpp/src/Ice/TcpEndpointI.h +86 -0
- data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +147 -0
- data/dist/ice/cpp/src/Ice/TcpTransceiver.h +53 -0
- data/dist/ice/cpp/src/Ice/ThreadPool.cpp +1110 -0
- data/dist/ice/cpp/src/Ice/ThreadPool.h +305 -0
- 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 +169 -0
- data/dist/ice/cpp/src/Ice/Timer.h +212 -0
- data/dist/ice/cpp/src/Ice/TraceLevels.cpp +20 -0
- data/dist/ice/cpp/src/Ice/TraceLevels.h +39 -0
- data/dist/ice/cpp/src/Ice/TraceLevelsF.h +14 -0
- data/dist/ice/cpp/src/Ice/TraceUtil.cpp +399 -0
- data/dist/ice/cpp/src/Ice/TraceUtil.h +41 -0
- data/dist/ice/cpp/src/Ice/Transceiver.cpp +14 -0
- data/dist/ice/cpp/src/Ice/Transceiver.h +52 -0
- data/dist/ice/cpp/src/Ice/TransceiverF.h +23 -0
- data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
- data/dist/ice/cpp/src/Ice/UdpConnector.cpp +131 -0
- data/dist/ice/cpp/src/Ice/UdpConnector.h +36 -0
- data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +480 -0
- data/dist/ice/cpp/src/Ice/UdpEndpointI.h +92 -0
- data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +786 -0
- data/dist/ice/cpp/src/Ice/UdpTransceiver.h +90 -0
- data/dist/ice/cpp/src/Ice/UndefSysMacros.h +37 -0
- 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 +145 -0
- data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +87 -0
- data/dist/ice/cpp/src/Ice/WSAcceptor.h +46 -0
- data/dist/ice/cpp/src/Ice/WSConnector.cpp +87 -0
- data/dist/ice/cpp/src/Ice/WSConnector.h +36 -0
- data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +455 -0
- data/dist/ice/cpp/src/Ice/WSEndpoint.h +82 -0
- data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +1715 -0
- data/dist/ice/cpp/src/Ice/WSTransceiver.h +135 -0
- data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/Identity.cpp +47 -0
- data/dist/ice/cpp/src/Ice/generated/Locator.cpp +752 -0
- data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
- data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +1205 -0
- data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
- data/dist/ice/cpp/src/Ice/generated/Process.cpp +330 -0
- data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +443 -0
- data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +851 -0
- data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
- data/dist/ice/cpp/src/Ice/generated/Router.cpp +660 -0
- data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +39 -0
- data/dist/ice/cpp/src/Ice/generated/Version.cpp +54 -0
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +202 -0
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +68 -0
- data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +494 -0
- data/dist/ice/cpp/src/IceDiscovery/LookupI.h +168 -0
- data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +155 -0
- data/dist/ice/cpp/src/IceDiscovery/PluginI.h +31 -0
- data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +24 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +822 -0
- 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 +96 -0
- data/dist/ice/cpp/src/Slice/FileTracker.h +44 -0
- data/dist/ice/cpp/src/Slice/Grammar.cpp +4125 -0
- data/dist/ice/cpp/src/Slice/Grammar.h +138 -0
- data/dist/ice/cpp/src/Slice/GrammarUtil.h +128 -0
- data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +473 -0
- data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
- data/dist/ice/cpp/src/Slice/Parser.cpp +4906 -0
- data/dist/ice/cpp/src/Slice/Parser.h +1175 -0
- data/dist/ice/cpp/src/Slice/Preprocessor.cpp +295 -0
- data/dist/ice/cpp/src/Slice/Preprocessor.h +44 -0
- data/dist/ice/cpp/src/Slice/Scanner.cpp +3445 -0
- data/dist/ice/cpp/src/Slice/SliceUtil.cpp +790 -0
- data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +448 -0
- data/dist/ice/cpp/src/Slice/Util.h +134 -0
- data/dist/ice/cpp/src/slice2rb/Main.cpp +33 -0
- 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/mcpp/internal.H +530 -0
- data/dist/ice/slice/Glacier2/Metrics.ice +47 -0
- data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +55 -0
- data/dist/ice/slice/Glacier2/Router.ice +93 -0
- data/dist/ice/slice/Glacier2/SSLInfo.ice +42 -0
- data/dist/ice/slice/Glacier2/Session.ice +133 -0
- data/dist/ice/slice/Ice/BuiltinSequences.ice +54 -0
- data/dist/ice/slice/Ice/Context.ice +24 -0
- data/dist/ice/slice/Ice/EndpointTypes.ice +50 -0
- data/dist/ice/slice/Ice/Identity.ice +36 -0
- data/dist/ice/slice/Ice/Locator.ice +74 -0
- data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
- data/dist/ice/slice/Ice/Metrics.ice +201 -0
- data/dist/ice/slice/Ice/OperationMode.ice +38 -0
- data/dist/ice/slice/Ice/Process.ice +28 -0
- data/dist/ice/slice/Ice/PropertiesAdmin.ice +37 -0
- data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
- data/dist/ice/slice/Ice/RemoteLogger.ice +126 -0
- data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
- data/dist/ice/slice/Ice/Router.ice +54 -0
- data/dist/ice/slice/Ice/SliceChecksumDict.ice +18 -0
- data/dist/ice/slice/Ice/Version.ice +43 -0
- data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
- data/dist/ice/slice/IceGrid/Admin.ice +981 -0
- data/dist/ice/slice/IceGrid/Descriptor.ice +519 -0
- data/dist/ice/slice/IceGrid/Exception.ice +98 -0
- data/dist/ice/slice/IceGrid/FileParser.ice +36 -0
- data/dist/ice/slice/IceGrid/Registry.ice +130 -0
- data/dist/ice/slice/IceGrid/Session.ice +64 -0
- data/dist/ice/slice/IceGrid/UserAccountMapper.ice +34 -0
- data/dist/ice/slice/IceStorm/IceStorm.ice +186 -0
- data/dist/ice/slice/IceStorm/Metrics.ice +41 -0
- data/dist/lib/Glacier2/Metrics.rb +41 -0
- data/dist/lib/Glacier2/PermissionsVerifier.rb +61 -0
- data/dist/lib/Glacier2/Router.rb +73 -0
- data/dist/lib/Glacier2/SSLInfo.rb +64 -0
- data/dist/lib/Glacier2/Session.rb +187 -0
- data/dist/lib/Glacier2.rb +7 -0
- data/dist/lib/Ice/BuiltinSequences.rb +48 -0
- 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 +28 -0
- data/dist/lib/Ice/Exception.rb +20 -0
- data/dist/lib/Ice/Identity.rb +47 -0
- 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 +83 -0
- data/dist/lib/Ice/LocatorRegistry.rb +73 -0
- data/dist/lib/Ice/Metrics.rb +290 -0
- data/dist/lib/Ice/OperationMode.rb +58 -0
- data/dist/lib/Ice/Process.rb +34 -0
- data/dist/lib/Ice/PropertiesAdmin.rb +39 -0
- 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 +176 -0
- data/dist/lib/Ice/ReplyStatus.rb +65 -0
- data/dist/lib/Ice/Router.rb +59 -0
- data/dist/lib/Ice/SliceChecksumDict.rb +12 -0
- 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 +78 -0
- data/dist/lib/Ice.rb +37 -0
- data/dist/lib/IceBox/ServiceManager.rb +104 -0
- data/dist/lib/IceBox.rb +3 -0
- data/dist/lib/IceGrid/Admin.rb +1208 -0
- data/dist/lib/IceGrid/Descriptor.rb +989 -0
- data/dist/lib/IceGrid/Exception.rb +145 -0
- data/dist/lib/IceGrid/FileParser.rb +41 -0
- data/dist/lib/IceGrid/Registry.rb +168 -0
- data/dist/lib/IceGrid/Session.rb +56 -0
- data/dist/lib/IceGrid/UserAccountMapper.rb +38 -0
- data/dist/lib/IceGrid.rb +9 -0
- data/dist/lib/IceStorm/IceStorm.rb +251 -0
- data/dist/lib/IceStorm/Metrics.rb +55 -0
- data/dist/lib/IceStorm.rb +4 -0
- data/extconf.rb +89 -0
- data/ice.gemspec +22 -17
- data/scripts/slice2rb +10 -0
- metadata +536 -712
- data/ICE_LICENSE +0 -48
- data/LICENSE +0 -340
- data/MCPP_LICENSE +0 -29
- data/bin/slice2rb +0 -12
- data/ext/Communicator.cpp +0 -792
- data/ext/Communicator.h +0 -20
- data/ext/Config.h +0 -143
- data/ext/Connection.cpp +0 -532
- data/ext/Connection.h +0 -24
- data/ext/Endpoint.cpp +0 -340
- data/ext/Endpoint.h +0 -22
- data/ext/ImplicitContext.cpp +0 -144
- data/ext/ImplicitContext.h +0 -20
- data/ext/Init.cpp +0 -49
- data/ext/Logger.cpp +0 -147
- data/ext/Logger.h +0 -23
- data/ext/Operation.cpp +0 -661
- data/ext/Operation.h +0 -31
- data/ext/Properties.cpp +0 -365
- data/ext/Properties.h +0 -20
- data/ext/Proxy.cpp +0 -1396
- data/ext/Proxy.h +0 -22
- data/ext/Slice.cpp +0 -205
- data/ext/Slice.h +0 -17
- data/ext/Types.cpp +0 -3325
- data/ext/Types.h +0 -595
- data/ext/Util.cpp +0 -812
- data/ext/Util.h +0 -586
- data/ext/ValueFactoryManager.cpp +0 -441
- data/ext/ValueFactoryManager.h +0 -95
- data/ext/extconf.rb +0 -97
- data/ext/ice/cpp/include/Ice/Application.h +0 -326
- data/ext/ice/cpp/include/Ice/AsyncResult.h +0 -155
- data/ext/ice/cpp/include/Ice/AsyncResultF.h +0 -23
- data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
- data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +0 -20
- data/ext/ice/cpp/include/Ice/Buffer.h +0 -154
- data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
- data/ext/ice/cpp/include/Ice/Comparable.h +0 -205
- data/ext/ice/cpp/include/Ice/Config.h +0 -78
- data/ext/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
- data/ext/ice/cpp/include/Ice/ConnectionIF.h +0 -38
- data/ext/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
- data/ext/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
- data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
- data/ext/ice/cpp/include/Ice/Dispatcher.h +0 -67
- data/ext/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
- data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
- data/ext/ice/cpp/include/Ice/Exception.h +0 -161
- data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
- data/ext/ice/cpp/include/Ice/FactoryTable.h +0 -73
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
- data/ext/ice/cpp/include/Ice/Format.h +0 -38
- data/ext/ice/cpp/include/Ice/Functional.h +0 -140
- data/ext/ice/cpp/include/Ice/GCObject.h +0 -76
- data/ext/ice/cpp/include/Ice/Handle.h +0 -182
- data/ext/ice/cpp/include/Ice/Ice.h +0 -55
- data/ext/ice/cpp/include/Ice/IconvStringConverter.h +0 -377
- data/ext/ice/cpp/include/Ice/Incoming.h +0 -225
- data/ext/ice/cpp/include/Ice/IncomingAsync.h +0 -186
- data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
- data/ext/ice/cpp/include/Ice/Initialize.h +0 -957
- data/ext/ice/cpp/include/Ice/InputStream.h +0 -1514
- data/ext/ice/cpp/include/Ice/InstanceF.h +0 -20
- data/ext/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
- data/ext/ice/cpp/include/Ice/LocalObject.h +0 -35
- data/ext/ice/cpp/include/Ice/LocalObjectF.h +0 -21
- data/ext/ice/cpp/include/Ice/LoggerUtil.h +0 -185
- data/ext/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
- data/ext/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
- data/ext/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
- data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +0 -86
- data/ext/ice/cpp/include/Ice/Object.h +0 -507
- data/ext/ice/cpp/include/Ice/ObjectF.h +0 -30
- data/ext/ice/cpp/include/Ice/ObserverHelper.h +0 -182
- data/ext/ice/cpp/include/Ice/Optional.h +0 -1114
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +0 -856
- data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
- data/ext/ice/cpp/include/Ice/OutputStream.h +0 -1092
- data/ext/ice/cpp/include/Ice/Protocol.h +0 -274
- data/ext/ice/cpp/include/Ice/Proxy.h +0 -5154
- data/ext/ice/cpp/include/Ice/ProxyF.h +0 -53
- data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
- data/ext/ice/cpp/include/Ice/ProxyHandle.h +0 -318
- data/ext/ice/cpp/include/Ice/ReferenceF.h +0 -29
- data/ext/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
- data/ext/ice/cpp/include/Ice/RequestHandlerF.h +0 -30
- data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
- data/ext/ice/cpp/include/Ice/SHA1.h +0 -42
- data/ext/ice/cpp/include/Ice/ServantManagerF.h +0 -21
- data/ext/ice/cpp/include/Ice/Service.h +0 -379
- data/ext/ice/cpp/include/Ice/SliceChecksums.h +0 -33
- data/ext/ice/cpp/include/Ice/SlicedData.h +0 -172
- data/ext/ice/cpp/include/Ice/SlicedDataF.h +0 -40
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +0 -1190
- data/ext/ice/cpp/include/Ice/StringConverter.h +0 -78
- data/ext/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
- data/ext/ice/cpp/include/Ice/UUID.h +0 -19
- data/ext/ice/cpp/include/Ice/UniquePtr.h +0 -95
- data/ext/ice/cpp/include/Ice/UniqueRef.h +0 -97
- data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +0 -88
- data/ext/ice/cpp/include/Ice/Value.h +0 -139
- data/ext/ice/cpp/include/Ice/ValueF.h +0 -21
- data/ext/ice/cpp/include/IceSSL/Config.h +0 -21
- data/ext/ice/cpp/include/IceSSL/IceSSL.h +0 -28
- data/ext/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
- data/ext/ice/cpp/include/IceSSL/Plugin.h +0 -712
- data/ext/ice/cpp/include/IceSSL/SChannel.h +0 -72
- data/ext/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
- data/ext/ice/cpp/include/IceSSL/UWP.h +0 -62
- data/ext/ice/cpp/include/IceUtil/Atomic.h +0 -179
- data/ext/ice/cpp/include/IceUtil/Cond.h +0 -317
- data/ext/ice/cpp/include/IceUtil/Config.h +0 -424
- data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
- data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
- data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -92
- data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
- data/ext/ice/cpp/include/IceUtil/Exception.h +0 -394
- data/ext/ice/cpp/include/IceUtil/FileUtil.h +0 -143
- data/ext/ice/cpp/include/IceUtil/Functional.h +0 -389
- data/ext/ice/cpp/include/IceUtil/Handle.h +0 -261
- data/ext/ice/cpp/include/IceUtil/IceUtil.h +0 -40
- data/ext/ice/cpp/include/IceUtil/InputUtil.h +0 -42
- data/ext/ice/cpp/include/IceUtil/Iterator.h +0 -31
- data/ext/ice/cpp/include/IceUtil/Lock.h +0 -128
- data/ext/ice/cpp/include/IceUtil/Monitor.h +0 -243
- data/ext/ice/cpp/include/IceUtil/Mutex.h +0 -353
- data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
- data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
- data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
- data/ext/ice/cpp/include/IceUtil/Optional.h +0 -433
- data/ext/ice/cpp/include/IceUtil/Options.h +0 -135
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
- data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +0 -14
- data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
- data/ext/ice/cpp/include/IceUtil/Random.h +0 -55
- data/ext/ice/cpp/include/IceUtil/RecMutex.h +0 -107
- data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +0 -53
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
- data/ext/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
- data/ext/ice/cpp/include/IceUtil/Shared.h +0 -127
- data/ext/ice/cpp/include/IceUtil/StopWatch.h +0 -49
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +0 -195
- data/ext/ice/cpp/include/IceUtil/StringUtil.h +0 -97
- data/ext/ice/cpp/include/IceUtil/Thread.h +0 -174
- data/ext/ice/cpp/include/IceUtil/ThreadException.h +0 -94
- data/ext/ice/cpp/include/IceUtil/Time.h +0 -205
- data/ext/ice/cpp/include/IceUtil/Timer.h +0 -143
- data/ext/ice/cpp/include/IceUtil/UUID.h +0 -21
- data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +0 -37
- data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +0 -170
- data/ext/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
- data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/Connection.h +0 -1703
- data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
- data/ext/ice/cpp/include/generated/Ice/Current.h +0 -322
- data/ext/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
- data/ext/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
- data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +0 -118
- data/ext/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
- data/ext/ice/cpp/include/generated/Ice/Identity.h +0 -264
- data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
- data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
- data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
- data/ext/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
- data/ext/ice/cpp/include/generated/Ice/Locator.h +0 -3898
- data/ext/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
- data/ext/ice/cpp/include/generated/Ice/Logger.h +0 -237
- data/ext/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/Metrics.h +0 -4769
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
- data/ext/ice/cpp/include/generated/Ice/Plugin.h +0 -318
- data/ext/ice/cpp/include/generated/Ice/PluginF.h +0 -110
- data/ext/ice/cpp/include/generated/Ice/Process.h +0 -977
- data/ext/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
- data/ext/ice/cpp/include/generated/Ice/Properties.h +0 -452
- data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +0 -1366
- data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
- data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +0 -2707
- data/ext/ice/cpp/include/generated/Ice/Router.h +0 -1850
- data/ext/ice/cpp/include/generated/Ice/RouterF.h +0 -125
- data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
- data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +0 -84
- data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
- data/ext/ice/cpp/include/generated/Ice/Version.h +0 -357
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
- data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
- data/ext/ice/cpp/src/Ice/ACM.cpp +0 -380
- data/ext/ice/cpp/src/Ice/ACM.h +0 -119
- data/ext/ice/cpp/src/Ice/ACMF.h +0 -30
- data/ext/ice/cpp/src/Ice/Acceptor.cpp +0 -16
- data/ext/ice/cpp/src/Ice/Acceptor.h +0 -37
- data/ext/ice/cpp/src/Ice/AcceptorF.h +0 -25
- data/ext/ice/cpp/src/Ice/ArgVector.cpp +0 -59
- data/ext/ice/cpp/src/Ice/ArgVector.h +0 -36
- data/ext/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
- data/ext/ice/cpp/src/Ice/Base64.cpp +0 -263
- data/ext/ice/cpp/src/Ice/Base64.h +0 -31
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +0 -250
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +0 -59
- data/ext/ice/cpp/src/Ice/Buffer.cpp +0 -155
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +0 -49
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +0 -407
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +0 -87
- data/ext/ice/cpp/src/Ice/Communicator.cpp +0 -79
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +0 -167
- data/ext/ice/cpp/src/Ice/Cond.cpp +0 -381
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +0 -348
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +0 -72
- data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +0 -24
- data/ext/ice/cpp/src/Ice/Connection.cpp +0 -155
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +0 -1972
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +0 -264
- data/ext/ice/cpp/src/Ice/ConnectionFactoryF.h +0 -30
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +0 -3670
- data/ext/ice/cpp/src/Ice/ConnectionI.h +0 -391
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
- data/ext/ice/cpp/src/Ice/Connector.cpp +0 -16
- data/ext/ice/cpp/src/Ice/Connector.h +0 -32
- data/ext/ice/cpp/src/Ice/ConnectorF.h +0 -21
- data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +0 -179
- data/ext/ice/cpp/src/Ice/Current.cpp +0 -62
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +0 -161
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +0 -52
- data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +0 -21
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +0 -291
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +0 -147
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +0 -189
- data/ext/ice/cpp/src/Ice/EndpointFactory.h +0 -117
- data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +0 -21
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +0 -213
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +0 -47
- data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +0 -21
- data/ext/ice/cpp/src/Ice/EndpointI.cpp +0 -98
- data/ext/ice/cpp/src/Ice/EndpointI.h +0 -218
- data/ext/ice/cpp/src/Ice/EndpointIF.h +0 -49
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +0 -51
- data/ext/ice/cpp/src/Ice/EventHandler.cpp +0 -32
- data/ext/ice/cpp/src/Ice/EventHandler.h +0 -81
- data/ext/ice/cpp/src/Ice/EventHandlerF.h +0 -24
- data/ext/ice/cpp/src/Ice/Exception.cpp +0 -845
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +0 -49
- data/ext/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
- data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
- data/ext/ice/cpp/src/Ice/GCObject.cpp +0 -442
- data/ext/ice/cpp/src/Ice/HashUtil.h +0 -53
- data/ext/ice/cpp/src/Ice/HttpParser.cpp +0 -684
- data/ext/ice/cpp/src/Ice/HttpParser.h +0 -117
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +0 -756
- data/ext/ice/cpp/src/Ice/IPEndpointI.h +0 -162
- data/ext/ice/cpp/src/Ice/IPEndpointIF.h +0 -28
- data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
- data/ext/ice/cpp/src/Ice/Identity.cpp +0 -57
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +0 -75
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
- data/ext/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
- data/ext/ice/cpp/src/Ice/Incoming.cpp +0 -795
- data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
- data/ext/ice/cpp/src/Ice/IncomingRequest.h +0 -33
- data/ext/ice/cpp/src/Ice/Initialize.cpp +0 -654
- data/ext/ice/cpp/src/Ice/InputStream.cpp +0 -2741
- data/ext/ice/cpp/src/Ice/Instance.cpp +0 -1971
- data/ext/ice/cpp/src/Ice/Instance.h +0 -235
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +0 -188
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +0 -66
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +0 -1094
- data/ext/ice/cpp/src/Ice/InstrumentationI.h +0 -256
- data/ext/ice/cpp/src/Ice/LocalException.cpp +0 -3262
- data/ext/ice/cpp/src/Ice/LocalObject.cpp +0 -23
- data/ext/ice/cpp/src/Ice/Locator.cpp +0 -2042
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +0 -889
- data/ext/ice/cpp/src/Ice/LocatorInfo.h +0 -189
- data/ext/ice/cpp/src/Ice/LocatorInfoF.h +0 -29
- data/ext/ice/cpp/src/Ice/Logger.cpp +0 -73
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +0 -956
- data/ext/ice/cpp/src/Ice/LoggerAdminI.h +0 -41
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +0 -261
- data/ext/ice/cpp/src/Ice/LoggerI.h +0 -52
- data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +0 -100
- data/ext/ice/cpp/src/Ice/Metrics.cpp +0 -2352
- data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +0 -694
- data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
- data/ext/ice/cpp/src/Ice/Network.cpp +0 -3075
- data/ext/ice/cpp/src/Ice/Network.h +0 -371
- data/ext/ice/cpp/src/Ice/NetworkF.h +0 -23
- data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +0 -324
- data/ext/ice/cpp/src/Ice/NetworkProxy.h +0 -72
- data/ext/ice/cpp/src/Ice/NetworkProxyF.h +0 -21
- data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +0 -57
- data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +0 -40
- data/ext/ice/cpp/src/Ice/Object.cpp +0 -435
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +0 -79
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +0 -291
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +0 -53
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +0 -25
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +0 -1530
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +0 -159
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +0 -75
- data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +0 -56
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +0 -408
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +0 -74
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +0 -1322
- data/ext/ice/cpp/src/Ice/OutputStream.cpp +0 -1367
- data/ext/ice/cpp/src/Ice/Plugin.cpp +0 -87
- data/ext/ice/cpp/src/Ice/PluginF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +0 -503
- data/ext/ice/cpp/src/Ice/PluginManagerI.h +0 -61
- data/ext/ice/cpp/src/Ice/Process.cpp +0 -471
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/Properties.cpp +0 -78
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +0 -603
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/PropertiesI.cpp +0 -747
- data/ext/ice/cpp/src/Ice/PropertiesI.h +0 -70
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +0 -1429
- data/ext/ice/cpp/src/Ice/PropertyNames.h +0 -78
- data/ext/ice/cpp/src/Ice/Protocol.cpp +0 -124
- data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +0 -131
- data/ext/ice/cpp/src/Ice/ProtocolInstance.h +0 -93
- data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +0 -21
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +0 -51
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +0 -64
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
- data/ext/ice/cpp/src/Ice/Proxy.cpp +0 -1601
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
- data/ext/ice/cpp/src/Ice/ProxyFactory.h +0 -57
- data/ext/ice/cpp/src/Ice/Reference.cpp +0 -2046
- data/ext/ice/cpp/src/Ice/Reference.h +0 -323
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +0 -888
- data/ext/ice/cpp/src/Ice/ReferenceFactory.h +0 -76
- data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +0 -19
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +0 -1171
- data/ext/ice/cpp/src/Ice/ReplyStatus.h +0 -24
- data/ext/ice/cpp/src/Ice/RequestHandler.cpp +0 -37
- data/ext/ice/cpp/src/Ice/RequestHandler.h +0 -78
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
- data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
- data/ext/ice/cpp/src/Ice/ResponseHandler.h +0 -43
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +0 -157
- data/ext/ice/cpp/src/Ice/RetryQueue.h +0 -66
- data/ext/ice/cpp/src/Ice/RetryQueueF.h +0 -19
- data/ext/ice/cpp/src/Ice/Router.cpp +0 -977
- data/ext/ice/cpp/src/Ice/RouterF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/RouterInfo.cpp +0 -379
- data/ext/ice/cpp/src/Ice/RouterInfo.h +0 -152
- data/ext/ice/cpp/src/Ice/RouterInfoF.h +0 -25
- data/ext/ice/cpp/src/Ice/SHA1.cpp +0 -185
- data/ext/ice/cpp/src/Ice/Selector.cpp +0 -1537
- data/ext/ice/cpp/src/Ice/Selector.h +0 -308
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +0 -75
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ServantManager.cpp +0 -480
- data/ext/ice/cpp/src/Ice/ServantManager.h +0 -69
- data/ext/ice/cpp/src/Ice/SharedContext.h +0 -46
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +0 -49
- data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
- data/ext/ice/cpp/src/Ice/SlicedData.cpp +0 -127
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +0 -682
- data/ext/ice/cpp/src/Ice/StreamSocket.h +0 -92
- data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
- data/ext/ice/cpp/src/Ice/StringUtil.h +0 -30
- data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +0 -166
- data/ext/ice/cpp/src/Ice/SysLoggerI.h +0 -37
- data/ext/ice/cpp/src/Ice/SystemdJournalI.cpp +0 -66
- data/ext/ice/cpp/src/Ice/SystemdJournalI.h +0 -39
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +0 -355
- data/ext/ice/cpp/src/Ice/TcpAcceptor.h +0 -69
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +0 -127
- data/ext/ice/cpp/src/Ice/TcpConnector.h +0 -45
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +0 -385
- data/ext/ice/cpp/src/Ice/TcpEndpointI.h +0 -90
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +0 -135
- data/ext/ice/cpp/src/Ice/TcpTransceiver.h +0 -58
- data/ext/ice/cpp/src/Ice/Thread.cpp +0 -811
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +0 -1328
- data/ext/ice/cpp/src/Ice/ThreadPool.h +0 -393
- data/ext/ice/cpp/src/Ice/Timer.cpp +0 -263
- data/ext/ice/cpp/src/Ice/TraceLevels.cpp +0 -38
- data/ext/ice/cpp/src/Ice/TraceLevels.h +0 -45
- data/ext/ice/cpp/src/Ice/TraceLevelsF.h +0 -21
- data/ext/ice/cpp/src/Ice/TraceUtil.cpp +0 -478
- data/ext/ice/cpp/src/Ice/TraceUtil.h +0 -30
- data/ext/ice/cpp/src/Ice/Transceiver.cpp +0 -18
- data/ext/ice/cpp/src/Ice/Transceiver.h +0 -49
- data/ext/ice/cpp/src/Ice/TransceiverF.h +0 -33
- data/ext/ice/cpp/src/Ice/UdpConnector.cpp +0 -136
- data/ext/ice/cpp/src/Ice/UdpConnector.h +0 -45
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +0 -515
- data/ext/ice/cpp/src/Ice/UdpEndpointI.h +0 -95
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +0 -1153
- data/ext/ice/cpp/src/Ice/UdpTransceiver.h +0 -117
- data/ext/ice/cpp/src/Ice/Value.cpp +0 -76
- data/ext/ice/cpp/src/Ice/ValueFactory.cpp +0 -83
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
- data/ext/ice/cpp/src/Ice/Version.cpp +0 -57
- data/ext/ice/cpp/src/Ice/VirtualShared.h +0 -38
- data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +0 -92
- data/ext/ice/cpp/src/Ice/WSAcceptor.h +0 -52
- data/ext/ice/cpp/src/Ice/WSConnector.cpp +0 -102
- data/ext/ice/cpp/src/Ice/WSConnector.h +0 -43
- data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +0 -508
- data/ext/ice/cpp/src/Ice/WSEndpoint.h +0 -93
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +0 -1747
- data/ext/ice/cpp/src/Ice/WSTransceiver.h +0 -141
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +0 -915
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +0 -1889
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +0 -265
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +0 -109
- data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +0 -608
- data/ext/ice/cpp/src/IceDiscovery/LookupI.h +0 -228
- data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +0 -176
- data/ext/ice/cpp/src/IceDiscovery/PluginI.h +0 -36
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +0 -730
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
- data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +0 -47
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +0 -1048
- data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
- data/ext/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
- data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
- data/ext/ice/cpp/src/IceSSL/CertificateI.h +0 -64
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +0 -75
- data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +0 -61
- data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
- data/ext/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
- data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
- data/ext/ice/cpp/src/IceSSL/EndpointI.h +0 -100
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +0 -75
- data/ext/ice/cpp/src/IceSSL/Instance.cpp +0 -28
- data/ext/ice/cpp/src/IceSSL/Instance.h +0 -37
- data/ext/ice/cpp/src/IceSSL/InstanceF.h +0 -33
- data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
- data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
- data/ext/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
- data/ext/ice/cpp/src/IceSSL/PluginI.h +0 -67
- data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +0 -490
- data/ext/ice/cpp/src/IceSSL/RFC2253.h +0 -62
- data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
- data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
- data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
- data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
- data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
- data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
- data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
- data/ext/ice/cpp/src/IceSSL/TrustManager.h +0 -46
- data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
- data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +0 -266
- data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +0 -338
- data/ext/ice/cpp/src/IceSSL/UWPEngine.h +0 -41
- data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +0 -26
- data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +0 -89
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +0 -383
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +0 -71
- data/ext/ice/cpp/src/IceSSL/Util.cpp +0 -192
- data/ext/ice/cpp/src/IceSSL/Util.h +0 -99
- data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +0 -157
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
- data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +0 -484
- data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
- data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
- data/ext/ice/cpp/src/IceUtil/Options.cpp +0 -1051
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
- data/ext/ice/cpp/src/IceUtil/Random.cpp +0 -180
- data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +0 -242
- data/ext/ice/cpp/src/IceUtil/Shared.cpp +0 -71
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1180
- data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
- data/ext/ice/cpp/src/IceUtil/Time.cpp +0 -307
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +0 -169
- data/ext/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
- data/ext/ice/cpp/src/IceUtil/Unicode.h +0 -43
- data/ext/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
- data/ext/ice/cpp/src/Slice/Checksum.cpp +0 -447
- data/ext/ice/cpp/src/Slice/Checksum.h +0 -21
- data/ext/ice/cpp/src/Slice/FileTracker.cpp +0 -146
- data/ext/ice/cpp/src/Slice/FileTracker.h +0 -66
- data/ext/ice/cpp/src/Slice/Grammar.cpp +0 -4793
- data/ext/ice/cpp/src/Slice/Grammar.h +0 -118
- data/ext/ice/cpp/src/Slice/GrammarUtil.h +0 -228
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +0 -5154
- data/ext/ice/cpp/src/Slice/JavaUtil.h +0 -398
- data/ext/ice/cpp/src/Slice/MD5.cpp +0 -52
- data/ext/ice/cpp/src/Slice/MD5.h +0 -39
- data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -393
- data/ext/ice/cpp/src/Slice/MD5I.h +0 -91
- data/ext/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
- data/ext/ice/cpp/src/Slice/PHPUtil.h +0 -36
- data/ext/ice/cpp/src/Slice/Parser.cpp +0 -7058
- data/ext/ice/cpp/src/Slice/Parser.h +0 -1174
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +0 -797
- data/ext/ice/cpp/src/Slice/Preprocessor.h +0 -60
- data/ext/ice/cpp/src/Slice/Python.cpp +0 -830
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
- data/ext/ice/cpp/src/Slice/PythonUtil.h +0 -70
- data/ext/ice/cpp/src/Slice/Ruby.cpp +0 -350
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
- data/ext/ice/cpp/src/Slice/RubyUtil.h +0 -49
- data/ext/ice/cpp/src/Slice/Scanner.cpp +0 -2807
- data/ext/ice/cpp/src/Slice/SliceUtil.cpp +0 -424
- data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +0 -456
- data/ext/ice/cpp/src/Slice/Util.h +0 -50
- data/ext/ice/mcpp/CMakeLists.txt +0 -80
- data/ext/ice/mcpp/LICENSE +0 -29
- data/ext/ice/mcpp/Makefile +0 -63
- data/ext/ice/mcpp/README.md +0 -32
- data/ext/ice/mcpp/internal.H +0 -530
- data/ext/ice/mcpp/mcpp.gyp +0 -88
- data/lib/Glacier2/Metrics.rb +0 -56
- data/lib/Glacier2/PermissionsVerifier.rb +0 -93
- data/lib/Glacier2/PermissionsVerifierF.rb +0 -30
- data/lib/Glacier2/Router.rb +0 -95
- data/lib/Glacier2/RouterF.rb +0 -25
- data/lib/Glacier2/SSLInfo.rb +0 -72
- data/lib/Glacier2/Session.rb +0 -247
- data/lib/Glacier2.rb +0 -7
- data/lib/Ice/BuiltinSequences.rb +0 -60
- data/lib/Ice/Communicator.rb +0 -87
- data/lib/Ice/CommunicatorF.rb +0 -24
- data/lib/Ice/Connection.rb +0 -413
- data/lib/Ice/ConnectionF.rb +0 -32
- data/lib/Ice/Current.rb +0 -141
- data/lib/Ice/Endpoint.rb +0 -187
- data/lib/Ice/EndpointF.rb +0 -48
- data/lib/Ice/EndpointTypes.rb +0 -69
- data/lib/Ice/FacetMap.rb +0 -24
- data/lib/Ice/Identity.rb +0 -63
- data/lib/Ice/ImplicitContext.rb +0 -26
- data/lib/Ice/ImplicitContextF.rb +0 -24
- data/lib/Ice/Instrumentation.rb +0 -169
- data/lib/Ice/InstrumentationF.rb +0 -31
- data/lib/Ice/LocalException.rb +0 -1031
- data/lib/Ice/Locator.rb +0 -196
- data/lib/Ice/LocatorF.rb +0 -30
- data/lib/Ice/Logger.rb +0 -24
- data/lib/Ice/LoggerF.rb +0 -24
- data/lib/Ice/Metrics.rb +0 -337
- data/lib/Ice/ObjectAdapter.rb +0 -29
- data/lib/Ice/ObjectAdapterF.rb +0 -24
- data/lib/Ice/ObjectFactory.rb +0 -24
- data/lib/Ice/Plugin.rb +0 -30
- data/lib/Ice/PluginF.rb +0 -28
- data/lib/Ice/Process.rb +0 -53
- data/lib/Ice/ProcessF.rb +0 -25
- data/lib/Ice/Properties.rb +0 -25
- data/lib/Ice/PropertiesAdmin.rb +0 -63
- data/lib/Ice/PropertiesF.rb +0 -29
- data/lib/Ice/RemoteLogger.rb +0 -207
- data/lib/Ice/Router.rb +0 -87
- data/lib/Ice/RouterF.rb +0 -25
- data/lib/Ice/ServantLocator.rb +0 -26
- data/lib/Ice/ServantLocatorF.rb +0 -24
- data/lib/Ice/SliceChecksumDict.rb +0 -24
- data/lib/Ice/ValueFactory.rb +0 -28
- data/lib/Ice/Version.rb +0 -90
- data/lib/Ice.rb +0 -673
- data/lib/IceBox/IceBox.rb +0 -164
- data/lib/IceBox.rb +0 -5
- data/lib/IceGrid/Admin.rb +0 -1196
- data/lib/IceGrid/Descriptor.rb +0 -1034
- data/lib/IceGrid/Exception.rb +0 -376
- data/lib/IceGrid/FileParser.rb +0 -65
- data/lib/IceGrid/PluginFacade.rb +0 -35
- data/lib/IceGrid/Registry.rb +0 -209
- data/lib/IceGrid/Session.rb +0 -71
- data/lib/IceGrid/UserAccountMapper.rb +0 -61
- data/lib/IceGrid.rb +0 -9
- data/lib/IcePatch2/FileInfo.rb +0 -115
- data/lib/IcePatch2/FileServer.rb +0 -123
- data/lib/IcePatch2.rb +0 -5
- data/lib/IceStorm/IceStorm.rb +0 -332
- data/lib/IceStorm/Metrics.rb +0 -73
- data/lib/IceStorm.rb +0 -6
- data/slice/Glacier2/Metrics.ice +0 -88
- data/slice/Glacier2/PermissionsVerifier.ice +0 -111
- data/slice/Glacier2/PermissionsVerifierF.ice +0 -30
- data/slice/Glacier2/Router.ice +0 -186
- data/slice/Glacier2/RouterF.ice +0 -29
- data/slice/Glacier2/SSLInfo.ice +0 -59
- data/slice/Glacier2/Session.ice +0 -274
- data/slice/Ice/BuiltinSequences.ice +0 -59
- data/slice/Ice/Communicator.ice +0 -676
- data/slice/Ice/CommunicatorF.ice +0 -31
- data/slice/Ice/Connection.ice +0 -516
- data/slice/Ice/ConnectionF.ice +0 -33
- data/slice/Ice/Current.ice +0 -170
- data/slice/Ice/Endpoint.ice +0 -291
- data/slice/Ice/EndpointF.ice +0 -43
- data/slice/Ice/EndpointTypes.ice +0 -48
- data/slice/Ice/FacetMap.ice +0 -36
- data/slice/Ice/Identity.ice +0 -75
- data/slice/Ice/ImplicitContext.ice +0 -119
- data/slice/Ice/ImplicitContextF.ice +0 -30
- data/slice/Ice/Instrumentation.ice +0 -509
- data/slice/Ice/InstrumentationF.ice +0 -38
- data/slice/Ice/LocalException.ice +0 -1040
- data/slice/Ice/Locator.ice +0 -239
- data/slice/Ice/LocatorF.ice +0 -32
- data/slice/Ice/Logger.ice +0 -99
- data/slice/Ice/LoggerF.ice +0 -31
- data/slice/Ice/Metrics.ice +0 -436
- data/slice/Ice/ObjectAdapter.ice +0 -710
- data/slice/Ice/ObjectAdapterF.ice +0 -31
- data/slice/Ice/ObjectFactory.ice +0 -71
- data/slice/Ice/Plugin.ice +0 -131
- data/slice/Ice/PluginF.ice +0 -36
- data/slice/Ice/Process.ice +0 -64
- data/slice/Ice/ProcessF.ice +0 -31
- data/slice/Ice/Properties.ice +0 -244
- data/slice/Ice/PropertiesAdmin.ice +0 -87
- data/slice/Ice/PropertiesF.ice +0 -32
- data/slice/Ice/RemoteLogger.ice +0 -226
- data/slice/Ice/Router.ice +0 -103
- data/slice/Ice/RouterF.ice +0 -31
- data/slice/Ice/ServantLocator.ice +0 -136
- data/slice/Ice/ServantLocatorF.ice +0 -31
- data/slice/Ice/SliceChecksumDict.ice +0 -36
- data/slice/Ice/ValueFactory.ice +0 -133
- data/slice/Ice/Version.ice +0 -51
- data/slice/IceBT/ConnectionInfo.ice +0 -59
- data/slice/IceBT/EndpointInfo.ice +0 -57
- data/slice/IceBT/Types.ice +0 -45
- data/slice/IceBox/IceBox.ice +0 -216
- data/slice/IceDiscovery/IceDiscovery.ice +0 -98
- data/slice/IceGrid/Admin.ice +0 -1957
- data/slice/IceGrid/Descriptor.ice +0 -1094
- data/slice/IceGrid/Exception.ice +0 -396
- data/slice/IceGrid/FileParser.ice +0 -72
- data/slice/IceGrid/PluginFacade.ice +0 -329
- data/slice/IceGrid/Registry.ice +0 -269
- data/slice/IceGrid/Session.ice +0 -128
- data/slice/IceGrid/UserAccountMapper.ice +0 -69
- data/slice/IceIAP/ConnectionInfo.ice +0 -74
- data/slice/IceIAP/EndpointInfo.ice +0 -68
- data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +0 -83
- data/slice/IcePatch2/FileInfo.ice +0 -85
- data/slice/IcePatch2/FileServer.ice +0 -191
- data/slice/IceSSL/ConnectionInfo.ice +0 -54
- data/slice/IceSSL/ConnectionInfoF.ice +0 -31
- data/slice/IceSSL/EndpointInfo.ice +0 -45
- data/slice/IceStorm/IceStorm.ice +0 -414
- data/slice/IceStorm/Metrics.ice +0 -83
- /data/{ext → dist}/ice/mcpp/config.h +0 -0
- /data/{ext → dist}/ice/mcpp/configed.H +0 -0
- /data/{ext → dist}/ice/mcpp/directive.c +0 -0
- /data/{ext → dist}/ice/mcpp/eval.c +0 -0
- /data/{ext → dist}/ice/mcpp/expand.c +0 -0
- /data/{ext → dist}/ice/mcpp/mbchar.c +0 -0
- /data/{ext → dist}/ice/mcpp/mcpp_lib.h +0 -0
- /data/{ext/ice/mcpp/main.c → dist/ice/mcpp/mcpp_main.c} +0 -0
- /data/{ext → dist}/ice/mcpp/mcpp_out.h +0 -0
- /data/{ext → dist}/ice/mcpp/support.c +0 -0
- /data/{ext → dist}/ice/mcpp/system.H +0 -0
- /data/{ext → dist}/ice/mcpp/system.c +0 -0
|
@@ -0,0 +1,2206 @@
|
|
|
1
|
+
// Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
#include "Ice/InputStream.h"
|
|
4
|
+
#include "DefaultsAndOverrides.h"
|
|
5
|
+
#include "Endian.h"
|
|
6
|
+
#include "Ice/DefaultSliceLoader.h" // temporary
|
|
7
|
+
#include "Ice/LocalExceptions.h"
|
|
8
|
+
#include "Ice/SlicedData.h"
|
|
9
|
+
#include "Ice/StringConverter.h"
|
|
10
|
+
#include "Ice/UserExceptionFactory.h"
|
|
11
|
+
#include "Instance.h"
|
|
12
|
+
#include "ReferenceFactory.h"
|
|
13
|
+
#include "TraceLevels.h"
|
|
14
|
+
#include "TraceUtil.h"
|
|
15
|
+
|
|
16
|
+
#include "DisableWarnings.h"
|
|
17
|
+
|
|
18
|
+
using namespace std;
|
|
19
|
+
using namespace Ice;
|
|
20
|
+
using namespace IceInternal;
|
|
21
|
+
|
|
22
|
+
namespace
|
|
23
|
+
{
|
|
24
|
+
const char* endOfBufferMessage = "attempting to unmarshal past the end of the buffer";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
void
|
|
28
|
+
IceInternal::Ex::throwUOE(const char* file, int line, const string& expectedType, const ValuePtr& v)
|
|
29
|
+
{
|
|
30
|
+
UnknownSlicedValuePtr usv = dynamic_pointer_cast<UnknownSlicedValue>(v);
|
|
31
|
+
if (usv)
|
|
32
|
+
{
|
|
33
|
+
throw MarshalException{
|
|
34
|
+
file,
|
|
35
|
+
line,
|
|
36
|
+
"the Slice loader did not find a class for type ID '" + string{usv->ice_id()} + "'"};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
string type = v->ice_id();
|
|
40
|
+
|
|
41
|
+
throw MarshalException{
|
|
42
|
+
file,
|
|
43
|
+
line,
|
|
44
|
+
"failed to unmarshal class with type ID '" + expectedType +
|
|
45
|
+
"': the Slice loader returned a class with type ID '" + type + "'"};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
void
|
|
49
|
+
IceInternal::Ex::throwMemoryLimitException(const char* file, int line, size_t requested, int32_t maximum)
|
|
50
|
+
{
|
|
51
|
+
throw MarshalException{
|
|
52
|
+
file,
|
|
53
|
+
line,
|
|
54
|
+
"cannot unmarshal Ice message: the message size of " + to_string(requested) +
|
|
55
|
+
" bytes exceeds the maximum allowed of " + to_string(maximum) + " bytes (see Ice.MessageSizeMax)."};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
void
|
|
59
|
+
IceInternal::Ex::throwMarshalException(const char* file, int line, string reason)
|
|
60
|
+
{
|
|
61
|
+
throw Ice::MarshalException{file, line, std::move(reason)};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
Ice::InputStream::InputStream(Instance* instance, EncodingVersion encoding, SliceLoaderPtr sliceLoader)
|
|
65
|
+
: InputStream{instance, encoding, Buffer{}, std::move(sliceLoader)}
|
|
66
|
+
{
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
Ice::InputStream::InputStream(const CommunicatorPtr& communicator, const vector<byte>& v, SliceLoaderPtr sliceLoader)
|
|
70
|
+
: InputStream{
|
|
71
|
+
getInstance(communicator).get(),
|
|
72
|
+
getInstance(communicator)->defaultsAndOverrides()->defaultEncoding,
|
|
73
|
+
Buffer{v},
|
|
74
|
+
std::move(sliceLoader)}
|
|
75
|
+
{
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
Ice::InputStream::InputStream(
|
|
79
|
+
const CommunicatorPtr& communicator,
|
|
80
|
+
pair<const byte*, const byte*> p,
|
|
81
|
+
SliceLoaderPtr sliceLoader)
|
|
82
|
+
: InputStream{
|
|
83
|
+
getInstance(communicator).get(),
|
|
84
|
+
getInstance(communicator)->defaultsAndOverrides()->defaultEncoding,
|
|
85
|
+
Buffer{p.first, p.second},
|
|
86
|
+
std::move(sliceLoader)}
|
|
87
|
+
{
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
Ice::InputStream::InputStream(
|
|
91
|
+
const CommunicatorPtr& communicator,
|
|
92
|
+
EncodingVersion encoding,
|
|
93
|
+
const vector<byte>& v,
|
|
94
|
+
SliceLoaderPtr sliceLoader)
|
|
95
|
+
: InputStream{getInstance(communicator).get(), encoding, Buffer{v}, std::move(sliceLoader)}
|
|
96
|
+
{
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
Ice::InputStream::InputStream(
|
|
100
|
+
const CommunicatorPtr& communicator,
|
|
101
|
+
EncodingVersion encoding,
|
|
102
|
+
pair<const byte*, const byte*> p,
|
|
103
|
+
SliceLoaderPtr sliceLoader)
|
|
104
|
+
: InputStream{getInstance(communicator).get(), encoding, Buffer{p.first, p.second}, std::move(sliceLoader)}
|
|
105
|
+
{
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
Ice::InputStream::InputStream(
|
|
109
|
+
Instance* instance,
|
|
110
|
+
EncodingVersion encoding,
|
|
111
|
+
Buffer& buf,
|
|
112
|
+
bool adopt,
|
|
113
|
+
SliceLoaderPtr sliceLoader)
|
|
114
|
+
: InputStream{instance, encoding, Buffer{buf, adopt}, std::move(sliceLoader)}
|
|
115
|
+
{
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
Ice::InputStream::InputStream(InputStream&& other) noexcept
|
|
119
|
+
// only moves (and resets) the base class
|
|
120
|
+
: InputStream{other._instance, other._encoding, std::move(other), other._sliceLoader}
|
|
121
|
+
{
|
|
122
|
+
_closure = other._closure;
|
|
123
|
+
_startSeq = other._startSeq;
|
|
124
|
+
_minSeqSize = other._minSeqSize;
|
|
125
|
+
|
|
126
|
+
// Reset other to its default state
|
|
127
|
+
other.resetEncapsulation();
|
|
128
|
+
other._closure = nullptr;
|
|
129
|
+
other._startSeq = -1;
|
|
130
|
+
other._minSeqSize = 0;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
InputStream&
|
|
134
|
+
Ice::InputStream::operator=(InputStream&& other) noexcept
|
|
135
|
+
{
|
|
136
|
+
assert(_instance == other._instance);
|
|
137
|
+
|
|
138
|
+
if (this != &other)
|
|
139
|
+
{
|
|
140
|
+
Buffer::operator=(std::move(other)); // only moves (and resets) the base class
|
|
141
|
+
|
|
142
|
+
_encoding = other._encoding;
|
|
143
|
+
_closure = other._closure;
|
|
144
|
+
_startSeq = other._startSeq;
|
|
145
|
+
_minSeqSize = other._minSeqSize;
|
|
146
|
+
_startSeq = -1;
|
|
147
|
+
_minSeqSize = 0;
|
|
148
|
+
resetEncapsulation();
|
|
149
|
+
|
|
150
|
+
// Reset other to its default state.
|
|
151
|
+
other.resetEncapsulation();
|
|
152
|
+
other._closure = nullptr;
|
|
153
|
+
other._startSeq = -1;
|
|
154
|
+
other._minSeqSize = 0;
|
|
155
|
+
}
|
|
156
|
+
return *this;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
void
|
|
160
|
+
Ice::InputStream::clear()
|
|
161
|
+
{
|
|
162
|
+
while (_currentEncaps && _currentEncaps != &_preAllocatedEncaps)
|
|
163
|
+
{
|
|
164
|
+
Encaps* oldEncaps = _currentEncaps;
|
|
165
|
+
_currentEncaps = _currentEncaps->previous;
|
|
166
|
+
delete oldEncaps;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
_startSeq = -1;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
void*
|
|
173
|
+
Ice::InputStream::getClosure() const
|
|
174
|
+
{
|
|
175
|
+
return _closure;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
void*
|
|
179
|
+
Ice::InputStream::setClosure(void* p)
|
|
180
|
+
{
|
|
181
|
+
void* prev = _closure;
|
|
182
|
+
_closure = p;
|
|
183
|
+
return prev;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
void
|
|
187
|
+
Ice::InputStream::swap(InputStream& other) noexcept
|
|
188
|
+
{
|
|
189
|
+
assert(_instance == other._instance);
|
|
190
|
+
|
|
191
|
+
swapBuffer(other);
|
|
192
|
+
|
|
193
|
+
std::swap(_encoding, other._encoding);
|
|
194
|
+
std::swap(_closure, other._closure);
|
|
195
|
+
std::swap(_startSeq, other._startSeq);
|
|
196
|
+
std::swap(_minSeqSize, other._minSeqSize);
|
|
197
|
+
|
|
198
|
+
//
|
|
199
|
+
// Swap is never called for streams that have encapsulations being read. However,
|
|
200
|
+
// encapsulations might still be set in case unmarshaling failed. We just
|
|
201
|
+
// reset the encapsulations if there are still some set.
|
|
202
|
+
//
|
|
203
|
+
resetEncapsulation();
|
|
204
|
+
other.resetEncapsulation();
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
void
|
|
208
|
+
Ice::InputStream::resetEncapsulation()
|
|
209
|
+
{
|
|
210
|
+
while (_currentEncaps && _currentEncaps != &_preAllocatedEncaps)
|
|
211
|
+
{
|
|
212
|
+
Encaps* oldEncaps = _currentEncaps;
|
|
213
|
+
_currentEncaps = _currentEncaps->previous;
|
|
214
|
+
delete oldEncaps;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
_preAllocatedEncaps.reset();
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const EncodingVersion&
|
|
221
|
+
Ice::InputStream::startEncapsulation()
|
|
222
|
+
{
|
|
223
|
+
Encaps* oldEncaps = _currentEncaps;
|
|
224
|
+
if (!oldEncaps) // First allocated encaps?
|
|
225
|
+
{
|
|
226
|
+
_currentEncaps = &_preAllocatedEncaps;
|
|
227
|
+
}
|
|
228
|
+
else
|
|
229
|
+
{
|
|
230
|
+
_currentEncaps = new Encaps();
|
|
231
|
+
_currentEncaps->previous = oldEncaps;
|
|
232
|
+
}
|
|
233
|
+
_currentEncaps->start = static_cast<size_t>(i - b.begin());
|
|
234
|
+
|
|
235
|
+
//
|
|
236
|
+
// I don't use readSize() and writeSize() for encapsulations,
|
|
237
|
+
// because when creating an encapsulation, I must know in advance
|
|
238
|
+
// how many bytes the size information will require in the data
|
|
239
|
+
// stream. If I use an Int, it is always 4 bytes. For
|
|
240
|
+
// readSize()/writeSize(), it could be 1 or 5 bytes.
|
|
241
|
+
//
|
|
242
|
+
std::int32_t sz;
|
|
243
|
+
read(sz);
|
|
244
|
+
if (sz < 6)
|
|
245
|
+
{
|
|
246
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
247
|
+
}
|
|
248
|
+
if (i - sizeof(std::int32_t) + sz > b.end())
|
|
249
|
+
{
|
|
250
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
251
|
+
}
|
|
252
|
+
_currentEncaps->sz = sz;
|
|
253
|
+
|
|
254
|
+
read(_currentEncaps->encoding);
|
|
255
|
+
IceInternal::checkSupportedEncoding(_currentEncaps->encoding); // Make sure the encoding is supported
|
|
256
|
+
|
|
257
|
+
return _currentEncaps->encoding;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
void
|
|
261
|
+
Ice::InputStream::endEncapsulation()
|
|
262
|
+
{
|
|
263
|
+
assert(_currentEncaps);
|
|
264
|
+
|
|
265
|
+
if (_currentEncaps->encoding != Encoding_1_0)
|
|
266
|
+
{
|
|
267
|
+
skipOptionals();
|
|
268
|
+
if (i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
269
|
+
{
|
|
270
|
+
throw MarshalException{__FILE__, __LINE__, "failed to unmarshal encapsulation"};
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
else if (i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
274
|
+
{
|
|
275
|
+
if (i + 1 != b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
276
|
+
{
|
|
277
|
+
throw MarshalException{__FILE__, __LINE__, "failed to unmarshal encapsulation"};
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
//
|
|
281
|
+
// Ice version < 3.3 had a bug where user exceptions with
|
|
282
|
+
// class members could be encoded with a trailing byte
|
|
283
|
+
// when dispatched with AMD. So we tolerate an extra byte
|
|
284
|
+
// in the encapsulation.
|
|
285
|
+
//
|
|
286
|
+
++i;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
Encaps* oldEncaps = _currentEncaps;
|
|
290
|
+
_currentEncaps = _currentEncaps->previous;
|
|
291
|
+
if (oldEncaps == &_preAllocatedEncaps)
|
|
292
|
+
{
|
|
293
|
+
oldEncaps->reset();
|
|
294
|
+
}
|
|
295
|
+
else
|
|
296
|
+
{
|
|
297
|
+
delete oldEncaps;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
EncodingVersion
|
|
302
|
+
Ice::InputStream::skipEmptyEncapsulation()
|
|
303
|
+
{
|
|
304
|
+
std::int32_t sz;
|
|
305
|
+
read(sz);
|
|
306
|
+
if (sz < 6)
|
|
307
|
+
{
|
|
308
|
+
throw MarshalException{__FILE__, __LINE__, to_string(sz) + " is not a valid encapsulation size"};
|
|
309
|
+
}
|
|
310
|
+
if (i - sizeof(std::int32_t) + sz > b.end())
|
|
311
|
+
{
|
|
312
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
313
|
+
}
|
|
314
|
+
Ice::EncodingVersion encoding;
|
|
315
|
+
read(encoding);
|
|
316
|
+
IceInternal::checkSupportedEncoding(encoding); // Make sure the encoding is supported
|
|
317
|
+
|
|
318
|
+
if (encoding == Ice::Encoding_1_0)
|
|
319
|
+
{
|
|
320
|
+
if (sz != static_cast<std::int32_t>(sizeof(std::int32_t)) + 2)
|
|
321
|
+
{
|
|
322
|
+
throw MarshalException{
|
|
323
|
+
__FILE__,
|
|
324
|
+
__LINE__,
|
|
325
|
+
to_string(sz) + " is not a valid encapsulation size for a 1.0 empty encapsulation"};
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
else
|
|
329
|
+
{
|
|
330
|
+
// Skip the optional content of the encapsulation if we are expecting an
|
|
331
|
+
// empty encapsulation.
|
|
332
|
+
i += static_cast<size_t>(sz) - sizeof(std::int32_t) - 2;
|
|
333
|
+
}
|
|
334
|
+
return encoding;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
EncodingVersion
|
|
338
|
+
Ice::InputStream::readEncapsulation(const std::byte*& v, std::int32_t& sz)
|
|
339
|
+
{
|
|
340
|
+
EncodingVersion encoding;
|
|
341
|
+
v = i;
|
|
342
|
+
read(sz);
|
|
343
|
+
if (sz < 6)
|
|
344
|
+
{
|
|
345
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
346
|
+
}
|
|
347
|
+
if (i - sizeof(std::int32_t) + sz > b.end())
|
|
348
|
+
{
|
|
349
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
read(encoding);
|
|
353
|
+
i += static_cast<size_t>(sz) - sizeof(std::int32_t) - 2;
|
|
354
|
+
return encoding;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
int32_t
|
|
358
|
+
Ice::InputStream::getEncapsulationSize()
|
|
359
|
+
{
|
|
360
|
+
assert(_currentEncaps);
|
|
361
|
+
return _currentEncaps->sz - static_cast<int32_t>(sizeof(int32_t)) - 2;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
EncodingVersion
|
|
365
|
+
Ice::InputStream::skipEncapsulation()
|
|
366
|
+
{
|
|
367
|
+
int32_t sz;
|
|
368
|
+
read(sz);
|
|
369
|
+
if (sz < 6)
|
|
370
|
+
{
|
|
371
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
372
|
+
}
|
|
373
|
+
if (i - sizeof(int32_t) + sz > b.end())
|
|
374
|
+
{
|
|
375
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
376
|
+
}
|
|
377
|
+
EncodingVersion encoding;
|
|
378
|
+
read(encoding.major);
|
|
379
|
+
read(encoding.minor);
|
|
380
|
+
i += static_cast<size_t>(sz) - sizeof(int32_t) - 2;
|
|
381
|
+
return encoding;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
void
|
|
385
|
+
Ice::InputStream::readPendingValues()
|
|
386
|
+
{
|
|
387
|
+
if (_currentEncaps && _currentEncaps->decoder)
|
|
388
|
+
{
|
|
389
|
+
_currentEncaps->decoder->readPendingValues();
|
|
390
|
+
}
|
|
391
|
+
else if (getEncoding() == Ice::Encoding_1_0)
|
|
392
|
+
{
|
|
393
|
+
//
|
|
394
|
+
// If using the 1.0 encoding and no instances were read, we
|
|
395
|
+
// still read an empty sequence of pending instances if
|
|
396
|
+
// requested (i.e.: if this is called).
|
|
397
|
+
//
|
|
398
|
+
// This is required by the 1.0 encoding, even if no instances
|
|
399
|
+
// are written we do marshal an empty sequence if marshaled
|
|
400
|
+
// data types use classes.
|
|
401
|
+
//
|
|
402
|
+
skipSize();
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
int32_t
|
|
407
|
+
Ice::InputStream::readAndCheckSeqSize(int minSize)
|
|
408
|
+
{
|
|
409
|
+
int32_t sz = readSize();
|
|
410
|
+
|
|
411
|
+
if (sz == 0)
|
|
412
|
+
{
|
|
413
|
+
return sz;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
//
|
|
417
|
+
// The _startSeq variable points to the start of the sequence for which
|
|
418
|
+
// we expect to read at least _minSeqSize bytes from the stream.
|
|
419
|
+
//
|
|
420
|
+
// If not initialized or if we already read more data than _minSeqSize,
|
|
421
|
+
// we reset _startSeq and _minSeqSize for this sequence (possibly a
|
|
422
|
+
// top-level sequence or enclosed sequence it doesn't really matter).
|
|
423
|
+
//
|
|
424
|
+
// Otherwise, we are reading an enclosed sequence and we have to bump
|
|
425
|
+
// _minSeqSize by the minimum size that this sequence will require on
|
|
426
|
+
// the stream.
|
|
427
|
+
//
|
|
428
|
+
// The goal of this check is to ensure that when we start un-marshaling
|
|
429
|
+
// a new sequence, we check the minimal size of this new sequence against
|
|
430
|
+
// the estimated remaining buffer size. This estimation is based on
|
|
431
|
+
// the minimum size of the enclosing sequences, it's _minSeqSize.
|
|
432
|
+
//
|
|
433
|
+
if (_startSeq == -1 || i > (b.begin() + _startSeq + _minSeqSize))
|
|
434
|
+
{
|
|
435
|
+
_startSeq = static_cast<int>(i - b.begin());
|
|
436
|
+
_minSeqSize = sz * minSize;
|
|
437
|
+
}
|
|
438
|
+
else
|
|
439
|
+
{
|
|
440
|
+
_minSeqSize += sz * minSize;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
//
|
|
444
|
+
// If there isn't enough data to read on the stream for the sequence (and
|
|
445
|
+
// possibly enclosed sequences), something is wrong with the marshaled
|
|
446
|
+
// data: it's claiming having more data that what is possible to read.
|
|
447
|
+
//
|
|
448
|
+
if (_startSeq + _minSeqSize > static_cast<int>(b.size()))
|
|
449
|
+
{
|
|
450
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
return sz;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
void
|
|
457
|
+
Ice::InputStream::readBlob(vector<byte>& v, int32_t sz)
|
|
458
|
+
{
|
|
459
|
+
if (sz > 0)
|
|
460
|
+
{
|
|
461
|
+
if (b.end() - i < sz)
|
|
462
|
+
{
|
|
463
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
464
|
+
}
|
|
465
|
+
vector<byte>(i, i + sz).swap(v);
|
|
466
|
+
i += sz;
|
|
467
|
+
}
|
|
468
|
+
else
|
|
469
|
+
{
|
|
470
|
+
v.clear();
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
void
|
|
475
|
+
Ice::InputStream::read(std::vector<byte>& v)
|
|
476
|
+
{
|
|
477
|
+
std::pair<const byte*, const byte*> p;
|
|
478
|
+
read(p);
|
|
479
|
+
if (p.first != p.second)
|
|
480
|
+
{
|
|
481
|
+
v.resize(static_cast<size_t>(p.second - p.first));
|
|
482
|
+
copy(p.first, p.second, v.begin());
|
|
483
|
+
}
|
|
484
|
+
else
|
|
485
|
+
{
|
|
486
|
+
v.clear();
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
void
|
|
491
|
+
Ice::InputStream::read(pair<const byte*, const byte*>& v)
|
|
492
|
+
{
|
|
493
|
+
int32_t sz = readAndCheckSeqSize(1);
|
|
494
|
+
if (sz > 0)
|
|
495
|
+
{
|
|
496
|
+
v.first = i;
|
|
497
|
+
v.second = i + sz;
|
|
498
|
+
i += sz;
|
|
499
|
+
}
|
|
500
|
+
else
|
|
501
|
+
{
|
|
502
|
+
v.first = v.second = i;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
void
|
|
507
|
+
Ice::InputStream::read(vector<bool>& v)
|
|
508
|
+
{
|
|
509
|
+
int32_t sz = readAndCheckSeqSize(1);
|
|
510
|
+
if (sz > 0)
|
|
511
|
+
{
|
|
512
|
+
v.resize(static_cast<size_t>(sz));
|
|
513
|
+
copy(reinterpret_cast<uint8_t*>(i), reinterpret_cast<uint8_t*>(i) + sz, v.begin());
|
|
514
|
+
i += sz;
|
|
515
|
+
}
|
|
516
|
+
else
|
|
517
|
+
{
|
|
518
|
+
v.clear();
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
namespace
|
|
523
|
+
{
|
|
524
|
+
template<size_t boolSize> struct ReadBoolHelper
|
|
525
|
+
{
|
|
526
|
+
static bool* read(pair<const bool*, const bool*>& v, int32_t sz, InputStream::Container::iterator& i)
|
|
527
|
+
{
|
|
528
|
+
bool* array = new bool[static_cast<size_t>(sz)];
|
|
529
|
+
for (int idx = 0; idx < sz; ++idx)
|
|
530
|
+
{
|
|
531
|
+
array[idx] = static_cast<bool>(*(i + idx));
|
|
532
|
+
}
|
|
533
|
+
v.first = array;
|
|
534
|
+
v.second = array + sz;
|
|
535
|
+
return array;
|
|
536
|
+
}
|
|
537
|
+
};
|
|
538
|
+
|
|
539
|
+
template<> struct ReadBoolHelper<1>
|
|
540
|
+
{
|
|
541
|
+
static bool* read(pair<const bool*, const bool*>& v, int32_t sz, InputStream::Container::iterator& i)
|
|
542
|
+
{
|
|
543
|
+
v.first = reinterpret_cast<bool*>(i);
|
|
544
|
+
v.second = reinterpret_cast<bool*>(i) + sz;
|
|
545
|
+
return nullptr;
|
|
546
|
+
}
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
void
|
|
551
|
+
Ice::InputStream::read(pair<const bool*, const bool*>& v)
|
|
552
|
+
{
|
|
553
|
+
int32_t sz = readAndCheckSeqSize(1);
|
|
554
|
+
if (sz > 0)
|
|
555
|
+
{
|
|
556
|
+
auto boolArray = ReadBoolHelper<sizeof(bool)>::read(v, sz, i);
|
|
557
|
+
if (boolArray)
|
|
558
|
+
{
|
|
559
|
+
_deleters.emplace_back([boolArray] { delete[] boolArray; });
|
|
560
|
+
}
|
|
561
|
+
i += sz;
|
|
562
|
+
}
|
|
563
|
+
else
|
|
564
|
+
{
|
|
565
|
+
v.first = v.second = reinterpret_cast<bool*>(i);
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
void
|
|
570
|
+
Ice::InputStream::read(int16_t& v)
|
|
571
|
+
{
|
|
572
|
+
if (b.end() - i < static_cast<int>(sizeof(int16_t)))
|
|
573
|
+
{
|
|
574
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
575
|
+
}
|
|
576
|
+
const byte* src = &(*i);
|
|
577
|
+
i += sizeof(int16_t);
|
|
578
|
+
if constexpr (endian::native == endian::big)
|
|
579
|
+
{
|
|
580
|
+
byte* dest = reinterpret_cast<byte*>(&v) + sizeof(int16_t) - 1;
|
|
581
|
+
*dest-- = *src++;
|
|
582
|
+
*dest = *src;
|
|
583
|
+
}
|
|
584
|
+
else
|
|
585
|
+
{
|
|
586
|
+
byte* dest = reinterpret_cast<byte*>(&v);
|
|
587
|
+
*dest++ = *src++;
|
|
588
|
+
*dest = *src;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
void
|
|
593
|
+
Ice::InputStream::read(vector<int16_t>& v)
|
|
594
|
+
{
|
|
595
|
+
int32_t sz = readAndCheckSeqSize(static_cast<int>(sizeof(int16_t)));
|
|
596
|
+
if (sz > 0)
|
|
597
|
+
{
|
|
598
|
+
Container::iterator begin = i;
|
|
599
|
+
i += sz * static_cast<int>(sizeof(int16_t));
|
|
600
|
+
v.resize(static_cast<size_t>(sz));
|
|
601
|
+
if constexpr (endian::native == endian::big)
|
|
602
|
+
{
|
|
603
|
+
const byte* src = &(*begin);
|
|
604
|
+
byte* dest = reinterpret_cast<byte*>(&v[0]) + sizeof(int16_t) - 1;
|
|
605
|
+
for (int j = 0; j < sz; ++j)
|
|
606
|
+
{
|
|
607
|
+
*dest-- = *src++;
|
|
608
|
+
*dest-- = *src++;
|
|
609
|
+
dest += 2 * sizeof(int16_t);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
else
|
|
613
|
+
{
|
|
614
|
+
copy(begin, i, reinterpret_cast<byte*>(&v[0]));
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
else
|
|
618
|
+
{
|
|
619
|
+
v.clear();
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
void
|
|
624
|
+
Ice::InputStream::read(int32_t& v)
|
|
625
|
+
{
|
|
626
|
+
if (b.end() - i < static_cast<int>(sizeof(int32_t)))
|
|
627
|
+
{
|
|
628
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
629
|
+
}
|
|
630
|
+
const byte* src = &(*i);
|
|
631
|
+
i += sizeof(int32_t);
|
|
632
|
+
if constexpr (endian::native == endian::big)
|
|
633
|
+
{
|
|
634
|
+
byte* dest = reinterpret_cast<byte*>(&v) + sizeof(int32_t) - 1;
|
|
635
|
+
*dest-- = *src++;
|
|
636
|
+
*dest-- = *src++;
|
|
637
|
+
*dest-- = *src++;
|
|
638
|
+
*dest = *src;
|
|
639
|
+
}
|
|
640
|
+
else
|
|
641
|
+
{
|
|
642
|
+
byte* dest = reinterpret_cast<byte*>(&v);
|
|
643
|
+
*dest++ = *src++;
|
|
644
|
+
*dest++ = *src++;
|
|
645
|
+
*dest++ = *src++;
|
|
646
|
+
*dest = *src;
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
void
|
|
651
|
+
Ice::InputStream::read(vector<int32_t>& v)
|
|
652
|
+
{
|
|
653
|
+
int32_t sz = readAndCheckSeqSize(static_cast<int>(sizeof(int32_t)));
|
|
654
|
+
if (sz > 0)
|
|
655
|
+
{
|
|
656
|
+
Container::iterator begin = i;
|
|
657
|
+
i += sz * static_cast<int>(sizeof(int32_t));
|
|
658
|
+
v.resize(static_cast<size_t>(sz));
|
|
659
|
+
if constexpr (endian::native == endian::big)
|
|
660
|
+
{
|
|
661
|
+
const byte* src = &(*begin);
|
|
662
|
+
byte* dest = reinterpret_cast<byte*>(&v[0]) + sizeof(int32_t) - 1;
|
|
663
|
+
for (int j = 0; j < sz; ++j)
|
|
664
|
+
{
|
|
665
|
+
*dest-- = *src++;
|
|
666
|
+
*dest-- = *src++;
|
|
667
|
+
*dest-- = *src++;
|
|
668
|
+
*dest-- = *src++;
|
|
669
|
+
dest += 2 * sizeof(int32_t);
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
else
|
|
673
|
+
{
|
|
674
|
+
copy(begin, i, reinterpret_cast<byte*>(&v[0]));
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
else
|
|
678
|
+
{
|
|
679
|
+
v.clear();
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
void
|
|
684
|
+
Ice::InputStream::read(int64_t& v)
|
|
685
|
+
{
|
|
686
|
+
if (b.end() - i < static_cast<int>(sizeof(int64_t)))
|
|
687
|
+
{
|
|
688
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
689
|
+
}
|
|
690
|
+
const byte* src = &(*i);
|
|
691
|
+
i += sizeof(int64_t);
|
|
692
|
+
if constexpr (endian::native == endian::big)
|
|
693
|
+
{
|
|
694
|
+
byte* dest = reinterpret_cast<byte*>(&v) + sizeof(int64_t) - 1;
|
|
695
|
+
*dest-- = *src++;
|
|
696
|
+
*dest-- = *src++;
|
|
697
|
+
*dest-- = *src++;
|
|
698
|
+
*dest-- = *src++;
|
|
699
|
+
*dest-- = *src++;
|
|
700
|
+
*dest-- = *src++;
|
|
701
|
+
*dest-- = *src++;
|
|
702
|
+
*dest = *src;
|
|
703
|
+
}
|
|
704
|
+
else
|
|
705
|
+
{
|
|
706
|
+
byte* dest = reinterpret_cast<byte*>(&v);
|
|
707
|
+
*dest++ = *src++;
|
|
708
|
+
*dest++ = *src++;
|
|
709
|
+
*dest++ = *src++;
|
|
710
|
+
*dest++ = *src++;
|
|
711
|
+
*dest++ = *src++;
|
|
712
|
+
*dest++ = *src++;
|
|
713
|
+
*dest++ = *src++;
|
|
714
|
+
*dest = *src;
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
void
|
|
719
|
+
Ice::InputStream::read(vector<int64_t>& v)
|
|
720
|
+
{
|
|
721
|
+
int32_t sz = readAndCheckSeqSize(static_cast<int>(sizeof(int64_t)));
|
|
722
|
+
if (sz > 0)
|
|
723
|
+
{
|
|
724
|
+
Container::iterator begin = i;
|
|
725
|
+
i += sz * static_cast<int>(sizeof(int64_t));
|
|
726
|
+
v.resize(static_cast<size_t>(sz));
|
|
727
|
+
if constexpr (endian::native == endian::big)
|
|
728
|
+
{
|
|
729
|
+
const byte* src = &(*begin);
|
|
730
|
+
byte* dest = reinterpret_cast<byte*>(&v[0]) + sizeof(int64_t) - 1;
|
|
731
|
+
for (int j = 0; j < sz; ++j)
|
|
732
|
+
{
|
|
733
|
+
*dest-- = *src++;
|
|
734
|
+
*dest-- = *src++;
|
|
735
|
+
*dest-- = *src++;
|
|
736
|
+
*dest-- = *src++;
|
|
737
|
+
*dest-- = *src++;
|
|
738
|
+
*dest-- = *src++;
|
|
739
|
+
*dest-- = *src++;
|
|
740
|
+
*dest-- = *src++;
|
|
741
|
+
dest += 2 * sizeof(int64_t);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
else
|
|
745
|
+
{
|
|
746
|
+
copy(begin, i, reinterpret_cast<byte*>(&v[0]));
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
else
|
|
750
|
+
{
|
|
751
|
+
v.clear();
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
void
|
|
756
|
+
Ice::InputStream::read(float& v)
|
|
757
|
+
{
|
|
758
|
+
if (b.end() - i < static_cast<int>(sizeof(float)))
|
|
759
|
+
{
|
|
760
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
761
|
+
}
|
|
762
|
+
const byte* src = &(*i);
|
|
763
|
+
i += sizeof(float);
|
|
764
|
+
if constexpr (endian::native == endian::big)
|
|
765
|
+
{
|
|
766
|
+
byte* dest = reinterpret_cast<byte*>(&v) + sizeof(float) - 1;
|
|
767
|
+
*dest-- = *src++;
|
|
768
|
+
*dest-- = *src++;
|
|
769
|
+
*dest-- = *src++;
|
|
770
|
+
*dest = *src;
|
|
771
|
+
}
|
|
772
|
+
else
|
|
773
|
+
{
|
|
774
|
+
byte* dest = reinterpret_cast<byte*>(&v);
|
|
775
|
+
*dest++ = *src++;
|
|
776
|
+
*dest++ = *src++;
|
|
777
|
+
*dest++ = *src++;
|
|
778
|
+
*dest = *src;
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
void
|
|
783
|
+
Ice::InputStream::read(vector<float>& v)
|
|
784
|
+
{
|
|
785
|
+
int32_t sz = readAndCheckSeqSize(static_cast<int>(sizeof(float)));
|
|
786
|
+
if (sz > 0)
|
|
787
|
+
{
|
|
788
|
+
Container::iterator begin = i;
|
|
789
|
+
i += sz * static_cast<int>(sizeof(float));
|
|
790
|
+
v.resize(static_cast<size_t>(sz));
|
|
791
|
+
if constexpr (endian::native == endian::big)
|
|
792
|
+
{
|
|
793
|
+
const byte* src = &(*begin);
|
|
794
|
+
byte* dest = reinterpret_cast<byte*>(&v[0]) + sizeof(float) - 1;
|
|
795
|
+
for (int j = 0; j < sz; ++j)
|
|
796
|
+
{
|
|
797
|
+
*dest-- = *src++;
|
|
798
|
+
*dest-- = *src++;
|
|
799
|
+
*dest-- = *src++;
|
|
800
|
+
*dest-- = *src++;
|
|
801
|
+
dest += 2 * sizeof(float);
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
else
|
|
805
|
+
{
|
|
806
|
+
copy(begin, i, reinterpret_cast<byte*>(&v[0]));
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
else
|
|
810
|
+
{
|
|
811
|
+
v.clear();
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
void
|
|
816
|
+
Ice::InputStream::read(double& v)
|
|
817
|
+
{
|
|
818
|
+
if (b.end() - i < static_cast<int>(sizeof(double)))
|
|
819
|
+
{
|
|
820
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
821
|
+
}
|
|
822
|
+
const byte* src = &(*i);
|
|
823
|
+
i += sizeof(double);
|
|
824
|
+
if constexpr (endian::native == endian::big)
|
|
825
|
+
{
|
|
826
|
+
byte* dest = reinterpret_cast<byte*>(&v) + sizeof(double) - 1;
|
|
827
|
+
*dest-- = *src++;
|
|
828
|
+
*dest-- = *src++;
|
|
829
|
+
*dest-- = *src++;
|
|
830
|
+
*dest-- = *src++;
|
|
831
|
+
*dest-- = *src++;
|
|
832
|
+
*dest-- = *src++;
|
|
833
|
+
*dest-- = *src++;
|
|
834
|
+
*dest = *src;
|
|
835
|
+
}
|
|
836
|
+
else
|
|
837
|
+
{
|
|
838
|
+
byte* dest = reinterpret_cast<byte*>(&v);
|
|
839
|
+
*dest++ = *src++;
|
|
840
|
+
*dest++ = *src++;
|
|
841
|
+
*dest++ = *src++;
|
|
842
|
+
*dest++ = *src++;
|
|
843
|
+
*dest++ = *src++;
|
|
844
|
+
*dest++ = *src++;
|
|
845
|
+
*dest++ = *src++;
|
|
846
|
+
*dest = *src;
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
void
|
|
851
|
+
Ice::InputStream::read(vector<double>& v)
|
|
852
|
+
{
|
|
853
|
+
int32_t sz = readAndCheckSeqSize(static_cast<int>(sizeof(double)));
|
|
854
|
+
if (sz > 0)
|
|
855
|
+
{
|
|
856
|
+
Container::iterator begin = i;
|
|
857
|
+
i += sz * static_cast<int>(sizeof(double));
|
|
858
|
+
v.resize(static_cast<size_t>(sz));
|
|
859
|
+
if constexpr (endian::native == endian::big)
|
|
860
|
+
{
|
|
861
|
+
const byte* src = &(*begin);
|
|
862
|
+
byte* dest = reinterpret_cast<byte*>(&v[0]) + sizeof(double) - 1;
|
|
863
|
+
for (int j = 0; j < sz; ++j)
|
|
864
|
+
{
|
|
865
|
+
*dest-- = *src++;
|
|
866
|
+
*dest-- = *src++;
|
|
867
|
+
*dest-- = *src++;
|
|
868
|
+
*dest-- = *src++;
|
|
869
|
+
*dest-- = *src++;
|
|
870
|
+
*dest-- = *src++;
|
|
871
|
+
*dest-- = *src++;
|
|
872
|
+
*dest-- = *src++;
|
|
873
|
+
dest += 2 * sizeof(double);
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
else
|
|
877
|
+
{
|
|
878
|
+
copy(begin, i, reinterpret_cast<byte*>(&v[0]));
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
else
|
|
882
|
+
{
|
|
883
|
+
v.clear();
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
void
|
|
888
|
+
Ice::InputStream::read(std::string& v, bool convert)
|
|
889
|
+
{
|
|
890
|
+
int32_t sz = readSize();
|
|
891
|
+
if (sz > 0)
|
|
892
|
+
{
|
|
893
|
+
if (b.end() - i < sz)
|
|
894
|
+
{
|
|
895
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
if (!convert || !readConverted(v, sz))
|
|
899
|
+
{
|
|
900
|
+
string(reinterpret_cast<const char*>(&*i), reinterpret_cast<const char*>(&*i) + sz).swap(v);
|
|
901
|
+
}
|
|
902
|
+
i += sz;
|
|
903
|
+
}
|
|
904
|
+
else
|
|
905
|
+
{
|
|
906
|
+
v.clear();
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
void
|
|
911
|
+
Ice::InputStream::read(const char*& vdata, size_t& vsize, bool convert)
|
|
912
|
+
{
|
|
913
|
+
int sz = readSize();
|
|
914
|
+
if (sz > 0)
|
|
915
|
+
{
|
|
916
|
+
if (b.end() - i < sz)
|
|
917
|
+
{
|
|
918
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
if (convert == false)
|
|
922
|
+
{
|
|
923
|
+
vdata = reinterpret_cast<const char*>(&*i);
|
|
924
|
+
vsize = static_cast<size_t>(sz);
|
|
925
|
+
i += sz;
|
|
926
|
+
}
|
|
927
|
+
else
|
|
928
|
+
{
|
|
929
|
+
string converted;
|
|
930
|
+
if (readConverted(converted, sz))
|
|
931
|
+
{
|
|
932
|
+
if (converted.size() <= static_cast<size_t>(sz))
|
|
933
|
+
{
|
|
934
|
+
//
|
|
935
|
+
// Write converted string directly into buffer
|
|
936
|
+
//
|
|
937
|
+
std::memcpy(i, converted.data(), converted.size());
|
|
938
|
+
vdata = reinterpret_cast<const char*>(&*i);
|
|
939
|
+
vsize = converted.size();
|
|
940
|
+
}
|
|
941
|
+
else
|
|
942
|
+
{
|
|
943
|
+
auto holder = new string(std::move(converted));
|
|
944
|
+
_deleters.emplace_back([holder] { delete holder; });
|
|
945
|
+
vdata = holder->data();
|
|
946
|
+
vsize = holder->size();
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
else
|
|
950
|
+
{
|
|
951
|
+
vdata = reinterpret_cast<const char*>(&*i);
|
|
952
|
+
vsize = static_cast<size_t>(sz);
|
|
953
|
+
}
|
|
954
|
+
i += sz;
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
else
|
|
958
|
+
{
|
|
959
|
+
vdata = nullptr;
|
|
960
|
+
vsize = 0;
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
bool
|
|
965
|
+
Ice::InputStream::readConverted(string& v, int sz)
|
|
966
|
+
{
|
|
967
|
+
try
|
|
968
|
+
{
|
|
969
|
+
bool converted = false;
|
|
970
|
+
const StringConverterPtr& stringConverter = _instance->getStringConverter();
|
|
971
|
+
if (stringConverter)
|
|
972
|
+
{
|
|
973
|
+
stringConverter->fromUTF8(i, i + sz, v);
|
|
974
|
+
converted = true;
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
return converted;
|
|
978
|
+
}
|
|
979
|
+
catch (const IllegalConversionException& ex)
|
|
980
|
+
{
|
|
981
|
+
throw MarshalException{__FILE__, __LINE__, string{"failed to unmarshal a string:\n"} + ex.what()};
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
void
|
|
986
|
+
Ice::InputStream::read(vector<string>& v, bool convert)
|
|
987
|
+
{
|
|
988
|
+
int32_t sz = readAndCheckSeqSize(1);
|
|
989
|
+
if (sz > 0)
|
|
990
|
+
{
|
|
991
|
+
v.resize(static_cast<size_t>(sz));
|
|
992
|
+
for (size_t j = 0; j < static_cast<size_t>(sz); ++j)
|
|
993
|
+
{
|
|
994
|
+
read(v[j], convert);
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
else
|
|
998
|
+
{
|
|
999
|
+
v.clear();
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
void
|
|
1004
|
+
Ice::InputStream::read(wstring& v)
|
|
1005
|
+
{
|
|
1006
|
+
int32_t sz = readSize();
|
|
1007
|
+
if (sz > 0)
|
|
1008
|
+
{
|
|
1009
|
+
if (b.end() - i < sz)
|
|
1010
|
+
{
|
|
1011
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
try
|
|
1015
|
+
{
|
|
1016
|
+
const WstringConverterPtr& wstringConverter = _instance->getWstringConverter();
|
|
1017
|
+
wstringConverter->fromUTF8(i, i + sz, v);
|
|
1018
|
+
i += sz;
|
|
1019
|
+
}
|
|
1020
|
+
catch (const IllegalConversionException& ex)
|
|
1021
|
+
{
|
|
1022
|
+
throw MarshalException{__FILE__, __LINE__, string{"failed to unmarshal a string:\n"} + ex.what()};
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
else
|
|
1026
|
+
{
|
|
1027
|
+
v.clear();
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
void
|
|
1032
|
+
Ice::InputStream::read(vector<wstring>& v)
|
|
1033
|
+
{
|
|
1034
|
+
auto sz = static_cast<size_t>(readAndCheckSeqSize(1));
|
|
1035
|
+
if (sz > 0)
|
|
1036
|
+
{
|
|
1037
|
+
v.resize(sz);
|
|
1038
|
+
for (size_t j = 0; j < sz; ++j)
|
|
1039
|
+
{
|
|
1040
|
+
read(v[j]);
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
1043
|
+
else
|
|
1044
|
+
{
|
|
1045
|
+
v.clear();
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
namespace
|
|
1050
|
+
{
|
|
1051
|
+
inline Ice::SliceLoaderPtr getSliceLoader(SliceLoaderPtr sliceLoader, Instance* instance)
|
|
1052
|
+
{
|
|
1053
|
+
if (!sliceLoader)
|
|
1054
|
+
{
|
|
1055
|
+
sliceLoader = instance->sliceLoader();
|
|
1056
|
+
}
|
|
1057
|
+
return sliceLoader;
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
Ice::InputStream::InputStream(Instance* instance, EncodingVersion encoding, Buffer&& buf, SliceLoaderPtr sliceLoader)
|
|
1062
|
+
: Buffer(std::move(buf)),
|
|
1063
|
+
_instance(instance),
|
|
1064
|
+
_encoding(encoding),
|
|
1065
|
+
_classGraphDepthMax(instance->classGraphDepthMax()),
|
|
1066
|
+
_sliceLoader{getSliceLoader(std::move(sliceLoader), instance)}
|
|
1067
|
+
{
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
ReferencePtr
|
|
1071
|
+
Ice::InputStream::readReference()
|
|
1072
|
+
{
|
|
1073
|
+
Identity ident;
|
|
1074
|
+
read(ident);
|
|
1075
|
+
if (ident.name.empty())
|
|
1076
|
+
{
|
|
1077
|
+
return nullptr;
|
|
1078
|
+
}
|
|
1079
|
+
else
|
|
1080
|
+
{
|
|
1081
|
+
return _instance->referenceFactory()->create(std::move(ident), this);
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
int32_t
|
|
1086
|
+
Ice::InputStream::readEnum(int32_t maxValue)
|
|
1087
|
+
{
|
|
1088
|
+
if (getEncoding() == Encoding_1_0)
|
|
1089
|
+
{
|
|
1090
|
+
if (maxValue < 127)
|
|
1091
|
+
{
|
|
1092
|
+
uint8_t value;
|
|
1093
|
+
read(value);
|
|
1094
|
+
return value;
|
|
1095
|
+
}
|
|
1096
|
+
else if (maxValue < 32767)
|
|
1097
|
+
{
|
|
1098
|
+
int16_t value;
|
|
1099
|
+
read(value);
|
|
1100
|
+
return value;
|
|
1101
|
+
}
|
|
1102
|
+
else
|
|
1103
|
+
{
|
|
1104
|
+
int32_t value;
|
|
1105
|
+
read(value);
|
|
1106
|
+
return value;
|
|
1107
|
+
}
|
|
1108
|
+
}
|
|
1109
|
+
else
|
|
1110
|
+
{
|
|
1111
|
+
return readSize();
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
void
|
|
1116
|
+
Ice::InputStream::throwException(UserExceptionFactory factory)
|
|
1117
|
+
{
|
|
1118
|
+
initEncaps();
|
|
1119
|
+
_currentEncaps->decoder->throwException(std::move(factory));
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
bool
|
|
1123
|
+
Ice::InputStream::readOptImpl(int32_t readTag, OptionalFormat expectedFormat)
|
|
1124
|
+
{
|
|
1125
|
+
if (getEncoding() == Encoding_1_0)
|
|
1126
|
+
{
|
|
1127
|
+
return false; // Optional members aren't supported with the 1.0 encoding.
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
while (true)
|
|
1131
|
+
{
|
|
1132
|
+
if (i >= b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
1133
|
+
{
|
|
1134
|
+
return false; // End of encapsulation also indicates end of optionals.
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
uint8_t v;
|
|
1138
|
+
read(v);
|
|
1139
|
+
if (v == OPTIONAL_END_MARKER)
|
|
1140
|
+
{
|
|
1141
|
+
--i; // Rewind
|
|
1142
|
+
return false;
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1145
|
+
auto format = static_cast<OptionalFormat>(v & 0x07); // First 3 bits.
|
|
1146
|
+
auto tag = static_cast<int32_t>(v >> 3);
|
|
1147
|
+
if (tag == 30)
|
|
1148
|
+
{
|
|
1149
|
+
tag = readSize();
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
if (tag > readTag)
|
|
1153
|
+
{
|
|
1154
|
+
i -= tag < 30 ? 1 : (tag < 255 ? 2 : 6); // Rewind
|
|
1155
|
+
return false; // No optional data members with the requested tag.
|
|
1156
|
+
}
|
|
1157
|
+
else if (tag < readTag)
|
|
1158
|
+
{
|
|
1159
|
+
skipOptional(format); // Skip optional data members
|
|
1160
|
+
}
|
|
1161
|
+
else
|
|
1162
|
+
{
|
|
1163
|
+
if (format != expectedFormat)
|
|
1164
|
+
{
|
|
1165
|
+
ostringstream os;
|
|
1166
|
+
os << "invalid optional data member '" << tag << "': unexpected format";
|
|
1167
|
+
throw MarshalException(__FILE__, __LINE__, os.str());
|
|
1168
|
+
}
|
|
1169
|
+
return true;
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1172
|
+
return true; // Keep the compiler happy.
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
void
|
|
1176
|
+
Ice::InputStream::skipOptional(OptionalFormat type)
|
|
1177
|
+
{
|
|
1178
|
+
switch (type)
|
|
1179
|
+
{
|
|
1180
|
+
case OptionalFormat::F1:
|
|
1181
|
+
{
|
|
1182
|
+
skip(1);
|
|
1183
|
+
break;
|
|
1184
|
+
}
|
|
1185
|
+
case OptionalFormat::F2:
|
|
1186
|
+
{
|
|
1187
|
+
skip(2);
|
|
1188
|
+
break;
|
|
1189
|
+
}
|
|
1190
|
+
case OptionalFormat::F4:
|
|
1191
|
+
{
|
|
1192
|
+
skip(4);
|
|
1193
|
+
break;
|
|
1194
|
+
}
|
|
1195
|
+
case OptionalFormat::F8:
|
|
1196
|
+
{
|
|
1197
|
+
skip(8);
|
|
1198
|
+
break;
|
|
1199
|
+
}
|
|
1200
|
+
case OptionalFormat::Size:
|
|
1201
|
+
{
|
|
1202
|
+
skipSize();
|
|
1203
|
+
break;
|
|
1204
|
+
}
|
|
1205
|
+
case OptionalFormat::VSize:
|
|
1206
|
+
{
|
|
1207
|
+
skip(static_cast<size_t>(readSize()));
|
|
1208
|
+
break;
|
|
1209
|
+
}
|
|
1210
|
+
case OptionalFormat::FSize:
|
|
1211
|
+
{
|
|
1212
|
+
int32_t sz;
|
|
1213
|
+
read(sz);
|
|
1214
|
+
if (sz < 0)
|
|
1215
|
+
{
|
|
1216
|
+
throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
|
|
1217
|
+
}
|
|
1218
|
+
skip(static_cast<size_t>(sz));
|
|
1219
|
+
break;
|
|
1220
|
+
}
|
|
1221
|
+
case OptionalFormat::Class:
|
|
1222
|
+
{
|
|
1223
|
+
throw MarshalException{__FILE__, __LINE__, "cannot skip optional class"};
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
void
|
|
1229
|
+
Ice::InputStream::skipOptionals()
|
|
1230
|
+
{
|
|
1231
|
+
//
|
|
1232
|
+
// Skip remaining un-read optional members.
|
|
1233
|
+
//
|
|
1234
|
+
while (true)
|
|
1235
|
+
{
|
|
1236
|
+
if (i >= b.begin() + _currentEncaps->start + _currentEncaps->sz)
|
|
1237
|
+
{
|
|
1238
|
+
return; // End of encapsulation also indicates end of optionals.
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
uint8_t v;
|
|
1242
|
+
read(v);
|
|
1243
|
+
if (v == OPTIONAL_END_MARKER)
|
|
1244
|
+
{
|
|
1245
|
+
return;
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1248
|
+
auto format = static_cast<OptionalFormat>(v & 0x07); // Read first 3 bits.
|
|
1249
|
+
if (static_cast<int32_t>(v >> 3) == 30)
|
|
1250
|
+
{
|
|
1251
|
+
skipSize();
|
|
1252
|
+
}
|
|
1253
|
+
skipOptional(format);
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
void
|
|
1258
|
+
Ice::InputStream::throwUnmarshalOutOfBoundsException(const char* file, int line)
|
|
1259
|
+
{
|
|
1260
|
+
throw MarshalException{file, line, endOfBufferMessage};
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
void
|
|
1264
|
+
Ice::InputStream::traceSkipSlice(string_view typeId, SliceType sliceType) const
|
|
1265
|
+
{
|
|
1266
|
+
assert(_instance->initializationData().logger); // not null once the communicator is initialized
|
|
1267
|
+
if (_instance->traceLevels()->slicing > 0)
|
|
1268
|
+
{
|
|
1269
|
+
traceSlicing(
|
|
1270
|
+
sliceType == ExceptionSlice ? "exception" : "object",
|
|
1271
|
+
typeId,
|
|
1272
|
+
"Slicing",
|
|
1273
|
+
_instance->initializationData().logger);
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1277
|
+
void
|
|
1278
|
+
Ice::InputStream::initEncaps()
|
|
1279
|
+
{
|
|
1280
|
+
if (!_currentEncaps) // Lazy initialization.
|
|
1281
|
+
{
|
|
1282
|
+
_currentEncaps = &_preAllocatedEncaps;
|
|
1283
|
+
_currentEncaps->encoding = _encoding;
|
|
1284
|
+
_currentEncaps->sz = static_cast<int32_t>(b.size());
|
|
1285
|
+
}
|
|
1286
|
+
|
|
1287
|
+
if (!_currentEncaps->decoder) // Lazy initialization.
|
|
1288
|
+
{
|
|
1289
|
+
if (_currentEncaps->encoding == Encoding_1_0)
|
|
1290
|
+
{
|
|
1291
|
+
_currentEncaps->decoder = new EncapsDecoder10(this, _currentEncaps, _classGraphDepthMax);
|
|
1292
|
+
}
|
|
1293
|
+
else
|
|
1294
|
+
{
|
|
1295
|
+
_currentEncaps->decoder = new EncapsDecoder11(this, _currentEncaps, _classGraphDepthMax);
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
// Out of line to avoid weak vtable
|
|
1301
|
+
Ice::InputStream::EncapsDecoder::~EncapsDecoder() = default;
|
|
1302
|
+
|
|
1303
|
+
string
|
|
1304
|
+
Ice::InputStream::EncapsDecoder::readTypeId(bool isIndex)
|
|
1305
|
+
{
|
|
1306
|
+
if (isIndex)
|
|
1307
|
+
{
|
|
1308
|
+
int32_t index = _stream->readSize();
|
|
1309
|
+
auto k = _typeIdMap.find(index);
|
|
1310
|
+
if (k == _typeIdMap.end())
|
|
1311
|
+
{
|
|
1312
|
+
throw MarshalException{__FILE__, __LINE__, endOfBufferMessage};
|
|
1313
|
+
}
|
|
1314
|
+
return k->second;
|
|
1315
|
+
}
|
|
1316
|
+
else
|
|
1317
|
+
{
|
|
1318
|
+
string typeId;
|
|
1319
|
+
_stream->read(typeId, false);
|
|
1320
|
+
_typeIdMap.insert(make_pair(++_typeIdIndex, typeId));
|
|
1321
|
+
return typeId;
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
ValuePtr
|
|
1326
|
+
Ice::InputStream::EncapsDecoder::newInstance(string_view typeId)
|
|
1327
|
+
{
|
|
1328
|
+
return _stream->_sliceLoader->newClassInstance(typeId);
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
void
|
|
1332
|
+
Ice::InputStream::EncapsDecoder::addPatchEntry(int32_t index, const PatchFunc& patchFunc, void* patchAddr)
|
|
1333
|
+
{
|
|
1334
|
+
assert(index > 0);
|
|
1335
|
+
|
|
1336
|
+
//
|
|
1337
|
+
// Check if we already unmarshaled the object. If that's the case, just patch the object smart
|
|
1338
|
+
// pointer and we're done. A null value indicates we've encountered a cycle and Ice.AllowClassCycles
|
|
1339
|
+
// is false.
|
|
1340
|
+
//
|
|
1341
|
+
auto p = _unmarshaledMap.find(index);
|
|
1342
|
+
if (p != _unmarshaledMap.end())
|
|
1343
|
+
{
|
|
1344
|
+
if (p->second == nullptr)
|
|
1345
|
+
{
|
|
1346
|
+
assert(!_stream->_instance->acceptClassCycles());
|
|
1347
|
+
throw MarshalException(__FILE__, __LINE__, "cycle detected during Value unmarshaling");
|
|
1348
|
+
}
|
|
1349
|
+
patchFunc(patchAddr, p->second);
|
|
1350
|
+
return;
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
//
|
|
1354
|
+
// Add a patch entry if the object isn't unmarshaled yet, the
|
|
1355
|
+
// smart pointer will be patched when the instance is
|
|
1356
|
+
// unmarshaled.
|
|
1357
|
+
//
|
|
1358
|
+
|
|
1359
|
+
auto q = _patchMap.find(index);
|
|
1360
|
+
if (q == _patchMap.end())
|
|
1361
|
+
{
|
|
1362
|
+
//
|
|
1363
|
+
// We have no outstanding instances to be patched for this
|
|
1364
|
+
// index, so make a new entry in the patch map.
|
|
1365
|
+
//
|
|
1366
|
+
q = _patchMap.insert(make_pair(index, PatchList())).first;
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
//
|
|
1370
|
+
// Append a patch entry for this instance.
|
|
1371
|
+
//
|
|
1372
|
+
PatchEntry e;
|
|
1373
|
+
e.patchFunc = patchFunc;
|
|
1374
|
+
e.patchAddr = patchAddr;
|
|
1375
|
+
e.classGraphDepth = _classGraphDepth;
|
|
1376
|
+
q->second.push_back(e);
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1379
|
+
void
|
|
1380
|
+
Ice::InputStream::EncapsDecoder::unmarshal(int32_t index, const ValuePtr& v)
|
|
1381
|
+
{
|
|
1382
|
+
//
|
|
1383
|
+
// Add the object to the map of unmarshaled instances, this must
|
|
1384
|
+
// be done before reading the instances (for circular references).
|
|
1385
|
+
//
|
|
1386
|
+
// If circular references are not allowed we insert null (for cycle detection) and add
|
|
1387
|
+
// the object to the map once it has been fully unmarshaled.
|
|
1388
|
+
//
|
|
1389
|
+
_unmarshaledMap.insert(make_pair(index, _stream->_instance->acceptClassCycles() ? v : nullptr));
|
|
1390
|
+
|
|
1391
|
+
//
|
|
1392
|
+
// Read the object.
|
|
1393
|
+
//
|
|
1394
|
+
v->_iceRead(_stream);
|
|
1395
|
+
|
|
1396
|
+
//
|
|
1397
|
+
// Patch all instances now that the object is unmarshaled.
|
|
1398
|
+
//
|
|
1399
|
+
auto patchPos = _patchMap.find(index);
|
|
1400
|
+
if (patchPos != _patchMap.end())
|
|
1401
|
+
{
|
|
1402
|
+
assert(patchPos->second.size() > 0);
|
|
1403
|
+
|
|
1404
|
+
//
|
|
1405
|
+
// Patch all pointers that refer to the instance.
|
|
1406
|
+
//
|
|
1407
|
+
for (const auto& k : patchPos->second)
|
|
1408
|
+
{
|
|
1409
|
+
k.patchFunc(k.patchAddr, v);
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
//
|
|
1413
|
+
// Clear out the patch map for that index -- there is nothing left
|
|
1414
|
+
// to patch for that index for the time being.
|
|
1415
|
+
//
|
|
1416
|
+
_patchMap.erase(patchPos);
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
if (_valueList.empty() && _patchMap.empty())
|
|
1420
|
+
{
|
|
1421
|
+
v->ice_postUnmarshal();
|
|
1422
|
+
}
|
|
1423
|
+
else
|
|
1424
|
+
{
|
|
1425
|
+
_valueList.push_back(v);
|
|
1426
|
+
|
|
1427
|
+
if (_patchMap.empty())
|
|
1428
|
+
{
|
|
1429
|
+
// Iterate over the value list and invoke ice_postUnmarshal on
|
|
1430
|
+
// each value. We must do this after all values have been
|
|
1431
|
+
// unmarshaled in order to ensure that any value data members
|
|
1432
|
+
// have been properly patched.
|
|
1433
|
+
for (const auto& value : _valueList)
|
|
1434
|
+
{
|
|
1435
|
+
value->ice_postUnmarshal();
|
|
1436
|
+
}
|
|
1437
|
+
_valueList.clear();
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1440
|
+
|
|
1441
|
+
if (!_stream->_instance->acceptClassCycles())
|
|
1442
|
+
{
|
|
1443
|
+
// This class has been fully unmarshaled without creating any cycles
|
|
1444
|
+
// It can be added to the map now.
|
|
1445
|
+
_unmarshaledMap[index] = v;
|
|
1446
|
+
}
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
void
|
|
1450
|
+
Ice::InputStream::EncapsDecoder10::read(PatchFunc patchFunc, void* patchAddr)
|
|
1451
|
+
{
|
|
1452
|
+
assert(patchFunc && patchAddr);
|
|
1453
|
+
|
|
1454
|
+
//
|
|
1455
|
+
// Object references are encoded as a negative integer in 1.0.
|
|
1456
|
+
//
|
|
1457
|
+
int32_t index;
|
|
1458
|
+
_stream->read(index);
|
|
1459
|
+
if (index > 0)
|
|
1460
|
+
{
|
|
1461
|
+
throw MarshalException(__FILE__, __LINE__, "invalid object id");
|
|
1462
|
+
}
|
|
1463
|
+
index = -index;
|
|
1464
|
+
|
|
1465
|
+
if (index == 0)
|
|
1466
|
+
{
|
|
1467
|
+
//
|
|
1468
|
+
// Calling the patch function for null instances is necessary for correct functioning of Ice for
|
|
1469
|
+
// Python and Ruby.
|
|
1470
|
+
//
|
|
1471
|
+
patchFunc(patchAddr, nullptr);
|
|
1472
|
+
}
|
|
1473
|
+
else
|
|
1474
|
+
{
|
|
1475
|
+
addPatchEntry(index, patchFunc, patchAddr);
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
void
|
|
1480
|
+
Ice::InputStream::EncapsDecoder10::throwException(UserExceptionFactory exceptionFactory)
|
|
1481
|
+
{
|
|
1482
|
+
assert(_sliceType == NoSlice);
|
|
1483
|
+
|
|
1484
|
+
//
|
|
1485
|
+
// User exception with the 1.0 encoding start with a boolean flag
|
|
1486
|
+
// that indicates whether or not the exception has classes.
|
|
1487
|
+
//
|
|
1488
|
+
// This allows reading the pending values even if some part of
|
|
1489
|
+
// the exception was sliced.
|
|
1490
|
+
//
|
|
1491
|
+
bool usesClasses;
|
|
1492
|
+
_stream->read(usesClasses);
|
|
1493
|
+
|
|
1494
|
+
_sliceType = ExceptionSlice;
|
|
1495
|
+
_skipFirstSlice = false;
|
|
1496
|
+
|
|
1497
|
+
//
|
|
1498
|
+
// Read the first slice header.
|
|
1499
|
+
//
|
|
1500
|
+
startSlice();
|
|
1501
|
+
const string mostDerivedId = _typeId;
|
|
1502
|
+
while (true)
|
|
1503
|
+
{
|
|
1504
|
+
//
|
|
1505
|
+
// Look for a statically-generated factory for this ID.
|
|
1506
|
+
//
|
|
1507
|
+
if (!exceptionFactory)
|
|
1508
|
+
{
|
|
1509
|
+
std::exception_ptr exceptionPtr = _stream->_sliceLoader->newExceptionInstance(_typeId);
|
|
1510
|
+
|
|
1511
|
+
if (exceptionPtr)
|
|
1512
|
+
{
|
|
1513
|
+
exceptionFactory = [exceptionPtr](string_view) { std::rethrow_exception(exceptionPtr); };
|
|
1514
|
+
}
|
|
1515
|
+
}
|
|
1516
|
+
|
|
1517
|
+
//
|
|
1518
|
+
// We found a factory, we get out of this loop.
|
|
1519
|
+
// A factory that doesn't throw is equivalent to a null factory.
|
|
1520
|
+
//
|
|
1521
|
+
if (exceptionFactory)
|
|
1522
|
+
{
|
|
1523
|
+
//
|
|
1524
|
+
// Got factory -- ask the factory to instantiate the
|
|
1525
|
+
// exception, initialize the exception members, and throw
|
|
1526
|
+
// the exception.
|
|
1527
|
+
//
|
|
1528
|
+
try
|
|
1529
|
+
{
|
|
1530
|
+
exceptionFactory(_typeId);
|
|
1531
|
+
}
|
|
1532
|
+
catch (UserException& ex)
|
|
1533
|
+
{
|
|
1534
|
+
ex._read(_stream);
|
|
1535
|
+
if (usesClasses)
|
|
1536
|
+
{
|
|
1537
|
+
readPendingValues();
|
|
1538
|
+
}
|
|
1539
|
+
throw;
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
//
|
|
1544
|
+
// Slice off what we don't understand.
|
|
1545
|
+
//
|
|
1546
|
+
skipSlice();
|
|
1547
|
+
try
|
|
1548
|
+
{
|
|
1549
|
+
startSlice();
|
|
1550
|
+
}
|
|
1551
|
+
catch (const MarshalException&)
|
|
1552
|
+
{
|
|
1553
|
+
//
|
|
1554
|
+
// An oversight in the 1.0 encoding means there is no marker to indicate
|
|
1555
|
+
// the last slice of an exception. As a result, we just try to read the
|
|
1556
|
+
// next type ID, which raises MarshalException when the
|
|
1557
|
+
// input buffer underflows.
|
|
1558
|
+
throw MarshalException{__FILE__, __LINE__, "unknown exception type '" + mostDerivedId + "'"};
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1563
|
+
void
|
|
1564
|
+
Ice::InputStream::EncapsDecoder10::startInstance([[maybe_unused]] SliceType sliceType)
|
|
1565
|
+
{
|
|
1566
|
+
assert(_sliceType == sliceType);
|
|
1567
|
+
_skipFirstSlice = true;
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
SlicedDataPtr
|
|
1571
|
+
Ice::InputStream::EncapsDecoder10::endInstance()
|
|
1572
|
+
{
|
|
1573
|
+
//
|
|
1574
|
+
// Read the Ice::Value slice.
|
|
1575
|
+
//
|
|
1576
|
+
if (_sliceType == ValueSlice)
|
|
1577
|
+
{
|
|
1578
|
+
startSlice();
|
|
1579
|
+
int32_t sz = _stream->readSize(); // For compatibility with the old AFM.
|
|
1580
|
+
if (sz != 0)
|
|
1581
|
+
{
|
|
1582
|
+
throw MarshalException(__FILE__, __LINE__, "invalid Object slice");
|
|
1583
|
+
}
|
|
1584
|
+
endSlice();
|
|
1585
|
+
}
|
|
1586
|
+
_sliceType = NoSlice;
|
|
1587
|
+
return nullptr;
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
void
|
|
1591
|
+
Ice::InputStream::EncapsDecoder10::startSlice()
|
|
1592
|
+
{
|
|
1593
|
+
//
|
|
1594
|
+
// If first slice, don't read the header, it was already read in
|
|
1595
|
+
// readInstance or throwException to find the factory.
|
|
1596
|
+
//
|
|
1597
|
+
if (_skipFirstSlice)
|
|
1598
|
+
{
|
|
1599
|
+
_skipFirstSlice = false;
|
|
1600
|
+
return;
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1603
|
+
//
|
|
1604
|
+
// For values, first read the type ID boolean which indicates
|
|
1605
|
+
// whether or not the type ID is encoded as a string or as an
|
|
1606
|
+
// index. For exceptions, the type ID is always encoded as a
|
|
1607
|
+
// string.
|
|
1608
|
+
//
|
|
1609
|
+
if (_sliceType == ValueSlice)
|
|
1610
|
+
{
|
|
1611
|
+
bool isIndex;
|
|
1612
|
+
_stream->read(isIndex);
|
|
1613
|
+
_typeId = readTypeId(isIndex);
|
|
1614
|
+
}
|
|
1615
|
+
else
|
|
1616
|
+
{
|
|
1617
|
+
_stream->read(_typeId, false);
|
|
1618
|
+
}
|
|
1619
|
+
|
|
1620
|
+
_stream->read(_sliceSize);
|
|
1621
|
+
if (_sliceSize < 4)
|
|
1622
|
+
{
|
|
1623
|
+
throw MarshalException{__FILE__, __LINE__, endOfBufferMessage};
|
|
1624
|
+
}
|
|
1625
|
+
}
|
|
1626
|
+
|
|
1627
|
+
void
|
|
1628
|
+
Ice::InputStream::EncapsDecoder10::endSlice()
|
|
1629
|
+
{
|
|
1630
|
+
}
|
|
1631
|
+
|
|
1632
|
+
void
|
|
1633
|
+
Ice::InputStream::EncapsDecoder10::skipSlice()
|
|
1634
|
+
{
|
|
1635
|
+
_stream->traceSkipSlice(_typeId, _sliceType);
|
|
1636
|
+
assert(_sliceSize >= 4);
|
|
1637
|
+
_stream->skip(static_cast<size_t>(_sliceSize) - sizeof(int32_t));
|
|
1638
|
+
}
|
|
1639
|
+
|
|
1640
|
+
void
|
|
1641
|
+
Ice::InputStream::EncapsDecoder10::readPendingValues()
|
|
1642
|
+
{
|
|
1643
|
+
int32_t num;
|
|
1644
|
+
do
|
|
1645
|
+
{
|
|
1646
|
+
num = _stream->readSize();
|
|
1647
|
+
for (int32_t k = num; k > 0; --k)
|
|
1648
|
+
{
|
|
1649
|
+
readInstance();
|
|
1650
|
+
}
|
|
1651
|
+
} while (num);
|
|
1652
|
+
|
|
1653
|
+
if (!_patchMap.empty())
|
|
1654
|
+
{
|
|
1655
|
+
//
|
|
1656
|
+
// If any entries remain in the patch map, the sender has sent an index for an object, but
|
|
1657
|
+
// failed to supply the object.
|
|
1658
|
+
//
|
|
1659
|
+
throw MarshalException(__FILE__, __LINE__, "index for class received, but no instance");
|
|
1660
|
+
}
|
|
1661
|
+
}
|
|
1662
|
+
|
|
1663
|
+
void
|
|
1664
|
+
Ice::InputStream::EncapsDecoder10::readInstance()
|
|
1665
|
+
{
|
|
1666
|
+
int32_t index;
|
|
1667
|
+
_stream->read(index);
|
|
1668
|
+
|
|
1669
|
+
if (index <= 0)
|
|
1670
|
+
{
|
|
1671
|
+
throw MarshalException(__FILE__, __LINE__, "invalid object id");
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1674
|
+
_sliceType = ValueSlice;
|
|
1675
|
+
_skipFirstSlice = false;
|
|
1676
|
+
|
|
1677
|
+
//
|
|
1678
|
+
// Read the first slice header.
|
|
1679
|
+
//
|
|
1680
|
+
startSlice();
|
|
1681
|
+
const string mostDerivedId = _typeId;
|
|
1682
|
+
shared_ptr<Value> v;
|
|
1683
|
+
while (true)
|
|
1684
|
+
{
|
|
1685
|
+
// For the 1.0 encoding, the type ID for the base Object class marks the last slice.
|
|
1686
|
+
if (_typeId == Value::ice_staticId())
|
|
1687
|
+
{
|
|
1688
|
+
throw MarshalException{
|
|
1689
|
+
__FILE__,
|
|
1690
|
+
__LINE__,
|
|
1691
|
+
"the Slice loader did not find a class for type ID '" + mostDerivedId + "'"};
|
|
1692
|
+
}
|
|
1693
|
+
|
|
1694
|
+
v = newInstance(_typeId);
|
|
1695
|
+
|
|
1696
|
+
//
|
|
1697
|
+
// We found a factory, we get out of this loop.
|
|
1698
|
+
//
|
|
1699
|
+
if (v)
|
|
1700
|
+
{
|
|
1701
|
+
break;
|
|
1702
|
+
}
|
|
1703
|
+
|
|
1704
|
+
//
|
|
1705
|
+
// Slice off what we don't understand.
|
|
1706
|
+
//
|
|
1707
|
+
skipSlice();
|
|
1708
|
+
startSlice(); // Read next Slice header for next iteration.
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
//
|
|
1712
|
+
// Compute the biggest class graph depth of this object. To compute this,
|
|
1713
|
+
// we get the class graph depth of each ancestor from the patch map and
|
|
1714
|
+
// keep the biggest one.
|
|
1715
|
+
//
|
|
1716
|
+
_classGraphDepth = 0;
|
|
1717
|
+
auto patchPos = _patchMap.find(index);
|
|
1718
|
+
if (patchPos != _patchMap.end())
|
|
1719
|
+
{
|
|
1720
|
+
assert(patchPos->second.size() > 0);
|
|
1721
|
+
for (const auto& k : patchPos->second)
|
|
1722
|
+
{
|
|
1723
|
+
if (k.classGraphDepth > _classGraphDepth)
|
|
1724
|
+
{
|
|
1725
|
+
_classGraphDepth = k.classGraphDepth;
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
if (++_classGraphDepth > _classGraphDepthMax)
|
|
1731
|
+
{
|
|
1732
|
+
throw MarshalException(__FILE__, __LINE__, "maximum class graph depth reached");
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
//
|
|
1736
|
+
// Unmarshal the instance and add it to the map of unmarshaled instances.
|
|
1737
|
+
//
|
|
1738
|
+
unmarshal(index, v);
|
|
1739
|
+
}
|
|
1740
|
+
|
|
1741
|
+
void
|
|
1742
|
+
Ice::InputStream::EncapsDecoder11::read(PatchFunc patchFunc, void* patchAddr)
|
|
1743
|
+
{
|
|
1744
|
+
assert(patchFunc && patchAddr); // we used to support null for optional classes
|
|
1745
|
+
|
|
1746
|
+
int32_t index = _stream->readSize();
|
|
1747
|
+
if (index < 0)
|
|
1748
|
+
{
|
|
1749
|
+
throw MarshalException(__FILE__, __LINE__, "invalid object id");
|
|
1750
|
+
}
|
|
1751
|
+
else if (index == 0)
|
|
1752
|
+
{
|
|
1753
|
+
//
|
|
1754
|
+
// Calling the patch function for null instances is necessary for correct functioning of Ice for
|
|
1755
|
+
// Python and Ruby.
|
|
1756
|
+
//
|
|
1757
|
+
patchFunc(patchAddr, nullptr);
|
|
1758
|
+
}
|
|
1759
|
+
else if (_current && _current->sliceFlags & FLAG_HAS_INDIRECTION_TABLE)
|
|
1760
|
+
{
|
|
1761
|
+
//
|
|
1762
|
+
// When reading an object within a slice and there's an
|
|
1763
|
+
// indirect object table, always read an indirect reference
|
|
1764
|
+
// that points to an object from the indirect object table
|
|
1765
|
+
// marshaled at the end of the Slice.
|
|
1766
|
+
//
|
|
1767
|
+
// Maintain a list of indirect references. Note that the
|
|
1768
|
+
// indirect index starts at 1, so we decrement it by one to
|
|
1769
|
+
// derive an index into the indirection table that we'll read
|
|
1770
|
+
// at the end of the slice.
|
|
1771
|
+
//
|
|
1772
|
+
IndirectPatchEntry e;
|
|
1773
|
+
e.index = index - 1;
|
|
1774
|
+
e.patchFunc = patchFunc;
|
|
1775
|
+
e.patchAddr = patchAddr;
|
|
1776
|
+
_current->indirectPatchList.push_back(e);
|
|
1777
|
+
}
|
|
1778
|
+
else
|
|
1779
|
+
{
|
|
1780
|
+
readInstance(index, patchFunc, patchAddr);
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
|
|
1784
|
+
void
|
|
1785
|
+
Ice::InputStream::EncapsDecoder11::throwException(UserExceptionFactory exceptionFactory)
|
|
1786
|
+
{
|
|
1787
|
+
assert(!_current);
|
|
1788
|
+
|
|
1789
|
+
push(ExceptionSlice);
|
|
1790
|
+
|
|
1791
|
+
//
|
|
1792
|
+
// Read the first slice header.
|
|
1793
|
+
//
|
|
1794
|
+
startSlice();
|
|
1795
|
+
const string mostDerivedId = _current->typeId;
|
|
1796
|
+
while (true)
|
|
1797
|
+
{
|
|
1798
|
+
//
|
|
1799
|
+
// Look for a statically-generated factory for this ID.
|
|
1800
|
+
//
|
|
1801
|
+
if (!exceptionFactory)
|
|
1802
|
+
{
|
|
1803
|
+
std::exception_ptr exceptionPtr = _stream->_sliceLoader->newExceptionInstance(_current->typeId);
|
|
1804
|
+
|
|
1805
|
+
if (exceptionPtr)
|
|
1806
|
+
{
|
|
1807
|
+
exceptionFactory = [exceptionPtr](string_view) { std::rethrow_exception(exceptionPtr); };
|
|
1808
|
+
}
|
|
1809
|
+
}
|
|
1810
|
+
|
|
1811
|
+
//
|
|
1812
|
+
// We found a factory, we get out of this loop.
|
|
1813
|
+
// A factory that doesn't throw is equivalent to a null factory.
|
|
1814
|
+
//
|
|
1815
|
+
if (exceptionFactory)
|
|
1816
|
+
{
|
|
1817
|
+
//
|
|
1818
|
+
// Got factory -- ask the factory to instantiate the
|
|
1819
|
+
// exception, initialize the exception members, and throw
|
|
1820
|
+
// the exception.
|
|
1821
|
+
//
|
|
1822
|
+
try
|
|
1823
|
+
{
|
|
1824
|
+
exceptionFactory(_current->typeId);
|
|
1825
|
+
}
|
|
1826
|
+
catch (UserException& ex)
|
|
1827
|
+
{
|
|
1828
|
+
ex._read(_stream);
|
|
1829
|
+
throw;
|
|
1830
|
+
}
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1833
|
+
//
|
|
1834
|
+
// Slice off what we don't understand.
|
|
1835
|
+
//
|
|
1836
|
+
skipSlice();
|
|
1837
|
+
|
|
1838
|
+
//
|
|
1839
|
+
// If this is the last slice, raise an exception and stop un-marshaling.
|
|
1840
|
+
//
|
|
1841
|
+
if (_current->sliceFlags & FLAG_IS_LAST_SLICE)
|
|
1842
|
+
{
|
|
1843
|
+
throw MarshalException{
|
|
1844
|
+
__FILE__,
|
|
1845
|
+
__LINE__,
|
|
1846
|
+
"cannot unmarshal exception with type ID '" + mostDerivedId + "'"};
|
|
1847
|
+
}
|
|
1848
|
+
|
|
1849
|
+
startSlice();
|
|
1850
|
+
}
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
void
|
|
1854
|
+
Ice::InputStream::EncapsDecoder11::startInstance([[maybe_unused]] SliceType sliceType)
|
|
1855
|
+
{
|
|
1856
|
+
assert(_current->sliceType == sliceType);
|
|
1857
|
+
_current->skipFirstSlice = true;
|
|
1858
|
+
}
|
|
1859
|
+
|
|
1860
|
+
SlicedDataPtr
|
|
1861
|
+
Ice::InputStream::EncapsDecoder11::endInstance()
|
|
1862
|
+
{
|
|
1863
|
+
SlicedDataPtr slicedData = readSlicedData();
|
|
1864
|
+
_current->indirectionTables.clear();
|
|
1865
|
+
_current->slices.clear();
|
|
1866
|
+
_current = _current->previous;
|
|
1867
|
+
return slicedData;
|
|
1868
|
+
}
|
|
1869
|
+
|
|
1870
|
+
void
|
|
1871
|
+
Ice::InputStream::EncapsDecoder11::startSlice()
|
|
1872
|
+
{
|
|
1873
|
+
//
|
|
1874
|
+
// If first slice, don't read the header, it was already read in
|
|
1875
|
+
// readInstance or throwException to find the factory.
|
|
1876
|
+
//
|
|
1877
|
+
if (_current->skipFirstSlice)
|
|
1878
|
+
{
|
|
1879
|
+
_current->skipFirstSlice = false;
|
|
1880
|
+
return;
|
|
1881
|
+
}
|
|
1882
|
+
|
|
1883
|
+
_stream->read(_current->sliceFlags);
|
|
1884
|
+
|
|
1885
|
+
//
|
|
1886
|
+
// Read the type ID, for value slices the type ID is encoded as a
|
|
1887
|
+
// string or as an index, for exceptions it's always encoded as a
|
|
1888
|
+
// string.
|
|
1889
|
+
//
|
|
1890
|
+
if (_current->sliceType == ValueSlice)
|
|
1891
|
+
{
|
|
1892
|
+
if ((_current->sliceFlags & FLAG_HAS_TYPE_ID_COMPACT) == FLAG_HAS_TYPE_ID_COMPACT) // Must be checked first!
|
|
1893
|
+
{
|
|
1894
|
+
_current->compactId = _stream->readSize();
|
|
1895
|
+
_current->typeId = std::to_string(_current->compactId);
|
|
1896
|
+
}
|
|
1897
|
+
else if (_current->sliceFlags & (FLAG_HAS_TYPE_ID_STRING | FLAG_HAS_TYPE_ID_INDEX))
|
|
1898
|
+
{
|
|
1899
|
+
_current->typeId = readTypeId(_current->sliceFlags & FLAG_HAS_TYPE_ID_INDEX);
|
|
1900
|
+
_current->compactId = -1;
|
|
1901
|
+
}
|
|
1902
|
+
else
|
|
1903
|
+
{
|
|
1904
|
+
// Only the most derived slice encodes the type ID for the compact format.
|
|
1905
|
+
_current->typeId.clear();
|
|
1906
|
+
_current->compactId = -1;
|
|
1907
|
+
}
|
|
1908
|
+
}
|
|
1909
|
+
else
|
|
1910
|
+
{
|
|
1911
|
+
_stream->read(_current->typeId, false);
|
|
1912
|
+
_current->compactId = -1;
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1915
|
+
//
|
|
1916
|
+
// Read the slice size if necessary.
|
|
1917
|
+
//
|
|
1918
|
+
if (_current->sliceFlags & FLAG_HAS_SLICE_SIZE)
|
|
1919
|
+
{
|
|
1920
|
+
_stream->read(_current->sliceSize);
|
|
1921
|
+
if (_current->sliceSize < 4)
|
|
1922
|
+
{
|
|
1923
|
+
throw MarshalException{__FILE__, __LINE__, endOfBufferMessage};
|
|
1924
|
+
}
|
|
1925
|
+
}
|
|
1926
|
+
else
|
|
1927
|
+
{
|
|
1928
|
+
_current->sliceSize = 0;
|
|
1929
|
+
}
|
|
1930
|
+
}
|
|
1931
|
+
|
|
1932
|
+
void
|
|
1933
|
+
Ice::InputStream::EncapsDecoder11::endSlice()
|
|
1934
|
+
{
|
|
1935
|
+
if (_current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS)
|
|
1936
|
+
{
|
|
1937
|
+
_stream->skipOptionals();
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
//
|
|
1941
|
+
// Read the indirect object table if one is present.
|
|
1942
|
+
//
|
|
1943
|
+
if (_current->sliceFlags & FLAG_HAS_INDIRECTION_TABLE)
|
|
1944
|
+
{
|
|
1945
|
+
IndexList indirectionTable(static_cast<size_t>(_stream->readAndCheckSeqSize(1)));
|
|
1946
|
+
for (auto& p : indirectionTable)
|
|
1947
|
+
{
|
|
1948
|
+
p = readInstance(_stream->readSize(), nullptr, nullptr);
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
//
|
|
1952
|
+
// Sanity checks. If there are optional members, it's possible
|
|
1953
|
+
// that not all object references were read if they are from
|
|
1954
|
+
// unknown optional data members.
|
|
1955
|
+
//
|
|
1956
|
+
if (indirectionTable.empty())
|
|
1957
|
+
{
|
|
1958
|
+
throw MarshalException(__FILE__, __LINE__, "empty indirection table");
|
|
1959
|
+
}
|
|
1960
|
+
if (_current->indirectPatchList.empty() && !(_current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS))
|
|
1961
|
+
{
|
|
1962
|
+
throw MarshalException(__FILE__, __LINE__, "no references to indirection table");
|
|
1963
|
+
}
|
|
1964
|
+
|
|
1965
|
+
//
|
|
1966
|
+
// Convert indirect references into direct references.
|
|
1967
|
+
//
|
|
1968
|
+
IndirectPatchList::iterator p;
|
|
1969
|
+
for (p = _current->indirectPatchList.begin(); p != _current->indirectPatchList.end(); ++p)
|
|
1970
|
+
{
|
|
1971
|
+
assert(p->index >= 0);
|
|
1972
|
+
if (p->index >= static_cast<int32_t>(indirectionTable.size()))
|
|
1973
|
+
{
|
|
1974
|
+
throw MarshalException(__FILE__, __LINE__, "indirection out of range");
|
|
1975
|
+
}
|
|
1976
|
+
addPatchEntry(indirectionTable[static_cast<size_t>(p->index)], p->patchFunc, p->patchAddr);
|
|
1977
|
+
}
|
|
1978
|
+
_current->indirectPatchList.clear();
|
|
1979
|
+
}
|
|
1980
|
+
}
|
|
1981
|
+
|
|
1982
|
+
void
|
|
1983
|
+
Ice::InputStream::EncapsDecoder11::skipSlice()
|
|
1984
|
+
{
|
|
1985
|
+
_stream->traceSkipSlice(_current->typeId, _current->sliceType);
|
|
1986
|
+
|
|
1987
|
+
Container::iterator start = _stream->i;
|
|
1988
|
+
|
|
1989
|
+
if (_current->sliceFlags & FLAG_HAS_SLICE_SIZE)
|
|
1990
|
+
{
|
|
1991
|
+
assert(_current->sliceSize >= 4);
|
|
1992
|
+
_stream->skip(static_cast<size_t>(_current->sliceSize) - sizeof(int32_t));
|
|
1993
|
+
}
|
|
1994
|
+
else
|
|
1995
|
+
{
|
|
1996
|
+
if (_current->sliceType == ValueSlice)
|
|
1997
|
+
{
|
|
1998
|
+
throw MarshalException{
|
|
1999
|
+
__FILE__,
|
|
2000
|
+
__LINE__,
|
|
2001
|
+
"the Slice loader did not find a class for type ID '" + _current->typeId +
|
|
2002
|
+
"' and compact format prevents slicing"};
|
|
2003
|
+
}
|
|
2004
|
+
else
|
|
2005
|
+
{
|
|
2006
|
+
throw MarshalException{
|
|
2007
|
+
__FILE__,
|
|
2008
|
+
__LINE__,
|
|
2009
|
+
"the Slice loader did not find a user exception class for type ID '" + _current->typeId +
|
|
2010
|
+
"' and compact format prevents slicing"};
|
|
2011
|
+
}
|
|
2012
|
+
}
|
|
2013
|
+
|
|
2014
|
+
//
|
|
2015
|
+
// Preserve this slice if unmarshaling a value in Slice format. Exception slices are not preserved.
|
|
2016
|
+
//
|
|
2017
|
+
if (_current->sliceType == ValueSlice)
|
|
2018
|
+
{
|
|
2019
|
+
bool hasOptionalMembers = _current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS;
|
|
2020
|
+
vector<byte> bytes;
|
|
2021
|
+
if (hasOptionalMembers)
|
|
2022
|
+
{
|
|
2023
|
+
//
|
|
2024
|
+
// Don't include the optional member end marker. It will be re-written by
|
|
2025
|
+
// endSlice when the sliced data is re-written.
|
|
2026
|
+
//
|
|
2027
|
+
bytes = vector<byte>(start, _stream->i - 1);
|
|
2028
|
+
}
|
|
2029
|
+
else
|
|
2030
|
+
{
|
|
2031
|
+
bytes = vector<byte>(start, _stream->i);
|
|
2032
|
+
}
|
|
2033
|
+
|
|
2034
|
+
SliceInfoPtr info = make_shared<SliceInfo>(
|
|
2035
|
+
_current->compactId == -1 ? _current->typeId : "",
|
|
2036
|
+
_current->compactId,
|
|
2037
|
+
std::move(bytes),
|
|
2038
|
+
hasOptionalMembers,
|
|
2039
|
+
_current->sliceFlags & FLAG_IS_LAST_SLICE);
|
|
2040
|
+
|
|
2041
|
+
_current->slices.push_back(info);
|
|
2042
|
+
}
|
|
2043
|
+
|
|
2044
|
+
_current->indirectionTables.emplace_back();
|
|
2045
|
+
|
|
2046
|
+
//
|
|
2047
|
+
// Read the indirect object table. We read the instances or their
|
|
2048
|
+
// IDs if the instance is a reference to an already un-marshaled
|
|
2049
|
+
// object.
|
|
2050
|
+
//
|
|
2051
|
+
if (_current->sliceFlags & FLAG_HAS_INDIRECTION_TABLE)
|
|
2052
|
+
{
|
|
2053
|
+
IndexList& table = _current->indirectionTables.back();
|
|
2054
|
+
table.resize(static_cast<size_t>(_stream->readAndCheckSeqSize(1)));
|
|
2055
|
+
for (auto& entry : table)
|
|
2056
|
+
{
|
|
2057
|
+
entry = readInstance(_stream->readSize(), nullptr, nullptr);
|
|
2058
|
+
}
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
|
|
2062
|
+
bool
|
|
2063
|
+
Ice::InputStream::EncapsDecoder11::readOptional(int32_t readTag, Ice::OptionalFormat expectedFormat)
|
|
2064
|
+
{
|
|
2065
|
+
if (!_current)
|
|
2066
|
+
{
|
|
2067
|
+
return _stream->readOptImpl(readTag, expectedFormat);
|
|
2068
|
+
}
|
|
2069
|
+
else if (_current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS)
|
|
2070
|
+
{
|
|
2071
|
+
return _stream->readOptImpl(readTag, expectedFormat);
|
|
2072
|
+
}
|
|
2073
|
+
return false;
|
|
2074
|
+
}
|
|
2075
|
+
|
|
2076
|
+
int32_t
|
|
2077
|
+
Ice::InputStream::EncapsDecoder11::readInstance(int32_t index, const PatchFunc& patchFunc, void* patchAddr)
|
|
2078
|
+
{
|
|
2079
|
+
assert(index > 0);
|
|
2080
|
+
|
|
2081
|
+
if (index > 1)
|
|
2082
|
+
{
|
|
2083
|
+
if (patchFunc)
|
|
2084
|
+
{
|
|
2085
|
+
addPatchEntry(index, patchFunc, patchAddr);
|
|
2086
|
+
}
|
|
2087
|
+
return index;
|
|
2088
|
+
}
|
|
2089
|
+
|
|
2090
|
+
push(ValueSlice);
|
|
2091
|
+
|
|
2092
|
+
//
|
|
2093
|
+
// Get the object ID before we start reading slices. If some
|
|
2094
|
+
// slices are skiped, the indirect object table are still read and
|
|
2095
|
+
// might read other instances.
|
|
2096
|
+
//
|
|
2097
|
+
index = ++_valueIdIndex;
|
|
2098
|
+
|
|
2099
|
+
//
|
|
2100
|
+
// Read the first slice header.
|
|
2101
|
+
//
|
|
2102
|
+
startSlice();
|
|
2103
|
+
const string mostDerivedId = _current->typeId;
|
|
2104
|
+
shared_ptr<Value> v;
|
|
2105
|
+
while (true)
|
|
2106
|
+
{
|
|
2107
|
+
if (!_current->typeId.empty())
|
|
2108
|
+
{
|
|
2109
|
+
v = newInstance(_current->typeId);
|
|
2110
|
+
|
|
2111
|
+
//
|
|
2112
|
+
// We found a factory, we get out of this loop.
|
|
2113
|
+
//
|
|
2114
|
+
if (v)
|
|
2115
|
+
{
|
|
2116
|
+
break;
|
|
2117
|
+
}
|
|
2118
|
+
}
|
|
2119
|
+
|
|
2120
|
+
//
|
|
2121
|
+
// Slice off what we don't understand.
|
|
2122
|
+
//
|
|
2123
|
+
skipSlice();
|
|
2124
|
+
|
|
2125
|
+
//
|
|
2126
|
+
// If this is the last slice, keep the object as an opaque UnknownSlicedValue.
|
|
2127
|
+
//
|
|
2128
|
+
if (_current->sliceFlags & FLAG_IS_LAST_SLICE)
|
|
2129
|
+
{
|
|
2130
|
+
//
|
|
2131
|
+
// Provide a factory with an opportunity to supply the object.
|
|
2132
|
+
// We pass the "::Ice::Object" ID to indicate that this is the
|
|
2133
|
+
// last chance to preserve the object.
|
|
2134
|
+
//
|
|
2135
|
+
v = newInstance(Value::ice_staticId());
|
|
2136
|
+
if (!v)
|
|
2137
|
+
{
|
|
2138
|
+
v = make_shared<UnknownSlicedValue>(mostDerivedId);
|
|
2139
|
+
}
|
|
2140
|
+
|
|
2141
|
+
break;
|
|
2142
|
+
}
|
|
2143
|
+
|
|
2144
|
+
startSlice(); // Read next Slice header for next iteration.
|
|
2145
|
+
}
|
|
2146
|
+
|
|
2147
|
+
if (++_classGraphDepth > _classGraphDepthMax)
|
|
2148
|
+
{
|
|
2149
|
+
throw MarshalException(__FILE__, __LINE__, "maximum class graph depth reached");
|
|
2150
|
+
}
|
|
2151
|
+
|
|
2152
|
+
//
|
|
2153
|
+
// Unmarshal the object.
|
|
2154
|
+
//
|
|
2155
|
+
unmarshal(index, v);
|
|
2156
|
+
|
|
2157
|
+
--_classGraphDepth;
|
|
2158
|
+
|
|
2159
|
+
if (!_current && !_patchMap.empty())
|
|
2160
|
+
{
|
|
2161
|
+
//
|
|
2162
|
+
// If any entries remain in the patch map, the sender has sent an index for an object, but
|
|
2163
|
+
// failed to supply the object.
|
|
2164
|
+
//
|
|
2165
|
+
throw MarshalException(__FILE__, __LINE__, "index for class received, but no instance");
|
|
2166
|
+
}
|
|
2167
|
+
|
|
2168
|
+
if (patchFunc)
|
|
2169
|
+
{
|
|
2170
|
+
patchFunc(patchAddr, v);
|
|
2171
|
+
}
|
|
2172
|
+
return index;
|
|
2173
|
+
}
|
|
2174
|
+
|
|
2175
|
+
SlicedDataPtr
|
|
2176
|
+
Ice::InputStream::EncapsDecoder11::readSlicedData()
|
|
2177
|
+
{
|
|
2178
|
+
if (_current->slices.empty()) // No preserved slices.
|
|
2179
|
+
{
|
|
2180
|
+
return nullptr;
|
|
2181
|
+
}
|
|
2182
|
+
|
|
2183
|
+
//
|
|
2184
|
+
// The indirectionTables member holds the indirection table for
|
|
2185
|
+
// each slice in slices.
|
|
2186
|
+
//
|
|
2187
|
+
assert(_current->slices.size() == _current->indirectionTables.size());
|
|
2188
|
+
for (SliceInfoSeq::size_type n = 0; n < _current->slices.size(); ++n)
|
|
2189
|
+
{
|
|
2190
|
+
//
|
|
2191
|
+
// We use the "instances" list in SliceInfo to hold references
|
|
2192
|
+
// to the target instances. Note that the instances might not have
|
|
2193
|
+
// been read yet in the case of a circular reference to an
|
|
2194
|
+
// enclosing instance.
|
|
2195
|
+
//
|
|
2196
|
+
const IndexList& table = _current->indirectionTables[n];
|
|
2197
|
+
vector<shared_ptr<Value>>& instances = _current->slices[n]->instances;
|
|
2198
|
+
instances.resize(table.size());
|
|
2199
|
+
IndexList::size_type j = 0;
|
|
2200
|
+
for (const auto& p : table)
|
|
2201
|
+
{
|
|
2202
|
+
addPatchEntry(p, patchValue<Value>, &instances[j++]);
|
|
2203
|
+
}
|
|
2204
|
+
}
|
|
2205
|
+
return make_shared<SlicedData>(_current->slices);
|
|
2206
|
+
}
|