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,42 +1,31 @@
|
|
|
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
|
|
16
|
-
#include
|
|
17
|
-
#include
|
|
1
|
+
// Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
#include "Ice/OutgoingAsync.h"
|
|
4
|
+
#include "CollocatedRequestHandler.h"
|
|
5
|
+
#include "ConnectionFactory.h"
|
|
6
|
+
#include "ConnectionI.h"
|
|
7
|
+
#include "Ice/ImplicitContext.h"
|
|
8
|
+
#include "Ice/LocalExceptions.h"
|
|
9
|
+
#include "Ice/LoggerUtil.h"
|
|
10
|
+
#include "Ice/ReplyStatus.h"
|
|
11
|
+
#include "Instance.h"
|
|
12
|
+
#include "LocatorInfo.h"
|
|
13
|
+
#include "ObjectAdapterFactory.h"
|
|
14
|
+
#include "Reference.h"
|
|
15
|
+
#include "RequestHandlerCache.h"
|
|
16
|
+
#include "RetryQueue.h"
|
|
17
|
+
#include "RouterInfo.h"
|
|
18
|
+
#include "ThreadPool.h"
|
|
19
|
+
#include "TraceLevels.h"
|
|
18
20
|
|
|
19
21
|
using namespace std;
|
|
20
22
|
using namespace Ice;
|
|
21
23
|
using namespace IceInternal;
|
|
22
24
|
|
|
23
|
-
#ifndef ICE_CPP11_MAPPING
|
|
24
|
-
IceUtil::Shared* IceInternal::upCast(OutgoingAsyncBase* p) { return p; }
|
|
25
|
-
IceUtil::Shared* IceInternal::upCast(ProxyOutgoingAsyncBase* p) { return p; }
|
|
26
|
-
IceUtil::Shared* IceInternal::upCast(OutgoingAsync* p) { return p; }
|
|
27
|
-
#endif
|
|
28
|
-
|
|
29
25
|
const unsigned char OutgoingAsyncBase::OK = 0x1;
|
|
30
26
|
const unsigned char OutgoingAsyncBase::Sent = 0x2;
|
|
31
|
-
#ifndef ICE_CPP11_MAPPING
|
|
32
|
-
const unsigned char OutgoingAsyncBase::Done = 0x4;
|
|
33
|
-
const unsigned char OutgoingAsyncBase::EndCalled = 0x8;
|
|
34
|
-
#endif
|
|
35
27
|
|
|
36
|
-
OutgoingAsyncCompletionCallback::~OutgoingAsyncCompletionCallback()
|
|
37
|
-
{
|
|
38
|
-
// Out of line to avoid weak vtable
|
|
39
|
-
}
|
|
28
|
+
OutgoingAsyncCompletionCallback::~OutgoingAsyncCompletionCallback() = default; // Out of line to avoid weak vtable
|
|
40
29
|
|
|
41
30
|
bool
|
|
42
31
|
OutgoingAsyncBase::sent()
|
|
@@ -45,7 +34,7 @@ OutgoingAsyncBase::sent()
|
|
|
45
34
|
}
|
|
46
35
|
|
|
47
36
|
bool
|
|
48
|
-
OutgoingAsyncBase::exception(
|
|
37
|
+
OutgoingAsyncBase::exception(std::exception_ptr ex)
|
|
49
38
|
{
|
|
50
39
|
return exceptionImpl(ex);
|
|
51
40
|
}
|
|
@@ -60,26 +49,6 @@ OutgoingAsyncBase::response()
|
|
|
60
49
|
void
|
|
61
50
|
OutgoingAsyncBase::invokeSentAsync()
|
|
62
51
|
{
|
|
63
|
-
class AsynchronousSent : public DispatchWorkItem
|
|
64
|
-
{
|
|
65
|
-
public:
|
|
66
|
-
|
|
67
|
-
AsynchronousSent(const ConnectionPtr& connection, const OutgoingAsyncBasePtr& outAsync) :
|
|
68
|
-
DispatchWorkItem(connection), _outAsync(outAsync)
|
|
69
|
-
{
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
virtual void
|
|
73
|
-
run()
|
|
74
|
-
{
|
|
75
|
-
_outAsync->invokeSent();
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
private:
|
|
79
|
-
|
|
80
|
-
const OutgoingAsyncBasePtr _outAsync;
|
|
81
|
-
};
|
|
82
|
-
|
|
83
52
|
//
|
|
84
53
|
// This is called when it's not safe to call the sent callback
|
|
85
54
|
// synchronously from this thread. Instead the exception callback
|
|
@@ -87,9 +56,11 @@ OutgoingAsyncBase::invokeSentAsync()
|
|
|
87
56
|
//
|
|
88
57
|
try
|
|
89
58
|
{
|
|
90
|
-
_instance->clientThreadPool()->
|
|
59
|
+
_instance->clientThreadPool()->execute(
|
|
60
|
+
[self = shared_from_this()]() { self->invokeSent(); },
|
|
61
|
+
_cachedConnection);
|
|
91
62
|
}
|
|
92
|
-
catch(const
|
|
63
|
+
catch (const CommunicatorDestroyedException&)
|
|
93
64
|
{
|
|
94
65
|
}
|
|
95
66
|
}
|
|
@@ -97,59 +68,23 @@ OutgoingAsyncBase::invokeSentAsync()
|
|
|
97
68
|
void
|
|
98
69
|
OutgoingAsyncBase::invokeExceptionAsync()
|
|
99
70
|
{
|
|
100
|
-
class AsynchronousException : public DispatchWorkItem
|
|
101
|
-
{
|
|
102
|
-
public:
|
|
103
|
-
|
|
104
|
-
AsynchronousException(const ConnectionPtr& c, const OutgoingAsyncBasePtr& outAsync) :
|
|
105
|
-
DispatchWorkItem(c), _outAsync(outAsync)
|
|
106
|
-
{
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
virtual void
|
|
110
|
-
run()
|
|
111
|
-
{
|
|
112
|
-
_outAsync->invokeException();
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
private:
|
|
116
|
-
|
|
117
|
-
const OutgoingAsyncBasePtr _outAsync;
|
|
118
|
-
};
|
|
119
|
-
|
|
120
71
|
//
|
|
121
72
|
// CommunicatorDestroyedException is the only exception that can propagate directly from this method.
|
|
122
73
|
//
|
|
123
|
-
_instance->clientThreadPool()->
|
|
74
|
+
_instance->clientThreadPool()->execute(
|
|
75
|
+
[self = shared_from_this()]() { self->invokeException(); },
|
|
76
|
+
_cachedConnection);
|
|
124
77
|
}
|
|
125
78
|
|
|
126
79
|
void
|
|
127
80
|
OutgoingAsyncBase::invokeResponseAsync()
|
|
128
81
|
{
|
|
129
|
-
class AsynchronousResponse : public DispatchWorkItem
|
|
130
|
-
{
|
|
131
|
-
public:
|
|
132
|
-
|
|
133
|
-
AsynchronousResponse(const ConnectionPtr& connection, const OutgoingAsyncBasePtr& outAsync) :
|
|
134
|
-
DispatchWorkItem(connection), _outAsync(outAsync)
|
|
135
|
-
{
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
virtual void
|
|
139
|
-
run()
|
|
140
|
-
{
|
|
141
|
-
_outAsync->invokeResponse();
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
private:
|
|
145
|
-
|
|
146
|
-
const OutgoingAsyncBasePtr _outAsync;
|
|
147
|
-
};
|
|
148
|
-
|
|
149
82
|
//
|
|
150
83
|
// CommunicatorDestroyedException is the only exception that can propagate directly from this method.
|
|
151
84
|
//
|
|
152
|
-
_instance->clientThreadPool()->
|
|
85
|
+
_instance->clientThreadPool()->execute(
|
|
86
|
+
[self = shared_from_this()]() { self->invokeResponse(); },
|
|
87
|
+
_cachedConnection);
|
|
153
88
|
}
|
|
154
89
|
|
|
155
90
|
void
|
|
@@ -159,16 +94,12 @@ OutgoingAsyncBase::invokeSent()
|
|
|
159
94
|
{
|
|
160
95
|
handleInvokeSent(_sentSynchronously, this);
|
|
161
96
|
}
|
|
162
|
-
catch(
|
|
163
|
-
{
|
|
164
|
-
warning(ex);
|
|
165
|
-
}
|
|
166
|
-
catch(...)
|
|
97
|
+
catch (...)
|
|
167
98
|
{
|
|
168
|
-
warning();
|
|
99
|
+
warning("sent", current_exception());
|
|
169
100
|
}
|
|
170
101
|
|
|
171
|
-
if(_observer && _doneInSent)
|
|
102
|
+
if (_observer && _doneInSent)
|
|
172
103
|
{
|
|
173
104
|
_observer.detach();
|
|
174
105
|
}
|
|
@@ -179,15 +110,11 @@ OutgoingAsyncBase::invokeException()
|
|
|
179
110
|
{
|
|
180
111
|
try
|
|
181
112
|
{
|
|
182
|
-
handleInvokeException(
|
|
183
|
-
}
|
|
184
|
-
catch(const std::exception& ex)
|
|
185
|
-
{
|
|
186
|
-
warning(ex);
|
|
113
|
+
handleInvokeException(_ex, this);
|
|
187
114
|
}
|
|
188
|
-
catch(...)
|
|
115
|
+
catch (...)
|
|
189
116
|
{
|
|
190
|
-
warning();
|
|
117
|
+
warning("exception", current_exception());
|
|
191
118
|
}
|
|
192
119
|
|
|
193
120
|
_observer.detach();
|
|
@@ -196,7 +123,7 @@ OutgoingAsyncBase::invokeException()
|
|
|
196
123
|
void
|
|
197
124
|
OutgoingAsyncBase::invokeResponse()
|
|
198
125
|
{
|
|
199
|
-
if(_ex)
|
|
126
|
+
if (_ex)
|
|
200
127
|
{
|
|
201
128
|
invokeException();
|
|
202
129
|
return;
|
|
@@ -204,33 +131,24 @@ OutgoingAsyncBase::invokeResponse()
|
|
|
204
131
|
|
|
205
132
|
try
|
|
206
133
|
{
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
134
|
+
handleInvokeResponse(_state & OK, this);
|
|
135
|
+
}
|
|
136
|
+
catch (...)
|
|
137
|
+
{
|
|
138
|
+
// With the lambda async API, lambdaInvokeResponse throws _before_ reaching the application's response when the
|
|
139
|
+
// unmarshaling fails or when the response contains a user exception. We want to call handleInvokeException
|
|
140
|
+
// in this situation.
|
|
141
|
+
if (handleException(current_exception()))
|
|
213
142
|
{
|
|
214
|
-
|
|
143
|
+
try
|
|
215
144
|
{
|
|
216
|
-
handleInvokeException(
|
|
145
|
+
handleInvokeException(current_exception(), this);
|
|
146
|
+
}
|
|
147
|
+
catch (...)
|
|
148
|
+
{
|
|
149
|
+
warning("exception", current_exception());
|
|
217
150
|
}
|
|
218
151
|
}
|
|
219
|
-
catch(const exception_ptr& ex)
|
|
220
|
-
{
|
|
221
|
-
rethrow_exception(ex);
|
|
222
|
-
}
|
|
223
|
-
#else
|
|
224
|
-
handleInvokeResponse(_state & OK, this);
|
|
225
|
-
#endif
|
|
226
|
-
}
|
|
227
|
-
catch(const std::exception& ex)
|
|
228
|
-
{
|
|
229
|
-
warning(ex);
|
|
230
|
-
}
|
|
231
|
-
catch(...)
|
|
232
|
-
{
|
|
233
|
-
warning();
|
|
234
152
|
}
|
|
235
153
|
|
|
236
154
|
_observer.detach();
|
|
@@ -240,15 +158,15 @@ void
|
|
|
240
158
|
OutgoingAsyncBase::cancelable(const CancellationHandlerPtr& handler)
|
|
241
159
|
{
|
|
242
160
|
Lock sync(_m);
|
|
243
|
-
if(_cancellationException)
|
|
161
|
+
if (_cancellationException)
|
|
244
162
|
{
|
|
245
163
|
try
|
|
246
164
|
{
|
|
247
|
-
_cancellationException
|
|
165
|
+
rethrow_exception(_cancellationException);
|
|
248
166
|
}
|
|
249
|
-
catch(const
|
|
167
|
+
catch (const LocalException&)
|
|
250
168
|
{
|
|
251
|
-
_cancellationException
|
|
169
|
+
_cancellationException = nullptr;
|
|
252
170
|
throw;
|
|
253
171
|
}
|
|
254
172
|
}
|
|
@@ -258,16 +176,27 @@ OutgoingAsyncBase::cancelable(const CancellationHandlerPtr& handler)
|
|
|
258
176
|
void
|
|
259
177
|
OutgoingAsyncBase::cancel()
|
|
260
178
|
{
|
|
261
|
-
cancel(
|
|
179
|
+
cancel(make_exception_ptr(InvocationCanceledException(__FILE__, __LINE__)));
|
|
262
180
|
}
|
|
263
181
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
182
|
+
void
|
|
183
|
+
OutgoingAsyncBase::attachRemoteObserver(const ConnectionInfoPtr& c, const EndpointPtr& endpt, std::int32_t requestId)
|
|
184
|
+
{
|
|
185
|
+
const auto size = static_cast<std::int32_t>(_os.b.size() - headerSize - 4);
|
|
186
|
+
_childObserver.attach(getObserver().getRemoteObserver(c, endpt, requestId, size));
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
void
|
|
190
|
+
OutgoingAsyncBase::attachCollocatedObserver(const ObjectAdapterPtr& adapter, std::int32_t requestId)
|
|
191
|
+
{
|
|
192
|
+
const auto size = static_cast<std::int32_t>(_os.b.size() - headerSize - 4);
|
|
193
|
+
_childObserver.attach(getObserver().getCollocatedObserver(adapter, requestId, size));
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
OutgoingAsyncBase::OutgoingAsyncBase(const InstancePtr& instance)
|
|
197
|
+
: _instance(instance),
|
|
198
|
+
_os(instance.get(), currentProtocolEncoding),
|
|
199
|
+
_is{instance.get(), currentProtocolEncoding}
|
|
271
200
|
{
|
|
272
201
|
}
|
|
273
202
|
|
|
@@ -277,23 +206,15 @@ OutgoingAsyncBase::sentImpl(bool done)
|
|
|
277
206
|
Lock sync(_m);
|
|
278
207
|
bool alreadySent = (_state & Sent) > 0;
|
|
279
208
|
_state |= Sent;
|
|
280
|
-
if(done)
|
|
209
|
+
if (done)
|
|
281
210
|
{
|
|
282
211
|
_doneInSent = true;
|
|
283
212
|
_childObserver.detach();
|
|
284
|
-
_cancellationHandler =
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
#ifndef ICE_CPP11_MAPPING
|
|
288
|
-
if(done)
|
|
289
|
-
{
|
|
290
|
-
_state |= Done | OK;
|
|
213
|
+
_cancellationHandler = nullptr;
|
|
291
214
|
}
|
|
292
|
-
_m.notifyAll();
|
|
293
|
-
#endif
|
|
294
215
|
|
|
295
216
|
bool invoke = handleSent(done, alreadySent);
|
|
296
|
-
if(!invoke && _doneInSent)
|
|
217
|
+
if (!invoke && _doneInSent)
|
|
297
218
|
{
|
|
298
219
|
_observer.detach();
|
|
299
220
|
}
|
|
@@ -301,25 +222,20 @@ OutgoingAsyncBase::sentImpl(bool done)
|
|
|
301
222
|
}
|
|
302
223
|
|
|
303
224
|
bool
|
|
304
|
-
OutgoingAsyncBase::exceptionImpl(
|
|
225
|
+
OutgoingAsyncBase::exceptionImpl(std::exception_ptr ex)
|
|
305
226
|
{
|
|
306
227
|
Lock sync(_m);
|
|
307
|
-
|
|
308
|
-
if(_childObserver)
|
|
228
|
+
_ex = ex;
|
|
229
|
+
if (_childObserver)
|
|
309
230
|
{
|
|
310
|
-
_childObserver.failed(ex
|
|
231
|
+
_childObserver.failed(getExceptionId(ex));
|
|
311
232
|
_childObserver.detach();
|
|
312
233
|
}
|
|
313
|
-
_cancellationHandler =
|
|
314
|
-
_observer.failed(ex
|
|
315
|
-
|
|
316
|
-
#ifndef ICE_CPP11_MAPPING
|
|
317
|
-
_state |= Done;
|
|
318
|
-
_m.notifyAll();
|
|
319
|
-
#endif
|
|
234
|
+
_cancellationHandler = nullptr;
|
|
235
|
+
_observer.failed(getExceptionId(ex));
|
|
320
236
|
|
|
321
237
|
bool invoke = handleException(ex);
|
|
322
|
-
if(!invoke)
|
|
238
|
+
if (!invoke)
|
|
323
239
|
{
|
|
324
240
|
_observer.detach();
|
|
325
241
|
}
|
|
@@ -330,28 +246,23 @@ bool
|
|
|
330
246
|
OutgoingAsyncBase::responseImpl(bool ok, bool invoke)
|
|
331
247
|
{
|
|
332
248
|
Lock sync(_m);
|
|
333
|
-
if(ok)
|
|
249
|
+
if (ok)
|
|
334
250
|
{
|
|
335
251
|
_state |= OK;
|
|
336
252
|
}
|
|
337
253
|
|
|
338
|
-
_cancellationHandler =
|
|
339
|
-
|
|
340
|
-
#ifndef ICE_CPP11_MAPPING
|
|
341
|
-
_state |= Done;
|
|
342
|
-
_m.notifyAll();
|
|
343
|
-
#endif
|
|
254
|
+
_cancellationHandler = nullptr;
|
|
344
255
|
|
|
345
256
|
try
|
|
346
257
|
{
|
|
347
258
|
invoke &= handleResponse(ok);
|
|
348
259
|
}
|
|
349
|
-
catch(const
|
|
260
|
+
catch (const Exception&)
|
|
350
261
|
{
|
|
351
|
-
|
|
352
|
-
invoke = handleException(
|
|
262
|
+
_ex = current_exception();
|
|
263
|
+
invoke = handleException(_ex);
|
|
353
264
|
}
|
|
354
|
-
if(!invoke)
|
|
265
|
+
if (!invoke)
|
|
355
266
|
{
|
|
356
267
|
_observer.detach();
|
|
357
268
|
}
|
|
@@ -359,249 +270,56 @@ OutgoingAsyncBase::responseImpl(bool ok, bool invoke)
|
|
|
359
270
|
}
|
|
360
271
|
|
|
361
272
|
void
|
|
362
|
-
OutgoingAsyncBase::cancel(
|
|
273
|
+
OutgoingAsyncBase::cancel(std::exception_ptr ex)
|
|
363
274
|
{
|
|
364
275
|
CancellationHandlerPtr handler;
|
|
365
276
|
{
|
|
366
277
|
Lock sync(_m);
|
|
367
|
-
if(!_cancellationHandler)
|
|
278
|
+
if (!_cancellationHandler)
|
|
368
279
|
{
|
|
369
|
-
|
|
280
|
+
_cancellationException = ex;
|
|
370
281
|
return;
|
|
371
282
|
}
|
|
372
283
|
handler = _cancellationHandler;
|
|
373
284
|
}
|
|
374
|
-
handler->asyncRequestCanceled(
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
#ifndef ICE_CPP11_MAPPING
|
|
378
|
-
|
|
379
|
-
Int
|
|
380
|
-
OutgoingAsyncBase::getHash() const
|
|
381
|
-
{
|
|
382
|
-
return static_cast<Int>(reinterpret_cast<Long>(this) >> 4);
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
CommunicatorPtr
|
|
386
|
-
OutgoingAsyncBase::getCommunicator() const
|
|
387
|
-
{
|
|
388
|
-
return 0;
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
ConnectionPtr
|
|
392
|
-
OutgoingAsyncBase::getConnection() const
|
|
393
|
-
{
|
|
394
|
-
return 0;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
ObjectPrxPtr
|
|
398
|
-
OutgoingAsyncBase::getProxy() const
|
|
399
|
-
{
|
|
400
|
-
return 0;
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
Ice::LocalObjectPtr
|
|
404
|
-
OutgoingAsyncBase::getCookie() const
|
|
405
|
-
{
|
|
406
|
-
return _cookie;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
const std::string&
|
|
410
|
-
OutgoingAsyncBase::getOperation() const
|
|
411
|
-
{
|
|
412
|
-
assert(false); // Must be overridden
|
|
413
|
-
static string empty;
|
|
414
|
-
return empty;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
bool
|
|
418
|
-
OutgoingAsyncBase::isCompleted() const
|
|
419
|
-
{
|
|
420
|
-
Lock sync(_m);
|
|
421
|
-
return (_state & Done) > 0;
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
void
|
|
425
|
-
OutgoingAsyncBase::waitForCompleted()
|
|
426
|
-
{
|
|
427
|
-
Lock sync(_m);
|
|
428
|
-
while(!(_state & Done))
|
|
429
|
-
{
|
|
430
|
-
_m.wait();
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
bool
|
|
435
|
-
OutgoingAsyncBase::isSent() const
|
|
436
|
-
{
|
|
437
|
-
Lock sync(_m);
|
|
438
|
-
return (_state & Sent) > 0;
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
void
|
|
442
|
-
OutgoingAsyncBase::waitForSent()
|
|
443
|
-
{
|
|
444
|
-
Lock sync(_m);
|
|
445
|
-
while(!(_state & Sent) && !_ex.get())
|
|
446
|
-
{
|
|
447
|
-
_m.wait();
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
bool
|
|
452
|
-
OutgoingAsyncBase::sentSynchronously() const
|
|
453
|
-
{
|
|
454
|
-
return _sentSynchronously;
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
void
|
|
458
|
-
OutgoingAsyncBase::throwLocalException() const
|
|
459
|
-
{
|
|
460
|
-
Lock sync(_m);
|
|
461
|
-
if(_ex.get())
|
|
462
|
-
{
|
|
463
|
-
_ex->ice_throw();
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
bool
|
|
468
|
-
OutgoingAsyncBase::_waitForResponse()
|
|
469
|
-
{
|
|
470
|
-
Lock sync(_m);
|
|
471
|
-
if(_state & EndCalled)
|
|
472
|
-
{
|
|
473
|
-
throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "end_ method called more than once");
|
|
474
|
-
}
|
|
475
|
-
_state |= EndCalled;
|
|
476
|
-
while(!(_state & Done))
|
|
477
|
-
{
|
|
478
|
-
_m.wait();
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
if(_ex.get())
|
|
482
|
-
{
|
|
483
|
-
_ex->ice_throw();
|
|
484
|
-
}
|
|
485
|
-
return _state & OK;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
Ice::InputStream*
|
|
489
|
-
OutgoingAsyncBase::_startReadParams()
|
|
490
|
-
{
|
|
491
|
-
_is.startEncapsulation();
|
|
492
|
-
return &_is;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
void
|
|
496
|
-
OutgoingAsyncBase::_endReadParams()
|
|
497
|
-
{
|
|
498
|
-
_is.endEncapsulation();
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
void
|
|
502
|
-
OutgoingAsyncBase::_readEmptyParams()
|
|
503
|
-
{
|
|
504
|
-
_is.skipEmptyEncapsulation();
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
void
|
|
508
|
-
OutgoingAsyncBase::_readParamEncaps(const ::Ice::Byte*& encaps, ::Ice::Int& sz)
|
|
509
|
-
{
|
|
510
|
-
_is.readEncapsulation(encaps, sz);
|
|
285
|
+
handler->asyncRequestCanceled(shared_from_this(), ex);
|
|
511
286
|
}
|
|
512
287
|
|
|
513
288
|
void
|
|
514
|
-
OutgoingAsyncBase::
|
|
289
|
+
OutgoingAsyncBase::warning(string_view callbackName, std::exception_ptr eptr) const
|
|
515
290
|
{
|
|
516
|
-
|
|
291
|
+
if (_instance->initializationData().properties->getIcePropertyAsInt("Ice.Warn.AMICallback") > 0)
|
|
517
292
|
{
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
}
|
|
521
|
-
catch(const Ice::UserException&)
|
|
522
|
-
{
|
|
523
|
-
_is.endEncapsulation();
|
|
524
|
-
throw;
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
void
|
|
529
|
-
OutgoingAsyncBase::_scheduleCallback(const CallbackPtr& cb)
|
|
530
|
-
{
|
|
531
|
-
//
|
|
532
|
-
// NOTE: for internal use only. This should only be called when the invocation has
|
|
533
|
-
// completed. Accessing _cachedConnection is not safe otherwise.
|
|
534
|
-
//
|
|
535
|
-
|
|
536
|
-
class WorkItem : public DispatchWorkItem
|
|
537
|
-
{
|
|
538
|
-
public:
|
|
539
|
-
|
|
540
|
-
WorkItem(const ConnectionPtr& connection, const CallbackPtr& cb) :
|
|
541
|
-
DispatchWorkItem(connection), _cb(cb)
|
|
293
|
+
Warning out(_instance->initializationData().logger);
|
|
294
|
+
try
|
|
542
295
|
{
|
|
296
|
+
rethrow_exception(eptr);
|
|
543
297
|
}
|
|
544
|
-
|
|
545
|
-
virtual void run()
|
|
298
|
+
catch (const Exception& ex)
|
|
546
299
|
{
|
|
547
|
-
|
|
300
|
+
out << "Ice::Exception raised by " << callbackName << " callback:\n" << ex;
|
|
548
301
|
}
|
|
549
|
-
|
|
550
|
-
private:
|
|
551
|
-
|
|
552
|
-
CallbackPtr _cb;
|
|
553
|
-
};
|
|
554
|
-
|
|
555
|
-
//
|
|
556
|
-
// CommunicatorDestroyedException is the only exception that can propagate directly from this method.
|
|
557
|
-
//
|
|
558
|
-
_instance->clientThreadPool()->dispatch(new WorkItem(_cachedConnection, cb));
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
#endif
|
|
562
|
-
|
|
563
|
-
void
|
|
564
|
-
OutgoingAsyncBase::warning(const std::exception& exc) const
|
|
565
|
-
{
|
|
566
|
-
if(_instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.AMICallback", 1) > 0)
|
|
567
|
-
{
|
|
568
|
-
Ice::Warning out(_instance->initializationData().logger);
|
|
569
|
-
const Ice::Exception* ex = dynamic_cast<const Ice::Exception*>(&exc);
|
|
570
|
-
if(ex)
|
|
302
|
+
catch (const std::exception& ex)
|
|
571
303
|
{
|
|
572
|
-
out << "
|
|
304
|
+
out << "std::exception raised by " << callbackName << " callback:\n" << ex.what();
|
|
573
305
|
}
|
|
574
|
-
|
|
306
|
+
catch (...)
|
|
575
307
|
{
|
|
576
|
-
out << "
|
|
308
|
+
out << "unknown exception raised by " << callbackName << " callback";
|
|
577
309
|
}
|
|
578
310
|
}
|
|
579
311
|
}
|
|
580
312
|
|
|
581
|
-
void
|
|
582
|
-
OutgoingAsyncBase::warning() const
|
|
583
|
-
{
|
|
584
|
-
if(_instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.AMICallback", 1) > 0)
|
|
585
|
-
{
|
|
586
|
-
Ice::Warning out(_instance->initializationData().logger);
|
|
587
|
-
out << "unknown exception raised by AMI callback";
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
|
|
591
313
|
bool
|
|
592
|
-
ProxyOutgoingAsyncBase::exception(
|
|
314
|
+
ProxyOutgoingAsyncBase::exception(std::exception_ptr exc)
|
|
593
315
|
{
|
|
594
|
-
if(_childObserver)
|
|
316
|
+
if (_childObserver)
|
|
595
317
|
{
|
|
596
|
-
_childObserver.failed(exc
|
|
318
|
+
_childObserver.failed(getExceptionId(exc));
|
|
597
319
|
_childObserver.detach();
|
|
598
320
|
}
|
|
599
321
|
|
|
600
|
-
_cachedConnection =
|
|
601
|
-
if(_proxy->_getReference()->getInvocationTimeout() == -2)
|
|
602
|
-
{
|
|
603
|
-
_instance->timer()->cancel(ICE_SHARED_FROM_THIS);
|
|
604
|
-
}
|
|
322
|
+
_cachedConnection = nullptr;
|
|
605
323
|
|
|
606
324
|
//
|
|
607
325
|
// NOTE: at this point, synchronization isn't needed, no other threads should be
|
|
@@ -614,46 +332,33 @@ ProxyOutgoingAsyncBase::exception(const Exception& exc)
|
|
|
614
332
|
// the retry interval is 0. This method can be called with the
|
|
615
333
|
// connection locked so we can't just retry here.
|
|
616
334
|
//
|
|
617
|
-
_instance->retryQueue()->add(
|
|
335
|
+
_instance->retryQueue()->add(shared_from_this(), handleRetryAfterException(exc));
|
|
336
|
+
|
|
618
337
|
return false;
|
|
619
338
|
}
|
|
620
|
-
catch(const Exception&
|
|
339
|
+
catch (const Exception&)
|
|
621
340
|
{
|
|
622
|
-
return exceptionImpl(
|
|
341
|
+
return exceptionImpl(current_exception()); // No retries, we're done
|
|
623
342
|
}
|
|
624
343
|
}
|
|
625
344
|
|
|
626
345
|
void
|
|
627
|
-
ProxyOutgoingAsyncBase::
|
|
628
|
-
{
|
|
629
|
-
if(_proxy->_getReference()->getInvocationTimeout() == -2 && _cachedConnection)
|
|
630
|
-
{
|
|
631
|
-
const int timeout = _cachedConnection->timeout();
|
|
632
|
-
if(timeout > 0)
|
|
633
|
-
{
|
|
634
|
-
_instance->timer()->schedule(ICE_SHARED_FROM_THIS, IceUtil::Time::milliSeconds(timeout));
|
|
635
|
-
}
|
|
636
|
-
}
|
|
637
|
-
OutgoingAsyncBase::cancelable(handler);
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
void
|
|
641
|
-
ProxyOutgoingAsyncBase::retryException(const Exception&)
|
|
346
|
+
ProxyOutgoingAsyncBase::retryException()
|
|
642
347
|
{
|
|
643
348
|
try
|
|
644
349
|
{
|
|
645
|
-
//
|
|
646
350
|
// It's important to let the retry queue do the retry. This is
|
|
647
351
|
// called from the connect request handler and the retry might
|
|
648
352
|
// require could end up waiting for the flush of the
|
|
649
353
|
// connection to be done.
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
354
|
+
|
|
355
|
+
// Clear cached request handler and always retry.
|
|
356
|
+
_proxy._getRequestHandlerCache()->clearCachedRequestHandler(_handler);
|
|
357
|
+
_instance->retryQueue()->add(shared_from_this(), 0);
|
|
653
358
|
}
|
|
654
|
-
catch(const
|
|
359
|
+
catch (const Exception&)
|
|
655
360
|
{
|
|
656
|
-
if(exception(
|
|
361
|
+
if (exception(current_exception()))
|
|
657
362
|
{
|
|
658
363
|
invokeExceptionAsync();
|
|
659
364
|
}
|
|
@@ -667,63 +372,55 @@ ProxyOutgoingAsyncBase::retry()
|
|
|
667
372
|
}
|
|
668
373
|
|
|
669
374
|
void
|
|
670
|
-
ProxyOutgoingAsyncBase::abort(
|
|
375
|
+
ProxyOutgoingAsyncBase::abort(std::exception_ptr ex)
|
|
671
376
|
{
|
|
672
377
|
assert(!_childObserver);
|
|
673
378
|
|
|
674
|
-
if(exceptionImpl(ex))
|
|
379
|
+
if (exceptionImpl(ex))
|
|
675
380
|
{
|
|
676
381
|
invokeExceptionAsync();
|
|
677
382
|
}
|
|
678
|
-
else
|
|
383
|
+
else
|
|
679
384
|
{
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
385
|
+
try
|
|
386
|
+
{
|
|
387
|
+
rethrow_exception(ex);
|
|
388
|
+
}
|
|
389
|
+
catch (const CommunicatorDestroyedException&)
|
|
390
|
+
{
|
|
391
|
+
//
|
|
392
|
+
// If it's a communicator destroyed exception, don't swallow
|
|
393
|
+
// it but instead notify the user thread. Even if no callback
|
|
394
|
+
// was provided.
|
|
395
|
+
//
|
|
396
|
+
throw;
|
|
397
|
+
}
|
|
398
|
+
catch (...)
|
|
399
|
+
{
|
|
400
|
+
// ignored.
|
|
401
|
+
}
|
|
686
402
|
}
|
|
687
403
|
}
|
|
688
404
|
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
{
|
|
693
|
-
return _proxy;
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
Ice::CommunicatorPtr
|
|
697
|
-
ProxyOutgoingAsyncBase::getCommunicator() const
|
|
698
|
-
{
|
|
699
|
-
return _proxy->ice_getCommunicator();
|
|
700
|
-
}
|
|
701
|
-
#endif
|
|
702
|
-
|
|
703
|
-
ProxyOutgoingAsyncBase::ProxyOutgoingAsyncBase(const ObjectPrxPtr& prx) :
|
|
704
|
-
OutgoingAsyncBase(prx->_getReference()->getInstance()),
|
|
705
|
-
_proxy(prx),
|
|
706
|
-
_mode(ICE_ENUM(OperationMode, Normal)),
|
|
707
|
-
_cnt(0),
|
|
708
|
-
_sent(false)
|
|
405
|
+
ProxyOutgoingAsyncBase::ProxyOutgoingAsyncBase(ObjectPrx proxy)
|
|
406
|
+
: OutgoingAsyncBase(proxy->_getReference()->getInstance()),
|
|
407
|
+
_proxy(std::move(proxy))
|
|
709
408
|
{
|
|
710
409
|
}
|
|
711
410
|
|
|
712
|
-
ProxyOutgoingAsyncBase::~ProxyOutgoingAsyncBase()
|
|
713
|
-
{
|
|
714
|
-
}
|
|
411
|
+
ProxyOutgoingAsyncBase::~ProxyOutgoingAsyncBase() = default;
|
|
715
412
|
|
|
716
413
|
void
|
|
717
414
|
ProxyOutgoingAsyncBase::invokeImpl(bool userThread)
|
|
718
415
|
{
|
|
719
416
|
try
|
|
720
417
|
{
|
|
721
|
-
if(userThread)
|
|
418
|
+
if (userThread)
|
|
722
419
|
{
|
|
723
|
-
|
|
724
|
-
if(invocationTimeout >
|
|
420
|
+
chrono::milliseconds invocationTimeout = _proxy._getReference()->getInvocationTimeout();
|
|
421
|
+
if (invocationTimeout > 0ms)
|
|
725
422
|
{
|
|
726
|
-
_instance->timer()->schedule(
|
|
423
|
+
_instance->timer()->schedule(shared_from_this(), invocationTimeout);
|
|
727
424
|
}
|
|
728
425
|
}
|
|
729
426
|
else
|
|
@@ -731,26 +428,26 @@ ProxyOutgoingAsyncBase::invokeImpl(bool userThread)
|
|
|
731
428
|
_observer.retried();
|
|
732
429
|
}
|
|
733
430
|
|
|
734
|
-
while(true)
|
|
431
|
+
while (true)
|
|
735
432
|
{
|
|
736
433
|
try
|
|
737
434
|
{
|
|
738
435
|
_sent = false;
|
|
739
|
-
_handler = _proxy->
|
|
740
|
-
AsyncStatus status = _handler->sendAsyncRequest(
|
|
741
|
-
if(status & AsyncStatusSent)
|
|
436
|
+
_handler = _proxy._getRequestHandlerCache()->getRequestHandler();
|
|
437
|
+
AsyncStatus status = _handler->sendAsyncRequest(shared_from_this());
|
|
438
|
+
if (status & AsyncStatusSent)
|
|
742
439
|
{
|
|
743
|
-
if(userThread)
|
|
440
|
+
if (userThread)
|
|
744
441
|
{
|
|
745
442
|
_sentSynchronously = true;
|
|
746
|
-
if(status & AsyncStatusInvokeSentCallback)
|
|
443
|
+
if (status & AsyncStatusInvokeSentCallback)
|
|
747
444
|
{
|
|
748
445
|
invokeSent(); // Call the sent callback from the user thread.
|
|
749
446
|
}
|
|
750
447
|
}
|
|
751
448
|
else
|
|
752
449
|
{
|
|
753
|
-
if(status & AsyncStatusInvokeSentCallback)
|
|
450
|
+
if (status & AsyncStatusInvokeSentCallback)
|
|
754
451
|
{
|
|
755
452
|
invokeSentAsync(); // Call the sent callback from a client thread pool thread.
|
|
756
453
|
}
|
|
@@ -758,21 +455,23 @@ ProxyOutgoingAsyncBase::invokeImpl(bool userThread)
|
|
|
758
455
|
}
|
|
759
456
|
return; // We're done!
|
|
760
457
|
}
|
|
761
|
-
catch(const RetryException&)
|
|
458
|
+
catch (const RetryException&)
|
|
762
459
|
{
|
|
763
|
-
|
|
460
|
+
// Clear request handler and always retry.
|
|
461
|
+
_proxy._getRequestHandlerCache()->clearCachedRequestHandler(_handler);
|
|
764
462
|
}
|
|
765
|
-
catch(const Exception& ex)
|
|
463
|
+
catch (const Exception& ex)
|
|
766
464
|
{
|
|
767
|
-
if(_childObserver)
|
|
465
|
+
if (_childObserver)
|
|
768
466
|
{
|
|
769
467
|
_childObserver.failed(ex.ice_id());
|
|
770
468
|
_childObserver.detach();
|
|
771
469
|
}
|
|
772
|
-
int interval =
|
|
773
|
-
|
|
470
|
+
int interval = handleRetryAfterException(current_exception());
|
|
471
|
+
|
|
472
|
+
if (interval > 0)
|
|
774
473
|
{
|
|
775
|
-
_instance->retryQueue()->add(
|
|
474
|
+
_instance->retryQueue()->add(shared_from_this(), interval);
|
|
776
475
|
return;
|
|
777
476
|
}
|
|
778
477
|
else
|
|
@@ -782,17 +481,15 @@ ProxyOutgoingAsyncBase::invokeImpl(bool userThread)
|
|
|
782
481
|
}
|
|
783
482
|
}
|
|
784
483
|
}
|
|
785
|
-
catch(const Exception&
|
|
484
|
+
catch (const Exception&)
|
|
786
485
|
{
|
|
787
|
-
//
|
|
788
|
-
//
|
|
789
|
-
|
|
790
|
-
//
|
|
791
|
-
if(userThread)
|
|
486
|
+
// If called from the user thread we re-throw, the exception will be caught by the caller and handled using
|
|
487
|
+
// abort.
|
|
488
|
+
if (userThread)
|
|
792
489
|
{
|
|
793
490
|
throw;
|
|
794
491
|
}
|
|
795
|
-
else if(exceptionImpl(
|
|
492
|
+
else if (exceptionImpl(current_exception())) // No retries, we're done
|
|
796
493
|
{
|
|
797
494
|
invokeExceptionAsync();
|
|
798
495
|
}
|
|
@@ -803,22 +500,22 @@ bool
|
|
|
803
500
|
ProxyOutgoingAsyncBase::sentImpl(bool done)
|
|
804
501
|
{
|
|
805
502
|
_sent = true;
|
|
806
|
-
if(done)
|
|
503
|
+
if (done)
|
|
807
504
|
{
|
|
808
|
-
if(_proxy
|
|
505
|
+
if (_proxy._getReference()->getInvocationTimeout() > 0ms)
|
|
809
506
|
{
|
|
810
|
-
_instance->timer()->cancel(
|
|
507
|
+
_instance->timer()->cancel(shared_from_this());
|
|
811
508
|
}
|
|
812
509
|
}
|
|
813
510
|
return OutgoingAsyncBase::sentImpl(done);
|
|
814
511
|
}
|
|
815
512
|
|
|
816
513
|
bool
|
|
817
|
-
ProxyOutgoingAsyncBase::exceptionImpl(
|
|
514
|
+
ProxyOutgoingAsyncBase::exceptionImpl(std::exception_ptr ex)
|
|
818
515
|
{
|
|
819
|
-
if(_proxy
|
|
516
|
+
if (_proxy._getReference()->getInvocationTimeout() > 0ms)
|
|
820
517
|
{
|
|
821
|
-
_instance->timer()->cancel(
|
|
518
|
+
_instance->timer()->cancel(shared_from_this());
|
|
822
519
|
}
|
|
823
520
|
return OutgoingAsyncBase::exceptionImpl(ex);
|
|
824
521
|
}
|
|
@@ -826,9 +523,9 @@ ProxyOutgoingAsyncBase::exceptionImpl(const Exception& ex)
|
|
|
826
523
|
bool
|
|
827
524
|
ProxyOutgoingAsyncBase::responseImpl(bool ok, bool invoke)
|
|
828
525
|
{
|
|
829
|
-
if(_proxy
|
|
526
|
+
if (_proxy._getReference()->getInvocationTimeout() > 0ms)
|
|
830
527
|
{
|
|
831
|
-
_instance->timer()->cancel(
|
|
528
|
+
_instance->timer()->cancel(shared_from_this());
|
|
832
529
|
}
|
|
833
530
|
return OutgoingAsyncBase::responseImpl(ok, invoke);
|
|
834
531
|
}
|
|
@@ -836,59 +533,287 @@ ProxyOutgoingAsyncBase::responseImpl(bool ok, bool invoke)
|
|
|
836
533
|
void
|
|
837
534
|
ProxyOutgoingAsyncBase::runTimerTask()
|
|
838
535
|
{
|
|
839
|
-
|
|
536
|
+
cancel(make_exception_ptr(InvocationTimeoutException(__FILE__, __LINE__)));
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
int
|
|
540
|
+
ProxyOutgoingAsyncBase::handleRetryAfterException(std::exception_ptr ex)
|
|
541
|
+
{
|
|
542
|
+
// Clear the request handler
|
|
543
|
+
_proxy->_getRequestHandlerCache()->clearCachedRequestHandler(_handler);
|
|
544
|
+
|
|
545
|
+
// We only retry local exceptions, system exceptions aren't retried.
|
|
546
|
+
//
|
|
547
|
+
// A CloseConnectionException indicates graceful server shutdown, and is therefore
|
|
548
|
+
// always repeatable without violating "at-most-once". That's because by sending a
|
|
549
|
+
// close connection message, the server guarantees that all outstanding requests
|
|
550
|
+
// can safely be repeated.
|
|
551
|
+
//
|
|
552
|
+
// An ObjectNotExistException can always be retried as well without violating
|
|
553
|
+
// "at-most-once".
|
|
554
|
+
//
|
|
555
|
+
// If the request didn't get sent or if it's non-mutating or idempotent it can
|
|
556
|
+
// also always be retried if the retry count isn't reached.
|
|
557
|
+
try
|
|
558
|
+
{
|
|
559
|
+
rethrow_exception(ex);
|
|
560
|
+
}
|
|
561
|
+
catch (const Ice::LocalException& localEx)
|
|
562
|
+
{
|
|
563
|
+
if (!_sent || _mode != OperationMode::Normal || dynamic_cast<const CloseConnectionException*>(&localEx) ||
|
|
564
|
+
dynamic_cast<const ObjectNotExistException*>(&localEx))
|
|
565
|
+
{
|
|
566
|
+
try
|
|
567
|
+
{
|
|
568
|
+
return checkRetryAfterException(ex);
|
|
569
|
+
}
|
|
570
|
+
catch (const CommunicatorDestroyedException&)
|
|
571
|
+
{
|
|
572
|
+
rethrow_exception(ex); // The communicator is already destroyed, so we cannot retry.
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
else
|
|
576
|
+
{
|
|
577
|
+
throw; // Retry could break at-most-once semantics, don't retry.
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
// gcc complains without this return statement.
|
|
581
|
+
assert(false);
|
|
582
|
+
return 0;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
int
|
|
587
|
+
ProxyOutgoingAsyncBase::checkRetryAfterException(std::exception_ptr ex)
|
|
588
|
+
{
|
|
589
|
+
const ReferencePtr& ref = _proxy._getReference();
|
|
590
|
+
const InstancePtr& instance = ref->getInstance();
|
|
591
|
+
|
|
592
|
+
TraceLevelsPtr traceLevels = instance->traceLevels();
|
|
593
|
+
LoggerPtr logger = instance->initializationData().logger;
|
|
594
|
+
|
|
595
|
+
// We don't retry batch requests because the exception might have
|
|
596
|
+
// caused all the requests batched with the connection to be
|
|
597
|
+
// aborted and we want the application to be notified.
|
|
598
|
+
if (ref->isBatch())
|
|
599
|
+
{
|
|
600
|
+
rethrow_exception(ex);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
// If it's a fixed proxy, retrying isn't useful as the proxy is tied to
|
|
604
|
+
// the connection and the request will fail with the exception.
|
|
605
|
+
if (dynamic_pointer_cast<FixedReference>(ref))
|
|
840
606
|
{
|
|
841
|
-
|
|
607
|
+
rethrow_exception(ex);
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
bool isCloseConnectionException = false;
|
|
611
|
+
string errorMessage;
|
|
612
|
+
try
|
|
613
|
+
{
|
|
614
|
+
rethrow_exception(ex);
|
|
615
|
+
}
|
|
616
|
+
catch (const ObjectNotExistException& one)
|
|
617
|
+
{
|
|
618
|
+
if (ref->getRouterInfo() && one.operation() == "ice_add_proxy")
|
|
619
|
+
{
|
|
620
|
+
// If we have a router, an ObjectNotExistException with an
|
|
621
|
+
// operation name "ice_add_proxy" indicates to the client
|
|
622
|
+
// that the router isn't aware of the proxy (for example,
|
|
623
|
+
// because it was evicted by the router). In this case, we
|
|
624
|
+
// must *always* retry, so that the missing proxy is added
|
|
625
|
+
// to the router.
|
|
626
|
+
|
|
627
|
+
ref->getRouterInfo()->clearCache(ref);
|
|
628
|
+
|
|
629
|
+
if (traceLevels->retry >= 1)
|
|
630
|
+
{
|
|
631
|
+
Trace out(logger, traceLevels->retryCat);
|
|
632
|
+
out << "retrying operation call to add proxy to router\n" << one;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
return 0; // We must always retry, so we don't look at the retry count.
|
|
636
|
+
}
|
|
637
|
+
else if (ref->isIndirect())
|
|
638
|
+
{
|
|
639
|
+
// We retry ObjectNotExistException if the reference is indirect.
|
|
640
|
+
|
|
641
|
+
if (ref->isWellKnown())
|
|
642
|
+
{
|
|
643
|
+
LocatorInfoPtr li = ref->getLocatorInfo();
|
|
644
|
+
if (li)
|
|
645
|
+
{
|
|
646
|
+
li->clearCache(ref);
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
else
|
|
651
|
+
{
|
|
652
|
+
// For all other cases, we don't retry ObjectNotExistException.
|
|
653
|
+
throw;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
catch (const RequestFailedException&)
|
|
657
|
+
{
|
|
658
|
+
// We don't retry other *NotExistException, which are all
|
|
659
|
+
// derived from RequestFailedException.
|
|
660
|
+
throw;
|
|
661
|
+
}
|
|
662
|
+
catch (const MarshalException&)
|
|
663
|
+
{
|
|
664
|
+
// There is no point in retrying an operation that resulted in a
|
|
665
|
+
// MarshalException. This must have been raised locally (because
|
|
666
|
+
// if it happened in a server it would result in an
|
|
667
|
+
// UnknownLocalException instead), which means there was a problem
|
|
668
|
+
// in this process that will not change if we try again.
|
|
669
|
+
//
|
|
670
|
+
// A likely cause for a MarshalException is exceeding the
|
|
671
|
+
// maximum message size. For example, a client can attempt to send
|
|
672
|
+
// a message that exceeds the maximum memory size, or accumulate
|
|
673
|
+
// enough batch requests without flushing that the maximum size is
|
|
674
|
+
// reached.
|
|
675
|
+
//
|
|
676
|
+
// This latter case is especially problematic, because if we were
|
|
677
|
+
// to retry a batch request after a MarshalException, we would in
|
|
678
|
+
// fact silently discard the accumulated requests and allow new
|
|
679
|
+
// batch requests to accumulate. If the subsequent batched
|
|
680
|
+
// requests do not exceed the maximum message size, it appears to
|
|
681
|
+
// the client that all of the batched requests were accepted, when
|
|
682
|
+
// in reality only the last few are actually sent.
|
|
683
|
+
throw;
|
|
684
|
+
}
|
|
685
|
+
catch (const CommunicatorDestroyedException&)
|
|
686
|
+
{
|
|
687
|
+
throw;
|
|
688
|
+
}
|
|
689
|
+
catch (const ObjectAdapterDeactivatedException&)
|
|
690
|
+
{
|
|
691
|
+
throw;
|
|
692
|
+
}
|
|
693
|
+
catch (const ObjectAdapterDestroyedException&)
|
|
694
|
+
{
|
|
695
|
+
throw;
|
|
696
|
+
}
|
|
697
|
+
catch (const ConnectionAbortedException& connectionAbortedException)
|
|
698
|
+
{
|
|
699
|
+
if (connectionAbortedException.closedByApplication())
|
|
700
|
+
{
|
|
701
|
+
throw; // do not retry
|
|
702
|
+
}
|
|
703
|
+
errorMessage = connectionAbortedException.what();
|
|
704
|
+
// and retry
|
|
705
|
+
}
|
|
706
|
+
catch (const ConnectionClosedException& connectionClosedException)
|
|
707
|
+
{
|
|
708
|
+
if (connectionClosedException.closedByApplication())
|
|
709
|
+
{
|
|
710
|
+
throw; // do not retry
|
|
711
|
+
}
|
|
712
|
+
errorMessage = connectionClosedException.what();
|
|
713
|
+
// and retry
|
|
714
|
+
}
|
|
715
|
+
catch (const InvocationTimeoutException&)
|
|
716
|
+
{
|
|
717
|
+
throw;
|
|
718
|
+
}
|
|
719
|
+
catch (const InvocationCanceledException&)
|
|
720
|
+
{
|
|
721
|
+
throw;
|
|
722
|
+
}
|
|
723
|
+
catch (const CloseConnectionException& e)
|
|
724
|
+
{
|
|
725
|
+
isCloseConnectionException = true;
|
|
726
|
+
errorMessage = e.what();
|
|
727
|
+
// and retry
|
|
728
|
+
}
|
|
729
|
+
catch (const std::exception& e)
|
|
730
|
+
{
|
|
731
|
+
errorMessage = e.what();
|
|
732
|
+
// We retry on all other exceptions!
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
++_cnt;
|
|
736
|
+
assert(_cnt > 0);
|
|
737
|
+
|
|
738
|
+
const auto& retryIntervals = instance->retryIntervals();
|
|
739
|
+
int interval = -1;
|
|
740
|
+
if (_cnt == static_cast<int>(retryIntervals.size() + 1) && isCloseConnectionException)
|
|
741
|
+
{
|
|
742
|
+
// A close connection exception is always retried at least once, even if the retry
|
|
743
|
+
// limit is reached.
|
|
744
|
+
interval = 0;
|
|
745
|
+
}
|
|
746
|
+
else if (_cnt > static_cast<int>(retryIntervals.size()))
|
|
747
|
+
{
|
|
748
|
+
if (traceLevels->retry >= 1)
|
|
749
|
+
{
|
|
750
|
+
Trace out(logger, traceLevels->retryCat);
|
|
751
|
+
out << "cannot retry operation call because retry limit has been exceeded\n" << errorMessage;
|
|
752
|
+
}
|
|
753
|
+
rethrow_exception(ex);
|
|
842
754
|
}
|
|
843
755
|
else
|
|
844
756
|
{
|
|
845
|
-
|
|
757
|
+
interval = retryIntervals[static_cast<size_t>(_cnt - 1)];
|
|
846
758
|
}
|
|
759
|
+
|
|
760
|
+
if (traceLevels->retry >= 1)
|
|
761
|
+
{
|
|
762
|
+
Trace out(logger, traceLevels->retryCat);
|
|
763
|
+
out << "retrying operation call";
|
|
764
|
+
if (interval > 0)
|
|
765
|
+
{
|
|
766
|
+
out << " in " << interval << "ms";
|
|
767
|
+
}
|
|
768
|
+
out << " because of exception\n" << errorMessage;
|
|
769
|
+
}
|
|
770
|
+
return interval;
|
|
847
771
|
}
|
|
848
772
|
|
|
849
|
-
OutgoingAsync::OutgoingAsync(
|
|
850
|
-
ProxyOutgoingAsyncBase(
|
|
851
|
-
|
|
852
|
-
|
|
773
|
+
OutgoingAsync::OutgoingAsync(ObjectPrx proxy, bool synchronous)
|
|
774
|
+
: ProxyOutgoingAsyncBase(std::move(proxy)),
|
|
775
|
+
_encoding(_proxy->_getReference()->getEncoding()),
|
|
776
|
+
_synchronous(synchronous)
|
|
853
777
|
{
|
|
854
778
|
}
|
|
855
779
|
|
|
856
780
|
void
|
|
857
|
-
OutgoingAsync::prepare(
|
|
781
|
+
OutgoingAsync::prepare(string_view operation, OperationMode mode, const Context& context)
|
|
858
782
|
{
|
|
859
|
-
|
|
783
|
+
if (_proxy._getReference()->getProtocol() != currentProtocol)
|
|
784
|
+
{
|
|
785
|
+
throw FeatureNotSupportedException{
|
|
786
|
+
__FILE__,
|
|
787
|
+
__LINE__,
|
|
788
|
+
"cannot send request using protocol version " +
|
|
789
|
+
protocolVersionToString(_proxy._getReference()->getProtocol())};
|
|
790
|
+
}
|
|
860
791
|
|
|
861
792
|
_mode = mode;
|
|
793
|
+
|
|
862
794
|
_observer.attach(_proxy, operation, context);
|
|
863
795
|
|
|
864
|
-
|
|
796
|
+
// We need to check isBatch() and not if getBatchRequestQueue() is not null: for a fixed proxy,
|
|
797
|
+
// getBatchRequestQueue() always returns a non null value.
|
|
798
|
+
if (_proxy._getReference()->isBatch())
|
|
865
799
|
{
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
break;
|
|
872
|
-
}
|
|
873
|
-
|
|
874
|
-
case Reference::ModeBatchOneway:
|
|
875
|
-
case Reference::ModeBatchDatagram:
|
|
876
|
-
{
|
|
877
|
-
_proxy->_getBatchRequestQueue()->prepareBatchRequest(&_os);
|
|
878
|
-
break;
|
|
879
|
-
}
|
|
800
|
+
_proxy._getReference()->getBatchRequestQueue()->prepareBatchRequest(&_os);
|
|
801
|
+
}
|
|
802
|
+
else
|
|
803
|
+
{
|
|
804
|
+
_os.writeBlob(requestHdr, sizeof(requestHdr));
|
|
880
805
|
}
|
|
881
806
|
|
|
882
|
-
Reference* ref = _proxy
|
|
807
|
+
Reference* ref = _proxy._getReference().get();
|
|
883
808
|
|
|
884
809
|
_os.write(ref->getIdentity());
|
|
885
810
|
|
|
886
811
|
//
|
|
887
812
|
// For compatibility with the old FacetPath.
|
|
888
813
|
//
|
|
889
|
-
if(ref->getFacet().empty())
|
|
814
|
+
if (ref->getFacet().empty())
|
|
890
815
|
{
|
|
891
|
-
_os.write(static_cast<string*>(
|
|
816
|
+
_os.write(static_cast<string*>(nullptr), static_cast<string*>(nullptr));
|
|
892
817
|
}
|
|
893
818
|
else
|
|
894
819
|
{
|
|
@@ -898,19 +823,9 @@ OutgoingAsync::prepare(const string& operation, OperationMode mode, const Contex
|
|
|
898
823
|
|
|
899
824
|
_os.write(operation, false);
|
|
900
825
|
|
|
901
|
-
_os.write(static_cast<
|
|
826
|
+
_os.write(static_cast<uint8_t>(_mode));
|
|
902
827
|
|
|
903
|
-
|
|
904
|
-
//
|
|
905
|
-
// COMPILERFIX v90 and v100 get confused with namespaces and we need to
|
|
906
|
-
// defined both Ice::noExplicitContext and IceProxy::Ice::noExplicitContext
|
|
907
|
-
// see comments in Ice/Proxy.h.
|
|
908
|
-
//
|
|
909
|
-
if(&context != &Ice::noExplicitContext &&
|
|
910
|
-
&context != &IceProxy::Ice::noExplicitContext)
|
|
911
|
-
#else
|
|
912
|
-
if(&context != &Ice::noExplicitContext)
|
|
913
|
-
#endif
|
|
828
|
+
if (&context != &noExplicitContext)
|
|
914
829
|
{
|
|
915
830
|
//
|
|
916
831
|
// Explicit context
|
|
@@ -922,15 +837,15 @@ OutgoingAsync::prepare(const string& operation, OperationMode mode, const Contex
|
|
|
922
837
|
//
|
|
923
838
|
// Implicit context
|
|
924
839
|
//
|
|
925
|
-
const
|
|
840
|
+
const ImplicitContextPtr& implicitContext = ref->getInstance()->getImplicitContext();
|
|
926
841
|
const Context& prxContext = ref->getContext()->getValue();
|
|
927
|
-
if(implicitContext
|
|
842
|
+
if (implicitContext)
|
|
928
843
|
{
|
|
929
|
-
|
|
844
|
+
implicitContext->write(prxContext, &_os);
|
|
930
845
|
}
|
|
931
846
|
else
|
|
932
847
|
{
|
|
933
|
-
|
|
848
|
+
_os.write(prxContext);
|
|
934
849
|
}
|
|
935
850
|
}
|
|
936
851
|
}
|
|
@@ -938,7 +853,8 @@ OutgoingAsync::prepare(const string& operation, OperationMode mode, const Contex
|
|
|
938
853
|
bool
|
|
939
854
|
OutgoingAsync::sent()
|
|
940
855
|
{
|
|
941
|
-
return ProxyOutgoingAsyncBase::sentImpl(
|
|
856
|
+
return ProxyOutgoingAsyncBase::sentImpl(
|
|
857
|
+
!_proxy._getReference()->isTwoway()); // done = true if it's not a two-way proxy
|
|
942
858
|
}
|
|
943
859
|
|
|
944
860
|
bool
|
|
@@ -949,34 +865,32 @@ OutgoingAsync::response()
|
|
|
949
865
|
// with the connection locked. Therefore, it must not invoke
|
|
950
866
|
// any user callbacks.
|
|
951
867
|
//
|
|
952
|
-
assert(_proxy->
|
|
868
|
+
assert(_proxy._getReference()->isTwoway()); // Can only be called for twoways.
|
|
953
869
|
|
|
954
|
-
if(_childObserver)
|
|
870
|
+
if (_childObserver)
|
|
955
871
|
{
|
|
956
|
-
_childObserver->reply(static_cast<
|
|
872
|
+
_childObserver->reply(static_cast<int32_t>(_is.b.size() - headerSize - 4));
|
|
957
873
|
_childObserver.detach();
|
|
958
874
|
}
|
|
959
875
|
|
|
960
|
-
Byte replyStatus;
|
|
961
876
|
try
|
|
962
877
|
{
|
|
963
|
-
|
|
878
|
+
// We can't use the generated code to unmarshal a possibly unknown reply status enumerator.
|
|
879
|
+
uint8_t replyStatusByte;
|
|
880
|
+
_is.read(replyStatusByte);
|
|
881
|
+
ReplyStatus replyStatus{replyStatusByte};
|
|
964
882
|
|
|
965
|
-
switch(replyStatus)
|
|
883
|
+
switch (replyStatus)
|
|
966
884
|
{
|
|
967
|
-
case
|
|
968
|
-
{
|
|
885
|
+
case ReplyStatus::Ok:
|
|
969
886
|
break;
|
|
970
|
-
|
|
971
|
-
case replyUserException:
|
|
972
|
-
{
|
|
887
|
+
case ReplyStatus::UserException:
|
|
973
888
|
_observer.userException();
|
|
974
889
|
break;
|
|
975
|
-
}
|
|
976
890
|
|
|
977
|
-
case
|
|
978
|
-
case
|
|
979
|
-
case
|
|
891
|
+
case ReplyStatus::ObjectNotExist:
|
|
892
|
+
case ReplyStatus::FacetNotExist:
|
|
893
|
+
case ReplyStatus::OperationNotExist:
|
|
980
894
|
{
|
|
981
895
|
Identity ident;
|
|
982
896
|
_is.read(ident);
|
|
@@ -987,104 +901,79 @@ OutgoingAsync::response()
|
|
|
987
901
|
vector<string> facetPath;
|
|
988
902
|
_is.read(facetPath);
|
|
989
903
|
string facet;
|
|
990
|
-
if(!facetPath.empty())
|
|
904
|
+
if (!facetPath.empty())
|
|
991
905
|
{
|
|
992
|
-
if(facetPath.size() > 1)
|
|
906
|
+
if (facetPath.size() > 1)
|
|
993
907
|
{
|
|
994
|
-
throw MarshalException
|
|
908
|
+
throw MarshalException{__FILE__, __LINE__, "received facet path with more than one element"};
|
|
995
909
|
}
|
|
996
910
|
facet.swap(facetPath[0]);
|
|
997
911
|
}
|
|
998
912
|
|
|
999
913
|
string operation;
|
|
1000
914
|
_is.read(operation, false);
|
|
1001
|
-
|
|
1002
|
-
IceInternal::UniquePtr<RequestFailedException> ex;
|
|
1003
|
-
switch(replyStatus)
|
|
915
|
+
switch (replyStatus)
|
|
1004
916
|
{
|
|
1005
|
-
case
|
|
1006
|
-
|
|
1007
|
-
|
|
917
|
+
case ReplyStatus::ObjectNotExist:
|
|
918
|
+
throw ObjectNotExistException{
|
|
919
|
+
__FILE__,
|
|
920
|
+
__LINE__,
|
|
921
|
+
std::move(ident),
|
|
922
|
+
std::move(facet),
|
|
923
|
+
std::move(operation)};
|
|
1008
924
|
break;
|
|
1009
|
-
}
|
|
1010
|
-
|
|
1011
|
-
case replyFacetNotExist:
|
|
1012
|
-
{
|
|
1013
|
-
ex.reset(new FacetNotExistException(__FILE__, __LINE__));
|
|
1014
|
-
break;
|
|
1015
|
-
}
|
|
1016
925
|
|
|
1017
|
-
case
|
|
1018
|
-
|
|
1019
|
-
|
|
926
|
+
case ReplyStatus::FacetNotExist:
|
|
927
|
+
throw FacetNotExistException{
|
|
928
|
+
__FILE__,
|
|
929
|
+
__LINE__,
|
|
930
|
+
std::move(ident),
|
|
931
|
+
std::move(facet),
|
|
932
|
+
std::move(operation)};
|
|
1020
933
|
break;
|
|
1021
|
-
}
|
|
1022
934
|
|
|
1023
935
|
default:
|
|
1024
|
-
|
|
1025
|
-
|
|
936
|
+
throw OperationNotExistException{
|
|
937
|
+
__FILE__,
|
|
938
|
+
__LINE__,
|
|
939
|
+
std::move(ident),
|
|
940
|
+
std::move(facet),
|
|
941
|
+
std::move(operation)};
|
|
1026
942
|
break;
|
|
1027
|
-
}
|
|
1028
943
|
}
|
|
1029
|
-
|
|
1030
|
-
ex->id = ident;
|
|
1031
|
-
ex->facet = facet;
|
|
1032
|
-
ex->operation = operation;
|
|
1033
|
-
ex->ice_throw();
|
|
1034
944
|
break;
|
|
1035
945
|
}
|
|
1036
946
|
|
|
1037
|
-
|
|
1038
|
-
case replyUnknownLocalException:
|
|
1039
|
-
case replyUnknownUserException:
|
|
947
|
+
default:
|
|
1040
948
|
{
|
|
1041
|
-
string
|
|
1042
|
-
_is.read(
|
|
949
|
+
string message;
|
|
950
|
+
_is.read(message, false);
|
|
1043
951
|
|
|
1044
|
-
|
|
1045
|
-
switch(replyStatus)
|
|
952
|
+
switch (replyStatus)
|
|
1046
953
|
{
|
|
1047
|
-
case
|
|
1048
|
-
|
|
1049
|
-
ex.reset(new UnknownException(__FILE__, __LINE__));
|
|
954
|
+
case ReplyStatus::UnknownException:
|
|
955
|
+
throw UnknownException{__FILE__, __LINE__, std::move(message)};
|
|
1050
956
|
break;
|
|
1051
|
-
}
|
|
1052
957
|
|
|
1053
|
-
case
|
|
1054
|
-
|
|
1055
|
-
ex.reset(new UnknownLocalException(__FILE__, __LINE__));
|
|
958
|
+
case ReplyStatus::UnknownLocalException:
|
|
959
|
+
throw UnknownLocalException{__FILE__, __LINE__, std::move(message)};
|
|
1056
960
|
break;
|
|
1057
|
-
}
|
|
1058
961
|
|
|
1059
|
-
case
|
|
1060
|
-
|
|
1061
|
-
ex.reset(new UnknownUserException(__FILE__, __LINE__));
|
|
962
|
+
case ReplyStatus::UnknownUserException:
|
|
963
|
+
throw UnknownUserException{__FILE__, __LINE__, std::move(message)};
|
|
1062
964
|
break;
|
|
1063
|
-
}
|
|
1064
965
|
|
|
1065
966
|
default:
|
|
1066
|
-
|
|
1067
|
-
assert(false);
|
|
1068
|
-
break;
|
|
1069
|
-
}
|
|
967
|
+
throw DispatchException{__FILE__, __LINE__, replyStatus, std::move(message)};
|
|
1070
968
|
}
|
|
1071
|
-
|
|
1072
|
-
ex->unknown = unknown;
|
|
1073
|
-
ex->ice_throw();
|
|
1074
|
-
break;
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
|
-
default:
|
|
1078
|
-
{
|
|
1079
|
-
throw UnknownReplyStatusException(__FILE__, __LINE__);
|
|
1080
969
|
}
|
|
1081
970
|
}
|
|
1082
971
|
|
|
1083
|
-
return responseImpl(replyStatus ==
|
|
972
|
+
return responseImpl(replyStatus == ReplyStatus::Ok, true);
|
|
1084
973
|
}
|
|
1085
|
-
catch(const Exception&
|
|
974
|
+
catch (const Exception&)
|
|
1086
975
|
{
|
|
1087
|
-
return exception(
|
|
976
|
+
return exception(current_exception());
|
|
1088
977
|
}
|
|
1089
978
|
}
|
|
1090
979
|
|
|
@@ -1092,7 +981,7 @@ AsyncStatus
|
|
|
1092
981
|
OutgoingAsync::invokeRemote(const ConnectionIPtr& connection, bool compress, bool response)
|
|
1093
982
|
{
|
|
1094
983
|
_cachedConnection = connection;
|
|
1095
|
-
return connection->sendAsyncRequest(
|
|
984
|
+
return connection->sendAsyncRequest(shared_from_this(), compress, response, 0);
|
|
1096
985
|
}
|
|
1097
986
|
|
|
1098
987
|
AsyncStatus
|
|
@@ -1102,54 +991,48 @@ OutgoingAsync::invokeCollocated(CollocatedRequestHandler* handler)
|
|
|
1102
991
|
}
|
|
1103
992
|
|
|
1104
993
|
void
|
|
1105
|
-
OutgoingAsync::abort(
|
|
994
|
+
OutgoingAsync::abort(std::exception_ptr ex)
|
|
1106
995
|
{
|
|
1107
|
-
|
|
1108
|
-
if(mode == Reference::ModeBatchOneway || mode == Reference::ModeBatchDatagram)
|
|
996
|
+
if (_proxy._getReference()->isBatch())
|
|
1109
997
|
{
|
|
1110
998
|
//
|
|
1111
999
|
// If we didn't finish a batch oneway or datagram request, we
|
|
1112
1000
|
// must notify the connection about that we give up ownership
|
|
1113
1001
|
// of the batch stream.
|
|
1114
1002
|
//
|
|
1115
|
-
_proxy->
|
|
1003
|
+
_proxy._getReference()->getBatchRequestQueue()->abortBatchRequest(&_os);
|
|
1116
1004
|
}
|
|
1117
1005
|
|
|
1118
1006
|
ProxyOutgoingAsyncBase::abort(ex);
|
|
1119
1007
|
}
|
|
1120
1008
|
|
|
1121
1009
|
void
|
|
1122
|
-
OutgoingAsync::invoke(
|
|
1010
|
+
OutgoingAsync::invoke(string_view operation)
|
|
1123
1011
|
{
|
|
1124
|
-
|
|
1125
|
-
if(mode == Reference::ModeBatchOneway || mode == Reference::ModeBatchDatagram)
|
|
1012
|
+
if (_proxy._getReference()->isBatch())
|
|
1126
1013
|
{
|
|
1127
1014
|
_sentSynchronously = true;
|
|
1128
|
-
_proxy->
|
|
1015
|
+
_proxy._getReference()->getBatchRequestQueue()->finishBatchRequest(&_os, _proxy, operation);
|
|
1129
1016
|
responseImpl(true, false); // Don't call sent/completed callback for batch AMI requests
|
|
1130
1017
|
return;
|
|
1131
1018
|
}
|
|
1132
1019
|
|
|
1133
|
-
//
|
|
1134
|
-
// NOTE: invokeImpl doesn't throw so this can be called from the
|
|
1135
|
-
// try block with the catch block calling abort(ex) in case of an
|
|
1136
|
-
// exception.
|
|
1137
|
-
//
|
|
1020
|
+
// invokeImpl can throw. The exception should be handled by calling abort (in the caller).
|
|
1138
1021
|
invokeImpl(true); // userThread = true
|
|
1139
1022
|
}
|
|
1140
1023
|
|
|
1141
|
-
#ifdef ICE_CPP11_MAPPING
|
|
1142
1024
|
void
|
|
1143
|
-
OutgoingAsync::invoke(
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1025
|
+
OutgoingAsync::invoke(
|
|
1026
|
+
string_view operation,
|
|
1027
|
+
OperationMode mode,
|
|
1028
|
+
optional<FormatType> format,
|
|
1029
|
+
const Context& context,
|
|
1030
|
+
const function<void(OutputStream*)>& write)
|
|
1148
1031
|
{
|
|
1149
1032
|
try
|
|
1150
1033
|
{
|
|
1151
1034
|
prepare(operation, mode, context);
|
|
1152
|
-
if(write)
|
|
1035
|
+
if (write)
|
|
1153
1036
|
{
|
|
1154
1037
|
_os.startEncapsulation(_encoding, format);
|
|
1155
1038
|
write(&_os);
|
|
@@ -1161,9 +1044,9 @@ OutgoingAsync::invoke(const string& operation,
|
|
|
1161
1044
|
}
|
|
1162
1045
|
invoke(operation);
|
|
1163
1046
|
}
|
|
1164
|
-
catch(const
|
|
1047
|
+
catch (const Exception&)
|
|
1165
1048
|
{
|
|
1166
|
-
abort(
|
|
1049
|
+
abort(current_exception());
|
|
1167
1050
|
}
|
|
1168
1051
|
}
|
|
1169
1052
|
|
|
@@ -1175,29 +1058,25 @@ OutgoingAsync::throwUserException()
|
|
|
1175
1058
|
_is.startEncapsulation();
|
|
1176
1059
|
_is.throwException();
|
|
1177
1060
|
}
|
|
1178
|
-
catch(const UserException& ex)
|
|
1061
|
+
catch (const UserException& ex)
|
|
1179
1062
|
{
|
|
1180
1063
|
_is.endEncapsulation();
|
|
1181
|
-
if(_userException)
|
|
1064
|
+
if (_userException)
|
|
1182
1065
|
{
|
|
1183
1066
|
_userException(ex);
|
|
1184
1067
|
}
|
|
1185
|
-
throw UnknownUserException(__FILE__, __LINE__, ex.ice_id());
|
|
1068
|
+
throw UnknownUserException::fromTypeId(__FILE__, __LINE__, ex.ice_id());
|
|
1186
1069
|
}
|
|
1187
1070
|
}
|
|
1188
1071
|
|
|
1189
|
-
#endif
|
|
1190
|
-
|
|
1191
|
-
#ifdef ICE_CPP11_MAPPING
|
|
1192
|
-
|
|
1193
1072
|
bool
|
|
1194
|
-
LambdaInvoke::handleSent(bool, bool alreadySent)
|
|
1073
|
+
LambdaInvoke::handleSent(bool, bool alreadySent) noexcept
|
|
1195
1074
|
{
|
|
1196
1075
|
return _sent != nullptr && !alreadySent; // Invoke the sent callback only if not already invoked.
|
|
1197
1076
|
}
|
|
1198
1077
|
|
|
1199
1078
|
bool
|
|
1200
|
-
LambdaInvoke::handleException(
|
|
1079
|
+
LambdaInvoke::handleException(std::exception_ptr) noexcept
|
|
1201
1080
|
{
|
|
1202
1081
|
return _exception != nullptr; // Invoke the callback
|
|
1203
1082
|
}
|
|
@@ -1215,16 +1094,9 @@ LambdaInvoke::handleInvokeSent(bool sentSynchronously, OutgoingAsyncBase*) const
|
|
|
1215
1094
|
}
|
|
1216
1095
|
|
|
1217
1096
|
void
|
|
1218
|
-
LambdaInvoke::handleInvokeException(
|
|
1097
|
+
LambdaInvoke::handleInvokeException(std::exception_ptr ex, OutgoingAsyncBase*) const
|
|
1219
1098
|
{
|
|
1220
|
-
|
|
1221
|
-
{
|
|
1222
|
-
ex.ice_throw();
|
|
1223
|
-
}
|
|
1224
|
-
catch(const Ice::Exception&)
|
|
1225
|
-
{
|
|
1226
|
-
_exception(current_exception());
|
|
1227
|
-
}
|
|
1099
|
+
_exception(ex);
|
|
1228
1100
|
}
|
|
1229
1101
|
|
|
1230
1102
|
void
|
|
@@ -1232,91 +1104,3 @@ LambdaInvoke::handleInvokeResponse(bool ok, OutgoingAsyncBase*) const
|
|
|
1232
1104
|
{
|
|
1233
1105
|
_response(ok);
|
|
1234
1106
|
}
|
|
1235
|
-
|
|
1236
|
-
#else // C++98
|
|
1237
|
-
|
|
1238
|
-
namespace
|
|
1239
|
-
{
|
|
1240
|
-
|
|
1241
|
-
//
|
|
1242
|
-
// Dummy class derived from CallbackBase
|
|
1243
|
-
// We use this class for the dummyCallback extern pointer in OutgoingAsync. In turn,
|
|
1244
|
-
// this allows us to test whether the user supplied a null delegate instance to the
|
|
1245
|
-
// generated begin_ method without having to generate a separate test to throw IllegalArgumentException
|
|
1246
|
-
// in the inlined versions of the begin_ method. In other words, this reduces the amount of generated
|
|
1247
|
-
// object code.
|
|
1248
|
-
//
|
|
1249
|
-
class DummyCallback : public CallbackBase
|
|
1250
|
-
{
|
|
1251
|
-
public:
|
|
1252
|
-
|
|
1253
|
-
DummyCallback()
|
|
1254
|
-
{
|
|
1255
|
-
}
|
|
1256
|
-
|
|
1257
|
-
virtual void
|
|
1258
|
-
completed(const Ice::AsyncResultPtr&) const
|
|
1259
|
-
{
|
|
1260
|
-
assert(false);
|
|
1261
|
-
}
|
|
1262
|
-
|
|
1263
|
-
virtual CallbackBasePtr
|
|
1264
|
-
verify(const Ice::LocalObjectPtr&)
|
|
1265
|
-
{
|
|
1266
|
-
//
|
|
1267
|
-
// Called by the AsyncResult constructor to verify the delegate. The dummy
|
|
1268
|
-
// delegate is passed when the user used a begin_ method without delegate.
|
|
1269
|
-
// By returning 0 here, we tell the AsyncResult that no delegates was
|
|
1270
|
-
// provided.
|
|
1271
|
-
//
|
|
1272
|
-
return 0;
|
|
1273
|
-
}
|
|
1274
|
-
|
|
1275
|
-
virtual void
|
|
1276
|
-
sent(const AsyncResultPtr&) const
|
|
1277
|
-
{
|
|
1278
|
-
assert(false);
|
|
1279
|
-
}
|
|
1280
|
-
|
|
1281
|
-
virtual bool
|
|
1282
|
-
hasSentCallback() const
|
|
1283
|
-
{
|
|
1284
|
-
assert(false);
|
|
1285
|
-
return false;
|
|
1286
|
-
}
|
|
1287
|
-
};
|
|
1288
|
-
|
|
1289
|
-
}
|
|
1290
|
-
|
|
1291
|
-
//
|
|
1292
|
-
// This gives a pointer value to compare against in the generated
|
|
1293
|
-
// begin_ method to decide whether the caller passed a null pointer
|
|
1294
|
-
// versus the generated inline version of the begin_ method having
|
|
1295
|
-
// passed a pointer to the dummy delegate.
|
|
1296
|
-
//
|
|
1297
|
-
CallbackBasePtr IceInternal::dummyCallback = new DummyCallback;
|
|
1298
|
-
|
|
1299
|
-
CallbackBase::~CallbackBase()
|
|
1300
|
-
{
|
|
1301
|
-
// Out of line to avoid weak vtable
|
|
1302
|
-
}
|
|
1303
|
-
|
|
1304
|
-
void
|
|
1305
|
-
CallbackBase::checkCallback(bool obj, bool cb)
|
|
1306
|
-
{
|
|
1307
|
-
if(!obj)
|
|
1308
|
-
{
|
|
1309
|
-
throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "callback object cannot be null");
|
|
1310
|
-
}
|
|
1311
|
-
if(!cb)
|
|
1312
|
-
{
|
|
1313
|
-
throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "callback cannot be null");
|
|
1314
|
-
}
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
|
-
GenericCallbackBase::~GenericCallbackBase()
|
|
1318
|
-
{
|
|
1319
|
-
// Out of line to avoid weak vtable
|
|
1320
|
-
}
|
|
1321
|
-
|
|
1322
|
-
#endif
|