zeroc-ice 3.6.5 → 3.7.0
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/BZIP2_LICENSE +42 -0
- data/ICE_LICENSE +17 -17
- data/LICENSE +12 -12
- data/bin/slice2rb +1 -1
- data/ext/Communicator.cpp +150 -53
- data/ext/Communicator.h +1 -1
- data/ext/Config.h +2 -12
- data/ext/Connection.cpp +89 -68
- data/ext/Connection.h +1 -1
- data/ext/Endpoint.cpp +16 -45
- data/ext/Endpoint.h +1 -1
- data/ext/ImplicitContext.cpp +1 -5
- data/ext/ImplicitContext.h +1 -1
- data/ext/Init.cpp +4 -1
- data/ext/Logger.cpp +1 -1
- data/ext/Logger.h +1 -1
- data/ext/Operation.cpp +33 -44
- data/ext/Operation.h +1 -1
- data/ext/Properties.cpp +1 -1
- data/ext/Properties.h +1 -1
- data/ext/Proxy.cpp +22 -57
- data/ext/Proxy.h +1 -1
- data/ext/Slice.cpp +5 -5
- data/ext/Slice.h +1 -1
- data/ext/Types.cpp +244 -171
- data/ext/Types.h +118 -66
- data/ext/Util.cpp +13 -9
- data/ext/Util.h +10 -10
- data/ext/ValueFactoryManager.cpp +445 -0
- data/ext/ValueFactoryManager.h +100 -0
- data/ext/extconf.rb +47 -45
- data/ext/ice/bzip2/blocksort.c +1094 -0
- data/ext/ice/bzip2/bzlib.c +1572 -0
- data/ext/ice/bzip2/bzlib.h +282 -0
- data/ext/ice/bzip2/bzlib_private.h +509 -0
- data/ext/ice/bzip2/compress.c +672 -0
- data/ext/ice/bzip2/crctable.c +104 -0
- data/ext/ice/bzip2/decompress.c +646 -0
- data/ext/ice/bzip2/huffman.c +205 -0
- data/ext/ice/bzip2/randtable.c +84 -0
- data/ext/ice/cpp/include/Ice/Application.h +77 -60
- data/ext/ice/cpp/include/Ice/AsyncResult.h +34 -318
- data/ext/ice/cpp/include/Ice/AsyncResultF.h +4 -2
- data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +5 -10
- data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
- data/ext/ice/cpp/include/Ice/Buffer.h +10 -10
- data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +14 -12
- data/ext/ice/cpp/include/Ice/Comparable.h +130 -0
- data/ext/ice/cpp/include/Ice/Config.h +7 -36
- data/ext/ice/cpp/include/Ice/ConnectionAsync.h +107 -11
- data/ext/ice/cpp/include/Ice/ConnectionIF.h +5 -1
- data/ext/ice/cpp/include/Ice/ConsoleUtil.h +28 -0
- data/ext/ice/cpp/include/Ice/{DefaultObjectFactory.h → DefaultValueFactory.h} +28 -14
- data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +4 -6
- data/ext/ice/cpp/include/Ice/Dispatcher.h +14 -13
- data/ext/ice/cpp/include/Ice/DynamicLibrary.h +7 -5
- data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
- data/ext/ice/cpp/include/Ice/Exception.h +66 -56
- data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +69 -0
- data/ext/ice/cpp/include/Ice/FactoryTable.h +11 -12
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +27 -25
- data/ext/ice/cpp/include/Ice/Format.h +6 -1
- data/ext/ice/cpp/include/Ice/Functional.h +33 -33
- data/ext/ice/cpp/include/Ice/GCObject.h +9 -5
- data/ext/ice/cpp/include/Ice/Handle.h +6 -11
- data/ext/ice/cpp/include/Ice/Ice.h +9 -5
- data/ext/ice/cpp/include/{IceUtil → Ice}/IconvStringConverter.h +108 -62
- data/ext/ice/cpp/include/Ice/Incoming.h +109 -33
- data/ext/ice/cpp/include/Ice/IncomingAsync.h +63 -23
- data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +7 -1
- data/ext/ice/cpp/include/Ice/Initialize.h +178 -38
- data/ext/ice/cpp/include/Ice/InputStream.h +994 -0
- data/ext/ice/cpp/include/Ice/InstanceF.h +1 -2
- data/ext/ice/cpp/include/Ice/InterfaceByValue.h +46 -0
- data/ext/ice/cpp/include/Ice/LocalObject.h +9 -9
- data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
- data/ext/ice/cpp/include/Ice/LoggerUtil.h +20 -14
- data/ext/ice/cpp/include/Ice/MetricsAdminI.h +114 -65
- data/ext/ice/cpp/include/Ice/MetricsFunctional.h +23 -5
- data/ext/ice/cpp/include/Ice/MetricsObserverI.h +99 -26
- data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +17 -4
- data/ext/ice/cpp/include/Ice/Object.h +105 -56
- data/ext/ice/cpp/include/Ice/ObjectF.h +8 -3
- data/ext/ice/cpp/include/Ice/ObserverHelper.h +18 -8
- data/ext/ice/cpp/include/Ice/Optional.h +1084 -0
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +655 -84
- data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +12 -6
- data/ext/ice/cpp/include/Ice/OutputStream.h +753 -0
- data/ext/ice/cpp/include/Ice/Protocol.h +19 -12
- data/ext/ice/cpp/include/Ice/Proxy.h +1329 -717
- data/ext/ice/cpp/include/Ice/ProxyF.h +11 -33
- data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
- data/ext/ice/cpp/include/Ice/ProxyHandle.h +34 -50
- data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
- data/ext/ice/cpp/include/Ice/RegisterPlugins.h +22 -3
- data/ext/ice/cpp/include/Ice/RequestHandlerF.h +10 -4
- data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +6 -1
- data/ext/ice/cpp/include/{IceUtil → Ice}/SHA1.h +16 -16
- data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
- data/ext/ice/cpp/include/Ice/Service.h +13 -18
- data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
- data/ext/ice/cpp/include/Ice/SlicedData.h +46 -20
- data/ext/ice/cpp/include/Ice/SlicedDataF.h +14 -6
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +159 -49
- data/ext/ice/cpp/include/Ice/StringConverter.h +52 -0
- data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
- data/{slice/Ice/ObjectFactoryF.ice → ext/ice/cpp/include/Ice/UUID.h} +9 -7
- data/ext/ice/cpp/include/{IceUtil → Ice}/UniquePtr.h +21 -22
- data/ext/ice/cpp/include/Ice/UniqueRef.h +98 -0
- data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +40 -8
- data/ext/ice/cpp/include/Ice/Value.h +104 -0
- data/{slice/Freeze/ConnectionF.ice → ext/ice/cpp/include/Ice/ValueF.h} +11 -7
- data/ext/ice/cpp/include/IceSSL/Config.h +8 -23
- data/ext/ice/cpp/include/IceSSL/IceSSL.h +17 -6
- data/ext/ice/cpp/include/IceSSL/OpenSSL.h +130 -0
- data/ext/ice/cpp/include/IceSSL/Plugin.h +172 -259
- data/ext/ice/cpp/include/IceSSL/SChannel.h +66 -0
- data/ext/ice/cpp/include/IceSSL/SecureTransport.h +66 -0
- data/ext/ice/cpp/include/IceSSL/UWP.h +58 -0
- data/ext/ice/cpp/include/IceUtil/Atomic.h +8 -10
- data/ext/ice/cpp/include/IceUtil/Cond.h +17 -18
- data/ext/ice/cpp/include/IceUtil/Config.h +138 -39
- data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +97 -0
- data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +5 -5
- data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +23 -17
- data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -3
- data/ext/ice/cpp/include/IceUtil/Exception.h +157 -67
- data/ext/ice/cpp/include/IceUtil/FileUtil.h +148 -0
- data/ext/ice/cpp/include/IceUtil/Functional.h +1 -2
- data/ext/ice/cpp/include/IceUtil/Handle.h +11 -11
- data/ext/ice/cpp/include/IceUtil/IceUtil.h +4 -10
- data/ext/ice/cpp/include/IceUtil/InputUtil.h +3 -3
- data/ext/ice/cpp/include/IceUtil/Iterator.h +2 -2
- data/ext/ice/cpp/include/IceUtil/Lock.h +8 -10
- data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -2
- data/ext/ice/cpp/include/IceUtil/Mutex.h +17 -11
- data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +2 -2
- data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
- data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +4 -4
- data/ext/ice/cpp/include/IceUtil/Optional.h +32 -18
- data/ext/ice/cpp/include/IceUtil/Options.h +17 -18
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +55 -29
- data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +6 -6
- data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +11 -10
- data/ext/ice/cpp/include/IceUtil/Random.h +3 -3
- data/ext/ice/cpp/include/IceUtil/RecMutex.h +7 -8
- data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +58 -0
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +1 -9
- data/ext/ice/cpp/include/IceUtil/ScopedArray.h +8 -2
- data/ext/ice/cpp/include/IceUtil/Shared.h +5 -7
- data/ext/ice/cpp/{src → include}/IceUtil/StopWatch.h +2 -2
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +77 -72
- data/ext/ice/cpp/include/IceUtil/StringUtil.h +32 -21
- data/ext/ice/cpp/include/IceUtil/Thread.h +10 -12
- data/ext/ice/cpp/include/IceUtil/ThreadException.h +33 -42
- data/ext/ice/cpp/include/IceUtil/Time.h +3 -3
- data/ext/ice/cpp/include/IceUtil/Timer.h +14 -13
- data/ext/ice/cpp/include/IceUtil/UUID.h +2 -2
- data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
- data/ext/ice/cpp/include/{Ice → generated/Ice}/BuiltinSequences.h +41 -8
- data/ext/ice/cpp/include/generated/Ice/Communicator.h +364 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/CommunicatorF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Connection.h +872 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ConnectionF.h +46 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Current.h +71 -8
- data/ext/ice/cpp/include/generated/Ice/Endpoint.h +582 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointF.h +62 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointTypes.h +31 -16
- data/ext/ice/cpp/include/{Ice → generated/Ice}/FacetMap.h +23 -8
- data/ext/ice/cpp/include/generated/Ice/Identity.h +221 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContext.h +72 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContextF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +602 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/InstrumentationF.h +54 -8
- data/ext/ice/cpp/include/generated/Ice/LocalException.h +2802 -0
- data/ext/ice/cpp/include/generated/Ice/Locator.h +2036 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/LocatorF.h +53 -12
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Logger.h +71 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/LoggerF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Metrics.h +2649 -0
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +302 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ObjectAdapterF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +142 -0
- data/ext/ice/cpp/include/generated/Ice/Plugin.h +197 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/PluginF.h +43 -8
- data/ext/ice/cpp/include/generated/Ice/Process.h +536 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ProcessF.h +45 -10
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Properties.h +88 -21
- data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +749 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/PropertiesF.h +48 -10
- data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1449 -0
- data/ext/ice/cpp/include/generated/Ice/Router.h +1032 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/RouterF.h +45 -10
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocator.h +65 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocatorF.h +40 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/SliceChecksumDict.h +23 -8
- data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +169 -0
- data/ext/ice/cpp/include/generated/Ice/Version.h +334 -0
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +172 -0
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +98 -0
- data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +156 -0
- data/ext/ice/cpp/src/Ice/ACM.cpp +18 -14
- data/ext/ice/cpp/src/Ice/ACM.h +9 -2
- data/ext/ice/cpp/{include → src}/Ice/ACMF.h +10 -5
- data/ext/ice/cpp/src/Ice/Acceptor.cpp +6 -1
- data/ext/ice/cpp/src/Ice/Acceptor.h +4 -3
- data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.cpp +9 -9
- data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.h +7 -7
- data/ext/ice/cpp/src/Ice/AsyncResult.cpp +15 -538
- data/ext/ice/cpp/src/Ice/Base64.cpp +11 -11
- data/ext/ice/cpp/src/Ice/Base64.h +1 -1
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +40 -12
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +15 -10
- data/ext/ice/cpp/src/Ice/Buffer.cpp +74 -12
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +20 -6
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +85 -190
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +17 -18
- data/ext/ice/cpp/src/Ice/Communicator.cpp +39 -8
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +271 -104
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +84 -28
- data/ext/ice/cpp/src/{IceUtil → Ice}/Cond.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +58 -125
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +11 -22
- data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +6 -2
- data/ext/ice/cpp/src/Ice/Connection.cpp +88 -8
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +158 -80
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +41 -23
- data/ext/ice/cpp/{include → src}/Ice/ConnectionFactoryF.h +8 -3
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +707 -653
- data/ext/ice/cpp/src/Ice/ConnectionI.h +97 -69
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +2 -15
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +4 -3
- data/ext/ice/cpp/src/Ice/Connector.cpp +6 -1
- data/ext/ice/cpp/src/Ice/Connector.h +4 -3
- data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/CountDownLatch.cpp +4 -4
- data/ext/ice/cpp/src/Ice/Current.cpp +29 -6
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +6 -5
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
- data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +5 -25
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +29 -19
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +85 -6
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +152 -1
- data/ext/ice/cpp/src/Ice/EndpointFactory.h +72 -6
- data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +35 -19
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +10 -4
- data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointI.cpp +17 -1
- data/ext/ice/cpp/src/Ice/EndpointI.h +35 -9
- data/ext/ice/cpp/src/Ice/EndpointIF.h +18 -5
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +18 -6
- data/ext/ice/cpp/src/Ice/EventHandler.cpp +6 -4
- data/ext/ice/cpp/src/Ice/EventHandler.h +13 -8
- data/ext/ice/cpp/src/Ice/EventHandlerF.h +5 -2
- data/ext/ice/cpp/src/Ice/Exception.cpp +95 -86
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +20 -6
- data/ext/ice/cpp/src/Ice/FactoryTable.cpp +37 -28
- data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -4
- data/ext/ice/cpp/src/Ice/GCObject.cpp +28 -25
- data/ext/ice/cpp/src/Ice/HashUtil.h +2 -3
- data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -2
- data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +92 -53
- data/ext/ice/cpp/src/Ice/IPEndpointI.h +19 -10
- data/ext/ice/cpp/src/Ice/IPEndpointIF.h +6 -2
- data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +56 -0
- data/ext/ice/cpp/src/Ice/Identity.cpp +24 -10
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +14 -14
- data/ext/ice/cpp/src/Ice/ImplicitContextI.h +7 -5
- data/ext/ice/cpp/src/Ice/Incoming.cpp +276 -245
- data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +104 -209
- data/ext/ice/cpp/src/Ice/IncomingRequest.h +5 -4
- data/ext/ice/cpp/src/Ice/Initialize.cpp +299 -172
- data/ext/ice/cpp/src/Ice/InputStream.cpp +2773 -0
- data/ext/ice/cpp/src/Ice/Instance.cpp +191 -231
- data/ext/ice/cpp/src/Ice/Instance.h +30 -18
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +106 -7
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +117 -99
- data/ext/ice/cpp/src/Ice/InstrumentationI.h +30 -31
- data/ext/ice/cpp/src/Ice/LocalException.cpp +1190 -416
- data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Locator.cpp +1167 -1215
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +129 -163
- data/ext/ice/cpp/src/Ice/LocatorInfo.h +29 -29
- data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
- data/ext/ice/cpp/src/Ice/Logger.cpp +35 -5
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +178 -73
- data/ext/ice/cpp/src/Ice/LoggerAdminI.h +4 -4
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +14 -44
- data/ext/ice/cpp/src/Ice/LoggerI.h +7 -13
- data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +10 -12
- data/ext/ice/cpp/src/Ice/Metrics.cpp +1059 -1069
- data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +49 -19
- data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Network.cpp +534 -170
- data/ext/ice/cpp/src/Ice/Network.h +100 -23
- data/ext/ice/cpp/src/Ice/NetworkF.h +2 -2
- data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +21 -14
- data/ext/ice/cpp/src/Ice/NetworkProxy.h +5 -2
- data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
- data/ext/ice/cpp/src/Ice/Object.cpp +217 -221
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -6
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +35 -14
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +13 -7
- data/ext/ice/cpp/{include → src}/Ice/ObjectAdapterFactoryF.h +5 -1
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +184 -58
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +32 -26
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +9 -32
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +40 -18
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +14 -5
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +803 -365
- data/ext/ice/cpp/src/Ice/OutputStream.cpp +1399 -0
- data/ext/ice/cpp/src/Ice/Plugin.cpp +45 -6
- data/ext/ice/cpp/src/Ice/PluginF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +13 -13
- data/ext/ice/cpp/src/Ice/PluginManagerI.h +5 -6
- data/ext/ice/cpp/src/Ice/Process.cpp +256 -114
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/Properties.cpp +38 -8
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +340 -328
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +81 -17
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +29 -5
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/PropertiesI.cpp +25 -26
- data/ext/ice/cpp/src/Ice/PropertiesI.h +8 -11
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +107 -50
- data/ext/ice/cpp/src/Ice/PropertyNames.h +4 -2
- data/ext/ice/cpp/src/Ice/Protocol.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +37 -2
- data/ext/ice/cpp/src/Ice/ProtocolInstance.h +9 -20
- data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +6 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +3 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
- data/ext/ice/cpp/src/Ice/Proxy.cpp +690 -964
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +23 -32
- data/ext/ice/cpp/src/Ice/ProxyFactory.h +16 -11
- data/ext/ice/cpp/src/Ice/Reference.cpp +75 -69
- data/ext/ice/cpp/src/Ice/Reference.h +27 -22
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +18 -21
- data/ext/ice/cpp/src/Ice/ReferenceFactory.h +12 -12
- data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +18 -4
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +672 -552
- data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
- data/ext/ice/cpp/src/Ice/RequestHandler.cpp +5 -3
- data/ext/ice/cpp/src/Ice/RequestHandler.h +10 -13
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +10 -6
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +2 -2
- data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +3 -6
- data/ext/ice/cpp/src/Ice/ResponseHandler.h +16 -7
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +6 -12
- data/ext/ice/cpp/src/Ice/RetryQueue.h +7 -6
- data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
- data/ext/ice/cpp/src/Ice/Router.cpp +523 -474
- data/ext/ice/cpp/src/Ice/RouterF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/RouterInfo.cpp +91 -70
- data/ext/ice/cpp/src/Ice/RouterInfo.h +43 -32
- data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/SHA1.cpp +21 -21
- data/ext/ice/cpp/src/Ice/Selector.cpp +989 -923
- data/ext/ice/cpp/src/Ice/Selector.h +100 -147
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ServantManager.cpp +9 -9
- data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
- data/ext/ice/cpp/src/Ice/SharedContext.h +2 -2
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +20 -6
- data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +2 -2
- data/ext/ice/cpp/src/Ice/SlicedData.cpp +72 -20
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +173 -18
- data/ext/ice/cpp/src/Ice/StreamSocket.h +13 -4
- data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +48 -17
- data/ext/ice/cpp/src/Ice/StringUtil.h +35 -0
- data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +8 -4
- data/ext/ice/cpp/src/Ice/SysLoggerI.h +2 -3
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +158 -32
- data/ext/ice/cpp/src/Ice/TcpAcceptor.h +12 -5
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -7
- data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -2
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +40 -32
- data/ext/ice/cpp/src/Ice/TcpEndpointI.h +11 -8
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +12 -27
- data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -10
- data/ext/ice/cpp/src/{IceUtil → Ice}/Thread.cpp +24 -41
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +175 -267
- data/ext/ice/cpp/src/Ice/ThreadPool.h +38 -43
- data/ext/ice/cpp/src/{IceUtil → Ice}/Timer.cpp +28 -21
- data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
- data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
- data/ext/ice/cpp/src/Ice/TraceLevelsF.h +2 -2
- data/ext/ice/cpp/src/Ice/TraceUtil.cpp +53 -31
- data/ext/ice/cpp/src/Ice/TraceUtil.h +13 -6
- data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Transceiver.h +8 -7
- data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
- data/ext/ice/cpp/src/Ice/UdpConnector.cpp +2 -8
- data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -2
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +92 -31
- data/ext/ice/cpp/src/Ice/UdpEndpointI.h +12 -4
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +150 -179
- data/ext/ice/cpp/src/Ice/UdpTransceiver.h +15 -17
- data/ext/ice/cpp/src/Ice/Value.cpp +81 -0
- data/ext/ice/cpp/src/Ice/ValueFactory.cpp +84 -0
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +70 -0
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +42 -0
- data/ext/ice/cpp/src/Ice/Version.cpp +24 -14
- data/ext/ice/cpp/src/Ice/VirtualShared.h +43 -0
- data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +3 -9
- data/ext/ice/cpp/src/Ice/WSAcceptor.h +3 -7
- data/ext/ice/cpp/src/Ice/WSConnector.cpp +5 -11
- data/ext/ice/cpp/src/Ice/WSConnector.h +3 -6
- data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +185 -80
- data/ext/ice/cpp/src/Ice/WSEndpoint.h +21 -31
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +41 -37
- data/ext/ice/cpp/src/Ice/WSTransceiver.h +7 -21
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +526 -264
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +341 -455
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +86 -26
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +59 -23
- data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +315 -61
- data/ext/ice/cpp/src/IceDiscovery/LookupI.h +83 -36
- data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +57 -59
- data/ext/ice/cpp/src/IceDiscovery/PluginI.h +3 -3
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +396 -159
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +251 -355
- data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +52 -0
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +526 -131
- data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +19 -165
- data/ext/ice/cpp/src/IceSSL/AcceptorI.h +8 -17
- data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +284 -0
- data/ext/ice/cpp/src/IceSSL/CertificateI.h +69 -0
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +39 -11
- data/ext/ice/cpp/src/{Ice/ObjectFactoryF.cpp → IceSSL/ConnectionInfoF.cpp} +31 -9
- data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +14 -56
- data/ext/ice/cpp/src/IceSSL/ConnectorI.h +6 -13
- data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +205 -197
- data/ext/ice/cpp/src/IceSSL/EndpointI.h +41 -33
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +39 -10
- data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
- data/ext/ice/cpp/src/IceSSL/Instance.h +7 -7
- data/ext/ice/cpp/src/IceSSL/InstanceF.h +11 -7
- data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +588 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +117 -152
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +64 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +32 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +132 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +400 -89
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +36 -21
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +291 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +63 -0
- data/ext/ice/cpp/src/IceSSL/PluginI.cpp +71 -41
- data/ext/ice/cpp/src/IceSSL/PluginI.h +13 -18
- data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +9 -54
- data/ext/ice/cpp/src/IceSSL/RFC2253.h +7 -7
- data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +585 -0
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +491 -75
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +126 -0
- data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +32 -0
- data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +78 -0
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +126 -169
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +19 -22
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +79 -74
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +24 -187
- data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +4 -19
- data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +862 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +56 -214
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +60 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +31 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +80 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +137 -144
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +25 -28
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +857 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +46 -0
- data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +9 -13
- data/ext/ice/cpp/src/IceSSL/TrustManager.h +4 -4
- data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +3 -3
- data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +271 -0
- data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +343 -0
- data/ext/ice/cpp/src/IceSSL/UWPEngine.h +46 -0
- data/ext/ice/cpp/{include/Ice/ObjectFactoryManagerF.h → src/IceSSL/UWPEngineF.h} +13 -8
- data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +94 -0
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +388 -0
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +76 -0
- data/ext/ice/cpp/src/IceSSL/Util.cpp +66 -1256
- data/ext/ice/cpp/src/IceSSL/Util.h +48 -137
- data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +162 -0
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +22 -22
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +34 -26
- data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +20 -31
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +25 -116
- data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Options.cpp +23 -46
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +7 -6
- data/ext/ice/cpp/src/IceUtil/Random.cpp +13 -13
- data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +3 -9
- data/ext/ice/cpp/src/IceUtil/Shared.cpp +8 -3
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +501 -264
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +540 -235
- data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +37 -74
- data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +10 -10
- data/ext/ice/cpp/src/IceUtil/Unicode.cpp +98 -97
- data/ext/ice/cpp/src/IceUtil/Unicode.h +21 -35
- data/ext/ice/cpp/src/IceUtil/UtilException.cpp +838 -0
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +815 -163
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +76 -0
- data/ext/ice/cpp/src/Slice/Checksum.cpp +2 -2
- data/ext/ice/cpp/{include → src}/Slice/Checksum.h +2 -2
- data/ext/ice/cpp/src/Slice/FileTracker.cpp +25 -78
- data/ext/ice/cpp/{include → src}/Slice/FileTracker.h +9 -9
- data/ext/ice/cpp/src/Slice/Grammar.cpp +1994 -1943
- data/ext/ice/cpp/src/Slice/Grammar.h +44 -24
- data/ext/ice/cpp/src/Slice/GrammarUtil.h +14 -14
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +2658 -1927
- data/ext/ice/cpp/{include → src}/Slice/JavaUtil.h +178 -59
- data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
- data/ext/ice/cpp/src/Slice/MD5.h +1 -1
- data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -1
- data/ext/ice/cpp/src/Slice/MD5I.h +1 -1
- data/ext/ice/cpp/src/Slice/PHPUtil.cpp +12 -15
- data/ext/ice/cpp/{include → src}/Slice/PHPUtil.h +6 -15
- data/ext/ice/cpp/src/Slice/Parser.cpp +802 -307
- data/ext/ice/cpp/{include → src}/Slice/Parser.h +76 -84
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +43 -21
- data/ext/ice/cpp/{include → src}/Slice/Preprocessor.h +7 -12
- data/ext/ice/cpp/src/Slice/Python.cpp +207 -86
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +683 -679
- data/ext/ice/cpp/{include → src}/Slice/PythonUtil.h +19 -8
- data/ext/ice/cpp/src/Slice/Ruby.cpp +38 -34
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +177 -445
- data/ext/ice/cpp/{include → src}/Slice/RubyUtil.h +6 -6
- data/ext/ice/cpp/src/Slice/Scanner.cpp +218 -306
- data/ext/ice/cpp/src/Slice/{Util.cpp → SliceUtil.cpp} +37 -64
- data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +374 -0
- data/ext/ice/cpp/src/Slice/Util.h +54 -0
- data/ext/ice/mcpp/Makefile +5 -2
- data/ice.gemspec +2 -7
- data/lib/Glacier2.rb +1 -1
- data/lib/Glacier2/Metrics.rb +7 -46
- data/lib/Glacier2/PermissionsVerifier.rb +24 -95
- data/lib/Glacier2/PermissionsVerifierF.rb +3 -3
- data/lib/Glacier2/Router.rb +32 -74
- data/lib/Glacier2/RouterF.rb +3 -3
- data/lib/Glacier2/SSLInfo.rb +4 -7
- data/lib/Glacier2/Session.rb +88 -307
- data/lib/Ice.rb +83 -52
- data/lib/Ice/BuiltinSequences.rb +4 -4
- data/lib/Ice/Communicator.rb +56 -58
- data/lib/Ice/CommunicatorF.rb +3 -3
- data/lib/Ice/Connection.rb +153 -162
- data/lib/Ice/ConnectionF.rb +3 -3
- data/lib/Ice/Current.rb +4 -11
- data/lib/Ice/Endpoint.rb +57 -133
- data/lib/Ice/EndpointF.rb +3 -3
- data/lib/Ice/EndpointTypes.rb +3 -7
- data/lib/Ice/FacetMap.rb +4 -4
- data/lib/Ice/Identity.rb +5 -8
- data/lib/Ice/ImplicitContext.rb +5 -34
- data/lib/Ice/ImplicitContextF.rb +3 -3
- data/lib/Ice/Instrumentation.rb +23 -275
- data/lib/Ice/InstrumentationF.rb +3 -3
- data/lib/Ice/LocalException.rb +95 -141
- data/lib/Ice/Locator.rb +51 -165
- data/lib/Ice/LocatorF.rb +3 -3
- data/lib/Ice/Logger.rb +5 -34
- data/lib/Ice/LoggerF.rb +3 -3
- data/lib/Ice/Metrics.rb +61 -416
- data/lib/Ice/ObjectAdapter.rb +34 -0
- data/lib/Ice/ObjectAdapterF.rb +3 -3
- data/lib/Ice/ObjectFactory.rb +5 -30
- data/lib/Ice/Plugin.rb +7 -60
- data/lib/Ice/PluginF.rb +3 -3
- data/lib/Ice/Process.rb +16 -52
- data/lib/Ice/ProcessF.rb +3 -3
- data/lib/Ice/Properties.rb +5 -41
- data/lib/Ice/PropertiesAdmin.rb +19 -56
- data/lib/Ice/PropertiesF.rb +3 -3
- data/lib/Ice/RemoteLogger.rb +34 -115
- data/lib/Ice/Router.rb +29 -101
- data/lib/Ice/RouterF.rb +3 -3
- data/lib/Ice/ServantLocator.rb +31 -0
- data/lib/Ice/{ObjectFactoryF.rb → ServantLocatorF.rb} +6 -6
- data/lib/Ice/SliceChecksumDict.rb +3 -3
- data/lib/Ice/ValueFactory.rb +33 -0
- data/lib/Ice/Version.rb +5 -11
- data/lib/IceBox.rb +1 -1
- data/lib/IceBox/IceBox.rb +44 -148
- data/lib/IceGrid.rb +1 -4
- data/lib/IceGrid/Admin.rb +551 -427
- data/lib/IceGrid/Descriptor.rb +62 -529
- data/lib/IceGrid/Exception.rb +24 -45
- data/lib/IceGrid/FileParser.rb +14 -50
- data/lib/IceGrid/PluginFacade.rb +40 -0
- data/lib/IceGrid/Registry.rb +151 -58
- data/lib/IceGrid/Session.rb +25 -64
- data/lib/IceGrid/UserAccountMapper.rb +14 -50
- data/lib/IcePatch2.rb +1 -1
- data/lib/IcePatch2/FileInfo.rb +5 -11
- data/lib/IcePatch2/FileServer.rb +33 -76
- data/lib/IceStorm.rb +1 -1
- data/lib/IceStorm/IceStorm.rb +79 -206
- data/lib/IceStorm/Metrics.rb +11 -89
- data/slice/Glacier2/Metrics.ice +8 -4
- data/slice/Glacier2/PermissionsVerifier.ice +10 -7
- data/slice/Glacier2/PermissionsVerifierF.ice +7 -4
- data/slice/Glacier2/Router.ice +10 -8
- data/slice/Glacier2/RouterF.ice +7 -4
- data/slice/Glacier2/SSLInfo.ice +8 -5
- data/slice/Glacier2/Session.ice +15 -13
- data/slice/Ice/BuiltinSequences.ice +7 -4
- data/slice/Ice/Communicator.ice +141 -66
- data/slice/Ice/CommunicatorF.ice +7 -4
- data/slice/Ice/Connection.ice +183 -86
- data/slice/Ice/ConnectionF.ice +7 -4
- data/slice/Ice/Current.ice +13 -9
- data/slice/Ice/Endpoint.ice +63 -14
- data/slice/Ice/EndpointF.ice +7 -4
- data/slice/Ice/EndpointTypes.ice +8 -6
- data/slice/Ice/FacetMap.ice +7 -4
- data/slice/Ice/Identity.ice +13 -5
- data/slice/Ice/ImplicitContext.ice +20 -18
- data/slice/Ice/ImplicitContextF.ice +7 -4
- data/slice/Ice/Instrumentation.ice +20 -19
- data/slice/Ice/InstrumentationF.ice +8 -5
- data/slice/Ice/LocalException.ice +87 -87
- data/slice/Ice/Locator.ice +19 -18
- data/slice/Ice/LocatorF.ice +7 -4
- data/slice/Ice/Logger.ice +9 -7
- data/slice/Ice/LoggerF.ice +7 -4
- data/slice/Ice/Metrics.ice +18 -14
- data/slice/Ice/ObjectAdapter.ice +30 -13
- data/slice/Ice/ObjectAdapterF.ice +7 -4
- data/slice/Ice/ObjectFactory.ice +15 -12
- data/slice/Ice/Plugin.ice +9 -6
- data/slice/Ice/PluginF.ice +8 -5
- data/slice/Ice/Process.ice +9 -6
- data/slice/Ice/ProcessF.ice +7 -4
- data/slice/Ice/Properties.ice +15 -12
- data/slice/Ice/PropertiesAdmin.ice +9 -5
- data/slice/Ice/PropertiesF.ice +7 -4
- data/slice/Ice/RemoteLogger.ice +33 -24
- data/slice/Ice/Router.ice +16 -7
- data/slice/Ice/RouterF.ice +7 -4
- data/slice/Ice/ServantLocator.ice +13 -10
- data/slice/Ice/ServantLocatorF.ice +7 -4
- data/slice/Ice/SliceChecksumDict.ice +7 -4
- data/slice/Ice/ValueFactory.ice +127 -0
- data/slice/Ice/Version.ice +9 -5
- data/slice/IceBT/ConnectionInfo.ice +53 -0
- data/slice/IceBT/EndpointInfo.ice +51 -0
- data/slice/IceBT/Types.ice +39 -0
- data/slice/IceBox/IceBox.ice +20 -21
- data/slice/IceDiscovery/IceDiscovery.ice +9 -5
- data/slice/IceGrid/Admin.ice +390 -30
- data/slice/IceGrid/Descriptor.ice +37 -29
- data/slice/IceGrid/Exception.ice +33 -27
- data/slice/IceGrid/FileParser.ice +9 -6
- data/slice/IceGrid/PluginFacade.ice +11 -9
- data/slice/IceGrid/Registry.ice +139 -16
- data/slice/IceGrid/Session.ice +10 -8
- data/slice/IceGrid/UserAccountMapper.ice +9 -6
- data/slice/IceIAP/ConnectionInfo.ice +70 -0
- data/slice/IceIAP/EndpointInfo.ice +64 -0
- data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +9 -7
- data/slice/IcePatch2/FileInfo.ice +9 -8
- data/slice/IcePatch2/FileServer.ice +17 -13
- data/slice/IceSSL/ConnectionInfo.ice +14 -17
- data/slice/IceSSL/ConnectionInfoF.ice +24 -0
- data/slice/IceSSL/EndpointInfo.ice +9 -30
- data/slice/IceStorm/IceStorm.ice +22 -18
- data/slice/IceStorm/Metrics.ice +9 -5
- metadata +154 -120
- data/ext/ObjectFactory.cpp +0 -140
- data/ext/ObjectFactory.h +0 -50
- data/ext/ice/cpp/include/Ice/BasicStream.h +0 -1335
- data/ext/ice/cpp/include/Ice/Communicator.h +0 -200
- data/ext/ice/cpp/include/Ice/Connection.h +0 -497
- data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +0 -62
- data/ext/ice/cpp/include/Ice/Endpoint.h +0 -341
- data/ext/ice/cpp/include/Ice/Identity.h +0 -168
- data/ext/ice/cpp/include/Ice/Instrumentation.h +0 -365
- data/ext/ice/cpp/include/Ice/LocalException.h +0 -1030
- data/ext/ice/cpp/include/Ice/Locator.h +0 -2193
- data/ext/ice/cpp/include/Ice/Metrics.h +0 -2974
- data/ext/ice/cpp/include/Ice/ObjectAdapter.h +0 -168
- data/ext/ice/cpp/include/Ice/ObjectFactory.h +0 -92
- data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +0 -66
- data/ext/ice/cpp/include/Ice/Outgoing.h +0 -225
- data/ext/ice/cpp/include/Ice/Plugin.h +0 -125
- data/ext/ice/cpp/include/Ice/Process.h +0 -574
- data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +0 -830
- data/ext/ice/cpp/include/Ice/RemoteLogger.h +0 -1500
- data/ext/ice/cpp/include/Ice/Router.h +0 -1159
- data/ext/ice/cpp/include/Ice/Stream.h +0 -447
- data/ext/ice/cpp/include/Ice/StreamF.h +0 -30
- data/ext/ice/cpp/include/Ice/Version.h +0 -262
- data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +0 -158
- data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +0 -142
- data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +0 -119
- data/ext/ice/cpp/include/IceUtil/Cache.h +0 -362
- data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +0 -65
- data/ext/ice/cpp/include/Slice/CsUtil.h +0 -92
- data/ext/ice/cpp/include/Slice/DotNetNames.h +0 -34
- data/ext/ice/cpp/include/Slice/ObjCUtil.h +0 -127
- data/ext/ice/cpp/include/Slice/Util.h +0 -56
- data/ext/ice/cpp/src/Ice/BasicStream.cpp +0 -3428
- data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +0 -62
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +0 -139
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +0 -43
- data/ext/ice/cpp/src/Ice/Outgoing.cpp +0 -694
- data/ext/ice/cpp/src/Ice/Stream.cpp +0 -53
- data/ext/ice/cpp/src/Ice/StreamI.cpp +0 -832
- data/ext/ice/cpp/src/Ice/StreamI.h +0 -198
- data/ext/ice/cpp/src/IceSSL/Certificate.cpp +0 -1336
- data/ext/ice/cpp/src/IceUtil/Exception.cpp +0 -792
- data/ext/ice/cpp/src/IceUtil/FileUtil.h +0 -185
- data/ext/ice/cpp/src/Slice/CsUtil.cpp +0 -2660
- data/ext/ice/cpp/src/Slice/DotNetNames.cpp +0 -146
- data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +0 -1310
- data/lib/IceGrid/Locator.rb +0 -106
- data/lib/IceGrid/Observer.rb +0 -572
- data/lib/IceGrid/Query.rb +0 -169
- data/slice/Freeze/BackgroundSaveEvictor.ice +0 -111
- data/slice/Freeze/CatalogData.ice +0 -49
- data/slice/Freeze/Connection.ice +0 -121
- data/slice/Freeze/DB.ice +0 -37
- data/slice/Freeze/Evictor.ice +0 -346
- data/slice/Freeze/EvictorF.ice +0 -22
- data/slice/Freeze/EvictorStorage.ice +0 -72
- data/slice/Freeze/Exception.ice +0 -100
- data/slice/Freeze/Transaction.ice +0 -58
- data/slice/Freeze/TransactionalEvictor.ice +0 -50
- data/slice/IceGrid/Locator.ice +0 -57
- data/slice/IceGrid/Observer.ice +0 -395
- data/slice/IceGrid/Query.ice +0 -131
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// **********************************************************************
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This copy of Ice is licensed to you under the terms described in the
|
|
6
|
+
// ICE_LICENSE file included in this distribution.
|
|
7
|
+
//
|
|
8
|
+
// **********************************************************************
|
|
9
|
+
|
|
10
|
+
#ifndef LOCATOR_DISCOVERY_PLUGIN_I_H
|
|
11
|
+
#define LOCATOR_DISCOVERY_PLUGIN_I_H
|
|
12
|
+
|
|
13
|
+
#include <Ice/Config.h>
|
|
14
|
+
#include <Ice/Plugin.h>
|
|
15
|
+
#include <Ice/Locator.h>
|
|
16
|
+
#include <IceUtil/Time.h>
|
|
17
|
+
|
|
18
|
+
//
|
|
19
|
+
// Automatically link IceLocatorDiscovery[D|++11|++11D].lib with Visual C++
|
|
20
|
+
//
|
|
21
|
+
#if !defined(ICE_BUILDING_ICE_LOCATOR_DISCOVERY) && defined(ICE_LOCATOR_DISCOVERY_API_EXPORTS)
|
|
22
|
+
# define ICE_BUILDING_ICE_LOCATOR_DISCOVERY
|
|
23
|
+
#endif
|
|
24
|
+
|
|
25
|
+
#if defined(_MSC_VER) && !defined(ICE_BUILDING_ICE_LOCATOR_DISCOVERY)
|
|
26
|
+
# pragma comment(lib, ICE_LIBNAME("IceLocatorDiscovery"))
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
#ifndef ICE_LOCATOR_DISCOVERY_API
|
|
30
|
+
# if defined(ICE_STATIC_LIBS)
|
|
31
|
+
# define ICE_LOCATOR_DISCOVERY_API /**/
|
|
32
|
+
# elif defined(ICE_LOCATOR_DISCOVERY_API_EXPORTS)
|
|
33
|
+
# define ICE_LOCATOR_DISCOVERY_API ICE_DECLSPEC_EXPORT
|
|
34
|
+
# else
|
|
35
|
+
# define ICE_LOCATOR_DISCOVERY_API ICE_DECLSPEC_IMPORT
|
|
36
|
+
# endif
|
|
37
|
+
#endif
|
|
38
|
+
|
|
39
|
+
namespace IceLocatorDiscovery
|
|
40
|
+
{
|
|
41
|
+
|
|
42
|
+
class ICE_LOCATOR_DISCOVERY_API Plugin : public Ice::Plugin
|
|
43
|
+
{
|
|
44
|
+
public:
|
|
45
|
+
|
|
46
|
+
virtual std::vector<Ice::LocatorPrxPtr> getLocators(const std::string&, const IceUtil::Time&) const = 0;
|
|
47
|
+
};
|
|
48
|
+
ICE_DEFINE_PTR(PluginPtr, Plugin);
|
|
49
|
+
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
#endif
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// **********************************************************************
|
|
2
2
|
//
|
|
3
|
-
// Copyright (c) 2003-
|
|
3
|
+
// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
|
|
4
4
|
//
|
|
5
5
|
// This copy of Ice is licensed to you under the terms described in the
|
|
6
6
|
// ICE_LICENSE file included in this distribution.
|
|
@@ -9,26 +9,33 @@
|
|
|
9
9
|
|
|
10
10
|
#include <IceUtil/IceUtil.h>
|
|
11
11
|
#include <Ice/Ice.h>
|
|
12
|
+
#include <Ice/Network.h> // For getInterfacesForMulticast
|
|
13
|
+
#include <Ice/LoggerUtil.h>
|
|
12
14
|
|
|
15
|
+
#include <IceLocatorDiscovery/Plugin.h>
|
|
13
16
|
#include <IceLocatorDiscovery/IceLocatorDiscovery.h>
|
|
14
17
|
|
|
15
18
|
using namespace std;
|
|
16
19
|
using namespace IceLocatorDiscovery;
|
|
17
20
|
|
|
18
|
-
#ifndef ICE_LOCATOR_DISCOVERY_API
|
|
19
|
-
# ifdef ICE_LOCATOR_DISCOVERY_API_EXPORTS
|
|
20
|
-
# define ICE_LOCATOR_DISCOVERY_API ICE_DECLSPEC_EXPORT
|
|
21
|
-
# else
|
|
22
|
-
# define ICE_LOCATOR_DISCOVERY_API /**/
|
|
23
|
-
# endif
|
|
24
|
-
#endif
|
|
25
|
-
|
|
26
21
|
namespace
|
|
27
22
|
{
|
|
28
23
|
|
|
29
24
|
class LocatorI; // Forward declaration
|
|
30
25
|
|
|
31
|
-
|
|
26
|
+
#ifdef ICE_CPP11_MAPPING
|
|
27
|
+
typedef std::pair<function<void(bool, const pair<const Ice::Byte*, const Ice::Byte*>&)>,
|
|
28
|
+
function<void(exception_ptr)>> AMDCallback;
|
|
29
|
+
#else
|
|
30
|
+
typedef Ice::AMD_Object_ice_invokePtr AMDCallback;
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
class Request :
|
|
34
|
+
#ifdef ICE_CPP11_MAPPING
|
|
35
|
+
public std::enable_shared_from_this<Request>
|
|
36
|
+
#else
|
|
37
|
+
public virtual IceUtil::Shared
|
|
38
|
+
#endif
|
|
32
39
|
{
|
|
33
40
|
public:
|
|
34
41
|
|
|
@@ -37,7 +44,7 @@ public:
|
|
|
37
44
|
Ice::OperationMode mode,
|
|
38
45
|
const pair<const Ice::Byte*, const Ice::Byte*>& inParams,
|
|
39
46
|
const Ice::Context& ctx,
|
|
40
|
-
const
|
|
47
|
+
const AMDCallback& amdCB) :
|
|
41
48
|
_locator(locator),
|
|
42
49
|
_operation(operation),
|
|
43
50
|
_mode(mode),
|
|
@@ -47,8 +54,8 @@ public:
|
|
|
47
54
|
{
|
|
48
55
|
}
|
|
49
56
|
|
|
50
|
-
void invoke(const Ice::
|
|
51
|
-
void response(
|
|
57
|
+
void invoke(const Ice::LocatorPrxPtr&);
|
|
58
|
+
void response(bool, const pair<const Ice::Byte*, const Ice::Byte*>&);
|
|
52
59
|
void exception(const Ice::Exception&);
|
|
53
60
|
|
|
54
61
|
protected:
|
|
@@ -58,31 +65,52 @@ protected:
|
|
|
58
65
|
const Ice::OperationMode _mode;
|
|
59
66
|
const Ice::Context _context;
|
|
60
67
|
const Ice::ByteSeq _inParams;
|
|
61
|
-
|
|
68
|
+
AMDCallback _amdCB;
|
|
69
|
+
#ifdef ICE_CPP11_MAPPING
|
|
70
|
+
exception_ptr _exception;
|
|
71
|
+
#else
|
|
72
|
+
IceInternal::UniquePtr<Ice::Exception> _exception;
|
|
73
|
+
#endif
|
|
62
74
|
|
|
63
|
-
Ice::
|
|
64
|
-
IceUtil::UniquePtr<Ice::Exception> _exception;
|
|
75
|
+
Ice::LocatorPrxPtr _locatorPrx;
|
|
65
76
|
};
|
|
66
|
-
|
|
77
|
+
ICE_DEFINE_PTR(RequestPtr, Request);
|
|
67
78
|
|
|
68
|
-
class LocatorI : public Ice::BlobjectArrayAsync,
|
|
79
|
+
class LocatorI : public Ice::BlobjectArrayAsync,
|
|
80
|
+
public IceUtil::TimerTask,
|
|
81
|
+
private IceUtil::Monitor<IceUtil::Mutex>
|
|
82
|
+
#ifdef ICE_CPP11_MAPPING
|
|
83
|
+
, public std::enable_shared_from_this<LocatorI>
|
|
84
|
+
#endif
|
|
69
85
|
{
|
|
70
86
|
public:
|
|
71
87
|
|
|
72
|
-
LocatorI(const
|
|
73
|
-
void setLookupReply(const
|
|
88
|
+
LocatorI(const string&, const LookupPrxPtr&, const Ice::PropertiesPtr&, const string&, const Ice::LocatorPrxPtr&);
|
|
89
|
+
void setLookupReply(const LookupReplyPrxPtr&);
|
|
74
90
|
|
|
91
|
+
#ifdef ICE_CPP11_MAPPING
|
|
92
|
+
virtual void ice_invokeAsync(pair<const Ice::Byte*, const Ice::Byte*>,
|
|
93
|
+
function<void(bool, const pair<const Ice::Byte*, const Ice::Byte*>&)>,
|
|
94
|
+
function<void(exception_ptr)>,
|
|
95
|
+
const Ice::Current&);
|
|
96
|
+
#else
|
|
75
97
|
virtual void ice_invoke_async(const Ice::AMD_Object_ice_invokePtr&, const pair<const Ice::Byte*, const Ice::Byte*>&,
|
|
76
98
|
const Ice::Current&);
|
|
99
|
+
#endif
|
|
77
100
|
|
|
78
|
-
void foundLocator(const Ice::
|
|
79
|
-
void invoke(const Ice::
|
|
101
|
+
void foundLocator(const Ice::LocatorPrxPtr&);
|
|
102
|
+
void invoke(const Ice::LocatorPrxPtr&, const RequestPtr&);
|
|
103
|
+
|
|
104
|
+
vector<Ice::LocatorPrxPtr> getLocators(const string&, const IceUtil::Time&);
|
|
105
|
+
|
|
106
|
+
void exception(const Ice::LocalException&);
|
|
80
107
|
|
|
81
108
|
private:
|
|
82
109
|
|
|
83
110
|
virtual void runTimerTask();
|
|
84
111
|
|
|
85
|
-
|
|
112
|
+
LookupPrxPtr _lookup;
|
|
113
|
+
vector<pair<LookupPrxPtr, LookupReplyPrxPtr> > _lookups;
|
|
86
114
|
const IceUtil::Time _timeout;
|
|
87
115
|
const int _retryCount;
|
|
88
116
|
const IceUtil::Time _retryDelay;
|
|
@@ -90,15 +118,17 @@ private:
|
|
|
90
118
|
|
|
91
119
|
string _instanceName;
|
|
92
120
|
bool _warned;
|
|
93
|
-
|
|
94
|
-
Ice::
|
|
95
|
-
Ice::
|
|
121
|
+
Ice::LocatorPrxPtr _locator;
|
|
122
|
+
map<string, Ice::LocatorPrxPtr> _locators;
|
|
123
|
+
Ice::LocatorPrxPtr _voidLocator;
|
|
96
124
|
|
|
97
125
|
IceUtil::Time _nextRetry;
|
|
98
126
|
int _pendingRetryCount;
|
|
127
|
+
size_t _failureCount;
|
|
128
|
+
bool _warnOnce;
|
|
99
129
|
vector<RequestPtr> _pendingRequests;
|
|
100
130
|
};
|
|
101
|
-
|
|
131
|
+
ICE_DEFINE_PTR(LocatorIPtr, LocatorI);
|
|
102
132
|
|
|
103
133
|
class LookupReplyI : public LookupReply
|
|
104
134
|
{
|
|
@@ -108,13 +138,20 @@ public:
|
|
|
108
138
|
{
|
|
109
139
|
}
|
|
110
140
|
|
|
111
|
-
virtual void foundLocator(
|
|
141
|
+
virtual void foundLocator(ICE_IN(Ice::LocatorPrxPtr), const Ice::Current&);
|
|
112
142
|
|
|
113
143
|
private:
|
|
114
144
|
|
|
115
145
|
const LocatorIPtr _locator;
|
|
116
146
|
};
|
|
117
147
|
|
|
148
|
+
const ::std::string IceGrid_Locator_ids[3] =
|
|
149
|
+
{
|
|
150
|
+
"::Ice::Locator",
|
|
151
|
+
"::Ice::Object",
|
|
152
|
+
"::IceGrid::Locator"
|
|
153
|
+
};
|
|
154
|
+
|
|
118
155
|
//
|
|
119
156
|
// The void locator implementation below is used when no locator is found.
|
|
120
157
|
//
|
|
@@ -122,6 +159,25 @@ class VoidLocatorI : public Ice::Locator
|
|
|
122
159
|
{
|
|
123
160
|
public:
|
|
124
161
|
|
|
162
|
+
#ifdef ICE_CPP11_MAPPING
|
|
163
|
+
virtual void
|
|
164
|
+
findObjectByIdAsync(::Ice::Identity,
|
|
165
|
+
function<void(const shared_ptr<::Ice::ObjectPrx>&)> response,
|
|
166
|
+
function<void(exception_ptr)>,
|
|
167
|
+
const Ice::Current&) const
|
|
168
|
+
{
|
|
169
|
+
response(nullptr);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
virtual void
|
|
173
|
+
findAdapterByIdAsync(string,
|
|
174
|
+
function<void(const shared_ptr<::Ice::ObjectPrx>&)> response,
|
|
175
|
+
function<void(exception_ptr)>,
|
|
176
|
+
const Ice::Current&) const
|
|
177
|
+
{
|
|
178
|
+
response(nullptr);
|
|
179
|
+
}
|
|
180
|
+
#else
|
|
125
181
|
virtual void
|
|
126
182
|
findObjectById_async(const Ice::AMD_Locator_findObjectByIdPtr& amdCB,
|
|
127
183
|
const Ice::Identity&,
|
|
@@ -137,46 +193,75 @@ public:
|
|
|
137
193
|
{
|
|
138
194
|
amdCB->ice_response(0);
|
|
139
195
|
}
|
|
196
|
+
#endif
|
|
140
197
|
|
|
141
|
-
virtual Ice::
|
|
198
|
+
virtual Ice::LocatorRegistryPrxPtr
|
|
142
199
|
getRegistry(const Ice::Current&) const
|
|
143
200
|
{
|
|
144
|
-
return
|
|
201
|
+
return ICE_NULLPTR;
|
|
145
202
|
}
|
|
146
203
|
};
|
|
147
204
|
|
|
148
|
-
class PluginI : public
|
|
205
|
+
class PluginI : public Plugin
|
|
149
206
|
{
|
|
150
207
|
public:
|
|
151
208
|
|
|
152
|
-
PluginI(const Ice::CommunicatorPtr&);
|
|
209
|
+
PluginI(const std::string&, const Ice::CommunicatorPtr&);
|
|
153
210
|
|
|
154
211
|
virtual void initialize();
|
|
155
212
|
virtual void destroy();
|
|
213
|
+
virtual vector<Ice::LocatorPrxPtr> getLocators(const string&, const IceUtil::Time&) const;
|
|
156
214
|
|
|
157
215
|
private:
|
|
158
216
|
|
|
217
|
+
const string _name;
|
|
159
218
|
const Ice::CommunicatorPtr _communicator;
|
|
160
219
|
Ice::ObjectAdapterPtr _locatorAdapter;
|
|
161
220
|
Ice::ObjectAdapterPtr _replyAdapter;
|
|
162
|
-
|
|
163
|
-
Ice::
|
|
221
|
+
LocatorIPtr _locator;
|
|
222
|
+
Ice::LocatorPrxPtr _locatorPrx;
|
|
223
|
+
Ice::LocatorPrxPtr _defaultLocator;
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
#ifndef ICE_CPP11_MAPPING
|
|
227
|
+
|
|
228
|
+
class CallbackI : public IceUtil::Shared
|
|
229
|
+
{
|
|
230
|
+
public:
|
|
231
|
+
|
|
232
|
+
CallbackI(const LocatorIPtr& locator) : _locator(locator)
|
|
233
|
+
{
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
void
|
|
237
|
+
completed(const Ice::AsyncResultPtr& result)
|
|
238
|
+
{
|
|
239
|
+
try
|
|
240
|
+
{
|
|
241
|
+
result->throwLocalException();
|
|
242
|
+
}
|
|
243
|
+
catch(const Ice::LocalException& ex)
|
|
244
|
+
{
|
|
245
|
+
_locator->exception(ex);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
private:
|
|
250
|
+
|
|
251
|
+
LocatorIPtr _locator;
|
|
164
252
|
};
|
|
165
253
|
|
|
254
|
+
#endif
|
|
255
|
+
|
|
166
256
|
}
|
|
167
257
|
|
|
168
258
|
//
|
|
169
259
|
// Plugin factory function.
|
|
170
260
|
//
|
|
171
|
-
extern "C"
|
|
261
|
+
extern "C" ICE_LOCATOR_DISCOVERY_API Ice::Plugin*
|
|
262
|
+
createIceLocatorDiscovery(const Ice::CommunicatorPtr& communicator, const string& name, const Ice::StringSeq&)
|
|
172
263
|
{
|
|
173
|
-
|
|
174
|
-
ICE_LOCATOR_DISCOVERY_API Ice::Plugin*
|
|
175
|
-
createIceLocatorDiscovery(const Ice::CommunicatorPtr& communicator, const string&, const Ice::StringSeq&)
|
|
176
|
-
{
|
|
177
|
-
return new PluginI(communicator);
|
|
178
|
-
}
|
|
179
|
-
|
|
264
|
+
return new PluginI(name, communicator);
|
|
180
265
|
}
|
|
181
266
|
|
|
182
267
|
namespace Ice
|
|
@@ -186,12 +271,28 @@ ICE_LOCATOR_DISCOVERY_API void
|
|
|
186
271
|
registerIceLocatorDiscovery(bool loadOnInitialize)
|
|
187
272
|
{
|
|
188
273
|
Ice::registerPluginFactory("IceLocatorDiscovery", createIceLocatorDiscovery, loadOnInitialize);
|
|
274
|
+
|
|
275
|
+
#ifdef ICE_STATIC_LIBS
|
|
276
|
+
//
|
|
277
|
+
// Also register the UDP plugin with static builds to ensure the UDP transport is loaded.
|
|
278
|
+
//
|
|
279
|
+
registerIceUDP(true);
|
|
280
|
+
#endif
|
|
189
281
|
}
|
|
190
282
|
|
|
191
283
|
}
|
|
192
284
|
|
|
285
|
+
//
|
|
286
|
+
// Objective-C function to allow Objective-C programs to register plugin.
|
|
287
|
+
//
|
|
288
|
+
extern "C" ICE_LOCATOR_DISCOVERY_API void
|
|
289
|
+
ICEregisterIceLocatorDiscovery(bool loadOnInitialize)
|
|
290
|
+
{
|
|
291
|
+
Ice::registerIceLocatorDiscovery(loadOnInitialize);
|
|
292
|
+
}
|
|
193
293
|
|
|
194
|
-
PluginI::PluginI(const Ice::CommunicatorPtr& communicator) :
|
|
294
|
+
PluginI::PluginI(const string& name, const Ice::CommunicatorPtr& communicator) :
|
|
295
|
+
_name(name), _communicator(communicator)
|
|
195
296
|
{
|
|
196
297
|
}
|
|
197
298
|
|
|
@@ -205,89 +306,83 @@ PluginI::initialize()
|
|
|
205
306
|
string address;
|
|
206
307
|
if(ipv4 && !preferIPv6)
|
|
207
308
|
{
|
|
208
|
-
address = properties->getPropertyWithDefault("
|
|
309
|
+
address = properties->getPropertyWithDefault(_name + ".Address", "239.255.0.1");
|
|
209
310
|
}
|
|
210
311
|
else
|
|
211
312
|
{
|
|
212
|
-
address = properties->getPropertyWithDefault("
|
|
313
|
+
address = properties->getPropertyWithDefault(_name + ".Address", "ff15::1");
|
|
213
314
|
}
|
|
214
|
-
int port = properties->getPropertyAsIntWithDefault("
|
|
215
|
-
string intf = properties->getProperty("
|
|
315
|
+
int port = properties->getPropertyAsIntWithDefault(_name + ".Port", 4061);
|
|
316
|
+
string intf = properties->getProperty(_name + ".Interface");
|
|
216
317
|
|
|
217
|
-
|
|
318
|
+
string lookupEndpoints = properties->getProperty(_name + ".Lookup");
|
|
319
|
+
if(lookupEndpoints.empty())
|
|
218
320
|
{
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
321
|
+
//
|
|
322
|
+
// If no lookup endpoints are specified, we get all the network interfaces and create
|
|
323
|
+
// an endpoint for each of them. We'll send UDP multicast packages on each interface.
|
|
324
|
+
//
|
|
325
|
+
IceInternal::ProtocolSupport protocol = ipv4 && !preferIPv6 ? IceInternal::EnableIPv4 : IceInternal::EnableIPv6;
|
|
326
|
+
vector<string> interfaces = IceInternal::getInterfacesForMulticast(intf, protocol);
|
|
327
|
+
ostringstream lookup;
|
|
328
|
+
for(vector<string>::const_iterator p = interfaces.begin(); p != interfaces.end(); ++p)
|
|
222
329
|
{
|
|
223
|
-
|
|
330
|
+
if(p != interfaces.begin())
|
|
331
|
+
{
|
|
332
|
+
lookup << ":";
|
|
333
|
+
}
|
|
334
|
+
lookup << "udp -h \"" << address << "\" -p " << port << " --interface \"" << *p << "\"";
|
|
224
335
|
}
|
|
225
|
-
|
|
336
|
+
lookupEndpoints = lookup.str();
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
if(properties->getProperty(_name + ".Reply.Endpoints").empty())
|
|
340
|
+
{
|
|
341
|
+
properties->setProperty(_name + ".Reply.Endpoints", "udp -h " + (intf.empty() ? "*" : "\"" + intf + "\""));
|
|
226
342
|
}
|
|
227
|
-
|
|
343
|
+
|
|
344
|
+
if(properties->getProperty(_name + ".Locator.Endpoints").empty())
|
|
228
345
|
{
|
|
229
|
-
properties->setProperty("
|
|
346
|
+
properties->setProperty(_name + ".Locator.AdapterId", Ice::generateUUID()); // Collocated adapter
|
|
230
347
|
}
|
|
231
348
|
|
|
232
|
-
_replyAdapter = _communicator->createObjectAdapter("
|
|
233
|
-
_locatorAdapter = _communicator->createObjectAdapter("
|
|
349
|
+
_replyAdapter = _communicator->createObjectAdapter(_name + ".Reply");
|
|
350
|
+
_locatorAdapter = _communicator->createObjectAdapter(_name + ".Locator");
|
|
234
351
|
|
|
235
352
|
// We don't want those adapters to be registered with the locator so clear their locator.
|
|
236
353
|
_replyAdapter->setLocator(0);
|
|
237
354
|
_locatorAdapter->setLocator(0);
|
|
238
355
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
ostringstream os;
|
|
243
|
-
os << "udp -h \"" << address << "\" -p " << port;
|
|
244
|
-
if(!intf.empty())
|
|
245
|
-
{
|
|
246
|
-
os << " --interface \"" << intf << "\"";
|
|
247
|
-
}
|
|
248
|
-
lookupEndpoints = os.str();
|
|
249
|
-
}
|
|
356
|
+
Ice::ObjectPrxPtr lookupPrx = _communicator->stringToProxy("IceLocatorDiscovery/Lookup -d:" + lookupEndpoints);
|
|
357
|
+
// No collocation optimization for the multicast proxy!
|
|
358
|
+
lookupPrx = lookupPrx->ice_collocationOptimized(false)->ice_router(ICE_NULLPTR);
|
|
250
359
|
|
|
251
|
-
Ice::
|
|
252
|
-
|
|
253
|
-
lookupPrx = lookupPrx->ice_collocationOptimized(false)->ice_router(0);
|
|
254
|
-
try
|
|
255
|
-
{
|
|
256
|
-
// Ensure we can establish a connection to the multicast proxy
|
|
257
|
-
// but don't block.
|
|
258
|
-
Ice::AsyncResultPtr result = lookupPrx->begin_ice_getConnection();
|
|
259
|
-
if(result->sentSynchronously())
|
|
260
|
-
{
|
|
261
|
-
lookupPrx->end_ice_getConnection(result);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
catch(const Ice::LocalException& ex)
|
|
265
|
-
{
|
|
266
|
-
ostringstream os;
|
|
267
|
-
os << "IceLocatorDiscovery is unable to establish a multicast connection:\n";
|
|
268
|
-
os << "proxy = " << lookupPrx << '\n';
|
|
269
|
-
os << ex;
|
|
270
|
-
throw Ice::PluginInitializationException(__FILE__, __LINE__, os.str());
|
|
271
|
-
}
|
|
360
|
+
Ice::LocatorPrxPtr voidLocator = ICE_UNCHECKED_CAST(Ice::LocatorPrx,
|
|
361
|
+
_locatorAdapter->addWithUUID(ICE_MAKE_SHARED(VoidLocatorI)));
|
|
272
362
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
string instanceName = properties->getProperty("IceLocatorDiscovery.InstanceName");
|
|
363
|
+
string instanceName = properties->getProperty(_name + ".InstanceName");
|
|
276
364
|
Ice::Identity id;
|
|
277
365
|
id.name = "Locator";
|
|
278
|
-
id.category = !instanceName.empty() ? instanceName :
|
|
279
|
-
|
|
366
|
+
id.category = !instanceName.empty() ? instanceName : Ice::generateUUID();
|
|
367
|
+
_locator = ICE_MAKE_SHARED(LocatorI, _name, ICE_UNCHECKED_CAST(LookupPrx, lookupPrx), properties, instanceName,
|
|
368
|
+
voidLocator);
|
|
280
369
|
_defaultLocator = _communicator->getDefaultLocator();
|
|
281
|
-
_locatorPrx = Ice::LocatorPrx
|
|
370
|
+
_locatorPrx = ICE_UNCHECKED_CAST(Ice::LocatorPrx, _locatorAdapter->add(_locator, id));
|
|
282
371
|
_communicator->setDefaultLocator(_locatorPrx);
|
|
283
372
|
|
|
284
|
-
Ice::
|
|
285
|
-
|
|
373
|
+
Ice::ObjectPrxPtr lookupReply = _replyAdapter->addWithUUID(ICE_MAKE_SHARED(LookupReplyI, _locator))->ice_datagram();
|
|
374
|
+
_locator->setLookupReply(ICE_UNCHECKED_CAST(LookupReplyPrx, lookupReply));
|
|
286
375
|
|
|
287
376
|
_replyAdapter->activate();
|
|
288
377
|
_locatorAdapter->activate();
|
|
289
378
|
}
|
|
290
379
|
|
|
380
|
+
vector<Ice::LocatorPrxPtr>
|
|
381
|
+
PluginI::getLocators(const string& instanceName, const IceUtil::Time& waitTime) const
|
|
382
|
+
{
|
|
383
|
+
return _locator->getLocators(instanceName, waitTime);
|
|
384
|
+
}
|
|
385
|
+
|
|
291
386
|
void
|
|
292
387
|
PluginI::destroy()
|
|
293
388
|
{
|
|
@@ -307,8 +402,56 @@ PluginI::destroy()
|
|
|
307
402
|
}
|
|
308
403
|
|
|
309
404
|
void
|
|
310
|
-
Request::invoke(const Ice::
|
|
405
|
+
Request::invoke(const Ice::LocatorPrxPtr& l)
|
|
311
406
|
{
|
|
407
|
+
#ifdef ICE_CPP11_MAPPING
|
|
408
|
+
if(l != _locatorPrx)
|
|
409
|
+
{
|
|
410
|
+
_locatorPrx = l;
|
|
411
|
+
try
|
|
412
|
+
{
|
|
413
|
+
auto self = shared_from_this();
|
|
414
|
+
l->ice_invokeAsync(_operation, _mode, _inParams,
|
|
415
|
+
[self](bool ok, vector<Ice::Byte> outParams)
|
|
416
|
+
{
|
|
417
|
+
pair<const Ice::Byte*, const Ice::Byte*> outPair;
|
|
418
|
+
if(outParams.empty())
|
|
419
|
+
{
|
|
420
|
+
outPair.first = outPair.second = 0;
|
|
421
|
+
}
|
|
422
|
+
else
|
|
423
|
+
{
|
|
424
|
+
outPair.first = &outParams[0];
|
|
425
|
+
outPair.second = outPair.first + outParams.size();
|
|
426
|
+
}
|
|
427
|
+
self->response(ok, outPair);
|
|
428
|
+
},
|
|
429
|
+
[self](exception_ptr e)
|
|
430
|
+
{
|
|
431
|
+
try
|
|
432
|
+
{
|
|
433
|
+
rethrow_exception(e);
|
|
434
|
+
}
|
|
435
|
+
catch(const Ice::Exception& ex)
|
|
436
|
+
{
|
|
437
|
+
self->exception(ex);
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
nullptr,
|
|
441
|
+
_context);
|
|
442
|
+
}
|
|
443
|
+
catch(const Ice::LocalException& ex)
|
|
444
|
+
{
|
|
445
|
+
exception(ex);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
else
|
|
449
|
+
{
|
|
450
|
+
assert(_exception); // Don't retry if the proxy didn't change
|
|
451
|
+
_amdCB.second(_exception);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
#else
|
|
312
455
|
if(l != _locatorPrx)
|
|
313
456
|
{
|
|
314
457
|
_locatorPrx = l;
|
|
@@ -327,17 +470,74 @@ Request::invoke(const Ice::LocatorPrx& l)
|
|
|
327
470
|
assert(_exception.get()); // Don't retry if the proxy didn't change
|
|
328
471
|
_amdCB->ice_exception(*_exception.get());
|
|
329
472
|
}
|
|
473
|
+
#endif
|
|
330
474
|
}
|
|
331
475
|
|
|
332
476
|
void
|
|
333
477
|
Request::response(bool ok, const pair<const Ice::Byte*, const Ice::Byte*>& outParams)
|
|
334
478
|
{
|
|
479
|
+
#ifdef ICE_CPP11_MAPPING
|
|
480
|
+
_amdCB.first(ok, outParams);
|
|
481
|
+
#else
|
|
335
482
|
_amdCB->ice_response(ok, outParams);
|
|
483
|
+
#endif
|
|
336
484
|
}
|
|
337
485
|
|
|
338
486
|
void
|
|
339
487
|
Request::exception(const Ice::Exception& ex)
|
|
340
488
|
{
|
|
489
|
+
#ifdef ICE_CPP11_MAPPING
|
|
490
|
+
try
|
|
491
|
+
{
|
|
492
|
+
ex.ice_throw();
|
|
493
|
+
}
|
|
494
|
+
catch(const Ice::RequestFailedException&)
|
|
495
|
+
{
|
|
496
|
+
_amdCB.second(current_exception());
|
|
497
|
+
}
|
|
498
|
+
catch(const Ice::UnknownException&)
|
|
499
|
+
{
|
|
500
|
+
_amdCB.second(current_exception());
|
|
501
|
+
}
|
|
502
|
+
catch(const Ice::NoEndpointException&)
|
|
503
|
+
{
|
|
504
|
+
try
|
|
505
|
+
{
|
|
506
|
+
throw Ice::ObjectNotExistException(__FILE__, __LINE__);
|
|
507
|
+
}
|
|
508
|
+
catch(...)
|
|
509
|
+
{
|
|
510
|
+
_amdCB.second(current_exception());
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
catch(const Ice::CommunicatorDestroyedException&)
|
|
514
|
+
{
|
|
515
|
+
try
|
|
516
|
+
{
|
|
517
|
+
throw Ice::ObjectNotExistException(__FILE__, __LINE__);
|
|
518
|
+
}
|
|
519
|
+
catch(...)
|
|
520
|
+
{
|
|
521
|
+
_amdCB.second(current_exception());
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
catch(const Ice::ObjectAdapterDeactivatedException&)
|
|
525
|
+
{
|
|
526
|
+
try
|
|
527
|
+
{
|
|
528
|
+
throw Ice::ObjectNotExistException(__FILE__, __LINE__);
|
|
529
|
+
}
|
|
530
|
+
catch(...)
|
|
531
|
+
{
|
|
532
|
+
_amdCB.second(current_exception());
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
catch(const Ice::Exception&)
|
|
536
|
+
{
|
|
537
|
+
_exception = current_exception();
|
|
538
|
+
_locator->invoke(_locatorPrx, shared_from_this()); // Retry with new locator proxy
|
|
539
|
+
}
|
|
540
|
+
#else
|
|
341
541
|
try
|
|
342
542
|
{
|
|
343
543
|
ex.ice_throw();
|
|
@@ -367,31 +567,83 @@ Request::exception(const Ice::Exception& ex)
|
|
|
367
567
|
_exception.reset(ex.ice_clone());
|
|
368
568
|
_locator->invoke(_locatorPrx, this); // Retry with new locator proxy
|
|
369
569
|
}
|
|
570
|
+
#endif
|
|
370
571
|
}
|
|
371
572
|
|
|
372
|
-
LocatorI::LocatorI(const
|
|
573
|
+
LocatorI::LocatorI(const string& name,
|
|
574
|
+
const LookupPrxPtr& lookup,
|
|
373
575
|
const Ice::PropertiesPtr& p,
|
|
374
576
|
const string& instanceName,
|
|
375
|
-
const Ice::
|
|
577
|
+
const Ice::LocatorPrxPtr& voidLocator) :
|
|
376
578
|
_lookup(lookup),
|
|
377
|
-
_timeout(IceUtil::Time::milliSeconds(p->getPropertyAsIntWithDefault("
|
|
378
|
-
_retryCount(p->getPropertyAsIntWithDefault("
|
|
379
|
-
_retryDelay(IceUtil::Time::milliSeconds(p->getPropertyAsIntWithDefault("
|
|
579
|
+
_timeout(IceUtil::Time::milliSeconds(p->getPropertyAsIntWithDefault(name + ".Timeout", 300))),
|
|
580
|
+
_retryCount(p->getPropertyAsIntWithDefault(name + ".RetryCount", 3)),
|
|
581
|
+
_retryDelay(IceUtil::Time::milliSeconds(p->getPropertyAsIntWithDefault(name + ".RetryDelay", 2000))),
|
|
380
582
|
_timer(IceInternal::getInstanceTimer(lookup->ice_getCommunicator())),
|
|
381
583
|
_instanceName(instanceName),
|
|
382
584
|
_warned(false),
|
|
383
585
|
_locator(lookup->ice_getCommunicator()->getDefaultLocator()),
|
|
384
586
|
_voidLocator(voidLocator),
|
|
385
|
-
_pendingRetryCount(0)
|
|
587
|
+
_pendingRetryCount(0),
|
|
588
|
+
_failureCount(0),
|
|
589
|
+
_warnOnce(true)
|
|
386
590
|
{
|
|
591
|
+
//
|
|
592
|
+
// Create one lookup proxy per endpoint from the given proxy. We want to send a multicast
|
|
593
|
+
// datagram on each endpoint.
|
|
594
|
+
//
|
|
595
|
+
Ice::EndpointSeq endpoints = lookup->ice_getEndpoints();
|
|
596
|
+
for(vector<Ice::EndpointPtr>::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p)
|
|
597
|
+
{
|
|
598
|
+
Ice::EndpointSeq single;
|
|
599
|
+
single.push_back(*p);
|
|
600
|
+
_lookups.push_back(make_pair(lookup->ice_endpoints(single), LookupReplyPrxPtr()));
|
|
601
|
+
}
|
|
602
|
+
assert(!_lookups.empty());
|
|
387
603
|
}
|
|
388
604
|
|
|
389
605
|
void
|
|
390
|
-
LocatorI::setLookupReply(const
|
|
606
|
+
LocatorI::setLookupReply(const LookupReplyPrxPtr& lookupReply)
|
|
391
607
|
{
|
|
392
|
-
|
|
608
|
+
//
|
|
609
|
+
// Use a lookup reply proxy whose adress matches the interface used to send multicast datagrams.
|
|
610
|
+
//
|
|
611
|
+
for(vector<pair<LookupPrxPtr, LookupReplyPrxPtr> >::iterator p = _lookups.begin(); p != _lookups.end(); ++p)
|
|
612
|
+
{
|
|
613
|
+
Ice::UDPEndpointInfoPtr info = ICE_DYNAMIC_CAST(Ice::UDPEndpointInfo, p->first->ice_getEndpoints()[0]->getInfo());
|
|
614
|
+
if(info && !info->mcastInterface.empty())
|
|
615
|
+
{
|
|
616
|
+
Ice::EndpointSeq endpts = lookupReply->ice_getEndpoints();
|
|
617
|
+
for(Ice::EndpointSeq::const_iterator q = endpts.begin(); q != endpts.end(); ++q)
|
|
618
|
+
{
|
|
619
|
+
Ice::IPEndpointInfoPtr r = ICE_DYNAMIC_CAST(Ice::IPEndpointInfo, (*q)->getInfo());
|
|
620
|
+
if(r && r->host == info->mcastInterface)
|
|
621
|
+
{
|
|
622
|
+
Ice::EndpointSeq single;
|
|
623
|
+
single.push_back(*q);
|
|
624
|
+
p->second = lookupReply->ice_endpoints(single);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
if(!p->second)
|
|
630
|
+
{
|
|
631
|
+
p->second = lookupReply; // Fallback: just use the given lookup reply proxy if no matching endpoint found.
|
|
632
|
+
}
|
|
633
|
+
}
|
|
393
634
|
}
|
|
394
635
|
|
|
636
|
+
#ifdef ICE_CPP11_MAPPING
|
|
637
|
+
void
|
|
638
|
+
LocatorI::ice_invokeAsync(pair<const Ice::Byte*, const Ice::Byte*> inParams,
|
|
639
|
+
function<void(bool, const pair<const Ice::Byte*, const Ice::Byte*>&)> responseCB,
|
|
640
|
+
function<void(exception_ptr)> exceptionCB,
|
|
641
|
+
const Ice::Current& current)
|
|
642
|
+
{
|
|
643
|
+
invoke(nullptr, make_shared<Request>(this, current.operation, current.mode, inParams, current.ctx,
|
|
644
|
+
make_pair(move(responseCB), move(exceptionCB))));
|
|
645
|
+
}
|
|
646
|
+
#else
|
|
395
647
|
void
|
|
396
648
|
LocatorI::ice_invoke_async(const Ice::AMD_Object_ice_invokePtr& amdCB,
|
|
397
649
|
const pair<const Ice::Byte*, const Ice::Byte*>& inParams,
|
|
@@ -399,9 +651,54 @@ LocatorI::ice_invoke_async(const Ice::AMD_Object_ice_invokePtr& amdCB,
|
|
|
399
651
|
{
|
|
400
652
|
invoke(0, new Request(this, current.operation, current.mode, inParams, current.ctx, amdCB));
|
|
401
653
|
}
|
|
654
|
+
#endif
|
|
655
|
+
|
|
656
|
+
vector<Ice::LocatorPrxPtr>
|
|
657
|
+
LocatorI::getLocators(const string& instanceName, const IceUtil::Time& waitTime)
|
|
658
|
+
{
|
|
659
|
+
//
|
|
660
|
+
// Clear locators from previous search
|
|
661
|
+
//
|
|
662
|
+
{
|
|
663
|
+
Lock sync(*this);
|
|
664
|
+
_locators.clear();
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
//
|
|
668
|
+
// Find a locator
|
|
669
|
+
//
|
|
670
|
+
invoke(ICE_NULLPTR, ICE_NULLPTR);
|
|
671
|
+
|
|
672
|
+
//
|
|
673
|
+
// Wait for responses
|
|
674
|
+
//
|
|
675
|
+
if(instanceName.empty())
|
|
676
|
+
{
|
|
677
|
+
IceUtil::ThreadControl::sleep(waitTime);
|
|
678
|
+
}
|
|
679
|
+
else
|
|
680
|
+
{
|
|
681
|
+
Lock sync(*this);
|
|
682
|
+
while(_locators.find(instanceName) == _locators.end() && _pendingRetryCount > 0)
|
|
683
|
+
{
|
|
684
|
+
timedWait(waitTime);
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
//
|
|
689
|
+
// Return found locators
|
|
690
|
+
//
|
|
691
|
+
Lock sync(*this);
|
|
692
|
+
vector<Ice::LocatorPrxPtr> locators;
|
|
693
|
+
for(map<string, Ice::LocatorPrxPtr>::const_iterator p = _locators.begin(); p != _locators.end(); ++p)
|
|
694
|
+
{
|
|
695
|
+
locators.push_back(p->second);
|
|
696
|
+
}
|
|
697
|
+
return locators;
|
|
698
|
+
}
|
|
402
699
|
|
|
403
700
|
void
|
|
404
|
-
LocatorI::foundLocator(const Ice::
|
|
701
|
+
LocatorI::foundLocator(const Ice::LocatorPrxPtr& locator)
|
|
405
702
|
{
|
|
406
703
|
Lock sync(*this);
|
|
407
704
|
if(!locator || (!_instanceName.empty() && locator->ice_getIdentity().category != _instanceName))
|
|
@@ -413,7 +710,8 @@ LocatorI::foundLocator(const Ice::LocatorPrx& locator)
|
|
|
413
710
|
// If we already have a locator assigned, ensure the given locator
|
|
414
711
|
// has the same identity, otherwise ignore it.
|
|
415
712
|
//
|
|
416
|
-
if(
|
|
713
|
+
if(!_pendingRequests.empty() &&
|
|
714
|
+
_locator && locator->ice_getIdentity().category != _locator->ice_getIdentity().category)
|
|
417
715
|
{
|
|
418
716
|
if(!_warned)
|
|
419
717
|
{
|
|
@@ -432,17 +730,18 @@ LocatorI::foundLocator(const Ice::LocatorPrx& locator)
|
|
|
432
730
|
|
|
433
731
|
if(_pendingRetryCount > 0) // No need to retry, we found a locator.
|
|
434
732
|
{
|
|
435
|
-
_timer->cancel(
|
|
733
|
+
_timer->cancel(ICE_SHARED_FROM_THIS);
|
|
436
734
|
_pendingRetryCount = 0;
|
|
437
735
|
}
|
|
438
736
|
|
|
439
|
-
|
|
737
|
+
Ice::LocatorPrxPtr l = _pendingRequests.empty() ? _locators[locator->ice_getIdentity().category] : _locator;
|
|
738
|
+
if(l)
|
|
440
739
|
{
|
|
441
740
|
//
|
|
442
741
|
// We found another locator replica, append its endpoints to the
|
|
443
742
|
// current locator proxy endpoints.
|
|
444
743
|
//
|
|
445
|
-
Ice::EndpointSeq newEndpoints =
|
|
744
|
+
Ice::EndpointSeq newEndpoints = l->ice_getEndpoints();
|
|
446
745
|
Ice::EndpointSeq endpts = locator->ice_getEndpoints();
|
|
447
746
|
for(Ice::EndpointSeq::const_iterator p = endpts.begin(); p != endpts.end(); ++p)
|
|
448
747
|
{
|
|
@@ -463,29 +762,39 @@ LocatorI::foundLocator(const Ice::LocatorPrx& locator)
|
|
|
463
762
|
newEndpoints.push_back(*p);
|
|
464
763
|
}
|
|
465
764
|
}
|
|
466
|
-
|
|
765
|
+
l = l->ice_endpoints(newEndpoints);
|
|
467
766
|
}
|
|
468
767
|
else
|
|
469
768
|
{
|
|
470
|
-
|
|
769
|
+
l = locator;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
if(_pendingRequests.empty())
|
|
773
|
+
{
|
|
774
|
+
_locators[locator->ice_getIdentity().category] = l;
|
|
775
|
+
notify();
|
|
776
|
+
}
|
|
777
|
+
else
|
|
778
|
+
{
|
|
779
|
+
_locator = l;
|
|
471
780
|
if(_instanceName.empty())
|
|
472
781
|
{
|
|
473
782
|
_instanceName = _locator->ice_getIdentity().category; // Stick to the first discovered locator.
|
|
474
783
|
}
|
|
475
|
-
}
|
|
476
784
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
785
|
+
//
|
|
786
|
+
// Send pending requests if any.
|
|
787
|
+
//
|
|
788
|
+
for(vector<RequestPtr>::const_iterator p = _pendingRequests.begin(); p != _pendingRequests.end(); ++p)
|
|
789
|
+
{
|
|
790
|
+
(*p)->invoke(_locator);
|
|
791
|
+
}
|
|
792
|
+
_pendingRequests.clear();
|
|
483
793
|
}
|
|
484
|
-
_pendingRequests.clear();
|
|
485
794
|
}
|
|
486
795
|
|
|
487
796
|
void
|
|
488
|
-
LocatorI::invoke(const Ice::
|
|
797
|
+
LocatorI::invoke(const Ice::LocatorPrxPtr& locator, const RequestPtr& request)
|
|
489
798
|
{
|
|
490
799
|
Lock sync(*this);
|
|
491
800
|
if(request && _locator && _locator != locator)
|
|
@@ -500,15 +809,39 @@ LocatorI::invoke(const Ice::LocatorPrx& locator, const RequestPtr& request)
|
|
|
500
809
|
{
|
|
501
810
|
_locator = 0;
|
|
502
811
|
|
|
503
|
-
|
|
812
|
+
if(request)
|
|
813
|
+
{
|
|
814
|
+
_pendingRequests.push_back(request);
|
|
815
|
+
}
|
|
504
816
|
|
|
505
817
|
if(_pendingRetryCount == 0) // No request in progress
|
|
506
818
|
{
|
|
819
|
+
_failureCount = 0;
|
|
507
820
|
_pendingRetryCount = _retryCount;
|
|
508
821
|
try
|
|
509
822
|
{
|
|
510
|
-
|
|
511
|
-
|
|
823
|
+
for(vector<pair<LookupPrxPtr, LookupReplyPrxPtr> >::const_iterator l = _lookups.begin();
|
|
824
|
+
l != _lookups.end(); ++l)
|
|
825
|
+
{
|
|
826
|
+
#ifdef ICE_CPP11_MAPPING
|
|
827
|
+
auto self = shared_from_this();
|
|
828
|
+
l->first->findLocatorAsync(_instanceName, l->second, nullptr, [self](exception_ptr ex)
|
|
829
|
+
{
|
|
830
|
+
try
|
|
831
|
+
{
|
|
832
|
+
rethrow_exception(ex);
|
|
833
|
+
}
|
|
834
|
+
catch(const Ice::LocalException& e)
|
|
835
|
+
{
|
|
836
|
+
self->exception(e);
|
|
837
|
+
}
|
|
838
|
+
});
|
|
839
|
+
#else
|
|
840
|
+
l->first->begin_findLocator(_instanceName, l->second, Ice::newCallback(new CallbackI(this),
|
|
841
|
+
&CallbackI::completed));
|
|
842
|
+
#endif
|
|
843
|
+
}
|
|
844
|
+
_timer->schedule(ICE_SHARED_FROM_THIS, _timeout);
|
|
512
845
|
}
|
|
513
846
|
catch(const Ice::LocalException&)
|
|
514
847
|
{
|
|
@@ -523,6 +856,40 @@ LocatorI::invoke(const Ice::LocatorPrx& locator, const RequestPtr& request)
|
|
|
523
856
|
}
|
|
524
857
|
}
|
|
525
858
|
|
|
859
|
+
void
|
|
860
|
+
LocatorI::exception(const Ice::LocalException& ex)
|
|
861
|
+
{
|
|
862
|
+
Lock sync(*this);
|
|
863
|
+
if(++_failureCount == _lookups.size() && _pendingRetryCount > 0)
|
|
864
|
+
{
|
|
865
|
+
//
|
|
866
|
+
// All the lookup calls failed, cancel the timer and propagate the error to the requests.
|
|
867
|
+
//
|
|
868
|
+
_timer->cancel(ICE_SHARED_FROM_THIS);
|
|
869
|
+
_pendingRetryCount = 0;
|
|
870
|
+
|
|
871
|
+
if(_warnOnce)
|
|
872
|
+
{
|
|
873
|
+
Ice::Warning warn(_lookup->ice_getCommunicator()->getLogger());
|
|
874
|
+
warn << "failed to lookup locator with lookup proxy `" << _lookup << "':\n" << ex;
|
|
875
|
+
_warnOnce = false;
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
if(_pendingRequests.empty())
|
|
879
|
+
{
|
|
880
|
+
notify();
|
|
881
|
+
}
|
|
882
|
+
else
|
|
883
|
+
{
|
|
884
|
+
for(vector<RequestPtr>::const_iterator p = _pendingRequests.begin(); p != _pendingRequests.end(); ++p)
|
|
885
|
+
{
|
|
886
|
+
(*p)->invoke(_voidLocator);
|
|
887
|
+
}
|
|
888
|
+
_pendingRequests.clear();
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
|
|
526
893
|
void
|
|
527
894
|
LocatorI::runTimerTask()
|
|
528
895
|
{
|
|
@@ -531,8 +898,29 @@ LocatorI::runTimerTask()
|
|
|
531
898
|
{
|
|
532
899
|
try
|
|
533
900
|
{
|
|
534
|
-
|
|
535
|
-
|
|
901
|
+
_failureCount = 0;
|
|
902
|
+
for(vector<pair<LookupPrxPtr, LookupReplyPrxPtr> >::const_iterator l = _lookups.begin();
|
|
903
|
+
l != _lookups.end(); ++l)
|
|
904
|
+
{
|
|
905
|
+
#ifdef ICE_CPP11_MAPPING
|
|
906
|
+
auto self = shared_from_this();
|
|
907
|
+
l->first->findLocatorAsync(_instanceName, l->second, nullptr, [self](exception_ptr ex)
|
|
908
|
+
{
|
|
909
|
+
try
|
|
910
|
+
{
|
|
911
|
+
rethrow_exception(ex);
|
|
912
|
+
}
|
|
913
|
+
catch(const Ice::LocalException& e)
|
|
914
|
+
{
|
|
915
|
+
self->exception(e);
|
|
916
|
+
}
|
|
917
|
+
});
|
|
918
|
+
#else
|
|
919
|
+
l->first->begin_findLocator(_instanceName, l->second, Ice::newCallback(new CallbackI(this),
|
|
920
|
+
&CallbackI::completed));
|
|
921
|
+
#endif
|
|
922
|
+
}
|
|
923
|
+
_timer->schedule(ICE_SHARED_FROM_THIS, _timeout);
|
|
536
924
|
return;
|
|
537
925
|
}
|
|
538
926
|
catch(const Ice::LocalException&)
|
|
@@ -541,16 +929,23 @@ LocatorI::runTimerTask()
|
|
|
541
929
|
_pendingRetryCount = 0;
|
|
542
930
|
}
|
|
543
931
|
|
|
544
|
-
|
|
932
|
+
if(_pendingRequests.empty())
|
|
545
933
|
{
|
|
546
|
-
(
|
|
934
|
+
notify();
|
|
935
|
+
}
|
|
936
|
+
else
|
|
937
|
+
{
|
|
938
|
+
for(vector<RequestPtr>::const_iterator p = _pendingRequests.begin(); p != _pendingRequests.end(); ++p)
|
|
939
|
+
{
|
|
940
|
+
(*p)->invoke(_voidLocator); // Send pending requests on void locator.
|
|
941
|
+
}
|
|
942
|
+
_pendingRequests.clear();
|
|
547
943
|
}
|
|
548
|
-
_pendingRequests.clear();
|
|
549
944
|
_nextRetry = IceUtil::Time::now() + _retryDelay; // Only retry when the retry delay expires
|
|
550
945
|
}
|
|
551
946
|
|
|
552
947
|
void
|
|
553
|
-
LookupReplyI::foundLocator(
|
|
948
|
+
LookupReplyI::foundLocator(ICE_IN(Ice::LocatorPrxPtr) locator, const Ice::Current&)
|
|
554
949
|
{
|
|
555
950
|
_locator->foundLocator(locator);
|
|
556
951
|
}
|