zeroc-ice 3.7.11 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/dist/IceRuby/Communicator.cpp +159 -376
- data/dist/IceRuby/Communicator.h +8 -9
- data/dist/IceRuby/Config.h +23 -89
- data/dist/IceRuby/Connection.cpp +111 -219
- data/dist/IceRuby/Connection.h +8 -12
- data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
- data/dist/IceRuby/DefaultSliceLoader.h +25 -0
- data/dist/IceRuby/Endpoint.cpp +63 -65
- data/dist/IceRuby/Endpoint.h +7 -11
- data/dist/IceRuby/ImplicitContext.cpp +26 -31
- data/dist/IceRuby/ImplicitContext.h +6 -10
- data/dist/IceRuby/Init.cpp +27 -40
- data/dist/IceRuby/Logger.cpp +23 -28
- data/dist/IceRuby/Logger.h +8 -12
- data/dist/IceRuby/Operation.cpp +177 -219
- data/dist/IceRuby/Operation.h +15 -18
- data/dist/IceRuby/Properties.cpp +133 -89
- data/dist/IceRuby/Properties.h +6 -10
- data/dist/IceRuby/Proxy.cpp +179 -649
- data/dist/IceRuby/Proxy.h +11 -12
- data/dist/IceRuby/RubySliceLoader.cpp +39 -0
- data/dist/IceRuby/RubySliceLoader.h +27 -0
- data/dist/IceRuby/Slice.cpp +88 -94
- data/dist/IceRuby/Slice.h +3 -7
- data/dist/IceRuby/Types.cpp +987 -1190
- data/dist/IceRuby/Types.h +390 -461
- data/dist/IceRuby/Util.cpp +214 -473
- data/dist/IceRuby/Util.h +378 -479
- data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
- data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
- data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +4 -10
- data/dist/ice/cpp/include/Ice/Buffer.h +116 -111
- data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
- data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
- data/dist/ice/cpp/include/Ice/Config.h +46 -62
- data/dist/ice/cpp/include/Ice/Connection.h +410 -0
- data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
- data/dist/ice/cpp/include/Ice/ConnectionIF.h +6 -28
- data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
- data/dist/ice/cpp/include/Ice/Current.h +60 -0
- data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
- data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
- data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
- data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
- data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
- data/dist/ice/cpp/include/Ice/Exception.h +46 -151
- data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
- data/dist/ice/cpp/include/Ice/Format.h +11 -27
- data/dist/ice/cpp/include/Ice/Ice.h +53 -48
- data/dist/ice/cpp/include/Ice/IconvStringConverter.h +165 -326
- data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
- data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
- data/dist/ice/cpp/include/Ice/Initialize.h +113 -927
- data/dist/ice/cpp/include/Ice/InputStream.h +748 -1320
- data/dist/ice/cpp/include/Ice/InstanceF.h +4 -10
- data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
- data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
- data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
- data/dist/ice/cpp/include/Ice/Logger.h +62 -0
- data/dist/ice/cpp/include/Ice/LoggerUtil.h +124 -147
- data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
- data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +41 -71
- data/dist/ice/cpp/include/Ice/Object.h +151 -490
- data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
- data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
- data/dist/ice/cpp/include/Ice/ObjectF.h +5 -19
- data/dist/ice/cpp/include/Ice/ObserverHelper.h +115 -132
- data/dist/ice/cpp/include/Ice/OutgoingAsync.h +392 -748
- data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
- data/dist/ice/cpp/include/Ice/OutputStream.h +756 -956
- data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
- data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
- data/dist/ice/cpp/include/{IceUtil → Ice}/PopDisableWarnings.h +8 -6
- data/dist/ice/cpp/include/Ice/Properties.h +307 -0
- data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
- data/dist/ice/cpp/include/Ice/Proxy.h +665 -5094
- data/dist/ice/cpp/include/Ice/ProxyF.h +2 -44
- data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
- data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
- data/dist/ice/cpp/include/Ice/ReferenceF.h +4 -19
- data/dist/ice/cpp/include/Ice/RequestHandlerF.h +8 -18
- data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +276 -0
- data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
- data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
- data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
- data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
- data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
- data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +286 -0
- data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
- data/dist/ice/cpp/include/Ice/Service.h +182 -342
- data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
- data/dist/ice/cpp/include/Ice/SlicedData.h +113 -160
- data/dist/ice/cpp/include/Ice/SlicedDataF.h +17 -27
- data/dist/ice/cpp/include/Ice/StreamHelpers.h +532 -1070
- data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
- data/dist/ice/cpp/include/Ice/StringConverter.h +152 -63
- data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
- data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
- data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
- data/dist/ice/cpp/include/Ice/UUID.h +6 -9
- data/dist/ice/cpp/include/Ice/UserException.h +46 -0
- data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +4 -79
- data/dist/ice/cpp/include/Ice/Value.h +103 -115
- data/dist/ice/cpp/include/Ice/ValueF.h +6 -11
- data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +16 -1877
- data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +16 -1185
- data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +46 -146
- data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
- data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +49 -93
- data/dist/ice/cpp/include/generated/Ice/Identity.h +70 -226
- data/dist/ice/cpp/include/generated/Ice/Locator.h +494 -3850
- data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
- data/dist/ice/cpp/include/generated/Ice/Metrics.h +937 -4603
- data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
- data/dist/ice/cpp/include/generated/Ice/Process.h +197 -929
- data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +249 -1301
- data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
- data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +637 -2620
- data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
- data/dist/ice/cpp/include/generated/Ice/Router.h +429 -1783
- data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +18 -65
- data/dist/ice/cpp/include/generated/Ice/Version.h +73 -318
- data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
- data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
- data/dist/ice/cpp/src/Ice/Acceptor.h +28 -24
- data/dist/ice/cpp/src/Ice/AcceptorF.h +6 -14
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
- data/dist/ice/cpp/src/Ice/ArgVector.cpp +17 -18
- data/dist/ice/cpp/src/Ice/ArgVector.h +19 -25
- data/dist/ice/cpp/src/Ice/Base64.cpp +66 -66
- data/dist/ice/cpp/src/Ice/Base64.h +14 -19
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +70 -121
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +37 -47
- data/dist/ice/cpp/src/Ice/Buffer.cpp +73 -41
- data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +215 -249
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +38 -60
- data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +63 -184
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +30 -51
- data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +4 -14
- data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +578 -792
- data/dist/ice/cpp/src/Ice/ConnectionFactory.h +200 -200
- data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +6 -19
- data/dist/ice/cpp/src/Ice/ConnectionI.cpp +1674 -1782
- data/dist/ice/cpp/src/Ice/ConnectionI.h +333 -293
- data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
- data/dist/ice/cpp/src/Ice/Connector.h +25 -19
- data/dist/ice/cpp/src/Ice/ConnectorF.h +4 -11
- data/dist/ice/cpp/src/{IceUtil → Ice}/ConsoleUtil.cpp +32 -53
- data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
- data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
- data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
- data/dist/ice/cpp/src/Ice/DLLMain.cpp +25 -35
- data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +41 -119
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +27 -41
- data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +4 -11
- data/dist/ice/cpp/src/Ice/Demangle.cpp +26 -0
- data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
- data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +44 -112
- data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
- data/dist/ice/cpp/src/Ice/Endian.h +40 -0
- data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +35 -59
- data/dist/ice/cpp/src/Ice/EndpointFactory.h +82 -103
- data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +4 -11
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +54 -87
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +28 -33
- data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +4 -11
- data/dist/ice/cpp/src/Ice/EndpointI.cpp +53 -23
- data/dist/ice/cpp/src/Ice/EndpointI.h +132 -200
- data/dist/ice/cpp/src/Ice/EndpointIF.h +11 -39
- data/dist/ice/cpp/src/Ice/EventHandler.cpp +3 -26
- data/dist/ice/cpp/src/Ice/EventHandler.h +46 -56
- data/dist/ice/cpp/src/Ice/EventHandlerF.h +4 -14
- data/dist/ice/cpp/src/Ice/Exception.cpp +3 -816
- data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
- data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
- data/dist/ice/cpp/src/Ice/HashUtil.h +46 -32
- data/dist/ice/cpp/src/Ice/HttpParser.cpp +431 -431
- data/dist/ice/cpp/src/Ice/HttpParser.h +95 -100
- data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +207 -324
- data/dist/ice/cpp/src/Ice/IPEndpointI.h +80 -126
- data/dist/ice/cpp/src/Ice/IPEndpointIF.h +6 -17
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
- data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
- data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
- data/dist/ice/cpp/src/Ice/Initialize.cpp +48 -542
- data/dist/ice/cpp/src/Ice/InputStream.cpp +848 -1385
- data/dist/ice/cpp/src/Ice/Instance.cpp +816 -827
- data/dist/ice/cpp/src/Ice/Instance.h +202 -212
- data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +526 -661
- data/dist/ice/cpp/src/Ice/InstrumentationI.h +171 -192
- data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
- data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
- data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +291 -329
- data/dist/ice/cpp/src/Ice/LocatorInfo.h +144 -157
- data/dist/ice/cpp/src/Ice/LocatorInfoF.h +8 -17
- data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +561 -743
- data/dist/ice/cpp/src/Ice/LoggerAdminI.h +18 -28
- data/dist/ice/cpp/src/Ice/LoggerI.cpp +66 -91
- data/dist/ice/cpp/src/Ice/LoggerI.h +36 -41
- data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
- data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
- data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +14 -38
- data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
- data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +194 -280
- data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
- data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
- data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
- data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
- data/dist/ice/cpp/src/Ice/Network.cpp +595 -917
- data/dist/ice/cpp/src/Ice/Network.h +189 -213
- data/dist/ice/cpp/src/Ice/NetworkF.h +2 -10
- data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +99 -104
- data/dist/ice/cpp/src/Ice/NetworkProxy.h +49 -54
- data/dist/ice/cpp/src/Ice/NetworkProxyF.h +4 -11
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +16 -18
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +22 -27
- data/dist/ice/cpp/src/Ice/Object.cpp +152 -338
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +170 -113
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +41 -41
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +4 -15
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +580 -727
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +149 -145
- data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +36 -17
- data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
- data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +147 -187
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +56 -64
- data/dist/ice/cpp/src/{IceUtil → Ice}/Options.cpp +187 -258
- data/dist/ice/cpp/src/Ice/Options.h +119 -0
- data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +516 -732
- data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
- data/dist/ice/cpp/src/Ice/OutputStream.cpp +610 -543
- data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
- data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
- data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +118 -277
- data/dist/ice/cpp/src/Ice/PluginManagerI.h +41 -48
- data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
- data/dist/ice/cpp/src/Ice/PropertyNames.cpp +519 -1341
- data/dist/ice/cpp/src/Ice/PropertyNames.h +49 -64
- data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
- data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
- data/dist/ice/cpp/src/Ice/Protocol.cpp +129 -94
- data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +117 -62
- data/dist/ice/cpp/src/Ice/ProtocolInstance.h +63 -82
- data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +4 -11
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +10 -32
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +25 -54
- data/dist/ice/cpp/src/Ice/Proxy.cpp +294 -1357
- data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
- data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
- data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
- data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
- data/dist/ice/cpp/src/Ice/Random.h +23 -0
- data/dist/ice/cpp/src/Ice/Reference.cpp +635 -1097
- data/dist/ice/cpp/src/Ice/Reference.h +314 -298
- data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +320 -378
- data/dist/ice/cpp/src/Ice/ReferenceFactory.h +48 -66
- data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +4 -9
- data/dist/ice/cpp/src/Ice/RequestHandler.cpp +15 -24
- data/dist/ice/cpp/src/Ice/RequestHandler.h +43 -68
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
- data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
- data/dist/ice/cpp/src/Ice/RetryQueue.cpp +51 -57
- data/dist/ice/cpp/src/Ice/RetryQueue.h +39 -46
- data/dist/ice/cpp/src/Ice/RetryQueueF.h +4 -9
- data/dist/ice/cpp/src/Ice/RouterInfo.cpp +97 -201
- data/dist/ice/cpp/src/Ice/RouterInfo.h +61 -118
- data/dist/ice/cpp/src/Ice/RouterInfoF.h +6 -14
- data/dist/ice/cpp/src/Ice/SHA1.cpp +86 -60
- data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +521 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +646 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
- data/dist/ice/cpp/src/{IceSSL → Ice/SSL}/RFC2253.cpp +85 -88
- data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +69 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +673 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +118 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1449 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1088 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +825 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1048 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +233 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
- data/dist/ice/cpp/src/Ice/Selector.cpp +341 -606
- data/dist/ice/cpp/src/Ice/Selector.h +167 -224
- data/dist/ice/cpp/src/Ice/ServantManager.cpp +195 -128
- data/dist/ice/cpp/src/Ice/ServantManager.h +52 -55
- data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Service.cpp +548 -641
- data/dist/ice/cpp/src/Ice/SharedContext.h +13 -26
- data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
- data/dist/ice/cpp/src/Ice/SlicedData.cpp +17 -96
- data/dist/ice/cpp/src/Ice/StreamSocket.cpp +104 -151
- data/dist/ice/cpp/src/Ice/StreamSocket.h +48 -60
- data/dist/ice/cpp/src/Ice/StringConverter.cpp +586 -0
- data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
- data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +41 -47
- data/dist/ice/cpp/src/Ice/SysLoggerI.h +24 -27
- data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +16 -17
- data/dist/ice/cpp/src/Ice/SystemdJournalI.h +19 -25
- data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
- data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +67 -88
- data/dist/ice/cpp/src/Ice/TcpAcceptor.h +34 -40
- data/dist/ice/cpp/src/Ice/TcpConnector.cpp +42 -41
- data/dist/ice/cpp/src/Ice/TcpConnector.h +26 -35
- data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +172 -146
- data/dist/ice/cpp/src/Ice/TcpEndpointI.h +76 -80
- data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +38 -26
- data/dist/ice/cpp/src/Ice/TcpTransceiver.h +40 -45
- data/dist/ice/cpp/src/Ice/ThreadPool.cpp +333 -515
- data/dist/ice/cpp/src/Ice/ThreadPool.h +202 -290
- data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
- data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
- data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
- data/dist/ice/cpp/src/Ice/Timer.cpp +73 -167
- data/dist/ice/cpp/src/Ice/Timer.h +212 -0
- data/dist/ice/cpp/src/Ice/TraceLevels.cpp +11 -29
- data/dist/ice/cpp/src/Ice/TraceLevels.h +22 -28
- data/dist/ice/cpp/src/Ice/TraceLevelsF.h +4 -11
- data/dist/ice/cpp/src/Ice/TraceUtil.cpp +136 -215
- data/dist/ice/cpp/src/Ice/TraceUtil.h +27 -16
- data/dist/ice/cpp/src/Ice/Transceiver.cpp +3 -7
- data/dist/ice/cpp/src/Ice/Transceiver.h +35 -32
- data/dist/ice/cpp/src/Ice/TransceiverF.h +10 -20
- data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
- data/dist/ice/cpp/src/Ice/UdpConnector.cpp +39 -39
- data/dist/ice/cpp/src/Ice/UdpConnector.h +27 -36
- data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +178 -213
- data/dist/ice/cpp/src/Ice/UdpEndpointI.h +82 -85
- data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +201 -221
- data/dist/ice/cpp/src/Ice/UdpTransceiver.h +68 -74
- data/dist/ice/cpp/{include/IceUtil → src/Ice}/UndefSysMacros.h +12 -12
- data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
- data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
- data/dist/ice/cpp/src/Ice/Value.cpp +107 -38
- data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +10 -15
- data/dist/ice/cpp/src/Ice/WSAcceptor.h +31 -37
- data/dist/ice/cpp/src/Ice/WSConnector.cpp +25 -40
- data/dist/ice/cpp/src/Ice/WSConnector.h +26 -33
- data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +164 -217
- data/dist/ice/cpp/src/Ice/WSEndpoint.h +72 -83
- data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +469 -458
- data/dist/ice/cpp/src/Ice/WSTransceiver.h +117 -123
- data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +20 -29
- data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +20 -31
- data/dist/ice/cpp/src/Ice/generated/Identity.cpp +24 -34
- data/dist/ice/cpp/src/Ice/generated/Locator.cpp +454 -1744
- data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
- data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +824 -1971
- data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
- data/dist/ice/cpp/src/Ice/generated/Process.cpp +190 -331
- data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +289 -449
- data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +547 -867
- data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
- data/dist/ice/cpp/src/Ice/generated/Router.cpp +406 -723
- data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +19 -29
- data/dist/ice/cpp/src/Ice/generated/Version.cpp +28 -31
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +76 -139
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +55 -96
- data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +190 -303
- data/dist/ice/cpp/src/IceDiscovery/LookupI.h +126 -185
- data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +56 -77
- data/dist/ice/cpp/src/IceDiscovery/PluginI.h +20 -25
- data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +14 -37
- data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +411 -649
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
- data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
- data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
- data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
- data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
- data/dist/ice/cpp/src/Slice/FileTracker.cpp +25 -75
- data/dist/ice/cpp/src/Slice/FileTracker.h +35 -56
- data/dist/ice/cpp/src/Slice/Grammar.cpp +2711 -3382
- data/dist/ice/cpp/src/Slice/Grammar.h +95 -75
- data/dist/ice/cpp/src/Slice/GrammarUtil.h +117 -217
- data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +486 -0
- data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
- data/dist/ice/cpp/src/Slice/Parser.cpp +3068 -5223
- data/dist/ice/cpp/src/Slice/Parser.h +1086 -1065
- data/dist/ice/cpp/src/Slice/Preprocessor.cpp +97 -599
- data/dist/ice/cpp/src/Slice/Preprocessor.h +26 -42
- data/dist/ice/cpp/src/Slice/Scanner.cpp +1562 -924
- data/dist/ice/cpp/src/Slice/SliceUtil.cpp +517 -113
- data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +254 -269
- data/dist/ice/cpp/src/Slice/Util.h +126 -35
- data/dist/ice/cpp/src/slice2rb/Main.cpp +13 -15
- data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
- data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
- data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
- data/dist/ice/slice/Glacier2/Metrics.ice +34 -75
- data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +42 -98
- data/dist/ice/slice/Glacier2/Router.ice +80 -173
- data/dist/ice/slice/Glacier2/SSLInfo.ice +23 -40
- data/dist/ice/slice/Glacier2/Session.ice +120 -261
- data/dist/ice/slice/Ice/BuiltinSequences.ice +33 -38
- data/dist/ice/slice/Ice/Context.ice +24 -0
- data/dist/ice/slice/Ice/EndpointTypes.ice +35 -33
- data/dist/ice/slice/Ice/Identity.ice +24 -63
- data/dist/ice/slice/Ice/Locator.ice +61 -226
- data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
- data/dist/ice/slice/Ice/Metrics.ice +189 -424
- data/dist/ice/slice/Ice/OperationMode.ice +38 -0
- data/dist/ice/slice/Ice/Process.ice +16 -52
- data/dist/ice/slice/Ice/PropertiesAdmin.ice +25 -75
- data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
- data/dist/ice/slice/Ice/RemoteLogger.ice +113 -213
- data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
- data/dist/ice/slice/Ice/Router.ice +42 -91
- data/dist/ice/slice/Ice/SliceChecksumDict.ice +7 -25
- data/dist/ice/slice/Ice/Version.ice +31 -39
- data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
- data/dist/ice/slice/IceGrid/Admin.ice +942 -1918
- data/dist/ice/slice/IceGrid/Descriptor.ice +476 -1051
- data/dist/ice/slice/IceGrid/Exception.ice +86 -384
- data/dist/ice/slice/IceGrid/FileParser.ice +23 -59
- data/dist/ice/slice/IceGrid/Registry.ice +117 -256
- data/dist/ice/slice/IceGrid/Session.ice +46 -110
- data/dist/ice/slice/IceGrid/UserAccountMapper.ice +22 -57
- data/dist/ice/slice/IceStorm/IceStorm.ice +173 -401
- data/dist/ice/slice/IceStorm/Metrics.ice +28 -70
- data/dist/lib/Glacier2/Metrics.rb +16 -31
- data/dist/lib/Glacier2/PermissionsVerifier.rb +18 -50
- data/dist/lib/Glacier2/Router.rb +20 -42
- data/dist/lib/Glacier2/SSLInfo.rb +14 -22
- data/dist/lib/Glacier2/Session.rb +53 -113
- data/dist/lib/Glacier2.rb +6 -6
- data/dist/lib/Ice/BuiltinSequences.rb +14 -26
- data/dist/lib/Ice/CompressBatch.rb +50 -0
- data/dist/lib/Ice/Context.rb +12 -0
- data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
- data/dist/lib/Ice/EndpointTypes.rb +14 -55
- data/dist/lib/Ice/Exception.rb +20 -0
- data/dist/lib/Ice/Identity.rb +10 -26
- data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
- data/dist/lib/Ice/InitializationData.rb +12 -0
- data/dist/lib/Ice/LocalExceptions.rb +168 -0
- data/dist/lib/Ice/Locator.rb +21 -134
- data/dist/lib/Ice/LocatorRegistry.rb +73 -0
- data/dist/lib/Ice/Metrics.rb +85 -132
- data/dist/lib/Ice/OperationMode.rb +58 -0
- data/dist/lib/Ice/Process.rb +12 -31
- data/dist/lib/Ice/PropertiesAdmin.rb +12 -36
- data/dist/lib/Ice/PropertyDict.rb +12 -0
- data/dist/lib/Ice/Proxy.rb +85 -0
- data/dist/lib/Ice/ProxyFunctions.rb +69 -0
- data/dist/lib/Ice/RemoteLogger.rb +29 -60
- data/dist/lib/Ice/ReplyStatus.rb +65 -0
- data/dist/lib/Ice/Router.rb +19 -47
- data/dist/lib/Ice/SliceChecksumDict.rb +5 -17
- data/dist/lib/Ice/SliceUtil.rb +41 -0
- data/dist/lib/Ice/Struct.rb +11 -0
- data/dist/lib/Ice/ToStringMode.rb +50 -0
- data/dist/lib/Ice/Value.rb +93 -0
- data/dist/lib/Ice/Version.rb +12 -24
- data/dist/lib/Ice.rb +29 -665
- data/dist/lib/IceBox/ServiceManager.rb +104 -0
- data/dist/lib/IceBox.rb +2 -4
- data/dist/lib/IceGrid/Admin.rb +303 -291
- data/dist/lib/IceGrid/Descriptor.rb +147 -192
- data/dist/lib/IceGrid/Exception.rb +26 -257
- data/dist/lib/IceGrid/FileParser.rb +12 -36
- data/dist/lib/IceGrid/Registry.rb +35 -76
- data/dist/lib/IceGrid/Session.rb +19 -34
- data/dist/lib/IceGrid/UserAccountMapper.rb +11 -34
- data/dist/lib/IceGrid.rb +3 -3
- data/dist/lib/IceStorm/IceStorm.rb +51 -132
- data/dist/lib/IceStorm/Metrics.rb +19 -37
- data/dist/lib/IceStorm.rb +3 -5
- data/extconf.rb +6 -8
- data/ice.gemspec +3 -3
- data/scripts/slice2rb +1 -3
- metadata +206 -386
- data/dist/IceRuby/ValueFactoryManager.cpp +0 -445
- data/dist/IceRuby/ValueFactoryManager.h +0 -95
- data/dist/ice/cpp/include/Ice/Application.h +0 -326
- data/dist/ice/cpp/include/Ice/AsyncResult.h +0 -155
- data/dist/ice/cpp/include/Ice/AsyncResultF.h +0 -23
- data/dist/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
- data/dist/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
- data/dist/ice/cpp/include/Ice/Comparable.h +0 -205
- data/dist/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
- data/dist/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
- data/dist/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
- data/dist/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
- data/dist/ice/cpp/include/Ice/Dispatcher.h +0 -67
- data/dist/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
- data/dist/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
- data/dist/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
- data/dist/ice/cpp/include/Ice/FactoryTable.h +0 -73
- data/dist/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
- data/dist/ice/cpp/include/Ice/Functional.h +0 -140
- data/dist/ice/cpp/include/Ice/GCObject.h +0 -76
- data/dist/ice/cpp/include/Ice/Handle.h +0 -182
- data/dist/ice/cpp/include/Ice/Incoming.h +0 -225
- data/dist/ice/cpp/include/Ice/IncomingAsync.h +0 -186
- data/dist/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
- data/dist/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
- data/dist/ice/cpp/include/Ice/LocalObject.h +0 -35
- data/dist/ice/cpp/include/Ice/LocalObjectF.h +0 -21
- data/dist/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
- data/dist/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
- data/dist/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
- data/dist/ice/cpp/include/Ice/Optional.h +0 -1114
- data/dist/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
- data/dist/ice/cpp/include/Ice/Protocol.h +0 -274
- data/dist/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
- data/dist/ice/cpp/include/Ice/ProxyHandle.h +0 -318
- data/dist/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
- data/dist/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
- data/dist/ice/cpp/include/Ice/SHA1.h +0 -40
- data/dist/ice/cpp/include/Ice/ServantManagerF.h +0 -21
- data/dist/ice/cpp/include/Ice/SliceChecksums.h +0 -33
- data/dist/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
- data/dist/ice/cpp/include/Ice/UniquePtr.h +0 -95
- data/dist/ice/cpp/include/Ice/UniqueRef.h +0 -97
- data/dist/ice/cpp/include/IceSSL/Config.h +0 -21
- data/dist/ice/cpp/include/IceSSL/IceSSL.h +0 -24
- data/dist/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
- data/dist/ice/cpp/include/IceSSL/Plugin.h +0 -712
- data/dist/ice/cpp/include/IceSSL/SChannel.h +0 -72
- data/dist/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
- data/dist/ice/cpp/include/IceUtil/Atomic.h +0 -179
- data/dist/ice/cpp/include/IceUtil/Cond.h +0 -317
- data/dist/ice/cpp/include/IceUtil/Config.h +0 -392
- data/dist/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
- data/dist/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
- data/dist/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -96
- data/dist/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
- data/dist/ice/cpp/include/IceUtil/Exception.h +0 -394
- data/dist/ice/cpp/include/IceUtil/FileUtil.h +0 -140
- data/dist/ice/cpp/include/IceUtil/Functional.h +0 -389
- data/dist/ice/cpp/include/IceUtil/Handle.h +0 -261
- data/dist/ice/cpp/include/IceUtil/IceUtil.h +0 -40
- data/dist/ice/cpp/include/IceUtil/InputUtil.h +0 -42
- data/dist/ice/cpp/include/IceUtil/Iterator.h +0 -31
- data/dist/ice/cpp/include/IceUtil/Lock.h +0 -128
- data/dist/ice/cpp/include/IceUtil/Monitor.h +0 -243
- data/dist/ice/cpp/include/IceUtil/Mutex.h +0 -349
- data/dist/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
- data/dist/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
- data/dist/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
- data/dist/ice/cpp/include/IceUtil/Optional.h +0 -433
- data/dist/ice/cpp/include/IceUtil/Options.h +0 -135
- data/dist/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
- data/dist/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
- data/dist/ice/cpp/include/IceUtil/Random.h +0 -55
- data/dist/ice/cpp/include/IceUtil/RecMutex.h +0 -107
- data/dist/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
- data/dist/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
- data/dist/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
- data/dist/ice/cpp/include/IceUtil/Shared.h +0 -127
- data/dist/ice/cpp/include/IceUtil/StopWatch.h +0 -49
- data/dist/ice/cpp/include/IceUtil/StringConverter.h +0 -195
- data/dist/ice/cpp/include/IceUtil/StringUtil.h +0 -97
- data/dist/ice/cpp/include/IceUtil/Thread.h +0 -160
- data/dist/ice/cpp/include/IceUtil/ThreadException.h +0 -94
- data/dist/ice/cpp/include/IceUtil/Time.h +0 -205
- data/dist/ice/cpp/include/IceUtil/Timer.h +0 -153
- data/dist/ice/cpp/include/IceUtil/UUID.h +0 -21
- data/dist/ice/cpp/include/generated/Glacier2/Metrics.h +0 -475
- data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifier.h +0 -1430
- data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifierF.h +0 -147
- data/dist/ice/cpp/include/generated/Glacier2/Router.h +0 -3260
- data/dist/ice/cpp/include/generated/Glacier2/RouterF.h +0 -125
- data/dist/ice/cpp/include/generated/Glacier2/SSLInfo.h +0 -223
- data/dist/ice/cpp/include/generated/Glacier2/Session.h +0 -5894
- data/dist/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
- data/dist/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/Connection.h +0 -1703
- data/dist/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
- data/dist/ice/cpp/include/generated/Ice/Current.h +0 -322
- data/dist/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
- data/dist/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
- data/dist/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
- data/dist/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
- data/dist/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
- data/dist/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
- data/dist/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
- data/dist/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
- data/dist/ice/cpp/include/generated/Ice/Logger.h +0 -237
- data/dist/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
- data/dist/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
- data/dist/ice/cpp/include/generated/Ice/Plugin.h +0 -318
- data/dist/ice/cpp/include/generated/Ice/PluginF.h +0 -110
- data/dist/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
- data/dist/ice/cpp/include/generated/Ice/Properties.h +0 -452
- data/dist/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
- data/dist/ice/cpp/include/generated/Ice/RouterF.h +0 -125
- data/dist/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
- data/dist/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
- data/dist/ice/cpp/include/generated/IceBox/IceBox.h +0 -3269
- data/dist/ice/cpp/include/generated/IceGrid/Admin.h +0 -33773
- data/dist/ice/cpp/include/generated/IceGrid/Descriptor.h +0 -5254
- data/dist/ice/cpp/include/generated/IceGrid/Exception.h +0 -2834
- data/dist/ice/cpp/include/generated/IceGrid/FileParser.h +0 -824
- data/dist/ice/cpp/include/generated/IceGrid/PluginFacade.h +0 -635
- data/dist/ice/cpp/include/generated/IceGrid/Registry.h +0 -5089
- data/dist/ice/cpp/include/generated/IceGrid/Session.h +0 -2240
- data/dist/ice/cpp/include/generated/IceGrid/UserAccountMapper.h +0 -800
- data/dist/ice/cpp/include/generated/IcePatch2/FileInfo.h +0 -325
- data/dist/ice/cpp/include/generated/IcePatch2/FileServer.h +0 -2891
- data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
- data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
- data/dist/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
- data/dist/ice/cpp/include/generated/IceStorm/IceStorm.h +0 -6627
- data/dist/ice/cpp/include/generated/IceStorm/Metrics.h +0 -665
- data/dist/ice/cpp/src/Ice/ACM.cpp +0 -380
- data/dist/ice/cpp/src/Ice/ACM.h +0 -119
- data/dist/ice/cpp/src/Ice/ACMF.h +0 -30
- data/dist/ice/cpp/src/Ice/Acceptor.cpp +0 -16
- data/dist/ice/cpp/src/Ice/Application.cpp +0 -661
- data/dist/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
- data/dist/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
- data/dist/ice/cpp/src/Ice/CommunicatorI.h +0 -167
- data/dist/ice/cpp/src/Ice/Cond.cpp +0 -381
- data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
- data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
- data/dist/ice/cpp/src/Ice/Connector.cpp +0 -16
- data/dist/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
- data/dist/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
- data/dist/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
- data/dist/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
- data/dist/ice/cpp/src/Ice/GCObject.cpp +0 -442
- data/dist/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
- data/dist/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
- data/dist/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
- data/dist/ice/cpp/src/Ice/Incoming.cpp +0 -795
- data/dist/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
- data/dist/ice/cpp/src/Ice/IncomingRequest.h +0 -33
- data/dist/ice/cpp/src/Ice/LocalObject.cpp +0 -23
- data/dist/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
- data/dist/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
- data/dist/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
- data/dist/ice/cpp/src/Ice/PropertiesI.cpp +0 -739
- data/dist/ice/cpp/src/Ice/PropertiesI.h +0 -70
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
- data/dist/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
- data/dist/ice/cpp/src/Ice/ProxyFactory.h +0 -57
- data/dist/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
- data/dist/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
- data/dist/ice/cpp/src/Ice/ReplyStatus.h +0 -24
- data/dist/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
- data/dist/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
- data/dist/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
- data/dist/ice/cpp/src/Ice/ResponseHandler.h +0 -43
- data/dist/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
- data/dist/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
- data/dist/ice/cpp/src/Ice/StringUtil.h +0 -30
- data/dist/ice/cpp/src/Ice/Thread.cpp +0 -569
- data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
- data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
- data/dist/ice/cpp/src/Ice/VirtualShared.h +0 -38
- data/dist/ice/cpp/src/Ice/generated/Communicator.cpp +0 -79
- data/dist/ice/cpp/src/Ice/generated/CommunicatorF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/Connection.cpp +0 -155
- data/dist/ice/cpp/src/Ice/generated/ConnectionF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/Current.cpp +0 -62
- data/dist/ice/cpp/src/Ice/generated/Endpoint.cpp +0 -147
- data/dist/ice/cpp/src/Ice/generated/EndpointF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/FacetMap.cpp +0 -49
- data/dist/ice/cpp/src/Ice/generated/ImplicitContext.cpp +0 -75
- data/dist/ice/cpp/src/Ice/generated/ImplicitContextF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/Instrumentation.cpp +0 -188
- data/dist/ice/cpp/src/Ice/generated/InstrumentationF.cpp +0 -66
- data/dist/ice/cpp/src/Ice/generated/LocalException.cpp +0 -3262
- data/dist/ice/cpp/src/Ice/generated/LocatorF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/Logger.cpp +0 -73
- data/dist/ice/cpp/src/Ice/generated/LoggerF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ObjectAdapter.cpp +0 -79
- data/dist/ice/cpp/src/Ice/generated/ObjectAdapterF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ObjectFactory.cpp +0 -75
- data/dist/ice/cpp/src/Ice/generated/Plugin.cpp +0 -87
- data/dist/ice/cpp/src/Ice/generated/PluginF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ProcessF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/Properties.cpp +0 -78
- data/dist/ice/cpp/src/Ice/generated/PropertiesF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/RouterF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/ServantLocator.cpp +0 -75
- data/dist/ice/cpp/src/Ice/generated/ServantLocatorF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ValueFactory.cpp +0 -83
- data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.cpp +0 -154
- data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.h +0 -49
- data/dist/ice/cpp/src/Ice/ios/StreamConnector.cpp +0 -146
- data/dist/ice/cpp/src/Ice/ios/StreamConnector.h +0 -52
- data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.cpp +0 -477
- data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.h +0 -156
- data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.cpp +0 -570
- data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.h +0 -93
- data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery/IceDiscovery.h +0 -1889
- data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery.cpp +0 -915
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery.cpp +0 -730
- data/dist/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
- data/dist/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
- data/dist/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
- data/dist/ice/cpp/src/IceSSL/CertificateI.h +0 -64
- data/dist/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
- data/dist/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
- data/dist/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
- data/dist/ice/cpp/src/IceSSL/EndpointI.h +0 -100
- data/dist/ice/cpp/src/IceSSL/Instance.cpp +0 -28
- data/dist/ice/cpp/src/IceSSL/Instance.h +0 -37
- data/dist/ice/cpp/src/IceSSL/InstanceF.h +0 -33
- data/dist/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
- data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
- data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
- data/dist/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
- data/dist/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
- data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
- data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
- data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
- data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
- data/dist/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
- data/dist/ice/cpp/src/IceSSL/PluginI.h +0 -67
- data/dist/ice/cpp/src/IceSSL/RFC2253.h +0 -62
- data/dist/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
- data/dist/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
- data/dist/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
- data/dist/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
- data/dist/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
- data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
- data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
- data/dist/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
- data/dist/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
- data/dist/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
- data/dist/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
- data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
- data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
- data/dist/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
- data/dist/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
- data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
- data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
- data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
- data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
- data/dist/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
- data/dist/ice/cpp/src/IceSSL/TrustManager.h +0 -46
- data/dist/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
- data/dist/ice/cpp/src/IceSSL/Util.cpp +0 -192
- data/dist/ice/cpp/src/IceSSL/Util.h +0 -99
- data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfo.cpp +0 -75
- data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfoF.cpp +0 -61
- data/dist/ice/cpp/src/IceSSL/generated/EndpointInfo.cpp +0 -75
- data/dist/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
- data/dist/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
- data/dist/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
- data/dist/ice/cpp/src/IceUtil/FileUtil.cpp +0 -471
- data/dist/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
- data/dist/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
- data/dist/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
- data/dist/ice/cpp/src/IceUtil/Random.cpp +0 -180
- data/dist/ice/cpp/src/IceUtil/RecMutex.cpp +0 -238
- data/dist/ice/cpp/src/IceUtil/Shared.cpp +0 -71
- data/dist/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
- data/dist/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1135
- data/dist/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
- data/dist/ice/cpp/src/IceUtil/Time.cpp +0 -307
- data/dist/ice/cpp/src/IceUtil/UUID.cpp +0 -165
- data/dist/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
- data/dist/ice/cpp/src/IceUtil/Unicode.h +0 -43
- data/dist/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
- data/dist/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
- data/dist/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
- data/dist/ice/cpp/src/Slice/Checksum.cpp +0 -447
- data/dist/ice/cpp/src/Slice/Checksum.h +0 -21
- data/dist/ice/cpp/src/Slice/JavaUtil.cpp +0 -5183
- data/dist/ice/cpp/src/Slice/JavaUtil.h +0 -407
- data/dist/ice/cpp/src/Slice/MD5.cpp +0 -52
- data/dist/ice/cpp/src/Slice/MD5.h +0 -39
- data/dist/ice/cpp/src/Slice/MD5I.cpp +0 -393
- data/dist/ice/cpp/src/Slice/MD5I.h +0 -91
- data/dist/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
- data/dist/ice/cpp/src/Slice/PHPUtil.h +0 -36
- data/dist/ice/cpp/src/Slice/Python.cpp +0 -830
- data/dist/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
- data/dist/ice/cpp/src/Slice/PythonUtil.h +0 -70
- data/dist/ice/cpp/src/Slice/Ruby.cpp +0 -350
- data/dist/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
- data/dist/ice/cpp/src/Slice/RubyUtil.h +0 -49
- data/dist/ice/slice/Glacier2/PermissionsVerifierF.ice +0 -30
- data/dist/ice/slice/Glacier2/RouterF.ice +0 -29
- data/dist/ice/slice/Ice/Communicator.ice +0 -676
- data/dist/ice/slice/Ice/CommunicatorF.ice +0 -31
- data/dist/ice/slice/Ice/Connection.ice +0 -516
- data/dist/ice/slice/Ice/ConnectionF.ice +0 -33
- data/dist/ice/slice/Ice/Current.ice +0 -170
- data/dist/ice/slice/Ice/Endpoint.ice +0 -291
- data/dist/ice/slice/Ice/EndpointF.ice +0 -43
- data/dist/ice/slice/Ice/FacetMap.ice +0 -36
- data/dist/ice/slice/Ice/ImplicitContext.ice +0 -119
- data/dist/ice/slice/Ice/ImplicitContextF.ice +0 -30
- data/dist/ice/slice/Ice/Instrumentation.ice +0 -509
- data/dist/ice/slice/Ice/InstrumentationF.ice +0 -38
- data/dist/ice/slice/Ice/LocalException.ice +0 -1040
- data/dist/ice/slice/Ice/LocatorF.ice +0 -32
- data/dist/ice/slice/Ice/Logger.ice +0 -99
- data/dist/ice/slice/Ice/LoggerF.ice +0 -31
- data/dist/ice/slice/Ice/ObjectAdapter.ice +0 -710
- data/dist/ice/slice/Ice/ObjectAdapterF.ice +0 -31
- data/dist/ice/slice/Ice/ObjectFactory.ice +0 -71
- data/dist/ice/slice/Ice/Plugin.ice +0 -131
- data/dist/ice/slice/Ice/PluginF.ice +0 -36
- data/dist/ice/slice/Ice/ProcessF.ice +0 -31
- data/dist/ice/slice/Ice/Properties.ice +0 -244
- data/dist/ice/slice/Ice/PropertiesF.ice +0 -32
- data/dist/ice/slice/Ice/RouterF.ice +0 -31
- data/dist/ice/slice/Ice/ServantLocator.ice +0 -136
- data/dist/ice/slice/Ice/ServantLocatorF.ice +0 -31
- data/dist/ice/slice/Ice/ValueFactory.ice +0 -133
- data/dist/ice/slice/IceBox/IceBox.ice +0 -216
- data/dist/ice/slice/IceGrid/PluginFacade.ice +0 -329
- data/dist/ice/slice/IcePatch2/FileInfo.ice +0 -85
- data/dist/ice/slice/IcePatch2/FileServer.ice +0 -191
- data/dist/lib/Glacier2/PermissionsVerifierF.rb +0 -30
- data/dist/lib/Glacier2/RouterF.rb +0 -25
- data/dist/lib/Ice/Communicator.rb +0 -87
- data/dist/lib/Ice/CommunicatorF.rb +0 -24
- data/dist/lib/Ice/Connection.rb +0 -413
- data/dist/lib/Ice/ConnectionF.rb +0 -32
- data/dist/lib/Ice/Current.rb +0 -141
- data/dist/lib/Ice/Endpoint.rb +0 -187
- data/dist/lib/Ice/EndpointF.rb +0 -48
- data/dist/lib/Ice/FacetMap.rb +0 -24
- data/dist/lib/Ice/ImplicitContext.rb +0 -26
- data/dist/lib/Ice/ImplicitContextF.rb +0 -24
- data/dist/lib/Ice/Instrumentation.rb +0 -169
- data/dist/lib/Ice/InstrumentationF.rb +0 -31
- data/dist/lib/Ice/LocalException.rb +0 -1031
- data/dist/lib/Ice/LocatorF.rb +0 -30
- data/dist/lib/Ice/Logger.rb +0 -24
- data/dist/lib/Ice/LoggerF.rb +0 -24
- data/dist/lib/Ice/ObjectAdapter.rb +0 -29
- data/dist/lib/Ice/ObjectAdapterF.rb +0 -24
- data/dist/lib/Ice/ObjectFactory.rb +0 -24
- data/dist/lib/Ice/Plugin.rb +0 -30
- data/dist/lib/Ice/PluginF.rb +0 -28
- data/dist/lib/Ice/ProcessF.rb +0 -25
- data/dist/lib/Ice/Properties.rb +0 -25
- data/dist/lib/Ice/PropertiesF.rb +0 -29
- data/dist/lib/Ice/RouterF.rb +0 -25
- data/dist/lib/Ice/ServantLocator.rb +0 -26
- data/dist/lib/Ice/ServantLocatorF.rb +0 -24
- data/dist/lib/Ice/ValueFactory.rb +0 -28
- data/dist/lib/IceBox/IceBox.rb +0 -164
- data/dist/lib/IceGrid/PluginFacade.rb +0 -35
- data/dist/lib/IcePatch2/FileInfo.rb +0 -115
- data/dist/lib/IcePatch2/FileServer.rb +0 -123
- data/dist/lib/IcePatch2.rb +0 -5
|
@@ -1,1091 +1,891 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
|
-
//
|
|
1
|
+
// Copyright (c) ZeroC, Inc.
|
|
4
2
|
|
|
5
3
|
#ifndef ICE_OUTPUT_STREAM_H
|
|
6
4
|
#define ICE_OUTPUT_STREAM_H
|
|
7
5
|
|
|
8
|
-
#include
|
|
9
|
-
#include
|
|
10
|
-
#include
|
|
11
|
-
#include
|
|
12
|
-
#include
|
|
13
|
-
#include
|
|
14
|
-
#include
|
|
15
|
-
#include
|
|
16
|
-
#include
|
|
6
|
+
#include "Buffer.h"
|
|
7
|
+
#include "CommunicatorF.h"
|
|
8
|
+
#include "Ice/Format.h"
|
|
9
|
+
#include "Ice/StringConverter.h"
|
|
10
|
+
#include "Ice/Version.h"
|
|
11
|
+
#include "InstanceF.h"
|
|
12
|
+
#include "SlicedDataF.h"
|
|
13
|
+
#include "StreamableTraits.h"
|
|
14
|
+
#include "ValueF.h"
|
|
15
|
+
|
|
16
|
+
#include <cassert>
|
|
17
|
+
#include <cstdint>
|
|
18
|
+
#include <cstring>
|
|
19
|
+
#include <map>
|
|
20
|
+
#include <string>
|
|
21
|
+
#include <string_view>
|
|
22
|
+
#include <vector>
|
|
17
23
|
|
|
18
24
|
namespace Ice
|
|
19
25
|
{
|
|
26
|
+
class ObjectPrx;
|
|
20
27
|
|
|
21
|
-
|
|
28
|
+
/// Identifies Slice encoding version 1.0.
|
|
29
|
+
constexpr EncodingVersion Encoding_1_0{1, 0};
|
|
22
30
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* \headerfile Ice/Ice.h
|
|
26
|
-
*/
|
|
27
|
-
class ICE_API OutputStream : public IceInternal::Buffer
|
|
28
|
-
{
|
|
29
|
-
public:
|
|
30
|
-
|
|
31
|
-
typedef size_t size_type;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Constructs an OutputStream using the latest encoding version, the default format for
|
|
35
|
-
* class encoding, and the process string converters. You can supply a communicator later
|
|
36
|
-
* by calling initialize().
|
|
37
|
-
*/
|
|
38
|
-
OutputStream();
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Constructs a stream using the communicator's default encoding version.
|
|
42
|
-
* @param communicator The communicator to use for marshaling tasks.
|
|
43
|
-
*/
|
|
44
|
-
OutputStream(const CommunicatorPtr& communicator);
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Constructs a stream using the given communicator and encoding version.
|
|
48
|
-
* @param communicator The communicator to use for marshaling tasks.
|
|
49
|
-
* @param version The encoding version used to encode the data.
|
|
50
|
-
*/
|
|
51
|
-
OutputStream(const CommunicatorPtr& communicator, const EncodingVersion& version);
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Constructs a stream using the given communicator and encoding version.
|
|
55
|
-
* @param communicator The communicator to use for marshaling tasks.
|
|
56
|
-
* @param version The encoding version used to encode the data.
|
|
57
|
-
* @param bytes Application-supplied memory that the stream uses as its initial marshaling buffer. The
|
|
58
|
-
* stream will reallocate if the size of the marshaled data exceeds the application's buffer.
|
|
59
|
-
*/
|
|
60
|
-
OutputStream(const CommunicatorPtr& communicator, const EncodingVersion& version,
|
|
61
|
-
const std::pair<const Byte*, const Byte*>& bytes);
|
|
62
|
-
|
|
63
|
-
~OutputStream()
|
|
64
|
-
{
|
|
65
|
-
// Inlined for performance reasons.
|
|
31
|
+
/// Identifies Slice encoding version 1.1.
|
|
32
|
+
constexpr EncodingVersion Encoding_1_1{1, 1};
|
|
66
33
|
|
|
67
|
-
|
|
34
|
+
/// Represents a byte buffer used for marshaling data using the Slice encoding.
|
|
35
|
+
/// @headerfile Ice/Ice.h
|
|
36
|
+
class ICE_API OutputStream : public IceInternal::Buffer
|
|
37
|
+
{
|
|
38
|
+
public:
|
|
39
|
+
/// The size type for this byte buffer.
|
|
40
|
+
using size_type = std::size_t;
|
|
41
|
+
|
|
42
|
+
/// Constructs an OutputStream.
|
|
43
|
+
/// @param encoding The encoding version to use.
|
|
44
|
+
/// @param format The class format to use.
|
|
45
|
+
/// @param stringConverter The narrow string converter to use.
|
|
46
|
+
/// @param wstringConverter The wide string converter to use.
|
|
47
|
+
OutputStream(
|
|
48
|
+
EncodingVersion encoding = Encoding_1_1,
|
|
49
|
+
FormatType format = FormatType::CompactFormat,
|
|
50
|
+
StringConverterPtr stringConverter = nullptr,
|
|
51
|
+
WstringConverterPtr wstringConverter = nullptr);
|
|
52
|
+
|
|
53
|
+
/// Constructs an OutputStream using the format, string converter and wstring converter provided by the
|
|
54
|
+
/// communicator, and the specified encoding.
|
|
55
|
+
/// @param communicator The communicator.
|
|
56
|
+
/// @param encoding The encoding version to use.
|
|
57
|
+
OutputStream(const CommunicatorPtr& communicator, EncodingVersion encoding);
|
|
58
|
+
|
|
59
|
+
/// Constructs an OutputStream using the encoding, format, string converter and wstring converter provided by
|
|
60
|
+
/// the communicator.
|
|
61
|
+
/// @param communicator The communicator.
|
|
62
|
+
OutputStream(const CommunicatorPtr& communicator);
|
|
63
|
+
|
|
64
|
+
/// Constructs an OutputStream over an application-supplied buffer.
|
|
65
|
+
/// @param bytes Application-supplied memory that the OutputStream uses as its initial marshaling buffer. The
|
|
66
|
+
/// stream will reallocate if the size of the marshaled data exceeds the application's buffer.
|
|
67
|
+
/// @param encoding The encoding version to use.
|
|
68
|
+
/// @param format The class format to use.
|
|
69
|
+
/// @param stringConverter The narrow string converter to use.
|
|
70
|
+
/// @param wstringConverter The wide string converter to use.
|
|
71
|
+
OutputStream(
|
|
72
|
+
std::pair<const std::byte*, const std::byte*> bytes,
|
|
73
|
+
EncodingVersion encoding = Encoding_1_1,
|
|
74
|
+
FormatType format = FormatType::CompactFormat,
|
|
75
|
+
StringConverterPtr stringConverter = nullptr,
|
|
76
|
+
WstringConverterPtr wstringConverter = nullptr);
|
|
77
|
+
|
|
78
|
+
/// Move constructor.
|
|
79
|
+
/// @param other The output stream to move into this output stream.
|
|
80
|
+
OutputStream(OutputStream&& other) noexcept;
|
|
81
|
+
|
|
82
|
+
/// Move assignment operator.
|
|
83
|
+
/// @param other The output stream to move into this output stream.
|
|
84
|
+
/// @return A reference to this output stream.
|
|
85
|
+
OutputStream& operator=(OutputStream&& other) noexcept;
|
|
86
|
+
|
|
87
|
+
~OutputStream()
|
|
68
88
|
{
|
|
69
|
-
|
|
89
|
+
// Inlined for performance reasons.
|
|
90
|
+
|
|
91
|
+
if (_currentEncaps != &_preAllocatedEncaps)
|
|
92
|
+
{
|
|
93
|
+
clear(); // Not inlined.
|
|
94
|
+
}
|
|
70
95
|
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Initializes the stream to use the communicator's default encoding version, class
|
|
75
|
-
* encoding format and string converters. Use this method if you originally constructed
|
|
76
|
-
* the stream without a communicator.
|
|
77
|
-
* @param communicator The communicator to use for marshaling tasks.
|
|
78
|
-
*/
|
|
79
|
-
void initialize(const CommunicatorPtr& communicator);
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Initializes the stream to use the given encoding version and the communicator's
|
|
83
|
-
* default class encoding format and string converters. Use this method if you
|
|
84
|
-
* originally constructed the stream without a communicator.
|
|
85
|
-
* @param communicator The communicator to use for marshaling tasks.
|
|
86
|
-
* @param version The encoding version used to encode the data.
|
|
87
|
-
*/
|
|
88
|
-
void initialize(const CommunicatorPtr& communicator, const EncodingVersion& version);
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Releases any data retained by encapsulations.
|
|
92
|
-
*/
|
|
93
|
-
void clear();
|
|
94
|
-
|
|
95
|
-
/// \cond INTERNAL
|
|
96
|
-
//
|
|
97
|
-
// Must return Instance*, because we don't hold an InstancePtr for
|
|
98
|
-
// optimization reasons (see comments below).
|
|
99
|
-
//
|
|
100
|
-
IceInternal::Instance* instance() const { return _instance; } // Inlined for performance reasons.
|
|
101
|
-
/// \endcond
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Sets the class encoding format.
|
|
105
|
-
* @param format The encoding format.
|
|
106
|
-
*/
|
|
107
|
-
void setFormat(FormatType format);
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Obtains the closure data associated with this stream.
|
|
111
|
-
* @return The data as a void pointer.
|
|
112
|
-
*/
|
|
113
|
-
void* getClosure() const;
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Associates closure data with this stream.
|
|
117
|
-
* @param p The data as a void pointer.
|
|
118
|
-
* @return The previous closure data, or nil.
|
|
119
|
-
*/
|
|
120
|
-
void* setClosure(void* p);
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Swaps the contents of one stream with another.
|
|
124
|
-
*
|
|
125
|
-
* @param other The other stream.
|
|
126
|
-
*/
|
|
127
|
-
void swap(OutputStream& other);
|
|
128
|
-
|
|
129
|
-
/// \cond INTERNAL
|
|
130
|
-
void resetEncapsulation();
|
|
131
|
-
/// \endcond
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Resizes the stream to a new size.
|
|
135
|
-
*
|
|
136
|
-
* @param sz The new size.
|
|
137
|
-
*/
|
|
138
|
-
void resize(Container::size_type sz)
|
|
139
|
-
{
|
|
140
|
-
b.resize(sz);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Marks the start of a class instance.
|
|
145
|
-
* @param data Contains the marshaled form of unknown slices from this instance. If not nil,
|
|
146
|
-
* these slices will be marshaled with the instance.
|
|
147
|
-
*/
|
|
148
|
-
void startValue(const SlicedDataPtr& data)
|
|
149
|
-
{
|
|
150
|
-
assert(_currentEncaps && _currentEncaps->encoder);
|
|
151
|
-
_currentEncaps->encoder->startInstance(ValueSlice, data);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Marks the end of a class instance.
|
|
156
|
-
*/
|
|
157
|
-
void endValue()
|
|
158
|
-
{
|
|
159
|
-
assert(_currentEncaps && _currentEncaps->encoder);
|
|
160
|
-
_currentEncaps->encoder->endInstance();
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Marks the start of an exception instance.
|
|
165
|
-
* @param data Contains the marshaled form of unknown slices from this instance. If not nil,
|
|
166
|
-
* these slices will be marshaled with the instance.
|
|
167
|
-
*/
|
|
168
|
-
void startException(const SlicedDataPtr& data)
|
|
169
|
-
{
|
|
170
|
-
assert(_currentEncaps && _currentEncaps->encoder);
|
|
171
|
-
_currentEncaps->encoder->startInstance(ExceptionSlice, data);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Marks the end of an exception instance.
|
|
176
|
-
*/
|
|
177
|
-
void endException()
|
|
178
|
-
{
|
|
179
|
-
assert(_currentEncaps && _currentEncaps->encoder);
|
|
180
|
-
_currentEncaps->encoder->endInstance();
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Writes the start of an encapsulation using the default encoding version and
|
|
185
|
-
* class encoding format.
|
|
186
|
-
*/
|
|
187
|
-
void startEncapsulation();
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Writes the start of an encapsulation using the given encoding version and
|
|
191
|
-
* class encoding format.
|
|
192
|
-
* @param encoding The encoding version to use for the encapsulation.
|
|
193
|
-
* @param format The class format to use for the encapsulation.
|
|
194
|
-
*/
|
|
195
|
-
void startEncapsulation(const EncodingVersion& encoding, FormatType format)
|
|
196
|
-
{
|
|
197
|
-
IceInternal::checkSupportedEncoding(encoding);
|
|
198
96
|
|
|
199
|
-
|
|
200
|
-
|
|
97
|
+
/// Releases any data retained by encapsulations.
|
|
98
|
+
void clear();
|
|
99
|
+
|
|
100
|
+
/// Swaps the contents of one stream with another.
|
|
101
|
+
/// @param other The other stream.
|
|
102
|
+
void swap(OutputStream& other) noexcept;
|
|
103
|
+
|
|
104
|
+
/// @cond INTERNAL
|
|
105
|
+
|
|
106
|
+
/// Gets the closure associated with this stream.
|
|
107
|
+
/// @return The closure.
|
|
108
|
+
[[nodiscard]] void* getClosure() const;
|
|
109
|
+
|
|
110
|
+
/// Associates a closure with this stream.
|
|
111
|
+
/// @param p The closure
|
|
112
|
+
/// @return The previous closure, or nullptr.
|
|
113
|
+
void* setClosure(void* p);
|
|
114
|
+
|
|
115
|
+
void resetEncapsulation();
|
|
116
|
+
/// @endcond
|
|
117
|
+
|
|
118
|
+
/// Resizes the stream to a new size.
|
|
119
|
+
/// @param sz The new size.
|
|
120
|
+
void resize(Container::size_type sz) { b.resize(sz); }
|
|
121
|
+
|
|
122
|
+
/// Marks the start of a class instance.
|
|
123
|
+
/// @param data Contains the marshaled form of unknown slices from the class instance. If not nullptr, these
|
|
124
|
+
/// slices will be marshaled with the instance.
|
|
125
|
+
void startValue(const SlicedDataPtr& data)
|
|
201
126
|
{
|
|
202
|
-
_currentEncaps
|
|
127
|
+
assert(_currentEncaps && _currentEncaps->encoder);
|
|
128
|
+
_currentEncaps->encoder->startInstance(ValueSlice, data);
|
|
203
129
|
}
|
|
204
|
-
|
|
130
|
+
|
|
131
|
+
/// Marks the end of a class instance.
|
|
132
|
+
void endValue()
|
|
205
133
|
{
|
|
206
|
-
_currentEncaps
|
|
207
|
-
_currentEncaps->
|
|
134
|
+
assert(_currentEncaps && _currentEncaps->encoder);
|
|
135
|
+
_currentEncaps->encoder->endInstance();
|
|
208
136
|
}
|
|
209
|
-
_currentEncaps->format = format;
|
|
210
|
-
_currentEncaps->encoding = encoding;
|
|
211
|
-
_currentEncaps->start = b.size();
|
|
212
|
-
|
|
213
|
-
write(Int(0)); // Placeholder for the encapsulation length.
|
|
214
|
-
write(_currentEncaps->encoding);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Ends the current encapsulation.
|
|
219
|
-
*/
|
|
220
|
-
void endEncapsulation()
|
|
221
|
-
{
|
|
222
|
-
assert(_currentEncaps);
|
|
223
137
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
write(sz, &(*(b.begin() + _currentEncaps->start)));
|
|
227
|
-
|
|
228
|
-
Encaps* oldEncaps = _currentEncaps;
|
|
229
|
-
_currentEncaps = _currentEncaps->previous;
|
|
230
|
-
if(oldEncaps == &_preAllocatedEncaps)
|
|
138
|
+
/// Marks the start of an exception instance.
|
|
139
|
+
void startException()
|
|
231
140
|
{
|
|
232
|
-
|
|
141
|
+
assert(_currentEncaps && _currentEncaps->encoder);
|
|
142
|
+
_currentEncaps->encoder->startInstance(ExceptionSlice, nullptr);
|
|
233
143
|
}
|
|
234
|
-
|
|
144
|
+
|
|
145
|
+
/// Marks the end of an exception instance.
|
|
146
|
+
void endException()
|
|
235
147
|
{
|
|
236
|
-
|
|
148
|
+
assert(_currentEncaps && _currentEncaps->encoder);
|
|
149
|
+
_currentEncaps->encoder->endInstance();
|
|
237
150
|
}
|
|
238
|
-
}
|
|
239
151
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
152
|
+
/// Writes the start of an encapsulation using the default encoding version and class encoding format.
|
|
153
|
+
void startEncapsulation();
|
|
154
|
+
|
|
155
|
+
/// Writes the start of an encapsulation using the specified encoding version and class encoding format.
|
|
156
|
+
/// @param encoding The encoding version to use for the encapsulation.
|
|
157
|
+
/// @param format The class format to use for the encapsulation. nullopt is equivalent to the OutputStream's
|
|
158
|
+
/// class format.
|
|
159
|
+
void startEncapsulation(const EncodingVersion& encoding, std::optional<FormatType> format);
|
|
160
|
+
|
|
161
|
+
/// Ends the current encapsulation.
|
|
162
|
+
void endEncapsulation();
|
|
163
|
+
|
|
164
|
+
/// Writes an empty encapsulation using the specified encoding version.
|
|
165
|
+
/// @param encoding The encoding version to use for the encapsulation.
|
|
166
|
+
void writeEmptyEncapsulation(const EncodingVersion& encoding);
|
|
167
|
+
|
|
168
|
+
/// Copies the marshaled form of an encapsulation to the buffer.
|
|
169
|
+
/// @param v The start of the buffer.
|
|
170
|
+
/// @param sz The number of bytes to copy.
|
|
171
|
+
void writeEncapsulation(const std::byte* v, std::int32_t sz);
|
|
172
|
+
|
|
173
|
+
/// Gets the current encoding version.
|
|
174
|
+
/// @return The encoding version.
|
|
175
|
+
[[nodiscard]] const EncodingVersion& getEncoding() const
|
|
259
176
|
{
|
|
260
|
-
|
|
177
|
+
return _currentEncaps ? _currentEncaps->encoding : _encoding;
|
|
261
178
|
}
|
|
262
179
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Determines the current encoding version.
|
|
270
|
-
*
|
|
271
|
-
* @return The encoding version.
|
|
272
|
-
*/
|
|
273
|
-
const EncodingVersion& getEncoding() const
|
|
274
|
-
{
|
|
275
|
-
return _currentEncaps ? _currentEncaps->encoding : _encoding;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
/**
|
|
279
|
-
* Writes the start of a value or exception slice.
|
|
280
|
-
*
|
|
281
|
-
* @param typeId The Slice type ID for this slice.
|
|
282
|
-
* @param compactId The compact ID corresponding to the type, or -1 if no compact ID is used.
|
|
283
|
-
* @param last True if this is the last slice, false otherwise.
|
|
284
|
-
*/
|
|
285
|
-
void startSlice(const std::string& typeId, int compactId, bool last)
|
|
286
|
-
{
|
|
287
|
-
assert(_currentEncaps && _currentEncaps->encoder);
|
|
288
|
-
_currentEncaps->encoder->startSlice(typeId, compactId, last);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* Marks the end of a value or exception slice.
|
|
293
|
-
*/
|
|
294
|
-
void endSlice()
|
|
295
|
-
{
|
|
296
|
-
assert(_currentEncaps && _currentEncaps->encoder);
|
|
297
|
-
_currentEncaps->encoder->endSlice();
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
* Encodes the state of class instances whose insertion was delayed during a previous
|
|
302
|
-
* call to write. This member function must only be called once. For backward
|
|
303
|
-
* compatibility with encoding version 1.0, this function must only be called when
|
|
304
|
-
* non-optional data members or parameters use class types.
|
|
305
|
-
*/
|
|
306
|
-
void writePendingValues();
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
* Writes a size value.
|
|
310
|
-
* @param v A non-negative integer.
|
|
311
|
-
*/
|
|
312
|
-
void writeSize(Int v) // Inlined for performance reasons.
|
|
313
|
-
{
|
|
314
|
-
assert(v >= 0);
|
|
315
|
-
if(v > 254)
|
|
180
|
+
/// Writes the start of a class instance or exception slice.
|
|
181
|
+
/// @param typeId The Slice type ID for this slice.
|
|
182
|
+
/// @param compactId The compact ID corresponding to the type, or -1 if no compact ID is used.
|
|
183
|
+
/// @param last `true` if this is the last slice, `false` otherwise.
|
|
184
|
+
void startSlice(std::string_view typeId, int compactId, bool last)
|
|
316
185
|
{
|
|
317
|
-
|
|
318
|
-
|
|
186
|
+
assert(_currentEncaps && _currentEncaps->encoder);
|
|
187
|
+
_currentEncaps->encoder->startSlice(typeId, compactId, last);
|
|
319
188
|
}
|
|
320
|
-
|
|
189
|
+
|
|
190
|
+
/// Marks the end of a class instance or exception slice.
|
|
191
|
+
void endSlice()
|
|
321
192
|
{
|
|
322
|
-
|
|
193
|
+
assert(_currentEncaps && _currentEncaps->encoder);
|
|
194
|
+
_currentEncaps->encoder->endSlice();
|
|
323
195
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
{
|
|
334
|
-
assert(v >= 0);
|
|
335
|
-
if(v > 254)
|
|
196
|
+
|
|
197
|
+
/// Encodes the state of class instances whose insertion was delayed during a previous call `write`. This
|
|
198
|
+
/// function must be called only once. For backward compatibility with encoding version 1.0, this function must
|
|
199
|
+
/// be called only when non-optional fields or parameters use class types.
|
|
200
|
+
void writePendingValues();
|
|
201
|
+
|
|
202
|
+
/// Writes a size value.
|
|
203
|
+
/// @param v A non-negative integer.
|
|
204
|
+
void writeSize(std::int32_t v) // Inlined for performance reasons.
|
|
336
205
|
{
|
|
337
|
-
|
|
338
|
-
|
|
206
|
+
assert(v >= 0);
|
|
207
|
+
if (v > 254)
|
|
208
|
+
{
|
|
209
|
+
write(std::uint8_t(255));
|
|
210
|
+
write(v);
|
|
211
|
+
}
|
|
212
|
+
else
|
|
213
|
+
{
|
|
214
|
+
write(static_cast<std::uint8_t>(v));
|
|
215
|
+
}
|
|
339
216
|
}
|
|
340
|
-
|
|
217
|
+
|
|
218
|
+
/// Replaces a size value at the specified position in the stream. This function does not change the stream's
|
|
219
|
+
/// current position.
|
|
220
|
+
/// @param v A non-negative integer representing the size.
|
|
221
|
+
/// @param dest The buffer destination for the size.
|
|
222
|
+
void rewriteSize(std::int32_t v, Container::iterator dest)
|
|
341
223
|
{
|
|
342
|
-
|
|
224
|
+
assert(v >= 0);
|
|
225
|
+
if (v > 254)
|
|
226
|
+
{
|
|
227
|
+
*dest++ = std::byte{255};
|
|
228
|
+
write(v, dest);
|
|
229
|
+
}
|
|
230
|
+
else
|
|
231
|
+
{
|
|
232
|
+
*dest = static_cast<std::byte>(v);
|
|
233
|
+
}
|
|
343
234
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
* the actual size at the given position.
|
|
350
|
-
* @return The starting position of the size value.
|
|
351
|
-
*/
|
|
352
|
-
size_type startSize()
|
|
353
|
-
{
|
|
354
|
-
size_type position = b.size();
|
|
355
|
-
write(Int(0));
|
|
356
|
-
return position;
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* Updates the size value at the given position to contain a size based on the
|
|
361
|
-
* stream's current position.
|
|
362
|
-
* @param position The starting position of the size value as returned by startSize.
|
|
363
|
-
*/
|
|
364
|
-
void endSize(size_type position)
|
|
365
|
-
{
|
|
366
|
-
rewrite(static_cast<Int>(b.size() - position) - 4, position);
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
/**
|
|
370
|
-
* Copies the specified blob of bytes to the stream without modification.
|
|
371
|
-
* @param v The bytes to be copied.
|
|
372
|
-
*/
|
|
373
|
-
void writeBlob(const std::vector<Byte>& v);
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* Copies the specified blob of bytes to the stream without modification.
|
|
377
|
-
* @param v The start of the buffer to be copied.
|
|
378
|
-
* @param sz The number of bytes to be copied.
|
|
379
|
-
*/
|
|
380
|
-
void writeBlob(const Byte* v, Container::size_type sz)
|
|
381
|
-
{
|
|
382
|
-
if(sz > 0)
|
|
235
|
+
|
|
236
|
+
/// Writes a placeholder value for the size and returns the starting position of the size value; after writing
|
|
237
|
+
/// the data, call #endSize to patch the placeholder with the actual size at the given position.
|
|
238
|
+
/// @return The starting position of the size value.
|
|
239
|
+
size_type startSize()
|
|
383
240
|
{
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
241
|
+
size_type position = b.size();
|
|
242
|
+
write(std::int32_t(0));
|
|
243
|
+
return position;
|
|
387
244
|
}
|
|
388
|
-
}
|
|
389
245
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
* @param v The data value to be written (if any).
|
|
403
|
-
*/
|
|
404
|
-
template<typename T> void write(Int tag, const IceUtil::Optional<T>& v)
|
|
405
|
-
{
|
|
406
|
-
if(!v)
|
|
246
|
+
/// Updates the size value at the given position. The new size is computed from stream's current position.
|
|
247
|
+
/// @param position The starting position of the size value as returned by #startSize.
|
|
248
|
+
void endSize(size_type position) { rewrite(static_cast<std::int32_t>(b.size() - position) - 4, position); }
|
|
249
|
+
|
|
250
|
+
/// Copies the specified blob of bytes to the stream without modification.
|
|
251
|
+
/// @param v The bytes to copy.
|
|
252
|
+
void writeBlob(const std::vector<std::byte>& v);
|
|
253
|
+
|
|
254
|
+
/// Copies the specified blob of bytes to the stream without modification.
|
|
255
|
+
/// @param v The start of the buffer to copy.
|
|
256
|
+
/// @param sz The number of bytes to copy.
|
|
257
|
+
void writeBlob(const std::byte* v, Container::size_type sz)
|
|
407
258
|
{
|
|
408
|
-
|
|
259
|
+
if (sz > 0)
|
|
260
|
+
{
|
|
261
|
+
Container::size_type position = b.size();
|
|
262
|
+
resize(position + sz);
|
|
263
|
+
memcpy(&b[position], &v[0], sz);
|
|
264
|
+
}
|
|
409
265
|
}
|
|
410
266
|
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
267
|
+
/// Writes a value to the stream.
|
|
268
|
+
/// @tparam T The type of the value to marshal.
|
|
269
|
+
/// @param v The value to marshal.
|
|
270
|
+
template<typename T> void write(const T& v) { StreamHelper<T, StreamableTraits<T>::helper>::write(this, v); }
|
|
271
|
+
|
|
272
|
+
#ifdef ICE_DOXYGEN
|
|
273
|
+
/// Writes an optional value to the stream.
|
|
274
|
+
/// @tparam T The type of the value to marshal.
|
|
275
|
+
/// @param tag The tag.
|
|
276
|
+
/// @param v The value to marshal.
|
|
277
|
+
template<typename T> void write(std::int32_t tag, const std::optional<T>& v);
|
|
278
|
+
|
|
279
|
+
/// Writes a tuple to the stream.
|
|
280
|
+
/// @tparam I The index of the first element to marshal.
|
|
281
|
+
/// @tparam Te The types of the values in the tuple, starting at index @p I.
|
|
282
|
+
/// @param tuple The tuple to marshal.
|
|
283
|
+
// Declared here because the actual definition below breaks doxygen 1.13.2.
|
|
284
|
+
template<size_t I = 0, typename... Te >> writeAll(std::tuple<Te...> tuple);
|
|
285
|
+
#endif
|
|
286
|
+
|
|
287
|
+
/// Writes a value (single element list) to the stream.
|
|
288
|
+
/// @tparam T The type of the value.
|
|
289
|
+
/// @param v The value to marshal.
|
|
290
|
+
template<typename T> void writeAll(const T& v) { write(v); }
|
|
291
|
+
|
|
292
|
+
/// Writes a list of values to the stream.
|
|
293
|
+
/// @tparam T The type of the first value.
|
|
294
|
+
/// @tparam Te The types of the remaining values.
|
|
295
|
+
/// @param v The first value to marshal.
|
|
296
|
+
/// @param ve The remaining values.
|
|
297
|
+
template<typename T, typename... Te> void writeAll(const T& v, const Te&... ve)
|
|
414
298
|
{
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
StreamableTraits<T>::fixedLength>::write(this, *v);
|
|
299
|
+
write(v);
|
|
300
|
+
writeAll(ve...);
|
|
418
301
|
}
|
|
419
|
-
}
|
|
420
302
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
{
|
|
427
|
-
if(v.empty())
|
|
303
|
+
/// Writes an optional value (single element list) to the stream.
|
|
304
|
+
/// @tparam T The type of the value.
|
|
305
|
+
/// @param tags The tag list. The last tag is used to marshal the value.
|
|
306
|
+
/// @param v The value to marshal.
|
|
307
|
+
template<typename T> void writeAll(std::initializer_list<std::int32_t> tags, const std::optional<T>& v)
|
|
428
308
|
{
|
|
429
|
-
|
|
309
|
+
write(*(tags.begin() + tags.size() - 1), v);
|
|
430
310
|
}
|
|
431
|
-
|
|
311
|
+
|
|
312
|
+
/// Writes a list of optional values to the stream.
|
|
313
|
+
/// @tparam T The type of the first value.
|
|
314
|
+
/// @tparam Te The types of the remaining values.
|
|
315
|
+
/// @param tags The tag list.
|
|
316
|
+
/// @param v The first value to marshal.
|
|
317
|
+
/// @param ve The remaining values.
|
|
318
|
+
template<typename T, typename... Te>
|
|
319
|
+
void
|
|
320
|
+
writeAll(std::initializer_list<std::int32_t> tags, const std::optional<T>& v, const std::optional<Te>&... ve)
|
|
432
321
|
{
|
|
433
|
-
|
|
322
|
+
size_t index = tags.size() - sizeof...(ve) - 1;
|
|
323
|
+
write(*(tags.begin() + index), v);
|
|
324
|
+
writeAll(tags, ve...);
|
|
434
325
|
}
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
template<typename T> void write(const T* begin, const T* end)
|
|
443
|
-
{
|
|
444
|
-
writeSize(static_cast<Int>(end - begin));
|
|
445
|
-
for(const T* p = begin; p != end; ++p)
|
|
326
|
+
|
|
327
|
+
/// Writes the tag and format of an optional value.
|
|
328
|
+
/// @param tag The tag.
|
|
329
|
+
/// @param format The optional format.
|
|
330
|
+
/// @return `true` if the current encoding version supports optional values, `false` otherwise.
|
|
331
|
+
/// If `true`, the data associated with the optional value must be written next.
|
|
332
|
+
bool writeOptional(std::int32_t tag, OptionalFormat format)
|
|
446
333
|
{
|
|
447
|
-
|
|
334
|
+
assert(_currentEncaps);
|
|
335
|
+
if (_currentEncaps->encoder)
|
|
336
|
+
{
|
|
337
|
+
return _currentEncaps->encoder->writeOptional(tag, format);
|
|
338
|
+
}
|
|
339
|
+
else
|
|
340
|
+
{
|
|
341
|
+
return writeOptImpl(tag, format);
|
|
342
|
+
}
|
|
448
343
|
}
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
#ifdef ICE_CPP11_MAPPING
|
|
452
|
-
|
|
453
|
-
/**
|
|
454
|
-
* Writes a list of mandatory data values.
|
|
455
|
-
*/
|
|
456
|
-
template<typename T> void writeAll(const T& v)
|
|
457
|
-
{
|
|
458
|
-
write(v);
|
|
459
|
-
}
|
|
460
344
|
|
|
461
|
-
|
|
462
|
-
* Writes a list of mandatory data values.
|
|
463
|
-
*/
|
|
464
|
-
template<typename T, typename... Te> void writeAll(const T& v, const Te&... ve)
|
|
465
|
-
{
|
|
466
|
-
write(v);
|
|
467
|
-
writeAll(ve...);
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
/**
|
|
471
|
-
* Writes a list of mandatory data values.
|
|
472
|
-
*/
|
|
473
|
-
template<size_t I = 0, typename... Te>
|
|
474
|
-
typename std::enable_if<I == sizeof...(Te), void>::type
|
|
475
|
-
writeAll(std::tuple<Te...>)
|
|
476
|
-
{
|
|
477
|
-
// Do nothing. Either tuple is empty or we are at the end.
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* Writes a list of mandatory data values.
|
|
482
|
-
*/
|
|
483
|
-
template<size_t I = 0, typename... Te>
|
|
484
|
-
typename std::enable_if<I < sizeof...(Te), void>::type
|
|
485
|
-
writeAll(std::tuple<Te...> tuple)
|
|
486
|
-
{
|
|
487
|
-
write(std::get<I>(tuple));
|
|
488
|
-
writeAll<I + 1, Te...>(tuple);
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
/**
|
|
492
|
-
* Writes a list of optional data values.
|
|
493
|
-
*/
|
|
494
|
-
template<typename T>
|
|
495
|
-
void writeAll(std::initializer_list<int> tags, const IceUtil::Optional<T>& v)
|
|
496
|
-
{
|
|
497
|
-
write(*(tags.begin() + tags.size() - 1), v);
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
/**
|
|
501
|
-
* Writes a list of optional data values.
|
|
502
|
-
*/
|
|
503
|
-
template<typename T, typename... Te>
|
|
504
|
-
void writeAll(std::initializer_list<int> tags, const IceUtil::Optional<T>& v, const IceUtil::Optional<Te>&... ve)
|
|
505
|
-
{
|
|
506
|
-
size_t index = tags.size() - sizeof...(ve) - 1;
|
|
507
|
-
write(*(tags.begin() + index), v);
|
|
508
|
-
writeAll(tags, ve...);
|
|
509
|
-
}
|
|
345
|
+
/// @cond INTERNAL
|
|
510
346
|
|
|
511
|
-
|
|
347
|
+
// We don't document all the write "specializations" in Doxygen. But we do keep them mostly documented for
|
|
348
|
+
// tool-tips.
|
|
512
349
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
*/
|
|
520
|
-
bool writeOptional(Int tag, OptionalFormat format)
|
|
521
|
-
{
|
|
522
|
-
assert(_currentEncaps);
|
|
523
|
-
if(_currentEncaps->encoder)
|
|
350
|
+
/// Writes an optional value to the stream.
|
|
351
|
+
/// @tparam T The type of the value to marshal. Not for proxy types.
|
|
352
|
+
/// @param tag The tag.
|
|
353
|
+
/// @param v The value to marshal.
|
|
354
|
+
template<typename T, std::enable_if_t<!std::is_base_of_v<ObjectPrx, T>, bool> = true>
|
|
355
|
+
void write(std::int32_t tag, const std::optional<T>& v)
|
|
524
356
|
{
|
|
525
|
-
|
|
357
|
+
if (!v)
|
|
358
|
+
{
|
|
359
|
+
return; // Optional not set
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
if (writeOptional(
|
|
363
|
+
tag,
|
|
364
|
+
StreamOptionalHelper<T, StreamableTraits<T>::helper, StreamableTraits<T>::fixedLength>::
|
|
365
|
+
optionalFormat))
|
|
366
|
+
{
|
|
367
|
+
StreamOptionalHelper<T, StreamableTraits<T>::helper, StreamableTraits<T>::fixedLength>::write(this, *v);
|
|
368
|
+
}
|
|
526
369
|
}
|
|
527
|
-
|
|
370
|
+
|
|
371
|
+
/// Writes an optional value to the stream.
|
|
372
|
+
/// @tparam T The proxy type.
|
|
373
|
+
/// @param tag The tag.
|
|
374
|
+
/// @param v The value to marshal.
|
|
375
|
+
template<typename T, std::enable_if_t<std::is_base_of_v<ObjectPrx, T>, bool> = true>
|
|
376
|
+
void write(std::int32_t tag, const std::optional<T>& v)
|
|
528
377
|
{
|
|
529
|
-
|
|
378
|
+
if (!v)
|
|
379
|
+
{
|
|
380
|
+
return; // Optional not set
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
if (writeOptional(tag, OptionalFormat::FSize))
|
|
384
|
+
{
|
|
385
|
+
size_type pos = startSize();
|
|
386
|
+
writeProxy(*v);
|
|
387
|
+
endSize(pos);
|
|
388
|
+
}
|
|
530
389
|
}
|
|
531
|
-
}
|
|
532
390
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
void write(Byte v)
|
|
538
|
-
{
|
|
539
|
-
b.push_back(v);
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
/**
|
|
543
|
-
* Writes a byte sequence to the stream.
|
|
544
|
-
* @param start The beginning of the sequence.
|
|
545
|
-
* @param end The end of the sequence.
|
|
546
|
-
*/
|
|
547
|
-
void write(const Byte* start, const Byte* end);
|
|
548
|
-
|
|
549
|
-
/**
|
|
550
|
-
* Writes a boolean to the stream.
|
|
551
|
-
* @param v The boolean to write.
|
|
552
|
-
*/
|
|
553
|
-
void write(bool v)
|
|
554
|
-
{
|
|
555
|
-
b.push_back(static_cast<Byte>(v));
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
/**
|
|
559
|
-
* Writes a byte sequence to the stream.
|
|
560
|
-
* @param v The sequence to be written.
|
|
561
|
-
*/
|
|
562
|
-
void write(const std::vector<bool>& v);
|
|
563
|
-
|
|
564
|
-
/**
|
|
565
|
-
* Writes a byte sequence to the stream.
|
|
566
|
-
* @param begin The beginning of the sequence.
|
|
567
|
-
* @param end The end of the sequence.
|
|
568
|
-
*/
|
|
569
|
-
void write(const bool* begin, const bool* end);
|
|
570
|
-
|
|
571
|
-
/**
|
|
572
|
-
* Writes a short to the stream.
|
|
573
|
-
* @param v The short to write.
|
|
574
|
-
*/
|
|
575
|
-
void write(Short v);
|
|
576
|
-
|
|
577
|
-
/**
|
|
578
|
-
* Writes a short sequence to the stream.
|
|
579
|
-
* @param begin The beginning of the sequence.
|
|
580
|
-
* @param end The end of the sequence.
|
|
581
|
-
*/
|
|
582
|
-
void write(const Short* begin, const Short* end);
|
|
583
|
-
|
|
584
|
-
/**
|
|
585
|
-
* Writes an int to the stream.
|
|
586
|
-
* @param v The int to write.
|
|
587
|
-
*/
|
|
588
|
-
void write(Int v) // Inlined for performance reasons.
|
|
589
|
-
{
|
|
590
|
-
Container::size_type position = b.size();
|
|
591
|
-
resize(position + sizeof(Int));
|
|
592
|
-
write(v, &b[position]);
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
/**
|
|
596
|
-
* Overwrites a 32-bit integer value at the given destination in the stream.
|
|
597
|
-
* This function does not change the stream's current position.
|
|
598
|
-
* @param v The integer value to be written.
|
|
599
|
-
* @param dest The buffer destination for the integer value.
|
|
600
|
-
*/
|
|
601
|
-
void write(Int v, Container::iterator dest)
|
|
602
|
-
{
|
|
603
|
-
#ifdef ICE_BIG_ENDIAN
|
|
604
|
-
const Byte* src = reinterpret_cast<const Byte*>(&v) + sizeof(Int) - 1;
|
|
605
|
-
*dest++ = *src--;
|
|
606
|
-
*dest++ = *src--;
|
|
607
|
-
*dest++ = *src--;
|
|
608
|
-
*dest = *src;
|
|
609
|
-
#else
|
|
610
|
-
const Byte* src = reinterpret_cast<const Byte*>(&v);
|
|
611
|
-
*dest++ = *src++;
|
|
612
|
-
*dest++ = *src++;
|
|
613
|
-
*dest++ = *src++;
|
|
614
|
-
*dest = *src;
|
|
615
|
-
#endif
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
/**
|
|
619
|
-
* Writes an int sequence to the stream.
|
|
620
|
-
* @param begin The beginning of the sequence.
|
|
621
|
-
* @param end The end of the sequence.
|
|
622
|
-
*/
|
|
623
|
-
void write(const Int* begin, const Int* end);
|
|
624
|
-
|
|
625
|
-
/**
|
|
626
|
-
* Writes a long to the stream.
|
|
627
|
-
* @param v The long to write.
|
|
628
|
-
*/
|
|
629
|
-
void write(Long v);
|
|
630
|
-
|
|
631
|
-
/**
|
|
632
|
-
* Writes a long sequence to the stream.
|
|
633
|
-
* @param begin The beginning of the sequence.
|
|
634
|
-
* @param end The end of the sequence.
|
|
635
|
-
*/
|
|
636
|
-
void write(const Long* begin, const Long* end);
|
|
637
|
-
|
|
638
|
-
/**
|
|
639
|
-
* Writes a float to the stream.
|
|
640
|
-
* @param v The float to write.
|
|
641
|
-
*/
|
|
642
|
-
void write(Float v);
|
|
643
|
-
|
|
644
|
-
/**
|
|
645
|
-
* Writes a float sequence to the stream.
|
|
646
|
-
* @param begin The beginning of the sequence.
|
|
647
|
-
* @param end The end of the sequence.
|
|
648
|
-
*/
|
|
649
|
-
void write(const Float* begin, const Float* end);
|
|
650
|
-
|
|
651
|
-
/**
|
|
652
|
-
* Writes a double to the stream.
|
|
653
|
-
* @param v The double to write.
|
|
654
|
-
*/
|
|
655
|
-
void write(Double v);
|
|
656
|
-
|
|
657
|
-
/**
|
|
658
|
-
* Writes a double sequence to the stream.
|
|
659
|
-
* @param begin The beginning of the sequence.
|
|
660
|
-
* @param end The end of the sequence.
|
|
661
|
-
*/
|
|
662
|
-
void write(const Double* begin, const Double* end);
|
|
663
|
-
|
|
664
|
-
/**
|
|
665
|
-
* Writes a string to the stream.
|
|
666
|
-
* @param v The string to write.
|
|
667
|
-
* @param convert Determines whether the string is processed by the narrow string converter,
|
|
668
|
-
* if one has been configured. The default behavior is to convert the strings.
|
|
669
|
-
*/
|
|
670
|
-
void write(const std::string& v, bool convert = true)
|
|
671
|
-
{
|
|
672
|
-
Int sz = static_cast<Int>(v.size());
|
|
673
|
-
if(convert && sz > 0)
|
|
391
|
+
/// Writes a sequence to the stream.
|
|
392
|
+
/// @tparam T The type of the elements in the sequence.
|
|
393
|
+
/// @param v The sequence to marshal.
|
|
394
|
+
template<typename T> void write(const std::vector<T>& v)
|
|
674
395
|
{
|
|
675
|
-
|
|
396
|
+
if (v.empty())
|
|
397
|
+
{
|
|
398
|
+
writeSize(0);
|
|
399
|
+
}
|
|
400
|
+
else
|
|
401
|
+
{
|
|
402
|
+
write(&v[0], &v[0] + v.size());
|
|
403
|
+
}
|
|
676
404
|
}
|
|
677
|
-
|
|
405
|
+
|
|
406
|
+
/// Writes a sequence to the stream.
|
|
407
|
+
/// @tparam T The type of the elements in the sequence.
|
|
408
|
+
/// @param begin The beginning of the sequence.
|
|
409
|
+
/// @param end The end of the sequence.
|
|
410
|
+
template<typename T> void write(const T* begin, const T* end)
|
|
678
411
|
{
|
|
679
|
-
writeSize(
|
|
680
|
-
|
|
412
|
+
writeSize(static_cast<std::int32_t>(end - begin));
|
|
413
|
+
for (const T* p = begin; p != end; ++p)
|
|
681
414
|
{
|
|
682
|
-
|
|
683
|
-
resize(position + static_cast<size_t>(sz));
|
|
684
|
-
memcpy(&b[position], v.data(), static_cast<size_t>(sz));
|
|
415
|
+
write(*p);
|
|
685
416
|
}
|
|
686
417
|
}
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
* Writes a string to the stream.
|
|
691
|
-
* @param vdata The string to write.
|
|
692
|
-
* @param vsize The size of the string.
|
|
693
|
-
* @param convert Determines whether the string is processed by the narrow string converter,
|
|
694
|
-
* if one has been configured. The default behavior is to convert the strings.
|
|
695
|
-
*/
|
|
696
|
-
void write(const char* vdata, size_t vsize, bool convert = true)
|
|
697
|
-
{
|
|
698
|
-
Int sz = static_cast<Int>(vsize);
|
|
699
|
-
if(convert && sz > 0)
|
|
418
|
+
|
|
419
|
+
// Helper function for the next writeAll.
|
|
420
|
+
template<size_t I = 0, typename... Te> std::enable_if_t<I == sizeof...(Te), void> writeAll(std::tuple<Te...>)
|
|
700
421
|
{
|
|
701
|
-
|
|
422
|
+
// Do nothing. Either tuple is empty or we are at the end.
|
|
702
423
|
}
|
|
703
|
-
|
|
424
|
+
|
|
425
|
+
/// Writes a tuple to the stream.
|
|
426
|
+
/// @tparam I The index of the first element to marshal.
|
|
427
|
+
/// @tparam Te The types of the values in the tuple, starting at index @p I.
|
|
428
|
+
/// @param tuple The tuple to marshal.
|
|
429
|
+
template<size_t I = 0, typename... Te>
|
|
430
|
+
std::enable_if_t < I<sizeof...(Te), void> writeAll(std::tuple<Te...> tuple)
|
|
704
431
|
{
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
{
|
|
708
|
-
Container::size_type position = b.size();
|
|
709
|
-
resize(position + static_cast<size_t>(sz));
|
|
710
|
-
memcpy(&b[position], vdata, vsize);
|
|
711
|
-
}
|
|
432
|
+
write(std::get<I>(tuple));
|
|
433
|
+
writeAll<I + 1, Te...>(tuple);
|
|
712
434
|
}
|
|
713
|
-
}
|
|
714
|
-
|
|
715
|
-
/**
|
|
716
|
-
* Writes a string to the stream.
|
|
717
|
-
* @param vdata The null-terminated string to write.
|
|
718
|
-
* @param convert Determines whether the string is processed by the narrow string converter,
|
|
719
|
-
* if one has been configured. The default behavior is to convert the strings.
|
|
720
|
-
*/
|
|
721
|
-
void write(const char* vdata, bool convert = true)
|
|
722
|
-
{
|
|
723
|
-
write(vdata, strlen(vdata), convert);
|
|
724
|
-
}
|
|
725
|
-
|
|
726
|
-
/**
|
|
727
|
-
* Writes a string sequence to the stream.
|
|
728
|
-
* @param begin The beginning of the sequence.
|
|
729
|
-
* @param end The end of the sequence.
|
|
730
|
-
* @param convert Determines whether the string is processed by the narrow string converter,
|
|
731
|
-
* if one has been configured. The default behavior is to convert the strings.
|
|
732
|
-
*/
|
|
733
|
-
void write(const std::string* begin, const std::string* end, bool convert = true);
|
|
734
|
-
|
|
735
|
-
/**
|
|
736
|
-
* Writes a wide string to the stream.
|
|
737
|
-
* @param v The wide string to write.
|
|
738
|
-
*/
|
|
739
|
-
void write(const std::wstring& v);
|
|
740
|
-
|
|
741
|
-
/**
|
|
742
|
-
* Writes a wide string sequence to the stream.
|
|
743
|
-
* @param begin The beginning of the sequence.
|
|
744
|
-
* @param end The end of the sequence.
|
|
745
|
-
*/
|
|
746
|
-
void write(const std::wstring* begin, const std::wstring* end);
|
|
747
|
-
|
|
748
|
-
#ifdef ICE_CPP11_MAPPING
|
|
749
|
-
/**
|
|
750
|
-
* Writes a proxy to the stream.
|
|
751
|
-
* @param v The proxy to be written.
|
|
752
|
-
*/
|
|
753
|
-
void writeProxy(const ::std::shared_ptr<ObjectPrx>& v);
|
|
754
|
-
|
|
755
|
-
/**
|
|
756
|
-
* Writes a proxy to the stream.
|
|
757
|
-
* @param v The proxy to be written.
|
|
758
|
-
*/
|
|
759
|
-
template<typename T, typename ::std::enable_if<::std::is_base_of<ObjectPrx, T>::value>::type* = nullptr>
|
|
760
|
-
void write(const ::std::shared_ptr<T>& v)
|
|
761
|
-
{
|
|
762
|
-
writeProxy(::std::static_pointer_cast<ObjectPrx>(v));
|
|
763
|
-
}
|
|
764
|
-
#else
|
|
765
|
-
/**
|
|
766
|
-
* Writes a proxy to the stream.
|
|
767
|
-
* @param v The proxy to be written.
|
|
768
|
-
*/
|
|
769
|
-
void write(const ObjectPrx& v);
|
|
770
|
-
|
|
771
|
-
/**
|
|
772
|
-
* Writes a proxy to the stream.
|
|
773
|
-
* @param v The proxy to be written.
|
|
774
|
-
*/
|
|
775
|
-
template<typename T> void write(const IceInternal::ProxyHandle<T>& v)
|
|
776
|
-
{
|
|
777
|
-
write(ObjectPrx(upCast(v.get())));
|
|
778
|
-
}
|
|
779
|
-
#endif
|
|
780
435
|
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
* @param v The value to be written.
|
|
785
|
-
*/
|
|
786
|
-
template<typename T, typename ::std::enable_if<::std::is_base_of<Value, T>::value>::type* = nullptr>
|
|
787
|
-
void write(const ::std::shared_ptr<T>& v)
|
|
788
|
-
{
|
|
789
|
-
initEncaps();
|
|
790
|
-
_currentEncaps->encoder->write(v);
|
|
791
|
-
}
|
|
792
|
-
#else // C++98 mapping
|
|
793
|
-
/**
|
|
794
|
-
* Writes a value instance to the stream.
|
|
795
|
-
* @param v The value to be written.
|
|
796
|
-
*/
|
|
797
|
-
void write(const ObjectPtr& v)
|
|
798
|
-
{
|
|
799
|
-
initEncaps();
|
|
800
|
-
_currentEncaps->encoder->write(v);
|
|
801
|
-
}
|
|
802
|
-
|
|
803
|
-
/**
|
|
804
|
-
* Writes a value instance to the stream.
|
|
805
|
-
* @param v The value to be written.
|
|
806
|
-
*/
|
|
807
|
-
template<typename T> void write(const IceInternal::Handle<T>& v)
|
|
808
|
-
{
|
|
809
|
-
write(ObjectPtr(upCast(v.get())));
|
|
810
|
-
}
|
|
811
|
-
#endif
|
|
436
|
+
/// Writes a byte to the stream.
|
|
437
|
+
/// @param v The byte to marshal.
|
|
438
|
+
void write(std::byte v) { b.push_back(v); }
|
|
812
439
|
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
* @param maxValue The maximum value of all enumerators in this enumeration.
|
|
817
|
-
*/
|
|
818
|
-
void writeEnum(Int v, Int maxValue);
|
|
819
|
-
|
|
820
|
-
/**
|
|
821
|
-
* Writes an exception to the stream.
|
|
822
|
-
* @param v The exception to be written.
|
|
823
|
-
*/
|
|
824
|
-
void writeException(const UserException& v);
|
|
825
|
-
|
|
826
|
-
/**
|
|
827
|
-
* Obtains the current position of the stream.
|
|
828
|
-
* @return The current position.
|
|
829
|
-
*/
|
|
830
|
-
size_type pos()
|
|
831
|
-
{
|
|
832
|
-
return b.size();
|
|
833
|
-
}
|
|
834
|
-
|
|
835
|
-
/**
|
|
836
|
-
* Overwrite a 32-bit integer value at the given position in the stream.
|
|
837
|
-
* This function does not change the stream's current position.
|
|
838
|
-
* @param v The value to be written.
|
|
839
|
-
* @param pos The buffer position for the value.
|
|
840
|
-
*/
|
|
841
|
-
void rewrite(Int v, size_type pos)
|
|
842
|
-
{
|
|
843
|
-
write(v, b.begin() + pos);
|
|
844
|
-
}
|
|
845
|
-
|
|
846
|
-
/**
|
|
847
|
-
* Indicates that marshaling is complete. This function must only be called once.
|
|
848
|
-
* @param v Filled with a copy of the encoded data.
|
|
849
|
-
*/
|
|
850
|
-
void finished(std::vector<Byte>& v);
|
|
851
|
-
|
|
852
|
-
/**
|
|
853
|
-
* Indicates that marshaling is complete. This function must only be called once.
|
|
854
|
-
* @return A pair of pointers into the internal marshaling buffer. These pointers are
|
|
855
|
-
* valid for the lifetime of the stream.
|
|
856
|
-
*/
|
|
857
|
-
std::pair<const Byte*, const Byte*> finished();
|
|
858
|
-
|
|
859
|
-
/// \cond INTERNAL
|
|
860
|
-
OutputStream(IceInternal::Instance*, const EncodingVersion&);
|
|
861
|
-
void initialize(IceInternal::Instance*, const EncodingVersion&);
|
|
862
|
-
|
|
863
|
-
// Optionals
|
|
864
|
-
bool writeOptImpl(Int, OptionalFormat);
|
|
865
|
-
/// \endcond
|
|
866
|
-
|
|
867
|
-
private:
|
|
868
|
-
|
|
869
|
-
//
|
|
870
|
-
// String
|
|
871
|
-
//
|
|
872
|
-
void writeConverted(const char*, size_t);
|
|
873
|
-
|
|
874
|
-
//
|
|
875
|
-
// We can't throw this exception from inline functions from within
|
|
876
|
-
// this file, because we cannot include the header with the
|
|
877
|
-
// exceptions. Doing so would screw up the whole include file
|
|
878
|
-
// ordering.
|
|
879
|
-
//
|
|
880
|
-
void throwEncapsulationException(const char*, int);
|
|
881
|
-
|
|
882
|
-
//
|
|
883
|
-
// Optimization. The instance may not be deleted while a
|
|
884
|
-
// stack-allocated stream still holds it.
|
|
885
|
-
//
|
|
886
|
-
IceInternal::Instance* _instance;
|
|
887
|
-
|
|
888
|
-
//
|
|
889
|
-
// The public stream API needs to attach data to a stream.
|
|
890
|
-
//
|
|
891
|
-
void* _closure;
|
|
892
|
-
|
|
893
|
-
class Encaps;
|
|
894
|
-
enum SliceType { NoSlice, ValueSlice, ExceptionSlice };
|
|
895
|
-
|
|
896
|
-
typedef std::vector<ValuePtr> ValueList;
|
|
897
|
-
|
|
898
|
-
class ICE_API EncapsEncoder : private ::IceUtil::noncopyable
|
|
899
|
-
{
|
|
900
|
-
public:
|
|
440
|
+
/// Writes a byte to the stream.
|
|
441
|
+
/// @param v The byte to marshal.
|
|
442
|
+
void write(std::uint8_t v) { b.push_back(std::byte{v}); }
|
|
901
443
|
|
|
902
|
-
|
|
444
|
+
/// Writes a boolean to the stream.
|
|
445
|
+
/// @param v The boolean to marshal.
|
|
446
|
+
void write(bool v) { b.push_back(static_cast<std::byte>(v)); }
|
|
903
447
|
|
|
904
|
-
|
|
905
|
-
|
|
448
|
+
/// Writes a boolean sequence to the stream.
|
|
449
|
+
/// @param v The sequence to be written.
|
|
450
|
+
void write(const std::vector<bool>& v);
|
|
906
451
|
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
virtual void endSlice() = 0;
|
|
452
|
+
/// Writes an int16_t as a Slice short.
|
|
453
|
+
/// @param v The int16_t to marshal.
|
|
454
|
+
void write(std::int16_t v);
|
|
911
455
|
|
|
912
|
-
|
|
456
|
+
/// Writes an int to the stream.
|
|
457
|
+
/// @param v The int to marshal.
|
|
458
|
+
void write(std::int32_t v) // Inlined for performance reasons.
|
|
913
459
|
{
|
|
914
|
-
|
|
460
|
+
Container::size_type position = b.size();
|
|
461
|
+
resize(position + sizeof(std::int32_t));
|
|
462
|
+
write(v, &b[position]);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/// Writes a long to the stream.
|
|
466
|
+
/// @param v The long to marshal.
|
|
467
|
+
void write(std::int64_t v);
|
|
468
|
+
|
|
469
|
+
/// Writes a float as a Slice float.
|
|
470
|
+
/// @param v The float to marshal.
|
|
471
|
+
void write(float v);
|
|
472
|
+
|
|
473
|
+
/// Writes a double as a Slice double.
|
|
474
|
+
/// @param v The double to marshal.
|
|
475
|
+
void write(double v);
|
|
476
|
+
|
|
477
|
+
/// Writes a wide string to the stream.
|
|
478
|
+
/// @param v The wide string to marshal.
|
|
479
|
+
void write(const std::wstring& v) { write(std::wstring_view(v)); }
|
|
480
|
+
|
|
481
|
+
/// Writes a wide string view to the stream.
|
|
482
|
+
/// @param v The wide string view to marshal.
|
|
483
|
+
void write(std::wstring_view v);
|
|
484
|
+
|
|
485
|
+
/// @endcond
|
|
486
|
+
|
|
487
|
+
/// Overwrites a 32-bit integer value at the given position in the stream.
|
|
488
|
+
/// This function does not change the stream's current position.
|
|
489
|
+
/// @param v The integer value to marshal.
|
|
490
|
+
/// @param dest The buffer destination for the integer value.
|
|
491
|
+
void write(std::int32_t v, Container::iterator dest);
|
|
492
|
+
|
|
493
|
+
/// Writes a byte sequence to the stream.
|
|
494
|
+
/// @param start The beginning of the sequence.
|
|
495
|
+
/// @param end The end of the sequence.
|
|
496
|
+
void write(const std::byte* start, const std::byte* end);
|
|
497
|
+
|
|
498
|
+
/// Writes a byte sequence to the stream.
|
|
499
|
+
/// @param start The beginning of the sequence.
|
|
500
|
+
/// @param end The end of the sequence.
|
|
501
|
+
void write(const std::uint8_t* start, const std::uint8_t* end);
|
|
502
|
+
|
|
503
|
+
/// Writes a boolean sequence to the stream.
|
|
504
|
+
/// @param begin The beginning of the sequence.
|
|
505
|
+
/// @param end The end of the sequence.
|
|
506
|
+
void write(const bool* begin, const bool* end);
|
|
507
|
+
|
|
508
|
+
/// Writes an int16_t sequence as a Slice short sequence.
|
|
509
|
+
/// @param begin The beginning of the sequence.
|
|
510
|
+
/// @param end The end of the sequence.
|
|
511
|
+
void write(const std::int16_t* begin, const std::int16_t* end);
|
|
512
|
+
|
|
513
|
+
/// Writes an int sequence to the stream.
|
|
514
|
+
/// @param begin The beginning of the sequence.
|
|
515
|
+
/// @param end The end of the sequence.
|
|
516
|
+
void write(const std::int32_t* begin, const std::int32_t* end);
|
|
517
|
+
|
|
518
|
+
/// Writes a long sequence to the stream.
|
|
519
|
+
/// @param begin The beginning of the sequence.
|
|
520
|
+
/// @param end The end of the sequence.
|
|
521
|
+
void write(const std::int64_t* begin, const std::int64_t* end);
|
|
522
|
+
|
|
523
|
+
/// Writes a float sequence as a Slice float sequence.
|
|
524
|
+
/// @param begin The beginning of the sequence.
|
|
525
|
+
/// @param end The end of the sequence.
|
|
526
|
+
void write(const float* begin, const float* end);
|
|
527
|
+
|
|
528
|
+
/// Writes a double sequence as a Slice double sequence.
|
|
529
|
+
/// @param begin The beginning of the sequence.
|
|
530
|
+
/// @param end The end of the sequence.
|
|
531
|
+
void write(const double* begin, const double* end);
|
|
532
|
+
|
|
533
|
+
/// Writes a string to the stream.
|
|
534
|
+
/// @param v The string to marshal.
|
|
535
|
+
/// @param convert `true` to process @p v through the narrow string converter (if not null), `false` to write
|
|
536
|
+
/// @p v as-is.
|
|
537
|
+
void write(const std::string& v, bool convert = true) { write(std::string_view(v), convert); }
|
|
538
|
+
|
|
539
|
+
/// Writes a string view to the stream.
|
|
540
|
+
/// @param v The string view to marshal.
|
|
541
|
+
/// @param convert `true` to process @p v through the narrow string converter (if not null), `false` to write
|
|
542
|
+
/// @p v as-is.
|
|
543
|
+
void write(std::string_view v, bool convert = true)
|
|
544
|
+
{
|
|
545
|
+
auto sz = static_cast<std::int32_t>(v.size());
|
|
546
|
+
if (convert && sz > 0)
|
|
547
|
+
{
|
|
548
|
+
writeConverted(v.data(), static_cast<size_t>(sz));
|
|
549
|
+
}
|
|
550
|
+
else
|
|
551
|
+
{
|
|
552
|
+
writeSize(sz);
|
|
553
|
+
if (sz > 0)
|
|
554
|
+
{
|
|
555
|
+
Container::size_type position = b.size();
|
|
556
|
+
resize(position + static_cast<size_t>(sz));
|
|
557
|
+
memcpy(&b[position], v.data(), static_cast<size_t>(sz));
|
|
558
|
+
}
|
|
559
|
+
}
|
|
915
560
|
}
|
|
916
561
|
|
|
917
|
-
|
|
562
|
+
/// Writes a string to the stream.
|
|
563
|
+
/// @param vdata The string to marshal.
|
|
564
|
+
/// @param vsize The size of the string.
|
|
565
|
+
/// @param convert `true` to process @p vdata through the narrow string converter (if not null), `false` to
|
|
566
|
+
/// write @p vdata as-is.
|
|
567
|
+
void write(const char* vdata, size_t vsize, bool convert = true)
|
|
918
568
|
{
|
|
569
|
+
auto sz = static_cast<std::int32_t>(vsize);
|
|
570
|
+
if (convert && sz > 0)
|
|
571
|
+
{
|
|
572
|
+
writeConverted(vdata, vsize);
|
|
573
|
+
}
|
|
574
|
+
else
|
|
575
|
+
{
|
|
576
|
+
writeSize(sz);
|
|
577
|
+
if (sz > 0)
|
|
578
|
+
{
|
|
579
|
+
Container::size_type position = b.size();
|
|
580
|
+
resize(position + static_cast<size_t>(sz));
|
|
581
|
+
memcpy(&b[position], vdata, vsize);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
919
584
|
}
|
|
920
585
|
|
|
921
|
-
|
|
586
|
+
/// Writes a string to the stream.
|
|
587
|
+
/// @param vdata The null-terminated string to marshal.
|
|
588
|
+
/// @param convert `true` to process @p vdata through the narrow string converter (if not null), `false` to
|
|
589
|
+
/// write @p vdata as-is.
|
|
590
|
+
void write(const char* vdata, bool convert = true) { write(vdata, strlen(vdata), convert); }
|
|
591
|
+
|
|
592
|
+
/// Writes a string sequence to the stream.
|
|
593
|
+
/// @param begin The beginning of the sequence.
|
|
594
|
+
/// @param end The end of the sequence.
|
|
595
|
+
/// @param convert `true` to process the strings through the narrow string converter (if not null), `false` to
|
|
596
|
+
/// write the strings as-is.
|
|
597
|
+
void write(const std::string* begin, const std::string* end, bool convert = true);
|
|
598
|
+
|
|
599
|
+
/// Writes a wide string sequence to the stream.
|
|
600
|
+
/// @param begin The beginning of the sequence.
|
|
601
|
+
/// @param end The end of the sequence.
|
|
602
|
+
void write(const std::wstring* begin, const std::wstring* end);
|
|
603
|
+
|
|
604
|
+
/// Writes a proxy to the stream.
|
|
605
|
+
/// @param v The proxy to be written.
|
|
606
|
+
void writeProxy(const ObjectPrx& v);
|
|
607
|
+
|
|
608
|
+
/// Writes a null proxy to the stream.
|
|
609
|
+
void writeNullProxy();
|
|
610
|
+
|
|
611
|
+
/// @cond INTERNAL
|
|
612
|
+
|
|
613
|
+
/// Writes a proxy to the stream.
|
|
614
|
+
/// @param v The proxy to marshal.
|
|
615
|
+
template<typename Prx, std::enable_if_t<std::is_base_of_v<ObjectPrx, Prx>, bool> = true>
|
|
616
|
+
void write(const std::optional<Prx>& v)
|
|
617
|
+
{
|
|
618
|
+
if (v)
|
|
619
|
+
{
|
|
620
|
+
writeProxy(v.value());
|
|
621
|
+
}
|
|
622
|
+
else
|
|
623
|
+
{
|
|
624
|
+
writeNullProxy();
|
|
625
|
+
}
|
|
626
|
+
}
|
|
922
627
|
|
|
923
|
-
|
|
628
|
+
/// Writes a value instance to the stream.
|
|
629
|
+
/// @param v The value to marshal.
|
|
630
|
+
template<typename T, std::enable_if_t<std::is_base_of_v<Value, T>>* = nullptr>
|
|
631
|
+
void write(const std::shared_ptr<T>& v)
|
|
924
632
|
{
|
|
633
|
+
initEncaps();
|
|
634
|
+
_currentEncaps->encoder->write(v);
|
|
925
635
|
}
|
|
926
636
|
|
|
927
|
-
|
|
637
|
+
/// @endcond
|
|
928
638
|
|
|
929
|
-
|
|
930
|
-
|
|
639
|
+
/// Writes an enumerator to the stream.
|
|
640
|
+
/// @param v The enumerator to marshal.
|
|
641
|
+
/// @param maxValue The maximum value of all enumerators in this enumeration.
|
|
642
|
+
void writeEnum(std::int32_t v, std::int32_t maxValue);
|
|
931
643
|
|
|
932
|
-
|
|
933
|
-
|
|
644
|
+
/// Writes a user exception to the stream.
|
|
645
|
+
/// @param v The exception to marshal.
|
|
646
|
+
void writeException(const UserException& v);
|
|
934
647
|
|
|
935
|
-
|
|
936
|
-
|
|
648
|
+
/// Gets the current position of the stream.
|
|
649
|
+
/// @return The current position.
|
|
650
|
+
size_type pos() { return b.size(); }
|
|
937
651
|
|
|
938
|
-
|
|
652
|
+
/// Overwrites a 32-bit integer value at the specified position in the stream. This function does not change the
|
|
653
|
+
/// stream's current position.
|
|
654
|
+
/// @param v The value to marshal.
|
|
655
|
+
/// @param pos The buffer position for the value.
|
|
656
|
+
void rewrite(std::int32_t v, size_type pos) { write(v, b.begin() + pos); }
|
|
939
657
|
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
};
|
|
658
|
+
/// Indicates that marshaling is complete. This function must only be called once.
|
|
659
|
+
/// @param[out] v Filled with a copy of the encoded data.
|
|
660
|
+
void finished(std::vector<std::byte>& v);
|
|
944
661
|
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
662
|
+
/// Indicates that marshaling is complete. This function must only be called once.
|
|
663
|
+
/// @return A pair of pointers into the internal marshaling buffer. These pointers are valid for the lifetime
|
|
664
|
+
/// of the stream.
|
|
665
|
+
std::pair<const std::byte*, const std::byte*> finished();
|
|
948
666
|
|
|
949
|
-
|
|
950
|
-
|
|
667
|
+
/// @private
|
|
668
|
+
OutputStream(IceInternal::Instance*, EncodingVersion encoding);
|
|
669
|
+
|
|
670
|
+
private:
|
|
671
|
+
// Optionals
|
|
672
|
+
bool writeOptImpl(std::int32_t, OptionalFormat);
|
|
673
|
+
|
|
674
|
+
//
|
|
675
|
+
// String
|
|
676
|
+
//
|
|
677
|
+
void writeConverted(const char*, size_t);
|
|
678
|
+
|
|
679
|
+
/// Writes a 1-byte size placeholder and returns its position; after writing the data, call
|
|
680
|
+
/// #endOneByteSize to patch the placeholder with the actual size at the given position.
|
|
681
|
+
/// @return The position of the 1-byte size placeholder.
|
|
682
|
+
size_type startOneByteSize()
|
|
951
683
|
{
|
|
684
|
+
size_type position = b.size();
|
|
685
|
+
write(std::uint8_t(0)); // placeholder
|
|
686
|
+
return position;
|
|
952
687
|
}
|
|
953
688
|
|
|
954
|
-
|
|
955
|
-
|
|
689
|
+
/// Updates the 1-byte size value at the given position. The new size is computed from the stream's current
|
|
690
|
+
/// position. The size must be <= 254.
|
|
691
|
+
/// @param position The position of the 1-byte size placeholder as returned by #startOneByteSize.
|
|
692
|
+
void endOneByteSize(size_type position)
|
|
693
|
+
{
|
|
694
|
+
auto size = static_cast<std::int32_t>(b.size() - position - 1);
|
|
695
|
+
assert(size >= 0 && size <= 254);
|
|
696
|
+
rewriteSize(size, b.begin() + position);
|
|
697
|
+
}
|
|
956
698
|
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
virtual void startSlice(const std::string&, int, bool);
|
|
960
|
-
virtual void endSlice();
|
|
699
|
+
StringConverterPtr _stringConverter;
|
|
700
|
+
WstringConverterPtr _wstringConverter;
|
|
961
701
|
|
|
962
|
-
|
|
702
|
+
//
|
|
703
|
+
// The public stream API needs to attach data to a stream.
|
|
704
|
+
//
|
|
705
|
+
void* _closure;
|
|
963
706
|
|
|
964
|
-
|
|
707
|
+
class Encaps;
|
|
708
|
+
enum SliceType
|
|
709
|
+
{
|
|
710
|
+
NoSlice,
|
|
711
|
+
ValueSlice,
|
|
712
|
+
ExceptionSlice
|
|
713
|
+
};
|
|
965
714
|
|
|
966
|
-
|
|
715
|
+
using ValueList = std::vector<ValuePtr>;
|
|
967
716
|
|
|
968
|
-
|
|
969
|
-
|
|
717
|
+
class ICE_API EncapsEncoder
|
|
718
|
+
{
|
|
719
|
+
public:
|
|
720
|
+
EncapsEncoder(const EncapsEncoder&) = delete;
|
|
721
|
+
virtual ~EncapsEncoder();
|
|
970
722
|
|
|
971
|
-
|
|
972
|
-
Container::size_type _writeSlice; // Position of the slice data members
|
|
723
|
+
EncapsEncoder& operator=(const EncapsEncoder&) = delete;
|
|
973
724
|
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
PtrToIndexMap _toBeMarshaledMap;
|
|
977
|
-
};
|
|
725
|
+
virtual void write(const ValuePtr&) = 0;
|
|
726
|
+
virtual void write(const UserException&) = 0;
|
|
978
727
|
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
728
|
+
virtual void startInstance(SliceType, const SlicedDataPtr&) = 0;
|
|
729
|
+
virtual void endInstance() = 0;
|
|
730
|
+
virtual void startSlice(std::string_view, int, bool) = 0;
|
|
731
|
+
virtual void endSlice() = 0;
|
|
732
|
+
|
|
733
|
+
virtual bool writeOptional(std::int32_t, OptionalFormat) { return false; }
|
|
734
|
+
|
|
735
|
+
virtual void writePendingValues() {}
|
|
736
|
+
|
|
737
|
+
protected:
|
|
738
|
+
EncapsEncoder(OutputStream* stream, Encaps* encaps) : _stream(stream), _encaps(encaps) {}
|
|
739
|
+
|
|
740
|
+
std::int32_t registerTypeId(std::string_view);
|
|
741
|
+
|
|
742
|
+
OutputStream* _stream;
|
|
743
|
+
Encaps* _encaps;
|
|
744
|
+
|
|
745
|
+
using PtrToIndexMap = std::map<ValuePtr, std::int32_t>;
|
|
746
|
+
using TypeIdMap = std::map<std::string, std::int32_t, std::less<>>;
|
|
747
|
+
|
|
748
|
+
// Encapsulation attributes for value marshaling.
|
|
749
|
+
PtrToIndexMap _marshaledMap;
|
|
750
|
+
|
|
751
|
+
private:
|
|
752
|
+
// Encapsulation attributes for value marshaling.
|
|
753
|
+
TypeIdMap _typeIdMap;
|
|
754
|
+
std::int32_t _typeIdIndex{0};
|
|
755
|
+
};
|
|
982
756
|
|
|
983
|
-
|
|
984
|
-
EncapsEncoder(stream, encaps), _preAllocatedInstanceData(0), _current(0), _valueIdIndex(1)
|
|
757
|
+
class ICE_API EncapsEncoder10 : public EncapsEncoder
|
|
985
758
|
{
|
|
986
|
-
|
|
759
|
+
public:
|
|
760
|
+
EncapsEncoder10(OutputStream* stream, Encaps* encaps) : EncapsEncoder(stream, encaps) {}
|
|
987
761
|
|
|
988
|
-
|
|
989
|
-
|
|
762
|
+
void write(const ValuePtr&) override;
|
|
763
|
+
void write(const UserException&) override;
|
|
990
764
|
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
765
|
+
void startInstance(SliceType, const SlicedDataPtr&) override;
|
|
766
|
+
void endInstance() override;
|
|
767
|
+
void startSlice(std::string_view, int, bool) override;
|
|
768
|
+
void endSlice() override;
|
|
995
769
|
|
|
996
|
-
|
|
770
|
+
void writePendingValues() override;
|
|
997
771
|
|
|
998
|
-
|
|
772
|
+
private:
|
|
773
|
+
std::int32_t registerValue(const ValuePtr&);
|
|
999
774
|
|
|
1000
|
-
|
|
1001
|
-
|
|
775
|
+
// Instance attributes
|
|
776
|
+
SliceType _sliceType{NoSlice};
|
|
1002
777
|
|
|
1003
|
-
|
|
778
|
+
// Slice attributes
|
|
779
|
+
Container::size_type _writeSlice{0}; // Position of the slice data members
|
|
780
|
+
|
|
781
|
+
// Encapsulation attributes for value marshaling.
|
|
782
|
+
std::int32_t _valueIdIndex{0};
|
|
783
|
+
PtrToIndexMap _toBeMarshaledMap;
|
|
784
|
+
};
|
|
785
|
+
|
|
786
|
+
class ICE_API EncapsEncoder11 : public EncapsEncoder
|
|
1004
787
|
{
|
|
1005
|
-
|
|
788
|
+
public:
|
|
789
|
+
EncapsEncoder11(OutputStream* stream, Encaps* encaps)
|
|
790
|
+
: EncapsEncoder(stream, encaps),
|
|
791
|
+
_preAllocatedInstanceData(nullptr)
|
|
1006
792
|
{
|
|
1007
|
-
if(previous)
|
|
1008
|
-
{
|
|
1009
|
-
previous->next = this;
|
|
1010
|
-
}
|
|
1011
793
|
}
|
|
1012
794
|
|
|
1013
|
-
|
|
795
|
+
void write(const ValuePtr&) override;
|
|
796
|
+
void write(const UserException&) override;
|
|
797
|
+
|
|
798
|
+
void startInstance(SliceType, const SlicedDataPtr&) override;
|
|
799
|
+
void endInstance() override;
|
|
800
|
+
void startSlice(std::string_view, int, bool) override;
|
|
801
|
+
void endSlice() override;
|
|
802
|
+
|
|
803
|
+
bool writeOptional(std::int32_t, OptionalFormat) override;
|
|
804
|
+
|
|
805
|
+
private:
|
|
806
|
+
void writeSlicedData(const SlicedDataPtr&);
|
|
807
|
+
void writeInstance(const ValuePtr&);
|
|
808
|
+
|
|
809
|
+
struct InstanceData
|
|
1014
810
|
{
|
|
1015
|
-
|
|
811
|
+
InstanceData(InstanceData* p) : previous(p)
|
|
1016
812
|
{
|
|
1017
|
-
|
|
813
|
+
if (previous)
|
|
814
|
+
{
|
|
815
|
+
previous->next = this;
|
|
816
|
+
}
|
|
1018
817
|
}
|
|
1019
|
-
}
|
|
1020
818
|
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
819
|
+
~InstanceData()
|
|
820
|
+
{
|
|
821
|
+
if (next)
|
|
822
|
+
{
|
|
823
|
+
delete next;
|
|
824
|
+
}
|
|
825
|
+
}
|
|
1024
826
|
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
Container::size_type sliceFlagsPos; // Position of the slice flags
|
|
1029
|
-
PtrToIndexMap indirectionMap;
|
|
1030
|
-
ValueList indirectionTable;
|
|
1031
|
-
|
|
1032
|
-
InstanceData* previous;
|
|
1033
|
-
InstanceData* next;
|
|
1034
|
-
};
|
|
1035
|
-
InstanceData _preAllocatedInstanceData;
|
|
1036
|
-
InstanceData* _current;
|
|
827
|
+
// Instance attributes
|
|
828
|
+
SliceType sliceType{NoSlice};
|
|
829
|
+
bool firstSlice{false};
|
|
1037
830
|
|
|
1038
|
-
|
|
1039
|
-
|
|
831
|
+
// Slice attributes
|
|
832
|
+
std::uint8_t sliceFlags{0};
|
|
833
|
+
Container::size_type writeSlice{0}; // Position of the slice data members
|
|
834
|
+
Container::size_type sliceFlagsPos{0}; // Position of the slice flags
|
|
835
|
+
PtrToIndexMap indirectionMap;
|
|
836
|
+
ValueList indirectionTable;
|
|
1040
837
|
|
|
1041
|
-
|
|
1042
|
-
|
|
838
|
+
InstanceData* previous{nullptr};
|
|
839
|
+
InstanceData* next{nullptr};
|
|
840
|
+
};
|
|
841
|
+
InstanceData _preAllocatedInstanceData;
|
|
842
|
+
InstanceData* _current{nullptr};
|
|
1043
843
|
|
|
1044
|
-
|
|
844
|
+
std::int32_t _valueIdIndex{1}; // The ID of the next value to marshal
|
|
845
|
+
};
|
|
1045
846
|
|
|
1046
|
-
Encaps
|
|
847
|
+
class Encaps
|
|
1047
848
|
{
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
delete encoder;
|
|
1054
|
-
}
|
|
1055
|
-
void reset()
|
|
1056
|
-
{
|
|
1057
|
-
// Inlined for performance reasons.
|
|
1058
|
-
delete encoder;
|
|
1059
|
-
encoder = 0;
|
|
849
|
+
public:
|
|
850
|
+
Encaps() = default;
|
|
851
|
+
Encaps(const Encaps&) = delete;
|
|
852
|
+
~Encaps() { delete encoder; }
|
|
853
|
+
Encaps& operator=(const Encaps&) = delete;
|
|
1060
854
|
|
|
1061
|
-
|
|
1062
|
-
|
|
855
|
+
void reset()
|
|
856
|
+
{
|
|
857
|
+
// Inlined for performance reasons.
|
|
858
|
+
delete encoder;
|
|
859
|
+
encoder = nullptr;
|
|
1063
860
|
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
FormatType format;
|
|
861
|
+
previous = nullptr;
|
|
862
|
+
}
|
|
1067
863
|
|
|
1068
|
-
|
|
864
|
+
Container::size_type start;
|
|
865
|
+
EncodingVersion encoding;
|
|
866
|
+
FormatType format{FormatType::CompactFormat};
|
|
1069
867
|
|
|
1070
|
-
|
|
1071
|
-
};
|
|
868
|
+
EncapsEncoder* encoder{nullptr};
|
|
1072
869
|
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
870
|
+
Encaps* previous{nullptr};
|
|
871
|
+
};
|
|
872
|
+
|
|
873
|
+
//
|
|
874
|
+
// The encoding version to use when there's no encapsulation to
|
|
875
|
+
// read from or write to. This is for example used to read message
|
|
876
|
+
// headers or when the user is using the streaming API with no
|
|
877
|
+
// encapsulation.
|
|
878
|
+
//
|
|
879
|
+
EncodingVersion _encoding;
|
|
1080
880
|
|
|
1081
|
-
|
|
881
|
+
FormatType _format; // TODO: make it const
|
|
1082
882
|
|
|
1083
|
-
|
|
883
|
+
Encaps* _currentEncaps;
|
|
1084
884
|
|
|
1085
|
-
|
|
885
|
+
void initEncaps();
|
|
1086
886
|
|
|
1087
|
-
|
|
1088
|
-
};
|
|
887
|
+
Encaps _preAllocatedEncaps;
|
|
888
|
+
};
|
|
1089
889
|
|
|
1090
890
|
} // End namespace Ice
|
|
1091
891
|
|