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,36 +1,32 @@
|
|
|
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
|
|
18
|
-
#include
|
|
19
|
-
#include
|
|
20
|
-
|
|
21
|
-
#include <
|
|
22
|
-
#include <
|
|
23
|
-
#include <Ice/CommunicatorI.h>
|
|
24
|
-
#include <IceUtil/Random.h>
|
|
1
|
+
// Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
#include "ConnectionFactory.h"
|
|
4
|
+
#include "Acceptor.h"
|
|
5
|
+
#include "CommunicatorFlushBatchAsync.h"
|
|
6
|
+
#include "ConnectionI.h"
|
|
7
|
+
#include "Connector.h"
|
|
8
|
+
#include "DefaultsAndOverrides.h"
|
|
9
|
+
#include "EndpointI.h"
|
|
10
|
+
#include "Ice/Communicator.h"
|
|
11
|
+
#include "Ice/LocalExceptions.h"
|
|
12
|
+
#include "Ice/LoggerUtil.h"
|
|
13
|
+
#include "Ice/Properties.h"
|
|
14
|
+
#include "Instance.h"
|
|
15
|
+
#include "ObjectAdapterI.h"
|
|
16
|
+
#include "RouterInfo.h"
|
|
17
|
+
#include "ThreadPool.h"
|
|
18
|
+
#include "TraceLevels.h"
|
|
19
|
+
#include "Transceiver.h"
|
|
20
|
+
|
|
21
|
+
#include <algorithm>
|
|
22
|
+
#include <chrono>
|
|
25
23
|
#include <iterator>
|
|
26
24
|
|
|
27
25
|
#if TARGET_OS_IPHONE != 0
|
|
28
26
|
namespace IceInternal
|
|
29
27
|
{
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
void unregisterForBackgroundNotification(const IceInternal::IncomingConnectionFactoryPtr&);
|
|
33
|
-
|
|
28
|
+
bool registerForBackgroundNotification(const IceInternal::IncomingConnectionFactoryPtr&);
|
|
29
|
+
void unregisterForBackgroundNotification(const IceInternal::IncomingConnectionFactoryPtr&);
|
|
34
30
|
}
|
|
35
31
|
#endif
|
|
36
32
|
|
|
@@ -39,201 +35,88 @@ using namespace Ice;
|
|
|
39
35
|
using namespace Ice::Instrumentation;
|
|
40
36
|
using namespace IceInternal;
|
|
41
37
|
|
|
42
|
-
IceUtil::Shared* IceInternal::upCast(OutgoingConnectionFactory* p) { return p; }
|
|
43
|
-
|
|
44
|
-
#ifndef ICE_CPP11_MAPPING
|
|
45
|
-
IceUtil::Shared* IceInternal::upCast(IncomingConnectionFactory* p) { return p; }
|
|
46
|
-
#endif
|
|
47
|
-
|
|
48
38
|
namespace
|
|
49
39
|
{
|
|
50
|
-
|
|
51
|
-
#ifdef ICE_CPP11_COMPILER
|
|
52
|
-
template <typename Map> void
|
|
53
|
-
remove(Map& m, const typename Map::key_type& k, const typename Map::mapped_type& v)
|
|
54
|
-
{
|
|
55
|
-
auto pr = m.equal_range(k);
|
|
56
|
-
assert(pr.first != pr.second);
|
|
57
|
-
for(auto q = pr.first; q != pr.second; ++q)
|
|
58
|
-
{
|
|
59
|
-
if(q->second.get() == v.get())
|
|
60
|
-
{
|
|
61
|
-
m.erase(q);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
assert(false); // Nothing was removed which is an error.
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
template<typename Map, typename Predicate> typename Map::mapped_type
|
|
69
|
-
find(const Map& m, const typename Map::key_type& k, Predicate predicate)
|
|
70
|
-
{
|
|
71
|
-
auto pr = m.equal_range(k);
|
|
72
|
-
for(auto q = pr.first; q != pr.second; ++q)
|
|
73
|
-
{
|
|
74
|
-
if(predicate(q->second))
|
|
75
|
-
{
|
|
76
|
-
return q->second;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return nullptr;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
#else
|
|
83
|
-
template <typename K, typename V> void
|
|
84
|
-
remove(multimap<K, V>& m, K k, V v)
|
|
85
|
-
{
|
|
86
|
-
pair<typename multimap<K, V>::iterator, typename multimap<K, V>::iterator> pr = m.equal_range(k);
|
|
87
|
-
assert(pr.first != pr.second);
|
|
88
|
-
for(typename multimap<K, V>::iterator q = pr.first; q != pr.second; ++q)
|
|
89
|
-
{
|
|
90
|
-
if(q->second.get() == v.get())
|
|
91
|
-
{
|
|
92
|
-
m.erase(q);
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
assert(false); // Nothing was removed which is an error.
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
template <typename K, typename V> ::IceInternal::Handle<V>
|
|
100
|
-
find(const multimap<K,::IceInternal::Handle<V> >& m,
|
|
101
|
-
K k,
|
|
102
|
-
const ::IceUtilInternal::ConstMemFun<bool, V, ::IceInternal::Handle<V> >& predicate)
|
|
103
|
-
{
|
|
104
|
-
pair<typename multimap<K, ::IceInternal::Handle<V> >::const_iterator,
|
|
105
|
-
typename multimap<K, ::IceInternal::Handle<V> >::const_iterator> pr = m.equal_range(k);
|
|
106
|
-
for(typename multimap<K, ::IceInternal::Handle<V> >::const_iterator q = pr.first; q != pr.second; ++q)
|
|
40
|
+
template<typename Map> void remove(Map& m, const typename Map::key_type& k, const typename Map::mapped_type& v)
|
|
107
41
|
{
|
|
108
|
-
|
|
42
|
+
auto pr = m.equal_range(k);
|
|
43
|
+
assert(pr.first != pr.second);
|
|
44
|
+
for (auto q = pr.first; q != pr.second; ++q)
|
|
109
45
|
{
|
|
110
|
-
|
|
46
|
+
if (q->second.get() == v.get())
|
|
47
|
+
{
|
|
48
|
+
m.erase(q);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
111
51
|
}
|
|
52
|
+
assert(false); // Nothing was removed which is an error.
|
|
112
53
|
}
|
|
113
|
-
return IceInternal::Handle<V>();
|
|
114
|
-
}
|
|
115
|
-
#endif
|
|
116
54
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
, public std::enable_shared_from_this<StartAcceptor>
|
|
120
|
-
#endif
|
|
121
|
-
{
|
|
122
|
-
public:
|
|
123
|
-
|
|
124
|
-
StartAcceptor(const IncomingConnectionFactoryPtr& factory, const InstancePtr& instance) :
|
|
125
|
-
_factory(factory), _instance(instance)
|
|
55
|
+
template<typename Map, typename Predicate>
|
|
56
|
+
typename Map::mapped_type find(const Map& m, const typename Map::key_type& k, Predicate predicate)
|
|
126
57
|
{
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
void
|
|
130
|
-
runTimerTask()
|
|
131
|
-
{
|
|
132
|
-
try
|
|
133
|
-
{
|
|
134
|
-
_factory->startAcceptor();
|
|
135
|
-
}
|
|
136
|
-
catch(const Ice::Exception& ex)
|
|
58
|
+
auto pr = m.equal_range(k);
|
|
59
|
+
for (auto q = pr.first; q != pr.second; ++q)
|
|
137
60
|
{
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
61
|
+
if (predicate(q->second))
|
|
62
|
+
{
|
|
63
|
+
return q->second;
|
|
64
|
+
}
|
|
141
65
|
}
|
|
66
|
+
return nullptr;
|
|
142
67
|
}
|
|
143
|
-
|
|
144
|
-
private:
|
|
145
|
-
|
|
146
|
-
IncomingConnectionFactoryPtr _factory;
|
|
147
|
-
InstancePtr _instance;
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
#if TARGET_OS_IPHONE != 0
|
|
151
|
-
class FinishCall : public DispatchWorkItem
|
|
152
|
-
{
|
|
153
|
-
public:
|
|
154
|
-
|
|
155
|
-
FinishCall(const IncomingConnectionFactoryPtr& factory) : _factory(factory)
|
|
156
|
-
{
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
virtual void
|
|
160
|
-
run()
|
|
161
|
-
{
|
|
162
|
-
_factory->finish();
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
private:
|
|
166
|
-
|
|
167
|
-
const IncomingConnectionFactoryPtr _factory;
|
|
168
|
-
};
|
|
169
|
-
#endif
|
|
170
|
-
|
|
171
68
|
}
|
|
172
69
|
|
|
173
70
|
bool
|
|
174
71
|
IceInternal::OutgoingConnectionFactory::ConnectorInfo::operator==(const ConnectorInfo& other) const
|
|
175
72
|
{
|
|
176
|
-
return connector
|
|
73
|
+
return targetEqualTo(connector, other.connector);
|
|
177
74
|
}
|
|
178
75
|
|
|
179
76
|
void
|
|
180
77
|
IceInternal::OutgoingConnectionFactory::destroy()
|
|
181
78
|
{
|
|
182
|
-
|
|
79
|
+
lock_guard lock(_mutex);
|
|
183
80
|
|
|
184
|
-
if(_destroyed)
|
|
81
|
+
if (_destroyed)
|
|
185
82
|
{
|
|
186
83
|
return;
|
|
187
84
|
}
|
|
188
85
|
|
|
189
|
-
|
|
190
|
-
for(const auto& p : _connections)
|
|
86
|
+
for (const auto& [_, connection] : _connections)
|
|
191
87
|
{
|
|
192
|
-
|
|
88
|
+
connection->destroy(ConnectionI::CommunicatorDestroyed);
|
|
193
89
|
}
|
|
194
|
-
#else
|
|
195
|
-
for_each(_connections.begin(), _connections.end(),
|
|
196
|
-
bind2nd(Ice::secondVoidMemFun1<const ConnectorPtr, ConnectionI, ConnectionI::DestructionReason>
|
|
197
|
-
(&ConnectionI::destroy), ConnectionI::CommunicatorDestroyed));
|
|
198
|
-
#endif
|
|
199
90
|
_destroyed = true;
|
|
200
|
-
_communicator =
|
|
91
|
+
_communicator = nullptr;
|
|
201
92
|
|
|
202
|
-
|
|
93
|
+
_conditionVariable.notify_all();
|
|
203
94
|
}
|
|
204
95
|
|
|
205
96
|
void
|
|
206
97
|
IceInternal::OutgoingConnectionFactory::updateConnectionObservers()
|
|
207
98
|
{
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
for(const auto& p : _connections)
|
|
99
|
+
lock_guard lock(_mutex);
|
|
100
|
+
for (const auto& [_, connection] : _connections)
|
|
211
101
|
{
|
|
212
|
-
|
|
102
|
+
connection->updateObserver();
|
|
213
103
|
}
|
|
214
|
-
#else
|
|
215
|
-
for_each(_connections.begin(), _connections.end(),
|
|
216
|
-
Ice::secondVoidMemFun<const ConnectorPtr, ConnectionI>(&ConnectionI::updateObserver));
|
|
217
|
-
#endif
|
|
218
104
|
}
|
|
219
105
|
|
|
220
106
|
void
|
|
221
107
|
IceInternal::OutgoingConnectionFactory::waitUntilFinished()
|
|
222
108
|
{
|
|
223
|
-
multimap<ConnectorPtr, ConnectionIPtr
|
|
109
|
+
multimap<ConnectorPtr, ConnectionIPtr, Ice::TargetCompare<ConnectorPtr, std::less>> connections;
|
|
224
110
|
|
|
225
111
|
{
|
|
226
|
-
|
|
112
|
+
unique_lock lock(_mutex);
|
|
227
113
|
|
|
228
114
|
//
|
|
229
115
|
// First we wait until the factory is destroyed. We also wait
|
|
230
116
|
// until there are no pending connections anymore. Only then
|
|
231
117
|
// we can be sure the _connections contains all connections.
|
|
232
118
|
//
|
|
233
|
-
|
|
234
|
-
{
|
|
235
|
-
wait();
|
|
236
|
-
}
|
|
119
|
+
_conditionVariable.wait(lock, [this] { return _destroyed && _pending.empty() && _pendingConnectCount == 0; });
|
|
237
120
|
|
|
238
121
|
//
|
|
239
122
|
// We want to wait until all connections are finished outside the
|
|
@@ -242,45 +125,26 @@ IceInternal::OutgoingConnectionFactory::waitUntilFinished()
|
|
|
242
125
|
connections = _connections;
|
|
243
126
|
}
|
|
244
127
|
|
|
245
|
-
|
|
246
|
-
for(const auto& p : _connections)
|
|
128
|
+
for (const auto& p : connections)
|
|
247
129
|
{
|
|
248
130
|
p.second->waitUntilFinished();
|
|
249
131
|
}
|
|
250
|
-
|
|
251
|
-
for_each(connections.begin(), connections.end(),
|
|
252
|
-
Ice::secondVoidMemFun<const ConnectorPtr, ConnectionI>(&ConnectionI::waitUntilFinished));
|
|
253
|
-
#endif
|
|
132
|
+
|
|
254
133
|
{
|
|
255
|
-
|
|
256
|
-
// Ensure all the connections are finished and reapable at this point.
|
|
257
|
-
vector<Ice::ConnectionIPtr> cons;
|
|
258
|
-
_monitor->swapReapedConnections(cons);
|
|
259
|
-
assert(cons.size() == _connections.size());
|
|
260
|
-
cons.clear();
|
|
134
|
+
lock_guard lock(_mutex);
|
|
261
135
|
_connections.clear();
|
|
262
136
|
_connectionsByEndpoint.clear();
|
|
263
137
|
}
|
|
264
|
-
|
|
265
|
-
//
|
|
266
|
-
// Must be destroyed outside the synchronization since this might block waiting for
|
|
267
|
-
// a timer task to complete.
|
|
268
|
-
//
|
|
269
|
-
_monitor->destroy();
|
|
270
138
|
}
|
|
271
139
|
|
|
272
140
|
void
|
|
273
|
-
IceInternal::OutgoingConnectionFactory::
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
141
|
+
IceInternal::OutgoingConnectionFactory::createAsync(
|
|
142
|
+
vector<EndpointIPtr> endpoints,
|
|
143
|
+
bool hasMore,
|
|
144
|
+
function<void(Ice::ConnectionIPtr, bool)> response,
|
|
145
|
+
function<void(std::exception_ptr)> exception)
|
|
277
146
|
{
|
|
278
|
-
assert(!
|
|
279
|
-
|
|
280
|
-
//
|
|
281
|
-
// Apply the overrides.
|
|
282
|
-
//
|
|
283
|
-
vector<EndpointIPtr> endpoints = applyOverrides(endpts);
|
|
147
|
+
assert(!endpoints.empty());
|
|
284
148
|
|
|
285
149
|
//
|
|
286
150
|
// Try to find a connection to one of the given endpoints.
|
|
@@ -289,23 +153,25 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
|
|
|
289
153
|
{
|
|
290
154
|
bool compress;
|
|
291
155
|
Ice::ConnectionIPtr connection = findConnection(endpoints, compress);
|
|
292
|
-
if(connection)
|
|
156
|
+
if (connection)
|
|
293
157
|
{
|
|
294
|
-
|
|
158
|
+
response(std::move(connection), compress);
|
|
295
159
|
return;
|
|
296
160
|
}
|
|
297
161
|
}
|
|
298
|
-
catch(
|
|
162
|
+
catch (...)
|
|
299
163
|
{
|
|
300
|
-
|
|
164
|
+
exception(current_exception());
|
|
301
165
|
return;
|
|
302
166
|
}
|
|
303
167
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
168
|
+
auto cb = make_shared<ConnectCallback>(
|
|
169
|
+
_instance,
|
|
170
|
+
shared_from_this(),
|
|
171
|
+
std::move(endpoints),
|
|
172
|
+
hasMore,
|
|
173
|
+
std::move(response),
|
|
174
|
+
std::move(exception));
|
|
309
175
|
cb->getConnectors();
|
|
310
176
|
}
|
|
311
177
|
|
|
@@ -316,9 +182,9 @@ IceInternal::OutgoingConnectionFactory::setRouterInfo(const RouterInfoPtr& route
|
|
|
316
182
|
ObjectAdapterPtr adapter = routerInfo->getAdapter();
|
|
317
183
|
vector<EndpointIPtr> endpoints = routerInfo->getClientEndpoints(); // Must be called outside the synchronization
|
|
318
184
|
|
|
319
|
-
|
|
185
|
+
lock_guard lock(_mutex);
|
|
320
186
|
|
|
321
|
-
if(_destroyed)
|
|
187
|
+
if (_destroyed)
|
|
322
188
|
{
|
|
323
189
|
throw CommunicatorDestroyedException(__FILE__, __LINE__);
|
|
324
190
|
}
|
|
@@ -329,18 +195,8 @@ IceInternal::OutgoingConnectionFactory::setRouterInfo(const RouterInfoPtr& route
|
|
|
329
195
|
// callbacks from the router can be received over such
|
|
330
196
|
// connections.
|
|
331
197
|
//
|
|
332
|
-
for
|
|
198
|
+
for (auto endpoint : endpoints)
|
|
333
199
|
{
|
|
334
|
-
EndpointIPtr endpoint = *p;
|
|
335
|
-
|
|
336
|
-
//
|
|
337
|
-
// Modify endpoints with overrides.
|
|
338
|
-
//
|
|
339
|
-
if(_instance->defaultsAndOverrides()->overrideTimeout)
|
|
340
|
-
{
|
|
341
|
-
endpoint = endpoint->timeout(_instance->defaultsAndOverrides()->overrideTimeoutValue);
|
|
342
|
-
}
|
|
343
|
-
|
|
344
200
|
//
|
|
345
201
|
// The Connection object does not take the compression flag of
|
|
346
202
|
// endpoints into account, but instead gets the information
|
|
@@ -348,16 +204,16 @@ IceInternal::OutgoingConnectionFactory::setRouterInfo(const RouterInfoPtr& route
|
|
|
348
204
|
// other sources. In order to allow connection sharing for
|
|
349
205
|
// endpoints that differ in the value of the compression flag
|
|
350
206
|
// only, we always set the compression flag to false here in
|
|
351
|
-
// this connection factory.
|
|
207
|
+
// this connection factory. We also clear the timeout as it is
|
|
208
|
+
// no longer used for Ice 3.8.
|
|
352
209
|
//
|
|
353
|
-
endpoint = endpoint->compress(false);
|
|
210
|
+
endpoint = endpoint->compress(false)->timeout(-1);
|
|
354
211
|
|
|
355
|
-
for(
|
|
356
|
-
q != _connections.end(); ++q)
|
|
212
|
+
for (const auto& [_, connection] : _connections)
|
|
357
213
|
{
|
|
358
|
-
if(
|
|
214
|
+
if (connection->endpoint() == endpoint)
|
|
359
215
|
{
|
|
360
|
-
|
|
216
|
+
connection->setAdapter(adapter);
|
|
361
217
|
}
|
|
362
218
|
}
|
|
363
219
|
}
|
|
@@ -366,60 +222,71 @@ IceInternal::OutgoingConnectionFactory::setRouterInfo(const RouterInfoPtr& route
|
|
|
366
222
|
void
|
|
367
223
|
IceInternal::OutgoingConnectionFactory::removeAdapter(const ObjectAdapterPtr& adapter)
|
|
368
224
|
{
|
|
369
|
-
|
|
225
|
+
lock_guard lock(_mutex);
|
|
370
226
|
|
|
371
|
-
if(_destroyed)
|
|
227
|
+
if (_destroyed)
|
|
372
228
|
{
|
|
373
229
|
return;
|
|
374
230
|
}
|
|
375
231
|
|
|
376
|
-
for(
|
|
232
|
+
for (const auto& [_, connection] : _connections)
|
|
377
233
|
{
|
|
378
|
-
if(
|
|
234
|
+
if (connection->getAdapter() == adapter)
|
|
379
235
|
{
|
|
380
|
-
|
|
236
|
+
connection->setAdapter(nullptr);
|
|
381
237
|
}
|
|
382
238
|
}
|
|
383
239
|
}
|
|
384
240
|
|
|
385
241
|
void
|
|
386
|
-
IceInternal::OutgoingConnectionFactory::flushAsyncBatchRequests(
|
|
387
|
-
|
|
242
|
+
IceInternal::OutgoingConnectionFactory::flushAsyncBatchRequests(
|
|
243
|
+
const CommunicatorFlushBatchAsyncPtr& outAsync,
|
|
244
|
+
Ice::CompressBatch compress)
|
|
388
245
|
{
|
|
389
246
|
list<ConnectionIPtr> c;
|
|
390
247
|
|
|
391
248
|
{
|
|
392
|
-
|
|
393
|
-
for(
|
|
394
|
-
++p)
|
|
249
|
+
lock_guard lock(_mutex);
|
|
250
|
+
for (const auto& [_, connection] : _connections)
|
|
395
251
|
{
|
|
396
|
-
if(
|
|
252
|
+
if (connection->isActiveOrHolding())
|
|
397
253
|
{
|
|
398
|
-
c.push_back(
|
|
254
|
+
c.push_back(connection);
|
|
399
255
|
}
|
|
400
256
|
}
|
|
401
257
|
}
|
|
402
258
|
|
|
403
|
-
for(
|
|
259
|
+
for (const auto& p : c)
|
|
404
260
|
{
|
|
405
261
|
try
|
|
406
262
|
{
|
|
407
|
-
outAsync->flushConnection(
|
|
263
|
+
outAsync->flushConnection(p, compress);
|
|
408
264
|
}
|
|
409
|
-
catch(const LocalException&)
|
|
265
|
+
catch (const LocalException&)
|
|
410
266
|
{
|
|
411
267
|
// Ignore.
|
|
412
268
|
}
|
|
413
269
|
}
|
|
414
270
|
}
|
|
415
271
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
272
|
+
void
|
|
273
|
+
IceInternal::OutgoingConnectionFactory::removeConnection(const ConnectionIPtr& connection) noexcept
|
|
274
|
+
{
|
|
275
|
+
lock_guard lock(_mutex);
|
|
276
|
+
if (!_destroyed)
|
|
277
|
+
{
|
|
278
|
+
remove(_connections, connection->connector(), connection);
|
|
279
|
+
remove(_connectionsByEndpoint, connection->endpoint(), connection);
|
|
280
|
+
remove(_connectionsByEndpoint, connection->endpoint()->compress(true), connection);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
IceInternal::OutgoingConnectionFactory::OutgoingConnectionFactory(
|
|
285
|
+
CommunicatorPtr communicator,
|
|
286
|
+
const InstancePtr& instance)
|
|
287
|
+
: _communicator(std::move(communicator)),
|
|
288
|
+
_instance(instance),
|
|
289
|
+
_connectionOptions(instance->clientConnectionOptions())
|
|
423
290
|
{
|
|
424
291
|
}
|
|
425
292
|
|
|
@@ -432,60 +299,54 @@ IceInternal::OutgoingConnectionFactory::~OutgoingConnectionFactory()
|
|
|
432
299
|
assert(_pendingConnectCount == 0);
|
|
433
300
|
}
|
|
434
301
|
|
|
435
|
-
|
|
436
|
-
IceInternal::OutgoingConnectionFactory::
|
|
302
|
+
ObjectAdapterPtr
|
|
303
|
+
IceInternal::OutgoingConnectionFactory::getDefaultObjectAdapter() const noexcept
|
|
437
304
|
{
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
return endpoints;
|
|
305
|
+
lock_guard lock(_mutex);
|
|
306
|
+
return _defaultObjectAdapter;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
void
|
|
310
|
+
IceInternal::OutgoingConnectionFactory::setDefaultObjectAdapter(
|
|
311
|
+
ObjectAdapterPtr adapter) noexcept // NOLINT(performance-unnecessary-value-param)
|
|
312
|
+
{
|
|
313
|
+
lock_guard lock(_mutex);
|
|
314
|
+
_defaultObjectAdapter = dynamic_pointer_cast<ObjectAdapterI>(adapter);
|
|
451
315
|
}
|
|
452
316
|
|
|
453
317
|
ConnectionIPtr
|
|
454
318
|
IceInternal::OutgoingConnectionFactory::findConnection(const vector<EndpointIPtr>& endpoints, bool& compress)
|
|
455
319
|
{
|
|
456
|
-
|
|
457
|
-
if(_destroyed)
|
|
320
|
+
lock_guard lock(_mutex);
|
|
321
|
+
if (_destroyed)
|
|
458
322
|
{
|
|
459
323
|
throw CommunicatorDestroyedException(__FILE__, __LINE__);
|
|
460
324
|
}
|
|
461
325
|
|
|
462
326
|
DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides();
|
|
463
327
|
assert(!endpoints.empty());
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
auto connection = find(
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
ConnectionIPtr connection = find(_connectionsByEndpoint, *p, Ice::constMemFun(&ConnectionI::isActiveOrHolding));
|
|
474
|
-
#endif
|
|
475
|
-
if(connection)
|
|
328
|
+
|
|
329
|
+
for (const auto& p : endpoints)
|
|
330
|
+
{
|
|
331
|
+
auto connection = find(
|
|
332
|
+
_connectionsByEndpoint,
|
|
333
|
+
p->timeout(-1), // clear the timeout
|
|
334
|
+
[](const ConnectionIPtr& conn) { return conn->isActiveOrHolding(); });
|
|
335
|
+
|
|
336
|
+
if (connection)
|
|
476
337
|
{
|
|
477
|
-
if(defaultsAndOverrides->overrideCompress)
|
|
338
|
+
if (defaultsAndOverrides->overrideCompress.has_value())
|
|
478
339
|
{
|
|
479
|
-
compress = defaultsAndOverrides->
|
|
340
|
+
compress = *defaultsAndOverrides->overrideCompress;
|
|
480
341
|
}
|
|
481
342
|
else
|
|
482
343
|
{
|
|
483
|
-
compress =
|
|
344
|
+
compress = p->compress();
|
|
484
345
|
}
|
|
485
346
|
return connection;
|
|
486
347
|
}
|
|
487
348
|
}
|
|
488
|
-
return
|
|
349
|
+
return nullptr;
|
|
489
350
|
}
|
|
490
351
|
|
|
491
352
|
ConnectionIPtr
|
|
@@ -494,37 +355,30 @@ IceInternal::OutgoingConnectionFactory::findConnection(const vector<ConnectorInf
|
|
|
494
355
|
// This must be called with the mutex locked.
|
|
495
356
|
|
|
496
357
|
DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides();
|
|
497
|
-
for(
|
|
358
|
+
for (const auto& p : connectors)
|
|
498
359
|
{
|
|
499
|
-
if(_pending.find(p
|
|
360
|
+
if (_pending.find(p.connector) != _pending.end())
|
|
500
361
|
{
|
|
501
362
|
continue;
|
|
502
363
|
}
|
|
503
364
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
{
|
|
508
|
-
return conn->isActiveOrHolding();
|
|
509
|
-
});
|
|
510
|
-
#else
|
|
511
|
-
ConnectionIPtr connection = find(_connections, p->connector, Ice::constMemFun(&ConnectionI::isActiveOrHolding));
|
|
512
|
-
#endif
|
|
513
|
-
if(connection)
|
|
365
|
+
auto connection =
|
|
366
|
+
find(_connections, p.connector, [](const ConnectionIPtr& conn) { return conn->isActiveOrHolding(); });
|
|
367
|
+
if (connection)
|
|
514
368
|
{
|
|
515
|
-
if(defaultsAndOverrides->overrideCompress)
|
|
369
|
+
if (defaultsAndOverrides->overrideCompress.has_value())
|
|
516
370
|
{
|
|
517
|
-
compress = defaultsAndOverrides->
|
|
371
|
+
compress = *defaultsAndOverrides->overrideCompress;
|
|
518
372
|
}
|
|
519
373
|
else
|
|
520
374
|
{
|
|
521
|
-
|
|
375
|
+
compress = p.endpoint->compress();
|
|
522
376
|
}
|
|
523
377
|
return connection;
|
|
524
378
|
}
|
|
525
379
|
}
|
|
526
380
|
|
|
527
|
-
return
|
|
381
|
+
return nullptr;
|
|
528
382
|
}
|
|
529
383
|
|
|
530
384
|
void
|
|
@@ -538,8 +392,8 @@ IceInternal::OutgoingConnectionFactory::incPendingConnectCount()
|
|
|
538
392
|
// the asynchronous requests waiting on a connection to be established.
|
|
539
393
|
//
|
|
540
394
|
|
|
541
|
-
|
|
542
|
-
if(_destroyed)
|
|
395
|
+
lock_guard lock(_mutex);
|
|
396
|
+
if (_destroyed)
|
|
543
397
|
{
|
|
544
398
|
throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
|
|
545
399
|
}
|
|
@@ -549,111 +403,58 @@ IceInternal::OutgoingConnectionFactory::incPendingConnectCount()
|
|
|
549
403
|
void
|
|
550
404
|
IceInternal::OutgoingConnectionFactory::decPendingConnectCount()
|
|
551
405
|
{
|
|
552
|
-
|
|
406
|
+
lock_guard lock(_mutex);
|
|
553
407
|
--_pendingConnectCount;
|
|
554
408
|
assert(_pendingConnectCount >= 0);
|
|
555
|
-
if(_destroyed && _pendingConnectCount == 0)
|
|
409
|
+
if (_destroyed && _pendingConnectCount == 0)
|
|
556
410
|
{
|
|
557
|
-
|
|
411
|
+
_conditionVariable.notify_all();
|
|
558
412
|
}
|
|
559
413
|
}
|
|
560
414
|
|
|
561
415
|
ConnectionIPtr
|
|
562
|
-
IceInternal::OutgoingConnectionFactory::getConnection(
|
|
563
|
-
|
|
564
|
-
|
|
416
|
+
IceInternal::OutgoingConnectionFactory::getConnection(
|
|
417
|
+
const vector<ConnectorInfo>& connectors,
|
|
418
|
+
const ConnectCallbackPtr& cb,
|
|
419
|
+
bool& compress)
|
|
565
420
|
{
|
|
566
421
|
{
|
|
567
|
-
|
|
568
|
-
|
|
422
|
+
assert(cb);
|
|
423
|
+
unique_lock lock(_mutex);
|
|
424
|
+
if (_destroyed)
|
|
569
425
|
{
|
|
570
426
|
throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
|
|
571
427
|
}
|
|
572
428
|
|
|
573
|
-
//
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
vector<Ice::ConnectionIPtr> cons;
|
|
577
|
-
_monitor->swapReapedConnections(cons);
|
|
578
|
-
for(vector<Ice::ConnectionIPtr>::const_iterator p = cons.begin(); p != cons.end(); ++p)
|
|
429
|
+
// Search for an existing connections matching one of the given endpoints.
|
|
430
|
+
Ice::ConnectionIPtr connection = findConnection(connectors, compress);
|
|
431
|
+
if (connection)
|
|
579
432
|
{
|
|
580
|
-
|
|
581
|
-
remove(_connectionsByEndpoint, (*p)->endpoint(), *p);
|
|
582
|
-
remove(_connectionsByEndpoint, (*p)->endpoint()->compress(true), *p);
|
|
433
|
+
return connection;
|
|
583
434
|
}
|
|
584
435
|
|
|
585
436
|
//
|
|
586
|
-
//
|
|
587
|
-
//
|
|
588
|
-
// of our connectors.
|
|
437
|
+
// Determine whether another thread/request is currently attempting to connect to
|
|
438
|
+
// one of our endpoints; if so we wait until it's done.
|
|
589
439
|
//
|
|
590
|
-
|
|
440
|
+
if (addToPending(cb, connectors))
|
|
591
441
|
{
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
//
|
|
598
|
-
// Search for a matching connection. If we find one, we're done.
|
|
599
|
-
//
|
|
600
|
-
Ice::ConnectionIPtr connection = findConnection(connectors, compress);
|
|
601
|
-
if(connection)
|
|
602
|
-
{
|
|
603
|
-
return connection;
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
//
|
|
607
|
-
// Determine whether another thread/request is currently attempting to connect to
|
|
608
|
-
// one of our endpoints; if so we wait until it's done.
|
|
609
|
-
//
|
|
610
|
-
if(addToPending(cb, connectors))
|
|
611
|
-
{
|
|
612
|
-
//
|
|
613
|
-
// If a callback is not specified we wait until another thread notifies us about a
|
|
614
|
-
// change to the pending list. Otherwise, if a callback is provided we're done:
|
|
615
|
-
// when the pending list changes the callback will be notified and will try to
|
|
616
|
-
// get the connection again.
|
|
617
|
-
//
|
|
618
|
-
if(!cb)
|
|
619
|
-
{
|
|
620
|
-
wait();
|
|
621
|
-
}
|
|
622
|
-
else
|
|
623
|
-
{
|
|
624
|
-
return 0;
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
else
|
|
628
|
-
{
|
|
629
|
-
//
|
|
630
|
-
// If no thread is currently establishing a connection to one of our connectors,
|
|
631
|
-
// we get out of this loop and start the connection establishment to one of the
|
|
632
|
-
// given connectors.
|
|
633
|
-
//
|
|
634
|
-
break;
|
|
635
|
-
}
|
|
442
|
+
// A connection to one of our endpoints is pending. The callback will be notified once the connection
|
|
443
|
+
// is established. Returning null indicates that the connection is still pending.
|
|
444
|
+
return nullptr;
|
|
636
445
|
}
|
|
637
446
|
}
|
|
638
447
|
|
|
639
|
-
//
|
|
640
|
-
//
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
// the caller to establish the connection.
|
|
644
|
-
//
|
|
645
|
-
if(cb)
|
|
646
|
-
{
|
|
647
|
-
cb->nextConnector();
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
return 0;
|
|
448
|
+
// No connection is pending. Call nextConnector to initiate connection establishment. Return null to indicate
|
|
449
|
+
// that the connection is still pending.
|
|
450
|
+
cb->nextConnector();
|
|
451
|
+
return nullptr;
|
|
651
452
|
}
|
|
652
453
|
|
|
653
454
|
ConnectionIPtr
|
|
654
455
|
IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& transceiver, const ConnectorInfo& ci)
|
|
655
456
|
{
|
|
656
|
-
|
|
457
|
+
lock_guard lock(_mutex);
|
|
657
458
|
assert(_pending.find(ci.connector) != _pending.end() && transceiver);
|
|
658
459
|
|
|
659
460
|
//
|
|
@@ -664,21 +465,36 @@ IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& t
|
|
|
664
465
|
Ice::ConnectionIPtr connection;
|
|
665
466
|
try
|
|
666
467
|
{
|
|
667
|
-
if(_destroyed)
|
|
468
|
+
if (_destroyed)
|
|
668
469
|
{
|
|
669
470
|
throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
|
|
670
471
|
}
|
|
671
472
|
|
|
672
|
-
|
|
673
|
-
|
|
473
|
+
// The connect, close and idle timeouts are ignored for UDP connections.
|
|
474
|
+
|
|
475
|
+
connection = ConnectionI::create(
|
|
476
|
+
_communicator,
|
|
477
|
+
_instance,
|
|
478
|
+
transceiver,
|
|
479
|
+
ci.connector,
|
|
480
|
+
ci.endpoint->compress(false)->timeout(-1),
|
|
481
|
+
_defaultObjectAdapter,
|
|
482
|
+
[weakSelf = weak_from_this()](const ConnectionIPtr& closedConnection)
|
|
483
|
+
{
|
|
484
|
+
if (auto self = weakSelf.lock())
|
|
485
|
+
{
|
|
486
|
+
self->removeConnection(closedConnection);
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
_connectionOptions);
|
|
674
490
|
}
|
|
675
|
-
catch(const Ice::LocalException&)
|
|
491
|
+
catch (const Ice::LocalException&)
|
|
676
492
|
{
|
|
677
493
|
try
|
|
678
494
|
{
|
|
679
495
|
transceiver->close();
|
|
680
496
|
}
|
|
681
|
-
catch(const Ice::LocalException&)
|
|
497
|
+
catch (const Ice::LocalException&)
|
|
682
498
|
{
|
|
683
499
|
// Ignore
|
|
684
500
|
}
|
|
@@ -687,153 +503,156 @@ IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& t
|
|
|
687
503
|
|
|
688
504
|
_connections.insert(pair<const ConnectorPtr, ConnectionIPtr>(ci.connector, connection));
|
|
689
505
|
_connectionsByEndpoint.insert(pair<const EndpointIPtr, ConnectionIPtr>(connection->endpoint(), connection));
|
|
690
|
-
_connectionsByEndpoint.insert(
|
|
691
|
-
|
|
506
|
+
_connectionsByEndpoint.insert(
|
|
507
|
+
pair<const EndpointIPtr, ConnectionIPtr>(connection->endpoint()->compress(true), connection));
|
|
692
508
|
return connection;
|
|
693
509
|
}
|
|
694
510
|
|
|
695
511
|
void
|
|
696
|
-
IceInternal::OutgoingConnectionFactory::finishGetConnection(
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
512
|
+
IceInternal::OutgoingConnectionFactory::finishGetConnection(
|
|
513
|
+
const vector<ConnectorInfo>& connectors,
|
|
514
|
+
const ConnectorInfo& ci,
|
|
515
|
+
const ConnectionIPtr& connection,
|
|
516
|
+
const ConnectCallbackPtr& cb)
|
|
700
517
|
{
|
|
701
|
-
|
|
702
|
-
if(cb)
|
|
518
|
+
ConnectCallbackSet connectionCallbacks;
|
|
519
|
+
if (cb)
|
|
703
520
|
{
|
|
704
521
|
connectionCallbacks.insert(cb);
|
|
705
522
|
}
|
|
706
523
|
|
|
707
|
-
|
|
524
|
+
ConnectCallbackSet callbacks;
|
|
708
525
|
{
|
|
709
|
-
|
|
710
|
-
for(
|
|
526
|
+
lock_guard lock(_mutex);
|
|
527
|
+
for (const auto& connector : connectors)
|
|
711
528
|
{
|
|
712
|
-
|
|
713
|
-
if(q != _pending.end())
|
|
529
|
+
auto q = _pending.find(connector.connector);
|
|
530
|
+
if (q != _pending.end())
|
|
714
531
|
{
|
|
715
|
-
for(
|
|
532
|
+
for (const auto& r : q->second)
|
|
716
533
|
{
|
|
717
|
-
if(
|
|
534
|
+
if (r->hasConnector(ci))
|
|
718
535
|
{
|
|
719
|
-
connectionCallbacks.insert(
|
|
536
|
+
connectionCallbacks.insert(r);
|
|
720
537
|
}
|
|
721
538
|
else
|
|
722
539
|
{
|
|
723
|
-
callbacks.insert(
|
|
540
|
+
callbacks.insert(r);
|
|
724
541
|
}
|
|
725
542
|
}
|
|
726
543
|
_pending.erase(q);
|
|
727
544
|
}
|
|
728
545
|
}
|
|
729
546
|
|
|
730
|
-
for(
|
|
547
|
+
for (const auto& connectionCallback : connectionCallbacks)
|
|
731
548
|
{
|
|
732
|
-
|
|
733
|
-
callbacks.erase(
|
|
549
|
+
connectionCallback->removeFromPending();
|
|
550
|
+
callbacks.erase(connectionCallback);
|
|
734
551
|
}
|
|
735
|
-
for(
|
|
552
|
+
for (const auto& callback : callbacks)
|
|
736
553
|
{
|
|
737
|
-
|
|
554
|
+
callback->removeFromPending();
|
|
738
555
|
}
|
|
739
|
-
|
|
556
|
+
_conditionVariable.notify_all();
|
|
740
557
|
}
|
|
741
558
|
|
|
742
559
|
bool compress;
|
|
743
560
|
DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides();
|
|
744
|
-
if(defaultsAndOverrides->overrideCompress)
|
|
561
|
+
if (defaultsAndOverrides->overrideCompress.has_value())
|
|
745
562
|
{
|
|
746
|
-
compress = defaultsAndOverrides->
|
|
563
|
+
compress = *defaultsAndOverrides->overrideCompress;
|
|
747
564
|
}
|
|
748
565
|
else
|
|
749
566
|
{
|
|
750
567
|
compress = ci.endpoint->compress();
|
|
751
568
|
}
|
|
752
569
|
|
|
753
|
-
for(
|
|
570
|
+
for (const auto& callback : callbacks)
|
|
754
571
|
{
|
|
755
|
-
|
|
572
|
+
callback->getConnection();
|
|
756
573
|
}
|
|
757
|
-
for(
|
|
574
|
+
for (const auto& connectionCallback : connectionCallbacks)
|
|
758
575
|
{
|
|
759
|
-
|
|
576
|
+
connectionCallback->setConnection(connection, compress);
|
|
760
577
|
}
|
|
761
578
|
}
|
|
762
579
|
|
|
763
580
|
void
|
|
764
|
-
IceInternal::OutgoingConnectionFactory::finishGetConnection(
|
|
765
|
-
|
|
766
|
-
|
|
581
|
+
IceInternal::OutgoingConnectionFactory::finishGetConnection(
|
|
582
|
+
const vector<ConnectorInfo>& connectors,
|
|
583
|
+
std::exception_ptr ex,
|
|
584
|
+
const ConnectCallbackPtr& cb)
|
|
767
585
|
{
|
|
768
|
-
|
|
769
|
-
if(cb)
|
|
586
|
+
ConnectCallbackSet failedCallbacks;
|
|
587
|
+
if (cb)
|
|
770
588
|
{
|
|
771
589
|
failedCallbacks.insert(cb);
|
|
772
590
|
}
|
|
773
591
|
|
|
774
|
-
|
|
592
|
+
ConnectCallbackSet callbacks;
|
|
775
593
|
{
|
|
776
|
-
|
|
777
|
-
for(
|
|
594
|
+
lock_guard lock(_mutex);
|
|
595
|
+
for (auto p = connectors.begin(); p != connectors.end(); ++p)
|
|
778
596
|
{
|
|
779
|
-
|
|
780
|
-
if(q != _pending.end())
|
|
597
|
+
auto q = _pending.find(p->connector);
|
|
598
|
+
if (q != _pending.end())
|
|
781
599
|
{
|
|
782
|
-
for(
|
|
600
|
+
for (const auto& r : q->second)
|
|
783
601
|
{
|
|
784
|
-
if(
|
|
602
|
+
if (r->removeConnectors(connectors))
|
|
785
603
|
{
|
|
786
|
-
failedCallbacks.insert(
|
|
604
|
+
failedCallbacks.insert(r);
|
|
787
605
|
}
|
|
788
606
|
else
|
|
789
607
|
{
|
|
790
|
-
callbacks.insert(
|
|
608
|
+
callbacks.insert(r);
|
|
791
609
|
}
|
|
792
610
|
}
|
|
793
611
|
_pending.erase(q);
|
|
794
612
|
}
|
|
795
613
|
}
|
|
796
614
|
|
|
797
|
-
for(
|
|
615
|
+
for (const auto& callback : callbacks)
|
|
798
616
|
{
|
|
799
|
-
assert(failedCallbacks.find(
|
|
800
|
-
|
|
617
|
+
assert(failedCallbacks.find(callback) == failedCallbacks.end());
|
|
618
|
+
callback->removeFromPending();
|
|
801
619
|
}
|
|
802
|
-
|
|
620
|
+
_conditionVariable.notify_all();
|
|
803
621
|
}
|
|
804
622
|
|
|
805
|
-
for(
|
|
623
|
+
for (const auto& callback : callbacks)
|
|
806
624
|
{
|
|
807
|
-
|
|
625
|
+
callback->getConnection();
|
|
808
626
|
}
|
|
809
|
-
for(
|
|
627
|
+
for (const auto& failedCallback : failedCallbacks)
|
|
810
628
|
{
|
|
811
|
-
|
|
629
|
+
failedCallback->setException(ex);
|
|
812
630
|
}
|
|
813
631
|
}
|
|
814
632
|
|
|
815
633
|
bool
|
|
816
|
-
IceInternal::OutgoingConnectionFactory::addToPending(
|
|
817
|
-
|
|
634
|
+
IceInternal::OutgoingConnectionFactory::addToPending(
|
|
635
|
+
const ConnectCallbackPtr& cb,
|
|
636
|
+
const vector<ConnectorInfo>& connectors)
|
|
818
637
|
{
|
|
819
638
|
//
|
|
820
639
|
// Add the callback to each connector pending list.
|
|
821
640
|
//
|
|
822
641
|
bool found = false;
|
|
823
|
-
for(
|
|
642
|
+
for (const auto& connector : connectors)
|
|
824
643
|
{
|
|
825
|
-
|
|
826
|
-
if(q != _pending.end())
|
|
644
|
+
auto q = _pending.find(connector.connector);
|
|
645
|
+
if (q != _pending.end())
|
|
827
646
|
{
|
|
828
647
|
found = true;
|
|
829
|
-
if(cb)
|
|
648
|
+
if (cb)
|
|
830
649
|
{
|
|
831
650
|
q->second.insert(cb);
|
|
832
651
|
}
|
|
833
652
|
}
|
|
834
653
|
}
|
|
835
654
|
|
|
836
|
-
if(found)
|
|
655
|
+
if (found)
|
|
837
656
|
{
|
|
838
657
|
return true;
|
|
839
658
|
}
|
|
@@ -843,24 +662,25 @@ IceInternal::OutgoingConnectionFactory::addToPending(const ConnectCallbackPtr& c
|
|
|
843
662
|
// responsible for its establishment. We add empty pending lists,
|
|
844
663
|
// other callbacks to the same connectors will be queued.
|
|
845
664
|
//
|
|
846
|
-
for(
|
|
665
|
+
for (const auto& connector : connectors)
|
|
847
666
|
{
|
|
848
|
-
if(_pending.find(
|
|
667
|
+
if (_pending.find(connector.connector) == _pending.end())
|
|
849
668
|
{
|
|
850
|
-
_pending.insert(
|
|
669
|
+
_pending.insert(make_pair(connector.connector, ConnectCallbackSet()));
|
|
851
670
|
}
|
|
852
671
|
}
|
|
853
672
|
return false;
|
|
854
673
|
}
|
|
855
674
|
|
|
856
675
|
void
|
|
857
|
-
IceInternal::OutgoingConnectionFactory::removeFromPending(
|
|
858
|
-
|
|
676
|
+
IceInternal::OutgoingConnectionFactory::removeFromPending(
|
|
677
|
+
const ConnectCallbackPtr& cb,
|
|
678
|
+
const vector<ConnectorInfo>& connectors)
|
|
859
679
|
{
|
|
860
|
-
for(
|
|
680
|
+
for (const auto& connector : connectors)
|
|
861
681
|
{
|
|
862
|
-
|
|
863
|
-
if(q != _pending.end())
|
|
682
|
+
auto q = _pending.find(connector.connector);
|
|
683
|
+
if (q != _pending.end())
|
|
864
684
|
{
|
|
865
685
|
q->second.erase(cb);
|
|
866
686
|
}
|
|
@@ -868,21 +688,26 @@ IceInternal::OutgoingConnectionFactory::removeFromPending(const ConnectCallbackP
|
|
|
868
688
|
}
|
|
869
689
|
|
|
870
690
|
void
|
|
871
|
-
IceInternal::OutgoingConnectionFactory::handleException(
|
|
691
|
+
IceInternal::OutgoingConnectionFactory::handleException(exception_ptr ex, bool hasMore)
|
|
872
692
|
{
|
|
873
693
|
TraceLevelsPtr traceLevels = _instance->traceLevels();
|
|
874
|
-
if(traceLevels->network >= 2)
|
|
694
|
+
if (traceLevels->network >= 2)
|
|
875
695
|
{
|
|
876
696
|
Trace out(_instance->initializationData().logger, traceLevels->networkCat);
|
|
877
697
|
|
|
878
698
|
out << "couldn't resolve endpoint host";
|
|
879
|
-
|
|
699
|
+
|
|
700
|
+
try
|
|
880
701
|
{
|
|
881
|
-
|
|
702
|
+
rethrow_exception(ex);
|
|
882
703
|
}
|
|
883
|
-
|
|
704
|
+
catch (const CommunicatorDestroyedException& e)
|
|
884
705
|
{
|
|
885
|
-
|
|
706
|
+
out << "\n" << e;
|
|
707
|
+
}
|
|
708
|
+
catch (const std::exception& e)
|
|
709
|
+
{
|
|
710
|
+
if (hasMore)
|
|
886
711
|
{
|
|
887
712
|
out << ", trying next endpoint\n";
|
|
888
713
|
}
|
|
@@ -890,27 +715,32 @@ IceInternal::OutgoingConnectionFactory::handleException(const LocalException& ex
|
|
|
890
715
|
{
|
|
891
716
|
out << " and no more endpoints to try\n";
|
|
892
717
|
}
|
|
718
|
+
out << e;
|
|
893
719
|
}
|
|
894
|
-
out << ex;
|
|
895
720
|
}
|
|
896
721
|
}
|
|
897
722
|
|
|
898
723
|
void
|
|
899
|
-
IceInternal::OutgoingConnectionFactory::handleConnectionException(
|
|
724
|
+
IceInternal::OutgoingConnectionFactory::handleConnectionException(exception_ptr ex, bool hasMore)
|
|
900
725
|
{
|
|
901
726
|
TraceLevelsPtr traceLevels = _instance->traceLevels();
|
|
902
|
-
if(traceLevels->network >= 2)
|
|
727
|
+
if (traceLevels->network >= 2)
|
|
903
728
|
{
|
|
904
729
|
Trace out(_instance->initializationData().logger, traceLevels->networkCat);
|
|
905
730
|
|
|
906
731
|
out << "connection to endpoint failed";
|
|
907
|
-
|
|
732
|
+
|
|
733
|
+
try
|
|
908
734
|
{
|
|
909
|
-
|
|
735
|
+
rethrow_exception(ex);
|
|
910
736
|
}
|
|
911
|
-
|
|
737
|
+
catch (const CommunicatorDestroyedException& e)
|
|
912
738
|
{
|
|
913
|
-
|
|
739
|
+
out << "\n" << e;
|
|
740
|
+
}
|
|
741
|
+
catch (const std::exception& e)
|
|
742
|
+
{
|
|
743
|
+
if (hasMore)
|
|
914
744
|
{
|
|
915
745
|
out << ", trying next endpoint\n";
|
|
916
746
|
}
|
|
@@ -918,23 +748,24 @@ IceInternal::OutgoingConnectionFactory::handleConnectionException(const LocalExc
|
|
|
918
748
|
{
|
|
919
749
|
out << " and no more endpoints to try\n";
|
|
920
750
|
}
|
|
751
|
+
out << e;
|
|
921
752
|
}
|
|
922
|
-
out << ex;
|
|
923
753
|
}
|
|
924
754
|
}
|
|
925
755
|
|
|
926
|
-
IceInternal::OutgoingConnectionFactory::ConnectCallback::ConnectCallback(
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
756
|
+
IceInternal::OutgoingConnectionFactory::ConnectCallback::ConnectCallback(
|
|
757
|
+
InstancePtr instance,
|
|
758
|
+
OutgoingConnectionFactoryPtr factory,
|
|
759
|
+
vector<EndpointIPtr> endpoints,
|
|
760
|
+
bool hasMore,
|
|
761
|
+
std::function<void(Ice::ConnectionIPtr, bool)> createConnectionResponse,
|
|
762
|
+
std::function<void(std::exception_ptr)> createConnectionException)
|
|
763
|
+
: _instance(std::move(instance)),
|
|
764
|
+
_factory(std::move(factory)),
|
|
765
|
+
_endpoints(std::move(endpoints)),
|
|
766
|
+
_hasMore(hasMore),
|
|
767
|
+
_createConnectionResponse(std::move(createConnectionResponse)),
|
|
768
|
+
_createConnectionException(std::move(createConnectionException))
|
|
938
769
|
{
|
|
939
770
|
_endpointsIter = _endpoints.begin();
|
|
940
771
|
}
|
|
@@ -945,21 +776,22 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::ConnectCallback(const I
|
|
|
945
776
|
void
|
|
946
777
|
IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartCompleted(const ConnectionIPtr& connection)
|
|
947
778
|
{
|
|
948
|
-
if(_observer)
|
|
779
|
+
if (_observer)
|
|
949
780
|
{
|
|
950
781
|
_observer->detach();
|
|
951
782
|
}
|
|
952
783
|
|
|
953
784
|
connection->activate();
|
|
954
|
-
_factory->finishGetConnection(_connectors, *_iter, connection,
|
|
785
|
+
_factory->finishGetConnection(_connectors, *_iter, connection, shared_from_this());
|
|
955
786
|
}
|
|
956
787
|
|
|
957
788
|
void
|
|
958
|
-
IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(
|
|
959
|
-
|
|
789
|
+
IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(
|
|
790
|
+
const ConnectionIPtr& /*connection*/,
|
|
791
|
+
exception_ptr ex)
|
|
960
792
|
{
|
|
961
793
|
assert(_iter != _connectors.end());
|
|
962
|
-
if(connectionStartFailedImpl(ex))
|
|
794
|
+
if (connectionStartFailedImpl(ex))
|
|
963
795
|
{
|
|
964
796
|
nextConnector();
|
|
965
797
|
}
|
|
@@ -971,12 +803,12 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(c
|
|
|
971
803
|
void
|
|
972
804
|
IceInternal::OutgoingConnectionFactory::ConnectCallback::connectors(const vector<ConnectorPtr>& connectors)
|
|
973
805
|
{
|
|
974
|
-
for(
|
|
806
|
+
for (const auto& connector : connectors)
|
|
975
807
|
{
|
|
976
|
-
_connectors.
|
|
808
|
+
_connectors.emplace_back(connector, *_endpointsIter);
|
|
977
809
|
}
|
|
978
810
|
|
|
979
|
-
if(++_endpointsIter != _endpoints.end())
|
|
811
|
+
if (++_endpointsIter != _endpoints.end())
|
|
980
812
|
{
|
|
981
813
|
nextEndpoint();
|
|
982
814
|
}
|
|
@@ -994,14 +826,14 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectors(const vector
|
|
|
994
826
|
}
|
|
995
827
|
|
|
996
828
|
void
|
|
997
|
-
IceInternal::OutgoingConnectionFactory::ConnectCallback::exception(
|
|
829
|
+
IceInternal::OutgoingConnectionFactory::ConnectCallback::exception(exception_ptr ex)
|
|
998
830
|
{
|
|
999
831
|
_factory->handleException(ex, _hasMore || _endpointsIter != _endpoints.end() - 1);
|
|
1000
|
-
if(++_endpointsIter != _endpoints.end())
|
|
832
|
+
if (++_endpointsIter != _endpoints.end())
|
|
1001
833
|
{
|
|
1002
834
|
nextEndpoint();
|
|
1003
835
|
}
|
|
1004
|
-
else if(!_connectors.empty())
|
|
836
|
+
else if (!_connectors.empty())
|
|
1005
837
|
{
|
|
1006
838
|
//
|
|
1007
839
|
// We now have all the connectors for the given endpoints. We can try to obtain the
|
|
@@ -1012,7 +844,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::exception(const Ice::Lo
|
|
|
1012
844
|
}
|
|
1013
845
|
else
|
|
1014
846
|
{
|
|
1015
|
-
|
|
847
|
+
_createConnectionException(ex);
|
|
1016
848
|
_factory->decPendingConnectCount(); // Must be called last.
|
|
1017
849
|
}
|
|
1018
850
|
}
|
|
@@ -1029,9 +861,9 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnectors()
|
|
|
1029
861
|
//
|
|
1030
862
|
_factory->incPendingConnectCount();
|
|
1031
863
|
}
|
|
1032
|
-
catch(const
|
|
864
|
+
catch (const std::exception&)
|
|
1033
865
|
{
|
|
1034
|
-
|
|
866
|
+
_createConnectionException(current_exception());
|
|
1035
867
|
return;
|
|
1036
868
|
}
|
|
1037
869
|
|
|
@@ -1043,13 +875,16 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextEndpoint()
|
|
|
1043
875
|
{
|
|
1044
876
|
try
|
|
1045
877
|
{
|
|
878
|
+
auto self = shared_from_this();
|
|
1046
879
|
assert(_endpointsIter != _endpoints.end());
|
|
1047
|
-
(*_endpointsIter)
|
|
1048
|
-
|
|
880
|
+
(*_endpointsIter)
|
|
881
|
+
->connectorsAsync(
|
|
882
|
+
[self](const vector<ConnectorPtr>& connectors) { self->connectors(connectors); },
|
|
883
|
+
[self](exception_ptr ex) { self->exception(ex); });
|
|
1049
884
|
}
|
|
1050
|
-
catch(const
|
|
885
|
+
catch (const std::exception&)
|
|
1051
886
|
{
|
|
1052
|
-
exception(
|
|
887
|
+
exception(current_exception());
|
|
1053
888
|
}
|
|
1054
889
|
}
|
|
1055
890
|
|
|
@@ -1063,8 +898,8 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
|
|
|
1063
898
|
// connection.
|
|
1064
899
|
//
|
|
1065
900
|
bool compress;
|
|
1066
|
-
Ice::ConnectionIPtr connection = _factory->getConnection(_connectors,
|
|
1067
|
-
if(!connection)
|
|
901
|
+
Ice::ConnectionIPtr connection = _factory->getConnection(_connectors, shared_from_this(), compress);
|
|
902
|
+
if (!connection)
|
|
1068
903
|
{
|
|
1069
904
|
//
|
|
1070
905
|
// A null return value from getConnection indicates that the connection
|
|
@@ -1075,12 +910,12 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
|
|
|
1075
910
|
return;
|
|
1076
911
|
}
|
|
1077
912
|
|
|
1078
|
-
|
|
913
|
+
_createConnectionResponse(connection, compress);
|
|
1079
914
|
_factory->decPendingConnectCount(); // Must be called last.
|
|
1080
915
|
}
|
|
1081
|
-
catch(const
|
|
916
|
+
catch (const std::exception&)
|
|
1082
917
|
{
|
|
1083
|
-
|
|
918
|
+
_createConnectionException(current_exception());
|
|
1084
919
|
_factory->decPendingConnectCount(); // Must be called last.
|
|
1085
920
|
}
|
|
1086
921
|
}
|
|
@@ -1088,15 +923,15 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
|
|
|
1088
923
|
void
|
|
1089
924
|
IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
|
|
1090
925
|
{
|
|
1091
|
-
while(true)
|
|
926
|
+
while (true)
|
|
1092
927
|
{
|
|
1093
928
|
try
|
|
1094
929
|
{
|
|
1095
930
|
const CommunicatorObserverPtr& obsv = _factory->_instance->initializationData().observer;
|
|
1096
|
-
if(obsv)
|
|
931
|
+
if (obsv)
|
|
1097
932
|
{
|
|
1098
933
|
_observer = obsv->getConnectionEstablishmentObserver(_iter->endpoint, _iter->connector->toString());
|
|
1099
|
-
if(_observer)
|
|
934
|
+
if (_observer)
|
|
1100
935
|
{
|
|
1101
936
|
_observer->attach();
|
|
1102
937
|
}
|
|
@@ -1104,25 +939,29 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
|
|
|
1104
939
|
|
|
1105
940
|
assert(_iter != _connectors.end());
|
|
1106
941
|
|
|
1107
|
-
if(_instance->traceLevels()->network >= 2)
|
|
942
|
+
if (_instance->traceLevels()->network >= 2)
|
|
1108
943
|
{
|
|
1109
944
|
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1110
945
|
out << "trying to establish " << _iter->endpoint->protocol() << " connection to "
|
|
1111
946
|
<< _iter->connector->toString();
|
|
1112
947
|
}
|
|
1113
948
|
Ice::ConnectionIPtr connection = _factory->createConnection(_iter->connector->connect(), *_iter);
|
|
1114
|
-
|
|
949
|
+
auto self = shared_from_this();
|
|
950
|
+
connection->startAsync(
|
|
951
|
+
[self](const ConnectionIPtr& conn) { self->connectionStartCompleted(conn); },
|
|
952
|
+
[self](const ConnectionIPtr& conn, exception_ptr ex) { self->connectionStartFailed(conn, ex); });
|
|
1115
953
|
}
|
|
1116
|
-
catch(const Ice::LocalException& ex)
|
|
954
|
+
catch (const Ice::LocalException& ex)
|
|
1117
955
|
{
|
|
1118
|
-
if(_instance->traceLevels()->network >= 2)
|
|
956
|
+
if (_instance->traceLevels()->network >= 2)
|
|
1119
957
|
{
|
|
1120
958
|
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1121
959
|
out << "failed to establish " << _iter->endpoint->protocol() << " connection to "
|
|
1122
|
-
<< _iter->connector->toString() << "\n"
|
|
960
|
+
<< _iter->connector->toString() << "\n"
|
|
961
|
+
<< ex;
|
|
1123
962
|
}
|
|
1124
963
|
|
|
1125
|
-
if(connectionStartFailedImpl(
|
|
964
|
+
if (connectionStartFailedImpl(current_exception()))
|
|
1126
965
|
{
|
|
1127
966
|
continue; // More connectors to try, continue.
|
|
1128
967
|
}
|
|
@@ -1132,24 +971,25 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
|
|
|
1132
971
|
}
|
|
1133
972
|
|
|
1134
973
|
void
|
|
1135
|
-
IceInternal::OutgoingConnectionFactory::ConnectCallback::setConnection(
|
|
1136
|
-
|
|
974
|
+
IceInternal::OutgoingConnectionFactory::ConnectCallback::setConnection(
|
|
975
|
+
const Ice::ConnectionIPtr& connection,
|
|
976
|
+
bool compress)
|
|
1137
977
|
{
|
|
1138
978
|
//
|
|
1139
979
|
// Callback from the factory: the connection to one of the callback
|
|
1140
980
|
// connectors has been established.
|
|
1141
981
|
//
|
|
1142
|
-
|
|
982
|
+
_createConnectionResponse(connection, compress);
|
|
1143
983
|
_factory->decPendingConnectCount(); // Must be called last.
|
|
1144
984
|
}
|
|
1145
985
|
|
|
1146
986
|
void
|
|
1147
|
-
IceInternal::OutgoingConnectionFactory::ConnectCallback::setException(
|
|
987
|
+
IceInternal::OutgoingConnectionFactory::ConnectCallback::setException(exception_ptr ex)
|
|
1148
988
|
{
|
|
1149
989
|
//
|
|
1150
990
|
// Callback from the factory: connection establishment failed.
|
|
1151
991
|
//
|
|
1152
|
-
|
|
992
|
+
_createConnectionException(ex);
|
|
1153
993
|
_factory->decPendingConnectCount(); // Must be called last.
|
|
1154
994
|
}
|
|
1155
995
|
|
|
@@ -1167,9 +1007,9 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::removeConnectors(const
|
|
|
1167
1007
|
// failed, we remove the connectors and return true if there's
|
|
1168
1008
|
// no more connectors left to try.
|
|
1169
1009
|
//
|
|
1170
|
-
for(
|
|
1010
|
+
for (const auto& p : connectors)
|
|
1171
1011
|
{
|
|
1172
|
-
_connectors.erase(remove(_connectors.begin(), _connectors.end(),
|
|
1012
|
+
_connectors.erase(remove(_connectors.begin(), _connectors.end(), p), _connectors.end());
|
|
1173
1013
|
}
|
|
1174
1014
|
return _connectors.empty();
|
|
1175
1015
|
}
|
|
@@ -1177,73 +1017,79 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::removeConnectors(const
|
|
|
1177
1017
|
void
|
|
1178
1018
|
IceInternal::OutgoingConnectionFactory::ConnectCallback::removeFromPending()
|
|
1179
1019
|
{
|
|
1180
|
-
_factory->removeFromPending(
|
|
1020
|
+
_factory->removeFromPending(shared_from_this(), _connectors);
|
|
1181
1021
|
}
|
|
1182
1022
|
|
|
1183
1023
|
bool
|
|
1184
|
-
IceInternal::OutgoingConnectionFactory::ConnectCallback::
|
|
1024
|
+
IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailedImpl(std::exception_ptr ex)
|
|
1185
1025
|
{
|
|
1186
|
-
|
|
1187
|
-
}
|
|
1188
|
-
|
|
1189
|
-
bool
|
|
1190
|
-
IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailedImpl(const Ice::LocalException& ex)
|
|
1191
|
-
{
|
|
1192
|
-
if(_observer)
|
|
1026
|
+
if (_observer)
|
|
1193
1027
|
{
|
|
1194
|
-
_observer->failed(ex
|
|
1028
|
+
_observer->failed(getExceptionId(ex));
|
|
1195
1029
|
_observer->detach();
|
|
1196
1030
|
}
|
|
1197
1031
|
|
|
1198
1032
|
_factory->handleConnectionException(ex, _hasMore || _iter != _connectors.end() - 1);
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
else if(++_iter != _connectors.end()) // Try the next connector.
|
|
1033
|
+
|
|
1034
|
+
bool keepGoing = ++_iter != _connectors.end();
|
|
1035
|
+
|
|
1036
|
+
if (keepGoing)
|
|
1204
1037
|
{
|
|
1205
|
-
|
|
1038
|
+
try
|
|
1039
|
+
{
|
|
1040
|
+
rethrow_exception(ex);
|
|
1041
|
+
}
|
|
1042
|
+
catch (const CommunicatorDestroyedException&)
|
|
1043
|
+
{
|
|
1044
|
+
keepGoing = false;
|
|
1045
|
+
}
|
|
1046
|
+
catch (const ConnectTimeoutException&)
|
|
1047
|
+
{
|
|
1048
|
+
// We stop on ConnectTimeoutException to fail reasonably fast when the endpoint has many connectors
|
|
1049
|
+
// (IP addresses).
|
|
1050
|
+
keepGoing = false;
|
|
1051
|
+
}
|
|
1052
|
+
catch (...)
|
|
1053
|
+
{
|
|
1054
|
+
}
|
|
1206
1055
|
}
|
|
1207
|
-
|
|
1056
|
+
|
|
1057
|
+
if (!keepGoing)
|
|
1208
1058
|
{
|
|
1209
|
-
_factory->finishGetConnection(_connectors, ex,
|
|
1059
|
+
_factory->finishGetConnection(_connectors, ex, shared_from_this());
|
|
1210
1060
|
}
|
|
1211
|
-
return
|
|
1061
|
+
return keepGoing;
|
|
1212
1062
|
}
|
|
1213
1063
|
|
|
1214
1064
|
void
|
|
1215
1065
|
IceInternal::IncomingConnectionFactory::activate()
|
|
1216
1066
|
{
|
|
1217
|
-
|
|
1067
|
+
lock_guard lock(_mutex);
|
|
1218
1068
|
setState(StateActive);
|
|
1219
1069
|
}
|
|
1220
1070
|
|
|
1221
1071
|
void
|
|
1222
1072
|
IceInternal::IncomingConnectionFactory::hold()
|
|
1223
1073
|
{
|
|
1224
|
-
|
|
1074
|
+
lock_guard lock(_mutex);
|
|
1225
1075
|
setState(StateHolding);
|
|
1226
1076
|
}
|
|
1227
1077
|
|
|
1228
1078
|
void
|
|
1229
1079
|
IceInternal::IncomingConnectionFactory::destroy()
|
|
1230
1080
|
{
|
|
1231
|
-
|
|
1081
|
+
lock_guard lock(_mutex);
|
|
1232
1082
|
setState(StateClosed);
|
|
1233
1083
|
}
|
|
1234
1084
|
|
|
1235
1085
|
void
|
|
1236
1086
|
IceInternal::IncomingConnectionFactory::updateConnectionObservers()
|
|
1237
1087
|
{
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
for(const auto& conn : _connections)
|
|
1088
|
+
lock_guard lock(_mutex);
|
|
1089
|
+
for (const auto& connection : _connections)
|
|
1241
1090
|
{
|
|
1242
|
-
|
|
1091
|
+
connection->updateObserver();
|
|
1243
1092
|
}
|
|
1244
|
-
#else
|
|
1245
|
-
for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::updateObserver));
|
|
1246
|
-
#endif
|
|
1247
1093
|
}
|
|
1248
1094
|
|
|
1249
1095
|
void
|
|
@@ -1252,16 +1098,13 @@ IceInternal::IncomingConnectionFactory::waitUntilHolding() const
|
|
|
1252
1098
|
set<ConnectionIPtr> connections;
|
|
1253
1099
|
|
|
1254
1100
|
{
|
|
1255
|
-
|
|
1101
|
+
unique_lock lock(_mutex);
|
|
1256
1102
|
|
|
1257
1103
|
//
|
|
1258
1104
|
// First we wait until the connection factory itself is in holding
|
|
1259
1105
|
// state.
|
|
1260
1106
|
//
|
|
1261
|
-
|
|
1262
|
-
{
|
|
1263
|
-
wait();
|
|
1264
|
-
}
|
|
1107
|
+
_conditionVariable.wait(lock, [this] { return _state >= StateHolding; });
|
|
1265
1108
|
|
|
1266
1109
|
//
|
|
1267
1110
|
// We want to wait until all connections are in holding state
|
|
@@ -1273,14 +1116,10 @@ IceInternal::IncomingConnectionFactory::waitUntilHolding() const
|
|
|
1273
1116
|
//
|
|
1274
1117
|
// Now we wait until each connection is in holding state.
|
|
1275
1118
|
//
|
|
1276
|
-
|
|
1277
|
-
for(const auto& conn : connections)
|
|
1119
|
+
for (const auto& conn : connections)
|
|
1278
1120
|
{
|
|
1279
1121
|
conn->waitUntilHolding();
|
|
1280
1122
|
}
|
|
1281
|
-
#else
|
|
1282
|
-
for_each(connections.begin(), connections.end(), Ice::constVoidMemFun(&ConnectionI::waitUntilHolding));
|
|
1283
|
-
#endif
|
|
1284
1123
|
}
|
|
1285
1124
|
|
|
1286
1125
|
void
|
|
@@ -1288,21 +1127,18 @@ IceInternal::IncomingConnectionFactory::waitUntilFinished()
|
|
|
1288
1127
|
{
|
|
1289
1128
|
set<ConnectionIPtr> connections;
|
|
1290
1129
|
{
|
|
1291
|
-
|
|
1130
|
+
unique_lock lock(_mutex);
|
|
1292
1131
|
|
|
1293
1132
|
//
|
|
1294
1133
|
// First we wait until the factory is destroyed. If we are using
|
|
1295
1134
|
// an acceptor, we also wait for it to be closed.
|
|
1296
1135
|
//
|
|
1297
|
-
|
|
1298
|
-
{
|
|
1299
|
-
wait();
|
|
1300
|
-
}
|
|
1136
|
+
_conditionVariable.wait(lock, [this] { return _state == StateFinished; });
|
|
1301
1137
|
|
|
1302
1138
|
//
|
|
1303
1139
|
// Clear the OA. See bug 1673 for the details of why this is necessary.
|
|
1304
1140
|
//
|
|
1305
|
-
_adapter =
|
|
1141
|
+
_adapter = nullptr;
|
|
1306
1142
|
|
|
1307
1143
|
// We want to wait until all connections are finished outside the
|
|
1308
1144
|
// thread synchronization.
|
|
@@ -1310,97 +1146,67 @@ IceInternal::IncomingConnectionFactory::waitUntilFinished()
|
|
|
1310
1146
|
connections = _connections;
|
|
1311
1147
|
}
|
|
1312
1148
|
|
|
1313
|
-
|
|
1314
|
-
for(const auto& conn : connections)
|
|
1149
|
+
for (const auto& conn : connections)
|
|
1315
1150
|
{
|
|
1316
1151
|
conn->waitUntilFinished();
|
|
1317
1152
|
}
|
|
1318
|
-
#else
|
|
1319
|
-
for_each(connections.begin(), connections.end(), Ice::voidMemFun(&ConnectionI::waitUntilFinished));
|
|
1320
|
-
#endif
|
|
1321
1153
|
|
|
1322
1154
|
{
|
|
1323
|
-
|
|
1324
|
-
if(_transceiver)
|
|
1325
|
-
{
|
|
1326
|
-
assert(_connections.size() <= 1); // The connection isn't monitored or reaped.
|
|
1327
|
-
}
|
|
1328
|
-
else
|
|
1329
|
-
{
|
|
1330
|
-
// Ensure all the connections are finished and reapable at this point.
|
|
1331
|
-
vector<Ice::ConnectionIPtr> cons;
|
|
1332
|
-
_monitor->swapReapedConnections(cons);
|
|
1333
|
-
assert(cons.size() == _connections.size());
|
|
1334
|
-
cons.clear();
|
|
1335
|
-
}
|
|
1155
|
+
lock_guard lock(_mutex);
|
|
1336
1156
|
_connections.clear();
|
|
1337
1157
|
}
|
|
1338
|
-
|
|
1339
|
-
//
|
|
1340
|
-
// Must be destroyed outside the synchronization since this might block waiting for
|
|
1341
|
-
// a timer task to complete.
|
|
1342
|
-
//
|
|
1343
|
-
_monitor->destroy();
|
|
1344
|
-
}
|
|
1345
|
-
|
|
1346
|
-
bool
|
|
1347
|
-
IceInternal::IncomingConnectionFactory::isLocal(const EndpointIPtr& endpoint) const
|
|
1348
|
-
{
|
|
1349
|
-
if(_publishedEndpoint && endpoint->equivalent(_publishedEndpoint))
|
|
1350
|
-
{
|
|
1351
|
-
return true;
|
|
1352
|
-
}
|
|
1353
|
-
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
|
|
1354
|
-
return endpoint->equivalent(_endpoint);
|
|
1355
1158
|
}
|
|
1356
1159
|
|
|
1357
1160
|
EndpointIPtr
|
|
1358
1161
|
IceInternal::IncomingConnectionFactory::endpoint() const
|
|
1359
1162
|
{
|
|
1360
|
-
|
|
1361
|
-
{
|
|
1362
|
-
return _publishedEndpoint;
|
|
1363
|
-
}
|
|
1364
|
-
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
|
|
1163
|
+
lock_guard lock(_mutex);
|
|
1365
1164
|
return _endpoint;
|
|
1366
1165
|
}
|
|
1367
1166
|
|
|
1368
1167
|
list<ConnectionIPtr>
|
|
1369
1168
|
IceInternal::IncomingConnectionFactory::connections() const
|
|
1370
1169
|
{
|
|
1371
|
-
|
|
1170
|
+
lock_guard lock(_mutex);
|
|
1372
1171
|
|
|
1373
1172
|
list<ConnectionIPtr> result;
|
|
1374
1173
|
|
|
1375
1174
|
//
|
|
1376
1175
|
// Only copy connections which have not been destroyed.
|
|
1377
1176
|
//
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
});
|
|
1384
|
-
#else
|
|
1385
|
-
remove_copy_if(_connections.begin(), _connections.end(), back_inserter(result),
|
|
1386
|
-
not1(Ice::constMemFun(&ConnectionI::isActiveOrHolding)));
|
|
1387
|
-
#endif
|
|
1177
|
+
remove_copy_if(
|
|
1178
|
+
_connections.begin(),
|
|
1179
|
+
_connections.end(),
|
|
1180
|
+
back_inserter(result),
|
|
1181
|
+
[](const ConnectionIPtr& conn) { return !conn->isActiveOrHolding(); });
|
|
1388
1182
|
return result;
|
|
1389
1183
|
}
|
|
1390
1184
|
|
|
1391
1185
|
void
|
|
1392
|
-
IceInternal::IncomingConnectionFactory::
|
|
1393
|
-
|
|
1186
|
+
IceInternal::IncomingConnectionFactory::removeConnection(const ConnectionIPtr& connection) noexcept
|
|
1187
|
+
{
|
|
1188
|
+
lock_guard lock(_mutex);
|
|
1189
|
+
if (_state == StateActive || _state == StateHolding)
|
|
1190
|
+
{
|
|
1191
|
+
_connections.erase(connection);
|
|
1192
|
+
}
|
|
1193
|
+
// else it's already being cleaned up.
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
void
|
|
1197
|
+
IceInternal::IncomingConnectionFactory::flushAsyncBatchRequests(
|
|
1198
|
+
const CommunicatorFlushBatchAsyncPtr& outAsync,
|
|
1199
|
+
Ice::CompressBatch compress)
|
|
1394
1200
|
{
|
|
1395
1201
|
list<ConnectionIPtr> c = connections(); // connections() is synchronized, so no need to synchronize here.
|
|
1396
1202
|
|
|
1397
|
-
for(
|
|
1203
|
+
for (const auto& p : c)
|
|
1398
1204
|
{
|
|
1399
1205
|
try
|
|
1400
1206
|
{
|
|
1401
|
-
outAsync->flushConnection(
|
|
1207
|
+
outAsync->flushConnection(p, compress);
|
|
1402
1208
|
}
|
|
1403
|
-
catch(const LocalException&)
|
|
1209
|
+
catch (const LocalException&)
|
|
1404
1210
|
{
|
|
1405
1211
|
// Ignore.
|
|
1406
1212
|
}
|
|
@@ -1412,7 +1218,7 @@ bool
|
|
|
1412
1218
|
IceInternal::IncomingConnectionFactory::startAsync(SocketOperation)
|
|
1413
1219
|
{
|
|
1414
1220
|
assert(_acceptor);
|
|
1415
|
-
if(_state >= StateClosed)
|
|
1221
|
+
if (_state >= StateClosed)
|
|
1416
1222
|
{
|
|
1417
1223
|
return false;
|
|
1418
1224
|
}
|
|
@@ -1421,9 +1227,9 @@ IceInternal::IncomingConnectionFactory::startAsync(SocketOperation)
|
|
|
1421
1227
|
{
|
|
1422
1228
|
_acceptor->startAccept();
|
|
1423
1229
|
}
|
|
1424
|
-
catch(const Ice::LocalException&
|
|
1230
|
+
catch (const Ice::LocalException&)
|
|
1425
1231
|
{
|
|
1426
|
-
|
|
1232
|
+
_acceptorException = current_exception();
|
|
1427
1233
|
_acceptor->getNativeInfo()->completed(SocketOperationRead);
|
|
1428
1234
|
}
|
|
1429
1235
|
return true;
|
|
@@ -1435,25 +1241,20 @@ IceInternal::IncomingConnectionFactory::finishAsync(SocketOperation)
|
|
|
1435
1241
|
assert(_acceptor);
|
|
1436
1242
|
try
|
|
1437
1243
|
{
|
|
1438
|
-
if(_acceptorException)
|
|
1244
|
+
if (_acceptorException)
|
|
1439
1245
|
{
|
|
1440
|
-
_acceptorException
|
|
1246
|
+
rethrow_exception(_acceptorException);
|
|
1441
1247
|
}
|
|
1442
1248
|
_acceptor->finishAccept();
|
|
1443
1249
|
}
|
|
1444
|
-
catch(const LocalException& ex)
|
|
1250
|
+
catch (const LocalException& ex)
|
|
1445
1251
|
{
|
|
1446
|
-
_acceptorException
|
|
1252
|
+
_acceptorException = nullptr;
|
|
1447
1253
|
|
|
1448
|
-
|
|
1449
|
-
out << "couldn't accept connection:\n" << ex << '\n' << _acceptor->toString();
|
|
1450
|
-
if(_acceptorStarted)
|
|
1254
|
+
if (_warn)
|
|
1451
1255
|
{
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
{
|
|
1455
|
-
closeAcceptor();
|
|
1456
|
-
}
|
|
1256
|
+
Warning out(_instance->initializationData().logger);
|
|
1257
|
+
out << "error accepting connection:\n" << ex << '\n' << _acceptor->toString();
|
|
1457
1258
|
}
|
|
1458
1259
|
}
|
|
1459
1260
|
return _state < StateClosed;
|
|
@@ -1468,35 +1269,25 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
|
|
|
1468
1269
|
ThreadPoolMessage<IncomingConnectionFactory> msg(current, *this);
|
|
1469
1270
|
|
|
1470
1271
|
{
|
|
1471
|
-
|
|
1272
|
+
lock_guard lock(_mutex);
|
|
1472
1273
|
|
|
1473
1274
|
ThreadPoolMessage<IncomingConnectionFactory>::IOScope io(msg);
|
|
1474
|
-
if(!io)
|
|
1275
|
+
if (!io)
|
|
1475
1276
|
{
|
|
1476
1277
|
return;
|
|
1477
1278
|
}
|
|
1478
1279
|
|
|
1479
|
-
if(_state >= StateClosed)
|
|
1280
|
+
if (_state >= StateClosed)
|
|
1480
1281
|
{
|
|
1481
1282
|
return;
|
|
1482
1283
|
}
|
|
1483
|
-
else if(_state == StateHolding)
|
|
1284
|
+
else if (_state == StateHolding)
|
|
1484
1285
|
{
|
|
1485
|
-
|
|
1286
|
+
this_thread::yield();
|
|
1486
1287
|
return;
|
|
1487
1288
|
}
|
|
1488
1289
|
|
|
1489
|
-
|
|
1490
|
-
// Reap closed connections
|
|
1491
|
-
//
|
|
1492
|
-
vector<Ice::ConnectionIPtr> cons;
|
|
1493
|
-
_monitor->swapReapedConnections(cons);
|
|
1494
|
-
for(vector<Ice::ConnectionIPtr>::const_iterator p = cons.begin(); p != cons.end(); ++p)
|
|
1495
|
-
{
|
|
1496
|
-
_connections.erase(*p);
|
|
1497
|
-
}
|
|
1498
|
-
|
|
1499
|
-
if(!_acceptorStarted)
|
|
1290
|
+
if (!_acceptorStarted)
|
|
1500
1291
|
{
|
|
1501
1292
|
return;
|
|
1502
1293
|
}
|
|
@@ -1509,37 +1300,40 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
|
|
|
1509
1300
|
{
|
|
1510
1301
|
transceiver = _acceptor->accept();
|
|
1511
1302
|
|
|
1512
|
-
if(
|
|
1513
|
-
{
|
|
1514
|
-
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1515
|
-
out << "trying to accept " << _endpoint->protocol() << " connection\n" << transceiver->toString();
|
|
1516
|
-
}
|
|
1517
|
-
}
|
|
1518
|
-
catch(const SocketException& ex)
|
|
1519
|
-
{
|
|
1520
|
-
if(noMoreFds(ex.error))
|
|
1303
|
+
if (_maxConnections > 0 && _connections.size() == static_cast<size_t>(_maxConnections))
|
|
1521
1304
|
{
|
|
1522
|
-
|
|
1523
|
-
out << "can't accept more connections:\n" << ex << '\n' << _acceptor->toString();
|
|
1305
|
+
// Can't accept more connections, so we abort this transport connection.
|
|
1524
1306
|
|
|
1525
|
-
|
|
1526
|
-
_acceptorStarted = false;
|
|
1527
|
-
if(_adapter->getThreadPool()->finish(ICE_SHARED_FROM_THIS, true))
|
|
1307
|
+
if (_instance->traceLevels()->network >= 2)
|
|
1528
1308
|
{
|
|
1529
|
-
|
|
1309
|
+
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1310
|
+
out << "rejecting new " << _endpoint->protocol() << " connection\n"
|
|
1311
|
+
<< transceiver->toString() << "\nbecause the maximum number of connections has been reached";
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
try
|
|
1315
|
+
{
|
|
1316
|
+
transceiver->close();
|
|
1317
|
+
}
|
|
1318
|
+
catch (...)
|
|
1319
|
+
{
|
|
1320
|
+
// Ignore.
|
|
1530
1321
|
}
|
|
1322
|
+
return;
|
|
1531
1323
|
}
|
|
1532
1324
|
|
|
1533
|
-
|
|
1534
|
-
|
|
1325
|
+
if (_instance->traceLevels()->network >= 2)
|
|
1326
|
+
{
|
|
1327
|
+
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1328
|
+
out << "trying to accept " << _endpoint->protocol() << " connection\n" << transceiver->toString();
|
|
1329
|
+
}
|
|
1535
1330
|
}
|
|
1536
|
-
catch(const LocalException& ex)
|
|
1331
|
+
catch (const LocalException& ex)
|
|
1537
1332
|
{
|
|
1538
|
-
|
|
1539
|
-
if(_warn)
|
|
1333
|
+
if (_warn)
|
|
1540
1334
|
{
|
|
1541
1335
|
Warning out(_instance->initializationData().logger);
|
|
1542
|
-
out << "connection
|
|
1336
|
+
out << "error accepting connection:\n" << ex << '\n' << _acceptor->toString();
|
|
1543
1337
|
}
|
|
1544
1338
|
return;
|
|
1545
1339
|
}
|
|
@@ -1548,24 +1342,37 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
|
|
|
1548
1342
|
|
|
1549
1343
|
try
|
|
1550
1344
|
{
|
|
1551
|
-
connection = ConnectionI::create(
|
|
1552
|
-
|
|
1345
|
+
connection = ConnectionI::create(
|
|
1346
|
+
_adapter->getCommunicator(),
|
|
1347
|
+
_instance,
|
|
1348
|
+
transceiver,
|
|
1349
|
+
nullptr, // connector
|
|
1350
|
+
_endpoint,
|
|
1351
|
+
_adapter,
|
|
1352
|
+
[weakSelf = weak_from_this()](const ConnectionIPtr& closedConnection)
|
|
1353
|
+
{
|
|
1354
|
+
if (auto self = weakSelf.lock())
|
|
1355
|
+
{
|
|
1356
|
+
static_pointer_cast<IncomingConnectionFactory>(self)->removeConnection(closedConnection);
|
|
1357
|
+
}
|
|
1358
|
+
},
|
|
1359
|
+
_connectionOptions);
|
|
1553
1360
|
}
|
|
1554
|
-
catch(const LocalException& ex)
|
|
1361
|
+
catch (const LocalException& ex)
|
|
1555
1362
|
{
|
|
1556
1363
|
try
|
|
1557
1364
|
{
|
|
1558
1365
|
transceiver->close();
|
|
1559
1366
|
}
|
|
1560
|
-
catch(const Ice::LocalException&)
|
|
1367
|
+
catch (const Ice::LocalException&)
|
|
1561
1368
|
{
|
|
1562
1369
|
// Ignore.
|
|
1563
1370
|
}
|
|
1564
1371
|
|
|
1565
|
-
if(_warn)
|
|
1372
|
+
if (_warn)
|
|
1566
1373
|
{
|
|
1567
1374
|
Warning out(_instance->initializationData().logger);
|
|
1568
|
-
out << "connection
|
|
1375
|
+
out << "error accepting connection:\n" << ex << '\n' << _acceptor->toString();
|
|
1569
1376
|
}
|
|
1570
1377
|
return;
|
|
1571
1378
|
}
|
|
@@ -1575,42 +1382,35 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
|
|
|
1575
1382
|
|
|
1576
1383
|
assert(connection);
|
|
1577
1384
|
|
|
1578
|
-
|
|
1385
|
+
auto self = shared_from_this();
|
|
1386
|
+
connection->startAsync(
|
|
1387
|
+
[self](const ConnectionIPtr& conn) { self->connectionStartCompleted(conn); },
|
|
1388
|
+
[self](const ConnectionIPtr& conn, exception_ptr ex) { self->connectionStartFailed(conn, ex); });
|
|
1579
1389
|
}
|
|
1580
1390
|
|
|
1581
1391
|
void
|
|
1582
1392
|
IceInternal::IncomingConnectionFactory::finished(ThreadPoolCurrent&, bool close)
|
|
1583
1393
|
{
|
|
1584
|
-
|
|
1585
|
-
if(_state < StateClosed)
|
|
1394
|
+
unique_lock lock(_mutex);
|
|
1395
|
+
if (_state < StateClosed)
|
|
1586
1396
|
{
|
|
1587
|
-
if(close)
|
|
1397
|
+
if (close)
|
|
1588
1398
|
{
|
|
1589
1399
|
closeAcceptor();
|
|
1590
1400
|
}
|
|
1591
|
-
|
|
1592
|
-
//
|
|
1593
|
-
// If the acceptor hasn't been explicitly stopped (which is the case if the acceptor got closed
|
|
1594
|
-
// because of an unexpected error), try to restart the acceptor in 1 second.
|
|
1595
|
-
//
|
|
1596
|
-
if(!_acceptorStopped)
|
|
1597
|
-
{
|
|
1598
|
-
_instance->timer()->schedule(ICE_MAKE_SHARED(StartAcceptor, ICE_SHARED_FROM_THIS, _instance),
|
|
1599
|
-
IceUtil::Time::seconds(1));
|
|
1600
|
-
}
|
|
1601
1401
|
return;
|
|
1602
1402
|
}
|
|
1603
1403
|
|
|
1604
1404
|
assert(_state >= StateClosed);
|
|
1605
1405
|
setState(StateFinished);
|
|
1606
1406
|
|
|
1607
|
-
if(close)
|
|
1407
|
+
if (close)
|
|
1608
1408
|
{
|
|
1609
1409
|
closeAcceptor();
|
|
1610
1410
|
}
|
|
1611
1411
|
|
|
1612
1412
|
#if TARGET_OS_IPHONE != 0
|
|
1613
|
-
|
|
1413
|
+
lock.unlock();
|
|
1614
1414
|
finish();
|
|
1615
1415
|
#endif
|
|
1616
1416
|
}
|
|
@@ -1619,101 +1419,93 @@ IceInternal::IncomingConnectionFactory::finished(ThreadPoolCurrent&, bool close)
|
|
|
1619
1419
|
void
|
|
1620
1420
|
IceInternal::IncomingConnectionFactory::finish()
|
|
1621
1421
|
{
|
|
1622
|
-
unregisterForBackgroundNotification(
|
|
1422
|
+
unregisterForBackgroundNotification(shared_from_this());
|
|
1623
1423
|
}
|
|
1624
1424
|
#endif
|
|
1625
1425
|
|
|
1626
1426
|
string
|
|
1627
1427
|
IceInternal::IncomingConnectionFactory::toString() const
|
|
1628
1428
|
{
|
|
1629
|
-
|
|
1630
|
-
if(_transceiver)
|
|
1429
|
+
lock_guard lock(_mutex);
|
|
1430
|
+
if (_transceiver)
|
|
1631
1431
|
{
|
|
1632
1432
|
return _transceiver->toString();
|
|
1633
1433
|
}
|
|
1634
|
-
else if(_acceptor)
|
|
1434
|
+
else if (_acceptor)
|
|
1635
1435
|
{
|
|
1636
1436
|
return _acceptor->toString();
|
|
1637
1437
|
}
|
|
1638
1438
|
else
|
|
1639
1439
|
{
|
|
1640
|
-
return
|
|
1440
|
+
return {};
|
|
1641
1441
|
}
|
|
1642
1442
|
}
|
|
1643
1443
|
|
|
1644
1444
|
NativeInfoPtr
|
|
1645
1445
|
IceInternal::IncomingConnectionFactory::getNativeInfo()
|
|
1646
1446
|
{
|
|
1647
|
-
if(_transceiver)
|
|
1447
|
+
if (_transceiver)
|
|
1648
1448
|
{
|
|
1649
1449
|
return _transceiver->getNativeInfo();
|
|
1650
1450
|
}
|
|
1651
|
-
else if(_acceptor)
|
|
1451
|
+
else if (_acceptor)
|
|
1652
1452
|
{
|
|
1653
1453
|
return _acceptor->getNativeInfo();
|
|
1654
1454
|
}
|
|
1655
1455
|
else
|
|
1656
1456
|
{
|
|
1657
|
-
return
|
|
1457
|
+
return nullptr;
|
|
1658
1458
|
}
|
|
1659
1459
|
}
|
|
1660
1460
|
|
|
1661
1461
|
void
|
|
1662
1462
|
IceInternal::IncomingConnectionFactory::connectionStartCompleted(const Ice::ConnectionIPtr& connection)
|
|
1663
1463
|
{
|
|
1664
|
-
|
|
1464
|
+
lock_guard lock(_mutex);
|
|
1665
1465
|
|
|
1666
1466
|
//
|
|
1667
|
-
//
|
|
1467
|
+
// Initially, connections are in the holding state. If the factory is active
|
|
1668
1468
|
// we activate the connection.
|
|
1669
1469
|
//
|
|
1670
|
-
if(_state == StateActive)
|
|
1470
|
+
if (_state == StateActive)
|
|
1671
1471
|
{
|
|
1672
1472
|
connection->activate();
|
|
1673
1473
|
}
|
|
1674
1474
|
}
|
|
1675
1475
|
|
|
1676
1476
|
void
|
|
1677
|
-
IceInternal::IncomingConnectionFactory::connectionStartFailed(const Ice::ConnectionIPtr& /*connection*/,
|
|
1678
|
-
const Ice::LocalException&)
|
|
1477
|
+
IceInternal::IncomingConnectionFactory::connectionStartFailed(const Ice::ConnectionIPtr& /*connection*/, exception_ptr)
|
|
1679
1478
|
{
|
|
1680
|
-
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
|
|
1681
|
-
if(_state >= StateClosed)
|
|
1682
|
-
{
|
|
1683
|
-
return;
|
|
1684
|
-
}
|
|
1685
|
-
|
|
1686
|
-
//
|
|
1687
1479
|
// Do not warn about connection exceptions here. The connection is not yet validated.
|
|
1688
|
-
//
|
|
1689
1480
|
}
|
|
1690
1481
|
|
|
1691
1482
|
//
|
|
1692
1483
|
// COMPILERFIX: The ConnectionFactory setup is broken out into a separate initialize
|
|
1693
1484
|
// function because when it was part of the constructor C++Builder 2007 apps would
|
|
1694
|
-
// crash if an
|
|
1485
|
+
// crash if an exception was thrown from any calls within the constructor.
|
|
1695
1486
|
//
|
|
1696
|
-
IceInternal::IncomingConnectionFactory::IncomingConnectionFactory(
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
_instance(instance),
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
{
|
|
1710
|
-
}
|
|
1711
|
-
|
|
1487
|
+
IceInternal::IncomingConnectionFactory::IncomingConnectionFactory(
|
|
1488
|
+
const InstancePtr& instance,
|
|
1489
|
+
const EndpointIPtr& endpoint,
|
|
1490
|
+
const shared_ptr<ObjectAdapterI>& adapter)
|
|
1491
|
+
: _instance(instance),
|
|
1492
|
+
_connectionOptions(instance->serverConnectionOptions(adapter->getName())),
|
|
1493
|
+
_maxConnections(
|
|
1494
|
+
endpoint->datagram()
|
|
1495
|
+
? 0
|
|
1496
|
+
: instance->initializationData().properties->getPropertyAsInt(adapter->getName() + ".MaxConnections")),
|
|
1497
|
+
_endpoint(endpoint),
|
|
1498
|
+
_adapter(adapter),
|
|
1499
|
+
_warn(_instance->initializationData().properties->getIcePropertyAsInt("Ice.Warn.Connections") > 0)
|
|
1500
|
+
{
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1503
|
+
#if defined(__APPLE__) && TARGET_OS_IPHONE != 0
|
|
1712
1504
|
void
|
|
1713
1505
|
IceInternal::IncomingConnectionFactory::startAcceptor()
|
|
1714
1506
|
{
|
|
1715
|
-
|
|
1716
|
-
if(_state >= StateClosed || _acceptorStarted)
|
|
1507
|
+
lock_guard lock(_mutex);
|
|
1508
|
+
if (_state >= StateClosed || _acceptorStarted)
|
|
1717
1509
|
{
|
|
1718
1510
|
return;
|
|
1719
1511
|
}
|
|
@@ -1725,47 +1517,54 @@ IceInternal::IncomingConnectionFactory::startAcceptor()
|
|
|
1725
1517
|
void
|
|
1726
1518
|
IceInternal::IncomingConnectionFactory::stopAcceptor()
|
|
1727
1519
|
{
|
|
1728
|
-
|
|
1729
|
-
if(_state >= StateClosed || !_acceptorStarted)
|
|
1520
|
+
lock_guard lock(_mutex);
|
|
1521
|
+
if (_state >= StateClosed || !_acceptorStarted)
|
|
1730
1522
|
{
|
|
1731
1523
|
return;
|
|
1732
1524
|
}
|
|
1733
1525
|
|
|
1734
1526
|
_acceptorStopped = true;
|
|
1735
1527
|
_acceptorStarted = false;
|
|
1736
|
-
if(_adapter->getThreadPool()->finish(
|
|
1528
|
+
if (_adapter->getThreadPool()->finish(shared_from_this(), true))
|
|
1737
1529
|
{
|
|
1738
1530
|
closeAcceptor();
|
|
1739
1531
|
}
|
|
1740
1532
|
}
|
|
1533
|
+
#endif
|
|
1741
1534
|
|
|
1742
1535
|
void
|
|
1743
1536
|
IceInternal::IncomingConnectionFactory::initialize()
|
|
1744
1537
|
{
|
|
1745
|
-
if(_instance->defaultsAndOverrides()->
|
|
1538
|
+
if (_instance->defaultsAndOverrides()->overrideCompress.has_value())
|
|
1746
1539
|
{
|
|
1747
|
-
_endpoint = _endpoint->
|
|
1540
|
+
_endpoint = _endpoint->compress(*_instance->defaultsAndOverrides()->overrideCompress);
|
|
1748
1541
|
}
|
|
1749
1542
|
|
|
1750
|
-
if(_instance->defaultsAndOverrides()->overrideCompress)
|
|
1751
|
-
{
|
|
1752
|
-
_endpoint = _endpoint->compress(_instance->defaultsAndOverrides()->overrideCompressValue);
|
|
1753
|
-
}
|
|
1754
1543
|
try
|
|
1755
1544
|
{
|
|
1756
1545
|
const_cast<TransceiverPtr&>(_transceiver) = _endpoint->transceiver();
|
|
1757
|
-
if(_transceiver)
|
|
1546
|
+
if (_transceiver)
|
|
1758
1547
|
{
|
|
1759
|
-
|
|
1548
|
+
// All this is for UDP "connections".
|
|
1549
|
+
|
|
1550
|
+
if (_instance->traceLevels()->network >= 2)
|
|
1760
1551
|
{
|
|
1761
1552
|
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1762
1553
|
out << "attempting to bind to " << _endpoint->protocol() << " socket\n" << _transceiver->toString();
|
|
1763
1554
|
}
|
|
1764
1555
|
const_cast<EndpointIPtr&>(_endpoint) = _transceiver->bind();
|
|
1765
|
-
ConnectionIPtr connection(ConnectionI::create(
|
|
1766
|
-
|
|
1767
|
-
|
|
1556
|
+
ConnectionIPtr connection(ConnectionI::create(
|
|
1557
|
+
_adapter->getCommunicator(),
|
|
1558
|
+
_instance,
|
|
1559
|
+
_transceiver,
|
|
1560
|
+
nullptr,
|
|
1561
|
+
_endpoint,
|
|
1562
|
+
_adapter,
|
|
1563
|
+
nullptr,
|
|
1564
|
+
_connectionOptions));
|
|
1565
|
+
connection->startAsync(nullptr, nullptr);
|
|
1768
1566
|
_connections.insert(connection);
|
|
1567
|
+
assert(_maxConnections == 0); // UDP so no max connections
|
|
1769
1568
|
}
|
|
1770
1569
|
else
|
|
1771
1570
|
{
|
|
@@ -1774,28 +1573,27 @@ IceInternal::IncomingConnectionFactory::initialize()
|
|
|
1774
1573
|
// The notification center will call back on the factory to
|
|
1775
1574
|
// start the acceptor if necessary.
|
|
1776
1575
|
//
|
|
1777
|
-
registerForBackgroundNotification(
|
|
1576
|
+
registerForBackgroundNotification(shared_from_this());
|
|
1778
1577
|
#else
|
|
1779
1578
|
createAcceptor();
|
|
1780
1579
|
#endif
|
|
1781
1580
|
}
|
|
1782
1581
|
}
|
|
1783
|
-
catch(const Ice::Exception&)
|
|
1582
|
+
catch (const Ice::Exception&)
|
|
1784
1583
|
{
|
|
1785
|
-
if(_transceiver)
|
|
1584
|
+
if (_transceiver)
|
|
1786
1585
|
{
|
|
1787
1586
|
try
|
|
1788
1587
|
{
|
|
1789
1588
|
_transceiver->close();
|
|
1790
1589
|
}
|
|
1791
|
-
catch(const Ice::LocalException&)
|
|
1590
|
+
catch (const Ice::LocalException&)
|
|
1792
1591
|
{
|
|
1793
1592
|
// Ignore
|
|
1794
1593
|
}
|
|
1795
1594
|
}
|
|
1796
1595
|
|
|
1797
1596
|
_state = StateFinished;
|
|
1798
|
-
_monitor->destroy();
|
|
1799
1597
|
_connections.clear();
|
|
1800
1598
|
throw;
|
|
1801
1599
|
}
|
|
@@ -1810,68 +1608,61 @@ IceInternal::IncomingConnectionFactory::~IncomingConnectionFactory()
|
|
|
1810
1608
|
void
|
|
1811
1609
|
IceInternal::IncomingConnectionFactory::setState(State state)
|
|
1812
1610
|
{
|
|
1813
|
-
if(_state == state) // Don't switch twice.
|
|
1611
|
+
if (_state == state) // Don't switch twice.
|
|
1814
1612
|
{
|
|
1815
1613
|
return;
|
|
1816
1614
|
}
|
|
1817
1615
|
|
|
1818
|
-
switch(state)
|
|
1616
|
+
switch (state)
|
|
1819
1617
|
{
|
|
1820
1618
|
case StateActive:
|
|
1821
1619
|
{
|
|
1822
|
-
if(_state != StateHolding) // Can only switch from holding to active.
|
|
1620
|
+
if (_state != StateHolding) // Can only switch from holding to active.
|
|
1823
1621
|
{
|
|
1824
1622
|
return;
|
|
1825
1623
|
}
|
|
1826
|
-
if(_acceptor)
|
|
1624
|
+
if (_acceptor)
|
|
1827
1625
|
{
|
|
1828
|
-
if(_instance->traceLevels()->network >= 1)
|
|
1626
|
+
if (_instance->traceLevels()->network >= 1)
|
|
1829
1627
|
{
|
|
1830
1628
|
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1831
1629
|
out << "accepting " << _endpoint->protocol() << " connections at " << _acceptor->toString();
|
|
1832
1630
|
}
|
|
1833
|
-
_adapter->getThreadPool()->_register(
|
|
1631
|
+
_adapter->getThreadPool()->_register(shared_from_this(), SocketOperationRead);
|
|
1834
1632
|
}
|
|
1835
|
-
|
|
1836
|
-
for(const auto&
|
|
1633
|
+
|
|
1634
|
+
for (const auto& connection : _connections)
|
|
1837
1635
|
{
|
|
1838
|
-
|
|
1636
|
+
connection->activate();
|
|
1839
1637
|
}
|
|
1840
|
-
#else
|
|
1841
|
-
for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::activate));
|
|
1842
|
-
#endif
|
|
1843
1638
|
break;
|
|
1844
1639
|
}
|
|
1845
1640
|
|
|
1846
1641
|
case StateHolding:
|
|
1847
1642
|
{
|
|
1848
|
-
if(_state != StateActive) // Can only switch from active to holding.
|
|
1643
|
+
if (_state != StateActive) // Can only switch from active to holding.
|
|
1849
1644
|
{
|
|
1850
1645
|
return;
|
|
1851
1646
|
}
|
|
1852
|
-
if(_acceptor)
|
|
1647
|
+
if (_acceptor)
|
|
1853
1648
|
{
|
|
1854
|
-
if(_instance->traceLevels()->network >= 1)
|
|
1649
|
+
if (_instance->traceLevels()->network >= 1)
|
|
1855
1650
|
{
|
|
1856
1651
|
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1857
1652
|
out << "holding " << _endpoint->protocol() << " connections at " << _acceptor->toString();
|
|
1858
1653
|
}
|
|
1859
|
-
_adapter->getThreadPool()->unregister(
|
|
1654
|
+
_adapter->getThreadPool()->unregister(shared_from_this(), SocketOperationRead);
|
|
1860
1655
|
}
|
|
1861
|
-
|
|
1862
|
-
for(const auto& conn : _connections)
|
|
1656
|
+
for (const auto& connection : _connections)
|
|
1863
1657
|
{
|
|
1864
|
-
|
|
1658
|
+
connection->hold();
|
|
1865
1659
|
}
|
|
1866
|
-
#else
|
|
1867
|
-
for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::hold));
|
|
1868
|
-
#endif
|
|
1869
1660
|
break;
|
|
1870
1661
|
}
|
|
1871
1662
|
|
|
1872
1663
|
case StateClosed:
|
|
1873
1664
|
{
|
|
1874
|
-
if(_acceptorStarted)
|
|
1665
|
+
if (_acceptorStarted)
|
|
1875
1666
|
{
|
|
1876
1667
|
//
|
|
1877
1668
|
// If possible, close the acceptor now to prevent new connections from
|
|
@@ -1881,7 +1672,7 @@ IceInternal::IncomingConnectionFactory::setState(State state)
|
|
|
1881
1672
|
// however.
|
|
1882
1673
|
//
|
|
1883
1674
|
_acceptorStarted = false;
|
|
1884
|
-
if(_adapter->getThreadPool()->finish(
|
|
1675
|
+
if (_adapter->getThreadPool()->finish(shared_from_this(), true))
|
|
1885
1676
|
{
|
|
1886
1677
|
closeAcceptor();
|
|
1887
1678
|
}
|
|
@@ -1889,20 +1680,15 @@ IceInternal::IncomingConnectionFactory::setState(State state)
|
|
|
1889
1680
|
else
|
|
1890
1681
|
{
|
|
1891
1682
|
#if TARGET_OS_IPHONE != 0
|
|
1892
|
-
_adapter->getThreadPool()->
|
|
1683
|
+
_adapter->getThreadPool()->execute([self = shared_from_this()]() { self->finish(); }, nullptr);
|
|
1893
1684
|
#endif
|
|
1894
1685
|
state = StateFinished;
|
|
1895
1686
|
}
|
|
1896
1687
|
|
|
1897
|
-
|
|
1898
|
-
for(const auto& conn : _connections)
|
|
1688
|
+
for (const auto& connection : _connections)
|
|
1899
1689
|
{
|
|
1900
|
-
|
|
1690
|
+
connection->destroy(ConnectionI::ObjectAdapterDeactivated);
|
|
1901
1691
|
}
|
|
1902
|
-
#else
|
|
1903
|
-
for_each(_connections.begin(), _connections.end(),
|
|
1904
|
-
bind2nd(Ice::voidMemFun1(&ConnectionI::destroy), ConnectionI::ObjectAdapterDeactivated));
|
|
1905
|
-
#endif
|
|
1906
1692
|
break;
|
|
1907
1693
|
}
|
|
1908
1694
|
|
|
@@ -1914,7 +1700,7 @@ IceInternal::IncomingConnectionFactory::setState(State state)
|
|
|
1914
1700
|
}
|
|
1915
1701
|
|
|
1916
1702
|
_state = state;
|
|
1917
|
-
|
|
1703
|
+
_conditionVariable.notify_all();
|
|
1918
1704
|
}
|
|
1919
1705
|
|
|
1920
1706
|
void
|
|
@@ -1923,32 +1709,32 @@ IceInternal::IncomingConnectionFactory::createAcceptor()
|
|
|
1923
1709
|
try
|
|
1924
1710
|
{
|
|
1925
1711
|
assert(!_acceptorStarted);
|
|
1926
|
-
_acceptor = _endpoint->acceptor(_adapter->getName());
|
|
1712
|
+
_acceptor = _endpoint->acceptor(_adapter->getName(), _adapter->serverAuthenticationOptions());
|
|
1927
1713
|
assert(_acceptor);
|
|
1928
|
-
if(_instance->traceLevels()->network >= 2)
|
|
1714
|
+
if (_instance->traceLevels()->network >= 2)
|
|
1929
1715
|
{
|
|
1930
1716
|
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1931
1717
|
out << "attempting to bind to " << _endpoint->protocol() << " socket " << _acceptor->toString();
|
|
1932
1718
|
}
|
|
1933
1719
|
|
|
1934
1720
|
_endpoint = _acceptor->listen();
|
|
1935
|
-
if(_instance->traceLevels()->network >= 1)
|
|
1721
|
+
if (_instance->traceLevels()->network >= 1)
|
|
1936
1722
|
{
|
|
1937
1723
|
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1938
1724
|
out << "listening for " << _endpoint->protocol() << " connections\n" << _acceptor->toDetailedString();
|
|
1939
1725
|
}
|
|
1940
1726
|
|
|
1941
|
-
_adapter->getThreadPool()->initialize(
|
|
1942
|
-
if(_state == StateActive)
|
|
1727
|
+
_adapter->getThreadPool()->initialize(shared_from_this());
|
|
1728
|
+
if (_state == StateActive)
|
|
1943
1729
|
{
|
|
1944
|
-
_adapter->getThreadPool()->_register(
|
|
1730
|
+
_adapter->getThreadPool()->_register(shared_from_this(), SocketOperationRead);
|
|
1945
1731
|
}
|
|
1946
1732
|
|
|
1947
1733
|
_acceptorStarted = true;
|
|
1948
1734
|
}
|
|
1949
|
-
catch(const Ice::Exception&)
|
|
1735
|
+
catch (const Ice::Exception&)
|
|
1950
1736
|
{
|
|
1951
|
-
if(_acceptor)
|
|
1737
|
+
if (_acceptor)
|
|
1952
1738
|
{
|
|
1953
1739
|
_acceptor->close();
|
|
1954
1740
|
}
|
|
@@ -1961,7 +1747,7 @@ IceInternal::IncomingConnectionFactory::closeAcceptor()
|
|
|
1961
1747
|
{
|
|
1962
1748
|
assert(_acceptor);
|
|
1963
1749
|
|
|
1964
|
-
if(_instance->traceLevels()->network >= 1)
|
|
1750
|
+
if (_instance->traceLevels()->network >= 1)
|
|
1965
1751
|
{
|
|
1966
1752
|
Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
|
|
1967
1753
|
out << "stopping to accept " << _endpoint->protocol() << " connections at " << _acceptor->toString();
|