zeroc-ice 3.7.9.1 → 3.8.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/dist/IceRuby/Communicator.cpp +575 -0
- data/dist/IceRuby/Communicator.h +19 -0
- data/dist/IceRuby/Config.h +77 -0
- data/dist/IceRuby/Connection.cpp +428 -0
- data/dist/IceRuby/Connection.h +20 -0
- data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
- data/dist/IceRuby/DefaultSliceLoader.h +25 -0
- data/dist/IceRuby/Endpoint.cpp +342 -0
- data/dist/IceRuby/Endpoint.h +18 -0
- data/dist/IceRuby/ImplicitContext.cpp +143 -0
- data/dist/IceRuby/ImplicitContext.h +16 -0
- data/dist/IceRuby/Init.cpp +36 -0
- data/dist/IceRuby/Logger.cpp +146 -0
- data/dist/IceRuby/Logger.h +19 -0
- data/dist/IceRuby/Operation.cpp +623 -0
- data/dist/IceRuby/Operation.h +28 -0
- data/dist/IceRuby/Properties.cpp +413 -0
- data/dist/IceRuby/Properties.h +16 -0
- data/dist/IceRuby/Proxy.cpp +926 -0
- data/dist/IceRuby/Proxy.h +21 -0
- data/dist/IceRuby/RubySliceLoader.cpp +39 -0
- data/dist/IceRuby/RubySliceLoader.h +27 -0
- data/dist/IceRuby/Slice.cpp +199 -0
- data/dist/IceRuby/Slice.h +13 -0
- data/dist/IceRuby/Types.cpp +3133 -0
- data/dist/IceRuby/Types.h +533 -0
- data/dist/IceRuby/Util.cpp +553 -0
- data/dist/IceRuby/Util.h +485 -0
- data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
- data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
- data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +14 -0
- data/dist/ice/cpp/include/Ice/Buffer.h +159 -0
- data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
- data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
- data/dist/ice/cpp/include/Ice/Config.h +60 -0
- data/dist/ice/cpp/include/Ice/Connection.h +410 -0
- data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
- data/dist/ice/cpp/include/Ice/ConnectionIF.h +16 -0
- data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
- data/dist/ice/cpp/include/Ice/Current.h +60 -0
- data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
- data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
- data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
- data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
- data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
- data/dist/ice/cpp/include/Ice/Exception.h +56 -0
- data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
- data/dist/ice/cpp/include/Ice/Format.h +22 -0
- data/dist/ice/cpp/include/Ice/Ice.h +60 -0
- data/dist/ice/cpp/include/Ice/IconvStringConverter.h +216 -0
- data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
- data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
- data/dist/ice/cpp/include/Ice/Initialize.h +143 -0
- data/dist/ice/cpp/include/Ice/InputStream.h +942 -0
- data/dist/ice/cpp/include/Ice/InstanceF.h +14 -0
- data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
- data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
- data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
- data/dist/ice/cpp/include/Ice/Logger.h +62 -0
- data/dist/ice/cpp/include/Ice/LoggerUtil.h +162 -0
- data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
- data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +54 -0
- data/dist/ice/cpp/include/Ice/Object.h +168 -0
- data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
- data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
- data/dist/ice/cpp/include/Ice/ObjectF.h +16 -0
- data/dist/ice/cpp/include/Ice/ObserverHelper.h +164 -0
- data/dist/ice/cpp/include/Ice/OutgoingAsync.h +512 -0
- data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
- data/dist/ice/cpp/include/Ice/OutputStream.h +872 -0
- data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
- data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
- data/dist/ice/cpp/include/Ice/PopDisableWarnings.h +16 -0
- data/dist/ice/cpp/include/Ice/Properties.h +307 -0
- data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
- data/dist/ice/cpp/include/Ice/Proxy.h +742 -0
- data/dist/ice/cpp/include/Ice/ProxyF.h +11 -0
- data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
- data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
- data/dist/ice/cpp/include/Ice/ReferenceF.h +14 -0
- data/dist/ice/cpp/include/Ice/RequestHandlerF.h +20 -0
- data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +268 -0
- data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
- data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
- data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
- data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
- data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
- data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +278 -0
- data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
- data/dist/ice/cpp/include/Ice/Service.h +219 -0
- data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
- data/dist/ice/cpp/include/Ice/SlicedData.h +125 -0
- data/dist/ice/cpp/include/Ice/SlicedDataF.h +30 -0
- data/dist/ice/cpp/include/Ice/StreamHelpers.h +652 -0
- data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
- data/dist/ice/cpp/include/Ice/StringConverter.h +167 -0
- data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
- data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
- data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
- data/dist/ice/cpp/include/Ice/UUID.h +16 -0
- data/dist/ice/cpp/include/Ice/UserException.h +46 -0
- data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +15 -0
- data/dist/ice/cpp/include/Ice/Value.h +127 -0
- data/dist/ice/cpp/include/Ice/ValueF.h +16 -0
- data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +28 -0
- data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +28 -0
- data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +70 -0
- data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
- data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +74 -0
- data/dist/ice/cpp/include/generated/Ice/Identity.h +108 -0
- data/dist/ice/cpp/include/generated/Ice/Locator.h +542 -0
- data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
- data/dist/ice/cpp/include/generated/Ice/Metrics.h +1103 -0
- data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
- data/dist/ice/cpp/include/generated/Ice/Process.h +245 -0
- data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +314 -0
- data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
- data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +724 -0
- data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
- data/dist/ice/cpp/include/generated/Ice/Router.h +496 -0
- data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +37 -0
- data/dist/ice/cpp/include/generated/Ice/Version.h +112 -0
- data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
- data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
- data/dist/ice/cpp/src/Ice/Acceptor.h +41 -0
- data/dist/ice/cpp/src/Ice/AcceptorF.h +17 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
- data/dist/ice/cpp/src/Ice/ArgVector.cpp +58 -0
- data/dist/ice/cpp/src/Ice/ArgVector.h +30 -0
- data/dist/ice/cpp/src/Ice/Base64.cpp +263 -0
- data/dist/ice/cpp/src/Ice/Base64.h +26 -0
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +199 -0
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +49 -0
- data/dist/ice/cpp/src/Ice/Buffer.cpp +187 -0
- data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +373 -0
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +65 -0
- data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +227 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +51 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +1758 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactory.h +264 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +17 -0
- data/dist/ice/cpp/src/Ice/ConnectionI.cpp +3563 -0
- data/dist/ice/cpp/src/Ice/ConnectionI.h +429 -0
- data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
- data/dist/ice/cpp/src/Ice/Connector.h +38 -0
- data/dist/ice/cpp/src/Ice/ConnectorF.h +14 -0
- data/dist/ice/cpp/src/Ice/ConsoleUtil.cpp +136 -0
- data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
- data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
- data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
- data/dist/ice/cpp/src/Ice/DLLMain.cpp +40 -0
- data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +81 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +38 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +14 -0
- data/dist/ice/cpp/src/Ice/Demangle.cpp +25 -0
- data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
- data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +216 -0
- data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
- data/dist/ice/cpp/src/Ice/Endian.h +40 -0
- data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +165 -0
- data/dist/ice/cpp/src/Ice/EndpointFactory.h +96 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +14 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +180 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +42 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/EndpointI.cpp +128 -0
- data/dist/ice/cpp/src/Ice/EndpointI.h +150 -0
- data/dist/ice/cpp/src/Ice/EndpointIF.h +21 -0
- data/dist/ice/cpp/src/Ice/EventHandler.cpp +9 -0
- data/dist/ice/cpp/src/Ice/EventHandler.h +71 -0
- data/dist/ice/cpp/src/Ice/EventHandlerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Exception.cpp +5 -0
- data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
- data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
- data/dist/ice/cpp/src/Ice/HashUtil.h +67 -0
- data/dist/ice/cpp/src/Ice/HttpParser.cpp +684 -0
- data/dist/ice/cpp/src/Ice/HttpParser.h +112 -0
- data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +593 -0
- data/dist/ice/cpp/src/Ice/IPEndpointI.h +106 -0
- data/dist/ice/cpp/src/Ice/IPEndpointIF.h +17 -0
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
- data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
- data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
- data/dist/ice/cpp/src/Ice/Initialize.cpp +160 -0
- data/dist/ice/cpp/src/Ice/InputStream.cpp +2206 -0
- data/dist/ice/cpp/src/Ice/Instance.cpp +1956 -0
- data/dist/ice/cpp/src/Ice/Instance.h +225 -0
- data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +959 -0
- data/dist/ice/cpp/src/Ice/InstrumentationI.h +235 -0
- data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
- data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
- data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +851 -0
- data/dist/ice/cpp/src/Ice/LocatorInfo.h +176 -0
- data/dist/ice/cpp/src/Ice/LocatorInfoF.h +20 -0
- data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +774 -0
- data/dist/ice/cpp/src/Ice/LoggerAdminI.h +31 -0
- data/dist/ice/cpp/src/Ice/LoggerI.cpp +234 -0
- data/dist/ice/cpp/src/Ice/LoggerI.h +47 -0
- data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
- data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
- data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +76 -0
- data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
- data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +608 -0
- data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
- data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
- data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
- data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
- data/dist/ice/cpp/src/Ice/Network.cpp +1927 -0
- data/dist/ice/cpp/src/Ice/Network.h +265 -0
- data/dist/ice/cpp/src/Ice/NetworkF.h +11 -0
- data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +306 -0
- data/dist/ice/cpp/src/Ice/NetworkProxy.h +67 -0
- data/dist/ice/cpp/src/Ice/NetworkProxyF.h +14 -0
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +55 -0
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +35 -0
- data/dist/ice/cpp/src/Ice/Object.cpp +249 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +348 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +53 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +14 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +1383 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +163 -0
- data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +75 -0
- data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
- data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +368 -0
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +66 -0
- data/dist/ice/cpp/src/Ice/Options.cpp +980 -0
- data/dist/ice/cpp/src/Ice/Options.h +119 -0
- data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +1106 -0
- data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
- data/dist/ice/cpp/src/Ice/OutputStream.cpp +1454 -0
- data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
- data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
- data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +344 -0
- data/dist/ice/cpp/src/Ice/PluginManagerI.h +54 -0
- data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
- data/dist/ice/cpp/src/Ice/PropertyNames.cpp +606 -0
- data/dist/ice/cpp/src/Ice/PropertyNames.h +63 -0
- data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
- data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
- data/dist/ice/cpp/src/Ice/Protocol.cpp +159 -0
- data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +186 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstance.h +74 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +14 -0
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +29 -0
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +35 -0
- data/dist/ice/cpp/src/Ice/Proxy.cpp +541 -0
- data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
- data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
- data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
- data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
- data/dist/ice/cpp/src/Ice/Random.h +23 -0
- data/dist/ice/cpp/src/Ice/Reference.cpp +1584 -0
- data/dist/ice/cpp/src/Ice/Reference.h +339 -0
- data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +830 -0
- data/dist/ice/cpp/src/Ice/ReferenceFactory.h +58 -0
- data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +14 -0
- data/dist/ice/cpp/src/Ice/RequestHandler.cpp +28 -0
- data/dist/ice/cpp/src/Ice/RequestHandler.h +53 -0
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
- data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
- data/dist/ice/cpp/src/Ice/RetryQueue.cpp +151 -0
- data/dist/ice/cpp/src/Ice/RetryQueue.h +59 -0
- data/dist/ice/cpp/src/Ice/RetryQueueF.h +14 -0
- data/dist/ice/cpp/src/Ice/RouterInfo.cpp +275 -0
- data/dist/ice/cpp/src/Ice/RouterInfo.h +95 -0
- data/dist/ice/cpp/src/Ice/RouterInfoF.h +17 -0
- data/dist/ice/cpp/src/Ice/SHA1.cpp +195 -0
- data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +513 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +635 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
- data/dist/ice/cpp/src/Ice/SSL/RFC2253.cpp +487 -0
- data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +72 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +654 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +104 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1437 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1085 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +822 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1061 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +222 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
- data/dist/ice/cpp/src/Ice/Selector.cpp +1270 -0
- data/dist/ice/cpp/src/Ice/Selector.h +235 -0
- data/dist/ice/cpp/src/Ice/ServantManager.cpp +547 -0
- data/dist/ice/cpp/src/Ice/ServantManager.h +66 -0
- data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Service.cpp +1790 -0
- data/dist/ice/cpp/src/Ice/SharedContext.h +33 -0
- data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
- data/dist/ice/cpp/src/Ice/SlicedData.cpp +48 -0
- data/dist/ice/cpp/src/Ice/StreamSocket.cpp +472 -0
- data/dist/ice/cpp/src/Ice/StreamSocket.h +73 -0
- data/dist/ice/cpp/src/Ice/StringConverter.cpp +582 -0
- data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
- data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +160 -0
- data/dist/ice/cpp/src/Ice/SysLoggerI.h +34 -0
- data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +65 -0
- data/dist/ice/cpp/src/Ice/SystemdJournalI.h +33 -0
- data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
- data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +213 -0
- data/dist/ice/cpp/src/Ice/TcpAcceptor.h +55 -0
- data/dist/ice/cpp/src/Ice/TcpConnector.cpp +128 -0
- data/dist/ice/cpp/src/Ice/TcpConnector.h +36 -0
- data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +411 -0
- data/dist/ice/cpp/src/Ice/TcpEndpointI.h +86 -0
- data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +147 -0
- data/dist/ice/cpp/src/Ice/TcpTransceiver.h +53 -0
- data/dist/ice/cpp/src/Ice/ThreadPool.cpp +1110 -0
- data/dist/ice/cpp/src/Ice/ThreadPool.h +305 -0
- data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
- data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
- data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
- data/dist/ice/cpp/src/Ice/Timer.cpp +169 -0
- data/dist/ice/cpp/src/Ice/Timer.h +212 -0
- data/dist/ice/cpp/src/Ice/TraceLevels.cpp +20 -0
- data/dist/ice/cpp/src/Ice/TraceLevels.h +39 -0
- data/dist/ice/cpp/src/Ice/TraceLevelsF.h +14 -0
- data/dist/ice/cpp/src/Ice/TraceUtil.cpp +399 -0
- data/dist/ice/cpp/src/Ice/TraceUtil.h +41 -0
- data/dist/ice/cpp/src/Ice/Transceiver.cpp +14 -0
- data/dist/ice/cpp/src/Ice/Transceiver.h +52 -0
- data/dist/ice/cpp/src/Ice/TransceiverF.h +23 -0
- data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
- data/dist/ice/cpp/src/Ice/UdpConnector.cpp +131 -0
- data/dist/ice/cpp/src/Ice/UdpConnector.h +36 -0
- data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +480 -0
- data/dist/ice/cpp/src/Ice/UdpEndpointI.h +92 -0
- data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +786 -0
- data/dist/ice/cpp/src/Ice/UdpTransceiver.h +90 -0
- data/dist/ice/cpp/src/Ice/UndefSysMacros.h +37 -0
- data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
- data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
- data/dist/ice/cpp/src/Ice/Value.cpp +145 -0
- data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +87 -0
- data/dist/ice/cpp/src/Ice/WSAcceptor.h +46 -0
- data/dist/ice/cpp/src/Ice/WSConnector.cpp +87 -0
- data/dist/ice/cpp/src/Ice/WSConnector.h +36 -0
- data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +455 -0
- data/dist/ice/cpp/src/Ice/WSEndpoint.h +82 -0
- data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +1715 -0
- data/dist/ice/cpp/src/Ice/WSTransceiver.h +135 -0
- data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/Identity.cpp +47 -0
- data/dist/ice/cpp/src/Ice/generated/Locator.cpp +752 -0
- data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
- data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +1205 -0
- data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
- data/dist/ice/cpp/src/Ice/generated/Process.cpp +330 -0
- data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +443 -0
- data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +851 -0
- data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
- data/dist/ice/cpp/src/Ice/generated/Router.cpp +660 -0
- data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +39 -0
- data/dist/ice/cpp/src/Ice/generated/Version.cpp +54 -0
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +202 -0
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +68 -0
- data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +494 -0
- data/dist/ice/cpp/src/IceDiscovery/LookupI.h +168 -0
- data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +155 -0
- data/dist/ice/cpp/src/IceDiscovery/PluginI.h +31 -0
- data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +24 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +822 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
- data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
- data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
- data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
- data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
- data/dist/ice/cpp/src/Slice/FileTracker.cpp +96 -0
- data/dist/ice/cpp/src/Slice/FileTracker.h +44 -0
- data/dist/ice/cpp/src/Slice/Grammar.cpp +4125 -0
- data/dist/ice/cpp/src/Slice/Grammar.h +138 -0
- data/dist/ice/cpp/src/Slice/GrammarUtil.h +128 -0
- data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +473 -0
- data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
- data/dist/ice/cpp/src/Slice/Parser.cpp +4906 -0
- data/dist/ice/cpp/src/Slice/Parser.h +1175 -0
- data/dist/ice/cpp/src/Slice/Preprocessor.cpp +295 -0
- data/dist/ice/cpp/src/Slice/Preprocessor.h +44 -0
- data/dist/ice/cpp/src/Slice/Scanner.cpp +3445 -0
- data/dist/ice/cpp/src/Slice/SliceUtil.cpp +790 -0
- data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +448 -0
- data/dist/ice/cpp/src/Slice/Util.h +134 -0
- data/dist/ice/cpp/src/slice2rb/Main.cpp +33 -0
- data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
- data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
- data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
- data/dist/ice/mcpp/internal.H +530 -0
- data/dist/ice/slice/Glacier2/Metrics.ice +47 -0
- data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +55 -0
- data/dist/ice/slice/Glacier2/Router.ice +93 -0
- data/dist/ice/slice/Glacier2/SSLInfo.ice +42 -0
- data/dist/ice/slice/Glacier2/Session.ice +133 -0
- data/dist/ice/slice/Ice/BuiltinSequences.ice +54 -0
- data/dist/ice/slice/Ice/Context.ice +24 -0
- data/dist/ice/slice/Ice/EndpointTypes.ice +50 -0
- data/dist/ice/slice/Ice/Identity.ice +36 -0
- data/dist/ice/slice/Ice/Locator.ice +74 -0
- data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
- data/dist/ice/slice/Ice/Metrics.ice +201 -0
- data/dist/ice/slice/Ice/OperationMode.ice +38 -0
- data/dist/ice/slice/Ice/Process.ice +28 -0
- data/dist/ice/slice/Ice/PropertiesAdmin.ice +37 -0
- data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
- data/dist/ice/slice/Ice/RemoteLogger.ice +126 -0
- data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
- data/dist/ice/slice/Ice/Router.ice +54 -0
- data/dist/ice/slice/Ice/SliceChecksumDict.ice +18 -0
- data/dist/ice/slice/Ice/Version.ice +43 -0
- data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
- data/dist/ice/slice/IceGrid/Admin.ice +981 -0
- data/dist/ice/slice/IceGrid/Descriptor.ice +519 -0
- data/dist/ice/slice/IceGrid/Exception.ice +98 -0
- data/dist/ice/slice/IceGrid/FileParser.ice +36 -0
- data/dist/ice/slice/IceGrid/Registry.ice +130 -0
- data/dist/ice/slice/IceGrid/Session.ice +64 -0
- data/dist/ice/slice/IceGrid/UserAccountMapper.ice +34 -0
- data/dist/ice/slice/IceStorm/IceStorm.ice +186 -0
- data/dist/ice/slice/IceStorm/Metrics.ice +41 -0
- data/dist/lib/Glacier2/Metrics.rb +41 -0
- data/dist/lib/Glacier2/PermissionsVerifier.rb +61 -0
- data/dist/lib/Glacier2/Router.rb +73 -0
- data/dist/lib/Glacier2/SSLInfo.rb +64 -0
- data/dist/lib/Glacier2/Session.rb +187 -0
- data/dist/lib/Glacier2.rb +7 -0
- data/dist/lib/Ice/BuiltinSequences.rb +48 -0
- data/dist/lib/Ice/CompressBatch.rb +50 -0
- data/dist/lib/Ice/Context.rb +12 -0
- data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
- data/dist/lib/Ice/EndpointTypes.rb +28 -0
- data/dist/lib/Ice/Exception.rb +20 -0
- data/dist/lib/Ice/Identity.rb +47 -0
- data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
- data/dist/lib/Ice/InitializationData.rb +12 -0
- data/dist/lib/Ice/LocalExceptions.rb +168 -0
- data/dist/lib/Ice/Locator.rb +83 -0
- data/dist/lib/Ice/LocatorRegistry.rb +73 -0
- data/dist/lib/Ice/Metrics.rb +290 -0
- data/dist/lib/Ice/OperationMode.rb +58 -0
- data/dist/lib/Ice/Process.rb +34 -0
- data/dist/lib/Ice/PropertiesAdmin.rb +39 -0
- data/dist/lib/Ice/PropertyDict.rb +12 -0
- data/dist/lib/Ice/Proxy.rb +85 -0
- data/dist/lib/Ice/ProxyFunctions.rb +69 -0
- data/dist/lib/Ice/RemoteLogger.rb +176 -0
- data/dist/lib/Ice/ReplyStatus.rb +65 -0
- data/dist/lib/Ice/Router.rb +59 -0
- data/dist/lib/Ice/SliceChecksumDict.rb +12 -0
- data/dist/lib/Ice/SliceUtil.rb +41 -0
- data/dist/lib/Ice/Struct.rb +11 -0
- data/dist/lib/Ice/ToStringMode.rb +50 -0
- data/dist/lib/Ice/Value.rb +93 -0
- data/dist/lib/Ice/Version.rb +78 -0
- data/dist/lib/Ice.rb +37 -0
- data/dist/lib/IceBox/ServiceManager.rb +104 -0
- data/dist/lib/IceBox.rb +3 -0
- data/dist/lib/IceGrid/Admin.rb +1208 -0
- data/dist/lib/IceGrid/Descriptor.rb +989 -0
- data/dist/lib/IceGrid/Exception.rb +145 -0
- data/dist/lib/IceGrid/FileParser.rb +41 -0
- data/dist/lib/IceGrid/Registry.rb +168 -0
- data/dist/lib/IceGrid/Session.rb +56 -0
- data/dist/lib/IceGrid/UserAccountMapper.rb +38 -0
- data/dist/lib/IceGrid.rb +9 -0
- data/dist/lib/IceStorm/IceStorm.rb +251 -0
- data/dist/lib/IceStorm/Metrics.rb +55 -0
- data/dist/lib/IceStorm.rb +4 -0
- data/extconf.rb +89 -0
- data/ice.gemspec +22 -17
- data/scripts/slice2rb +10 -0
- metadata +536 -712
- data/ICE_LICENSE +0 -48
- data/LICENSE +0 -340
- data/MCPP_LICENSE +0 -29
- data/bin/slice2rb +0 -12
- data/ext/Communicator.cpp +0 -792
- data/ext/Communicator.h +0 -20
- data/ext/Config.h +0 -143
- data/ext/Connection.cpp +0 -532
- data/ext/Connection.h +0 -24
- data/ext/Endpoint.cpp +0 -340
- data/ext/Endpoint.h +0 -22
- data/ext/ImplicitContext.cpp +0 -144
- data/ext/ImplicitContext.h +0 -20
- data/ext/Init.cpp +0 -49
- data/ext/Logger.cpp +0 -147
- data/ext/Logger.h +0 -23
- data/ext/Operation.cpp +0 -661
- data/ext/Operation.h +0 -31
- data/ext/Properties.cpp +0 -365
- data/ext/Properties.h +0 -20
- data/ext/Proxy.cpp +0 -1396
- data/ext/Proxy.h +0 -22
- data/ext/Slice.cpp +0 -205
- data/ext/Slice.h +0 -17
- data/ext/Types.cpp +0 -3325
- data/ext/Types.h +0 -595
- data/ext/Util.cpp +0 -812
- data/ext/Util.h +0 -586
- data/ext/ValueFactoryManager.cpp +0 -441
- data/ext/ValueFactoryManager.h +0 -95
- data/ext/extconf.rb +0 -97
- data/ext/ice/cpp/include/Ice/Application.h +0 -326
- data/ext/ice/cpp/include/Ice/AsyncResult.h +0 -155
- data/ext/ice/cpp/include/Ice/AsyncResultF.h +0 -23
- data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
- data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +0 -20
- data/ext/ice/cpp/include/Ice/Buffer.h +0 -154
- data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
- data/ext/ice/cpp/include/Ice/Comparable.h +0 -205
- data/ext/ice/cpp/include/Ice/Config.h +0 -78
- data/ext/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
- data/ext/ice/cpp/include/Ice/ConnectionIF.h +0 -38
- data/ext/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
- data/ext/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
- data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
- data/ext/ice/cpp/include/Ice/Dispatcher.h +0 -67
- data/ext/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
- data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
- data/ext/ice/cpp/include/Ice/Exception.h +0 -161
- data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
- data/ext/ice/cpp/include/Ice/FactoryTable.h +0 -73
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
- data/ext/ice/cpp/include/Ice/Format.h +0 -38
- data/ext/ice/cpp/include/Ice/Functional.h +0 -140
- data/ext/ice/cpp/include/Ice/GCObject.h +0 -76
- data/ext/ice/cpp/include/Ice/Handle.h +0 -182
- data/ext/ice/cpp/include/Ice/Ice.h +0 -55
- data/ext/ice/cpp/include/Ice/IconvStringConverter.h +0 -377
- data/ext/ice/cpp/include/Ice/Incoming.h +0 -225
- data/ext/ice/cpp/include/Ice/IncomingAsync.h +0 -186
- data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
- data/ext/ice/cpp/include/Ice/Initialize.h +0 -957
- data/ext/ice/cpp/include/Ice/InputStream.h +0 -1514
- data/ext/ice/cpp/include/Ice/InstanceF.h +0 -20
- data/ext/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
- data/ext/ice/cpp/include/Ice/LocalObject.h +0 -35
- data/ext/ice/cpp/include/Ice/LocalObjectF.h +0 -21
- data/ext/ice/cpp/include/Ice/LoggerUtil.h +0 -185
- data/ext/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
- data/ext/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
- data/ext/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
- data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +0 -86
- data/ext/ice/cpp/include/Ice/Object.h +0 -507
- data/ext/ice/cpp/include/Ice/ObjectF.h +0 -30
- data/ext/ice/cpp/include/Ice/ObserverHelper.h +0 -182
- data/ext/ice/cpp/include/Ice/Optional.h +0 -1114
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +0 -856
- data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
- data/ext/ice/cpp/include/Ice/OutputStream.h +0 -1092
- data/ext/ice/cpp/include/Ice/Protocol.h +0 -274
- data/ext/ice/cpp/include/Ice/Proxy.h +0 -5154
- data/ext/ice/cpp/include/Ice/ProxyF.h +0 -53
- data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
- data/ext/ice/cpp/include/Ice/ProxyHandle.h +0 -318
- data/ext/ice/cpp/include/Ice/ReferenceF.h +0 -29
- data/ext/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
- data/ext/ice/cpp/include/Ice/RequestHandlerF.h +0 -30
- data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
- data/ext/ice/cpp/include/Ice/SHA1.h +0 -42
- data/ext/ice/cpp/include/Ice/ServantManagerF.h +0 -21
- data/ext/ice/cpp/include/Ice/Service.h +0 -379
- data/ext/ice/cpp/include/Ice/SliceChecksums.h +0 -33
- data/ext/ice/cpp/include/Ice/SlicedData.h +0 -172
- data/ext/ice/cpp/include/Ice/SlicedDataF.h +0 -40
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +0 -1190
- data/ext/ice/cpp/include/Ice/StringConverter.h +0 -78
- data/ext/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
- data/ext/ice/cpp/include/Ice/UUID.h +0 -19
- data/ext/ice/cpp/include/Ice/UniquePtr.h +0 -95
- data/ext/ice/cpp/include/Ice/UniqueRef.h +0 -97
- data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +0 -88
- data/ext/ice/cpp/include/Ice/Value.h +0 -139
- data/ext/ice/cpp/include/Ice/ValueF.h +0 -21
- data/ext/ice/cpp/include/IceSSL/Config.h +0 -21
- data/ext/ice/cpp/include/IceSSL/IceSSL.h +0 -28
- data/ext/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
- data/ext/ice/cpp/include/IceSSL/Plugin.h +0 -712
- data/ext/ice/cpp/include/IceSSL/SChannel.h +0 -72
- data/ext/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
- data/ext/ice/cpp/include/IceSSL/UWP.h +0 -62
- data/ext/ice/cpp/include/IceUtil/Atomic.h +0 -179
- data/ext/ice/cpp/include/IceUtil/Cond.h +0 -317
- data/ext/ice/cpp/include/IceUtil/Config.h +0 -424
- data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
- data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
- data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -92
- data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
- data/ext/ice/cpp/include/IceUtil/Exception.h +0 -394
- data/ext/ice/cpp/include/IceUtil/FileUtil.h +0 -143
- data/ext/ice/cpp/include/IceUtil/Functional.h +0 -389
- data/ext/ice/cpp/include/IceUtil/Handle.h +0 -261
- data/ext/ice/cpp/include/IceUtil/IceUtil.h +0 -40
- data/ext/ice/cpp/include/IceUtil/InputUtil.h +0 -42
- data/ext/ice/cpp/include/IceUtil/Iterator.h +0 -31
- data/ext/ice/cpp/include/IceUtil/Lock.h +0 -128
- data/ext/ice/cpp/include/IceUtil/Monitor.h +0 -243
- data/ext/ice/cpp/include/IceUtil/Mutex.h +0 -353
- data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
- data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
- data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
- data/ext/ice/cpp/include/IceUtil/Optional.h +0 -433
- data/ext/ice/cpp/include/IceUtil/Options.h +0 -135
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
- data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +0 -14
- data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
- data/ext/ice/cpp/include/IceUtil/Random.h +0 -55
- data/ext/ice/cpp/include/IceUtil/RecMutex.h +0 -107
- data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +0 -53
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
- data/ext/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
- data/ext/ice/cpp/include/IceUtil/Shared.h +0 -127
- data/ext/ice/cpp/include/IceUtil/StopWatch.h +0 -49
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +0 -195
- data/ext/ice/cpp/include/IceUtil/StringUtil.h +0 -97
- data/ext/ice/cpp/include/IceUtil/Thread.h +0 -174
- data/ext/ice/cpp/include/IceUtil/ThreadException.h +0 -94
- data/ext/ice/cpp/include/IceUtil/Time.h +0 -205
- data/ext/ice/cpp/include/IceUtil/Timer.h +0 -143
- data/ext/ice/cpp/include/IceUtil/UUID.h +0 -21
- data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +0 -37
- data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +0 -170
- data/ext/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
- data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/Connection.h +0 -1703
- data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
- data/ext/ice/cpp/include/generated/Ice/Current.h +0 -322
- data/ext/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
- data/ext/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
- data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +0 -118
- data/ext/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
- data/ext/ice/cpp/include/generated/Ice/Identity.h +0 -264
- data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
- data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
- data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
- data/ext/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
- data/ext/ice/cpp/include/generated/Ice/Locator.h +0 -3898
- data/ext/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
- data/ext/ice/cpp/include/generated/Ice/Logger.h +0 -237
- data/ext/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/Metrics.h +0 -4769
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
- data/ext/ice/cpp/include/generated/Ice/Plugin.h +0 -318
- data/ext/ice/cpp/include/generated/Ice/PluginF.h +0 -110
- data/ext/ice/cpp/include/generated/Ice/Process.h +0 -977
- data/ext/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
- data/ext/ice/cpp/include/generated/Ice/Properties.h +0 -452
- data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +0 -1366
- data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
- data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +0 -2707
- data/ext/ice/cpp/include/generated/Ice/Router.h +0 -1850
- data/ext/ice/cpp/include/generated/Ice/RouterF.h +0 -125
- data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
- data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +0 -84
- data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
- data/ext/ice/cpp/include/generated/Ice/Version.h +0 -357
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
- data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
- data/ext/ice/cpp/src/Ice/ACM.cpp +0 -380
- data/ext/ice/cpp/src/Ice/ACM.h +0 -119
- data/ext/ice/cpp/src/Ice/ACMF.h +0 -30
- data/ext/ice/cpp/src/Ice/Acceptor.cpp +0 -16
- data/ext/ice/cpp/src/Ice/Acceptor.h +0 -37
- data/ext/ice/cpp/src/Ice/AcceptorF.h +0 -25
- data/ext/ice/cpp/src/Ice/ArgVector.cpp +0 -59
- data/ext/ice/cpp/src/Ice/ArgVector.h +0 -36
- data/ext/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
- data/ext/ice/cpp/src/Ice/Base64.cpp +0 -263
- data/ext/ice/cpp/src/Ice/Base64.h +0 -31
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +0 -250
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +0 -59
- data/ext/ice/cpp/src/Ice/Buffer.cpp +0 -155
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +0 -49
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +0 -407
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +0 -87
- data/ext/ice/cpp/src/Ice/Communicator.cpp +0 -79
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +0 -167
- data/ext/ice/cpp/src/Ice/Cond.cpp +0 -381
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +0 -348
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +0 -72
- data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +0 -24
- data/ext/ice/cpp/src/Ice/Connection.cpp +0 -155
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +0 -1972
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +0 -264
- data/ext/ice/cpp/src/Ice/ConnectionFactoryF.h +0 -30
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +0 -3670
- data/ext/ice/cpp/src/Ice/ConnectionI.h +0 -391
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
- data/ext/ice/cpp/src/Ice/Connector.cpp +0 -16
- data/ext/ice/cpp/src/Ice/Connector.h +0 -32
- data/ext/ice/cpp/src/Ice/ConnectorF.h +0 -21
- data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +0 -179
- data/ext/ice/cpp/src/Ice/Current.cpp +0 -62
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +0 -161
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +0 -52
- data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +0 -21
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +0 -291
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +0 -147
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +0 -189
- data/ext/ice/cpp/src/Ice/EndpointFactory.h +0 -117
- data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +0 -21
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +0 -213
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +0 -47
- data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +0 -21
- data/ext/ice/cpp/src/Ice/EndpointI.cpp +0 -98
- data/ext/ice/cpp/src/Ice/EndpointI.h +0 -218
- data/ext/ice/cpp/src/Ice/EndpointIF.h +0 -49
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +0 -51
- data/ext/ice/cpp/src/Ice/EventHandler.cpp +0 -32
- data/ext/ice/cpp/src/Ice/EventHandler.h +0 -81
- data/ext/ice/cpp/src/Ice/EventHandlerF.h +0 -24
- data/ext/ice/cpp/src/Ice/Exception.cpp +0 -845
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +0 -49
- data/ext/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
- data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
- data/ext/ice/cpp/src/Ice/GCObject.cpp +0 -442
- data/ext/ice/cpp/src/Ice/HashUtil.h +0 -53
- data/ext/ice/cpp/src/Ice/HttpParser.cpp +0 -684
- data/ext/ice/cpp/src/Ice/HttpParser.h +0 -117
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +0 -756
- data/ext/ice/cpp/src/Ice/IPEndpointI.h +0 -162
- data/ext/ice/cpp/src/Ice/IPEndpointIF.h +0 -28
- data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
- data/ext/ice/cpp/src/Ice/Identity.cpp +0 -57
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +0 -75
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
- data/ext/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
- data/ext/ice/cpp/src/Ice/Incoming.cpp +0 -795
- data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
- data/ext/ice/cpp/src/Ice/IncomingRequest.h +0 -33
- data/ext/ice/cpp/src/Ice/Initialize.cpp +0 -654
- data/ext/ice/cpp/src/Ice/InputStream.cpp +0 -2741
- data/ext/ice/cpp/src/Ice/Instance.cpp +0 -1971
- data/ext/ice/cpp/src/Ice/Instance.h +0 -235
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +0 -188
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +0 -66
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +0 -1094
- data/ext/ice/cpp/src/Ice/InstrumentationI.h +0 -256
- data/ext/ice/cpp/src/Ice/LocalException.cpp +0 -3262
- data/ext/ice/cpp/src/Ice/LocalObject.cpp +0 -23
- data/ext/ice/cpp/src/Ice/Locator.cpp +0 -2042
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +0 -889
- data/ext/ice/cpp/src/Ice/LocatorInfo.h +0 -189
- data/ext/ice/cpp/src/Ice/LocatorInfoF.h +0 -29
- data/ext/ice/cpp/src/Ice/Logger.cpp +0 -73
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +0 -956
- data/ext/ice/cpp/src/Ice/LoggerAdminI.h +0 -41
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +0 -261
- data/ext/ice/cpp/src/Ice/LoggerI.h +0 -52
- data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +0 -100
- data/ext/ice/cpp/src/Ice/Metrics.cpp +0 -2352
- data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +0 -694
- data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
- data/ext/ice/cpp/src/Ice/Network.cpp +0 -3075
- data/ext/ice/cpp/src/Ice/Network.h +0 -371
- data/ext/ice/cpp/src/Ice/NetworkF.h +0 -23
- data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +0 -324
- data/ext/ice/cpp/src/Ice/NetworkProxy.h +0 -72
- data/ext/ice/cpp/src/Ice/NetworkProxyF.h +0 -21
- data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +0 -57
- data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +0 -40
- data/ext/ice/cpp/src/Ice/Object.cpp +0 -435
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +0 -79
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +0 -291
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +0 -53
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +0 -25
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +0 -1530
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +0 -159
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +0 -75
- data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +0 -56
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +0 -408
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +0 -74
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +0 -1322
- data/ext/ice/cpp/src/Ice/OutputStream.cpp +0 -1367
- data/ext/ice/cpp/src/Ice/Plugin.cpp +0 -87
- data/ext/ice/cpp/src/Ice/PluginF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +0 -503
- data/ext/ice/cpp/src/Ice/PluginManagerI.h +0 -61
- data/ext/ice/cpp/src/Ice/Process.cpp +0 -471
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/Properties.cpp +0 -78
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +0 -603
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/PropertiesI.cpp +0 -747
- data/ext/ice/cpp/src/Ice/PropertiesI.h +0 -70
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +0 -1429
- data/ext/ice/cpp/src/Ice/PropertyNames.h +0 -78
- data/ext/ice/cpp/src/Ice/Protocol.cpp +0 -124
- data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +0 -131
- data/ext/ice/cpp/src/Ice/ProtocolInstance.h +0 -93
- data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +0 -21
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +0 -51
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +0 -64
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
- data/ext/ice/cpp/src/Ice/Proxy.cpp +0 -1601
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
- data/ext/ice/cpp/src/Ice/ProxyFactory.h +0 -57
- data/ext/ice/cpp/src/Ice/Reference.cpp +0 -2046
- data/ext/ice/cpp/src/Ice/Reference.h +0 -323
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +0 -888
- data/ext/ice/cpp/src/Ice/ReferenceFactory.h +0 -76
- data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +0 -19
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +0 -1171
- data/ext/ice/cpp/src/Ice/ReplyStatus.h +0 -24
- data/ext/ice/cpp/src/Ice/RequestHandler.cpp +0 -37
- data/ext/ice/cpp/src/Ice/RequestHandler.h +0 -78
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
- data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
- data/ext/ice/cpp/src/Ice/ResponseHandler.h +0 -43
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +0 -157
- data/ext/ice/cpp/src/Ice/RetryQueue.h +0 -66
- data/ext/ice/cpp/src/Ice/RetryQueueF.h +0 -19
- data/ext/ice/cpp/src/Ice/Router.cpp +0 -977
- data/ext/ice/cpp/src/Ice/RouterF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/RouterInfo.cpp +0 -379
- data/ext/ice/cpp/src/Ice/RouterInfo.h +0 -152
- data/ext/ice/cpp/src/Ice/RouterInfoF.h +0 -25
- data/ext/ice/cpp/src/Ice/SHA1.cpp +0 -185
- data/ext/ice/cpp/src/Ice/Selector.cpp +0 -1537
- data/ext/ice/cpp/src/Ice/Selector.h +0 -308
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +0 -75
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ServantManager.cpp +0 -480
- data/ext/ice/cpp/src/Ice/ServantManager.h +0 -69
- data/ext/ice/cpp/src/Ice/SharedContext.h +0 -46
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +0 -49
- data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
- data/ext/ice/cpp/src/Ice/SlicedData.cpp +0 -127
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +0 -682
- data/ext/ice/cpp/src/Ice/StreamSocket.h +0 -92
- data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
- data/ext/ice/cpp/src/Ice/StringUtil.h +0 -30
- data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +0 -166
- data/ext/ice/cpp/src/Ice/SysLoggerI.h +0 -37
- data/ext/ice/cpp/src/Ice/SystemdJournalI.cpp +0 -66
- data/ext/ice/cpp/src/Ice/SystemdJournalI.h +0 -39
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +0 -355
- data/ext/ice/cpp/src/Ice/TcpAcceptor.h +0 -69
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +0 -127
- data/ext/ice/cpp/src/Ice/TcpConnector.h +0 -45
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +0 -385
- data/ext/ice/cpp/src/Ice/TcpEndpointI.h +0 -90
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +0 -135
- data/ext/ice/cpp/src/Ice/TcpTransceiver.h +0 -58
- data/ext/ice/cpp/src/Ice/Thread.cpp +0 -811
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +0 -1328
- data/ext/ice/cpp/src/Ice/ThreadPool.h +0 -393
- data/ext/ice/cpp/src/Ice/Timer.cpp +0 -263
- data/ext/ice/cpp/src/Ice/TraceLevels.cpp +0 -38
- data/ext/ice/cpp/src/Ice/TraceLevels.h +0 -45
- data/ext/ice/cpp/src/Ice/TraceLevelsF.h +0 -21
- data/ext/ice/cpp/src/Ice/TraceUtil.cpp +0 -478
- data/ext/ice/cpp/src/Ice/TraceUtil.h +0 -30
- data/ext/ice/cpp/src/Ice/Transceiver.cpp +0 -18
- data/ext/ice/cpp/src/Ice/Transceiver.h +0 -49
- data/ext/ice/cpp/src/Ice/TransceiverF.h +0 -33
- data/ext/ice/cpp/src/Ice/UdpConnector.cpp +0 -136
- data/ext/ice/cpp/src/Ice/UdpConnector.h +0 -45
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +0 -515
- data/ext/ice/cpp/src/Ice/UdpEndpointI.h +0 -95
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +0 -1153
- data/ext/ice/cpp/src/Ice/UdpTransceiver.h +0 -117
- data/ext/ice/cpp/src/Ice/Value.cpp +0 -76
- data/ext/ice/cpp/src/Ice/ValueFactory.cpp +0 -83
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
- data/ext/ice/cpp/src/Ice/Version.cpp +0 -57
- data/ext/ice/cpp/src/Ice/VirtualShared.h +0 -38
- data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +0 -92
- data/ext/ice/cpp/src/Ice/WSAcceptor.h +0 -52
- data/ext/ice/cpp/src/Ice/WSConnector.cpp +0 -102
- data/ext/ice/cpp/src/Ice/WSConnector.h +0 -43
- data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +0 -508
- data/ext/ice/cpp/src/Ice/WSEndpoint.h +0 -93
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +0 -1747
- data/ext/ice/cpp/src/Ice/WSTransceiver.h +0 -141
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +0 -915
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +0 -1889
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +0 -265
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +0 -109
- data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +0 -608
- data/ext/ice/cpp/src/IceDiscovery/LookupI.h +0 -228
- data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +0 -176
- data/ext/ice/cpp/src/IceDiscovery/PluginI.h +0 -36
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +0 -730
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
- data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +0 -47
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +0 -1048
- data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
- data/ext/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
- data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
- data/ext/ice/cpp/src/IceSSL/CertificateI.h +0 -64
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +0 -75
- data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +0 -61
- data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
- data/ext/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
- data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
- data/ext/ice/cpp/src/IceSSL/EndpointI.h +0 -100
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +0 -75
- data/ext/ice/cpp/src/IceSSL/Instance.cpp +0 -28
- data/ext/ice/cpp/src/IceSSL/Instance.h +0 -37
- data/ext/ice/cpp/src/IceSSL/InstanceF.h +0 -33
- data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
- data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
- data/ext/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
- data/ext/ice/cpp/src/IceSSL/PluginI.h +0 -67
- data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +0 -490
- data/ext/ice/cpp/src/IceSSL/RFC2253.h +0 -62
- data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
- data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
- data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
- data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
- data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
- data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
- data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
- data/ext/ice/cpp/src/IceSSL/TrustManager.h +0 -46
- data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
- data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +0 -266
- data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +0 -338
- data/ext/ice/cpp/src/IceSSL/UWPEngine.h +0 -41
- data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +0 -26
- data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +0 -89
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +0 -383
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +0 -71
- data/ext/ice/cpp/src/IceSSL/Util.cpp +0 -192
- data/ext/ice/cpp/src/IceSSL/Util.h +0 -99
- data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +0 -157
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
- data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +0 -484
- data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
- data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
- data/ext/ice/cpp/src/IceUtil/Options.cpp +0 -1051
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
- data/ext/ice/cpp/src/IceUtil/Random.cpp +0 -180
- data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +0 -242
- data/ext/ice/cpp/src/IceUtil/Shared.cpp +0 -71
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1180
- data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
- data/ext/ice/cpp/src/IceUtil/Time.cpp +0 -307
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +0 -169
- data/ext/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
- data/ext/ice/cpp/src/IceUtil/Unicode.h +0 -43
- data/ext/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
- data/ext/ice/cpp/src/Slice/Checksum.cpp +0 -447
- data/ext/ice/cpp/src/Slice/Checksum.h +0 -21
- data/ext/ice/cpp/src/Slice/FileTracker.cpp +0 -146
- data/ext/ice/cpp/src/Slice/FileTracker.h +0 -66
- data/ext/ice/cpp/src/Slice/Grammar.cpp +0 -4793
- data/ext/ice/cpp/src/Slice/Grammar.h +0 -118
- data/ext/ice/cpp/src/Slice/GrammarUtil.h +0 -228
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +0 -5154
- data/ext/ice/cpp/src/Slice/JavaUtil.h +0 -398
- data/ext/ice/cpp/src/Slice/MD5.cpp +0 -52
- data/ext/ice/cpp/src/Slice/MD5.h +0 -39
- data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -393
- data/ext/ice/cpp/src/Slice/MD5I.h +0 -91
- data/ext/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
- data/ext/ice/cpp/src/Slice/PHPUtil.h +0 -36
- data/ext/ice/cpp/src/Slice/Parser.cpp +0 -7058
- data/ext/ice/cpp/src/Slice/Parser.h +0 -1174
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +0 -797
- data/ext/ice/cpp/src/Slice/Preprocessor.h +0 -60
- data/ext/ice/cpp/src/Slice/Python.cpp +0 -830
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
- data/ext/ice/cpp/src/Slice/PythonUtil.h +0 -70
- data/ext/ice/cpp/src/Slice/Ruby.cpp +0 -350
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
- data/ext/ice/cpp/src/Slice/RubyUtil.h +0 -49
- data/ext/ice/cpp/src/Slice/Scanner.cpp +0 -2807
- data/ext/ice/cpp/src/Slice/SliceUtil.cpp +0 -424
- data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +0 -456
- data/ext/ice/cpp/src/Slice/Util.h +0 -50
- data/ext/ice/mcpp/CMakeLists.txt +0 -80
- data/ext/ice/mcpp/LICENSE +0 -29
- data/ext/ice/mcpp/Makefile +0 -63
- data/ext/ice/mcpp/README.md +0 -32
- data/ext/ice/mcpp/internal.H +0 -530
- data/ext/ice/mcpp/mcpp.gyp +0 -88
- data/lib/Glacier2/Metrics.rb +0 -56
- data/lib/Glacier2/PermissionsVerifier.rb +0 -93
- data/lib/Glacier2/PermissionsVerifierF.rb +0 -30
- data/lib/Glacier2/Router.rb +0 -95
- data/lib/Glacier2/RouterF.rb +0 -25
- data/lib/Glacier2/SSLInfo.rb +0 -72
- data/lib/Glacier2/Session.rb +0 -247
- data/lib/Glacier2.rb +0 -7
- data/lib/Ice/BuiltinSequences.rb +0 -60
- data/lib/Ice/Communicator.rb +0 -87
- data/lib/Ice/CommunicatorF.rb +0 -24
- data/lib/Ice/Connection.rb +0 -413
- data/lib/Ice/ConnectionF.rb +0 -32
- data/lib/Ice/Current.rb +0 -141
- data/lib/Ice/Endpoint.rb +0 -187
- data/lib/Ice/EndpointF.rb +0 -48
- data/lib/Ice/EndpointTypes.rb +0 -69
- data/lib/Ice/FacetMap.rb +0 -24
- data/lib/Ice/Identity.rb +0 -63
- data/lib/Ice/ImplicitContext.rb +0 -26
- data/lib/Ice/ImplicitContextF.rb +0 -24
- data/lib/Ice/Instrumentation.rb +0 -169
- data/lib/Ice/InstrumentationF.rb +0 -31
- data/lib/Ice/LocalException.rb +0 -1031
- data/lib/Ice/Locator.rb +0 -196
- data/lib/Ice/LocatorF.rb +0 -30
- data/lib/Ice/Logger.rb +0 -24
- data/lib/Ice/LoggerF.rb +0 -24
- data/lib/Ice/Metrics.rb +0 -337
- data/lib/Ice/ObjectAdapter.rb +0 -29
- data/lib/Ice/ObjectAdapterF.rb +0 -24
- data/lib/Ice/ObjectFactory.rb +0 -24
- data/lib/Ice/Plugin.rb +0 -30
- data/lib/Ice/PluginF.rb +0 -28
- data/lib/Ice/Process.rb +0 -53
- data/lib/Ice/ProcessF.rb +0 -25
- data/lib/Ice/Properties.rb +0 -25
- data/lib/Ice/PropertiesAdmin.rb +0 -63
- data/lib/Ice/PropertiesF.rb +0 -29
- data/lib/Ice/RemoteLogger.rb +0 -207
- data/lib/Ice/Router.rb +0 -87
- data/lib/Ice/RouterF.rb +0 -25
- data/lib/Ice/ServantLocator.rb +0 -26
- data/lib/Ice/ServantLocatorF.rb +0 -24
- data/lib/Ice/SliceChecksumDict.rb +0 -24
- data/lib/Ice/ValueFactory.rb +0 -28
- data/lib/Ice/Version.rb +0 -90
- data/lib/Ice.rb +0 -673
- data/lib/IceBox/IceBox.rb +0 -164
- data/lib/IceBox.rb +0 -5
- data/lib/IceGrid/Admin.rb +0 -1196
- data/lib/IceGrid/Descriptor.rb +0 -1034
- data/lib/IceGrid/Exception.rb +0 -376
- data/lib/IceGrid/FileParser.rb +0 -65
- data/lib/IceGrid/PluginFacade.rb +0 -35
- data/lib/IceGrid/Registry.rb +0 -209
- data/lib/IceGrid/Session.rb +0 -71
- data/lib/IceGrid/UserAccountMapper.rb +0 -61
- data/lib/IceGrid.rb +0 -9
- data/lib/IcePatch2/FileInfo.rb +0 -115
- data/lib/IcePatch2/FileServer.rb +0 -123
- data/lib/IcePatch2.rb +0 -5
- data/lib/IceStorm/IceStorm.rb +0 -332
- data/lib/IceStorm/Metrics.rb +0 -73
- data/lib/IceStorm.rb +0 -6
- data/slice/Glacier2/Metrics.ice +0 -88
- data/slice/Glacier2/PermissionsVerifier.ice +0 -111
- data/slice/Glacier2/PermissionsVerifierF.ice +0 -30
- data/slice/Glacier2/Router.ice +0 -186
- data/slice/Glacier2/RouterF.ice +0 -29
- data/slice/Glacier2/SSLInfo.ice +0 -59
- data/slice/Glacier2/Session.ice +0 -274
- data/slice/Ice/BuiltinSequences.ice +0 -59
- data/slice/Ice/Communicator.ice +0 -676
- data/slice/Ice/CommunicatorF.ice +0 -31
- data/slice/Ice/Connection.ice +0 -516
- data/slice/Ice/ConnectionF.ice +0 -33
- data/slice/Ice/Current.ice +0 -170
- data/slice/Ice/Endpoint.ice +0 -291
- data/slice/Ice/EndpointF.ice +0 -43
- data/slice/Ice/EndpointTypes.ice +0 -48
- data/slice/Ice/FacetMap.ice +0 -36
- data/slice/Ice/Identity.ice +0 -75
- data/slice/Ice/ImplicitContext.ice +0 -119
- data/slice/Ice/ImplicitContextF.ice +0 -30
- data/slice/Ice/Instrumentation.ice +0 -509
- data/slice/Ice/InstrumentationF.ice +0 -38
- data/slice/Ice/LocalException.ice +0 -1040
- data/slice/Ice/Locator.ice +0 -239
- data/slice/Ice/LocatorF.ice +0 -32
- data/slice/Ice/Logger.ice +0 -99
- data/slice/Ice/LoggerF.ice +0 -31
- data/slice/Ice/Metrics.ice +0 -436
- data/slice/Ice/ObjectAdapter.ice +0 -710
- data/slice/Ice/ObjectAdapterF.ice +0 -31
- data/slice/Ice/ObjectFactory.ice +0 -71
- data/slice/Ice/Plugin.ice +0 -131
- data/slice/Ice/PluginF.ice +0 -36
- data/slice/Ice/Process.ice +0 -64
- data/slice/Ice/ProcessF.ice +0 -31
- data/slice/Ice/Properties.ice +0 -244
- data/slice/Ice/PropertiesAdmin.ice +0 -87
- data/slice/Ice/PropertiesF.ice +0 -32
- data/slice/Ice/RemoteLogger.ice +0 -226
- data/slice/Ice/Router.ice +0 -103
- data/slice/Ice/RouterF.ice +0 -31
- data/slice/Ice/ServantLocator.ice +0 -136
- data/slice/Ice/ServantLocatorF.ice +0 -31
- data/slice/Ice/SliceChecksumDict.ice +0 -36
- data/slice/Ice/ValueFactory.ice +0 -133
- data/slice/Ice/Version.ice +0 -51
- data/slice/IceBT/ConnectionInfo.ice +0 -59
- data/slice/IceBT/EndpointInfo.ice +0 -57
- data/slice/IceBT/Types.ice +0 -45
- data/slice/IceBox/IceBox.ice +0 -216
- data/slice/IceDiscovery/IceDiscovery.ice +0 -98
- data/slice/IceGrid/Admin.ice +0 -1957
- data/slice/IceGrid/Descriptor.ice +0 -1094
- data/slice/IceGrid/Exception.ice +0 -396
- data/slice/IceGrid/FileParser.ice +0 -72
- data/slice/IceGrid/PluginFacade.ice +0 -329
- data/slice/IceGrid/Registry.ice +0 -269
- data/slice/IceGrid/Session.ice +0 -128
- data/slice/IceGrid/UserAccountMapper.ice +0 -69
- data/slice/IceIAP/ConnectionInfo.ice +0 -74
- data/slice/IceIAP/EndpointInfo.ice +0 -68
- data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +0 -83
- data/slice/IcePatch2/FileInfo.ice +0 -85
- data/slice/IcePatch2/FileServer.ice +0 -191
- data/slice/IceSSL/ConnectionInfo.ice +0 -54
- data/slice/IceSSL/ConnectionInfoF.ice +0 -31
- data/slice/IceSSL/EndpointInfo.ice +0 -45
- data/slice/IceStorm/IceStorm.ice +0 -414
- data/slice/IceStorm/Metrics.ice +0 -83
- /data/{ext → dist}/ice/mcpp/config.h +0 -0
- /data/{ext → dist}/ice/mcpp/configed.H +0 -0
- /data/{ext → dist}/ice/mcpp/directive.c +0 -0
- /data/{ext → dist}/ice/mcpp/eval.c +0 -0
- /data/{ext → dist}/ice/mcpp/expand.c +0 -0
- /data/{ext → dist}/ice/mcpp/mbchar.c +0 -0
- /data/{ext → dist}/ice/mcpp/mcpp_lib.h +0 -0
- /data/{ext/ice/mcpp/main.c → dist/ice/mcpp/mcpp_main.c} +0 -0
- /data/{ext → dist}/ice/mcpp/mcpp_out.h +0 -0
- /data/{ext → dist}/ice/mcpp/support.c +0 -0
- /data/{ext → dist}/ice/mcpp/system.H +0 -0
- /data/{ext → dist}/ice/mcpp/system.c +0 -0
|
@@ -0,0 +1,1790 @@
|
|
|
1
|
+
// Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
#include "Ice/Service.h"
|
|
4
|
+
#include "ArgVector.h"
|
|
5
|
+
#include "ConsoleUtil.h"
|
|
6
|
+
#include "Ice/StringUtil.h"
|
|
7
|
+
#include "LoggerI.h"
|
|
8
|
+
|
|
9
|
+
#ifdef _WIN32
|
|
10
|
+
# include "Ice/EventLoggerMsg.h"
|
|
11
|
+
# include <winsock2.h>
|
|
12
|
+
#else
|
|
13
|
+
# include "Network.h"
|
|
14
|
+
# include <csignal>
|
|
15
|
+
# include <sys/stat.h>
|
|
16
|
+
# include <sys/types.h>
|
|
17
|
+
# ifdef ICE_USE_SYSTEMD
|
|
18
|
+
# include <systemd/sd-daemon.h>
|
|
19
|
+
# endif
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
using namespace std;
|
|
23
|
+
using namespace Ice;
|
|
24
|
+
using namespace IceInternal;
|
|
25
|
+
|
|
26
|
+
Ice::Service* Ice::Service::_instance = nullptr;
|
|
27
|
+
|
|
28
|
+
namespace
|
|
29
|
+
{
|
|
30
|
+
CtrlCHandler* ctrlCHandler = nullptr;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//
|
|
34
|
+
// Callback for CtrlCHandler.
|
|
35
|
+
//
|
|
36
|
+
static void
|
|
37
|
+
ctrlCHandlerCallback(int sig)
|
|
38
|
+
{
|
|
39
|
+
Ice::Service* service = Ice::Service::instance();
|
|
40
|
+
assert(service != nullptr);
|
|
41
|
+
service->handleInterrupt(sig);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#ifdef _WIN32
|
|
45
|
+
|
|
46
|
+
//
|
|
47
|
+
// Main function for Win32 service.
|
|
48
|
+
//
|
|
49
|
+
void WINAPI
|
|
50
|
+
Ice_Service_ServiceMain(DWORD argc, LPWSTR* argv)
|
|
51
|
+
{
|
|
52
|
+
Ice::Service* service = Ice::Service::instance();
|
|
53
|
+
assert(service != 0);
|
|
54
|
+
service->serviceMain(argc, argv);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//
|
|
58
|
+
// Win32 service control handler.
|
|
59
|
+
//
|
|
60
|
+
void WINAPI
|
|
61
|
+
Ice_Service_CtrlHandler(DWORD ctrl)
|
|
62
|
+
{
|
|
63
|
+
Ice::Service* service = Ice::Service::instance();
|
|
64
|
+
assert(service != 0);
|
|
65
|
+
service->control(ctrl);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
namespace
|
|
69
|
+
{
|
|
70
|
+
class ServiceStatusManager
|
|
71
|
+
{
|
|
72
|
+
public:
|
|
73
|
+
ServiceStatusManager(SERVICE_STATUS_HANDLE);
|
|
74
|
+
|
|
75
|
+
//
|
|
76
|
+
// Start a thread to provide regular status updates to the SCM.
|
|
77
|
+
//
|
|
78
|
+
void startUpdate(DWORD);
|
|
79
|
+
|
|
80
|
+
//
|
|
81
|
+
// Stop the update thread.
|
|
82
|
+
//
|
|
83
|
+
void stopUpdate();
|
|
84
|
+
|
|
85
|
+
//
|
|
86
|
+
// Change the service status and report it (once).
|
|
87
|
+
//
|
|
88
|
+
void changeStatus(DWORD, DWORD);
|
|
89
|
+
|
|
90
|
+
//
|
|
91
|
+
// Report the current status.
|
|
92
|
+
//
|
|
93
|
+
void reportStatus();
|
|
94
|
+
|
|
95
|
+
private:
|
|
96
|
+
void run();
|
|
97
|
+
|
|
98
|
+
SERVICE_STATUS_HANDLE _handle;
|
|
99
|
+
SERVICE_STATUS _status;
|
|
100
|
+
std::thread _thread;
|
|
101
|
+
bool _stopped;
|
|
102
|
+
std::mutex _mutex;
|
|
103
|
+
std::condition_variable _conditionVariable;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
static ServiceStatusManager* serviceStatusManager;
|
|
107
|
+
|
|
108
|
+
//
|
|
109
|
+
// Interface implemented by SMEventLoggerI and called from
|
|
110
|
+
// SMEventLoggerIWrapper.
|
|
111
|
+
//
|
|
112
|
+
class SMEventLogger
|
|
113
|
+
{
|
|
114
|
+
public:
|
|
115
|
+
virtual void print(const string&, const string&) = 0;
|
|
116
|
+
virtual void trace(const string&, const string&, const string&) = 0;
|
|
117
|
+
virtual void warning(const string&, const string&) = 0;
|
|
118
|
+
virtual void error(const string&, const string&) = 0;
|
|
119
|
+
};
|
|
120
|
+
using SMEventLoggerPtr = std::shared_ptr<SMEventLogger>;
|
|
121
|
+
|
|
122
|
+
class SMEventLoggerIWrapper final : public Ice::Logger
|
|
123
|
+
{
|
|
124
|
+
public:
|
|
125
|
+
SMEventLoggerIWrapper(const SMEventLoggerPtr& logger, string prefix)
|
|
126
|
+
: _logger(logger),
|
|
127
|
+
_prefix(std::move(prefix))
|
|
128
|
+
{
|
|
129
|
+
assert(_logger);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
void print(const string& message) final { _logger->print(_prefix, message); }
|
|
133
|
+
|
|
134
|
+
void trace(const string& category, const string& message) final { _logger->trace(_prefix, category, message); }
|
|
135
|
+
|
|
136
|
+
void warning(const string& message) final { _logger->warning(_prefix, message); }
|
|
137
|
+
|
|
138
|
+
void error(const string& message) final { _logger->error(_prefix, message); }
|
|
139
|
+
|
|
140
|
+
string getPrefix() final { return _prefix; }
|
|
141
|
+
|
|
142
|
+
Ice::LoggerPtr cloneWithPrefix(string prefix) final
|
|
143
|
+
{
|
|
144
|
+
return make_shared<SMEventLoggerIWrapper>(_logger, std::move(prefix));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
private:
|
|
148
|
+
SMEventLoggerPtr _logger;
|
|
149
|
+
const string _prefix;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
class SMEventLoggerI : public SMEventLogger
|
|
153
|
+
{
|
|
154
|
+
public:
|
|
155
|
+
SMEventLoggerI(const string& source, const StringConverterPtr& stringConverter)
|
|
156
|
+
: _stringConverter(stringConverter)
|
|
157
|
+
{
|
|
158
|
+
//
|
|
159
|
+
// Don't need to use a wide string converter as the wide string is passed
|
|
160
|
+
// to Windows API.
|
|
161
|
+
//
|
|
162
|
+
_source = RegisterEventSourceW(0, stringToWstring(mangleSource(source), _stringConverter).c_str());
|
|
163
|
+
if (_source == 0)
|
|
164
|
+
{
|
|
165
|
+
throw SyscallException{__FILE__, __LINE__, "RegisterEventSourceW failed", GetLastError()};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
~SMEventLoggerI()
|
|
170
|
+
{
|
|
171
|
+
assert(_source != 0);
|
|
172
|
+
DeregisterEventSource(_source);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
static void addKeys(const string& source, const StringConverterPtr& stringConverter)
|
|
176
|
+
{
|
|
177
|
+
HKEY hKey;
|
|
178
|
+
DWORD d;
|
|
179
|
+
//
|
|
180
|
+
// Don't need to use a wide string converter as the wide string is passed
|
|
181
|
+
// to Windows API.
|
|
182
|
+
//
|
|
183
|
+
LSTATUS err = RegCreateKeyExW(
|
|
184
|
+
HKEY_LOCAL_MACHINE,
|
|
185
|
+
stringToWstring(createKey(source), stringConverter).c_str(),
|
|
186
|
+
0,
|
|
187
|
+
const_cast<wchar_t*>(L"REG_SZ"),
|
|
188
|
+
REG_OPTION_NON_VOLATILE,
|
|
189
|
+
KEY_ALL_ACCESS,
|
|
190
|
+
0,
|
|
191
|
+
&hKey,
|
|
192
|
+
&d);
|
|
193
|
+
|
|
194
|
+
if (err != ERROR_SUCCESS)
|
|
195
|
+
{
|
|
196
|
+
throw SyscallException{__FILE__, __LINE__, "RegCreateKeyExW failed", static_cast<DWORD>(err)};
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
//
|
|
200
|
+
// Get the filename of this DLL.
|
|
201
|
+
//
|
|
202
|
+
wchar_t path[_MAX_PATH];
|
|
203
|
+
assert(_module != 0);
|
|
204
|
+
if (!GetModuleFileNameW(_module, path, _MAX_PATH))
|
|
205
|
+
{
|
|
206
|
+
DWORD error = GetLastError();
|
|
207
|
+
RegCloseKey(hKey);
|
|
208
|
+
throw SyscallException{__FILE__, __LINE__, "GetModuleFileNameW failed", error};
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
//
|
|
212
|
+
// The event resources are bundled into this DLL, therefore
|
|
213
|
+
// the "EventMessageFile" key should contain the path to this
|
|
214
|
+
// DLL.
|
|
215
|
+
//
|
|
216
|
+
err = RegSetValueExW(
|
|
217
|
+
hKey,
|
|
218
|
+
L"EventMessageFile",
|
|
219
|
+
0,
|
|
220
|
+
REG_EXPAND_SZ,
|
|
221
|
+
reinterpret_cast<unsigned char*>(path),
|
|
222
|
+
static_cast<DWORD>((wcslen(path) * sizeof(wchar_t)) + 1));
|
|
223
|
+
|
|
224
|
+
if (err == ERROR_SUCCESS)
|
|
225
|
+
{
|
|
226
|
+
//
|
|
227
|
+
// The "TypesSupported" key indicates the supported event
|
|
228
|
+
// types.
|
|
229
|
+
//
|
|
230
|
+
DWORD typesSupported = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE;
|
|
231
|
+
err = RegSetValueExW(
|
|
232
|
+
hKey,
|
|
233
|
+
L"TypesSupported",
|
|
234
|
+
0,
|
|
235
|
+
REG_DWORD,
|
|
236
|
+
reinterpret_cast<unsigned char*>(&typesSupported),
|
|
237
|
+
sizeof(typesSupported));
|
|
238
|
+
}
|
|
239
|
+
if (err != ERROR_SUCCESS)
|
|
240
|
+
{
|
|
241
|
+
RegCloseKey(hKey);
|
|
242
|
+
throw SyscallException{__FILE__, __LINE__, "RegSetValueExW failed", static_cast<DWORD>(err)};
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
RegCloseKey(hKey);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
static void removeKeys(const string& source, const StringConverterPtr& stringConverter)
|
|
249
|
+
{
|
|
250
|
+
//
|
|
251
|
+
// Don't need to use a wide string converter as the wide string is passed
|
|
252
|
+
// to Windows API.
|
|
253
|
+
//
|
|
254
|
+
LSTATUS err =
|
|
255
|
+
RegDeleteKeyW(HKEY_LOCAL_MACHINE, stringToWstring(createKey(source), stringConverter).c_str());
|
|
256
|
+
if (err != ERROR_SUCCESS)
|
|
257
|
+
{
|
|
258
|
+
throw SyscallException{__FILE__, __LINE__, "RegDeleteKeyW failed", static_cast<DWORD>(err)};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
virtual void print(const string& prefix, const string& message)
|
|
263
|
+
{
|
|
264
|
+
string s;
|
|
265
|
+
if (!prefix.empty())
|
|
266
|
+
{
|
|
267
|
+
s = prefix;
|
|
268
|
+
s.append(": ");
|
|
269
|
+
}
|
|
270
|
+
s.append(message);
|
|
271
|
+
print(s);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
void print(const string& message)
|
|
275
|
+
{
|
|
276
|
+
//
|
|
277
|
+
// Don't need to use a wide string converter as the wide string is passed
|
|
278
|
+
// to Windows API.
|
|
279
|
+
//
|
|
280
|
+
const wstring msg = stringToWstring(message, _stringConverter);
|
|
281
|
+
const wchar_t* messages[1];
|
|
282
|
+
messages[0] = msg.c_str();
|
|
283
|
+
//
|
|
284
|
+
// We ignore any failures from ReportEvent since there isn't
|
|
285
|
+
// anything we can do about it.
|
|
286
|
+
//
|
|
287
|
+
ReportEventW(_source, EVENTLOG_INFORMATION_TYPE, 0, EVENT_LOGGER_MSG, 0, 1, 0, messages, 0);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
virtual void trace(const string& prefix, const string& category, const string& message)
|
|
291
|
+
{
|
|
292
|
+
string s;
|
|
293
|
+
if (!category.empty())
|
|
294
|
+
{
|
|
295
|
+
s = category;
|
|
296
|
+
s.append(": ");
|
|
297
|
+
}
|
|
298
|
+
s.append(message);
|
|
299
|
+
trace(prefix, s);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
void trace(const string& category, const string& message)
|
|
303
|
+
{
|
|
304
|
+
string s;
|
|
305
|
+
if (!category.empty())
|
|
306
|
+
{
|
|
307
|
+
s = category;
|
|
308
|
+
s.append(": ");
|
|
309
|
+
}
|
|
310
|
+
s.append(message);
|
|
311
|
+
|
|
312
|
+
//
|
|
313
|
+
// Don't need to use a wide string converter as the wide string is passed
|
|
314
|
+
// to Windows API.
|
|
315
|
+
//
|
|
316
|
+
wstring msg = stringToWstring(s, _stringConverter);
|
|
317
|
+
const wchar_t* messages[1];
|
|
318
|
+
messages[0] = msg.c_str();
|
|
319
|
+
//
|
|
320
|
+
// We ignore any failures from ReportEvent since there isn't
|
|
321
|
+
// anything we can do about it.
|
|
322
|
+
//
|
|
323
|
+
ReportEventW(_source, EVENTLOG_INFORMATION_TYPE, 0, EVENT_LOGGER_MSG, 0, 1, 0, messages, 0);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
virtual void warning(const string& prefix, const string& message)
|
|
327
|
+
{
|
|
328
|
+
string s;
|
|
329
|
+
if (!prefix.empty())
|
|
330
|
+
{
|
|
331
|
+
s = prefix;
|
|
332
|
+
s.append(": ");
|
|
333
|
+
}
|
|
334
|
+
s.append(message);
|
|
335
|
+
warning(s);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
void warning(const string& message)
|
|
339
|
+
{
|
|
340
|
+
//
|
|
341
|
+
// Don't need to use a wide string converter as the wide string is passed
|
|
342
|
+
// to Windows API.
|
|
343
|
+
//
|
|
344
|
+
wstring msg = stringToWstring(message, _stringConverter);
|
|
345
|
+
const wchar_t* messages[1];
|
|
346
|
+
messages[0] = msg.c_str();
|
|
347
|
+
//
|
|
348
|
+
// We ignore any failures from ReportEvent since there isn't
|
|
349
|
+
// anything we can do about it.
|
|
350
|
+
//
|
|
351
|
+
ReportEventW(_source, EVENTLOG_WARNING_TYPE, 0, EVENT_LOGGER_MSG, 0, 1, 0, messages, 0);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
virtual void error(const string& prefix, const string& message)
|
|
355
|
+
{
|
|
356
|
+
string s;
|
|
357
|
+
if (!prefix.empty())
|
|
358
|
+
{
|
|
359
|
+
s = prefix;
|
|
360
|
+
s.append(": ");
|
|
361
|
+
}
|
|
362
|
+
s.append(message);
|
|
363
|
+
error(s);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
void error(const string& message)
|
|
367
|
+
{
|
|
368
|
+
//
|
|
369
|
+
// Don't need to use a wide string converter as the wide string is passed
|
|
370
|
+
// to Windows API.
|
|
371
|
+
//
|
|
372
|
+
wstring msg = stringToWstring(message, _stringConverter);
|
|
373
|
+
const wchar_t* messages[1];
|
|
374
|
+
messages[0] = msg.c_str();
|
|
375
|
+
//
|
|
376
|
+
// We ignore any failures from ReportEvent since there isn't
|
|
377
|
+
// anything we can do about it.
|
|
378
|
+
//
|
|
379
|
+
ReportEventW(_source, EVENTLOG_ERROR_TYPE, 0, EVENT_LOGGER_MSG, 0, 1, 0, messages, 0);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
static void setModuleHandle(HMODULE module) { _module = module; }
|
|
383
|
+
|
|
384
|
+
private:
|
|
385
|
+
static string mangleSource(string name)
|
|
386
|
+
{
|
|
387
|
+
//
|
|
388
|
+
// The source name cannot contain backslashes.
|
|
389
|
+
//
|
|
390
|
+
string::size_type pos = 0;
|
|
391
|
+
while ((pos = name.find('\\', pos)) != string::npos)
|
|
392
|
+
{
|
|
393
|
+
name[pos] = '/';
|
|
394
|
+
}
|
|
395
|
+
return name;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
static string createKey(string name)
|
|
399
|
+
{
|
|
400
|
+
//
|
|
401
|
+
// The registry key is:
|
|
402
|
+
//
|
|
403
|
+
// HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application.
|
|
404
|
+
//
|
|
405
|
+
return "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\" + mangleSource(name);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
StringConverterPtr _stringConverter;
|
|
409
|
+
HANDLE _source;
|
|
410
|
+
static HMODULE _module;
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
HMODULE SMEventLoggerI::_module = 0;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
#endif
|
|
417
|
+
|
|
418
|
+
Ice::Service::Service()
|
|
419
|
+
{
|
|
420
|
+
assert(_instance == nullptr);
|
|
421
|
+
_instance = this;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
Ice::Service::~Service()
|
|
425
|
+
{
|
|
426
|
+
_instance = nullptr;
|
|
427
|
+
delete ctrlCHandler;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
bool
|
|
431
|
+
Ice::Service::shutdown()
|
|
432
|
+
{
|
|
433
|
+
if (_communicator)
|
|
434
|
+
{
|
|
435
|
+
try
|
|
436
|
+
{
|
|
437
|
+
_communicator->shutdown();
|
|
438
|
+
}
|
|
439
|
+
catch (const CommunicatorDestroyedException&)
|
|
440
|
+
{
|
|
441
|
+
//
|
|
442
|
+
// Expected if the service communicator is being destroyed.
|
|
443
|
+
//
|
|
444
|
+
}
|
|
445
|
+
catch (const Ice::Exception& ex)
|
|
446
|
+
{
|
|
447
|
+
ServiceWarning warn(this);
|
|
448
|
+
warn << "exception during shutdown:\n" << ex;
|
|
449
|
+
}
|
|
450
|
+
catch (const std::exception& ex)
|
|
451
|
+
{
|
|
452
|
+
ServiceWarning warn(this);
|
|
453
|
+
warn << "exception during shutdown:\n" << ex;
|
|
454
|
+
}
|
|
455
|
+
catch (...)
|
|
456
|
+
{
|
|
457
|
+
warning("unknown exception during shutdown");
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
return true;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
void
|
|
464
|
+
Ice::Service::interrupt()
|
|
465
|
+
{
|
|
466
|
+
shutdown();
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
int
|
|
470
|
+
Ice::Service::main(int argc, const char* const argv[], InitializationData initData)
|
|
471
|
+
{
|
|
472
|
+
_name = "";
|
|
473
|
+
if (argc > 0)
|
|
474
|
+
{
|
|
475
|
+
_name = argv[0];
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
IceInternal::ArgVector av(argc, argv); // copy args
|
|
479
|
+
|
|
480
|
+
//
|
|
481
|
+
// We parse the properties here to extract Ice.ProgramName and
|
|
482
|
+
// Ice.EventLog.Source on Windows.
|
|
483
|
+
//
|
|
484
|
+
try
|
|
485
|
+
{
|
|
486
|
+
initData.properties = createProperties(av.argc, av.argv, initData.properties);
|
|
487
|
+
}
|
|
488
|
+
catch (const Ice::Exception& ex)
|
|
489
|
+
{
|
|
490
|
+
ServiceError err(this);
|
|
491
|
+
err << "createProperties failed: " << ex;
|
|
492
|
+
return EXIT_FAILURE;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
#ifdef _WIN32
|
|
496
|
+
|
|
497
|
+
//
|
|
498
|
+
// First check for the --service option.
|
|
499
|
+
//
|
|
500
|
+
string name;
|
|
501
|
+
int idx = 1;
|
|
502
|
+
const StringConverterPtr stringConverter = getProcessStringConverter();
|
|
503
|
+
while (idx < av.argc)
|
|
504
|
+
{
|
|
505
|
+
if (strcmp(av.argv[idx], "--service") == 0)
|
|
506
|
+
{
|
|
507
|
+
if (idx + 1 >= av.argc)
|
|
508
|
+
{
|
|
509
|
+
error("service name argument expected for '" + string(av.argv[idx]) + "'");
|
|
510
|
+
return EXIT_FAILURE;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
name = av.argv[idx + 1];
|
|
514
|
+
|
|
515
|
+
//
|
|
516
|
+
// If the process logger is the default logger then we use
|
|
517
|
+
// our own logger.
|
|
518
|
+
//
|
|
519
|
+
_logger = getProcessLogger();
|
|
520
|
+
if (dynamic_pointer_cast<LoggerI>(_logger))
|
|
521
|
+
{
|
|
522
|
+
string eventLogSource = initData.properties->getIceProperty("Ice.EventLog.Source");
|
|
523
|
+
if (eventLogSource.empty())
|
|
524
|
+
{
|
|
525
|
+
eventLogSource = name;
|
|
526
|
+
}
|
|
527
|
+
_logger = make_shared<SMEventLoggerIWrapper>(
|
|
528
|
+
make_shared<SMEventLoggerI>(eventLogSource, stringConverter),
|
|
529
|
+
"");
|
|
530
|
+
setProcessLogger(_logger);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
for (int i = idx; i + 2 < av.argc; ++i)
|
|
534
|
+
{
|
|
535
|
+
av.argv[i] = av.argv[i + 2];
|
|
536
|
+
}
|
|
537
|
+
av.argc -= 2;
|
|
538
|
+
}
|
|
539
|
+
else
|
|
540
|
+
{
|
|
541
|
+
++idx;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
if (!name.empty())
|
|
546
|
+
{
|
|
547
|
+
configureService(name);
|
|
548
|
+
}
|
|
549
|
+
#else
|
|
550
|
+
//
|
|
551
|
+
// Check for --daemon, --noclose, --nochdir and --pidfile.
|
|
552
|
+
//
|
|
553
|
+
|
|
554
|
+
bool daemonize = false;
|
|
555
|
+
bool closeFiles = true;
|
|
556
|
+
bool changeDirectory = true;
|
|
557
|
+
string pidFile;
|
|
558
|
+
int idx = 1;
|
|
559
|
+
while (idx < av.argc)
|
|
560
|
+
{
|
|
561
|
+
if (strcmp(av.argv[idx], "--daemon") == 0)
|
|
562
|
+
{
|
|
563
|
+
for (int i = idx; i + 1 < av.argc; ++i)
|
|
564
|
+
{
|
|
565
|
+
av.argv[i] = av.argv[i + 1];
|
|
566
|
+
}
|
|
567
|
+
av.argc -= 1;
|
|
568
|
+
|
|
569
|
+
daemonize = true;
|
|
570
|
+
}
|
|
571
|
+
else if (strcmp(av.argv[idx], "--noclose") == 0)
|
|
572
|
+
{
|
|
573
|
+
for (int i = idx; i + 1 < av.argc; ++i)
|
|
574
|
+
{
|
|
575
|
+
av.argv[i] = av.argv[i + 1];
|
|
576
|
+
}
|
|
577
|
+
av.argc -= 1;
|
|
578
|
+
|
|
579
|
+
closeFiles = false;
|
|
580
|
+
}
|
|
581
|
+
else if (strcmp(av.argv[idx], "--nochdir") == 0)
|
|
582
|
+
{
|
|
583
|
+
for (int i = idx; i + 1 < av.argc; ++i)
|
|
584
|
+
{
|
|
585
|
+
av.argv[i] = av.argv[i + 1];
|
|
586
|
+
}
|
|
587
|
+
av.argc -= 1;
|
|
588
|
+
|
|
589
|
+
changeDirectory = false;
|
|
590
|
+
}
|
|
591
|
+
else if (strcmp(av.argv[idx], "--pidfile") == 0)
|
|
592
|
+
{
|
|
593
|
+
if (idx + 1 < av.argc)
|
|
594
|
+
{
|
|
595
|
+
pidFile = av.argv[idx + 1];
|
|
596
|
+
}
|
|
597
|
+
else
|
|
598
|
+
{
|
|
599
|
+
if (av.argv[0])
|
|
600
|
+
{
|
|
601
|
+
consoleErr << av.argv[0] << ": ";
|
|
602
|
+
}
|
|
603
|
+
consoleErr << "--pidfile must be followed by an argument" << endl;
|
|
604
|
+
return EXIT_FAILURE;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
for (int i = idx; i + 2 < av.argc; ++i)
|
|
608
|
+
{
|
|
609
|
+
av.argv[i] = av.argv[i + 2];
|
|
610
|
+
}
|
|
611
|
+
av.argc -= 2;
|
|
612
|
+
}
|
|
613
|
+
else
|
|
614
|
+
{
|
|
615
|
+
++idx;
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
if (!closeFiles && !daemonize)
|
|
620
|
+
{
|
|
621
|
+
if (av.argv[0])
|
|
622
|
+
{
|
|
623
|
+
consoleErr << av.argv[0] << ": ";
|
|
624
|
+
}
|
|
625
|
+
consoleErr << "--noclose must be used with --daemon" << endl;
|
|
626
|
+
return EXIT_FAILURE;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
if (pidFile.size() > 0 && !daemonize)
|
|
630
|
+
{
|
|
631
|
+
if (av.argv[0])
|
|
632
|
+
{
|
|
633
|
+
consoleErr << av.argv[0] << ": ";
|
|
634
|
+
}
|
|
635
|
+
consoleErr << "--pidfile <file> must be used with --daemon" << endl;
|
|
636
|
+
return EXIT_FAILURE;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
if (daemonize)
|
|
640
|
+
{
|
|
641
|
+
configureDaemon(changeDirectory, closeFiles, pidFile);
|
|
642
|
+
}
|
|
643
|
+
#endif
|
|
644
|
+
|
|
645
|
+
//
|
|
646
|
+
// If no logger has been set yet, we set it to the process logger. If the
|
|
647
|
+
// process logger is the default logger, we change it to a logger which is
|
|
648
|
+
// using the program name for the prefix.
|
|
649
|
+
//
|
|
650
|
+
if (!_logger)
|
|
651
|
+
{
|
|
652
|
+
_logger = getProcessLogger();
|
|
653
|
+
if (dynamic_pointer_cast<LoggerI>(_logger))
|
|
654
|
+
{
|
|
655
|
+
const bool convert = initData.properties->getIcePropertyAsInt("Ice.LogStdErr.Convert") > 0 &&
|
|
656
|
+
initData.properties->getIceProperty("Ice.StdErr").empty();
|
|
657
|
+
|
|
658
|
+
_logger = make_shared<LoggerI>(initData.properties->getIceProperty("Ice.ProgramName"), "", convert);
|
|
659
|
+
setProcessLogger(_logger);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
return run(av.argc, av.argv, std::move(initData));
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
#ifdef _WIN32
|
|
667
|
+
int
|
|
668
|
+
Ice::Service::main(int argc, const wchar_t* const argv[], InitializationData initData)
|
|
669
|
+
{
|
|
670
|
+
return main(Ice::argsToStringSeq(argc, argv), std::move(initData));
|
|
671
|
+
}
|
|
672
|
+
#endif
|
|
673
|
+
|
|
674
|
+
int
|
|
675
|
+
Ice::Service::main(const StringSeq& args, InitializationData initData)
|
|
676
|
+
{
|
|
677
|
+
IceInternal::ArgVector av(args);
|
|
678
|
+
return main(av.argc, av.argv, std::move(initData));
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
Ice::CommunicatorPtr
|
|
682
|
+
Ice::Service::communicator() const
|
|
683
|
+
{
|
|
684
|
+
return _communicator;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
Ice::Service*
|
|
688
|
+
Ice::Service::instance()
|
|
689
|
+
{
|
|
690
|
+
return _instance;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
bool
|
|
694
|
+
Ice::Service::service() const
|
|
695
|
+
{
|
|
696
|
+
return _service;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
string
|
|
700
|
+
Ice::Service::name() const
|
|
701
|
+
{
|
|
702
|
+
return _name;
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
int
|
|
706
|
+
Ice::Service::run(int argc, const char* const argv[], InitializationData initData)
|
|
707
|
+
{
|
|
708
|
+
IceInternal::ArgVector av(argc, argv); // copy args
|
|
709
|
+
|
|
710
|
+
if (_service)
|
|
711
|
+
{
|
|
712
|
+
#ifdef _WIN32
|
|
713
|
+
return runService(av.argc, av.argv, std::move(initData));
|
|
714
|
+
#else
|
|
715
|
+
return runDaemon(av.argc, av.argv, std::move(initData));
|
|
716
|
+
#endif
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
//
|
|
720
|
+
// Run as a foreground process.
|
|
721
|
+
//
|
|
722
|
+
int status = EXIT_FAILURE;
|
|
723
|
+
try
|
|
724
|
+
{
|
|
725
|
+
//
|
|
726
|
+
// Create the CtrlCHandler after any potential forking so that signals
|
|
727
|
+
// are initialized properly. We do this before initializing the
|
|
728
|
+
// communicator because we need to ensure that this is done before any
|
|
729
|
+
// additional threads are created.
|
|
730
|
+
//
|
|
731
|
+
ctrlCHandler = new CtrlCHandler;
|
|
732
|
+
|
|
733
|
+
//
|
|
734
|
+
// Initialize the communicator.
|
|
735
|
+
//
|
|
736
|
+
_communicator = initializeCommunicator(av.argc, av.argv, std::move(initData));
|
|
737
|
+
|
|
738
|
+
//
|
|
739
|
+
// Use the configured logger.
|
|
740
|
+
//
|
|
741
|
+
_logger = _communicator->getLogger();
|
|
742
|
+
|
|
743
|
+
//
|
|
744
|
+
// Determines whether we ignore SIGHUP/CTRL_LOGOFF_EVENT.
|
|
745
|
+
//
|
|
746
|
+
_nohup = _communicator->getProperties()->getIcePropertyAsInt("Ice.Nohup") > 0;
|
|
747
|
+
|
|
748
|
+
//
|
|
749
|
+
// Start the service.
|
|
750
|
+
//
|
|
751
|
+
if (start(av.argc, av.argv, status))
|
|
752
|
+
{
|
|
753
|
+
#ifdef ICE_USE_SYSTEMD
|
|
754
|
+
sd_notify(0, "READY=1");
|
|
755
|
+
#endif
|
|
756
|
+
//
|
|
757
|
+
// Wait for service shutdown.
|
|
758
|
+
//
|
|
759
|
+
waitForShutdown();
|
|
760
|
+
|
|
761
|
+
#ifdef ICE_USE_SYSTEMD
|
|
762
|
+
//
|
|
763
|
+
// Inform the service manager that the service is beginning its shutdown.
|
|
764
|
+
//
|
|
765
|
+
sd_notify(0, "STOPPING=1");
|
|
766
|
+
#endif
|
|
767
|
+
//
|
|
768
|
+
// Stop the service.
|
|
769
|
+
//
|
|
770
|
+
if (stop())
|
|
771
|
+
{
|
|
772
|
+
status = EXIT_SUCCESS;
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
catch (const Ice::Exception& ex)
|
|
777
|
+
{
|
|
778
|
+
ServiceError err(this);
|
|
779
|
+
err << "service terminating after catching exception:\n" << ex;
|
|
780
|
+
#ifdef ICE_USE_SYSTEMD
|
|
781
|
+
const string msg = err.str();
|
|
782
|
+
sd_notifyf(0, "STATUS=Failed service terminating after catching exception: %s", msg.c_str());
|
|
783
|
+
#endif
|
|
784
|
+
}
|
|
785
|
+
catch (const std::exception& ex)
|
|
786
|
+
{
|
|
787
|
+
ServiceError err(this);
|
|
788
|
+
err << "service terminating after catching exception:\n" << ex;
|
|
789
|
+
#ifdef ICE_USE_SYSTEMD
|
|
790
|
+
const string msg = err.str();
|
|
791
|
+
sd_notifyf(0, "STATUS=Failed service terminating after catching exception: %s", msg.c_str());
|
|
792
|
+
#endif
|
|
793
|
+
}
|
|
794
|
+
catch (...)
|
|
795
|
+
{
|
|
796
|
+
error("service terminating after catching unknown exception");
|
|
797
|
+
#ifdef ICE_USE_SYSTEMD
|
|
798
|
+
sd_notify(0, "STATUS=Failed service terminating after catching unknown exception");
|
|
799
|
+
#endif
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
if (_communicator)
|
|
803
|
+
{
|
|
804
|
+
_communicator->destroy();
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
return status;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
#ifdef _WIN32
|
|
811
|
+
|
|
812
|
+
void
|
|
813
|
+
Ice::Service::configureService(const string& name)
|
|
814
|
+
{
|
|
815
|
+
_service = true;
|
|
816
|
+
_name = name;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
void
|
|
820
|
+
Ice::Service::setModuleHandle(HMODULE module)
|
|
821
|
+
{
|
|
822
|
+
SMEventLoggerI::setModuleHandle(module);
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
#else
|
|
826
|
+
|
|
827
|
+
void
|
|
828
|
+
Ice::Service::configureDaemon(bool changeDirectory, bool closeFiles, const string& pidFile)
|
|
829
|
+
{
|
|
830
|
+
_service = true;
|
|
831
|
+
_changeDirectory = changeDirectory;
|
|
832
|
+
_closeFiles = closeFiles;
|
|
833
|
+
_pidFile = pidFile;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
#endif
|
|
837
|
+
|
|
838
|
+
void
|
|
839
|
+
Ice::Service::handleInterrupt(int sig)
|
|
840
|
+
{
|
|
841
|
+
#ifdef _WIN32
|
|
842
|
+
if (_nohup && sig == CTRL_LOGOFF_EVENT)
|
|
843
|
+
{
|
|
844
|
+
return;
|
|
845
|
+
}
|
|
846
|
+
#else
|
|
847
|
+
if (_nohup && sig == SIGHUP)
|
|
848
|
+
{
|
|
849
|
+
return;
|
|
850
|
+
}
|
|
851
|
+
#endif
|
|
852
|
+
|
|
853
|
+
interrupt();
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
void
|
|
857
|
+
Ice::Service::waitForShutdown()
|
|
858
|
+
{
|
|
859
|
+
if (_communicator)
|
|
860
|
+
{
|
|
861
|
+
enableInterrupt();
|
|
862
|
+
_communicator->waitForShutdown();
|
|
863
|
+
disableInterrupt();
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
bool
|
|
868
|
+
Ice::Service::stop()
|
|
869
|
+
{
|
|
870
|
+
return true;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
Ice::CommunicatorPtr
|
|
874
|
+
Ice::Service::initializeCommunicator(int& argc, char* argv[], InitializationData initData)
|
|
875
|
+
{
|
|
876
|
+
initData.properties = createProperties(argc, argv, initData.properties);
|
|
877
|
+
return Ice::initialize(std::move(initData));
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
void
|
|
881
|
+
Ice::Service::syserror(const string& msg)
|
|
882
|
+
{
|
|
883
|
+
string errmsg = IceInternal::lastErrorToString();
|
|
884
|
+
if (_logger)
|
|
885
|
+
{
|
|
886
|
+
ostringstream ostr;
|
|
887
|
+
if (!msg.empty())
|
|
888
|
+
{
|
|
889
|
+
ostr << msg << endl;
|
|
890
|
+
}
|
|
891
|
+
if (!errmsg.empty())
|
|
892
|
+
{
|
|
893
|
+
ostr << errmsg;
|
|
894
|
+
}
|
|
895
|
+
_logger->error(ostr.str());
|
|
896
|
+
}
|
|
897
|
+
else
|
|
898
|
+
{
|
|
899
|
+
if (!_name.empty())
|
|
900
|
+
{
|
|
901
|
+
consoleErr << _name << ": ";
|
|
902
|
+
}
|
|
903
|
+
if (!msg.empty())
|
|
904
|
+
{
|
|
905
|
+
consoleErr << msg << endl;
|
|
906
|
+
}
|
|
907
|
+
if (!errmsg.empty())
|
|
908
|
+
{
|
|
909
|
+
consoleErr << errmsg;
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
void
|
|
915
|
+
Ice::Service::error(const string& msg)
|
|
916
|
+
{
|
|
917
|
+
if (_logger)
|
|
918
|
+
{
|
|
919
|
+
_logger->error(msg);
|
|
920
|
+
}
|
|
921
|
+
else
|
|
922
|
+
{
|
|
923
|
+
if (!_name.empty())
|
|
924
|
+
{
|
|
925
|
+
consoleErr << _name << ": ";
|
|
926
|
+
}
|
|
927
|
+
consoleErr << "error: " << msg << endl;
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
void
|
|
932
|
+
Ice::Service::warning(const string& msg)
|
|
933
|
+
{
|
|
934
|
+
if (_logger)
|
|
935
|
+
{
|
|
936
|
+
_logger->warning(msg);
|
|
937
|
+
}
|
|
938
|
+
else
|
|
939
|
+
{
|
|
940
|
+
if (!_name.empty())
|
|
941
|
+
{
|
|
942
|
+
consoleErr << _name << ": ";
|
|
943
|
+
}
|
|
944
|
+
consoleErr << "warning: " << msg << endl;
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
void
|
|
949
|
+
Ice::Service::trace(const string& msg)
|
|
950
|
+
{
|
|
951
|
+
if (_logger)
|
|
952
|
+
{
|
|
953
|
+
_logger->trace("", msg);
|
|
954
|
+
}
|
|
955
|
+
else
|
|
956
|
+
{
|
|
957
|
+
consoleErr << msg << endl;
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
void
|
|
962
|
+
Ice::Service::print(const string& msg)
|
|
963
|
+
{
|
|
964
|
+
if (_logger)
|
|
965
|
+
{
|
|
966
|
+
_logger->print(msg);
|
|
967
|
+
}
|
|
968
|
+
else
|
|
969
|
+
{
|
|
970
|
+
consoleErr << msg << endl;
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
void
|
|
975
|
+
Ice::Service::enableInterrupt()
|
|
976
|
+
{
|
|
977
|
+
ctrlCHandler->setCallback(ctrlCHandlerCallback);
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
void
|
|
981
|
+
Ice::Service::disableInterrupt()
|
|
982
|
+
{
|
|
983
|
+
ctrlCHandler->setCallback(nullptr);
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
#ifdef _WIN32
|
|
987
|
+
|
|
988
|
+
int
|
|
989
|
+
Ice::Service::runService(int argc, const char* const argv[], InitializationData initData)
|
|
990
|
+
{
|
|
991
|
+
assert(_service);
|
|
992
|
+
|
|
993
|
+
if (_name.empty())
|
|
994
|
+
{
|
|
995
|
+
error("invalid name for Win32 service");
|
|
996
|
+
return EXIT_FAILURE;
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
//
|
|
1000
|
+
// Arguments passed to the executable are not passed to the service's main function,
|
|
1001
|
+
// so save them now and serviceMain will merge them later.
|
|
1002
|
+
//
|
|
1003
|
+
for (int idx = 1; idx < argc; ++idx)
|
|
1004
|
+
{
|
|
1005
|
+
_serviceArgs.push_back(argv[idx]);
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
_initData = std::move(initData);
|
|
1009
|
+
|
|
1010
|
+
//
|
|
1011
|
+
// Don't need to use a wide string converter as the wide string is passed
|
|
1012
|
+
// to Windows API.
|
|
1013
|
+
//
|
|
1014
|
+
const wstring serviceName = stringToWstring(_name, getProcessStringConverter());
|
|
1015
|
+
SERVICE_TABLE_ENTRYW ste[] = {
|
|
1016
|
+
{const_cast<wchar_t*>(serviceName.c_str()), Ice_Service_ServiceMain},
|
|
1017
|
+
{0, 0},
|
|
1018
|
+
};
|
|
1019
|
+
|
|
1020
|
+
//
|
|
1021
|
+
// Start the service.
|
|
1022
|
+
//
|
|
1023
|
+
if (!StartServiceCtrlDispatcherW(ste))
|
|
1024
|
+
{
|
|
1025
|
+
syserror("unable to start service control dispatcher");
|
|
1026
|
+
return EXIT_FAILURE;
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
return EXIT_SUCCESS;
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
void
|
|
1033
|
+
Ice::Service::terminateService(DWORD exitCode)
|
|
1034
|
+
{
|
|
1035
|
+
serviceStatusManager->stopUpdate();
|
|
1036
|
+
delete serviceStatusManager;
|
|
1037
|
+
serviceStatusManager = 0;
|
|
1038
|
+
|
|
1039
|
+
SERVICE_STATUS status;
|
|
1040
|
+
|
|
1041
|
+
status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
|
|
1042
|
+
status.dwCurrentState = SERVICE_STOPPED;
|
|
1043
|
+
status.dwControlsAccepted = 0;
|
|
1044
|
+
if (exitCode != 0)
|
|
1045
|
+
{
|
|
1046
|
+
status.dwWin32ExitCode = ERROR_SERVICE_SPECIFIC_ERROR;
|
|
1047
|
+
}
|
|
1048
|
+
else
|
|
1049
|
+
{
|
|
1050
|
+
status.dwWin32ExitCode = 0;
|
|
1051
|
+
}
|
|
1052
|
+
status.dwServiceSpecificExitCode = exitCode;
|
|
1053
|
+
status.dwCheckPoint = 0;
|
|
1054
|
+
status.dwWaitHint = 0;
|
|
1055
|
+
|
|
1056
|
+
SetServiceStatus(_statusHandle, &status);
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
bool
|
|
1060
|
+
Ice::Service::waitForServiceState(SC_HANDLE hService, DWORD pendingState, SERVICE_STATUS& status)
|
|
1061
|
+
{
|
|
1062
|
+
if (!QueryServiceStatus(hService, &status))
|
|
1063
|
+
{
|
|
1064
|
+
return false;
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
//
|
|
1068
|
+
// Save the tick count and initial checkpoint.
|
|
1069
|
+
//
|
|
1070
|
+
DWORD startTickCount = GetTickCount();
|
|
1071
|
+
DWORD oldCheckPoint = status.dwCheckPoint;
|
|
1072
|
+
|
|
1073
|
+
//
|
|
1074
|
+
// Loop while the service is in the pending state.
|
|
1075
|
+
//
|
|
1076
|
+
while (status.dwCurrentState == pendingState)
|
|
1077
|
+
{
|
|
1078
|
+
//
|
|
1079
|
+
// Do not wait longer than the wait hint. A good interval is
|
|
1080
|
+
// one tenth the wait hint, but no less than 1 second and no
|
|
1081
|
+
// more than 10 seconds.
|
|
1082
|
+
//
|
|
1083
|
+
|
|
1084
|
+
DWORD waitTime = status.dwWaitHint / 10;
|
|
1085
|
+
|
|
1086
|
+
if (waitTime < 1000)
|
|
1087
|
+
{
|
|
1088
|
+
waitTime = 1000;
|
|
1089
|
+
}
|
|
1090
|
+
else if (waitTime > 10000)
|
|
1091
|
+
{
|
|
1092
|
+
waitTime = 10000;
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
Sleep(waitTime);
|
|
1096
|
+
|
|
1097
|
+
//
|
|
1098
|
+
// Check the status again.
|
|
1099
|
+
//
|
|
1100
|
+
if (!QueryServiceStatus(hService, &status))
|
|
1101
|
+
{
|
|
1102
|
+
return false;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
if (status.dwCheckPoint > oldCheckPoint)
|
|
1106
|
+
{
|
|
1107
|
+
//
|
|
1108
|
+
// The service is making progress.
|
|
1109
|
+
//
|
|
1110
|
+
startTickCount = GetTickCount();
|
|
1111
|
+
oldCheckPoint = status.dwCheckPoint;
|
|
1112
|
+
}
|
|
1113
|
+
else
|
|
1114
|
+
{
|
|
1115
|
+
if (GetTickCount() - startTickCount > status.dwWaitHint)
|
|
1116
|
+
{
|
|
1117
|
+
//
|
|
1118
|
+
// No progress made within the wait hint.
|
|
1119
|
+
//
|
|
1120
|
+
break;
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
return true;
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
void
|
|
1129
|
+
Ice::Service::showServiceStatus(const string& msg, SERVICE_STATUS& status)
|
|
1130
|
+
{
|
|
1131
|
+
string state;
|
|
1132
|
+
switch (status.dwCurrentState)
|
|
1133
|
+
{
|
|
1134
|
+
case SERVICE_STOPPED:
|
|
1135
|
+
state = "STOPPED";
|
|
1136
|
+
break;
|
|
1137
|
+
case SERVICE_START_PENDING:
|
|
1138
|
+
state = "START PENDING";
|
|
1139
|
+
break;
|
|
1140
|
+
case SERVICE_STOP_PENDING:
|
|
1141
|
+
state = "STOP PENDING";
|
|
1142
|
+
break;
|
|
1143
|
+
case SERVICE_RUNNING:
|
|
1144
|
+
state = "RUNNING";
|
|
1145
|
+
break;
|
|
1146
|
+
case SERVICE_CONTINUE_PENDING:
|
|
1147
|
+
state = "CONTINUE PENDING";
|
|
1148
|
+
break;
|
|
1149
|
+
case SERVICE_PAUSE_PENDING:
|
|
1150
|
+
state = "PAUSE PENDING";
|
|
1151
|
+
break;
|
|
1152
|
+
case SERVICE_PAUSED:
|
|
1153
|
+
state = "PAUSED";
|
|
1154
|
+
break;
|
|
1155
|
+
default:
|
|
1156
|
+
state = "UNKNOWN";
|
|
1157
|
+
break;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
ServiceTrace tr(this);
|
|
1161
|
+
tr << msg << "\n Current state: " << state << "\n Exit code: " << status.dwWin32ExitCode
|
|
1162
|
+
<< "\n Service specific exit code: " << status.dwServiceSpecificExitCode
|
|
1163
|
+
<< "\n Check point: " << status.dwCheckPoint << "\n Wait hint: " << status.dwWaitHint;
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
void
|
|
1167
|
+
Ice::Service::serviceMain(int argc, const wchar_t* const argv[])
|
|
1168
|
+
{
|
|
1169
|
+
ctrlCHandler = new CtrlCHandler;
|
|
1170
|
+
|
|
1171
|
+
//
|
|
1172
|
+
// Register the control handler function.
|
|
1173
|
+
//
|
|
1174
|
+
_statusHandle = RegisterServiceCtrlHandlerW(argv[0], Ice_Service_CtrlHandler);
|
|
1175
|
+
if (_statusHandle == 0)
|
|
1176
|
+
{
|
|
1177
|
+
syserror("unable to register service control handler");
|
|
1178
|
+
return;
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
//
|
|
1182
|
+
// Create the service status manager and start a thread to periodically
|
|
1183
|
+
// update the service's status with the service control manager (SCM).
|
|
1184
|
+
// The SCM must receive periodic updates otherwise it assumes that
|
|
1185
|
+
// initialization failed and terminates the service.
|
|
1186
|
+
//
|
|
1187
|
+
serviceStatusManager = new ServiceStatusManager(_statusHandle);
|
|
1188
|
+
serviceStatusManager->startUpdate(SERVICE_START_PENDING);
|
|
1189
|
+
|
|
1190
|
+
//
|
|
1191
|
+
// Don't need to pass a wide string converter in the argv conversions
|
|
1192
|
+
// as argv come from Windows API.
|
|
1193
|
+
//
|
|
1194
|
+
const Ice::StringConverterPtr converter = Ice::getProcessStringConverter();
|
|
1195
|
+
|
|
1196
|
+
//
|
|
1197
|
+
// Merge the executable's arguments with the service's arguments.
|
|
1198
|
+
//
|
|
1199
|
+
char** args = new char*[_serviceArgs.size() + argc];
|
|
1200
|
+
|
|
1201
|
+
//
|
|
1202
|
+
// First argument is argv[0] the serviceName
|
|
1203
|
+
//
|
|
1204
|
+
const string serviceName = wstringToString(argv[0], converter);
|
|
1205
|
+
args[0] = const_cast<char*>(serviceName.c_str());
|
|
1206
|
+
|
|
1207
|
+
int i = 1;
|
|
1208
|
+
for (vector<string>::iterator p = _serviceArgs.begin(); p != _serviceArgs.end(); ++p)
|
|
1209
|
+
{
|
|
1210
|
+
args[i++] = const_cast<char*>(p->c_str());
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
//
|
|
1214
|
+
// Convert wide string wchar_t** argv to a sequence of narrow strings and merge
|
|
1215
|
+
// the converted sequence into the args array.
|
|
1216
|
+
//
|
|
1217
|
+
vector<string> executableArgs;
|
|
1218
|
+
for (int j = 1; j < argc; ++j)
|
|
1219
|
+
{
|
|
1220
|
+
executableArgs.push_back(Ice::wstringToString(argv[j], converter));
|
|
1221
|
+
}
|
|
1222
|
+
for (vector<string>::iterator p = executableArgs.begin(); p != executableArgs.end(); ++p)
|
|
1223
|
+
{
|
|
1224
|
+
args[i++] = const_cast<char*>(p->c_str());
|
|
1225
|
+
}
|
|
1226
|
+
argc += static_cast<int>(_serviceArgs.size());
|
|
1227
|
+
|
|
1228
|
+
//
|
|
1229
|
+
// If we can't initialize a communicator, then stop immediately.
|
|
1230
|
+
//
|
|
1231
|
+
try
|
|
1232
|
+
{
|
|
1233
|
+
_communicator = initializeCommunicator(argc, args, _initData);
|
|
1234
|
+
}
|
|
1235
|
+
catch (const Ice::Exception& ex)
|
|
1236
|
+
{
|
|
1237
|
+
delete[] args;
|
|
1238
|
+
{
|
|
1239
|
+
ServiceError err(this);
|
|
1240
|
+
err << "exception occurred while initializing a communicator:\n" << ex;
|
|
1241
|
+
}
|
|
1242
|
+
terminateService(EXIT_FAILURE);
|
|
1243
|
+
return;
|
|
1244
|
+
}
|
|
1245
|
+
catch (...)
|
|
1246
|
+
{
|
|
1247
|
+
delete[] args;
|
|
1248
|
+
error("unknown exception occurred while initializing a communicator");
|
|
1249
|
+
terminateService(EXIT_FAILURE);
|
|
1250
|
+
return;
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
//
|
|
1254
|
+
// Use the configured logger.
|
|
1255
|
+
//
|
|
1256
|
+
_logger = _communicator->getLogger();
|
|
1257
|
+
|
|
1258
|
+
//
|
|
1259
|
+
// Determines whether we ignore SIGHUP/CTRL_LOGOFF_EVENT.
|
|
1260
|
+
//
|
|
1261
|
+
_nohup = _communicator->getProperties()->getIcePropertyAsInt("Ice.Nohup") > 0;
|
|
1262
|
+
|
|
1263
|
+
DWORD status = EXIT_FAILURE;
|
|
1264
|
+
try
|
|
1265
|
+
{
|
|
1266
|
+
int tmpStatus = EXIT_FAILURE;
|
|
1267
|
+
if (start(argc, args, tmpStatus))
|
|
1268
|
+
{
|
|
1269
|
+
trace("Service started successfully.");
|
|
1270
|
+
|
|
1271
|
+
//
|
|
1272
|
+
// Change the current status from START_PENDING to RUNNING.
|
|
1273
|
+
//
|
|
1274
|
+
serviceStatusManager->stopUpdate();
|
|
1275
|
+
serviceStatusManager->changeStatus(SERVICE_RUNNING, SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN);
|
|
1276
|
+
|
|
1277
|
+
//
|
|
1278
|
+
// Wait for the service to be shut down.
|
|
1279
|
+
//
|
|
1280
|
+
waitForShutdown();
|
|
1281
|
+
|
|
1282
|
+
//
|
|
1283
|
+
// Give the service a chance to clean up.
|
|
1284
|
+
//
|
|
1285
|
+
if (stop())
|
|
1286
|
+
{
|
|
1287
|
+
status = EXIT_SUCCESS;
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1290
|
+
else
|
|
1291
|
+
{
|
|
1292
|
+
status = tmpStatus;
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
catch (const Ice::Exception& ex)
|
|
1296
|
+
{
|
|
1297
|
+
ServiceError err(this);
|
|
1298
|
+
err << "service terminating after catching exception:\n" << ex;
|
|
1299
|
+
}
|
|
1300
|
+
catch (const std::exception& ex)
|
|
1301
|
+
{
|
|
1302
|
+
ServiceError err(this);
|
|
1303
|
+
err << "service terminating after catching exception:\n" << ex;
|
|
1304
|
+
}
|
|
1305
|
+
catch (...)
|
|
1306
|
+
{
|
|
1307
|
+
error("service terminating after catching unknown exception");
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
delete[] args;
|
|
1311
|
+
|
|
1312
|
+
assert(_communicator);
|
|
1313
|
+
_communicator->destroy();
|
|
1314
|
+
|
|
1315
|
+
terminateService(status);
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1318
|
+
void
|
|
1319
|
+
Ice::Service::control(int ctrl)
|
|
1320
|
+
{
|
|
1321
|
+
assert(serviceStatusManager);
|
|
1322
|
+
|
|
1323
|
+
switch (ctrl)
|
|
1324
|
+
{
|
|
1325
|
+
case SERVICE_CONTROL_SHUTDOWN:
|
|
1326
|
+
case SERVICE_CONTROL_STOP:
|
|
1327
|
+
{
|
|
1328
|
+
serviceStatusManager->startUpdate(SERVICE_STOP_PENDING);
|
|
1329
|
+
shutdown();
|
|
1330
|
+
break;
|
|
1331
|
+
}
|
|
1332
|
+
default:
|
|
1333
|
+
{
|
|
1334
|
+
if (ctrl != SERVICE_CONTROL_INTERROGATE)
|
|
1335
|
+
{
|
|
1336
|
+
ServiceError err(this);
|
|
1337
|
+
err << "unrecognized service control code " << ctrl;
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1340
|
+
serviceStatusManager->reportStatus();
|
|
1341
|
+
break;
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
ServiceStatusManager::ServiceStatusManager(SERVICE_STATUS_HANDLE handle) : _handle(handle), _stopped(false)
|
|
1347
|
+
{
|
|
1348
|
+
_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
|
|
1349
|
+
_status.dwControlsAccepted = 0;
|
|
1350
|
+
_status.dwWin32ExitCode = 0;
|
|
1351
|
+
_status.dwServiceSpecificExitCode = 0;
|
|
1352
|
+
_status.dwCheckPoint = 0;
|
|
1353
|
+
_status.dwWaitHint = 0;
|
|
1354
|
+
}
|
|
1355
|
+
|
|
1356
|
+
void
|
|
1357
|
+
ServiceStatusManager::startUpdate(DWORD state)
|
|
1358
|
+
{
|
|
1359
|
+
lock_guard lock(_mutex);
|
|
1360
|
+
|
|
1361
|
+
assert(state == SERVICE_START_PENDING || state == SERVICE_STOP_PENDING);
|
|
1362
|
+
assert(!_thread.joinable());
|
|
1363
|
+
|
|
1364
|
+
_status.dwCurrentState = state;
|
|
1365
|
+
_status.dwControlsAccepted = 0; // Don't accept any other control messages while pending.
|
|
1366
|
+
|
|
1367
|
+
_stopped = false;
|
|
1368
|
+
|
|
1369
|
+
_thread = std::thread(&ServiceStatusManager::run, this);
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
void
|
|
1373
|
+
ServiceStatusManager::stopUpdate()
|
|
1374
|
+
{
|
|
1375
|
+
std::thread thread;
|
|
1376
|
+
|
|
1377
|
+
{
|
|
1378
|
+
lock_guard lock(_mutex);
|
|
1379
|
+
|
|
1380
|
+
if (_thread.joinable())
|
|
1381
|
+
{
|
|
1382
|
+
_stopped = true;
|
|
1383
|
+
_conditionVariable.notify_one();
|
|
1384
|
+
thread = std::move(_thread);
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
thread.join();
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
void
|
|
1392
|
+
ServiceStatusManager::changeStatus(DWORD state, DWORD controlsAccepted)
|
|
1393
|
+
{
|
|
1394
|
+
lock_guard lock(_mutex);
|
|
1395
|
+
|
|
1396
|
+
_status.dwCurrentState = state;
|
|
1397
|
+
_status.dwControlsAccepted = controlsAccepted;
|
|
1398
|
+
|
|
1399
|
+
SetServiceStatus(_handle, &_status);
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
void
|
|
1403
|
+
ServiceStatusManager::reportStatus()
|
|
1404
|
+
{
|
|
1405
|
+
lock_guard lock(_mutex);
|
|
1406
|
+
|
|
1407
|
+
SetServiceStatus(_handle, &_status);
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1410
|
+
void
|
|
1411
|
+
ServiceStatusManager::run()
|
|
1412
|
+
{
|
|
1413
|
+
unique_lock lock(_mutex);
|
|
1414
|
+
|
|
1415
|
+
auto delay = chrono::milliseconds(1000);
|
|
1416
|
+
_status.dwWaitHint = 2000;
|
|
1417
|
+
_status.dwCheckPoint = 0;
|
|
1418
|
+
|
|
1419
|
+
while (!_stopped)
|
|
1420
|
+
{
|
|
1421
|
+
_status.dwCheckPoint++;
|
|
1422
|
+
SetServiceStatus(_handle, &_status);
|
|
1423
|
+
_conditionVariable.wait_for(lock, delay);
|
|
1424
|
+
}
|
|
1425
|
+
}
|
|
1426
|
+
|
|
1427
|
+
#else
|
|
1428
|
+
|
|
1429
|
+
int
|
|
1430
|
+
Ice::Service::runDaemon(int argc, char* argv[], InitializationData initData)
|
|
1431
|
+
{
|
|
1432
|
+
assert(_service);
|
|
1433
|
+
|
|
1434
|
+
//
|
|
1435
|
+
// Create a pipe that is used to notify the parent when the child is ready.
|
|
1436
|
+
//
|
|
1437
|
+
SOCKET fds[2];
|
|
1438
|
+
IceInternal::createPipe(fds);
|
|
1439
|
+
|
|
1440
|
+
//
|
|
1441
|
+
// Fork the child.
|
|
1442
|
+
//
|
|
1443
|
+
pid_t pid = fork();
|
|
1444
|
+
if (pid < 0)
|
|
1445
|
+
{
|
|
1446
|
+
if (argv[0])
|
|
1447
|
+
{
|
|
1448
|
+
consoleErr << argv[0] << ": ";
|
|
1449
|
+
}
|
|
1450
|
+
consoleErr << IceInternal::errorToString(errno) << endl;
|
|
1451
|
+
return EXIT_FAILURE;
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
if (pid != 0)
|
|
1455
|
+
{
|
|
1456
|
+
//
|
|
1457
|
+
// Parent process.
|
|
1458
|
+
//
|
|
1459
|
+
|
|
1460
|
+
//
|
|
1461
|
+
// Close an unused end of the pipe.
|
|
1462
|
+
//
|
|
1463
|
+
close(fds[1]);
|
|
1464
|
+
|
|
1465
|
+
//
|
|
1466
|
+
// Wait for the child to write a byte to the pipe to indicate that it
|
|
1467
|
+
// is ready to receive requests, or that an error occurred.
|
|
1468
|
+
//
|
|
1469
|
+
char c = 0;
|
|
1470
|
+
while (true)
|
|
1471
|
+
{
|
|
1472
|
+
if (read(fds[0], &c, 1) == -1)
|
|
1473
|
+
{
|
|
1474
|
+
if (IceInternal::interrupted())
|
|
1475
|
+
{
|
|
1476
|
+
continue;
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
if (argv[0])
|
|
1480
|
+
{
|
|
1481
|
+
consoleErr << argv[0] << ": ";
|
|
1482
|
+
}
|
|
1483
|
+
consoleErr << IceInternal::errorToString(errno) << endl;
|
|
1484
|
+
_exit(EXIT_FAILURE);
|
|
1485
|
+
}
|
|
1486
|
+
break;
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
if (c != 0)
|
|
1490
|
+
{
|
|
1491
|
+
//
|
|
1492
|
+
// Read an error message.
|
|
1493
|
+
//
|
|
1494
|
+
ssize_t rs;
|
|
1495
|
+
char s[16];
|
|
1496
|
+
string message;
|
|
1497
|
+
while ((rs = read(fds[0], &s, 16)) > 0)
|
|
1498
|
+
{
|
|
1499
|
+
message.append(s, static_cast<size_t>(rs));
|
|
1500
|
+
}
|
|
1501
|
+
|
|
1502
|
+
if (argv[0])
|
|
1503
|
+
{
|
|
1504
|
+
consoleErr << argv[0] << ": ";
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1507
|
+
if (rs == -1)
|
|
1508
|
+
{
|
|
1509
|
+
consoleErr << "I/O error while reading error message from child:\n"
|
|
1510
|
+
<< IceInternal::errorToString(errno);
|
|
1511
|
+
}
|
|
1512
|
+
else
|
|
1513
|
+
{
|
|
1514
|
+
consoleErr << "failure occurred in daemon";
|
|
1515
|
+
if (!message.empty())
|
|
1516
|
+
{
|
|
1517
|
+
consoleErr << ":\n" << message;
|
|
1518
|
+
}
|
|
1519
|
+
}
|
|
1520
|
+
consoleErr << endl;
|
|
1521
|
+
_exit(EXIT_FAILURE);
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
_exit(EXIT_SUCCESS);
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
//
|
|
1528
|
+
// Child process.
|
|
1529
|
+
//
|
|
1530
|
+
|
|
1531
|
+
string errMsg;
|
|
1532
|
+
int status = EXIT_FAILURE;
|
|
1533
|
+
try
|
|
1534
|
+
{
|
|
1535
|
+
//
|
|
1536
|
+
// Become a session and process group leader.
|
|
1537
|
+
//
|
|
1538
|
+
if (setsid() == -1)
|
|
1539
|
+
{
|
|
1540
|
+
throw SyscallException{__FILE__, __LINE__, "setsid failed", errno};
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
//
|
|
1544
|
+
// Ignore SIGHUP so that the grandchild process is not sent SIGHUP when this
|
|
1545
|
+
// process exits.
|
|
1546
|
+
//
|
|
1547
|
+
signal(SIGHUP, SIG_IGN); // NOLINT(cert-err33-c)
|
|
1548
|
+
|
|
1549
|
+
//
|
|
1550
|
+
// Fork again to eliminate the possibility of acquiring a controlling terminal.
|
|
1551
|
+
//
|
|
1552
|
+
pid = fork();
|
|
1553
|
+
if (pid < 0)
|
|
1554
|
+
{
|
|
1555
|
+
throw SyscallException{__FILE__, __LINE__, "fork failed", errno};
|
|
1556
|
+
}
|
|
1557
|
+
if (pid != 0)
|
|
1558
|
+
{
|
|
1559
|
+
exit(0);
|
|
1560
|
+
}
|
|
1561
|
+
|
|
1562
|
+
if (_changeDirectory)
|
|
1563
|
+
{
|
|
1564
|
+
//
|
|
1565
|
+
// Change the working directory.
|
|
1566
|
+
//
|
|
1567
|
+
if (chdir("/") != 0)
|
|
1568
|
+
{
|
|
1569
|
+
throw SyscallException{__FILE__, __LINE__, "chdir failed", errno};
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1573
|
+
vector<int> fdsToClose;
|
|
1574
|
+
if (_closeFiles)
|
|
1575
|
+
{
|
|
1576
|
+
//
|
|
1577
|
+
// Take a snapshot of the open file descriptors. We don't actually close these
|
|
1578
|
+
// descriptors until after the communicator is initialized, so that plug-ins
|
|
1579
|
+
// have an opportunity to use stdin/stdout/stderr if necessary. This also
|
|
1580
|
+
// conveniently allows the Ice.PrintProcessId property to work as expected.
|
|
1581
|
+
//
|
|
1582
|
+
int fdMax = static_cast<int>(sysconf(_SC_OPEN_MAX));
|
|
1583
|
+
if (fdMax <= 0)
|
|
1584
|
+
{
|
|
1585
|
+
throw SyscallException{__FILE__, __LINE__, "sysconf failed", errno};
|
|
1586
|
+
}
|
|
1587
|
+
|
|
1588
|
+
for (int i = 0; i < fdMax; ++i)
|
|
1589
|
+
{
|
|
1590
|
+
if (fcntl(i, F_GETFL) != -1)
|
|
1591
|
+
{
|
|
1592
|
+
//
|
|
1593
|
+
// Don't close the write end of the pipe.
|
|
1594
|
+
//
|
|
1595
|
+
if (i != fds[1])
|
|
1596
|
+
{
|
|
1597
|
+
fdsToClose.push_back(i);
|
|
1598
|
+
}
|
|
1599
|
+
}
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1603
|
+
//
|
|
1604
|
+
// Create the CtrlCHandler after forking the child so that signals are initialized
|
|
1605
|
+
// properly. We do this before initializing the communicator because we need to
|
|
1606
|
+
// ensure that signals are initialized before additional threads are created. The
|
|
1607
|
+
// communicator thread pools currently use lazy initialization, but a thread can
|
|
1608
|
+
// be created to monitor connections.
|
|
1609
|
+
//
|
|
1610
|
+
ctrlCHandler = new CtrlCHandler;
|
|
1611
|
+
|
|
1612
|
+
//
|
|
1613
|
+
// Initialize the communicator.
|
|
1614
|
+
//
|
|
1615
|
+
_communicator = initializeCommunicator(argc, argv, std::move(initData));
|
|
1616
|
+
|
|
1617
|
+
if (_closeFiles)
|
|
1618
|
+
{
|
|
1619
|
+
//
|
|
1620
|
+
// Close unnecessary file descriptors.
|
|
1621
|
+
//
|
|
1622
|
+
PropertiesPtr properties = _communicator->getProperties();
|
|
1623
|
+
string stdOut = properties->getIceProperty("Ice.StdOut");
|
|
1624
|
+
string stdErr = properties->getIceProperty("Ice.StdErr");
|
|
1625
|
+
|
|
1626
|
+
for (int& p : fdsToClose)
|
|
1627
|
+
{
|
|
1628
|
+
//
|
|
1629
|
+
// NOTE: Do not close stdout if Ice.StdOut is defined. Likewise for Ice.StdErr.
|
|
1630
|
+
//
|
|
1631
|
+
if ((p == 1 && !stdOut.empty()) || (p == 2 && !stdErr.empty()))
|
|
1632
|
+
{
|
|
1633
|
+
continue;
|
|
1634
|
+
}
|
|
1635
|
+
close(p);
|
|
1636
|
+
}
|
|
1637
|
+
|
|
1638
|
+
//
|
|
1639
|
+
// Associate stdin, stdout and stderr with /dev/null.
|
|
1640
|
+
//
|
|
1641
|
+
int fd = open("/dev/null", O_RDWR);
|
|
1642
|
+
assert(fd == 0);
|
|
1643
|
+
if (fd != 0)
|
|
1644
|
+
{
|
|
1645
|
+
throw SyscallException{__FILE__, __LINE__, "open /dev/null failed", errno};
|
|
1646
|
+
}
|
|
1647
|
+
if (stdOut.empty())
|
|
1648
|
+
{
|
|
1649
|
+
fd = dup2(0, 1);
|
|
1650
|
+
assert(fd == 1);
|
|
1651
|
+
if (fd != 1)
|
|
1652
|
+
{
|
|
1653
|
+
throw SyscallException{__FILE__, __LINE__, "dup2(0, 1) failed", errno};
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
1656
|
+
if (stdErr.empty())
|
|
1657
|
+
{
|
|
1658
|
+
fd = dup2(1, 2);
|
|
1659
|
+
assert(fd == 2);
|
|
1660
|
+
if (fd != 2)
|
|
1661
|
+
{
|
|
1662
|
+
throw SyscallException{__FILE__, __LINE__, "dup2(1, 2) failed", errno};
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
//
|
|
1668
|
+
// Write PID
|
|
1669
|
+
//
|
|
1670
|
+
if (_pidFile.size() > 0)
|
|
1671
|
+
{
|
|
1672
|
+
ofstream of(_pidFile.c_str());
|
|
1673
|
+
of << getpid() << endl;
|
|
1674
|
+
|
|
1675
|
+
if (!of)
|
|
1676
|
+
{
|
|
1677
|
+
warning("Could not write PID file " + _pidFile);
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
|
|
1681
|
+
//
|
|
1682
|
+
// Use the configured logger.
|
|
1683
|
+
//
|
|
1684
|
+
_logger = _communicator->getLogger();
|
|
1685
|
+
|
|
1686
|
+
//
|
|
1687
|
+
// Start the service.
|
|
1688
|
+
//
|
|
1689
|
+
if (start(argc, argv, status))
|
|
1690
|
+
{
|
|
1691
|
+
//
|
|
1692
|
+
// Notify the parent that the child is ready.
|
|
1693
|
+
//
|
|
1694
|
+
char c = 0;
|
|
1695
|
+
while (true)
|
|
1696
|
+
{
|
|
1697
|
+
if (write(fds[1], &c, 1) == -1)
|
|
1698
|
+
{
|
|
1699
|
+
if (IceInternal::interrupted())
|
|
1700
|
+
{
|
|
1701
|
+
continue;
|
|
1702
|
+
}
|
|
1703
|
+
}
|
|
1704
|
+
break;
|
|
1705
|
+
}
|
|
1706
|
+
close(fds[1]);
|
|
1707
|
+
fds[1] = -1;
|
|
1708
|
+
|
|
1709
|
+
//
|
|
1710
|
+
// Wait for service shutdown.
|
|
1711
|
+
//
|
|
1712
|
+
waitForShutdown();
|
|
1713
|
+
|
|
1714
|
+
//
|
|
1715
|
+
// Stop the service.
|
|
1716
|
+
//
|
|
1717
|
+
if (stop())
|
|
1718
|
+
{
|
|
1719
|
+
status = EXIT_SUCCESS;
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
}
|
|
1723
|
+
catch (const Ice::Exception& ex)
|
|
1724
|
+
{
|
|
1725
|
+
ServiceError err(this);
|
|
1726
|
+
err << "service terminating after catching exception:\n" << ex;
|
|
1727
|
+
errMsg = err.str();
|
|
1728
|
+
}
|
|
1729
|
+
catch (const std::exception& ex)
|
|
1730
|
+
{
|
|
1731
|
+
ServiceError err(this);
|
|
1732
|
+
err << "service terminating after catching exception:\n" << ex;
|
|
1733
|
+
errMsg = err.str();
|
|
1734
|
+
}
|
|
1735
|
+
catch (...)
|
|
1736
|
+
{
|
|
1737
|
+
errMsg = "service terminating after catching unknown exception";
|
|
1738
|
+
error(errMsg);
|
|
1739
|
+
}
|
|
1740
|
+
|
|
1741
|
+
//
|
|
1742
|
+
// If the service failed and the pipe to the parent is still open,
|
|
1743
|
+
// then send an error notification to the parent.
|
|
1744
|
+
//
|
|
1745
|
+
if (status != EXIT_SUCCESS && fds[1] != -1)
|
|
1746
|
+
{
|
|
1747
|
+
char c = 1;
|
|
1748
|
+
while (true)
|
|
1749
|
+
{
|
|
1750
|
+
if (write(fds[1], &c, 1) == -1)
|
|
1751
|
+
{
|
|
1752
|
+
if (IceInternal::interrupted())
|
|
1753
|
+
{
|
|
1754
|
+
continue;
|
|
1755
|
+
}
|
|
1756
|
+
}
|
|
1757
|
+
break;
|
|
1758
|
+
}
|
|
1759
|
+
const char* msg = errMsg.c_str();
|
|
1760
|
+
size_t len = strlen(msg) + 1; // Include null byte
|
|
1761
|
+
size_t pos = 0;
|
|
1762
|
+
while (len > 0)
|
|
1763
|
+
{
|
|
1764
|
+
ssize_t n = write(fds[1], &msg[pos], len);
|
|
1765
|
+
if (n == -1)
|
|
1766
|
+
{
|
|
1767
|
+
if (IceInternal::interrupted())
|
|
1768
|
+
{
|
|
1769
|
+
continue;
|
|
1770
|
+
}
|
|
1771
|
+
else
|
|
1772
|
+
{
|
|
1773
|
+
break;
|
|
1774
|
+
}
|
|
1775
|
+
}
|
|
1776
|
+
len -= static_cast<size_t>(n);
|
|
1777
|
+
pos += static_cast<size_t>(n);
|
|
1778
|
+
}
|
|
1779
|
+
close(fds[1]);
|
|
1780
|
+
}
|
|
1781
|
+
|
|
1782
|
+
if (_communicator)
|
|
1783
|
+
{
|
|
1784
|
+
_communicator->destroy();
|
|
1785
|
+
}
|
|
1786
|
+
|
|
1787
|
+
return status;
|
|
1788
|
+
}
|
|
1789
|
+
|
|
1790
|
+
#endif
|