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
|
@@ -1,13 +1,13 @@
|
|
|
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.
|
|
7
7
|
//
|
|
8
8
|
// **********************************************************************
|
|
9
9
|
|
|
10
|
-
#ifdef __sun
|
|
10
|
+
#ifdef __sun
|
|
11
11
|
//
|
|
12
12
|
// Solaris 10 bug: it's supposed to be defined in pthread.h
|
|
13
13
|
//
|
|
@@ -19,10 +19,11 @@
|
|
|
19
19
|
#include <IceUtil/Thread.h>
|
|
20
20
|
#include <IceUtil/Time.h>
|
|
21
21
|
#include <IceUtil/ThreadException.h>
|
|
22
|
+
#include <Ice/ConsoleUtil.h>
|
|
22
23
|
#include <climits>
|
|
23
24
|
#include <exception>
|
|
24
25
|
|
|
25
|
-
#ifdef
|
|
26
|
+
#ifdef ICE_OS_UWP
|
|
26
27
|
# include <thread>
|
|
27
28
|
#endif
|
|
28
29
|
|
|
@@ -32,8 +33,9 @@
|
|
|
32
33
|
#endif
|
|
33
34
|
|
|
34
35
|
using namespace std;
|
|
36
|
+
using namespace IceInternal;
|
|
35
37
|
|
|
36
|
-
#ifdef
|
|
38
|
+
#ifdef ICE_OS_UWP
|
|
37
39
|
|
|
38
40
|
IceUtil::ThreadControl::ThreadControl() :
|
|
39
41
|
_id(this_thread::get_id())
|
|
@@ -83,7 +85,7 @@ IceUtil::ThreadControl::detach()
|
|
|
83
85
|
{
|
|
84
86
|
throw BadThreadControlException(__FILE__, __LINE__);
|
|
85
87
|
}
|
|
86
|
-
|
|
88
|
+
|
|
87
89
|
try
|
|
88
90
|
{
|
|
89
91
|
_thread->detach();
|
|
@@ -169,13 +171,13 @@ WINAPI startHook(void* arg)
|
|
|
169
171
|
{
|
|
170
172
|
if(!thread->name().empty())
|
|
171
173
|
{
|
|
172
|
-
|
|
174
|
+
consoleErr << thread->name() << " terminating" << endl;
|
|
173
175
|
}
|
|
174
176
|
std::terminate();
|
|
175
177
|
}
|
|
176
178
|
|
|
177
179
|
thread->_done();
|
|
178
|
-
|
|
180
|
+
|
|
179
181
|
return 0;
|
|
180
182
|
}
|
|
181
183
|
|
|
@@ -216,7 +218,7 @@ IceUtil::Thread::start(size_t, int)
|
|
|
216
218
|
|
|
217
219
|
_started = true;
|
|
218
220
|
_running = true;
|
|
219
|
-
|
|
221
|
+
|
|
220
222
|
return ThreadControl(_thread);
|
|
221
223
|
}
|
|
222
224
|
|
|
@@ -237,12 +239,6 @@ IceUtil::Thread::operator==(const Thread& rhs) const
|
|
|
237
239
|
return this == &rhs;
|
|
238
240
|
}
|
|
239
241
|
|
|
240
|
-
bool
|
|
241
|
-
IceUtil::Thread::operator!=(const Thread& rhs) const
|
|
242
|
-
{
|
|
243
|
-
return this != &rhs;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
242
|
bool
|
|
247
243
|
IceUtil::Thread::operator<(const Thread& rhs) const
|
|
248
244
|
{
|
|
@@ -308,7 +304,7 @@ IceUtil::ThreadControl::join()
|
|
|
308
304
|
{
|
|
309
305
|
throw ThreadSyscallException(__FILE__, __LINE__, GetLastError());
|
|
310
306
|
}
|
|
311
|
-
|
|
307
|
+
|
|
312
308
|
detach();
|
|
313
309
|
}
|
|
314
310
|
|
|
@@ -319,7 +315,7 @@ IceUtil::ThreadControl::detach()
|
|
|
319
315
|
{
|
|
320
316
|
throw BadThreadControlException(__FILE__, __LINE__);
|
|
321
317
|
}
|
|
322
|
-
|
|
318
|
+
|
|
323
319
|
if(CloseHandle(_handle) == 0)
|
|
324
320
|
{
|
|
325
321
|
throw ThreadSyscallException(__FILE__, __LINE__, GetLastError());
|
|
@@ -410,13 +406,13 @@ WINAPI startHook(void* arg)
|
|
|
410
406
|
{
|
|
411
407
|
if(!thread->name().empty())
|
|
412
408
|
{
|
|
413
|
-
|
|
409
|
+
consoleErr << thread->name() << " terminating" << endl;
|
|
414
410
|
}
|
|
415
411
|
std::terminate();
|
|
416
412
|
}
|
|
417
413
|
|
|
418
414
|
thread->_done();
|
|
419
|
-
|
|
415
|
+
|
|
420
416
|
return 0;
|
|
421
417
|
}
|
|
422
418
|
|
|
@@ -453,14 +449,14 @@ IceUtil::Thread::start(size_t stackSize, int priority)
|
|
|
453
449
|
// __decRef().
|
|
454
450
|
//
|
|
455
451
|
__incRef();
|
|
456
|
-
|
|
452
|
+
|
|
457
453
|
unsigned int id;
|
|
458
|
-
_handle =
|
|
454
|
+
_handle =
|
|
459
455
|
reinterpret_cast<HANDLE>(
|
|
460
|
-
_beginthreadex(0,
|
|
461
|
-
static_cast<unsigned int>(stackSize),
|
|
462
|
-
startHook, this,
|
|
463
|
-
CREATE_SUSPENDED,
|
|
456
|
+
_beginthreadex(0,
|
|
457
|
+
static_cast<unsigned int>(stackSize),
|
|
458
|
+
startHook, this,
|
|
459
|
+
CREATE_SUSPENDED,
|
|
464
460
|
&id));
|
|
465
461
|
_id = id;
|
|
466
462
|
assert(_handle != (HANDLE)-1L);
|
|
@@ -481,7 +477,7 @@ IceUtil::Thread::start(size_t stackSize, int priority)
|
|
|
481
477
|
|
|
482
478
|
_started = true;
|
|
483
479
|
_running = true;
|
|
484
|
-
|
|
480
|
+
|
|
485
481
|
return ThreadControl(_handle, _id);
|
|
486
482
|
}
|
|
487
483
|
|
|
@@ -502,12 +498,6 @@ IceUtil::Thread::operator==(const Thread& rhs) const
|
|
|
502
498
|
return this == &rhs;
|
|
503
499
|
}
|
|
504
500
|
|
|
505
|
-
bool
|
|
506
|
-
IceUtil::Thread::operator!=(const Thread& rhs) const
|
|
507
|
-
{
|
|
508
|
-
return this != &rhs;
|
|
509
|
-
}
|
|
510
|
-
|
|
511
501
|
bool
|
|
512
502
|
IceUtil::Thread::operator<(const Thread& rhs) const
|
|
513
503
|
{
|
|
@@ -635,7 +625,7 @@ IceUtil::Thread::~Thread()
|
|
|
635
625
|
{
|
|
636
626
|
}
|
|
637
627
|
|
|
638
|
-
extern "C"
|
|
628
|
+
extern "C"
|
|
639
629
|
{
|
|
640
630
|
static void*
|
|
641
631
|
startHook(void* arg)
|
|
@@ -662,18 +652,17 @@ startHook(void* arg)
|
|
|
662
652
|
{
|
|
663
653
|
if(!thread->name().empty())
|
|
664
654
|
{
|
|
665
|
-
|
|
655
|
+
consoleErr << thread->name() << " terminating" << endl;
|
|
666
656
|
}
|
|
667
657
|
std::terminate();
|
|
668
658
|
}
|
|
669
659
|
|
|
670
660
|
thread->_done();
|
|
671
|
-
|
|
661
|
+
|
|
672
662
|
return 0;
|
|
673
663
|
}
|
|
674
664
|
}
|
|
675
665
|
|
|
676
|
-
|
|
677
666
|
IceUtil::ThreadControl
|
|
678
667
|
IceUtil::Thread::start(size_t stackSize)
|
|
679
668
|
{
|
|
@@ -789,12 +778,6 @@ IceUtil::Thread::operator==(const Thread& rhs) const
|
|
|
789
778
|
return this == &rhs;
|
|
790
779
|
}
|
|
791
780
|
|
|
792
|
-
bool
|
|
793
|
-
IceUtil::Thread::operator!=(const Thread& rhs) const
|
|
794
|
-
{
|
|
795
|
-
return this != &rhs;
|
|
796
|
-
}
|
|
797
|
-
|
|
798
781
|
bool
|
|
799
782
|
IceUtil::Thread::operator<(const Thread& rhs) const
|
|
800
783
|
{
|
|
@@ -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.
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
#include <Ice/Properties.h>
|
|
19
19
|
#include <Ice/TraceLevels.h>
|
|
20
20
|
|
|
21
|
-
#if defined(
|
|
22
|
-
# include <
|
|
21
|
+
#if defined(ICE_OS_UWP)
|
|
22
|
+
# include <Ice/StringConverter.h>
|
|
23
23
|
#endif
|
|
24
24
|
|
|
25
25
|
using namespace std;
|
|
@@ -70,6 +70,14 @@ public:
|
|
|
70
70
|
execute(ThreadPoolCurrent& current)
|
|
71
71
|
{
|
|
72
72
|
_handler->finished(current, _close);
|
|
73
|
+
|
|
74
|
+
//
|
|
75
|
+
// Break cyclic reference count.
|
|
76
|
+
//
|
|
77
|
+
if(_handler->getNativeInfo())
|
|
78
|
+
{
|
|
79
|
+
_handler->getNativeInfo()->setReadyCallback(0);
|
|
80
|
+
}
|
|
73
81
|
}
|
|
74
82
|
|
|
75
83
|
private:
|
|
@@ -99,29 +107,6 @@ private:
|
|
|
99
107
|
IceUtil::ThreadPtr _thread;
|
|
100
108
|
};
|
|
101
109
|
|
|
102
|
-
class InterruptWorkItem : public ThreadPoolWorkItem
|
|
103
|
-
{
|
|
104
|
-
public:
|
|
105
|
-
|
|
106
|
-
virtual void
|
|
107
|
-
execute(ThreadPoolCurrent& current)
|
|
108
|
-
{
|
|
109
|
-
// Nothing to do, this is just used to interrupt the thread pool selector.
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
ThreadPoolWorkItemPtr interruptWorkItem;
|
|
113
|
-
|
|
114
|
-
class InterruptWorkItemInit
|
|
115
|
-
{
|
|
116
|
-
public:
|
|
117
|
-
|
|
118
|
-
InterruptWorkItemInit()
|
|
119
|
-
{
|
|
120
|
-
interruptWorkItem = new InterruptWorkItem;
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
InterruptWorkItemInit init;
|
|
124
|
-
|
|
125
110
|
//
|
|
126
111
|
// Exception raised by the thread pool work queue when the thread pool
|
|
127
112
|
// is destroyed.
|
|
@@ -132,6 +117,16 @@ class ThreadPoolDestroyedException
|
|
|
132
117
|
|
|
133
118
|
}
|
|
134
119
|
|
|
120
|
+
Ice::DispatcherCall::~DispatcherCall()
|
|
121
|
+
{
|
|
122
|
+
// Out of line to avoid weak vtable
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
Ice::Dispatcher::~Dispatcher()
|
|
126
|
+
{
|
|
127
|
+
// Out of line to avoid weak vtable
|
|
128
|
+
}
|
|
129
|
+
|
|
135
130
|
IceInternal::DispatchWorkItem::DispatchWorkItem()
|
|
136
131
|
{
|
|
137
132
|
}
|
|
@@ -147,81 +142,42 @@ IceInternal::DispatchWorkItem::execute(ThreadPoolCurrent& current)
|
|
|
147
142
|
current.dispatchFromThisThread(this);
|
|
148
143
|
}
|
|
149
144
|
|
|
150
|
-
IceInternal::ThreadPoolWorkQueue::ThreadPoolWorkQueue(
|
|
151
|
-
|
|
152
|
-
_selector(selector),
|
|
145
|
+
IceInternal::ThreadPoolWorkQueue::ThreadPoolWorkQueue(ThreadPool& threadPool) :
|
|
146
|
+
_threadPool(threadPool),
|
|
153
147
|
_destroyed(false)
|
|
154
|
-
#ifdef ICE_USE_IOCP
|
|
155
|
-
, _info(SocketOperationRead)
|
|
156
|
-
#endif
|
|
157
148
|
{
|
|
158
|
-
|
|
159
|
-
SOCKET fds[2];
|
|
160
|
-
createPipe(fds);
|
|
161
|
-
_fdIntrRead = fds[0];
|
|
162
|
-
_fdIntrWrite = fds[1];
|
|
163
|
-
|
|
164
|
-
_selector.initialize(this);
|
|
165
|
-
_selector.update(this, SocketOperationNone, SocketOperationRead);
|
|
166
|
-
#endif
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
IceInternal::ThreadPoolWorkQueue::~ThreadPoolWorkQueue()
|
|
170
|
-
{
|
|
171
|
-
assert(_destroyed);
|
|
172
|
-
|
|
173
|
-
#if !defined(ICE_USE_IOCP) && !defined(ICE_OS_WINRT)
|
|
174
|
-
try
|
|
175
|
-
{
|
|
176
|
-
closeSocket(_fdIntrRead);
|
|
177
|
-
}
|
|
178
|
-
catch(const LocalException& ex)
|
|
179
|
-
{
|
|
180
|
-
Error out(_instance->initializationData().logger);
|
|
181
|
-
out << "exception in selector while calling closeSocket():\n" << ex;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
try
|
|
185
|
-
{
|
|
186
|
-
closeSocket(_fdIntrWrite);
|
|
187
|
-
}
|
|
188
|
-
catch(const LocalException& ex)
|
|
189
|
-
{
|
|
190
|
-
Error out(_instance->initializationData().logger);
|
|
191
|
-
out << "exception in selector while calling closeSocket():\n" << ex;
|
|
192
|
-
}
|
|
193
|
-
#endif
|
|
149
|
+
_registered = SocketOperationRead;
|
|
194
150
|
}
|
|
195
151
|
|
|
196
152
|
void
|
|
197
153
|
IceInternal::ThreadPoolWorkQueue::destroy()
|
|
198
154
|
{
|
|
199
|
-
Lock sync(*this);
|
|
155
|
+
//Lock sync(*this); Called with the thread pool locked
|
|
200
156
|
assert(!_destroyed);
|
|
201
157
|
_destroyed = true;
|
|
202
|
-
|
|
158
|
+
#if defined(ICE_USE_IOCP) || defined(ICE_OS_UWP)
|
|
159
|
+
_threadPool._selector.completed(this, SocketOperationRead);
|
|
160
|
+
#else
|
|
161
|
+
_threadPool._selector.ready(this, SocketOperationRead, true);
|
|
162
|
+
#endif
|
|
203
163
|
}
|
|
204
164
|
|
|
205
165
|
void
|
|
206
166
|
IceInternal::ThreadPoolWorkQueue::queue(const ThreadPoolWorkItemPtr& item)
|
|
207
167
|
{
|
|
208
|
-
Lock sync(*this);
|
|
209
|
-
if(_destroyed)
|
|
210
|
-
{
|
|
211
|
-
throw CommunicatorDestroyedException(__FILE__, __LINE__);
|
|
212
|
-
}
|
|
168
|
+
//Lock sync(*this); Called with the thread pool locked
|
|
213
169
|
_workItems.push_back(item);
|
|
214
|
-
#if
|
|
170
|
+
#if defined(ICE_USE_IOCP) || defined(ICE_OS_UWP)
|
|
171
|
+
_threadPool._selector.completed(this, SocketOperationRead);
|
|
172
|
+
#else
|
|
215
173
|
if(_workItems.size() == 1)
|
|
216
174
|
{
|
|
217
|
-
|
|
175
|
+
_threadPool._selector.ready(this, SocketOperationRead, true);
|
|
218
176
|
}
|
|
219
|
-
#else
|
|
220
|
-
postMessage();
|
|
221
177
|
#endif
|
|
222
178
|
}
|
|
223
179
|
|
|
224
|
-
#if defined(ICE_USE_IOCP) || defined(
|
|
180
|
+
#if defined(ICE_USE_IOCP) || defined(ICE_OS_UWP)
|
|
225
181
|
bool
|
|
226
182
|
IceInternal::ThreadPoolWorkQueue::startAsync(SocketOperation)
|
|
227
183
|
{
|
|
@@ -242,47 +198,24 @@ IceInternal::ThreadPoolWorkQueue::message(ThreadPoolCurrent& current)
|
|
|
242
198
|
{
|
|
243
199
|
ThreadPoolWorkItemPtr workItem;
|
|
244
200
|
{
|
|
245
|
-
Lock sync(
|
|
201
|
+
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(_threadPool);
|
|
246
202
|
if(!_workItems.empty())
|
|
247
203
|
{
|
|
248
204
|
workItem = _workItems.front();
|
|
249
205
|
_workItems.pop_front();
|
|
250
|
-
|
|
251
|
-
#if !defined(ICE_USE_IOCP) && !defined(ICE_OS_WINRT)
|
|
252
|
-
if(_workItems.empty())
|
|
253
|
-
{
|
|
254
|
-
char c;
|
|
255
|
-
while(true)
|
|
256
|
-
{
|
|
257
|
-
ssize_t ret;
|
|
258
|
-
# ifdef _WIN32
|
|
259
|
-
ret = ::recv(_fdIntrRead, &c, 1, 0);
|
|
260
|
-
# else
|
|
261
|
-
ret = ::read(_fdIntrRead, &c, 1);
|
|
262
|
-
# endif
|
|
263
|
-
if(ret == SOCKET_ERROR)
|
|
264
|
-
{
|
|
265
|
-
if(interrupted())
|
|
266
|
-
{
|
|
267
|
-
continue;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
SocketException ex(__FILE__, __LINE__);
|
|
271
|
-
ex.error = getSocketErrno();
|
|
272
|
-
throw ex;
|
|
273
|
-
}
|
|
274
|
-
break;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
#endif
|
|
278
206
|
}
|
|
207
|
+
#if defined(ICE_USE_IOCP) || defined(ICE_OS_UWP)
|
|
279
208
|
else
|
|
280
209
|
{
|
|
281
210
|
assert(_destroyed);
|
|
282
|
-
|
|
283
|
-
postMessage();
|
|
284
|
-
#endif
|
|
211
|
+
_threadPool._selector.completed(this, SocketOperationRead);
|
|
285
212
|
}
|
|
213
|
+
#else
|
|
214
|
+
if(_workItems.empty() && !_destroyed)
|
|
215
|
+
{
|
|
216
|
+
_threadPool._selector.ready(this, SocketOperationRead, false);
|
|
217
|
+
}
|
|
218
|
+
#endif
|
|
286
219
|
}
|
|
287
220
|
|
|
288
221
|
if(workItem)
|
|
@@ -291,6 +224,7 @@ IceInternal::ThreadPoolWorkQueue::message(ThreadPoolCurrent& current)
|
|
|
291
224
|
}
|
|
292
225
|
else
|
|
293
226
|
{
|
|
227
|
+
assert(_destroyed);
|
|
294
228
|
current.ioCompleted();
|
|
295
229
|
throw ThreadPoolDestroyedException();
|
|
296
230
|
}
|
|
@@ -311,47 +245,7 @@ IceInternal::ThreadPoolWorkQueue::toString() const
|
|
|
311
245
|
NativeInfoPtr
|
|
312
246
|
IceInternal::ThreadPoolWorkQueue::getNativeInfo()
|
|
313
247
|
{
|
|
314
|
-
#if !defined(ICE_USE_IOCP) && !defined(ICE_OS_WINRT)
|
|
315
|
-
return new NativeInfo(_fdIntrRead);
|
|
316
|
-
#else
|
|
317
248
|
return 0;
|
|
318
|
-
#endif
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
void
|
|
322
|
-
IceInternal::ThreadPoolWorkQueue::postMessage()
|
|
323
|
-
{
|
|
324
|
-
#if defined(ICE_USE_IOCP)
|
|
325
|
-
if(!PostQueuedCompletionStatus(_selector.getIOCPHandle(), 0, reinterpret_cast<ULONG_PTR>(this), &_info))
|
|
326
|
-
{
|
|
327
|
-
SocketException ex(__FILE__, __LINE__);
|
|
328
|
-
ex.error = GetLastError();
|
|
329
|
-
throw ex;
|
|
330
|
-
}
|
|
331
|
-
#elif defined(ICE_OS_WINRT)
|
|
332
|
-
_selector.completed(this, SocketOperationRead);
|
|
333
|
-
#else
|
|
334
|
-
char c = 0;
|
|
335
|
-
while(true)
|
|
336
|
-
{
|
|
337
|
-
# ifdef _WIN32
|
|
338
|
-
if(::send(_fdIntrWrite, &c, 1, 0) == SOCKET_ERROR)
|
|
339
|
-
# else
|
|
340
|
-
if(::write(_fdIntrWrite, &c, 1) == SOCKET_ERROR)
|
|
341
|
-
# endif
|
|
342
|
-
{
|
|
343
|
-
if(interrupted())
|
|
344
|
-
{
|
|
345
|
-
continue;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
SocketException ex(__FILE__, __LINE__);
|
|
349
|
-
ex.error = getSocketErrno();
|
|
350
|
-
throw ex;
|
|
351
|
-
}
|
|
352
|
-
break;
|
|
353
|
-
}
|
|
354
|
-
#endif
|
|
355
249
|
}
|
|
356
250
|
|
|
357
251
|
IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& prefix, int timeout) :
|
|
@@ -372,14 +266,14 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p
|
|
|
372
266
|
_threadIdleTime(0),
|
|
373
267
|
_stackSize(0),
|
|
374
268
|
_inUse(0),
|
|
375
|
-
#if !defined(ICE_USE_IOCP) && !defined(
|
|
269
|
+
#if !defined(ICE_USE_IOCP) && !defined(ICE_OS_UWP)
|
|
376
270
|
_inUseIO(0),
|
|
377
271
|
_nextHandler(_handlers.end()),
|
|
378
272
|
#endif
|
|
379
273
|
_promote(true)
|
|
380
274
|
{
|
|
381
275
|
PropertiesPtr properties = _instance->initializationData().properties;
|
|
382
|
-
#ifndef
|
|
276
|
+
#ifndef ICE_OS_UWP
|
|
383
277
|
# ifdef _WIN32
|
|
384
278
|
SYSTEM_INFO sysInfo;
|
|
385
279
|
GetSystemInfo(&sysInfo);
|
|
@@ -403,7 +297,7 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p
|
|
|
403
297
|
}
|
|
404
298
|
|
|
405
299
|
int sizeMax = properties->getPropertyAsIntWithDefault(_prefix + ".SizeMax", size);
|
|
406
|
-
#ifndef
|
|
300
|
+
#ifndef ICE_OS_UWP
|
|
407
301
|
if(sizeMax == -1)
|
|
408
302
|
{
|
|
409
303
|
sizeMax = nProcessors;
|
|
@@ -441,7 +335,7 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p
|
|
|
441
335
|
const_cast<int&>(_size) = size;
|
|
442
336
|
const_cast<int&>(_sizeMax) = sizeMax;
|
|
443
337
|
const_cast<int&>(_sizeWarn) = sizeWarn;
|
|
444
|
-
#ifndef
|
|
338
|
+
#ifndef ICE_OS_UWP
|
|
445
339
|
const_cast<int&>(_sizeIO) = min(sizeMax, nProcessors);
|
|
446
340
|
#else
|
|
447
341
|
const_cast<int&>(_sizeIO) = sizeMax;
|
|
@@ -452,7 +346,16 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p
|
|
|
452
346
|
_selector.setup(_sizeIO);
|
|
453
347
|
#endif
|
|
454
348
|
|
|
455
|
-
|
|
349
|
+
#if defined(__APPLE__)
|
|
350
|
+
//
|
|
351
|
+
// We use a default stack size of 1MB on macOS and the new C++11 mapping to allow transmitting
|
|
352
|
+
// class graphs with a depth of 100 (maximum default), 512KB is not enough otherwise.
|
|
353
|
+
//
|
|
354
|
+
int defaultStackSize = 1024 * 1024; // 1MB
|
|
355
|
+
#else
|
|
356
|
+
int defaultStackSize = 0;
|
|
357
|
+
#endif
|
|
358
|
+
int stackSize = properties->getPropertyAsIntWithDefault(_prefix + ".StackSize", defaultStackSize);
|
|
456
359
|
if(stackSize < 0)
|
|
457
360
|
{
|
|
458
361
|
Warning out(_instance->initializationData().logger);
|
|
@@ -469,7 +372,8 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p
|
|
|
469
372
|
const_cast<int&>(_priority) = properties->getPropertyAsInt("Ice.ThreadPriority");
|
|
470
373
|
}
|
|
471
374
|
|
|
472
|
-
_workQueue =
|
|
375
|
+
_workQueue = ICE_MAKE_SHARED(ThreadPoolWorkQueue, *this);
|
|
376
|
+
_selector.initialize(_workQueue.get());
|
|
473
377
|
|
|
474
378
|
if(_instance->traceLevels()->threadPool >= 1)
|
|
475
379
|
{
|
|
@@ -528,7 +432,6 @@ IceInternal::ThreadPool::destroy()
|
|
|
528
432
|
{
|
|
529
433
|
return;
|
|
530
434
|
}
|
|
531
|
-
|
|
532
435
|
_destroyed = true;
|
|
533
436
|
_workQueue->destroy();
|
|
534
437
|
}
|
|
@@ -549,6 +452,28 @@ IceInternal::ThreadPool::initialize(const EventHandlerPtr& handler)
|
|
|
549
452
|
Lock sync(*this);
|
|
550
453
|
assert(!_destroyed);
|
|
551
454
|
_selector.initialize(handler.get());
|
|
455
|
+
|
|
456
|
+
class ReadyCallbackI : public ReadyCallback
|
|
457
|
+
{
|
|
458
|
+
public:
|
|
459
|
+
|
|
460
|
+
ReadyCallbackI(const ThreadPoolPtr& threadPool, const EventHandlerPtr& handler) :
|
|
461
|
+
_threadPool(threadPool), _handler(handler)
|
|
462
|
+
{
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
virtual void
|
|
466
|
+
ready(SocketOperation op, bool value)
|
|
467
|
+
{
|
|
468
|
+
_threadPool->ready(_handler, op, value);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
private:
|
|
472
|
+
|
|
473
|
+
const ThreadPoolPtr _threadPool;
|
|
474
|
+
const EventHandlerPtr _handler;
|
|
475
|
+
};
|
|
476
|
+
handler->getNativeInfo()->setReadyCallback(new ReadyCallbackI(this, handler));
|
|
552
477
|
}
|
|
553
478
|
|
|
554
479
|
void
|
|
@@ -569,20 +494,6 @@ IceInternal::ThreadPool::update(const EventHandlerPtr& handler, SocketOperation
|
|
|
569
494
|
}
|
|
570
495
|
|
|
571
496
|
_selector.update(handler.get(), remove, add);
|
|
572
|
-
#if !defined(ICE_USE_IOCP) && !defined(ICE_OS_WINRT)
|
|
573
|
-
if(add & SocketOperationRead && handler->_hasMoreData && !(handler->_disabled & SocketOperationRead))
|
|
574
|
-
{
|
|
575
|
-
if(_pendingHandlers.empty())
|
|
576
|
-
{
|
|
577
|
-
_workQueue->queue(interruptWorkItem); // Interrupt select()
|
|
578
|
-
}
|
|
579
|
-
_pendingHandlers.insert(handler.get());
|
|
580
|
-
}
|
|
581
|
-
else if(remove & SocketOperationRead)
|
|
582
|
-
{
|
|
583
|
-
_pendingHandlers.erase(handler.get());
|
|
584
|
-
}
|
|
585
|
-
#endif
|
|
586
497
|
}
|
|
587
498
|
|
|
588
499
|
bool
|
|
@@ -590,9 +501,8 @@ IceInternal::ThreadPool::finish(const EventHandlerPtr& handler, bool closeNow)
|
|
|
590
501
|
{
|
|
591
502
|
Lock sync(*this);
|
|
592
503
|
assert(!_destroyed);
|
|
593
|
-
#if !defined(ICE_USE_IOCP) && !defined(
|
|
504
|
+
#if !defined(ICE_USE_IOCP) && !defined(ICE_OS_UWP)
|
|
594
505
|
closeNow = _selector.finish(handler.get(), closeNow); // This must be called before!
|
|
595
|
-
_pendingHandlers.erase(handler.get());
|
|
596
506
|
_workQueue->queue(new FinishedWorkItem(handler, !closeNow));
|
|
597
507
|
return closeNow;
|
|
598
508
|
#else
|
|
@@ -610,6 +520,17 @@ IceInternal::ThreadPool::finish(const EventHandlerPtr& handler, bool closeNow)
|
|
|
610
520
|
#endif
|
|
611
521
|
}
|
|
612
522
|
|
|
523
|
+
void
|
|
524
|
+
IceInternal::ThreadPool::ready(const EventHandlerPtr& handler, SocketOperation op, bool value)
|
|
525
|
+
{
|
|
526
|
+
Lock sync(*this);
|
|
527
|
+
if(_destroyed)
|
|
528
|
+
{
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
_selector.ready(handler.get(), op, value);
|
|
532
|
+
}
|
|
533
|
+
|
|
613
534
|
void
|
|
614
535
|
IceInternal::ThreadPool::dispatchFromThisThread(const DispatchWorkItemPtr& workItem)
|
|
615
536
|
{
|
|
@@ -617,7 +538,15 @@ IceInternal::ThreadPool::dispatchFromThisThread(const DispatchWorkItemPtr& workI
|
|
|
617
538
|
{
|
|
618
539
|
try
|
|
619
540
|
{
|
|
541
|
+
#ifdef ICE_CPP11_MAPPING
|
|
542
|
+
_dispatcher([workItem]()
|
|
543
|
+
{
|
|
544
|
+
workItem->run();
|
|
545
|
+
},
|
|
546
|
+
workItem->getConnection());
|
|
547
|
+
#else
|
|
620
548
|
_dispatcher->dispatch(workItem, workItem->getConnection());
|
|
549
|
+
#endif
|
|
621
550
|
}
|
|
622
551
|
catch(const std::exception& ex)
|
|
623
552
|
{
|
|
@@ -645,6 +574,11 @@ IceInternal::ThreadPool::dispatchFromThisThread(const DispatchWorkItemPtr& workI
|
|
|
645
574
|
void
|
|
646
575
|
IceInternal::ThreadPool::dispatch(const DispatchWorkItemPtr& workItem)
|
|
647
576
|
{
|
|
577
|
+
Lock sync(*this);
|
|
578
|
+
if(_destroyed)
|
|
579
|
+
{
|
|
580
|
+
throw CommunicatorDestroyedException(__FILE__, __LINE__);
|
|
581
|
+
}
|
|
648
582
|
_workQueue->queue(workItem);
|
|
649
583
|
}
|
|
650
584
|
|
|
@@ -663,10 +597,6 @@ IceInternal::ThreadPool::joinWithAllThreads()
|
|
|
663
597
|
{
|
|
664
598
|
(*p)->getThreadControl().join();
|
|
665
599
|
}
|
|
666
|
-
|
|
667
|
-
#if !defined(ICE_USE_IOCP) && !defined(ICE_OS_WINRT)
|
|
668
|
-
_selector.finish(_workQueue.get(), true);
|
|
669
|
-
#endif
|
|
670
600
|
_selector.destroy();
|
|
671
601
|
}
|
|
672
602
|
|
|
@@ -679,10 +609,9 @@ IceInternal::ThreadPool::prefix() const
|
|
|
679
609
|
void
|
|
680
610
|
IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
681
611
|
{
|
|
682
|
-
#if !defined(ICE_USE_IOCP) && !defined(
|
|
612
|
+
#if !defined(ICE_USE_IOCP) && !defined(ICE_OS_UWP)
|
|
683
613
|
ThreadPoolCurrent current(_instance, this, thread);
|
|
684
614
|
bool select = false;
|
|
685
|
-
vector<pair<EventHandler*, SocketOperation> > handlers;
|
|
686
615
|
while(true)
|
|
687
616
|
{
|
|
688
617
|
if(current._handler)
|
|
@@ -711,7 +640,7 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
711
640
|
{
|
|
712
641
|
try
|
|
713
642
|
{
|
|
714
|
-
_selector.select(
|
|
643
|
+
_selector.select(_serverIdleTime);
|
|
715
644
|
}
|
|
716
645
|
catch(const SelectorTimeoutException&)
|
|
717
646
|
{
|
|
@@ -730,22 +659,8 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
730
659
|
{
|
|
731
660
|
if(select)
|
|
732
661
|
{
|
|
733
|
-
|
|
734
|
-
if(!_pendingHandlers.empty())
|
|
735
|
-
{
|
|
736
|
-
for(_nextHandler = _handlers.begin(); _nextHandler != _handlers.end(); ++_nextHandler)
|
|
737
|
-
{
|
|
738
|
-
_pendingHandlers.erase(_nextHandler->first);
|
|
739
|
-
}
|
|
740
|
-
set<EventHandler*>::const_iterator p;
|
|
741
|
-
for(p = _pendingHandlers.begin(); p != _pendingHandlers.end(); ++p)
|
|
742
|
-
{
|
|
743
|
-
_handlers.push_back(make_pair(*p, SocketOperationRead));
|
|
744
|
-
}
|
|
745
|
-
_pendingHandlers.clear();
|
|
746
|
-
}
|
|
662
|
+
_selector.finishSelect(_handlers);
|
|
747
663
|
_nextHandler = _handlers.begin();
|
|
748
|
-
_selector.finishSelect();
|
|
749
664
|
select = false;
|
|
750
665
|
}
|
|
751
666
|
else if(!current._leader && followerWait(current))
|
|
@@ -762,14 +677,6 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
762
677
|
// the IO thread count now.
|
|
763
678
|
//
|
|
764
679
|
--_inUseIO;
|
|
765
|
-
if(current._handler->_hasMoreData && current._handler->_registered & SocketOperationRead)
|
|
766
|
-
{
|
|
767
|
-
if(_pendingHandlers.empty())
|
|
768
|
-
{
|
|
769
|
-
_workQueue->queue(interruptWorkItem); // Interrupt select()
|
|
770
|
-
}
|
|
771
|
-
_pendingHandlers.insert(current._handler.get());
|
|
772
|
-
}
|
|
773
680
|
}
|
|
774
681
|
else
|
|
775
682
|
{
|
|
@@ -780,14 +687,6 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
780
687
|
if(_serialize && current._handler.get() != _workQueue.get())
|
|
781
688
|
{
|
|
782
689
|
_selector.enable(current._handler.get(), current.operation);
|
|
783
|
-
if(current._handler->_hasMoreData && current._handler->_registered & SocketOperationRead)
|
|
784
|
-
{
|
|
785
|
-
if(_pendingHandlers.empty())
|
|
786
|
-
{
|
|
787
|
-
_workQueue->queue(interruptWorkItem); // Interrupt select()
|
|
788
|
-
}
|
|
789
|
-
_pendingHandlers.insert(current._handler.get());
|
|
790
|
-
}
|
|
791
690
|
}
|
|
792
691
|
assert(_inUse > 0);
|
|
793
692
|
--_inUse;
|
|
@@ -798,29 +697,22 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
798
697
|
return; // Wait timed-out.
|
|
799
698
|
}
|
|
800
699
|
}
|
|
801
|
-
else if(current._handler->_hasMoreData && current._handler->_registered & SocketOperationRead)
|
|
802
|
-
{
|
|
803
|
-
if(_pendingHandlers.empty())
|
|
804
|
-
{
|
|
805
|
-
_workQueue->queue(interruptWorkItem); // Interrupt select()
|
|
806
|
-
}
|
|
807
|
-
_pendingHandlers.insert(current._handler.get());
|
|
808
|
-
}
|
|
809
700
|
|
|
810
701
|
//
|
|
811
702
|
// Get the next ready handler.
|
|
812
703
|
//
|
|
813
|
-
while(_nextHandler != _handlers.end() &&
|
|
704
|
+
while(_nextHandler != _handlers.end() &&
|
|
705
|
+
!(_nextHandler->second & ~_nextHandler->first->_disabled & _nextHandler->first->_registered))
|
|
814
706
|
{
|
|
815
707
|
++_nextHandler;
|
|
816
708
|
}
|
|
817
709
|
if(_nextHandler != _handlers.end())
|
|
818
710
|
{
|
|
819
711
|
current._ioCompleted = false;
|
|
820
|
-
current._handler = _nextHandler->first;
|
|
712
|
+
current._handler = ICE_GET_SHARED_FROM_THIS(_nextHandler->first);
|
|
821
713
|
current.operation = _nextHandler->second;
|
|
822
714
|
++_nextHandler;
|
|
823
|
-
thread->setState(ThreadStateInUseForIO);
|
|
715
|
+
thread->setState(ICE_ENUM(ThreadState, ThreadStateInUseForIO));
|
|
824
716
|
}
|
|
825
717
|
else
|
|
826
718
|
{
|
|
@@ -844,7 +736,7 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
844
736
|
_handlers.clear();
|
|
845
737
|
_selector.startSelect();
|
|
846
738
|
select = true;
|
|
847
|
-
thread->setState(ThreadStateIdle);
|
|
739
|
+
thread->setState(ICE_ENUM(ThreadState, ThreadStateIdle));
|
|
848
740
|
}
|
|
849
741
|
}
|
|
850
742
|
else if(_sizeMax > 1)
|
|
@@ -868,11 +760,11 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
868
760
|
try
|
|
869
761
|
{
|
|
870
762
|
current._ioCompleted = false;
|
|
871
|
-
#ifdef
|
|
872
|
-
current._handler = _selector.getNextHandler(current.operation, _threadIdleTime);
|
|
763
|
+
#ifdef ICE_OS_UWP
|
|
764
|
+
current._handler = ICE_GET_SHARED_FROM_THIS(_selector.getNextHandler(current.operation, _threadIdleTime));
|
|
873
765
|
#else
|
|
874
|
-
current._handler = _selector.getNextHandler(current.operation, current._count, current._error,
|
|
875
|
-
|
|
766
|
+
current._handler = ICE_GET_SHARED_FROM_THIS(_selector.getNextHandler(current.operation, current._count, current._error,
|
|
767
|
+
_threadIdleTime));
|
|
876
768
|
#endif
|
|
877
769
|
}
|
|
878
770
|
catch(const SelectorTimeoutException&)
|
|
@@ -887,7 +779,7 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
887
779
|
}
|
|
888
780
|
else if(_inUse < static_cast<int>(_threads.size() - 1)) // If not the last idle thread, we can exit.
|
|
889
781
|
{
|
|
890
|
-
#ifndef
|
|
782
|
+
#ifndef ICE_OS_UWP
|
|
891
783
|
BOOL hasIO = false;
|
|
892
784
|
GetThreadIOPendingFlag(GetCurrentThread(), &hasIO);
|
|
893
785
|
if(hasIO)
|
|
@@ -918,11 +810,12 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
918
810
|
|
|
919
811
|
try
|
|
920
812
|
{
|
|
921
|
-
#ifdef
|
|
922
|
-
current._handler = _selector.getNextHandler(current.operation, _serverIdleTime);
|
|
813
|
+
#ifdef ICE_OS_UWP
|
|
814
|
+
current._handler = ICE_GET_SHARED_FROM_THIS(_selector.getNextHandler(current.operation, _serverIdleTime));
|
|
923
815
|
#else
|
|
924
|
-
|
|
925
|
-
|
|
816
|
+
|
|
817
|
+
current._handler = ICE_GET_SHARED_FROM_THIS(_selector.getNextHandler(current.operation, current._count,
|
|
818
|
+
current._error, _serverIdleTime));
|
|
926
819
|
#endif
|
|
927
820
|
}
|
|
928
821
|
catch(const SelectorTimeoutException&)
|
|
@@ -938,7 +831,7 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
938
831
|
|
|
939
832
|
{
|
|
940
833
|
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
|
|
941
|
-
thread->setState(ThreadStateInUseForIO);
|
|
834
|
+
thread->setState(ICE_ENUM(ThreadState, ThreadStateInUseForIO));
|
|
942
835
|
}
|
|
943
836
|
|
|
944
837
|
try
|
|
@@ -955,7 +848,7 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
955
848
|
Error out(_instance->initializationData().logger);
|
|
956
849
|
out << "exception in `" << _prefix << "':\n" << ex << "\nevent handler: " << current._handler->toString();
|
|
957
850
|
}
|
|
958
|
-
#ifdef
|
|
851
|
+
#ifdef ICE_OS_UWP
|
|
959
852
|
catch(Platform::Exception^ ex)
|
|
960
853
|
{
|
|
961
854
|
//
|
|
@@ -964,7 +857,7 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
964
857
|
//
|
|
965
858
|
Error out(_instance->initializationData().logger);
|
|
966
859
|
out << "exception in `" << _prefix << "':\n"
|
|
967
|
-
<<
|
|
860
|
+
<< wstringToString(ex->Message->Data(), _instance->getStringConverter())
|
|
968
861
|
<< "\nevent handler: " << current._handler->toString();
|
|
969
862
|
}
|
|
970
863
|
#endif
|
|
@@ -981,7 +874,7 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
|
|
|
981
874
|
assert(_inUse > 0);
|
|
982
875
|
--_inUse;
|
|
983
876
|
}
|
|
984
|
-
thread->setState(ThreadStateIdle);
|
|
877
|
+
thread->setState(ICE_ENUM(ThreadState, ThreadStateIdle));
|
|
985
878
|
}
|
|
986
879
|
}
|
|
987
880
|
#endif
|
|
@@ -994,12 +887,12 @@ IceInternal::ThreadPool::ioCompleted(ThreadPoolCurrent& current)
|
|
|
994
887
|
|
|
995
888
|
current._ioCompleted = true; // Set the IO completed flag to specifiy that ioCompleted() has been called.
|
|
996
889
|
|
|
997
|
-
current._thread->setState(ThreadStateInUseForUser);
|
|
890
|
+
current._thread->setState(ICE_ENUM(ThreadState, ThreadStateInUseForUser));
|
|
998
891
|
|
|
999
892
|
if(_sizeMax > 1)
|
|
1000
893
|
{
|
|
1001
894
|
|
|
1002
|
-
#if !defined(ICE_USE_IOCP) && !defined(
|
|
895
|
+
#if !defined(ICE_USE_IOCP) && !defined(ICE_OS_UWP)
|
|
1003
896
|
--_inUseIO;
|
|
1004
897
|
|
|
1005
898
|
if(!_destroyed)
|
|
@@ -1007,19 +900,6 @@ IceInternal::ThreadPool::ioCompleted(ThreadPoolCurrent& current)
|
|
|
1007
900
|
if(_serialize && current._handler.get() != _workQueue.get())
|
|
1008
901
|
{
|
|
1009
902
|
_selector.disable(current._handler.get(), current.operation);
|
|
1010
|
-
|
|
1011
|
-
// Make sure the handler isn't in the set of pending handlers (this can
|
|
1012
|
-
// for example occur if the handler is has more data and its added by
|
|
1013
|
-
// ThreadPool::update while we were processing IO).
|
|
1014
|
-
_pendingHandlers.erase(current._handler.get());
|
|
1015
|
-
}
|
|
1016
|
-
else if(current._handler->_hasMoreData && current._handler->_registered & SocketOperationRead)
|
|
1017
|
-
{
|
|
1018
|
-
if(_pendingHandlers.empty())
|
|
1019
|
-
{
|
|
1020
|
-
_workQueue->queue(interruptWorkItem); // Interrupt select()
|
|
1021
|
-
}
|
|
1022
|
-
_pendingHandlers.insert(current._handler.get());
|
|
1023
903
|
}
|
|
1024
904
|
}
|
|
1025
905
|
|
|
@@ -1082,7 +962,7 @@ IceInternal::ThreadPool::ioCompleted(ThreadPoolCurrent& current)
|
|
|
1082
962
|
return _serialize && current._handler.get() != _workQueue.get();
|
|
1083
963
|
}
|
|
1084
964
|
|
|
1085
|
-
#if defined(ICE_USE_IOCP) || defined(
|
|
965
|
+
#if defined(ICE_USE_IOCP) || defined(ICE_OS_UWP)
|
|
1086
966
|
bool
|
|
1087
967
|
IceInternal::ThreadPool::startMessage(ThreadPoolCurrent& current)
|
|
1088
968
|
{
|
|
@@ -1090,11 +970,11 @@ IceInternal::ThreadPool::startMessage(ThreadPoolCurrent& current)
|
|
|
1090
970
|
|
|
1091
971
|
if(current._handler->_started & current.operation)
|
|
1092
972
|
{
|
|
1093
|
-
assert(!(current._handler->
|
|
1094
|
-
current._handler->
|
|
973
|
+
assert(!(current._handler->_completed & current.operation));
|
|
974
|
+
current._handler->_completed = static_cast<SocketOperation>(current._handler->_completed | current.operation);
|
|
1095
975
|
current._handler->_started = static_cast<SocketOperation>(current._handler->_started & ~current.operation);
|
|
1096
976
|
|
|
1097
|
-
#ifndef
|
|
977
|
+
#ifndef ICE_OS_UWP
|
|
1098
978
|
AsyncInfo* info = current._handler->getNativeInfo()->getAsyncInfo(current.operation);
|
|
1099
979
|
info->count = current._count;
|
|
1100
980
|
info->error = current._error;
|
|
@@ -1105,20 +985,26 @@ IceInternal::ThreadPool::startMessage(ThreadPoolCurrent& current)
|
|
|
1105
985
|
current._handler->_pending = static_cast<SocketOperation>(current._handler->_pending & ~current.operation);
|
|
1106
986
|
if(!(current._handler->_pending & SocketOperationWaitForClose) && current._handler->_finish)
|
|
1107
987
|
{
|
|
988
|
+
Lock sync(*this);
|
|
1108
989
|
_workQueue->queue(new FinishedWorkItem(current._handler, false));
|
|
1109
990
|
_selector.finish(current._handler.get());
|
|
1110
991
|
}
|
|
1111
992
|
return false;
|
|
1112
993
|
}
|
|
1113
994
|
}
|
|
1114
|
-
else if(!(current._handler->
|
|
995
|
+
else if(!(current._handler->_completed & current.operation) && (current._handler->_registered & current.operation))
|
|
1115
996
|
{
|
|
1116
997
|
assert(!(current._handler->_started & current.operation));
|
|
1117
|
-
if(
|
|
998
|
+
if(current._handler->_ready & current.operation)
|
|
999
|
+
{
|
|
1000
|
+
return true;
|
|
1001
|
+
}
|
|
1002
|
+
else if(!current._handler->startAsync(current.operation))
|
|
1118
1003
|
{
|
|
1119
1004
|
current._handler->_pending = static_cast<SocketOperation>(current._handler->_pending & ~current.operation);
|
|
1120
1005
|
if(!(current._handler->_pending & SocketOperationWaitForClose) && current._handler->_finish)
|
|
1121
1006
|
{
|
|
1007
|
+
Lock sync(*this);
|
|
1122
1008
|
_workQueue->queue(new FinishedWorkItem(current._handler, false));
|
|
1123
1009
|
_selector.finish(current._handler.get());
|
|
1124
1010
|
}
|
|
@@ -1133,8 +1019,8 @@ IceInternal::ThreadPool::startMessage(ThreadPoolCurrent& current)
|
|
|
1133
1019
|
|
|
1134
1020
|
if(current._handler->_registered & current.operation)
|
|
1135
1021
|
{
|
|
1136
|
-
assert(current._handler->
|
|
1137
|
-
current._handler->
|
|
1022
|
+
assert(current._handler->_completed & current.operation);
|
|
1023
|
+
current._handler->_completed = static_cast<SocketOperation>(current._handler->_completed & ~current.operation);
|
|
1138
1024
|
return true;
|
|
1139
1025
|
}
|
|
1140
1026
|
else
|
|
@@ -1142,6 +1028,7 @@ IceInternal::ThreadPool::startMessage(ThreadPoolCurrent& current)
|
|
|
1142
1028
|
current._handler->_pending = static_cast<SocketOperation>(current._handler->_pending & ~current.operation);
|
|
1143
1029
|
if(!(current._handler->_pending & SocketOperationWaitForClose) && current._handler->_finish)
|
|
1144
1030
|
{
|
|
1031
|
+
Lock sync(*this);
|
|
1145
1032
|
_workQueue->queue(new FinishedWorkItem(current._handler, false));
|
|
1146
1033
|
_selector.finish(current._handler.get());
|
|
1147
1034
|
}
|
|
@@ -1152,10 +1039,14 @@ IceInternal::ThreadPool::startMessage(ThreadPoolCurrent& current)
|
|
|
1152
1039
|
void
|
|
1153
1040
|
IceInternal::ThreadPool::finishMessage(ThreadPoolCurrent& current)
|
|
1154
1041
|
{
|
|
1155
|
-
if(current._handler->_registered & current.operation)
|
|
1042
|
+
if(current._handler->_registered & current.operation && !current._handler->_finish)
|
|
1156
1043
|
{
|
|
1157
|
-
assert(!(current._handler->
|
|
1158
|
-
if(
|
|
1044
|
+
assert(!(current._handler->_completed & current.operation));
|
|
1045
|
+
if(current._handler->_ready & current.operation)
|
|
1046
|
+
{
|
|
1047
|
+
_selector.completed(current._handler.get(), current.operation);
|
|
1048
|
+
}
|
|
1049
|
+
else if(!current._handler->startAsync(current.operation))
|
|
1159
1050
|
{
|
|
1160
1051
|
current._handler->_pending = static_cast<SocketOperation>(current._handler->_pending & ~current.operation);
|
|
1161
1052
|
}
|
|
@@ -1173,6 +1064,7 @@ IceInternal::ThreadPool::finishMessage(ThreadPoolCurrent& current)
|
|
|
1173
1064
|
if(!(current._handler->_pending & SocketOperationWaitForClose) && current._handler->_finish)
|
|
1174
1065
|
{
|
|
1175
1066
|
// There are no more pending async operations, it's time to call finish.
|
|
1067
|
+
Lock sync(*this);
|
|
1176
1068
|
_workQueue->queue(new FinishedWorkItem(current._handler, false));
|
|
1177
1069
|
_selector.finish(current._handler.get());
|
|
1178
1070
|
}
|
|
@@ -1195,7 +1087,7 @@ IceInternal::ThreadPool::followerWait(ThreadPoolCurrent& current)
|
|
|
1195
1087
|
{
|
|
1196
1088
|
assert(!current._leader);
|
|
1197
1089
|
|
|
1198
|
-
current._thread->setState(ThreadStateIdle);
|
|
1090
|
+
current._thread->setState(ICE_ENUM(ThreadState, ThreadStateIdle));
|
|
1199
1091
|
|
|
1200
1092
|
//
|
|
1201
1093
|
// It's important to clear the handler before waiting to make sure that
|
|
@@ -1252,7 +1144,7 @@ IceInternal::ThreadPool::nextThreadId()
|
|
|
1252
1144
|
IceInternal::ThreadPool::EventHandlerThread::EventHandlerThread(const ThreadPoolPtr& pool, const string& name) :
|
|
1253
1145
|
IceUtil::Thread(name),
|
|
1254
1146
|
_pool(pool),
|
|
1255
|
-
_state(
|
|
1147
|
+
_state(ICE_ENUM(ThreadState, ThreadStateIdle))
|
|
1256
1148
|
{
|
|
1257
1149
|
updateObserver();
|
|
1258
1150
|
}
|
|
@@ -1285,11 +1177,19 @@ IceInternal::ThreadPool::EventHandlerThread::setState(Ice::Instrumentation::Thre
|
|
|
1285
1177
|
void
|
|
1286
1178
|
IceInternal::ThreadPool::EventHandlerThread::run()
|
|
1287
1179
|
{
|
|
1180
|
+
#ifdef ICE_CPP11_MAPPING
|
|
1181
|
+
if(_pool->_instance->initializationData().threadStart)
|
|
1182
|
+
#else
|
|
1288
1183
|
if(_pool->_instance->initializationData().threadHook)
|
|
1184
|
+
#endif
|
|
1289
1185
|
{
|
|
1290
1186
|
try
|
|
1291
1187
|
{
|
|
1188
|
+
#ifdef ICE_CPP11_MAPPING
|
|
1189
|
+
_pool->_instance->initializationData().threadStart();
|
|
1190
|
+
#else
|
|
1292
1191
|
_pool->_instance->initializationData().threadHook->start();
|
|
1192
|
+
#endif
|
|
1293
1193
|
}
|
|
1294
1194
|
catch(const exception& ex)
|
|
1295
1195
|
{
|
|
@@ -1320,11 +1220,19 @@ IceInternal::ThreadPool::EventHandlerThread::run()
|
|
|
1320
1220
|
|
|
1321
1221
|
_observer.detach();
|
|
1322
1222
|
|
|
1223
|
+
#ifdef ICE_CPP11_MAPPING
|
|
1224
|
+
if(_pool->_instance->initializationData().threadStop)
|
|
1225
|
+
#else
|
|
1323
1226
|
if(_pool->_instance->initializationData().threadHook)
|
|
1227
|
+
#endif
|
|
1324
1228
|
{
|
|
1325
1229
|
try
|
|
1326
1230
|
{
|
|
1231
|
+
#ifdef ICE_CPP11_MAPPING
|
|
1232
|
+
_pool->_instance->initializationData().threadStop();
|
|
1233
|
+
#else
|
|
1327
1234
|
_pool->_instance->initializationData().threadHook->stop();
|
|
1235
|
+
#endif
|
|
1328
1236
|
}
|
|
1329
1237
|
catch(const exception& ex)
|
|
1330
1238
|
{
|
|
@@ -1349,7 +1257,7 @@ ThreadPoolCurrent::ThreadPoolCurrent(const InstancePtr& instance,
|
|
|
1349
1257
|
_threadPool(threadPool.get()),
|
|
1350
1258
|
_thread(thread),
|
|
1351
1259
|
_ioCompleted(false)
|
|
1352
|
-
#if !defined(ICE_USE_IOCP) && !defined(
|
|
1260
|
+
#if !defined(ICE_USE_IOCP) && !defined(ICE_OS_UWP)
|
|
1353
1261
|
, _leader(false)
|
|
1354
1262
|
#endif
|
|
1355
1263
|
{
|