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,29 +1,20 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
#include
|
|
6
|
-
#include
|
|
7
|
-
#include
|
|
8
|
-
#include
|
|
9
|
-
#include
|
|
10
|
-
#include
|
|
11
|
-
#include
|
|
12
|
-
#include
|
|
13
|
-
#include
|
|
14
|
-
#include
|
|
15
|
-
#include <IceUtil/Random.h>
|
|
16
|
-
#include <Ice/SHA1.h>
|
|
17
|
-
#include <IceUtil/StringUtil.h>
|
|
18
|
-
|
|
19
|
-
// Python 2.7 under Windows.
|
|
20
|
-
#if _MSC_VER == 1500
|
|
21
|
-
typedef unsigned short uint16_t;
|
|
22
|
-
#else
|
|
23
|
-
#include <stdint.h>
|
|
24
|
-
#endif
|
|
1
|
+
// Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
#include "WSTransceiver.h"
|
|
4
|
+
#include "Base64.h"
|
|
5
|
+
#include "Endian.h"
|
|
6
|
+
#include "HttpParser.h"
|
|
7
|
+
#include "Ice/Buffer.h"
|
|
8
|
+
#include "Ice/Connection.h"
|
|
9
|
+
#include "Ice/LocalExceptions.h"
|
|
10
|
+
#include "Ice/LoggerUtil.h"
|
|
11
|
+
#include "Ice/StringUtil.h"
|
|
12
|
+
#include "ProtocolInstance.h"
|
|
13
|
+
#include "Random.h"
|
|
14
|
+
#include "SHA1.h"
|
|
25
15
|
|
|
26
16
|
#include <climits>
|
|
17
|
+
#include <cstdint>
|
|
27
18
|
|
|
28
19
|
using namespace std;
|
|
29
20
|
using namespace Ice;
|
|
@@ -32,102 +23,105 @@ using namespace IceInternal;
|
|
|
32
23
|
//
|
|
33
24
|
// WebSocket opcodes
|
|
34
25
|
//
|
|
35
|
-
#define OP_CONT
|
|
36
|
-
#define OP_TEXT
|
|
37
|
-
#define OP_DATA
|
|
38
|
-
#define OP_RES_0x3
|
|
39
|
-
#define OP_RES_0x4
|
|
40
|
-
#define OP_RES_0x5
|
|
41
|
-
#define OP_RES_0x6
|
|
42
|
-
#define OP_RES_0x7
|
|
43
|
-
#define OP_CLOSE
|
|
44
|
-
#define OP_PING
|
|
45
|
-
#define OP_PONG
|
|
46
|
-
#define OP_RES_0xB
|
|
47
|
-
#define OP_RES_0xC
|
|
48
|
-
#define OP_RES_0xD
|
|
49
|
-
#define OP_RES_0xE
|
|
50
|
-
#define OP_RES_0xF
|
|
51
|
-
#define FLAG_FINAL
|
|
52
|
-
#define FLAG_MASKED 0x80
|
|
53
|
-
|
|
54
|
-
#define CLOSURE_NORMAL
|
|
55
|
-
#define CLOSURE_SHUTDOWN
|
|
26
|
+
#define OP_CONT 0x0 // Continuation frame
|
|
27
|
+
#define OP_TEXT 0x1 // Text frame
|
|
28
|
+
#define OP_DATA 0x2 // Data frame
|
|
29
|
+
#define OP_RES_0x3 0x3 // Reserved
|
|
30
|
+
#define OP_RES_0x4 0x4 // Reserved
|
|
31
|
+
#define OP_RES_0x5 0x5 // Reserved
|
|
32
|
+
#define OP_RES_0x6 0x6 // Reserved
|
|
33
|
+
#define OP_RES_0x7 0x7 // Reserved
|
|
34
|
+
#define OP_CLOSE 0x8 // Connection close
|
|
35
|
+
#define OP_PING 0x9 // Ping
|
|
36
|
+
#define OP_PONG 0xA // Pong
|
|
37
|
+
#define OP_RES_0xB 0xB // Reserved
|
|
38
|
+
#define OP_RES_0xC 0xC // Reserved
|
|
39
|
+
#define OP_RES_0xD 0xD // Reserved
|
|
40
|
+
#define OP_RES_0xE 0xE // Reserved
|
|
41
|
+
#define OP_RES_0xF 0xF // Reserved
|
|
42
|
+
#define FLAG_FINAL 0x80 // Last frame
|
|
43
|
+
#define FLAG_MASKED 0x80 // Payload is masked
|
|
44
|
+
|
|
45
|
+
#define CLOSURE_NORMAL 1000
|
|
46
|
+
#define CLOSURE_SHUTDOWN 1001
|
|
56
47
|
#define CLOSURE_PROTOCOL_ERROR 1002
|
|
57
|
-
#define CLOSURE_TOO_BIG 1009
|
|
58
48
|
|
|
59
49
|
namespace
|
|
60
50
|
{
|
|
51
|
+
const string _iceProtocol = "ice.zeroc.com"; // NOLINT(cert-err58-cpp)
|
|
52
|
+
const string _wsUUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; // NOLINT(cert-err58-cpp)
|
|
61
53
|
|
|
62
|
-
const string _iceProtocol = "ice.zeroc.com";
|
|
63
|
-
const string _wsUUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
|
|
64
|
-
|
|
65
|
-
//
|
|
66
|
-
// Rename to avoid conflict with OS 10.10 htonll
|
|
67
|
-
//
|
|
68
|
-
void ice_htonll(Long v, Byte* dest)
|
|
69
|
-
{
|
|
70
54
|
//
|
|
71
|
-
//
|
|
55
|
+
// Rename to avoid conflict with OS 10.10 htonll
|
|
72
56
|
//
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
57
|
+
void ice_htonll(int64_t v, byte* dest)
|
|
58
|
+
{
|
|
59
|
+
//
|
|
60
|
+
// Transfer a 64-bit integer in network (big-endian) order.
|
|
61
|
+
//
|
|
62
|
+
if constexpr (endian::native == endian::big)
|
|
63
|
+
{
|
|
64
|
+
const byte* src = reinterpret_cast<const byte*>(&v);
|
|
65
|
+
*dest++ = *src++;
|
|
66
|
+
*dest++ = *src++;
|
|
67
|
+
*dest++ = *src++;
|
|
68
|
+
*dest++ = *src++;
|
|
69
|
+
*dest++ = *src++;
|
|
70
|
+
*dest++ = *src++;
|
|
71
|
+
*dest++ = *src++;
|
|
72
|
+
*dest = *src;
|
|
73
|
+
}
|
|
74
|
+
else
|
|
75
|
+
{
|
|
76
|
+
const byte* src = reinterpret_cast<const byte*>(&v) + sizeof(int64_t) - 1;
|
|
77
|
+
*dest++ = *src--;
|
|
78
|
+
*dest++ = *src--;
|
|
79
|
+
*dest++ = *src--;
|
|
80
|
+
*dest++ = *src--;
|
|
81
|
+
*dest++ = *src--;
|
|
82
|
+
*dest++ = *src--;
|
|
83
|
+
*dest++ = *src--;
|
|
84
|
+
*dest = *src;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
102
87
|
|
|
103
88
|
//
|
|
104
|
-
//
|
|
89
|
+
// Rename to avoid conflict with OS 10.10 nlltoh
|
|
105
90
|
//
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
*dest++ = *src++;
|
|
110
|
-
*dest++ = *src++;
|
|
111
|
-
*dest++ = *src++;
|
|
112
|
-
*dest++ = *src++;
|
|
113
|
-
*dest++ = *src++;
|
|
114
|
-
*dest++ = *src++;
|
|
115
|
-
*dest = *src;
|
|
116
|
-
#else
|
|
117
|
-
Byte* dest = reinterpret_cast<Byte*>(&v) + sizeof(Long) - 1;
|
|
118
|
-
*dest-- = *src++;
|
|
119
|
-
*dest-- = *src++;
|
|
120
|
-
*dest-- = *src++;
|
|
121
|
-
*dest-- = *src++;
|
|
122
|
-
*dest-- = *src++;
|
|
123
|
-
*dest-- = *src++;
|
|
124
|
-
*dest-- = *src++;
|
|
125
|
-
*dest = *src;
|
|
126
|
-
#endif
|
|
91
|
+
int64_t ice_nlltoh(const byte* src)
|
|
92
|
+
{
|
|
93
|
+
int64_t v;
|
|
127
94
|
|
|
128
|
-
|
|
129
|
-
|
|
95
|
+
//
|
|
96
|
+
// Extract a 64-bit integer in network (big-endian) order.
|
|
97
|
+
//
|
|
98
|
+
if constexpr (endian::native == endian::big)
|
|
99
|
+
{
|
|
100
|
+
byte* dest = reinterpret_cast<byte*>(&v);
|
|
101
|
+
*dest++ = *src++;
|
|
102
|
+
*dest++ = *src++;
|
|
103
|
+
*dest++ = *src++;
|
|
104
|
+
*dest++ = *src++;
|
|
105
|
+
*dest++ = *src++;
|
|
106
|
+
*dest++ = *src++;
|
|
107
|
+
*dest++ = *src++;
|
|
108
|
+
*dest = *src;
|
|
109
|
+
}
|
|
110
|
+
else
|
|
111
|
+
{
|
|
112
|
+
byte* dest = reinterpret_cast<byte*>(&v) + sizeof(int64_t) - 1;
|
|
113
|
+
*dest-- = *src++;
|
|
114
|
+
*dest-- = *src++;
|
|
115
|
+
*dest-- = *src++;
|
|
116
|
+
*dest-- = *src++;
|
|
117
|
+
*dest-- = *src++;
|
|
118
|
+
*dest-- = *src++;
|
|
119
|
+
*dest-- = *src++;
|
|
120
|
+
*dest = *src;
|
|
121
|
+
}
|
|
130
122
|
|
|
123
|
+
return v;
|
|
124
|
+
}
|
|
131
125
|
}
|
|
132
126
|
|
|
133
127
|
NativeInfoPtr
|
|
@@ -150,10 +144,10 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
150
144
|
//
|
|
151
145
|
// Delegate logs exceptions that occur during initialize(), so there's no need to trap them here.
|
|
152
146
|
//
|
|
153
|
-
if(_state == StateInitializeDelegate)
|
|
147
|
+
if (_state == StateInitializeDelegate)
|
|
154
148
|
{
|
|
155
149
|
SocketOperation op = _delegate->initialize(readBuffer, writeBuffer);
|
|
156
|
-
if(op != SocketOperationNone)
|
|
150
|
+
if (op != SocketOperationNone)
|
|
157
151
|
{
|
|
158
152
|
return op;
|
|
159
153
|
}
|
|
@@ -162,7 +156,7 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
162
156
|
|
|
163
157
|
try
|
|
164
158
|
{
|
|
165
|
-
if(_state == StateConnected)
|
|
159
|
+
if (_state == StateConnected)
|
|
166
160
|
{
|
|
167
161
|
//
|
|
168
162
|
// We don't know how much we'll need to read.
|
|
@@ -175,7 +169,7 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
175
169
|
// client sends the upgrade request.
|
|
176
170
|
//
|
|
177
171
|
_state = StateUpgradeRequestPending;
|
|
178
|
-
if(!_incoming)
|
|
172
|
+
if (!_incoming)
|
|
179
173
|
{
|
|
180
174
|
//
|
|
181
175
|
// Compose the upgrade request.
|
|
@@ -193,8 +187,8 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
193
187
|
// The value for Sec-WebSocket-Key is a 16-byte random number,
|
|
194
188
|
// encoded with Base64.
|
|
195
189
|
//
|
|
196
|
-
vector<
|
|
197
|
-
|
|
190
|
+
vector<byte> key(16);
|
|
191
|
+
IceInternal::generateRandom(reinterpret_cast<char*>(&key[0]), key.size());
|
|
198
192
|
_key = IceInternal::Base64::encode(key);
|
|
199
193
|
out << _key << "\r\n\r\n"; // EOM
|
|
200
194
|
|
|
@@ -208,26 +202,32 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
208
202
|
//
|
|
209
203
|
// Try to write the client's upgrade request.
|
|
210
204
|
//
|
|
211
|
-
if(_state == StateUpgradeRequestPending && !_incoming)
|
|
205
|
+
if (_state == StateUpgradeRequestPending && !_incoming)
|
|
212
206
|
{
|
|
213
|
-
if(_writeBuffer.i < _writeBuffer.b.end())
|
|
207
|
+
if (_writeBuffer.i < _writeBuffer.b.end())
|
|
214
208
|
{
|
|
215
209
|
SocketOperation s = _delegate->write(_writeBuffer);
|
|
216
|
-
if(s)
|
|
210
|
+
if (s)
|
|
217
211
|
{
|
|
218
212
|
return s;
|
|
219
213
|
}
|
|
220
214
|
}
|
|
221
215
|
assert(_writeBuffer.i == _writeBuffer.b.end());
|
|
222
216
|
_state = StateUpgradeResponsePending;
|
|
217
|
+
|
|
218
|
+
if (_instance->traceLevel() >= 1)
|
|
219
|
+
{
|
|
220
|
+
Trace out(_instance->logger(), _instance->traceCategory());
|
|
221
|
+
out << "sent " << protocol() << " connection HTTP upgrade request\n" << toString();
|
|
222
|
+
}
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
-
while(true)
|
|
225
|
+
while (true)
|
|
226
226
|
{
|
|
227
|
-
if(_readBuffer.i < _readBuffer.b.end())
|
|
227
|
+
if (_readBuffer.i < _readBuffer.b.end())
|
|
228
228
|
{
|
|
229
229
|
SocketOperation s = _delegate->read(_readBuffer);
|
|
230
|
-
if(s == SocketOperationWrite || _readBuffer.i == _readBuffer.b.begin())
|
|
230
|
+
if (s == SocketOperationWrite || _readBuffer.i == _readBuffer.b.begin())
|
|
231
231
|
{
|
|
232
232
|
return s;
|
|
233
233
|
}
|
|
@@ -236,16 +236,16 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
236
236
|
//
|
|
237
237
|
// Try to read the client's upgrade request or the server's response.
|
|
238
238
|
//
|
|
239
|
-
if((_state == StateUpgradeRequestPending && _incoming) ||
|
|
240
|
-
|
|
239
|
+
if ((_state == StateUpgradeRequestPending && _incoming) ||
|
|
240
|
+
(_state == StateUpgradeResponsePending && !_incoming))
|
|
241
241
|
{
|
|
242
242
|
//
|
|
243
243
|
// Check if we have enough data for a complete message.
|
|
244
244
|
//
|
|
245
|
-
const
|
|
246
|
-
if(!p)
|
|
245
|
+
const byte* p = _parser->isCompleteMessage(&_readBuffer.b[0], _readBuffer.i);
|
|
246
|
+
if (!p)
|
|
247
247
|
{
|
|
248
|
-
if(_readBuffer.i < _readBuffer.b.end())
|
|
248
|
+
if (_readBuffer.i < _readBuffer.b.end())
|
|
249
249
|
{
|
|
250
250
|
return SocketOperationRead;
|
|
251
251
|
}
|
|
@@ -253,10 +253,10 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
253
253
|
//
|
|
254
254
|
// Enlarge the buffer and try to read more.
|
|
255
255
|
//
|
|
256
|
-
const
|
|
257
|
-
if(oldSize + 1024 > _instance->messageSizeMax())
|
|
256
|
+
const auto oldSize = static_cast<size_t>(_readBuffer.i - _readBuffer.b.begin());
|
|
257
|
+
if (oldSize + 1024 > static_cast<size_t>(_instance->messageSizeMax()))
|
|
258
258
|
{
|
|
259
|
-
|
|
259
|
+
Ex::throwMemoryLimitException(__FILE__, __LINE__, oldSize + 1024, _instance->messageSizeMax());
|
|
260
260
|
}
|
|
261
261
|
_readBuffer.b.resize(oldSize + 1024);
|
|
262
262
|
_readBuffer.i = _readBuffer.b.begin() + oldSize;
|
|
@@ -280,9 +280,9 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
280
280
|
//
|
|
281
281
|
// Parse the client's upgrade request.
|
|
282
282
|
//
|
|
283
|
-
if(_state == StateUpgradeRequestPending && _incoming)
|
|
283
|
+
if (_state == StateUpgradeRequestPending && _incoming)
|
|
284
284
|
{
|
|
285
|
-
if(_parser->parse(&_readBuffer.b[0], _readI))
|
|
285
|
+
if (_parser->parse(&_readBuffer.b[0], _readI))
|
|
286
286
|
{
|
|
287
287
|
handleRequest(_writeBuffer);
|
|
288
288
|
_state = StateUpgradeResponsePending;
|
|
@@ -293,14 +293,14 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
-
if(_state == StateUpgradeResponsePending)
|
|
296
|
+
if (_state == StateUpgradeResponsePending)
|
|
297
297
|
{
|
|
298
|
-
if(_incoming)
|
|
298
|
+
if (_incoming)
|
|
299
299
|
{
|
|
300
|
-
if(_writeBuffer.i < _writeBuffer.b.end())
|
|
300
|
+
if (_writeBuffer.i < _writeBuffer.b.end())
|
|
301
301
|
{
|
|
302
302
|
SocketOperation s = _delegate->write(_writeBuffer);
|
|
303
|
-
if(s)
|
|
303
|
+
if (s)
|
|
304
304
|
{
|
|
305
305
|
return s;
|
|
306
306
|
}
|
|
@@ -311,7 +311,7 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
311
311
|
//
|
|
312
312
|
// Parse the server's response
|
|
313
313
|
//
|
|
314
|
-
if(_parser->parse(&_readBuffer.b[0], _readI))
|
|
314
|
+
if (_parser->parse(&_readBuffer.b[0], _readI))
|
|
315
315
|
{
|
|
316
316
|
handleResponse();
|
|
317
317
|
}
|
|
@@ -322,7 +322,7 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
|
-
catch(const WebSocketException& ex)
|
|
325
|
+
catch (const WebSocketException& ex)
|
|
326
326
|
{
|
|
327
327
|
throw ProtocolException(__FILE__, __LINE__, ex.reason);
|
|
328
328
|
}
|
|
@@ -330,14 +330,14 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
330
330
|
_state = StateOpened;
|
|
331
331
|
_nextState = StateOpened;
|
|
332
332
|
|
|
333
|
-
if(_readI < _readBuffer.i)
|
|
333
|
+
if (_readI < _readBuffer.i)
|
|
334
334
|
{
|
|
335
335
|
_delegate->getNativeInfo()->ready(SocketOperationRead, true);
|
|
336
336
|
}
|
|
337
337
|
}
|
|
338
|
-
catch(const Ice::LocalException& ex)
|
|
338
|
+
catch (const Ice::LocalException& ex)
|
|
339
339
|
{
|
|
340
|
-
if(_instance->traceLevel() >= 2)
|
|
340
|
+
if (_instance->traceLevel() >= 2)
|
|
341
341
|
{
|
|
342
342
|
Trace out(_instance->logger(), _instance->traceCategory());
|
|
343
343
|
out << protocol() << " connection HTTP upgrade request failed\n" << toString() << "\n" << ex;
|
|
@@ -345,10 +345,10 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
345
345
|
throw;
|
|
346
346
|
}
|
|
347
347
|
|
|
348
|
-
if(_instance->traceLevel() >= 1)
|
|
348
|
+
if (_instance->traceLevel() >= 1)
|
|
349
349
|
{
|
|
350
350
|
Trace out(_instance->logger(), _instance->traceCategory());
|
|
351
|
-
if(_incoming)
|
|
351
|
+
if (_incoming)
|
|
352
352
|
{
|
|
353
353
|
out << "accepted " << protocol() << " connection HTTP upgrade request\n" << toString();
|
|
354
354
|
}
|
|
@@ -362,9 +362,9 @@ IceInternal::WSTransceiver::initialize(Buffer& readBuffer, Buffer& writeBuffer)
|
|
|
362
362
|
}
|
|
363
363
|
|
|
364
364
|
SocketOperation
|
|
365
|
-
IceInternal::WSTransceiver::closing(bool initiator,
|
|
365
|
+
IceInternal::WSTransceiver::closing(bool initiator, exception_ptr reason)
|
|
366
366
|
{
|
|
367
|
-
if(_instance->traceLevel() >= 1)
|
|
367
|
+
if (_instance->traceLevel() >= 1)
|
|
368
368
|
{
|
|
369
369
|
Trace out(_instance->logger(), _instance->traceCategory());
|
|
370
370
|
out << "gracefully closing " << protocol() << " connection\n" << toString();
|
|
@@ -372,7 +372,7 @@ IceInternal::WSTransceiver::closing(bool initiator, const Ice::LocalException& r
|
|
|
372
372
|
|
|
373
373
|
State s = _nextState == StateOpened ? _state : _nextState;
|
|
374
374
|
|
|
375
|
-
if(s == StateClosingRequestPending && _closingInitiator)
|
|
375
|
+
if (s == StateClosingRequestPending && _closingInitiator)
|
|
376
376
|
{
|
|
377
377
|
//
|
|
378
378
|
// If we initiated a close connection but also received a
|
|
@@ -386,32 +386,43 @@ IceInternal::WSTransceiver::closing(bool initiator, const Ice::LocalException& r
|
|
|
386
386
|
_closingInitiator = false;
|
|
387
387
|
return SocketOperationWrite;
|
|
388
388
|
}
|
|
389
|
-
else if(s >= StateClosingRequestPending)
|
|
389
|
+
else if (s >= StateClosingRequestPending)
|
|
390
390
|
{
|
|
391
391
|
return SocketOperationNone;
|
|
392
392
|
}
|
|
393
393
|
|
|
394
394
|
_closingInitiator = initiator;
|
|
395
395
|
|
|
396
|
-
|
|
396
|
+
try
|
|
397
|
+
{
|
|
398
|
+
rethrow_exception(reason);
|
|
399
|
+
}
|
|
400
|
+
catch (const Ice::CloseConnectionException&)
|
|
397
401
|
{
|
|
398
402
|
_closingReason = CLOSURE_NORMAL;
|
|
399
403
|
}
|
|
400
|
-
|
|
401
|
-
dynamic_cast<const Ice::CommunicatorDestroyedException*>(&reason))
|
|
404
|
+
catch (const Ice::ObjectAdapterDeactivatedException&)
|
|
402
405
|
{
|
|
403
406
|
_closingReason = CLOSURE_SHUTDOWN;
|
|
404
407
|
}
|
|
405
|
-
|
|
408
|
+
catch (const Ice::ObjectAdapterDestroyedException&)
|
|
406
409
|
{
|
|
407
|
-
_closingReason
|
|
410
|
+
_closingReason = CLOSURE_SHUTDOWN;
|
|
408
411
|
}
|
|
409
|
-
|
|
412
|
+
catch (const Ice::CommunicatorDestroyedException&)
|
|
410
413
|
{
|
|
411
|
-
_closingReason =
|
|
414
|
+
_closingReason = CLOSURE_SHUTDOWN;
|
|
415
|
+
}
|
|
416
|
+
catch (const Ice::ProtocolException&)
|
|
417
|
+
{
|
|
418
|
+
_closingReason = CLOSURE_PROTOCOL_ERROR;
|
|
419
|
+
}
|
|
420
|
+
catch (...)
|
|
421
|
+
{
|
|
422
|
+
// no closing reason
|
|
412
423
|
}
|
|
413
424
|
|
|
414
|
-
if(_state == StateOpened)
|
|
425
|
+
if (_state == StateOpened)
|
|
415
426
|
{
|
|
416
427
|
_state = StateClosingRequestPending;
|
|
417
428
|
return initiator ? SocketOperationRead : SocketOperationWrite;
|
|
@@ -432,11 +443,11 @@ IceInternal::WSTransceiver::close()
|
|
|
432
443
|
//
|
|
433
444
|
// Clear the buffers now instead of waiting for destruction.
|
|
434
445
|
//
|
|
435
|
-
if(!_writePending)
|
|
446
|
+
if (!_writePending)
|
|
436
447
|
{
|
|
437
448
|
_writeBuffer.b.clear();
|
|
438
449
|
}
|
|
439
|
-
if(!_readPending)
|
|
450
|
+
if (!_readPending)
|
|
440
451
|
{
|
|
441
452
|
_readBuffer.b.clear();
|
|
442
453
|
}
|
|
@@ -445,14 +456,14 @@ IceInternal::WSTransceiver::close()
|
|
|
445
456
|
SocketOperation
|
|
446
457
|
IceInternal::WSTransceiver::write(Buffer& buf)
|
|
447
458
|
{
|
|
448
|
-
if(_writePending)
|
|
459
|
+
if (_writePending)
|
|
449
460
|
{
|
|
450
461
|
return SocketOperationWrite;
|
|
451
462
|
}
|
|
452
463
|
|
|
453
|
-
if(_state < StateOpened)
|
|
464
|
+
if (_state < StateOpened)
|
|
454
465
|
{
|
|
455
|
-
if(_state < StateConnected)
|
|
466
|
+
if (_state < StateConnected)
|
|
456
467
|
{
|
|
457
468
|
return _delegate->write(buf);
|
|
458
469
|
}
|
|
@@ -464,29 +475,28 @@ IceInternal::WSTransceiver::write(Buffer& buf)
|
|
|
464
475
|
|
|
465
476
|
do
|
|
466
477
|
{
|
|
467
|
-
if(preWrite(buf))
|
|
478
|
+
if (preWrite(buf))
|
|
468
479
|
{
|
|
469
|
-
if(_writeBuffer.i < _writeBuffer.b.end())
|
|
480
|
+
if (_writeBuffer.i < _writeBuffer.b.end())
|
|
470
481
|
{
|
|
471
482
|
SocketOperation s = _delegate->write(_writeBuffer);
|
|
472
|
-
if(s)
|
|
483
|
+
if (s)
|
|
473
484
|
{
|
|
474
485
|
return s;
|
|
475
486
|
}
|
|
476
487
|
}
|
|
477
|
-
else if(_incoming && !buf.b.empty() && _writeState == WriteStatePayload)
|
|
488
|
+
else if (_incoming && !buf.b.empty() && _writeState == WriteStatePayload)
|
|
478
489
|
{
|
|
479
490
|
SocketOperation s = _delegate->write(buf);
|
|
480
|
-
if(s)
|
|
491
|
+
if (s)
|
|
481
492
|
{
|
|
482
493
|
return s;
|
|
483
494
|
}
|
|
484
495
|
}
|
|
485
496
|
}
|
|
486
|
-
}
|
|
487
|
-
while(postWrite(buf));
|
|
497
|
+
} while (postWrite(buf));
|
|
488
498
|
|
|
489
|
-
if(_state == StateClosingResponsePending && !_closingInitiator)
|
|
499
|
+
if (_state == StateClosingResponsePending && !_closingInitiator)
|
|
490
500
|
{
|
|
491
501
|
return SocketOperationRead;
|
|
492
502
|
}
|
|
@@ -496,20 +506,20 @@ IceInternal::WSTransceiver::write(Buffer& buf)
|
|
|
496
506
|
SocketOperation
|
|
497
507
|
IceInternal::WSTransceiver::read(Buffer& buf)
|
|
498
508
|
{
|
|
499
|
-
if(_readPending)
|
|
509
|
+
if (_readPending)
|
|
500
510
|
{
|
|
501
511
|
return SocketOperationRead;
|
|
502
512
|
}
|
|
503
513
|
|
|
504
|
-
if(_state < StateOpened)
|
|
514
|
+
if (_state < StateOpened)
|
|
505
515
|
{
|
|
506
|
-
if(_state < StateConnected)
|
|
516
|
+
if (_state < StateConnected)
|
|
507
517
|
{
|
|
508
518
|
return _delegate->read(buf);
|
|
509
519
|
}
|
|
510
520
|
else
|
|
511
521
|
{
|
|
512
|
-
if(_delegate->read(_readBuffer) == SocketOperationWrite)
|
|
522
|
+
if (_delegate->read(_readBuffer) == SocketOperationWrite)
|
|
513
523
|
{
|
|
514
524
|
return SocketOperationWrite;
|
|
515
525
|
}
|
|
@@ -524,9 +534,9 @@ IceInternal::WSTransceiver::read(Buffer& buf)
|
|
|
524
534
|
// If we read the full Ice message, handle it before trying
|
|
525
535
|
// reading anymore data from the WS connection.
|
|
526
536
|
//
|
|
527
|
-
if(buf.i == buf.b.end())
|
|
537
|
+
if (buf.i == buf.b.end())
|
|
528
538
|
{
|
|
529
|
-
if(_readI < _readBuffer.i)
|
|
539
|
+
if (_readI < _readBuffer.i)
|
|
530
540
|
{
|
|
531
541
|
_delegate->getNativeInfo()->ready(SocketOperationRead, true);
|
|
532
542
|
}
|
|
@@ -536,9 +546,9 @@ IceInternal::WSTransceiver::read(Buffer& buf)
|
|
|
536
546
|
SocketOperation s = SocketOperationNone;
|
|
537
547
|
do
|
|
538
548
|
{
|
|
539
|
-
if(preRead(buf))
|
|
549
|
+
if (preRead(buf))
|
|
540
550
|
{
|
|
541
|
-
if(_readState == ReadStatePayload)
|
|
551
|
+
if (_readState == ReadStatePayload)
|
|
542
552
|
{
|
|
543
553
|
//
|
|
544
554
|
// If the payload length is smaller than what remains to be read, we read
|
|
@@ -546,7 +556,7 @@ IceInternal::WSTransceiver::read(Buffer& buf)
|
|
|
546
556
|
// sent over in another frame.
|
|
547
557
|
//
|
|
548
558
|
size_t readSz = _readPayloadLength - static_cast<size_t>(buf.i - _readStart); // Already read
|
|
549
|
-
if(static_cast<size_t>(buf.b.end() - buf.i) > readSz)
|
|
559
|
+
if (static_cast<size_t>(buf.b.end() - buf.i) > readSz)
|
|
550
560
|
{
|
|
551
561
|
size_t size = buf.b.size();
|
|
552
562
|
buf.b.resize(static_cast<size_t>(buf.i - buf.b.begin()) + readSz);
|
|
@@ -563,18 +573,17 @@ IceInternal::WSTransceiver::read(Buffer& buf)
|
|
|
563
573
|
s = _delegate->read(_readBuffer);
|
|
564
574
|
}
|
|
565
575
|
|
|
566
|
-
if(s == SocketOperationWrite)
|
|
576
|
+
if (s == SocketOperationWrite)
|
|
567
577
|
{
|
|
568
578
|
postRead(buf);
|
|
569
579
|
return s;
|
|
570
580
|
}
|
|
571
581
|
}
|
|
572
|
-
}
|
|
573
|
-
while(postRead(buf));
|
|
582
|
+
} while (postRead(buf));
|
|
574
583
|
|
|
575
|
-
if(buf.i == buf.b.end())
|
|
584
|
+
if (buf.i == buf.b.end())
|
|
576
585
|
{
|
|
577
|
-
if(_readI < _readBuffer.i)
|
|
586
|
+
if (_readI < _readBuffer.i)
|
|
578
587
|
{
|
|
579
588
|
_delegate->getNativeInfo()->ready(SocketOperationRead, true);
|
|
580
589
|
}
|
|
@@ -586,11 +595,10 @@ IceInternal::WSTransceiver::read(Buffer& buf)
|
|
|
586
595
|
s = SocketOperationRead;
|
|
587
596
|
}
|
|
588
597
|
|
|
589
|
-
if(((_state == StateClosingRequestPending && !_closingInitiator) ||
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
_writeState == WriteStateHeader)
|
|
598
|
+
if (((_state == StateClosingRequestPending && !_closingInitiator) ||
|
|
599
|
+
(_state == StateClosingResponsePending && _closingInitiator) || _state == StatePingPending ||
|
|
600
|
+
_state == StatePongPending) &&
|
|
601
|
+
_writeState == WriteStateHeader)
|
|
594
602
|
{
|
|
595
603
|
// We have things to write, ask to be notified when writes are ready.
|
|
596
604
|
s = static_cast<SocketOperation>(s | SocketOperationWrite);
|
|
@@ -603,9 +611,9 @@ bool
|
|
|
603
611
|
IceInternal::WSTransceiver::startWrite(Buffer& buf)
|
|
604
612
|
{
|
|
605
613
|
_writePending = true;
|
|
606
|
-
if(_state < StateOpened)
|
|
614
|
+
if (_state < StateOpened)
|
|
607
615
|
{
|
|
608
|
-
if(_state < StateConnected)
|
|
616
|
+
if (_state < StateConnected)
|
|
609
617
|
{
|
|
610
618
|
return _delegate->startWrite(buf);
|
|
611
619
|
}
|
|
@@ -615,11 +623,11 @@ IceInternal::WSTransceiver::startWrite(Buffer& buf)
|
|
|
615
623
|
}
|
|
616
624
|
}
|
|
617
625
|
|
|
618
|
-
if(preWrite(buf))
|
|
626
|
+
if (preWrite(buf))
|
|
619
627
|
{
|
|
620
|
-
if(_writeBuffer.i < _writeBuffer.b.end())
|
|
628
|
+
if (_writeBuffer.i < _writeBuffer.b.end())
|
|
621
629
|
{
|
|
622
|
-
if(_delegate->startWrite(_writeBuffer))
|
|
630
|
+
if (_delegate->startWrite(_writeBuffer))
|
|
623
631
|
{
|
|
624
632
|
return buf.b.size() == _writePayloadLength; // Return true only if we've written the whole buffer.
|
|
625
633
|
}
|
|
@@ -643,9 +651,9 @@ IceInternal::WSTransceiver::finishWrite(Buffer& buf)
|
|
|
643
651
|
{
|
|
644
652
|
_writePending = false;
|
|
645
653
|
|
|
646
|
-
if(_state < StateOpened)
|
|
654
|
+
if (_state < StateOpened)
|
|
647
655
|
{
|
|
648
|
-
if(_state < StateConnected)
|
|
656
|
+
if (_state < StateConnected)
|
|
649
657
|
{
|
|
650
658
|
_delegate->finishWrite(buf);
|
|
651
659
|
}
|
|
@@ -656,17 +664,17 @@ IceInternal::WSTransceiver::finishWrite(Buffer& buf)
|
|
|
656
664
|
return;
|
|
657
665
|
}
|
|
658
666
|
|
|
659
|
-
if(_writeBuffer.i < _writeBuffer.b.end())
|
|
667
|
+
if (_writeBuffer.i < _writeBuffer.b.end())
|
|
660
668
|
{
|
|
661
669
|
_delegate->finishWrite(_writeBuffer);
|
|
662
670
|
}
|
|
663
|
-
else if(!buf.b.empty() && buf.i != buf.b.end())
|
|
671
|
+
else if (!buf.b.empty() && buf.i != buf.b.end())
|
|
664
672
|
{
|
|
665
673
|
assert(_incoming);
|
|
666
674
|
_delegate->finishWrite(buf);
|
|
667
675
|
}
|
|
668
676
|
|
|
669
|
-
if(_state == StateClosed)
|
|
677
|
+
if (_state == StateClosed)
|
|
670
678
|
{
|
|
671
679
|
_writeBuffer.b.clear();
|
|
672
680
|
return;
|
|
@@ -679,9 +687,9 @@ void
|
|
|
679
687
|
IceInternal::WSTransceiver::startRead(Buffer& buf)
|
|
680
688
|
{
|
|
681
689
|
_readPending = true;
|
|
682
|
-
if(_state < StateOpened)
|
|
690
|
+
if (_state < StateOpened)
|
|
683
691
|
{
|
|
684
|
-
if(_state < StateConnected)
|
|
692
|
+
if (_state < StateConnected)
|
|
685
693
|
{
|
|
686
694
|
_delegate->startRead(buf);
|
|
687
695
|
}
|
|
@@ -692,17 +700,17 @@ IceInternal::WSTransceiver::startRead(Buffer& buf)
|
|
|
692
700
|
return;
|
|
693
701
|
}
|
|
694
702
|
|
|
695
|
-
if(preRead(buf))
|
|
703
|
+
if (preRead(buf))
|
|
696
704
|
{
|
|
697
|
-
if(_readState == ReadStatePayload)
|
|
705
|
+
if (_readState == ReadStatePayload)
|
|
698
706
|
{
|
|
699
707
|
//
|
|
700
708
|
// If the payload length is smaller than what remains to be read, we read
|
|
701
709
|
// no more than the payload length. The remaining of the buffer will be
|
|
702
710
|
// sent over in another frame.
|
|
703
711
|
//
|
|
704
|
-
size_t readSz = _readPayloadLength
|
|
705
|
-
if(static_cast<size_t>(buf.b.end() - buf.i) > readSz)
|
|
712
|
+
size_t readSz = _readPayloadLength - (buf.i - _readStart);
|
|
713
|
+
if (static_cast<size_t>(buf.b.end() - buf.i) > readSz)
|
|
706
714
|
{
|
|
707
715
|
size_t size = buf.b.size();
|
|
708
716
|
buf.b.resize(buf.i - buf.b.begin() + readSz);
|
|
@@ -729,9 +737,9 @@ void
|
|
|
729
737
|
IceInternal::WSTransceiver::finishRead(Buffer& buf)
|
|
730
738
|
{
|
|
731
739
|
_readPending = false;
|
|
732
|
-
if(_state < StateOpened)
|
|
740
|
+
if (_state < StateOpened)
|
|
733
741
|
{
|
|
734
|
-
if(_state < StateConnected)
|
|
742
|
+
if (_state < StateConnected)
|
|
735
743
|
{
|
|
736
744
|
_delegate->finishRead(buf);
|
|
737
745
|
}
|
|
@@ -742,11 +750,11 @@ IceInternal::WSTransceiver::finishRead(Buffer& buf)
|
|
|
742
750
|
return;
|
|
743
751
|
}
|
|
744
752
|
|
|
745
|
-
if(buf.b.empty() || buf.i == buf.b.end())
|
|
753
|
+
if (buf.b.empty() || buf.i == buf.b.end())
|
|
746
754
|
{
|
|
747
755
|
// Nothing to do.
|
|
748
756
|
}
|
|
749
|
-
else if(_readState == ReadStatePayload)
|
|
757
|
+
else if (_readState == ReadStatePayload)
|
|
750
758
|
{
|
|
751
759
|
_delegate->finishRead(buf);
|
|
752
760
|
}
|
|
@@ -755,7 +763,7 @@ IceInternal::WSTransceiver::finishRead(Buffer& buf)
|
|
|
755
763
|
_delegate->finishRead(_readBuffer);
|
|
756
764
|
}
|
|
757
765
|
|
|
758
|
-
if(_state == StateClosed)
|
|
766
|
+
if (_state == StateClosed)
|
|
759
767
|
{
|
|
760
768
|
_readBuffer.b.clear();
|
|
761
769
|
return;
|
|
@@ -784,12 +792,11 @@ IceInternal::WSTransceiver::toDetailedString() const
|
|
|
784
792
|
}
|
|
785
793
|
|
|
786
794
|
Ice::ConnectionInfoPtr
|
|
787
|
-
IceInternal::WSTransceiver::getInfo() const
|
|
795
|
+
IceInternal::WSTransceiver::getInfo(bool incoming, string adapterName, string connectionId) const
|
|
788
796
|
{
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
return info;
|
|
797
|
+
return make_shared<WSConnectionInfo>(
|
|
798
|
+
_delegate->getInfo(incoming, std::move(adapterName), std::move(connectionId)),
|
|
799
|
+
_parser->getHeaders());
|
|
793
800
|
}
|
|
794
801
|
|
|
795
802
|
void
|
|
@@ -804,27 +811,30 @@ IceInternal::WSTransceiver::setBufferSize(int rcvSize, int sndSize)
|
|
|
804
811
|
_delegate->setBufferSize(rcvSize, sndSize);
|
|
805
812
|
}
|
|
806
813
|
|
|
807
|
-
IceInternal::WSTransceiver::WSTransceiver(
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
814
|
+
IceInternal::WSTransceiver::WSTransceiver(
|
|
815
|
+
ProtocolInstancePtr instance,
|
|
816
|
+
TransceiverPtr del,
|
|
817
|
+
string host,
|
|
818
|
+
string resource)
|
|
819
|
+
: _instance(std::move(instance)),
|
|
820
|
+
_delegate(std::move(del)),
|
|
821
|
+
_host(std::move(host)),
|
|
822
|
+
_resource(std::move(resource)),
|
|
823
|
+
_incoming(false),
|
|
824
|
+
_state(StateInitializeDelegate),
|
|
825
|
+
_parser(make_shared<HttpParser>()),
|
|
826
|
+
_readState(ReadStateOpcode),
|
|
827
|
+
_readBufferSize(1024),
|
|
828
|
+
_readLastFrame(true),
|
|
829
|
+
_readOpCode(0),
|
|
830
|
+
_readHeaderLength(0),
|
|
831
|
+
_readPayloadLength(0),
|
|
832
|
+
_writeState(WriteStateHeader),
|
|
833
|
+
_writeBufferSize(16 * 1024),
|
|
834
|
+
_readPending(false),
|
|
835
|
+
_writePending(false),
|
|
836
|
+
_closingInitiator(false),
|
|
837
|
+
_closingReason(CLOSURE_NORMAL)
|
|
828
838
|
{
|
|
829
839
|
//
|
|
830
840
|
// Use 1KB read and 16KB write buffer sizes. We use 16KB for the
|
|
@@ -835,33 +845,31 @@ IceInternal::WSTransceiver::WSTransceiver(const ProtocolInstancePtr& instance, c
|
|
|
835
845
|
//
|
|
836
846
|
}
|
|
837
847
|
|
|
838
|
-
IceInternal::WSTransceiver::WSTransceiver(
|
|
839
|
-
_instance(instance),
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
848
|
+
IceInternal::WSTransceiver::WSTransceiver(ProtocolInstancePtr instance, TransceiverPtr del)
|
|
849
|
+
: _instance(std::move(instance)),
|
|
850
|
+
_delegate(std::move(del)),
|
|
851
|
+
_incoming(true),
|
|
852
|
+
_state(StateInitializeDelegate),
|
|
853
|
+
_parser(make_shared<HttpParser>()),
|
|
854
|
+
_readState(ReadStateOpcode),
|
|
855
|
+
_readBufferSize(1024),
|
|
856
|
+
_readLastFrame(true),
|
|
857
|
+
_readOpCode(0),
|
|
858
|
+
_readHeaderLength(0),
|
|
859
|
+
_readPayloadLength(0),
|
|
860
|
+
_writeState(WriteStateHeader),
|
|
861
|
+
_writeBufferSize(1024),
|
|
862
|
+
_readPending(false),
|
|
863
|
+
_writePending(false),
|
|
864
|
+
_closingInitiator(false),
|
|
865
|
+
_closingReason(CLOSURE_NORMAL)
|
|
856
866
|
{
|
|
857
867
|
//
|
|
858
868
|
// Use 1KB read and write buffer sizes.
|
|
859
869
|
//
|
|
860
870
|
}
|
|
861
871
|
|
|
862
|
-
IceInternal::WSTransceiver::~WSTransceiver()
|
|
863
|
-
{
|
|
864
|
-
}
|
|
872
|
+
IceInternal::WSTransceiver::~WSTransceiver() = default;
|
|
865
873
|
|
|
866
874
|
void
|
|
867
875
|
IceInternal::WSTransceiver::handleRequest(Buffer& responseBuffer)
|
|
@@ -871,7 +879,7 @@ IceInternal::WSTransceiver::handleRequest(Buffer& responseBuffer)
|
|
|
871
879
|
//
|
|
872
880
|
// HTTP/1.1
|
|
873
881
|
//
|
|
874
|
-
if(_parser->versionMajor() != 1 || _parser->versionMinor() != 1)
|
|
882
|
+
if (_parser->versionMajor() != 1 || _parser->versionMinor() != 1)
|
|
875
883
|
{
|
|
876
884
|
throw WebSocketException("unsupported HTTP version");
|
|
877
885
|
}
|
|
@@ -880,38 +888,38 @@ IceInternal::WSTransceiver::handleRequest(Buffer& responseBuffer)
|
|
|
880
888
|
// "An |Upgrade| header field containing the value 'websocket',
|
|
881
889
|
// treated as an ASCII case-insensitive value."
|
|
882
890
|
//
|
|
883
|
-
if(!_parser->getHeader("Upgrade", val, true))
|
|
891
|
+
if (!_parser->getHeader("Upgrade", val, true))
|
|
884
892
|
{
|
|
885
893
|
throw WebSocketException("missing value for Upgrade field");
|
|
886
894
|
}
|
|
887
|
-
else if(val != "websocket")
|
|
895
|
+
else if (val != "websocket")
|
|
888
896
|
{
|
|
889
|
-
throw WebSocketException("invalid value
|
|
897
|
+
throw WebSocketException("invalid value '" + val + "' for Upgrade field");
|
|
890
898
|
}
|
|
891
899
|
|
|
892
900
|
//
|
|
893
901
|
// "A |Connection| header field that includes the token 'Upgrade',
|
|
894
902
|
// treated as an ASCII case-insensitive value.
|
|
895
903
|
//
|
|
896
|
-
if(!_parser->getHeader("Connection", val, true))
|
|
904
|
+
if (!_parser->getHeader("Connection", val, true))
|
|
897
905
|
{
|
|
898
906
|
throw WebSocketException("missing value for Connection field");
|
|
899
907
|
}
|
|
900
|
-
else if(val.find("upgrade") == string::npos)
|
|
908
|
+
else if (val.find("upgrade") == string::npos)
|
|
901
909
|
{
|
|
902
|
-
throw WebSocketException("invalid value
|
|
910
|
+
throw WebSocketException("invalid value '" + val + "' for Connection field");
|
|
903
911
|
}
|
|
904
912
|
|
|
905
913
|
//
|
|
906
914
|
// "A |Sec-WebSocket-Version| header field, with a value of 13."
|
|
907
915
|
//
|
|
908
|
-
if(!_parser->getHeader("Sec-WebSocket-Version", val, false))
|
|
916
|
+
if (!_parser->getHeader("Sec-WebSocket-Version", val, false))
|
|
909
917
|
{
|
|
910
918
|
throw WebSocketException("missing value for WebSocket version");
|
|
911
919
|
}
|
|
912
|
-
else if(val != "13")
|
|
920
|
+
else if (val != "13")
|
|
913
921
|
{
|
|
914
|
-
throw WebSocketException("unsupported WebSocket version
|
|
922
|
+
throw WebSocketException("unsupported WebSocket version '" + val + "'");
|
|
915
923
|
}
|
|
916
924
|
|
|
917
925
|
//
|
|
@@ -920,18 +928,18 @@ IceInternal::WSTransceiver::handleRequest(Buffer& responseBuffer)
|
|
|
920
928
|
// speak, ordered by preference."
|
|
921
929
|
//
|
|
922
930
|
bool addProtocol = false;
|
|
923
|
-
if(_parser->getHeader("Sec-WebSocket-Protocol", val, true))
|
|
931
|
+
if (_parser->getHeader("Sec-WebSocket-Protocol", val, true))
|
|
924
932
|
{
|
|
925
933
|
vector<string> protocols;
|
|
926
|
-
if(!
|
|
934
|
+
if (!IceInternal::splitString(val, ",", protocols))
|
|
927
935
|
{
|
|
928
|
-
throw WebSocketException("invalid value
|
|
936
|
+
throw WebSocketException("invalid value '" + val + "' for WebSocket protocol");
|
|
929
937
|
}
|
|
930
|
-
for(
|
|
938
|
+
for (const auto& protocol : protocols)
|
|
931
939
|
{
|
|
932
|
-
if(
|
|
940
|
+
if (IceInternal::trim(protocol) != _iceProtocol)
|
|
933
941
|
{
|
|
934
|
-
throw WebSocketException("unknown value
|
|
942
|
+
throw WebSocketException("unknown value '" + protocol + "' for WebSocket protocol");
|
|
935
943
|
}
|
|
936
944
|
addProtocol = true;
|
|
937
945
|
}
|
|
@@ -942,15 +950,15 @@ IceInternal::WSTransceiver::handleRequest(Buffer& responseBuffer)
|
|
|
942
950
|
// value that, when decoded, is 16 bytes in length."
|
|
943
951
|
//
|
|
944
952
|
string key;
|
|
945
|
-
if(!_parser->getHeader("Sec-WebSocket-Key", key, false))
|
|
953
|
+
if (!_parser->getHeader("Sec-WebSocket-Key", key, false))
|
|
946
954
|
{
|
|
947
955
|
throw WebSocketException("missing value for WebSocket key");
|
|
948
956
|
}
|
|
949
957
|
|
|
950
|
-
vector<
|
|
951
|
-
if(decodedKey.size() != 16)
|
|
958
|
+
vector<byte> decodedKey = Base64::decode(key);
|
|
959
|
+
if (decodedKey.size() != 16)
|
|
952
960
|
{
|
|
953
|
-
throw WebSocketException("invalid value
|
|
961
|
+
throw WebSocketException("invalid value '" + key + "' for WebSocket key");
|
|
954
962
|
}
|
|
955
963
|
|
|
956
964
|
//
|
|
@@ -965,7 +973,7 @@ IceInternal::WSTransceiver::handleRequest(Buffer& responseBuffer)
|
|
|
965
973
|
out << "HTTP/1.1 101 Switching Protocols\r\n"
|
|
966
974
|
<< "Upgrade: websocket\r\n"
|
|
967
975
|
<< "Connection: Upgrade\r\n";
|
|
968
|
-
if(addProtocol)
|
|
976
|
+
if (addProtocol)
|
|
969
977
|
{
|
|
970
978
|
out << "Sec-WebSocket-Protocol: " << _iceProtocol << "\r\n";
|
|
971
979
|
}
|
|
@@ -982,9 +990,10 @@ IceInternal::WSTransceiver::handleRequest(Buffer& responseBuffer)
|
|
|
982
990
|
//
|
|
983
991
|
out << "Sec-WebSocket-Accept: ";
|
|
984
992
|
string input = key + _wsUUID;
|
|
985
|
-
vector<
|
|
986
|
-
sha1(reinterpret_cast<const
|
|
987
|
-
out << IceInternal::Base64::encode(hash) << "\r\n"
|
|
993
|
+
vector<byte> hash;
|
|
994
|
+
sha1(reinterpret_cast<const byte*>(&input[0]), input.size(), hash);
|
|
995
|
+
out << IceInternal::Base64::encode(hash) << "\r\n"
|
|
996
|
+
<< "\r\n"; // EOM
|
|
988
997
|
|
|
989
998
|
string str = out.str();
|
|
990
999
|
responseBuffer.b.resize(str.size());
|
|
@@ -1000,7 +1009,7 @@ IceInternal::WSTransceiver::handleResponse()
|
|
|
1000
1009
|
//
|
|
1001
1010
|
// HTTP/1.1
|
|
1002
1011
|
//
|
|
1003
|
-
if(_parser->versionMajor() != 1 || _parser->versionMinor() != 1)
|
|
1012
|
+
if (_parser->versionMajor() != 1 || _parser->versionMinor() != 1)
|
|
1004
1013
|
{
|
|
1005
1014
|
throw WebSocketException("unsupported HTTP version");
|
|
1006
1015
|
}
|
|
@@ -1013,11 +1022,11 @@ IceInternal::WSTransceiver::handleResponse()
|
|
|
1013
1022
|
// using a 3xx status code (but clients are not required to follow
|
|
1014
1023
|
// them), etc."
|
|
1015
1024
|
//
|
|
1016
|
-
if(_parser->status() != 101)
|
|
1025
|
+
if (_parser->status() != 101)
|
|
1017
1026
|
{
|
|
1018
1027
|
ostringstream out;
|
|
1019
1028
|
out << "unexpected status value " << _parser->status();
|
|
1020
|
-
if(!_parser->reason().empty())
|
|
1029
|
+
if (!_parser->reason().empty())
|
|
1021
1030
|
{
|
|
1022
1031
|
out << ":" << endl << _parser->reason();
|
|
1023
1032
|
}
|
|
@@ -1030,13 +1039,13 @@ IceInternal::WSTransceiver::handleResponse()
|
|
|
1030
1039
|
// insensitive match for the value "websocket", the client MUST
|
|
1031
1040
|
// _Fail the WebSocket Connection_."
|
|
1032
1041
|
//
|
|
1033
|
-
if(!_parser->getHeader("Upgrade", val, true))
|
|
1042
|
+
if (!_parser->getHeader("Upgrade", val, true))
|
|
1034
1043
|
{
|
|
1035
1044
|
throw WebSocketException("missing value for Upgrade field");
|
|
1036
1045
|
}
|
|
1037
|
-
else if(val != "websocket")
|
|
1046
|
+
else if (val != "websocket")
|
|
1038
1047
|
{
|
|
1039
|
-
throw WebSocketException("invalid value
|
|
1048
|
+
throw WebSocketException("invalid value '" + val + "' for Upgrade field");
|
|
1040
1049
|
}
|
|
1041
1050
|
|
|
1042
1051
|
//
|
|
@@ -1045,13 +1054,13 @@ IceInternal::WSTransceiver::handleResponse()
|
|
|
1045
1054
|
// ASCII case-insensitive match for the value "Upgrade", the client
|
|
1046
1055
|
// MUST _Fail the WebSocket Connection_."
|
|
1047
1056
|
//
|
|
1048
|
-
if(!_parser->getHeader("Connection", val, true))
|
|
1057
|
+
if (!_parser->getHeader("Connection", val, true))
|
|
1049
1058
|
{
|
|
1050
1059
|
throw WebSocketException("missing value for Connection field");
|
|
1051
1060
|
}
|
|
1052
|
-
else if(val.find("upgrade") == string::npos)
|
|
1061
|
+
else if (val.find("upgrade") == string::npos)
|
|
1053
1062
|
{
|
|
1054
|
-
throw WebSocketException("invalid value
|
|
1063
|
+
throw WebSocketException("invalid value '" + val + "' for Connection field");
|
|
1055
1064
|
}
|
|
1056
1065
|
|
|
1057
1066
|
//
|
|
@@ -1061,9 +1070,9 @@ IceInternal::WSTransceiver::handleResponse()
|
|
|
1061
1070
|
// subprotocol not requested by the client), the client MUST _Fail
|
|
1062
1071
|
// the WebSocket Connection_."
|
|
1063
1072
|
//
|
|
1064
|
-
if(_parser->getHeader("Sec-WebSocket-Protocol", val, true) && val != _iceProtocol)
|
|
1073
|
+
if (_parser->getHeader("Sec-WebSocket-Protocol", val, true) && val != _iceProtocol)
|
|
1065
1074
|
{
|
|
1066
|
-
throw WebSocketException("invalid value
|
|
1075
|
+
throw WebSocketException("invalid value '" + val + "' for WebSocket protocol");
|
|
1067
1076
|
}
|
|
1068
1077
|
|
|
1069
1078
|
//
|
|
@@ -1075,30 +1084,30 @@ IceInternal::WSTransceiver::handleResponse()
|
|
|
1075
1084
|
// trailing whitespace, the client MUST _Fail the WebSocket
|
|
1076
1085
|
// Connection_."
|
|
1077
1086
|
//
|
|
1078
|
-
if(!_parser->getHeader("Sec-WebSocket-Accept", val, false))
|
|
1087
|
+
if (!_parser->getHeader("Sec-WebSocket-Accept", val, false))
|
|
1079
1088
|
{
|
|
1080
1089
|
throw WebSocketException("missing value for Sec-WebSocket-Accept");
|
|
1081
1090
|
}
|
|
1082
1091
|
string input = _key + _wsUUID;
|
|
1083
|
-
vector<
|
|
1084
|
-
sha1(reinterpret_cast<const
|
|
1085
|
-
if(val != IceInternal::Base64::encode(hash))
|
|
1092
|
+
vector<byte> hash;
|
|
1093
|
+
sha1(reinterpret_cast<const byte*>(&input[0]), input.size(), hash);
|
|
1094
|
+
if (val != IceInternal::Base64::encode(hash))
|
|
1086
1095
|
{
|
|
1087
|
-
throw WebSocketException("invalid value
|
|
1096
|
+
throw WebSocketException("invalid value '" + val + "' for Sec-WebSocket-Accept");
|
|
1088
1097
|
}
|
|
1089
1098
|
}
|
|
1090
1099
|
|
|
1091
1100
|
bool
|
|
1092
1101
|
IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
1093
1102
|
{
|
|
1094
|
-
while(true)
|
|
1103
|
+
while (true)
|
|
1095
1104
|
{
|
|
1096
|
-
if(_readState == ReadStateOpcode)
|
|
1105
|
+
if (_readState == ReadStateOpcode)
|
|
1097
1106
|
{
|
|
1098
1107
|
//
|
|
1099
1108
|
// Is there enough data available to read the opcode?
|
|
1100
1109
|
//
|
|
1101
|
-
if(!readBuffered(2))
|
|
1110
|
+
if (!readBuffered(2))
|
|
1102
1111
|
{
|
|
1103
1112
|
return true;
|
|
1104
1113
|
}
|
|
@@ -1108,39 +1117,39 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
|
1108
1117
|
// last frame. Least-significant four bits hold the
|
|
1109
1118
|
// opcode.
|
|
1110
1119
|
//
|
|
1111
|
-
|
|
1112
|
-
_readOpCode = ch & 0xf;
|
|
1120
|
+
byte ch = *_readI++;
|
|
1121
|
+
_readOpCode = static_cast<int>(ch & byte{0xf});
|
|
1113
1122
|
|
|
1114
1123
|
//
|
|
1115
1124
|
// Remember if last frame if we're going to read a data or
|
|
1116
1125
|
// continuation frame, this is only for protocol
|
|
1117
1126
|
// correctness checking purpose.
|
|
1118
1127
|
//
|
|
1119
|
-
if(_readOpCode == OP_DATA)
|
|
1128
|
+
if (_readOpCode == OP_DATA)
|
|
1120
1129
|
{
|
|
1121
|
-
if(!_readLastFrame)
|
|
1130
|
+
if (!_readLastFrame)
|
|
1122
1131
|
{
|
|
1123
1132
|
throw ProtocolException(__FILE__, __LINE__, "invalid data frame, no FIN on previous frame");
|
|
1124
1133
|
}
|
|
1125
|
-
_readLastFrame = (ch & FLAG_FINAL) == FLAG_FINAL;
|
|
1134
|
+
_readLastFrame = (ch & byte{FLAG_FINAL}) == byte{FLAG_FINAL};
|
|
1126
1135
|
}
|
|
1127
|
-
else if(_readOpCode == OP_CONT)
|
|
1136
|
+
else if (_readOpCode == OP_CONT)
|
|
1128
1137
|
{
|
|
1129
|
-
if(_readLastFrame)
|
|
1138
|
+
if (_readLastFrame)
|
|
1130
1139
|
{
|
|
1131
1140
|
throw ProtocolException(__FILE__, __LINE__, "invalid continuation frame, previous frame FIN set");
|
|
1132
1141
|
}
|
|
1133
|
-
_readLastFrame = (ch & FLAG_FINAL) == FLAG_FINAL;
|
|
1142
|
+
_readLastFrame = (ch & byte{FLAG_FINAL}) == byte{FLAG_FINAL};
|
|
1134
1143
|
}
|
|
1135
1144
|
|
|
1136
|
-
ch =
|
|
1145
|
+
ch = *_readI++;
|
|
1137
1146
|
|
|
1138
1147
|
//
|
|
1139
1148
|
// Check the MASK bit. Messages sent by a client must be masked;
|
|
1140
1149
|
// messages sent by a server must not be masked.
|
|
1141
1150
|
//
|
|
1142
|
-
const bool masked = (ch & FLAG_MASKED) == FLAG_MASKED;
|
|
1143
|
-
if(masked != _incoming)
|
|
1151
|
+
const bool masked = (ch & byte{FLAG_MASKED}) == byte{FLAG_MASKED};
|
|
1152
|
+
if (masked != _incoming)
|
|
1144
1153
|
{
|
|
1145
1154
|
throw ProtocolException(__FILE__, __LINE__, "invalid masking");
|
|
1146
1155
|
}
|
|
@@ -1152,12 +1161,12 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
|
1152
1161
|
// 126: The subsequent two bytes contain the payload length
|
|
1153
1162
|
// 127: The subsequent eight bytes contain the payload length
|
|
1154
1163
|
//
|
|
1155
|
-
_readPayloadLength = (ch & 0x7f);
|
|
1156
|
-
if(_readPayloadLength < 126)
|
|
1164
|
+
_readPayloadLength = static_cast<size_t>((ch & byte{0x7f}));
|
|
1165
|
+
if (_readPayloadLength < 126)
|
|
1157
1166
|
{
|
|
1158
1167
|
_readHeaderLength = 0;
|
|
1159
1168
|
}
|
|
1160
|
-
else if(_readPayloadLength == 126)
|
|
1169
|
+
else if (_readPayloadLength == 126)
|
|
1161
1170
|
{
|
|
1162
1171
|
_readHeaderLength = 2; // Need to read a 16-bit payload length.
|
|
1163
1172
|
}
|
|
@@ -1165,7 +1174,7 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
|
1165
1174
|
{
|
|
1166
1175
|
_readHeaderLength = 8; // Need to read a 64-bit payload length.
|
|
1167
1176
|
}
|
|
1168
|
-
if(masked)
|
|
1177
|
+
if (masked)
|
|
1169
1178
|
{
|
|
1170
1179
|
_readHeaderLength += 4; // Need to read a 32-bit mask.
|
|
1171
1180
|
}
|
|
@@ -1173,27 +1182,27 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
|
1173
1182
|
_readState = ReadStateHeader;
|
|
1174
1183
|
}
|
|
1175
1184
|
|
|
1176
|
-
if(_readState == ReadStateHeader)
|
|
1185
|
+
if (_readState == ReadStateHeader)
|
|
1177
1186
|
{
|
|
1178
1187
|
//
|
|
1179
1188
|
// Is there enough data available to read the header?
|
|
1180
1189
|
//
|
|
1181
|
-
if(_readHeaderLength > 0 && !readBuffered(_readHeaderLength))
|
|
1190
|
+
if (_readHeaderLength > 0 && !readBuffered(_readHeaderLength))
|
|
1182
1191
|
{
|
|
1183
1192
|
return true;
|
|
1184
1193
|
}
|
|
1185
1194
|
|
|
1186
|
-
if(_readPayloadLength == 126)
|
|
1195
|
+
if (_readPayloadLength == 126)
|
|
1187
1196
|
{
|
|
1188
1197
|
_readPayloadLength = static_cast<size_t>(ntohs(*reinterpret_cast<uint16_t*>(_readI)));
|
|
1189
1198
|
_readI += 2;
|
|
1190
1199
|
}
|
|
1191
|
-
else if(_readPayloadLength == 127)
|
|
1200
|
+
else if (_readPayloadLength == 127)
|
|
1192
1201
|
{
|
|
1193
1202
|
assert(_readPayloadLength == 127);
|
|
1194
|
-
|
|
1203
|
+
int64_t l = ice_nlltoh(_readI);
|
|
1195
1204
|
_readI += 8;
|
|
1196
|
-
if(l < 0 || l > INT_MAX)
|
|
1205
|
+
if (l < 0 || l > INT_MAX)
|
|
1197
1206
|
{
|
|
1198
1207
|
ostringstream ostr;
|
|
1199
1208
|
ostr << "invalid WebSocket payload length: " << l;
|
|
@@ -1205,111 +1214,111 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
|
1205
1214
|
//
|
|
1206
1215
|
// Read the mask if this is an incoming connection.
|
|
1207
1216
|
//
|
|
1208
|
-
if(_incoming)
|
|
1217
|
+
if (_incoming)
|
|
1209
1218
|
{
|
|
1210
1219
|
assert(_readBuffer.i - _readI >= 4); // We must have needed to read the mask.
|
|
1211
|
-
memcpy(_readMask, _readI, 4);
|
|
1220
|
+
memcpy(_readMask, _readI, 4); // Copy the mask.
|
|
1212
1221
|
_readI += 4;
|
|
1213
1222
|
}
|
|
1214
1223
|
|
|
1215
|
-
switch(_readOpCode)
|
|
1216
|
-
{
|
|
1217
|
-
case OP_TEXT: // Text frame
|
|
1218
|
-
{
|
|
1219
|
-
throw ProtocolException(__FILE__, __LINE__, "text frames not supported");
|
|
1220
|
-
}
|
|
1221
|
-
case OP_DATA: // Data frame
|
|
1222
|
-
case OP_CONT: // Continuation frame
|
|
1224
|
+
switch (_readOpCode)
|
|
1223
1225
|
{
|
|
1224
|
-
|
|
1226
|
+
case OP_TEXT: // Text frame
|
|
1225
1227
|
{
|
|
1226
|
-
|
|
1227
|
-
out << "received " << protocol() << (_readOpCode == OP_DATA ? " data" : " continuation");
|
|
1228
|
-
out << " frame with payload length of " << _readPayloadLength;
|
|
1229
|
-
out << " bytes\n" << toString();
|
|
1230
|
-
}
|
|
1231
|
-
|
|
1232
|
-
if(_readPayloadLength <= 0)
|
|
1233
|
-
{
|
|
1234
|
-
throw ProtocolException(__FILE__, __LINE__, "payload length is 0");
|
|
1228
|
+
throw ProtocolException(__FILE__, __LINE__, "text frames not supported");
|
|
1235
1229
|
}
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
_readFrameStart = buf.i;
|
|
1239
|
-
break;
|
|
1240
|
-
}
|
|
1241
|
-
case OP_CLOSE: // Connection close
|
|
1242
|
-
{
|
|
1243
|
-
if(_instance->traceLevel() >= 2)
|
|
1230
|
+
case OP_DATA: // Data frame
|
|
1231
|
+
case OP_CONT: // Continuation frame
|
|
1244
1232
|
{
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1233
|
+
if (_instance->traceLevel() >= 2)
|
|
1234
|
+
{
|
|
1235
|
+
Trace out(_instance->logger(), _instance->traceCategory());
|
|
1236
|
+
out << "received " << protocol() << (_readOpCode == OP_DATA ? " data" : " continuation");
|
|
1237
|
+
out << " frame with payload length of " << _readPayloadLength;
|
|
1238
|
+
out << " bytes\n" << toString();
|
|
1239
|
+
}
|
|
1248
1240
|
|
|
1249
|
-
|
|
1250
|
-
|
|
1241
|
+
if (_readPayloadLength <= 0)
|
|
1242
|
+
{
|
|
1243
|
+
throw ProtocolException(__FILE__, __LINE__, "payload length is 0");
|
|
1244
|
+
}
|
|
1245
|
+
_readState = ReadStatePayload;
|
|
1246
|
+
assert(buf.i != buf.b.end());
|
|
1247
|
+
_readFrameStart = buf.i;
|
|
1248
|
+
break;
|
|
1249
|
+
}
|
|
1250
|
+
case OP_CLOSE: // Connection close
|
|
1251
1251
|
{
|
|
1252
|
-
|
|
1253
|
-
// If we receive a close frame while we were actually
|
|
1254
|
-
// waiting to send one, change the role and send a
|
|
1255
|
-
// close frame response.
|
|
1256
|
-
//
|
|
1257
|
-
if(!_closingInitiator)
|
|
1252
|
+
if (_instance->traceLevel() >= 2)
|
|
1258
1253
|
{
|
|
1259
|
-
|
|
1254
|
+
Trace out(_instance->logger(), _instance->traceCategory());
|
|
1255
|
+
out << "received " << protocol() << " connection close frame\n" << toString();
|
|
1260
1256
|
}
|
|
1261
|
-
|
|
1257
|
+
|
|
1258
|
+
State s = _nextState == StateOpened ? _state : _nextState;
|
|
1259
|
+
if (s == StateClosingRequestPending)
|
|
1262
1260
|
{
|
|
1263
|
-
|
|
1261
|
+
//
|
|
1262
|
+
// If we receive a close frame while we were actually
|
|
1263
|
+
// waiting to send one, change the role and send a
|
|
1264
|
+
// close frame response.
|
|
1265
|
+
//
|
|
1266
|
+
if (!_closingInitiator)
|
|
1267
|
+
{
|
|
1268
|
+
_closingInitiator = true;
|
|
1269
|
+
}
|
|
1270
|
+
if (_state == StateClosingRequestPending)
|
|
1271
|
+
{
|
|
1272
|
+
_state = StateClosingResponsePending;
|
|
1273
|
+
}
|
|
1274
|
+
else
|
|
1275
|
+
{
|
|
1276
|
+
_nextState = StateClosingResponsePending;
|
|
1277
|
+
}
|
|
1278
|
+
return false; // No longer interested in reading
|
|
1264
1279
|
}
|
|
1265
1280
|
else
|
|
1266
1281
|
{
|
|
1267
|
-
|
|
1282
|
+
throw ConnectionLostException(__FILE__, __LINE__);
|
|
1268
1283
|
}
|
|
1269
|
-
return false; // No longer interested in reading
|
|
1270
1284
|
}
|
|
1271
|
-
|
|
1285
|
+
case OP_PING:
|
|
1272
1286
|
{
|
|
1273
|
-
|
|
1287
|
+
if (_instance->traceLevel() >= 2)
|
|
1288
|
+
{
|
|
1289
|
+
Trace out(_instance->logger(), _instance->traceCategory());
|
|
1290
|
+
out << "received " << protocol() << " connection ping frame\n" << toString();
|
|
1291
|
+
}
|
|
1292
|
+
_readState = ReadStateControlFrame;
|
|
1293
|
+
break;
|
|
1274
1294
|
}
|
|
1275
|
-
|
|
1276
|
-
case OP_PING:
|
|
1277
|
-
{
|
|
1278
|
-
if(_instance->traceLevel() >= 2)
|
|
1295
|
+
case OP_PONG: // Pong
|
|
1279
1296
|
{
|
|
1280
|
-
|
|
1281
|
-
|
|
1297
|
+
if (_instance->traceLevel() >= 2)
|
|
1298
|
+
{
|
|
1299
|
+
Trace out(_instance->logger(), _instance->traceCategory());
|
|
1300
|
+
out << "received " << protocol() << " connection pong frame\n" << toString();
|
|
1301
|
+
}
|
|
1302
|
+
_readState = ReadStateControlFrame;
|
|
1303
|
+
break;
|
|
1282
1304
|
}
|
|
1283
|
-
|
|
1284
|
-
break;
|
|
1285
|
-
}
|
|
1286
|
-
case OP_PONG: // Pong
|
|
1287
|
-
{
|
|
1288
|
-
if(_instance->traceLevel() >= 2)
|
|
1305
|
+
default:
|
|
1289
1306
|
{
|
|
1290
|
-
|
|
1291
|
-
|
|
1307
|
+
ostringstream ostr;
|
|
1308
|
+
ostr << "unsupported opcode: " << _readOpCode;
|
|
1309
|
+
throw ProtocolException(__FILE__, __LINE__, ostr.str());
|
|
1292
1310
|
}
|
|
1293
|
-
_readState = ReadStateControlFrame;
|
|
1294
|
-
break;
|
|
1295
|
-
}
|
|
1296
|
-
default:
|
|
1297
|
-
{
|
|
1298
|
-
ostringstream ostr;
|
|
1299
|
-
ostr << "unsupported opcode: " << _readOpCode;
|
|
1300
|
-
throw ProtocolException(__FILE__, __LINE__, ostr.str());
|
|
1301
|
-
}
|
|
1302
1311
|
}
|
|
1303
1312
|
}
|
|
1304
1313
|
|
|
1305
|
-
if(_readState == ReadStateControlFrame)
|
|
1314
|
+
if (_readState == ReadStateControlFrame)
|
|
1306
1315
|
{
|
|
1307
|
-
if(_readPayloadLength > 0 && !readBuffered(_readPayloadLength))
|
|
1316
|
+
if (_readPayloadLength > 0 && !readBuffered(_readPayloadLength))
|
|
1308
1317
|
{
|
|
1309
1318
|
return true;
|
|
1310
1319
|
}
|
|
1311
1320
|
|
|
1312
|
-
if(_readPayloadLength > 0 && _readOpCode == OP_PING)
|
|
1321
|
+
if (_readPayloadLength > 0 && _readOpCode == OP_PING)
|
|
1313
1322
|
{
|
|
1314
1323
|
_pingPayload.clear();
|
|
1315
1324
|
_pingPayload.resize(_readPayloadLength);
|
|
@@ -1319,13 +1328,13 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
|
1319
1328
|
_readI += _readPayloadLength;
|
|
1320
1329
|
_readPayloadLength = 0;
|
|
1321
1330
|
|
|
1322
|
-
if(_readOpCode == OP_PING)
|
|
1331
|
+
if (_readOpCode == OP_PING)
|
|
1323
1332
|
{
|
|
1324
|
-
if(_state == StateOpened)
|
|
1333
|
+
if (_state == StateOpened)
|
|
1325
1334
|
{
|
|
1326
1335
|
_state = StatePongPending; // Send pong frame now
|
|
1327
1336
|
}
|
|
1328
|
-
else if(_nextState < StatePongPending)
|
|
1337
|
+
else if (_nextState < StatePongPending)
|
|
1329
1338
|
{
|
|
1330
1339
|
_nextState = StatePongPending; // Send pong frame next
|
|
1331
1340
|
}
|
|
@@ -1338,7 +1347,7 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
|
1338
1347
|
_readState = ReadStateOpcode;
|
|
1339
1348
|
}
|
|
1340
1349
|
|
|
1341
|
-
if(_readState == ReadStatePayload)
|
|
1350
|
+
if (_readState == ReadStatePayload)
|
|
1342
1351
|
{
|
|
1343
1352
|
//
|
|
1344
1353
|
// This must be assigned before the check for the buffer. If the buffer is empty
|
|
@@ -1346,18 +1355,18 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
|
1346
1355
|
//
|
|
1347
1356
|
_readStart = buf.i;
|
|
1348
1357
|
|
|
1349
|
-
if(buf.b.empty() || buf.i == buf.b.end())
|
|
1358
|
+
if (buf.b.empty() || buf.i == buf.b.end())
|
|
1350
1359
|
{
|
|
1351
1360
|
return false;
|
|
1352
1361
|
}
|
|
1353
1362
|
|
|
1354
1363
|
size_t n = min(static_cast<size_t>(_readBuffer.i - _readI), static_cast<size_t>(buf.b.end() - buf.i));
|
|
1355
1364
|
|
|
1356
|
-
if(n > _readPayloadLength)
|
|
1365
|
+
if (n > _readPayloadLength)
|
|
1357
1366
|
{
|
|
1358
1367
|
n = _readPayloadLength;
|
|
1359
1368
|
}
|
|
1360
|
-
if(n > 0)
|
|
1369
|
+
if (n > 0)
|
|
1361
1370
|
{
|
|
1362
1371
|
memcpy(buf.i, _readI, n);
|
|
1363
1372
|
buf.i += n;
|
|
@@ -1375,24 +1384,24 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
|
1375
1384
|
bool
|
|
1376
1385
|
IceInternal::WSTransceiver::postRead(Buffer& buf)
|
|
1377
1386
|
{
|
|
1378
|
-
if(_readState != ReadStatePayload)
|
|
1387
|
+
if (_readState != ReadStatePayload)
|
|
1379
1388
|
{
|
|
1380
1389
|
return _readStart < _readBuffer.i; // Returns true if data was read.
|
|
1381
1390
|
}
|
|
1382
1391
|
|
|
1383
|
-
if(_readStart == buf.i)
|
|
1392
|
+
if (_readStart == buf.i)
|
|
1384
1393
|
{
|
|
1385
1394
|
return false; // Nothing was read or nothing to read.
|
|
1386
1395
|
}
|
|
1387
1396
|
assert(_readStart < buf.i);
|
|
1388
1397
|
|
|
1389
|
-
if(_incoming)
|
|
1398
|
+
if (_incoming)
|
|
1390
1399
|
{
|
|
1391
1400
|
//
|
|
1392
1401
|
// Unmask the data we just read.
|
|
1393
1402
|
//
|
|
1394
1403
|
IceInternal::Buffer::Container::iterator p = _readStart;
|
|
1395
|
-
for(
|
|
1404
|
+
for (auto n = static_cast<size_t>(_readStart - _readFrameStart); p < buf.i; ++p, ++n)
|
|
1396
1405
|
{
|
|
1397
1406
|
*p ^= _readMask[n % 4];
|
|
1398
1407
|
}
|
|
@@ -1400,7 +1409,7 @@ IceInternal::WSTransceiver::postRead(Buffer& buf)
|
|
|
1400
1409
|
|
|
1401
1410
|
_readPayloadLength -= static_cast<size_t>(buf.i - _readStart);
|
|
1402
1411
|
_readStart = buf.i;
|
|
1403
|
-
if(_readPayloadLength == 0)
|
|
1412
|
+
if (_readPayloadLength == 0)
|
|
1404
1413
|
{
|
|
1405
1414
|
//
|
|
1406
1415
|
// We've read the complete payload, we're ready to read a new frame.
|
|
@@ -1413,11 +1422,11 @@ IceInternal::WSTransceiver::postRead(Buffer& buf)
|
|
|
1413
1422
|
bool
|
|
1414
1423
|
IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
1415
1424
|
{
|
|
1416
|
-
if(_writeState == WriteStateHeader)
|
|
1425
|
+
if (_writeState == WriteStateHeader)
|
|
1417
1426
|
{
|
|
1418
|
-
if(_state == StateOpened)
|
|
1427
|
+
if (_state == StateOpened)
|
|
1419
1428
|
{
|
|
1420
|
-
if(buf.b.empty() || buf.i == buf.b.end())
|
|
1429
|
+
if (buf.b.empty() || buf.i == buf.b.end())
|
|
1421
1430
|
{
|
|
1422
1431
|
return false;
|
|
1423
1432
|
}
|
|
@@ -1427,7 +1436,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1427
1436
|
|
|
1428
1437
|
_writeState = WriteStatePayload;
|
|
1429
1438
|
}
|
|
1430
|
-
else if(_state == StatePingPending)
|
|
1439
|
+
else if (_state == StatePingPending)
|
|
1431
1440
|
{
|
|
1432
1441
|
prepareWriteHeader(OP_PING, 0); // Don't send any payload
|
|
1433
1442
|
|
|
@@ -1435,12 +1444,12 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1435
1444
|
_writeState = WriteStateControlFrame;
|
|
1436
1445
|
_writeBuffer.i = _writeBuffer.b.begin();
|
|
1437
1446
|
}
|
|
1438
|
-
else if(_state == StatePongPending)
|
|
1447
|
+
else if (_state == StatePongPending)
|
|
1439
1448
|
{
|
|
1440
1449
|
prepareWriteHeader(OP_PONG, _pingPayload.size());
|
|
1441
|
-
if(_pingPayload.size() > static_cast<size_t>(_writeBuffer.b.end() - _writeBuffer.i))
|
|
1450
|
+
if (_pingPayload.size() > static_cast<size_t>(_writeBuffer.b.end() - _writeBuffer.i))
|
|
1442
1451
|
{
|
|
1443
|
-
|
|
1452
|
+
auto pos = static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin());
|
|
1444
1453
|
_writeBuffer.b.resize(pos + _pingPayload.size());
|
|
1445
1454
|
_writeBuffer.i = _writeBuffer.b.begin() + pos;
|
|
1446
1455
|
}
|
|
@@ -1452,14 +1461,15 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1452
1461
|
_writeState = WriteStateControlFrame;
|
|
1453
1462
|
_writeBuffer.i = _writeBuffer.b.begin();
|
|
1454
1463
|
}
|
|
1455
|
-
else if(
|
|
1456
|
-
|
|
1464
|
+
else if (
|
|
1465
|
+
(_state == StateClosingRequestPending && !_closingInitiator) ||
|
|
1466
|
+
(_state == StateClosingResponsePending && _closingInitiator))
|
|
1457
1467
|
{
|
|
1458
1468
|
prepareWriteHeader(OP_CLOSE, 2);
|
|
1459
1469
|
|
|
1460
1470
|
// Write closing reason
|
|
1461
1471
|
*reinterpret_cast<uint16_t*>(_writeBuffer.i) = htons(static_cast<uint16_t>(_closingReason));
|
|
1462
|
-
if(!_incoming)
|
|
1472
|
+
if (!_incoming)
|
|
1463
1473
|
{
|
|
1464
1474
|
*_writeBuffer.i++ ^= _writeMask[0];
|
|
1465
1475
|
*_writeBuffer.i++ ^= _writeMask[1];
|
|
@@ -1482,7 +1492,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1482
1492
|
_writePayloadLength = 0;
|
|
1483
1493
|
}
|
|
1484
1494
|
|
|
1485
|
-
if(_writeState == WriteStatePayload)
|
|
1495
|
+
if (_writeState == WriteStatePayload)
|
|
1486
1496
|
{
|
|
1487
1497
|
//
|
|
1488
1498
|
// For an outgoing connection, each message must be masked with a random
|
|
@@ -1493,34 +1503,35 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1493
1503
|
// copying.
|
|
1494
1504
|
//
|
|
1495
1505
|
|
|
1496
|
-
if(!_incoming && (_writePayloadLength == 0 || _writeBuffer.i == _writeBuffer.b.end()))
|
|
1506
|
+
if (!_incoming && (_writePayloadLength == 0 || _writeBuffer.i == _writeBuffer.b.end()))
|
|
1497
1507
|
{
|
|
1498
|
-
if(_writeBuffer.i == _writeBuffer.b.end())
|
|
1508
|
+
if (_writeBuffer.i == _writeBuffer.b.end())
|
|
1499
1509
|
{
|
|
1500
1510
|
_writeBuffer.i = _writeBuffer.b.begin();
|
|
1501
1511
|
}
|
|
1502
1512
|
|
|
1503
|
-
|
|
1504
|
-
for(; n < buf.b.size() && _writeBuffer.i < _writeBuffer.b.end(); ++_writeBuffer.i, ++n)
|
|
1513
|
+
auto n = static_cast<size_t>(buf.i - buf.b.begin());
|
|
1514
|
+
for (; n < buf.b.size() && _writeBuffer.i < _writeBuffer.b.end(); ++_writeBuffer.i, ++n)
|
|
1505
1515
|
{
|
|
1506
1516
|
*_writeBuffer.i = buf.b[n] ^ _writeMask[n % 4];
|
|
1507
1517
|
}
|
|
1508
1518
|
_writePayloadLength = n;
|
|
1509
|
-
if(_writeBuffer.i < _writeBuffer.b.end())
|
|
1519
|
+
if (_writeBuffer.i < _writeBuffer.b.end())
|
|
1510
1520
|
{
|
|
1511
1521
|
_writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
|
|
1512
1522
|
}
|
|
1513
1523
|
_writeBuffer.i = _writeBuffer.b.begin();
|
|
1514
1524
|
}
|
|
1515
|
-
else if(_writePayloadLength == 0)
|
|
1525
|
+
else if (_writePayloadLength == 0)
|
|
1516
1526
|
{
|
|
1517
|
-
size_t n =
|
|
1518
|
-
|
|
1527
|
+
size_t n =
|
|
1528
|
+
min(static_cast<size_t>(_writeBuffer.b.end() - _writeBuffer.i),
|
|
1529
|
+
static_cast<size_t>(buf.b.end() - buf.i));
|
|
1519
1530
|
memcpy(_writeBuffer.i, buf.i, n);
|
|
1520
1531
|
_writeBuffer.i += n;
|
|
1521
1532
|
buf.i += n;
|
|
1522
1533
|
_writePayloadLength = n;
|
|
1523
|
-
if(_writeBuffer.i < _writeBuffer.b.end())
|
|
1534
|
+
if (_writeBuffer.i < _writeBuffer.b.end())
|
|
1524
1535
|
{
|
|
1525
1536
|
_writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
|
|
1526
1537
|
}
|
|
@@ -1537,36 +1548,37 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1537
1548
|
bool
|
|
1538
1549
|
IceInternal::WSTransceiver::postWrite(Buffer& buf)
|
|
1539
1550
|
{
|
|
1540
|
-
if(_state > StateOpened && _writeState == WriteStateControlFrame)
|
|
1551
|
+
if (_state > StateOpened && _writeState == WriteStateControlFrame)
|
|
1541
1552
|
{
|
|
1542
|
-
if(_writeBuffer.i == _writeBuffer.b.end())
|
|
1553
|
+
if (_writeBuffer.i == _writeBuffer.b.end())
|
|
1543
1554
|
{
|
|
1544
|
-
if(_state == StatePingPending)
|
|
1555
|
+
if (_state == StatePingPending)
|
|
1545
1556
|
{
|
|
1546
|
-
if(_instance->traceLevel() >= 2)
|
|
1557
|
+
if (_instance->traceLevel() >= 2)
|
|
1547
1558
|
{
|
|
1548
1559
|
Trace out(_instance->logger(), _instance->traceCategory());
|
|
1549
1560
|
out << "sent " << protocol() << " connection ping frame\n" << toString();
|
|
1550
1561
|
}
|
|
1551
1562
|
}
|
|
1552
|
-
else if(_state == StatePongPending)
|
|
1563
|
+
else if (_state == StatePongPending)
|
|
1553
1564
|
{
|
|
1554
|
-
if(_instance->traceLevel() >= 2)
|
|
1565
|
+
if (_instance->traceLevel() >= 2)
|
|
1555
1566
|
{
|
|
1556
1567
|
Trace out(_instance->logger(), _instance->traceCategory());
|
|
1557
1568
|
out << "sent " << protocol() << " connection pong frame\n" << toString();
|
|
1558
1569
|
}
|
|
1559
1570
|
}
|
|
1560
|
-
else if(
|
|
1561
|
-
|
|
1571
|
+
else if (
|
|
1572
|
+
(_state == StateClosingRequestPending && !_closingInitiator) ||
|
|
1573
|
+
(_state == StateClosingResponsePending && _closingInitiator))
|
|
1562
1574
|
{
|
|
1563
|
-
if(_instance->traceLevel() >= 2)
|
|
1575
|
+
if (_instance->traceLevel() >= 2)
|
|
1564
1576
|
{
|
|
1565
1577
|
Trace out(_instance->logger(), _instance->traceCategory());
|
|
1566
1578
|
out << "sent " << protocol() << " connection close frame\n" << toString();
|
|
1567
1579
|
}
|
|
1568
1580
|
|
|
1569
|
-
if(_state == StateClosingRequestPending && !_closingInitiator)
|
|
1581
|
+
if (_state == StateClosingRequestPending && !_closingInitiator)
|
|
1570
1582
|
{
|
|
1571
1583
|
_writeState = WriteStateHeader;
|
|
1572
1584
|
_state = StateClosingResponsePending;
|
|
@@ -1574,10 +1586,10 @@ IceInternal::WSTransceiver::postWrite(Buffer& buf)
|
|
|
1574
1586
|
}
|
|
1575
1587
|
else
|
|
1576
1588
|
{
|
|
1577
|
-
throw ConnectionLostException(__FILE__, __LINE__
|
|
1589
|
+
throw ConnectionLostException(__FILE__, __LINE__);
|
|
1578
1590
|
}
|
|
1579
1591
|
}
|
|
1580
|
-
else if(_state == StateClosed)
|
|
1592
|
+
else if (_state == StateClosed)
|
|
1581
1593
|
{
|
|
1582
1594
|
return false;
|
|
1583
1595
|
}
|
|
@@ -1592,26 +1604,25 @@ IceInternal::WSTransceiver::postWrite(Buffer& buf)
|
|
|
1592
1604
|
}
|
|
1593
1605
|
}
|
|
1594
1606
|
|
|
1595
|
-
if((!_incoming || buf.i == buf.b.begin()) && _writePayloadLength > 0)
|
|
1607
|
+
if ((!_incoming || buf.i == buf.b.begin()) && _writePayloadLength > 0)
|
|
1596
1608
|
{
|
|
1597
|
-
if(_writeBuffer.i == _writeBuffer.b.end())
|
|
1609
|
+
if (_writeBuffer.i == _writeBuffer.b.end())
|
|
1598
1610
|
{
|
|
1599
1611
|
buf.i = buf.b.begin() + _writePayloadLength;
|
|
1600
1612
|
}
|
|
1601
1613
|
}
|
|
1602
1614
|
|
|
1603
|
-
if(buf.b.empty() || buf.i == buf.b.end())
|
|
1615
|
+
if (buf.b.empty() || buf.i == buf.b.end())
|
|
1604
1616
|
{
|
|
1605
1617
|
_writeState = WriteStateHeader;
|
|
1606
|
-
if(_state == StatePingPending ||
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
(_state == StateClosingResponsePending && _closingInitiator))
|
|
1618
|
+
if (_state == StatePingPending || _state == StatePongPending ||
|
|
1619
|
+
(_state == StateClosingRequestPending && !_closingInitiator) ||
|
|
1620
|
+
(_state == StateClosingResponsePending && _closingInitiator))
|
|
1610
1621
|
{
|
|
1611
1622
|
return true;
|
|
1612
1623
|
}
|
|
1613
1624
|
}
|
|
1614
|
-
else if(_state == StateOpened)
|
|
1625
|
+
else if (_state == StateOpened)
|
|
1615
1626
|
{
|
|
1616
1627
|
return true;
|
|
1617
1628
|
}
|
|
@@ -1621,17 +1632,17 @@ IceInternal::WSTransceiver::postWrite(Buffer& buf)
|
|
|
1621
1632
|
bool
|
|
1622
1633
|
IceInternal::WSTransceiver::readBuffered(IceInternal::Buffer::Container::size_type sz)
|
|
1623
1634
|
{
|
|
1624
|
-
if(_readI == _readBuffer.i)
|
|
1635
|
+
if (_readI == _readBuffer.i)
|
|
1625
1636
|
{
|
|
1626
1637
|
_readBuffer.b.resize(_readBufferSize);
|
|
1627
1638
|
_readI = _readBuffer.i = _readBuffer.b.begin();
|
|
1628
1639
|
}
|
|
1629
1640
|
else
|
|
1630
1641
|
{
|
|
1631
|
-
|
|
1632
|
-
if(available < sz)
|
|
1642
|
+
auto available = static_cast<size_t>(_readBuffer.i - _readI);
|
|
1643
|
+
if (available < sz)
|
|
1633
1644
|
{
|
|
1634
|
-
if(_readI != &_readBuffer.b[0])
|
|
1645
|
+
if (_readI != &_readBuffer.b[0])
|
|
1635
1646
|
{
|
|
1636
1647
|
memmove(&_readBuffer.b[0], _readI, available);
|
|
1637
1648
|
}
|
|
@@ -1642,7 +1653,7 @@ IceInternal::WSTransceiver::readBuffered(IceInternal::Buffer::Container::size_ty
|
|
|
1642
1653
|
}
|
|
1643
1654
|
|
|
1644
1655
|
_readStart = _readBuffer.i;
|
|
1645
|
-
if(_readI + sz > _readBuffer.i)
|
|
1656
|
+
if (_readI + sz > _readBuffer.i)
|
|
1646
1657
|
{
|
|
1647
1658
|
return false; // Not enough read.
|
|
1648
1659
|
}
|
|
@@ -1651,7 +1662,7 @@ IceInternal::WSTransceiver::readBuffered(IceInternal::Buffer::Container::size_ty
|
|
|
1651
1662
|
}
|
|
1652
1663
|
|
|
1653
1664
|
void
|
|
1654
|
-
IceInternal::WSTransceiver::prepareWriteHeader(
|
|
1665
|
+
IceInternal::WSTransceiver::prepareWriteHeader(uint8_t opCode, IceInternal::Buffer::Container::size_type payloadLength)
|
|
1655
1666
|
{
|
|
1656
1667
|
//
|
|
1657
1668
|
// We need to prepare the frame header.
|
|
@@ -1662,42 +1673,42 @@ IceInternal::WSTransceiver::prepareWriteHeader(Byte opCode, IceInternal::Buffer:
|
|
|
1662
1673
|
//
|
|
1663
1674
|
// Set the opcode - this is the one and only data frame.
|
|
1664
1675
|
//
|
|
1665
|
-
*_writeBuffer.i++ = static_cast<
|
|
1676
|
+
*_writeBuffer.i++ = static_cast<byte>(opCode | FLAG_FINAL);
|
|
1666
1677
|
|
|
1667
1678
|
//
|
|
1668
1679
|
// Set the payload length.
|
|
1669
1680
|
//
|
|
1670
|
-
if(payloadLength <= 125)
|
|
1681
|
+
if (payloadLength <= 125)
|
|
1671
1682
|
{
|
|
1672
|
-
*_writeBuffer.i++ = static_cast<
|
|
1683
|
+
*_writeBuffer.i++ = static_cast<byte>(payloadLength);
|
|
1673
1684
|
}
|
|
1674
|
-
else if(payloadLength > 125 && payloadLength <= USHRT_MAX)
|
|
1685
|
+
else if (payloadLength > 125 && payloadLength <= USHRT_MAX)
|
|
1675
1686
|
{
|
|
1676
1687
|
//
|
|
1677
1688
|
// Use an extra 16 bits to encode the payload length.
|
|
1678
1689
|
//
|
|
1679
|
-
*_writeBuffer.i++ =
|
|
1690
|
+
*_writeBuffer.i++ = byte{126};
|
|
1680
1691
|
*reinterpret_cast<uint16_t*>(_writeBuffer.i) = htons(static_cast<uint16_t>(payloadLength));
|
|
1681
1692
|
_writeBuffer.i += 2;
|
|
1682
1693
|
}
|
|
1683
|
-
else if(payloadLength > USHRT_MAX)
|
|
1694
|
+
else if (payloadLength > USHRT_MAX)
|
|
1684
1695
|
{
|
|
1685
1696
|
//
|
|
1686
1697
|
// Use an extra 64 bits to encode the payload length.
|
|
1687
1698
|
//
|
|
1688
|
-
*_writeBuffer.i++ =
|
|
1689
|
-
ice_htonll(static_cast<
|
|
1699
|
+
*_writeBuffer.i++ = byte{127};
|
|
1700
|
+
ice_htonll(static_cast<int64_t>(payloadLength), _writeBuffer.i);
|
|
1690
1701
|
_writeBuffer.i += 8;
|
|
1691
1702
|
}
|
|
1692
1703
|
|
|
1693
|
-
if(!_incoming)
|
|
1704
|
+
if (!_incoming)
|
|
1694
1705
|
{
|
|
1695
1706
|
//
|
|
1696
1707
|
// Add a random 32-bit mask to every outgoing frame, copy the payload data,
|
|
1697
1708
|
// and apply the mask.
|
|
1698
1709
|
//
|
|
1699
|
-
_writeBuffer.b[1] |= FLAG_MASKED;
|
|
1700
|
-
|
|
1710
|
+
_writeBuffer.b[1] |= byte{FLAG_MASKED};
|
|
1711
|
+
IceInternal::generateRandom(reinterpret_cast<char*>(_writeMask), sizeof(_writeMask));
|
|
1701
1712
|
memcpy(_writeBuffer.i, _writeMask, sizeof(_writeMask));
|
|
1702
1713
|
_writeBuffer.i += sizeof(_writeMask);
|
|
1703
1714
|
}
|