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,1190 +1,652 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
|
-
//
|
|
1
|
+
// Copyright (c) ZeroC, Inc.
|
|
4
2
|
|
|
5
3
|
#ifndef ICE_STREAM_HELPERS_H
|
|
6
4
|
#define ICE_STREAM_HELPERS_H
|
|
7
5
|
|
|
8
|
-
#include
|
|
9
|
-
|
|
10
|
-
#
|
|
11
|
-
|
|
12
|
-
#
|
|
6
|
+
#include "InputStream.h"
|
|
7
|
+
#include "OutputStream.h"
|
|
8
|
+
#include "StringConverter.h"
|
|
9
|
+
|
|
10
|
+
#include <iterator>
|
|
11
|
+
#include <ostream>
|
|
12
|
+
|
|
13
|
+
#if defined(_MSC_VER)
|
|
14
|
+
// With MSVC, __has_include(<span>) evaluates to 1 in c++17 mode and the <span> header then issues a warning that can't
|
|
15
|
+
// be disabled. This is a permissible but impractical behavior. See https://github.com/microsoft/STL/issues/4010.
|
|
16
|
+
# if _MSVC_LANG >= 202002L
|
|
17
|
+
# include <span>
|
|
18
|
+
# endif
|
|
19
|
+
#elif __has_include(<span>)
|
|
20
|
+
# include <span>
|
|
13
21
|
#endif
|
|
14
22
|
|
|
15
23
|
namespace Ice
|
|
16
24
|
{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
#ifdef ICE_CPP11_MAPPING
|
|
55
|
-
enum class OptionalFormat : unsigned char
|
|
56
|
-
{
|
|
57
|
-
/** Fixed 1-byte encoding. */
|
|
58
|
-
F1 = 0,
|
|
59
|
-
/** Fixed 2-byte encoding. */
|
|
60
|
-
F2 = 1,
|
|
61
|
-
/** Fixed 4-byte encoding. */
|
|
62
|
-
F4 = 2,
|
|
63
|
-
/** Fixed 8-byte encoding. */
|
|
64
|
-
F8 = 3,
|
|
65
|
-
/** "Size encoding" using 1 to 5 bytes, e.g., enum, class identifier. */
|
|
66
|
-
Size = 4,
|
|
67
|
-
/**
|
|
68
|
-
* "Size encoding" using 1 to 5 bytes followed by data, e.g., string, fixed size
|
|
69
|
-
* struct, or containers whose size can be computed prior to marshaling.
|
|
70
|
-
*/
|
|
71
|
-
VSize = 5,
|
|
72
|
-
/** Fixed size using 4 bytes followed by data, e.g., variable-size struct, container. */
|
|
73
|
-
FSize = 6,
|
|
74
|
-
/** Class instance. */
|
|
75
|
-
Class = 7
|
|
76
|
-
};
|
|
77
|
-
#else
|
|
78
|
-
enum OptionalFormat
|
|
79
|
-
{
|
|
80
|
-
/** Fixed 1-byte encoding. */
|
|
81
|
-
OptionalFormatF1 = 0,
|
|
82
|
-
/** Fixed 2-byte encoding. */
|
|
83
|
-
OptionalFormatF2 = 1,
|
|
84
|
-
/** Fixed 4-byte encoding. */
|
|
85
|
-
OptionalFormatF4 = 2,
|
|
86
|
-
/** Fixed 8-byte encoding. */
|
|
87
|
-
OptionalFormatF8 = 3,
|
|
88
|
-
/** "Size encoding" using 1 to 5 bytes, e.g., enum, class identifier. */
|
|
89
|
-
OptionalFormatSize = 4,
|
|
90
|
-
/**
|
|
91
|
-
* "Size encoding" using 1 to 5 bytes followed by data, e.g., string, fixed size
|
|
92
|
-
* struct, or containers whose size can be computed prior to marshaling.
|
|
93
|
-
*/
|
|
94
|
-
OptionalFormatVSize = 5,
|
|
95
|
-
/** Fixed size using 4 bytes followed by data, e.g., variable-size struct, container. */
|
|
96
|
-
OptionalFormatFSize = 6,
|
|
97
|
-
/** Class instance. */
|
|
98
|
-
OptionalFormatClass = 7
|
|
99
|
-
};
|
|
25
|
+
// StreamHelper templates used by streams to read, write and print data.
|
|
26
|
+
|
|
27
|
+
#ifdef ICE_DOXYGEN
|
|
28
|
+
/// Prints a value to a stream.
|
|
29
|
+
/// @tparam T The type of the value. It's either built-in Slice type or a type generated by the Slice compiler.
|
|
30
|
+
/// @param stream The stream.
|
|
31
|
+
/// @param v The value to print.
|
|
32
|
+
/// @remarks Depending on the type, @p v is passed by value or by const reference.
|
|
33
|
+
template<typename T> void print(std::ostream& stream, T v);
|
|
34
|
+
|
|
35
|
+
// We only provide this declaration for Doxygen. This template is specialized for all types that we support, and
|
|
36
|
+
// we want the compilation (not linking) to fail if a specialization is missing.
|
|
37
|
+
|
|
38
|
+
/// A helper template class for writing (marshaling) and reading (unmarshaling) values to and from a stream of
|
|
39
|
+
/// Slice-encoded bytes. This helper also prints Slice-defined types.
|
|
40
|
+
/// @tparam T The type of the value.
|
|
41
|
+
/// @tparam st The stream helper category.
|
|
42
|
+
/// @headerfile Ice/Ice.h
|
|
43
|
+
template<typename T, StreamHelperCategory st> struct StreamHelper
|
|
44
|
+
{
|
|
45
|
+
/// Writes a value to the stream.
|
|
46
|
+
/// @param stream The stream.
|
|
47
|
+
/// @param v The value to write.
|
|
48
|
+
/// @remark Each specialization chooses whether @p v is passed by value or by const reference.
|
|
49
|
+
static void write(OutputStream* stream, T v);
|
|
50
|
+
|
|
51
|
+
/// Reads a value from the stream.
|
|
52
|
+
/// @param stream The stream.
|
|
53
|
+
/// @param[out] v A reference to the value to read into.
|
|
54
|
+
static void read(InputStream* stream, T& v);
|
|
55
|
+
|
|
56
|
+
/// Prints a value to the stream.
|
|
57
|
+
/// @param stream The stream.
|
|
58
|
+
/// @param v The value to print.
|
|
59
|
+
/// @remark Each specialization chooses whether @p v is passed by value or by const reference.
|
|
60
|
+
static void print(std::ostream& stream, T v);
|
|
61
|
+
};
|
|
100
62
|
#endif
|
|
101
63
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
64
|
+
/// @cond INTERNAL
|
|
65
|
+
|
|
66
|
+
/// Prints a value with a pass-by-value type (such as `bool`, `int32`, or an enumeration) to a stream.
|
|
67
|
+
/// @tparam T The type of the value.
|
|
68
|
+
/// @param stream The stream.
|
|
69
|
+
/// @param v The value to print.
|
|
70
|
+
template<
|
|
71
|
+
typename T,
|
|
72
|
+
std::enable_if_t<
|
|
73
|
+
StreamableTraits<T>::helper == StreamHelperCategoryBuiltinValue ||
|
|
74
|
+
StreamableTraits<T>::helper == StreamHelperCategoryEnum,
|
|
75
|
+
bool> = true>
|
|
76
|
+
inline void print(std::ostream& stream, T v)
|
|
77
|
+
{
|
|
78
|
+
StreamHelper<T, StreamHelperCategoryBuiltinValue>::print(stream, v);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/// Prints an optional value with a pass-by-value type (such as `bool`, `int32`, or an enumeration) to a stream.
|
|
82
|
+
/// @tparam T The type of the value.
|
|
83
|
+
/// @param stream The stream.
|
|
84
|
+
/// @param v The value to print. nullopt is printed as "nullopt".
|
|
85
|
+
template<
|
|
86
|
+
typename T,
|
|
87
|
+
std::enable_if_t<
|
|
88
|
+
StreamableTraits<T>::helper == StreamHelperCategoryBuiltinValue ||
|
|
89
|
+
StreamableTraits<T>::helper == StreamHelperCategoryEnum,
|
|
90
|
+
bool> = true>
|
|
91
|
+
inline void print(std::ostream& stream, std::optional<T> v)
|
|
92
|
+
{
|
|
93
|
+
if (v)
|
|
94
|
+
{
|
|
95
|
+
Ice::print(stream, *v);
|
|
96
|
+
}
|
|
97
|
+
else
|
|
98
|
+
{
|
|
99
|
+
stream << "nullopt";
|
|
100
|
+
}
|
|
101
|
+
}
|
|
132
102
|
|
|
133
|
-
|
|
134
|
-
|
|
103
|
+
/// Prints a value with a pass-by-const-reference type to the stream.
|
|
104
|
+
/// @tparam T The type of the value.
|
|
105
|
+
/// @param stream The stream.
|
|
106
|
+
/// @param v The value to print.
|
|
107
|
+
template<
|
|
108
|
+
typename T,
|
|
109
|
+
std::enable_if_t<
|
|
110
|
+
StreamableTraits<T>::helper != StreamHelperCategoryBuiltinValue &&
|
|
111
|
+
StreamableTraits<T>::helper != StreamHelperCategoryEnum,
|
|
112
|
+
bool> = true>
|
|
113
|
+
inline void print(std::ostream& stream, const T& v)
|
|
114
|
+
{
|
|
115
|
+
StreamHelper<T, StreamableTraits<T>::helper>::print(stream, v);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/// Prints an optional value with a pass-by-const-reference type to the stream.
|
|
119
|
+
/// @tparam T The type of the value.
|
|
120
|
+
/// @param stream The stream.
|
|
121
|
+
/// @param v The value to print. nullopt is printed as "nullopt".
|
|
122
|
+
template<
|
|
123
|
+
typename T,
|
|
124
|
+
std::enable_if_t<
|
|
125
|
+
StreamableTraits<T>::helper != StreamHelperCategoryBuiltinValue &&
|
|
126
|
+
StreamableTraits<T>::helper != StreamHelperCategoryEnum &&
|
|
127
|
+
StreamableTraits<std::optional<T>>::helper != StreamHelperCategoryProxy,
|
|
128
|
+
bool> = true>
|
|
129
|
+
inline void print(std::ostream& stream, const std::optional<T>& v)
|
|
130
|
+
{
|
|
131
|
+
if (v)
|
|
132
|
+
{
|
|
133
|
+
Ice::print(stream, *v);
|
|
134
|
+
}
|
|
135
|
+
else
|
|
136
|
+
{
|
|
137
|
+
stream << "nullopt";
|
|
138
|
+
}
|
|
139
|
+
}
|
|
135
140
|
|
|
136
|
-
|
|
141
|
+
template<typename T> struct StreamHelper<T, StreamHelperCategoryBuiltinValue>
|
|
142
|
+
{
|
|
143
|
+
static void write(OutputStream* stream, T v) { stream->write(v); }
|
|
137
144
|
|
|
138
|
-
|
|
139
|
-
* Base traits template. Types with no specialized trait use this trait.
|
|
140
|
-
* \headerfile Ice/Ice.h
|
|
141
|
-
*/
|
|
142
|
-
template<typename T, typename Enabler = void>
|
|
143
|
-
struct StreamableTraits
|
|
144
|
-
{
|
|
145
|
-
static const StreamHelperCategory helper = StreamHelperCategoryUnknown;
|
|
145
|
+
static void read(InputStream* stream, T& v) { stream->read(v); }
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
// stream has at least StreamableTraits<T>::minWireSize * size bytes
|
|
150
|
-
// For containers, the minWireSize is 1 (just 1 byte for an empty container).
|
|
151
|
-
//
|
|
152
|
-
//static const int minWireSize = 1;
|
|
147
|
+
static void print(std::ostream& stream, T v) { stream << v; }
|
|
148
|
+
};
|
|
153
149
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
//static const bool fixedLength = false;
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Specialization for sequence and dictionary types.
|
|
163
|
-
* \headerfile Ice/Ice.h
|
|
164
|
-
*/
|
|
165
|
-
template<typename T>
|
|
166
|
-
struct StreamableTraits<T, typename ::std::enable_if<IsMap<T>::value || IsContainer<T>::value>::type>
|
|
167
|
-
{
|
|
168
|
-
static const StreamHelperCategory helper = IsMap<T>::value ? StreamHelperCategoryDictionary : StreamHelperCategorySequence;
|
|
169
|
-
static const int minWireSize = 1;
|
|
170
|
-
static const bool fixedLength = false;
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Specialization for exceptions.
|
|
175
|
-
* \headerfile Ice/Ice.h
|
|
176
|
-
*/
|
|
177
|
-
template<typename T>
|
|
178
|
-
struct StreamableTraits<T, typename ::std::enable_if<::std::is_base_of<::Ice::UserException, T>::value>::type>
|
|
179
|
-
{
|
|
180
|
-
static const StreamHelperCategory helper = StreamHelperCategoryUserException;
|
|
150
|
+
template<> struct StreamHelper<bool, StreamHelperCategoryBuiltinValue>
|
|
151
|
+
{
|
|
152
|
+
static void print(std::ostream& stream, bool v) { stream << (v ? "true" : "false"); }
|
|
153
|
+
};
|
|
181
154
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Specialization for arrays (std::pair<const T*, const T*>).
|
|
190
|
-
* \headerfile Ice/Ice.h
|
|
191
|
-
*/
|
|
192
|
-
template<typename T>
|
|
193
|
-
struct StreamableTraits<std::pair<T*, T*>>
|
|
194
|
-
{
|
|
195
|
-
static const StreamHelperCategory helper = StreamHelperCategorySequence;
|
|
196
|
-
static const int minWireSize = 1;
|
|
197
|
-
static const bool fixedLength = false;
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
#else
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Base traits template. Types with no specialized trait use this trait, including sequence and
|
|
204
|
-
* dictionary types.
|
|
205
|
-
* \headerfile Ice/Ice.h
|
|
206
|
-
*/
|
|
207
|
-
template<typename T, typename Enabler = void>
|
|
208
|
-
struct StreamableTraits
|
|
209
|
-
{
|
|
210
|
-
static const StreamHelperCategory helper = IsMap<T>::value ? StreamHelperCategoryDictionary :
|
|
211
|
-
(IsContainer<T>::value ? StreamHelperCategorySequence : StreamHelperCategoryUnknown);
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* When extracting a sequence<T> from a stream, we can ensure the
|
|
215
|
-
* stream has at least StreamableTraits<T>::minWireSize * size bytes.
|
|
216
|
-
* For containers, the minWireSize is 1 (just 1 byte for an empty container).
|
|
217
|
-
*/
|
|
218
|
-
static const int minWireSize = 1;
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Is this type encoded on a fixed number of bytes?
|
|
222
|
-
* Used only for marshaling/unmarshaling optional data members and parameters.
|
|
223
|
-
*/
|
|
224
|
-
static const bool fixedLength = false;
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Specialization for exceptions.
|
|
229
|
-
* \headerfile Ice/Ice.h
|
|
230
|
-
*/
|
|
231
|
-
template<>
|
|
232
|
-
struct StreamableTraits<UserException>
|
|
233
|
-
{
|
|
234
|
-
static const StreamHelperCategory helper = StreamHelperCategoryUserException;
|
|
155
|
+
template<> struct StreamHelper<std::uint8_t, StreamHelperCategoryBuiltinValue>
|
|
156
|
+
{
|
|
157
|
+
static void print(std::ostream& stream, std::uint8_t v) { stream << static_cast<int>(v); }
|
|
158
|
+
};
|
|
235
159
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
};
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Specialization for array / range mapped sequences. The type can be a std::pair<T, T> or a
|
|
244
|
-
* std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> >.
|
|
245
|
-
* \headerfile Ice/Ice.h
|
|
246
|
-
*/
|
|
247
|
-
template<typename T, typename U>
|
|
248
|
-
struct StreamableTraits< ::std::pair<T, U> >
|
|
249
|
-
{
|
|
250
|
-
static const StreamHelperCategory helper = StreamHelperCategorySequence;
|
|
251
|
-
static const int minWireSize = 1;
|
|
252
|
-
static const bool fixedLength = false;
|
|
253
|
-
};
|
|
254
|
-
#endif
|
|
160
|
+
template<> struct StreamHelper<std::byte, StreamHelperCategoryBuiltinValue>
|
|
161
|
+
{
|
|
162
|
+
static void print(std::ostream& stream, std::byte v) { stream << static_cast<int>(v); }
|
|
163
|
+
};
|
|
255
164
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
*
|
|
259
|
-
* \headerfile Ice/Ice.h
|
|
260
|
-
*/
|
|
261
|
-
template<>
|
|
262
|
-
struct StreamableTraits<bool>
|
|
263
|
-
{
|
|
264
|
-
static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
|
|
265
|
-
static const int minWireSize = 1;
|
|
266
|
-
static const bool fixedLength = true;
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Specialization for built-in type (this is needed for sequence
|
|
271
|
-
* marshaling to figure out the minWireSize of each type).
|
|
272
|
-
* \headerfile Ice/Ice.h
|
|
273
|
-
*/
|
|
274
|
-
template<>
|
|
275
|
-
struct StreamableTraits<Byte>
|
|
276
|
-
{
|
|
277
|
-
static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
|
|
278
|
-
static const int minWireSize = 1;
|
|
279
|
-
static const bool fixedLength = true;
|
|
280
|
-
};
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Specialization for built-in type (this is needed for sequence
|
|
284
|
-
* marshaling to figure out the minWireSize of each type).
|
|
285
|
-
* \headerfile Ice/Ice.h
|
|
286
|
-
*/
|
|
287
|
-
template<>
|
|
288
|
-
struct StreamableTraits<Short>
|
|
289
|
-
{
|
|
290
|
-
static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
|
|
291
|
-
static const int minWireSize = 2;
|
|
292
|
-
static const bool fixedLength = true;
|
|
293
|
-
};
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* Specialization for built-in type (this is needed for sequence
|
|
297
|
-
* marshaling to figure out the minWireSize of each type).
|
|
298
|
-
* \headerfile Ice/Ice.h
|
|
299
|
-
*/
|
|
300
|
-
template<>
|
|
301
|
-
struct StreamableTraits<Int>
|
|
302
|
-
{
|
|
303
|
-
static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
|
|
304
|
-
static const int minWireSize = 4;
|
|
305
|
-
static const bool fixedLength = true;
|
|
306
|
-
};
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
* Specialization for built-in type (this is needed for sequence
|
|
310
|
-
* marshaling to figure out the minWireSize of each type).
|
|
311
|
-
* \headerfile Ice/Ice.h
|
|
312
|
-
*/
|
|
313
|
-
template<>
|
|
314
|
-
struct StreamableTraits<Long>
|
|
315
|
-
{
|
|
316
|
-
static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
|
|
317
|
-
static const int minWireSize = 8;
|
|
318
|
-
static const bool fixedLength = true;
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Specialization for built-in type (this is needed for sequence
|
|
323
|
-
* marshaling to figure out the minWireSize of each type).
|
|
324
|
-
* \headerfile Ice/Ice.h
|
|
325
|
-
*/
|
|
326
|
-
template<>
|
|
327
|
-
struct StreamableTraits<Float>
|
|
328
|
-
{
|
|
329
|
-
static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
|
|
330
|
-
static const int minWireSize = 4;
|
|
331
|
-
static const bool fixedLength = true;
|
|
332
|
-
};
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* Specialization for built-in type (this is needed for sequence
|
|
336
|
-
* marshaling to figure out the minWireSize of each type).
|
|
337
|
-
* \headerfile Ice/Ice.h
|
|
338
|
-
*/
|
|
339
|
-
template<>
|
|
340
|
-
struct StreamableTraits<Double>
|
|
341
|
-
{
|
|
342
|
-
static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
|
|
343
|
-
static const int minWireSize = 8;
|
|
344
|
-
static const bool fixedLength = true;
|
|
345
|
-
};
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* Specialization for built-in type (this is needed for sequence
|
|
349
|
-
* marshaling to figure out the minWireSize of each type).
|
|
350
|
-
* \headerfile Ice/Ice.h
|
|
351
|
-
*/
|
|
352
|
-
template<>
|
|
353
|
-
struct StreamableTraits< ::std::string>
|
|
354
|
-
{
|
|
355
|
-
static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
|
|
356
|
-
static const int minWireSize = 1;
|
|
357
|
-
static const bool fixedLength = false;
|
|
358
|
-
};
|
|
359
|
-
|
|
360
|
-
/**
|
|
361
|
-
* Specialization for built-in type (this is needed for sequence
|
|
362
|
-
* marshaling to figure out the minWireSize of each type).
|
|
363
|
-
* \headerfile Ice/Ice.h
|
|
364
|
-
*/
|
|
365
|
-
template<>
|
|
366
|
-
struct StreamableTraits< ::std::wstring>
|
|
367
|
-
{
|
|
368
|
-
static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
|
|
369
|
-
static const int minWireSize = 1;
|
|
370
|
-
static const bool fixedLength = false;
|
|
371
|
-
};
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* vector<bool> is a special type in C++: the streams handle it like a built-in type.
|
|
375
|
-
* \headerfile Ice/Ice.h
|
|
376
|
-
*/
|
|
377
|
-
template<>
|
|
378
|
-
struct StreamableTraits< ::std::vector<bool> >
|
|
379
|
-
{
|
|
380
|
-
static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
|
|
381
|
-
static const int minWireSize = 1;
|
|
382
|
-
static const bool fixedLength = false;
|
|
383
|
-
};
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* Specialization for proxy types.
|
|
387
|
-
* \headerfile Ice/Ice.h
|
|
388
|
-
*/
|
|
389
|
-
#ifdef ICE_CPP11_MAPPING
|
|
390
|
-
template<typename T>
|
|
391
|
-
struct StreamableTraits<::std::shared_ptr<T>, typename ::std::enable_if<::std::is_base_of<::Ice::ObjectPrx, T>::value>::type>
|
|
392
|
-
{
|
|
393
|
-
static const StreamHelperCategory helper = StreamHelperCategoryProxy;
|
|
394
|
-
static const int minWireSize = 2;
|
|
395
|
-
static const bool fixedLength = false;
|
|
396
|
-
};
|
|
397
|
-
#else
|
|
398
|
-
template<typename T>
|
|
399
|
-
struct StreamableTraits< ::IceInternal::ProxyHandle<T> >
|
|
400
|
-
{
|
|
401
|
-
static const StreamHelperCategory helper = StreamHelperCategoryProxy;
|
|
402
|
-
static const int minWireSize = 2;
|
|
403
|
-
static const bool fixedLength = false;
|
|
404
|
-
};
|
|
405
|
-
#endif
|
|
165
|
+
template<> struct StreamHelper<std::string_view, StreamHelperCategoryBuiltinValue>
|
|
166
|
+
{
|
|
167
|
+
static void write(OutputStream* stream, std::string_view v) { stream->write(v); }
|
|
406
168
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
*/
|
|
411
|
-
#ifdef ICE_CPP11_MAPPING
|
|
412
|
-
template<typename T>
|
|
413
|
-
struct StreamableTraits<::std::shared_ptr<T>, typename ::std::enable_if<::std::is_base_of<::Ice::Value, T>::value>::type>
|
|
414
|
-
{
|
|
415
|
-
static const StreamHelperCategory helper = StreamHelperCategoryClass;
|
|
416
|
-
static const int minWireSize = 1;
|
|
417
|
-
static const bool fixedLength = false;
|
|
418
|
-
};
|
|
419
|
-
#else
|
|
420
|
-
template<typename T>
|
|
421
|
-
struct StreamableTraits< ::IceInternal::Handle<T> >
|
|
422
|
-
{
|
|
423
|
-
static const StreamHelperCategory helper = StreamHelperCategoryClass;
|
|
424
|
-
static const int minWireSize = 1;
|
|
425
|
-
static const bool fixedLength = false;
|
|
426
|
-
};
|
|
427
|
-
#endif
|
|
169
|
+
// No read: we marshal string views but unmarshal strings.
|
|
170
|
+
// No print: we only print fields.
|
|
171
|
+
};
|
|
428
172
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
173
|
+
template<> struct StreamHelper<std::wstring_view, StreamHelperCategoryBuiltinValue>
|
|
174
|
+
{
|
|
175
|
+
static void write(OutputStream* stream, std::wstring_view v) { stream->write(v); }
|
|
432
176
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
177
|
+
// No read: we marshal wstring views but don't unmarshal wstrings.
|
|
178
|
+
// No print: we only print fields.
|
|
179
|
+
};
|
|
436
180
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
* \headerfile Ice/Ice.h
|
|
440
|
-
*/
|
|
441
|
-
template<typename T>
|
|
442
|
-
struct StreamHelper<T, StreamHelperCategoryBuiltin>
|
|
443
|
-
{
|
|
444
|
-
template<class S> static inline void
|
|
445
|
-
write(S* stream, const T& v)
|
|
181
|
+
/// Helper for built-in types that are not passed by value.
|
|
182
|
+
template<typename T> struct StreamHelper<T, StreamHelperCategoryBuiltin>
|
|
446
183
|
{
|
|
447
|
-
stream->write(v);
|
|
448
|
-
}
|
|
184
|
+
static void write(OutputStream* stream, const T& v) { stream->write(v); }
|
|
449
185
|
|
|
450
|
-
|
|
451
|
-
read(S* stream, T& v)
|
|
452
|
-
{
|
|
453
|
-
stream->read(v);
|
|
454
|
-
}
|
|
455
|
-
};
|
|
456
|
-
|
|
457
|
-
//
|
|
458
|
-
// "helpers" for the StreamHelper<T, StreamHelperCategoryStruct[Class]> below
|
|
459
|
-
// slice2cpp generates specializations as needed
|
|
460
|
-
//
|
|
461
|
-
|
|
462
|
-
/**
|
|
463
|
-
* General writer. slice2cpp generates specializations as needed.
|
|
464
|
-
* \headerfile Ice/Ice.h
|
|
465
|
-
*/
|
|
466
|
-
template<typename T, typename S>
|
|
467
|
-
struct StreamWriter
|
|
468
|
-
{
|
|
469
|
-
#ifdef ICE_CPP11_MAPPING
|
|
470
|
-
static inline void write(S* stream, const T& v)
|
|
471
|
-
{
|
|
472
|
-
stream->writeAll(v.ice_tuple());
|
|
473
|
-
}
|
|
474
|
-
#else
|
|
475
|
-
static inline void write(S*, const T&)
|
|
476
|
-
{
|
|
477
|
-
// Default is to write nothing for C++98
|
|
478
|
-
}
|
|
479
|
-
#endif
|
|
480
|
-
};
|
|
481
|
-
|
|
482
|
-
/**
|
|
483
|
-
* General reader. slice2cpp generates specializations as needed.
|
|
484
|
-
* \headerfile Ice/Ice.h
|
|
485
|
-
*/
|
|
486
|
-
template<typename T, typename S>
|
|
487
|
-
struct StreamReader
|
|
488
|
-
{
|
|
489
|
-
static inline void read(S*, T&)
|
|
490
|
-
{
|
|
491
|
-
// Default is to read nothing
|
|
492
|
-
}
|
|
493
|
-
};
|
|
494
|
-
|
|
495
|
-
/**
|
|
496
|
-
* Helper for structs.
|
|
497
|
-
* \headerfile Ice/Ice.h
|
|
498
|
-
*/
|
|
499
|
-
template<typename T>
|
|
500
|
-
struct StreamHelper<T, StreamHelperCategoryStruct>
|
|
501
|
-
{
|
|
502
|
-
template<class S> static inline void
|
|
503
|
-
write(S* stream, const T& v)
|
|
504
|
-
{
|
|
505
|
-
StreamWriter<T, S>::write(stream, v);
|
|
506
|
-
}
|
|
186
|
+
static void read(InputStream* stream, T& v) { stream->read(v); }
|
|
507
187
|
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
{
|
|
511
|
-
StreamReader<T, S>::read(stream, v);
|
|
512
|
-
}
|
|
513
|
-
};
|
|
514
|
-
|
|
515
|
-
/**
|
|
516
|
-
* Helper for class structs.
|
|
517
|
-
* \headerfile Ice/Ice.h
|
|
518
|
-
*/
|
|
519
|
-
template<typename T>
|
|
520
|
-
struct StreamHelper<T, StreamHelperCategoryStructClass>
|
|
521
|
-
{
|
|
522
|
-
template<class S> static inline void
|
|
523
|
-
write(S* stream, const T& v)
|
|
524
|
-
{
|
|
525
|
-
StreamWriter<T, S>::write(stream, v);
|
|
526
|
-
}
|
|
188
|
+
static void print(std::ostream& stream, const T& v) { stream << v; }
|
|
189
|
+
};
|
|
527
190
|
|
|
528
|
-
template<
|
|
529
|
-
read(S* stream, T& v)
|
|
191
|
+
template<> struct StreamHelper<std::wstring, StreamHelperCategoryBuiltin>
|
|
530
192
|
{
|
|
531
|
-
v
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
/**
|
|
537
|
-
* Helper for enums.
|
|
538
|
-
* \headerfile Ice/Ice.h
|
|
539
|
-
*/
|
|
540
|
-
template<typename T>
|
|
541
|
-
struct StreamHelper<T, StreamHelperCategoryEnum>
|
|
542
|
-
{
|
|
543
|
-
template<class S> static inline void
|
|
544
|
-
write(S* stream, const T& v)
|
|
193
|
+
static void print(std::ostream& stream, const std::wstring& v) { stream << Ice::wstringToString(v); }
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
template<> struct StreamHelper<std::vector<bool>, StreamHelperCategoryBuiltin>
|
|
545
197
|
{
|
|
546
|
-
|
|
198
|
+
static void print(std::ostream& stream, const std::vector<bool>& v)
|
|
547
199
|
{
|
|
548
|
-
|
|
200
|
+
stream << '[';
|
|
201
|
+
bool firstElement = true;
|
|
202
|
+
for (bool element : v)
|
|
203
|
+
{
|
|
204
|
+
if (!firstElement)
|
|
205
|
+
{
|
|
206
|
+
stream << ", ";
|
|
207
|
+
}
|
|
208
|
+
firstElement = false;
|
|
209
|
+
Ice::print(stream, element);
|
|
210
|
+
}
|
|
211
|
+
stream << ']';
|
|
549
212
|
}
|
|
550
|
-
|
|
551
|
-
}
|
|
213
|
+
};
|
|
552
214
|
|
|
553
|
-
|
|
554
|
-
|
|
215
|
+
//
|
|
216
|
+
// "helpers" for the StreamHelper<T, StreamHelperCategoryStruct>. slice2cpp generates specializations as needed.
|
|
217
|
+
//
|
|
218
|
+
|
|
219
|
+
/// Reader used/generated for structs. Always specialized.
|
|
220
|
+
template<typename T> struct StreamReader;
|
|
221
|
+
|
|
222
|
+
template<typename T> struct StreamHelper<T, StreamHelperCategoryStruct>
|
|
555
223
|
{
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
{
|
|
559
|
-
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
/**
|
|
566
|
-
* Helper for sequences.
|
|
567
|
-
* \headerfile Ice/Ice.h
|
|
568
|
-
*/
|
|
569
|
-
template<typename T>
|
|
570
|
-
struct StreamHelper<T, StreamHelperCategorySequence>
|
|
571
|
-
{
|
|
572
|
-
template<class S> static inline void
|
|
573
|
-
write(S* stream, const T& v)
|
|
224
|
+
static void write(OutputStream* stream, const T& v) { stream->writeAll(v.ice_tuple()); }
|
|
225
|
+
|
|
226
|
+
static void read(InputStream* stream, T& v) { StreamReader<T>::read(stream, v); }
|
|
227
|
+
|
|
228
|
+
static void print(std::ostream& stream, const T& v) { stream << v; }
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
template<typename T> struct StreamHelper<T, StreamHelperCategoryEnum>
|
|
574
232
|
{
|
|
575
|
-
stream
|
|
576
|
-
for(typename T::const_iterator p = v.begin(); p != v.end(); ++p)
|
|
233
|
+
static void write(OutputStream* stream, T v)
|
|
577
234
|
{
|
|
578
|
-
|
|
235
|
+
if (static_cast<std::int32_t>(v) < StreamableTraits<T>::minValue ||
|
|
236
|
+
static_cast<std::int32_t>(v) > StreamableTraits<T>::maxValue)
|
|
237
|
+
{
|
|
238
|
+
IceInternal::Ex::throwMarshalException(__FILE__, __LINE__, "enumerator out of range");
|
|
239
|
+
}
|
|
240
|
+
stream->writeEnum(static_cast<std::int32_t>(v), StreamableTraits<T>::maxValue);
|
|
579
241
|
}
|
|
580
|
-
}
|
|
581
242
|
|
|
582
|
-
|
|
583
|
-
read(S* stream, T& v)
|
|
584
|
-
{
|
|
585
|
-
Int sz = stream->readAndCheckSeqSize(StreamableTraits<typename T::value_type>::minWireSize);
|
|
586
|
-
T(static_cast<size_t>(sz)).swap(v);
|
|
587
|
-
for(typename T::iterator p = v.begin(); p != v.end(); ++p)
|
|
243
|
+
static void read(InputStream* stream, T& v)
|
|
588
244
|
{
|
|
589
|
-
stream->
|
|
245
|
+
std::int32_t value = stream->readEnum(StreamableTraits<T>::maxValue);
|
|
246
|
+
if (value < StreamableTraits<T>::minValue || value > StreamableTraits<T>::maxValue)
|
|
247
|
+
{
|
|
248
|
+
IceInternal::Ex::throwMarshalException(__FILE__, __LINE__, "enumerator out of range");
|
|
249
|
+
}
|
|
250
|
+
v = static_cast<T>(value); // NOLINT
|
|
590
251
|
}
|
|
591
|
-
}
|
|
592
|
-
};
|
|
593
|
-
|
|
594
|
-
/**
|
|
595
|
-
* Helper for array custom sequence parameters.
|
|
596
|
-
* \headerfile Ice/Ice.h
|
|
597
|
-
*/
|
|
598
|
-
template<typename T>
|
|
599
|
-
struct StreamHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence>
|
|
600
|
-
{
|
|
601
|
-
template<class S> static inline void
|
|
602
|
-
write(S* stream, const std::pair<const T*, const T*>& v)
|
|
603
|
-
{
|
|
604
|
-
stream->write(v.first, v.second);
|
|
605
|
-
}
|
|
606
252
|
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
{
|
|
610
|
-
stream->read(v);
|
|
611
|
-
}
|
|
612
|
-
};
|
|
613
|
-
|
|
614
|
-
#ifndef ICE_CPP11_MAPPING
|
|
253
|
+
static void print(std::ostream& stream, T v) { stream << v; }
|
|
254
|
+
};
|
|
615
255
|
|
|
616
|
-
|
|
617
|
-
* Helper for range custom sequence parameters.
|
|
618
|
-
* \headerfile Ice/Ice.h
|
|
619
|
-
*/
|
|
620
|
-
template<typename T>
|
|
621
|
-
struct StreamHelper<std::pair<T, T>, StreamHelperCategorySequence>
|
|
622
|
-
{
|
|
623
|
-
template<class S> static inline void
|
|
624
|
-
write(S* stream, const std::pair<T, T>& v)
|
|
256
|
+
template<typename T> struct StreamHelper<T, StreamHelperCategorySequence>
|
|
625
257
|
{
|
|
626
|
-
stream
|
|
627
|
-
for(T p = v.first; p != v.second; ++p)
|
|
258
|
+
static void write(OutputStream* stream, const T& v)
|
|
628
259
|
{
|
|
629
|
-
stream->
|
|
260
|
+
stream->writeSize(static_cast<std::int32_t>(v.size()));
|
|
261
|
+
for (const auto& element : v)
|
|
262
|
+
{
|
|
263
|
+
stream->write(element);
|
|
264
|
+
}
|
|
630
265
|
}
|
|
631
|
-
}
|
|
632
266
|
|
|
633
|
-
|
|
634
|
-
read(S* stream, std::pair<T, T>& v)
|
|
635
|
-
{
|
|
636
|
-
stream->read(v);
|
|
637
|
-
}
|
|
638
|
-
};
|
|
639
|
-
|
|
640
|
-
/**
|
|
641
|
-
* Specialization for sequence<bool>.
|
|
642
|
-
* \headerfile Ice/Ice.h
|
|
643
|
-
*/
|
|
644
|
-
template<>
|
|
645
|
-
struct StreamHelper<std::pair< ::std::vector<bool>::const_iterator,
|
|
646
|
-
::std::vector<bool>::const_iterator>, StreamHelperCategorySequence>
|
|
647
|
-
{
|
|
648
|
-
template<class S> static inline void
|
|
649
|
-
write(S* stream, const std::pair< ::std::vector<bool>::const_iterator,
|
|
650
|
-
::std::vector<bool>::const_iterator>& v)
|
|
651
|
-
{
|
|
652
|
-
stream->writeSize(static_cast<Int>(IceUtilInternal::distance(v.first, v.second)));
|
|
653
|
-
for(::std::vector<bool>::const_iterator p = v.first; p != v.second; ++p)
|
|
267
|
+
static void read(InputStream* stream, T& v)
|
|
654
268
|
{
|
|
655
|
-
stream->
|
|
269
|
+
std::int32_t sz = stream->readAndCheckSeqSize(StreamableTraits<typename T::value_type>::minWireSize);
|
|
270
|
+
T(static_cast<size_t>(sz)).swap(v);
|
|
271
|
+
for (auto& element : v)
|
|
272
|
+
{
|
|
273
|
+
stream->read(element);
|
|
274
|
+
}
|
|
656
275
|
}
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
276
|
+
|
|
277
|
+
static void print(std::ostream& stream, const T& v)
|
|
278
|
+
{
|
|
279
|
+
stream << '[';
|
|
280
|
+
bool firstElement = true;
|
|
281
|
+
for (const auto& element : v)
|
|
282
|
+
{
|
|
283
|
+
if (!firstElement)
|
|
284
|
+
{
|
|
285
|
+
stream << ", ";
|
|
286
|
+
}
|
|
287
|
+
firstElement = false;
|
|
288
|
+
Ice::print(stream, element);
|
|
289
|
+
}
|
|
290
|
+
stream << ']';
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
/// Helper the array custom sequence mapping.
|
|
295
|
+
template<typename T> struct StreamHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence>
|
|
669
296
|
{
|
|
670
|
-
stream->
|
|
671
|
-
|
|
297
|
+
static void write(OutputStream* stream, std::pair<const T*, const T*> v) { stream->write(v.first, v.second); }
|
|
298
|
+
|
|
299
|
+
static void read(InputStream* stream, std::pair<const T*, const T*>& v) { stream->read(v); }
|
|
300
|
+
|
|
301
|
+
// No print: we only print fields.
|
|
302
|
+
};
|
|
672
303
|
|
|
673
|
-
|
|
674
|
-
|
|
304
|
+
#ifdef __cpp_lib_span
|
|
305
|
+
/// Helper for span (C++20 or later).
|
|
306
|
+
template<typename T> struct StreamHelper<std::span<T>, StreamHelperCategorySequence>
|
|
307
|
+
{
|
|
308
|
+
static void write(OutputStream* stream, const std::span<T>& v) { stream->write(v.data(), v.data() + v.size()); }
|
|
309
|
+
|
|
310
|
+
// No read. span are only for view types.
|
|
311
|
+
// No print: we only print fields.
|
|
312
|
+
};
|
|
675
313
|
#endif
|
|
676
314
|
|
|
677
|
-
|
|
678
|
-
* Helper for dictionaries.
|
|
679
|
-
* \headerfile Ice/Ice.h
|
|
680
|
-
*/
|
|
681
|
-
template<typename T>
|
|
682
|
-
struct StreamHelper<T, StreamHelperCategoryDictionary>
|
|
683
|
-
{
|
|
684
|
-
template<class S> static inline void
|
|
685
|
-
write(S* stream, const T& v)
|
|
315
|
+
template<typename T> struct StreamHelper<T, StreamHelperCategoryDictionary>
|
|
686
316
|
{
|
|
687
|
-
stream
|
|
688
|
-
for(typename T::const_iterator p = v.begin(); p != v.end(); ++p)
|
|
317
|
+
static void write(OutputStream* stream, const T& v)
|
|
689
318
|
{
|
|
690
|
-
stream->
|
|
691
|
-
|
|
319
|
+
stream->writeSize(static_cast<std::int32_t>(v.size()));
|
|
320
|
+
for (const auto& entry : v)
|
|
321
|
+
{
|
|
322
|
+
stream->write(entry.first);
|
|
323
|
+
stream->write(entry.second);
|
|
324
|
+
}
|
|
692
325
|
}
|
|
693
|
-
}
|
|
694
326
|
|
|
695
|
-
|
|
696
|
-
read(S* stream, T& v)
|
|
697
|
-
{
|
|
698
|
-
Int sz = stream->readSize();
|
|
699
|
-
v.clear();
|
|
700
|
-
while(sz--)
|
|
327
|
+
static void read(InputStream* stream, T& v)
|
|
701
328
|
{
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
329
|
+
std::int32_t sz = stream->readSize();
|
|
330
|
+
v.clear();
|
|
331
|
+
while (sz--)
|
|
332
|
+
{
|
|
333
|
+
typename T::value_type p;
|
|
334
|
+
stream->read(const_cast<typename T::key_type&>(p.first));
|
|
335
|
+
auto i = v.insert(v.end(), p);
|
|
336
|
+
stream->read(i->second);
|
|
337
|
+
}
|
|
706
338
|
}
|
|
707
|
-
}
|
|
708
|
-
};
|
|
709
|
-
|
|
710
|
-
/**
|
|
711
|
-
* Helper for user exceptions.
|
|
712
|
-
* \headerfile Ice/Ice.h
|
|
713
|
-
*/
|
|
714
|
-
template<typename T>
|
|
715
|
-
struct StreamHelper<T, StreamHelperCategoryUserException>
|
|
716
|
-
{
|
|
717
|
-
template<class S> static inline void
|
|
718
|
-
write(S* stream, const T& v)
|
|
719
|
-
{
|
|
720
|
-
stream->writeException(v);
|
|
721
|
-
}
|
|
722
339
|
|
|
723
|
-
|
|
724
|
-
|
|
340
|
+
static void print(std::ostream& stream, const T& v)
|
|
341
|
+
{
|
|
342
|
+
stream << '[';
|
|
343
|
+
bool firstEntry = true;
|
|
344
|
+
for (const auto& entry : v)
|
|
345
|
+
{
|
|
346
|
+
if (!firstEntry)
|
|
347
|
+
{
|
|
348
|
+
stream << ", ";
|
|
349
|
+
}
|
|
350
|
+
firstEntry = false;
|
|
351
|
+
stream << '{';
|
|
352
|
+
Ice::print(stream, entry.first);
|
|
353
|
+
stream << " : ";
|
|
354
|
+
Ice::print(stream, entry.second);
|
|
355
|
+
stream << '}';
|
|
356
|
+
}
|
|
357
|
+
stream << ']';
|
|
358
|
+
}
|
|
359
|
+
};
|
|
725
360
|
|
|
726
|
-
|
|
727
|
-
* Helper for proxies.
|
|
728
|
-
* \headerfile Ice/Ice.h
|
|
729
|
-
*/
|
|
730
|
-
template<typename T>
|
|
731
|
-
struct StreamHelper<T, StreamHelperCategoryProxy>
|
|
732
|
-
{
|
|
733
|
-
template<class S> static inline void
|
|
734
|
-
write(S* stream, const T& v)
|
|
361
|
+
template<typename T> struct StreamHelper<T, StreamHelperCategoryUserException>
|
|
735
362
|
{
|
|
736
|
-
stream->
|
|
737
|
-
}
|
|
363
|
+
static void write(OutputStream* stream, const T& v) { stream->writeException(v); }
|
|
738
364
|
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
stream
|
|
743
|
-
}
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
/**
|
|
747
|
-
* Helper for classes.
|
|
748
|
-
* \headerfile Ice/Ice.h
|
|
749
|
-
*/
|
|
750
|
-
template<typename T>
|
|
751
|
-
struct StreamHelper<T, StreamHelperCategoryClass>
|
|
752
|
-
{
|
|
753
|
-
template<class S> static inline void
|
|
754
|
-
write(S* stream, const T& v)
|
|
365
|
+
// no read: we don't use this helper for unmarshaling.
|
|
366
|
+
|
|
367
|
+
// We provide print for consistency even though user exceptions cannot appear in fields.
|
|
368
|
+
static void print(std::ostream& stream, const T& v) { stream << v; }
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
template<typename T> struct StreamHelper<T, StreamHelperCategoryProxy>
|
|
755
372
|
{
|
|
756
|
-
stream->write(v);
|
|
757
|
-
}
|
|
373
|
+
static void write(OutputStream* stream, const T& v) { stream->write(v); }
|
|
758
374
|
|
|
759
|
-
|
|
760
|
-
|
|
375
|
+
static void read(InputStream* stream, T& v) { stream->read(v); }
|
|
376
|
+
|
|
377
|
+
static void print(std::ostream& stream, const T& v) { stream << v; }
|
|
378
|
+
};
|
|
379
|
+
|
|
380
|
+
template<typename T> struct StreamHelper<T, StreamHelperCategoryClass>
|
|
761
381
|
{
|
|
762
|
-
stream->
|
|
763
|
-
|
|
764
|
-
}
|
|
765
|
-
|
|
766
|
-
//
|
|
767
|
-
// Helpers to read/write optional attributes or members.
|
|
768
|
-
//
|
|
769
|
-
|
|
770
|
-
//
|
|
771
|
-
// Extract / compute the optionalFormat
|
|
772
|
-
// This is used _only_ for the base StreamOptionalHelper below
|
|
773
|
-
// /!\ Do not use in StreamOptionalHelper specializations, and do
|
|
774
|
-
// not provide specialization not handled by the base StreamOptionalHelper
|
|
775
|
-
//
|
|
776
|
-
/**
|
|
777
|
-
* Extract / compute the optionalFormat.
|
|
778
|
-
* \headerfile Ice/Ice.h
|
|
779
|
-
*/
|
|
780
|
-
template<StreamHelperCategory st, int minWireSize, bool fixedLength>
|
|
781
|
-
struct GetOptionalFormat;
|
|
782
|
-
|
|
783
|
-
/**
|
|
784
|
-
* Specialization for 1-byte built-in fixed-length types.
|
|
785
|
-
* \headerfile Ice/Ice.h
|
|
786
|
-
*/
|
|
787
|
-
template<>
|
|
788
|
-
struct GetOptionalFormat<StreamHelperCategoryBuiltin, 1, true>
|
|
789
|
-
{
|
|
790
|
-
static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, F1);
|
|
791
|
-
};
|
|
792
|
-
|
|
793
|
-
/**
|
|
794
|
-
* Specialization for 2-byte built-in fixed-length types.
|
|
795
|
-
* \headerfile Ice/Ice.h
|
|
796
|
-
*/
|
|
797
|
-
template<>
|
|
798
|
-
struct GetOptionalFormat<StreamHelperCategoryBuiltin, 2, true>
|
|
799
|
-
{
|
|
800
|
-
static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, F2);
|
|
801
|
-
};
|
|
802
|
-
|
|
803
|
-
/**
|
|
804
|
-
* Specialization for 4-byte built-in fixed-length types.
|
|
805
|
-
* \headerfile Ice/Ice.h
|
|
806
|
-
*/
|
|
807
|
-
template<>
|
|
808
|
-
struct GetOptionalFormat<StreamHelperCategoryBuiltin, 4, true>
|
|
809
|
-
{
|
|
810
|
-
static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, F4);
|
|
811
|
-
};
|
|
812
|
-
|
|
813
|
-
/**
|
|
814
|
-
* Specialization for 8-byte built-in fixed-length types.
|
|
815
|
-
* \headerfile Ice/Ice.h
|
|
816
|
-
*/
|
|
817
|
-
template<>
|
|
818
|
-
struct GetOptionalFormat<StreamHelperCategoryBuiltin, 8, true>
|
|
819
|
-
{
|
|
820
|
-
static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, F8);
|
|
821
|
-
};
|
|
822
|
-
|
|
823
|
-
/**
|
|
824
|
-
* Specialization for built-in variable-length types.
|
|
825
|
-
* \headerfile Ice/Ice.h
|
|
826
|
-
*/
|
|
827
|
-
template<>
|
|
828
|
-
struct GetOptionalFormat<StreamHelperCategoryBuiltin, 1, false>
|
|
829
|
-
{
|
|
830
|
-
static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, VSize);
|
|
831
|
-
};
|
|
832
|
-
|
|
833
|
-
/**
|
|
834
|
-
* Specialization for class types.
|
|
835
|
-
* \headerfile Ice/Ice.h
|
|
836
|
-
*/
|
|
837
|
-
template<>
|
|
838
|
-
struct GetOptionalFormat<StreamHelperCategoryClass, 1, false>
|
|
839
|
-
{
|
|
840
|
-
static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, Class);
|
|
841
|
-
};
|
|
842
|
-
|
|
843
|
-
/**
|
|
844
|
-
* Specialization for enum types.
|
|
845
|
-
* \headerfile Ice/Ice.h
|
|
846
|
-
*/
|
|
847
|
-
template<int minWireSize>
|
|
848
|
-
struct GetOptionalFormat<StreamHelperCategoryEnum, minWireSize, false>
|
|
849
|
-
{
|
|
850
|
-
static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, Size);
|
|
851
|
-
};
|
|
852
|
-
|
|
853
|
-
/**
|
|
854
|
-
* Base helper for optional values: simply read/write the data.
|
|
855
|
-
* \headerfile Ice/Ice.h
|
|
856
|
-
*/
|
|
857
|
-
template<typename T, StreamHelperCategory st, bool fixedLength>
|
|
858
|
-
struct StreamOptionalHelper
|
|
859
|
-
{
|
|
860
|
-
typedef StreamableTraits<T> Traits;
|
|
382
|
+
static void write(OutputStream* stream, const T& v) { stream->write(v); }
|
|
383
|
+
|
|
384
|
+
static void read(InputStream* stream, T& v) { stream->read(v); }
|
|
861
385
|
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
//
|
|
386
|
+
static void print(std::ostream& stream, const T& v) { stream << v; }
|
|
387
|
+
};
|
|
388
|
+
|
|
389
|
+
//
|
|
390
|
+
// Helpers to read/write optional fields and arguments.
|
|
866
391
|
//
|
|
867
|
-
static const OptionalFormat optionalFormat = GetOptionalFormat<st, Traits::minWireSize, fixedLength>::value;
|
|
868
392
|
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
393
|
+
/// Extracts / computes the optionalFormat.
|
|
394
|
+
// This is used _only_ for the base StreamOptionalHelper below.
|
|
395
|
+
// /!\ Do not use in StreamOptionalHelper specializations, and do not provide specialization not handled by the
|
|
396
|
+
// base StreamOptionalHelper.
|
|
397
|
+
template<StreamHelperCategory st, int minWireSize, bool fixedLength> struct GetOptionalFormat;
|
|
874
398
|
|
|
875
|
-
|
|
876
|
-
|
|
399
|
+
/// Specialization for 1-byte built-in fixed-length types.
|
|
400
|
+
template<> struct GetOptionalFormat<StreamHelperCategoryBuiltinValue, 1, true>
|
|
877
401
|
{
|
|
878
|
-
|
|
879
|
-
}
|
|
880
|
-
};
|
|
881
|
-
|
|
882
|
-
/**
|
|
883
|
-
* Helper to write fixed-size structs.
|
|
884
|
-
* \headerfile Ice/Ice.h
|
|
885
|
-
*/
|
|
886
|
-
template<typename T>
|
|
887
|
-
struct StreamOptionalHelper<T, StreamHelperCategoryStruct, true>
|
|
888
|
-
{
|
|
889
|
-
static const OptionalFormat optionalFormat = ICE_SCOPED_ENUM(OptionalFormat, VSize);
|
|
402
|
+
static constexpr OptionalFormat value = OptionalFormat::F1;
|
|
403
|
+
};
|
|
890
404
|
|
|
891
|
-
|
|
892
|
-
|
|
405
|
+
/// Specialization for 2-byte built-in fixed-length types.
|
|
406
|
+
template<> struct GetOptionalFormat<StreamHelperCategoryBuiltinValue, 2, true>
|
|
893
407
|
{
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
}
|
|
408
|
+
static constexpr OptionalFormat value = OptionalFormat::F2;
|
|
409
|
+
};
|
|
897
410
|
|
|
898
|
-
|
|
899
|
-
|
|
411
|
+
/// Specialization for 4-byte built-in fixed-length types.
|
|
412
|
+
template<> struct GetOptionalFormat<StreamHelperCategoryBuiltinValue, 4, true>
|
|
900
413
|
{
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
}
|
|
904
|
-
};
|
|
905
|
-
|
|
906
|
-
/**
|
|
907
|
-
* Helper to write variable-size structs.
|
|
908
|
-
* \headerfile Ice/Ice.h
|
|
909
|
-
*/
|
|
910
|
-
template<typename T>
|
|
911
|
-
struct StreamOptionalHelper<T, StreamHelperCategoryStruct, false>
|
|
912
|
-
{
|
|
913
|
-
static const OptionalFormat optionalFormat = ICE_SCOPED_ENUM(OptionalFormat, FSize);
|
|
414
|
+
static constexpr OptionalFormat value = OptionalFormat::F4;
|
|
415
|
+
};
|
|
914
416
|
|
|
915
|
-
|
|
916
|
-
|
|
417
|
+
/// Specialization for 8-byte built-in fixed-length types.
|
|
418
|
+
template<> struct GetOptionalFormat<StreamHelperCategoryBuiltinValue, 8, true>
|
|
917
419
|
{
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
stream->endSize(pos);
|
|
921
|
-
}
|
|
420
|
+
static constexpr OptionalFormat value = OptionalFormat::F8;
|
|
421
|
+
};
|
|
922
422
|
|
|
923
|
-
|
|
924
|
-
|
|
423
|
+
/// Specialization for built-in variable-length types.
|
|
424
|
+
template<> struct GetOptionalFormat<StreamHelperCategoryBuiltinValue, 1, false>
|
|
925
425
|
{
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
}
|
|
929
|
-
};
|
|
930
|
-
|
|
931
|
-
/**
|
|
932
|
-
* Class structs are encoded like structs.
|
|
933
|
-
* \headerfile Ice/Ice.h
|
|
934
|
-
*/
|
|
935
|
-
template<typename T, bool fixedLength>
|
|
936
|
-
struct StreamOptionalHelper<T, StreamHelperCategoryStructClass, fixedLength> : StreamOptionalHelper<T, StreamHelperCategoryStruct, fixedLength>
|
|
937
|
-
{
|
|
938
|
-
};
|
|
939
|
-
|
|
940
|
-
/**
|
|
941
|
-
* Optional proxies are encoded like variable size structs, using the FSize encoding.
|
|
942
|
-
* \headerfile Ice/Ice.h
|
|
943
|
-
*/
|
|
944
|
-
template<typename T>
|
|
945
|
-
struct StreamOptionalHelper<T, StreamHelperCategoryProxy, false> : StreamOptionalHelper<T, StreamHelperCategoryStruct, false>
|
|
946
|
-
{
|
|
947
|
-
};
|
|
948
|
-
|
|
949
|
-
/**
|
|
950
|
-
* Helper to read/write optional sequences or dictionaries.
|
|
951
|
-
* \headerfile Ice/Ice.h
|
|
952
|
-
*/
|
|
953
|
-
template<typename T, bool fixedLength, int sz>
|
|
954
|
-
struct StreamOptionalContainerHelper;
|
|
955
|
-
|
|
956
|
-
/**
|
|
957
|
-
* Encode containers of variable-size elements with the FSize optional
|
|
958
|
-
* type, since we can't easily figure out the size of the container
|
|
959
|
-
* before encoding. This is the same encoding as variable size structs
|
|
960
|
-
* so we just re-use its implementation.
|
|
961
|
-
* \headerfile Ice/Ice.h
|
|
962
|
-
*/
|
|
963
|
-
template<typename T, int sz>
|
|
964
|
-
struct StreamOptionalContainerHelper<T, false, sz>
|
|
965
|
-
{
|
|
966
|
-
static const OptionalFormat optionalFormat = ICE_SCOPED_ENUM(OptionalFormat, FSize);
|
|
426
|
+
static constexpr OptionalFormat value = OptionalFormat::VSize;
|
|
427
|
+
};
|
|
967
428
|
|
|
968
|
-
|
|
969
|
-
|
|
429
|
+
/// Specialization for built-in variable-length types.
|
|
430
|
+
template<> struct GetOptionalFormat<StreamHelperCategoryBuiltin, 1, false>
|
|
970
431
|
{
|
|
971
|
-
|
|
972
|
-
}
|
|
432
|
+
static constexpr OptionalFormat value = OptionalFormat::VSize;
|
|
433
|
+
};
|
|
973
434
|
|
|
974
|
-
|
|
975
|
-
|
|
435
|
+
/// Specialization for enum types.
|
|
436
|
+
template<int minWireSize> struct GetOptionalFormat<StreamHelperCategoryEnum, minWireSize, false>
|
|
976
437
|
{
|
|
977
|
-
|
|
978
|
-
}
|
|
979
|
-
};
|
|
980
|
-
|
|
981
|
-
/**
|
|
982
|
-
* Encode containers of fixed-size elements with the VSize optional
|
|
983
|
-
* type since we can figure out the size of the container before
|
|
984
|
-
* encoding.
|
|
985
|
-
* \headerfile Ice/Ice.h
|
|
986
|
-
*/
|
|
987
|
-
template<typename T, int sz>
|
|
988
|
-
struct StreamOptionalContainerHelper<T, true, sz>
|
|
989
|
-
{
|
|
990
|
-
static const OptionalFormat optionalFormat = ICE_SCOPED_ENUM(OptionalFormat, VSize);
|
|
438
|
+
static constexpr OptionalFormat value = OptionalFormat::Size;
|
|
439
|
+
};
|
|
991
440
|
|
|
992
|
-
template
|
|
993
|
-
|
|
441
|
+
/// Base helper template for reading and writing optional values. The default implementations reads/writes the
|
|
442
|
+
/// value as-is.
|
|
443
|
+
template<typename T, StreamHelperCategory st, bool fixedLength> struct StreamOptionalHelper
|
|
994
444
|
{
|
|
445
|
+
using Traits = StreamableTraits<T>;
|
|
446
|
+
|
|
447
|
+
// If this optionalFormat fails to compile, you must either define your specialization
|
|
448
|
+
// for GetOptionalFormat (in which case the optional data will be marshaled/unmarshaled
|
|
449
|
+
// with straight calls to write/read on the stream), or define your own
|
|
450
|
+
// StreamOptionalHelper specialization (which gives you more control over marshaling)
|
|
995
451
|
//
|
|
996
|
-
|
|
997
|
-
// an element and the size-encoded number of elements (1 or
|
|
998
|
-
// 5 depending on the number of elements).
|
|
999
|
-
//
|
|
1000
|
-
stream->writeSize(sz * n + (n < 255 ? 1 : 5));
|
|
1001
|
-
stream->write(v);
|
|
1002
|
-
}
|
|
452
|
+
static constexpr OptionalFormat optionalFormat = GetOptionalFormat<st, Traits::minWireSize, fixedLength>::value;
|
|
1003
453
|
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
stream->read(v);
|
|
1009
|
-
}
|
|
1010
|
-
};
|
|
1011
|
-
|
|
1012
|
-
/**
|
|
1013
|
-
* Optimization: containers of 1 byte elements are encoded with the
|
|
1014
|
-
* VSize optional type. There's no need to encode an additional size
|
|
1015
|
-
* for those, the number of elements of the container can be used to
|
|
1016
|
-
* skip the optional.
|
|
1017
|
-
* \headerfile Ice/Ice.h
|
|
1018
|
-
*/
|
|
1019
|
-
template<typename T>
|
|
1020
|
-
struct StreamOptionalContainerHelper<T, true, 1>
|
|
1021
|
-
{
|
|
1022
|
-
static const OptionalFormat optionalFormat = ICE_SCOPED_ENUM(OptionalFormat, VSize);
|
|
454
|
+
static void write(OutputStream* stream, const T& v) { stream->write(v); }
|
|
455
|
+
|
|
456
|
+
static void read(InputStream* stream, T& v) { stream->read(v); }
|
|
457
|
+
};
|
|
1023
458
|
|
|
1024
|
-
|
|
1025
|
-
|
|
459
|
+
/// Helper to write fixed-size structs.
|
|
460
|
+
template<typename T> struct StreamOptionalHelper<T, StreamHelperCategoryStruct, true>
|
|
1026
461
|
{
|
|
1027
|
-
|
|
1028
|
-
}
|
|
462
|
+
static constexpr OptionalFormat optionalFormat = OptionalFormat::VSize;
|
|
1029
463
|
|
|
1030
|
-
|
|
1031
|
-
|
|
464
|
+
static void write(OutputStream* stream, const T& v)
|
|
465
|
+
{
|
|
466
|
+
stream->writeSize(StreamableTraits<T>::minWireSize);
|
|
467
|
+
stream->write(v);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
static void read(InputStream* stream, T& v)
|
|
471
|
+
{
|
|
472
|
+
stream->skipSize();
|
|
473
|
+
stream->read(v);
|
|
474
|
+
}
|
|
475
|
+
};
|
|
476
|
+
|
|
477
|
+
/// Helper to write variable-size structs.
|
|
478
|
+
template<typename T> struct StreamOptionalHelper<T, StreamHelperCategoryStruct, false>
|
|
1032
479
|
{
|
|
1033
|
-
|
|
1034
|
-
}
|
|
1035
|
-
};
|
|
1036
|
-
|
|
1037
|
-
/**
|
|
1038
|
-
* Helper to write sequences, delegates to the optional container
|
|
1039
|
-
* helper template partial specializations.
|
|
1040
|
-
* \headerfile Ice/Ice.h
|
|
1041
|
-
*/
|
|
1042
|
-
template<typename T>
|
|
1043
|
-
struct StreamOptionalHelper<T, StreamHelperCategorySequence, false>
|
|
1044
|
-
{
|
|
1045
|
-
typedef typename T::value_type E;
|
|
1046
|
-
static const int size = StreamableTraits<E>::minWireSize;
|
|
1047
|
-
static const bool fixedLength = StreamableTraits<E>::fixedLength;
|
|
480
|
+
static constexpr OptionalFormat optionalFormat = OptionalFormat::FSize;
|
|
1048
481
|
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
482
|
+
static void write(OutputStream* stream, const T& v)
|
|
483
|
+
{
|
|
484
|
+
OutputStream::size_type pos = stream->startSize();
|
|
485
|
+
stream->write(v);
|
|
486
|
+
stream->endSize(pos);
|
|
487
|
+
}
|
|
1052
488
|
|
|
1053
|
-
|
|
1054
|
-
|
|
489
|
+
static void read(InputStream* stream, T& v)
|
|
490
|
+
{
|
|
491
|
+
stream->skip(4);
|
|
492
|
+
stream->read(v);
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
|
|
496
|
+
// InputStream and OutputStream have special logic for optional proxies that does not rely on the
|
|
497
|
+
// StreamOptional helpers.
|
|
498
|
+
|
|
499
|
+
/// Helper to read/write optional sequences or dictionaries.
|
|
500
|
+
template<typename T, bool fixedLength, int sz> struct StreamOptionalContainerHelper;
|
|
501
|
+
|
|
502
|
+
/// Encodes containers of variable-size elements with the FSize optional type, since we can't easily figure out
|
|
503
|
+
/// total number of bytes we're about to write.
|
|
504
|
+
// This is the same encoding as variable size structs so we just re-use its implementation.
|
|
505
|
+
template<typename T, int sz> struct StreamOptionalContainerHelper<T, false, sz>
|
|
1055
506
|
{
|
|
1056
|
-
|
|
1057
|
-
}
|
|
507
|
+
static constexpr OptionalFormat optionalFormat = OptionalFormat::FSize;
|
|
1058
508
|
|
|
1059
|
-
|
|
1060
|
-
|
|
509
|
+
static void write(OutputStream* stream, const T& v, std::int32_t)
|
|
510
|
+
{
|
|
511
|
+
StreamOptionalHelper<T, StreamHelperCategoryStruct, false>::write(stream, v);
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
static void read(InputStream* stream, T& v)
|
|
515
|
+
{
|
|
516
|
+
StreamOptionalHelper<T, StreamHelperCategoryStruct, false>::read(stream, v);
|
|
517
|
+
}
|
|
518
|
+
};
|
|
519
|
+
|
|
520
|
+
/// Encodes containers of fixed-size elements with the VSize optional type since we can figure out the total number
|
|
521
|
+
/// of bytes we're about to write.
|
|
522
|
+
template<typename T, int sz> struct StreamOptionalContainerHelper<T, true, sz>
|
|
1061
523
|
{
|
|
1062
|
-
|
|
1063
|
-
}
|
|
1064
|
-
};
|
|
1065
|
-
|
|
1066
|
-
/**
|
|
1067
|
-
* Helper to write sequences, delegates to the optional container
|
|
1068
|
-
* helper template partial specializations.
|
|
1069
|
-
* \headerfile Ice/Ice.h
|
|
1070
|
-
*/
|
|
1071
|
-
template<typename T>
|
|
1072
|
-
struct StreamOptionalHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence, false>
|
|
1073
|
-
{
|
|
1074
|
-
typedef std::pair<const T*, const T*> P;
|
|
1075
|
-
static const int size = StreamableTraits<T>::minWireSize;
|
|
1076
|
-
static const bool fixedLength = StreamableTraits<T>::fixedLength;
|
|
524
|
+
static constexpr OptionalFormat optionalFormat = OptionalFormat::VSize;
|
|
1077
525
|
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
526
|
+
static void write(OutputStream* stream, const T& v, std::int32_t n)
|
|
527
|
+
{
|
|
528
|
+
// The total number of bytes is the number of elements * the size of an element and the size-encoded number
|
|
529
|
+
// of elements (1 or 5 depending on the number of elements).
|
|
530
|
+
stream->writeSize(sz * n + (n < 255 ? 1 : 5));
|
|
531
|
+
stream->write(v);
|
|
532
|
+
}
|
|
1081
533
|
|
|
1082
|
-
|
|
1083
|
-
|
|
534
|
+
static void read(InputStream* stream, T& v)
|
|
535
|
+
{
|
|
536
|
+
stream->skipSize();
|
|
537
|
+
stream->read(v);
|
|
538
|
+
}
|
|
539
|
+
};
|
|
540
|
+
|
|
541
|
+
// Optimization: containers of 1 byte elements are encoded with the VSize optional type. There's no need to encode
|
|
542
|
+
// an additional size for those, the number of elements of the container can be used to skip the optional.
|
|
543
|
+
template<typename T> struct StreamOptionalContainerHelper<T, true, 1>
|
|
1084
544
|
{
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
545
|
+
static constexpr OptionalFormat optionalFormat = OptionalFormat::VSize;
|
|
546
|
+
|
|
547
|
+
static void write(OutputStream* stream, const T& v, std::int32_t) { stream->write(v); }
|
|
1088
548
|
|
|
1089
|
-
|
|
1090
|
-
|
|
549
|
+
static void read(InputStream* stream, T& v) { stream->read(v); }
|
|
550
|
+
};
|
|
551
|
+
|
|
552
|
+
// Helper to write sequences, delegates to the optional container helper template partial specializations.
|
|
553
|
+
template<typename T> struct StreamOptionalHelper<T, StreamHelperCategorySequence, false>
|
|
1091
554
|
{
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
555
|
+
using E = typename T::value_type;
|
|
556
|
+
static constexpr int size = StreamableTraits<E>::minWireSize;
|
|
557
|
+
static constexpr bool fixedLength = StreamableTraits<E>::fixedLength;
|
|
1095
558
|
|
|
1096
|
-
|
|
559
|
+
// The optional type of a sequence depends on whether or not elements are fixed
|
|
560
|
+
// or variable size elements and their size.
|
|
561
|
+
static constexpr OptionalFormat optionalFormat =
|
|
562
|
+
StreamOptionalContainerHelper<T, fixedLength, size>::optionalFormat;
|
|
1097
563
|
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
*/
|
|
1103
|
-
template<typename T>
|
|
1104
|
-
struct StreamOptionalHelper<std::pair<T, T>, StreamHelperCategorySequence, false>
|
|
1105
|
-
{
|
|
1106
|
-
typedef std::pair<T, T> P;
|
|
1107
|
-
static const int size = StreamableTraits<typename T::value_type>::minWireSize;
|
|
1108
|
-
static const bool fixedLength = StreamableTraits<typename T::value_type>::fixedLength;
|
|
564
|
+
static void write(OutputStream* stream, const T& v)
|
|
565
|
+
{
|
|
566
|
+
StreamOptionalContainerHelper<T, fixedLength, size>::write(stream, v, static_cast<std::int32_t>(v.size()));
|
|
567
|
+
}
|
|
1109
568
|
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
569
|
+
static void read(InputStream* stream, T& v)
|
|
570
|
+
{
|
|
571
|
+
StreamOptionalContainerHelper<T, fixedLength, size>::read(stream, v);
|
|
572
|
+
}
|
|
573
|
+
};
|
|
1113
574
|
|
|
1114
|
-
|
|
1115
|
-
|
|
575
|
+
// Helper to write sequences, delegates to the optional container helper template partial specializations.
|
|
576
|
+
template<typename T> struct StreamOptionalHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence, false>
|
|
1116
577
|
{
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
578
|
+
using P = std::pair<const T*, const T*>;
|
|
579
|
+
static constexpr int size = StreamableTraits<T>::minWireSize;
|
|
580
|
+
static constexpr bool fixedLength = StreamableTraits<T>::fixedLength;
|
|
1120
581
|
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
* \headerfile Ice/Ice.h
|
|
1132
|
-
*/
|
|
1133
|
-
template<typename T>
|
|
1134
|
-
struct StreamOptionalHelper<std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> >,
|
|
1135
|
-
StreamHelperCategorySequence, false>
|
|
1136
|
-
{
|
|
1137
|
-
typedef std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> > P;
|
|
1138
|
-
static const int size = StreamableTraits<T>::minWireSize;
|
|
1139
|
-
static const bool fixedLength = StreamableTraits<T>::fixedLength;
|
|
582
|
+
// The optional type of a sequence depends on whether or not elements are fixed
|
|
583
|
+
// or variable size elements and their size.
|
|
584
|
+
static constexpr OptionalFormat optionalFormat =
|
|
585
|
+
StreamOptionalContainerHelper<P, fixedLength, size>::optionalFormat;
|
|
586
|
+
|
|
587
|
+
static void write(OutputStream* stream, const P& v)
|
|
588
|
+
{
|
|
589
|
+
auto n = static_cast<std::int32_t>(v.second - v.first);
|
|
590
|
+
StreamOptionalContainerHelper<P, fixedLength, size>::write(stream, v, n);
|
|
591
|
+
}
|
|
1140
592
|
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
593
|
+
static void read(InputStream* stream, P& v)
|
|
594
|
+
{
|
|
595
|
+
StreamOptionalContainerHelper<P, fixedLength, size>::read(stream, v);
|
|
596
|
+
}
|
|
597
|
+
};
|
|
1144
598
|
|
|
1145
|
-
|
|
1146
|
-
|
|
599
|
+
// Helper to write dictionaries, delegates to the optional container helper template partial specializations.
|
|
600
|
+
template<typename T> struct StreamOptionalHelper<T, StreamHelperCategoryDictionary, false>
|
|
1147
601
|
{
|
|
1148
|
-
|
|
1149
|
-
|
|
602
|
+
using K = typename T::key_type;
|
|
603
|
+
using V = typename T::mapped_type;
|
|
1150
604
|
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
#endif
|
|
605
|
+
static constexpr int size = StreamableTraits<K>::minWireSize + StreamableTraits<V>::minWireSize;
|
|
606
|
+
static constexpr bool fixedLength = StreamableTraits<K>::fixedLength && StreamableTraits<V>::fixedLength;
|
|
1154
607
|
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
typedef typename T::mapped_type V;
|
|
608
|
+
// The optional type of a dictionary depends on whether or not elements are fixed
|
|
609
|
+
// or variable size elements.
|
|
610
|
+
static constexpr OptionalFormat optionalFormat =
|
|
611
|
+
StreamOptionalContainerHelper<T, fixedLength, size>::optionalFormat;
|
|
612
|
+
|
|
613
|
+
static void write(OutputStream* stream, const T& v)
|
|
614
|
+
{
|
|
615
|
+
StreamOptionalContainerHelper<T, fixedLength, size>::write(stream, v, static_cast<std::int32_t>(v.size()));
|
|
616
|
+
}
|
|
1165
617
|
|
|
1166
|
-
|
|
1167
|
-
|
|
618
|
+
static void read(InputStream* stream, T& v)
|
|
619
|
+
{
|
|
620
|
+
StreamOptionalContainerHelper<T, fixedLength, size>::read(stream, v);
|
|
621
|
+
}
|
|
622
|
+
};
|
|
1168
623
|
|
|
1169
|
-
//
|
|
1170
|
-
|
|
1171
|
-
|
|
624
|
+
// Specializations for ProtocolVersion and EncodingVersion
|
|
625
|
+
template<> struct StreamableTraits<ProtocolVersion>
|
|
626
|
+
{
|
|
627
|
+
static constexpr StreamHelperCategory helper = StreamHelperCategoryStruct;
|
|
628
|
+
static constexpr int minWireSize = 2;
|
|
629
|
+
static constexpr bool fixedLength = true;
|
|
630
|
+
};
|
|
1172
631
|
|
|
1173
|
-
template<
|
|
1174
|
-
write(S* stream, const T& v)
|
|
632
|
+
template<> struct StreamReader<ProtocolVersion>
|
|
1175
633
|
{
|
|
1176
|
-
|
|
1177
|
-
}
|
|
634
|
+
static void read(InputStream* istr, ProtocolVersion& v) { istr->readAll(v.major, v.minor); }
|
|
635
|
+
};
|
|
1178
636
|
|
|
1179
|
-
template<
|
|
1180
|
-
read(S* stream, T& v)
|
|
637
|
+
template<> struct StreamableTraits<EncodingVersion>
|
|
1181
638
|
{
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
639
|
+
static constexpr StreamHelperCategory helper = StreamHelperCategoryStruct;
|
|
640
|
+
static constexpr int minWireSize = 2;
|
|
641
|
+
static constexpr bool fixedLength = true;
|
|
642
|
+
};
|
|
1185
643
|
|
|
1186
|
-
|
|
644
|
+
template<> struct StreamReader<EncodingVersion>
|
|
645
|
+
{
|
|
646
|
+
static void read(InputStream* istr, EncodingVersion& v) { istr->readAll(v.major, v.minor); }
|
|
647
|
+
};
|
|
1187
648
|
|
|
649
|
+
/// @endcond
|
|
1188
650
|
}
|
|
1189
651
|
|
|
1190
652
|
#endif
|