zeroc-ice 3.8.2 → 3.8.3
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 +26 -9
- data/dist/IceRuby/Config.h +0 -12
- data/dist/IceRuby/Connection.cpp +18 -9
- data/dist/IceRuby/DefaultSliceLoader.h +1 -1
- data/dist/IceRuby/Endpoint.cpp +21 -8
- data/dist/IceRuby/Operation.cpp +7 -5
- data/dist/IceRuby/Properties.cpp +3 -4
- data/dist/IceRuby/Proxy.cpp +11 -19
- data/dist/IceRuby/RubySliceLoader.cpp +1 -1
- data/dist/IceRuby/RubySliceLoader.h +6 -0
- data/dist/IceRuby/Types.cpp +162 -138
- data/dist/IceRuby/Types.h +68 -28
- data/dist/IceRuby/Util.cpp +14 -78
- data/dist/IceRuby/Util.h +7 -17
- data/dist/ice/cpp/include/Ice/Communicator.h +31 -8
- data/dist/ice/cpp/include/Ice/Config.h +2 -2
- data/dist/ice/cpp/include/Ice/Connection.h +24 -8
- data/dist/ice/cpp/include/Ice/CtrlCHandler.h +1 -1
- data/dist/ice/cpp/include/Ice/Demangle.h +1 -1
- data/dist/ice/cpp/include/Ice/Endpoint.h +4 -4
- data/dist/ice/cpp/include/Ice/Initialize.h +4 -4
- data/dist/ice/cpp/include/Ice/InputStream.h +5 -5
- data/dist/ice/cpp/include/Ice/Instrumentation.h +13 -7
- data/dist/ice/cpp/include/Ice/LocalExceptions.h +5 -5
- data/dist/ice/cpp/include/Ice/Logger.h +7 -0
- data/dist/ice/cpp/include/Ice/LoggerUtil.h +1 -1
- data/dist/ice/cpp/include/Ice/Object.h +10 -8
- data/dist/ice/cpp/include/Ice/ObjectAdapter.h +1 -1
- data/dist/ice/cpp/include/Ice/OutgoingAsync.h +5 -2
- data/dist/ice/cpp/include/Ice/OutgoingResponse.h +2 -1
- data/dist/ice/cpp/include/Ice/OutputStream.h +7 -6
- data/dist/ice/cpp/include/Ice/PluginFactory.h +1 -1
- data/dist/ice/cpp/include/Ice/Properties.h +3 -3
- data/dist/ice/cpp/include/Ice/Proxy.h +192 -50
- data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +3 -3
- data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +1 -1
- data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +5 -5
- data/dist/ice/cpp/include/Ice/ServantLocator.h +1 -1
- data/dist/ice/cpp/include/Ice/Service.h +2 -5
- data/dist/ice/cpp/include/Ice/SliceLoader.h +1 -1
- data/dist/ice/cpp/include/Ice/SlicedData.h +5 -3
- data/dist/ice/cpp/include/Ice/StreamHelpers.h +1 -1
- data/dist/ice/cpp/include/Ice/StreamableTraits.h +2 -2
- data/dist/ice/cpp/include/Ice/StringConverter.h +2 -3
- data/dist/ice/cpp/include/Ice/StringUtil.h +2 -7
- data/dist/ice/cpp/include/Ice/UUID.h +1 -0
- data/dist/ice/cpp/include/Ice/Value.h +2 -2
- data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +2 -2
- data/dist/ice/cpp/include/generated/Ice/Context.h +2 -2
- data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +2 -2
- data/dist/ice/cpp/include/generated/Ice/Identity.h +2 -2
- data/dist/ice/cpp/include/generated/Ice/Locator.h +50 -14
- data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +38 -11
- data/dist/ice/cpp/include/generated/Ice/Metrics.h +94 -39
- data/dist/ice/cpp/include/generated/Ice/OperationMode.h +2 -2
- data/dist/ice/cpp/include/generated/Ice/Process.h +34 -8
- data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +42 -11
- data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +2 -2
- data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +93 -40
- data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +2 -2
- data/dist/ice/cpp/include/generated/Ice/Router.h +50 -14
- data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +2 -2
- data/dist/ice/cpp/include/generated/Ice/Version.h +2 -2
- data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +66 -14
- data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +34 -8
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +1 -1
- data/dist/ice/cpp/src/Ice/Base64.cpp +47 -137
- data/dist/ice/cpp/src/Ice/Base64.h +2 -2
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +28 -13
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +5 -1
- data/dist/ice/cpp/src/Ice/Buffer.cpp +1 -1
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +1 -1
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +1 -1
- data/dist/ice/cpp/src/Ice/Communicator.cpp +4 -3
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +8 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +5 -15
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +1 -1
- data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +6 -8
- data/dist/ice/cpp/src/Ice/ConnectionFactory.h +0 -3
- data/dist/ice/cpp/src/Ice/ConnectionI.cpp +94 -99
- data/dist/ice/cpp/src/Ice/ConnectionI.h +11 -8
- data/dist/ice/cpp/src/Ice/ConsoleUtil.cpp +1 -1
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +10 -14
- data/dist/ice/cpp/src/Ice/EndpointI.h +1 -1
- data/dist/ice/cpp/src/Ice/FileUtil.cpp +12 -12
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +1 -1
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +1 -1
- data/dist/ice/cpp/src/Ice/HttpParser.h +0 -2
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +6 -3
- data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +1 -3
- data/dist/ice/cpp/src/Ice/InputStream.cpp +23 -19
- data/dist/ice/cpp/src/Ice/Instance.cpp +73 -50
- data/dist/ice/cpp/src/Ice/Instance.h +1 -6
- data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +1 -1
- data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +2 -2
- data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +13 -18
- data/dist/ice/cpp/src/Ice/LoggerI.cpp +1 -1
- data/dist/ice/cpp/src/Ice/LoggerI.h +2 -2
- data/dist/ice/cpp/src/Ice/MetricsAdminI.h +6 -1
- data/dist/ice/cpp/src/Ice/MetricsObserverI.h +22 -18
- data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +5 -2
- data/dist/ice/cpp/src/Ice/Network.cpp +168 -103
- data/dist/ice/cpp/src/Ice/Network.h +12 -7
- data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +17 -6
- data/dist/ice/cpp/src/Ice/NetworkProxy.h +2 -1
- data/dist/ice/cpp/src/Ice/Object.cpp +1 -1
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +56 -19
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +10 -10
- data/dist/ice/cpp/src/Ice/Options.cpp +7 -2
- data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +1 -1
- data/dist/ice/cpp/src/Ice/OutputStream.cpp +4 -4
- data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +7 -1
- data/dist/ice/cpp/src/Ice/Properties.cpp +26 -16
- data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +1 -1
- data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +0 -11
- data/dist/ice/cpp/src/Ice/ProtocolInstance.h +1 -2
- data/dist/ice/cpp/src/Ice/Proxy.cpp +9 -1
- data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +110 -13
- data/dist/ice/cpp/src/Ice/Random.cpp +68 -7
- data/dist/ice/cpp/src/Ice/Random.h +6 -2
- data/dist/ice/cpp/src/Ice/Reference.cpp +22 -11
- data/dist/ice/cpp/src/Ice/Reference.h +3 -0
- data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +10 -0
- data/dist/ice/cpp/src/Ice/RequestHandler.h +3 -1
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +1 -1
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +1 -1
- data/dist/ice/cpp/src/Ice/ResourceConfig.h +3 -3
- data/dist/ice/cpp/src/Ice/RetryQueue.cpp +8 -12
- data/dist/ice/cpp/src/Ice/SHA1.cpp +11 -11
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +0 -6
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +0 -6
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +15 -1
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +77 -27
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +2 -1
- data/dist/ice/cpp/src/Ice/SSL/RFC2253.cpp +2 -2
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +39 -34
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +130 -52
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +64 -33
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +0 -1
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +3 -3
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +9 -3
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +73 -51
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +0 -8
- data/dist/ice/cpp/src/Ice/Selector.cpp +13 -11
- data/dist/ice/cpp/src/Ice/ServantManager.cpp +3 -3
- data/dist/ice/cpp/src/Ice/Service.cpp +33 -115
- data/dist/ice/cpp/src/Ice/StreamSocket.cpp +33 -40
- data/dist/ice/cpp/src/Ice/StreamSocket.h +4 -4
- data/dist/ice/cpp/src/Ice/StringConverter.cpp +1 -1
- data/dist/ice/cpp/src/Ice/StringUtil.cpp +12 -21
- data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +136 -100
- data/dist/ice/cpp/src/Ice/SysLoggerI.h +7 -3
- data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +1 -1
- data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +7 -7
- data/dist/ice/cpp/src/Ice/TcpAcceptor.h +2 -1
- data/dist/ice/cpp/src/Ice/TcpBufSize.h +40 -0
- data/dist/ice/cpp/src/Ice/TcpConnector.cpp +5 -2
- data/dist/ice/cpp/src/Ice/TcpConnector.h +2 -0
- data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +6 -2
- data/dist/ice/cpp/src/Ice/ThreadPool.cpp +2 -8
- data/dist/ice/cpp/src/Ice/ThreadPool.h +0 -2
- data/dist/ice/cpp/src/Ice/Timer.cpp +7 -3
- data/dist/ice/cpp/src/Ice/UUID.cpp +1 -2
- data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +4 -1
- data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +136 -123
- data/dist/ice/cpp/src/Ice/UdpTransceiver.h +3 -4
- data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +96 -27
- data/dist/ice/cpp/src/Ice/WSTransceiver.h +1 -1
- data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/Context.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/Identity.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/Locator.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/Process.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/Router.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +2 -2
- data/dist/ice/cpp/src/Ice/generated/Version.cpp +2 -2
- data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +47 -9
- data/dist/ice/cpp/src/IceDiscovery/LookupI.h +8 -3
- data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +2 -2
- data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +43 -14
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +2 -2
- data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +26 -20
- data/dist/ice/cpp/src/Slice/DocCommentParser.h +2 -2
- data/dist/ice/cpp/src/Slice/FileTracker.cpp +3 -11
- data/dist/ice/cpp/src/Slice/FileTracker.h +0 -2
- data/dist/ice/cpp/src/Slice/Grammar.cpp +211 -210
- data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +10 -9
- data/dist/ice/cpp/src/Slice/Parser.cpp +28 -20
- data/dist/ice/cpp/src/Slice/Parser.h +3 -4
- data/dist/ice/cpp/src/Slice/Preprocessor.cpp +3 -11
- data/dist/ice/cpp/src/Slice/Preprocessor.h +0 -2
- data/dist/ice/cpp/src/Slice/Scanner.cpp +3 -3
- data/dist/ice/cpp/src/Slice/SliceUtil.cpp +197 -114
- data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +0 -2
- data/dist/ice/cpp/src/Slice/Util.h +21 -9
- data/dist/ice/cpp/src/slice2rb/Ruby.cpp +7 -3
- data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +16 -12
- data/dist/ice/cpp/src/slice2rb/RubyUtil.h +3 -3
- data/dist/ice/slice/Glacier2/Router.ice +3 -3
- data/dist/ice/slice/Ice/Metrics.ice +6 -5
- data/dist/ice/slice/Ice/RemoteLogger.ice +5 -5
- data/dist/ice/slice/IceGrid/Admin.ice +9 -9
- data/dist/ice/slice/IceGrid/Descriptor.ice +5 -5
- data/dist/ice/slice/IceStorm/Metrics.ice +1 -1
- data/dist/lib/Glacier2/Metrics.rb +1 -1
- data/dist/lib/Glacier2/PermissionsVerifier.rb +1 -1
- data/dist/lib/Glacier2/Router.rb +2 -2
- data/dist/lib/Glacier2/SSLInfo.rb +1 -1
- data/dist/lib/Glacier2/Session.rb +1 -1
- data/dist/lib/Ice/BuiltinSequences.rb +1 -1
- data/dist/lib/Ice/CompressBatch.rb +1 -2
- data/dist/lib/Ice/Context.rb +1 -1
- data/dist/lib/Ice/EndpointSelectionType.rb +1 -2
- data/dist/lib/Ice/EndpointTypes.rb +1 -1
- data/dist/lib/Ice/Identity.rb +1 -1
- data/dist/lib/Ice/IdentitySpaceship.rb +1 -0
- data/dist/lib/Ice/Locator.rb +1 -1
- data/dist/lib/Ice/LocatorRegistry.rb +1 -1
- data/dist/lib/Ice/Metrics.rb +1 -1
- data/dist/lib/Ice/OperationMode.rb +2 -3
- data/dist/lib/Ice/Process.rb +1 -1
- data/dist/lib/Ice/PropertiesAdmin.rb +1 -1
- data/dist/lib/Ice/PropertyDict.rb +1 -1
- data/dist/lib/Ice/RemoteLogger.rb +2 -3
- data/dist/lib/Ice/ReplyStatus.rb +2 -3
- data/dist/lib/Ice/Router.rb +1 -1
- data/dist/lib/Ice/SliceChecksumDict.rb +1 -1
- data/dist/lib/Ice/SliceUtil.rb +2 -2
- data/dist/lib/Ice/Struct.rb +1 -0
- data/dist/lib/Ice/ToStringMode.rb +1 -2
- data/dist/lib/Ice/Value.rb +2 -2
- data/dist/lib/Ice/Version.rb +1 -1
- data/dist/lib/IceBox/ServiceManager.rb +1 -1
- data/dist/lib/IceGrid/Admin.rb +3 -4
- data/dist/lib/IceGrid/Descriptor.rb +1 -1
- data/dist/lib/IceGrid/Exception.rb +1 -1
- data/dist/lib/IceGrid/FileParser.rb +1 -1
- data/dist/lib/IceGrid/Registry.rb +2 -3
- data/dist/lib/IceGrid/Session.rb +2 -2
- data/dist/lib/IceGrid/UserAccountMapper.rb +1 -1
- data/dist/lib/IceStorm/IceStorm.rb +1 -1
- data/dist/lib/IceStorm/Metrics.rb +1 -1
- data/extconf.rb +1 -1
- data/ice.gemspec +3 -3
- metadata +4 -5
- data/dist/ice/cpp/src/Ice/DLLMain.cpp +0 -40
- data/dist/ice/cpp/src/Ice/UndefSysMacros.h +0 -37
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) ZeroC, Inc.
|
|
2
2
|
|
|
3
|
-
// slice2cpp version 3.8.
|
|
3
|
+
// slice2cpp version 3.8.3
|
|
4
4
|
// <auto-generated>Generated from Slice file 'Lookup.ice'.</auto-generated>
|
|
5
5
|
// clang-format off
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# if ICE_INT_VERSION % 100 >= 50
|
|
19
19
|
# error Beta header file detected
|
|
20
20
|
# endif
|
|
21
|
-
# if ICE_INT_VERSION % 100 <
|
|
21
|
+
# if ICE_INT_VERSION % 100 < 3
|
|
22
22
|
# error Ice patch level mismatch!
|
|
23
23
|
# endif
|
|
24
24
|
#endif
|
|
@@ -94,11 +94,24 @@ namespace IceLocatorDiscovery
|
|
|
94
94
|
|
|
95
95
|
/// Provides a reply to a ::IceLocatorDiscovery::LookupPrx::findLocator request.
|
|
96
96
|
/// @param prx The proxy of the locator.
|
|
97
|
-
/// @param response The response callback.
|
|
98
|
-
///
|
|
99
|
-
///
|
|
97
|
+
/// @param response The response callback. The Ice runtime calls this function from an Ice thread pool
|
|
98
|
+
/// thread. If you set Ice::InitializationData::executor, the executor determines the thread that executes this
|
|
99
|
+
/// function.
|
|
100
|
+
/// @param exception The exception callback. The Ice runtime calls this function from an Ice thread pool
|
|
101
|
+
/// thread. If you set Ice::InitializationData::executor, the executor determines the thread that executes this
|
|
102
|
+
/// function.
|
|
103
|
+
/// @param sent The sent callback. The Ice runtime calls this function when the request is accepted by the
|
|
104
|
+
/// transport. When the request is accepted synchronously, the Ice runtime calls this function from the current
|
|
105
|
+
/// thread and passes `true` as argument. When the request is accepted asynchronously, the Ice runtime calls
|
|
106
|
+
/// this function from an Ice thread pool thread and passes `false` as argument. If you set
|
|
107
|
+
/// Ice::InitializationData::executor, the executor determines the thread that executes this function in the
|
|
108
|
+
/// asynchronous case.
|
|
100
109
|
/// @param context The request context.
|
|
101
110
|
/// @return A function that can be called to cancel the invocation locally.
|
|
111
|
+
/// @remark When this proxy is a oneway or datagram proxy, the Ice runtime does not call the response
|
|
112
|
+
/// callback: a successful invocation completes with the sent callback. When this proxy is a batch
|
|
113
|
+
/// proxy, this function only adds the request to the batch: the Ice runtime calls none of the
|
|
114
|
+
/// callbacks, and the request is sent later, by a flush.
|
|
102
115
|
// NOLINTNEXTLINE(modernize-use-nodiscard)
|
|
103
116
|
std::function<void()> foundLocatorAsync(const std::optional<::Ice::LocatorPrx>& prx, std::function<void()> response, std::function<void(std::exception_ptr)> exception = nullptr, std::function<void(bool)> sent = nullptr, const Ice::Context& context = Ice::noExplicitContext) const;
|
|
104
117
|
|
|
@@ -190,11 +203,24 @@ namespace IceLocatorDiscovery
|
|
|
190
203
|
/// @param instanceName Restrict the search to Ice registries configured with the given instance name. If
|
|
191
204
|
/// empty, all the available registries will reply.
|
|
192
205
|
/// @param reply The reply object to use to send the reply.
|
|
193
|
-
/// @param response The response callback.
|
|
194
|
-
///
|
|
195
|
-
///
|
|
206
|
+
/// @param response The response callback. The Ice runtime calls this function from an Ice thread pool
|
|
207
|
+
/// thread. If you set Ice::InitializationData::executor, the executor determines the thread that executes this
|
|
208
|
+
/// function.
|
|
209
|
+
/// @param exception The exception callback. The Ice runtime calls this function from an Ice thread pool
|
|
210
|
+
/// thread. If you set Ice::InitializationData::executor, the executor determines the thread that executes this
|
|
211
|
+
/// function.
|
|
212
|
+
/// @param sent The sent callback. The Ice runtime calls this function when the request is accepted by the
|
|
213
|
+
/// transport. When the request is accepted synchronously, the Ice runtime calls this function from the current
|
|
214
|
+
/// thread and passes `true` as argument. When the request is accepted asynchronously, the Ice runtime calls
|
|
215
|
+
/// this function from an Ice thread pool thread and passes `false` as argument. If you set
|
|
216
|
+
/// Ice::InitializationData::executor, the executor determines the thread that executes this function in the
|
|
217
|
+
/// asynchronous case.
|
|
196
218
|
/// @param context The request context.
|
|
197
219
|
/// @return A function that can be called to cancel the invocation locally.
|
|
220
|
+
/// @remark When this proxy is a oneway or datagram proxy, the Ice runtime does not call the response
|
|
221
|
+
/// callback: a successful invocation completes with the sent callback. When this proxy is a batch
|
|
222
|
+
/// proxy, this function only adds the request to the batch: the Ice runtime calls none of the
|
|
223
|
+
/// callbacks, and the request is sent later, by a flush.
|
|
198
224
|
// NOLINTNEXTLINE(modernize-use-nodiscard)
|
|
199
225
|
std::function<void()> findLocatorAsync(std::string_view instanceName, const std::optional<LookupReplyPrx>& reply, std::function<void()> response, std::function<void(std::exception_ptr)> exception = nullptr, std::function<void(bool)> sent = nullptr, const Ice::Context& context = Ice::noExplicitContext) const;
|
|
200
226
|
|
|
@@ -9,7 +9,7 @@ using namespace std;
|
|
|
9
9
|
void
|
|
10
10
|
IceInternal::addDefaultPluginFactories(vector<Ice::PluginFactory>& pluginFactories)
|
|
11
11
|
{
|
|
12
|
-
// These built-in plug-ins are always available and not returned by
|
|
12
|
+
// These built-in plug-ins are always available and not returned by an Ice::namePluginFactory function.
|
|
13
13
|
vector<Ice::PluginFactory> defaultPluginFactories{{Ice::tcpPluginFactory(), Ice::sslPluginFactory()}};
|
|
14
14
|
|
|
15
15
|
Ice::PluginFactory udpPluginFactory{Ice::udpPluginFactory()};
|
|
@@ -2,72 +2,48 @@
|
|
|
2
2
|
|
|
3
3
|
#include "Base64.h"
|
|
4
4
|
|
|
5
|
+
#include <algorithm>
|
|
6
|
+
#include <cctype>
|
|
5
7
|
#include <cstddef>
|
|
6
8
|
#include <iterator>
|
|
9
|
+
#include <sstream>
|
|
7
10
|
|
|
8
11
|
using namespace std;
|
|
9
12
|
|
|
10
13
|
string
|
|
11
14
|
IceInternal::Base64::encode(const vector<byte>& plainSeq)
|
|
12
15
|
{
|
|
16
|
+
// Reserve the exact amount of space needed for the returned base64 string.
|
|
13
17
|
string retval;
|
|
14
|
-
|
|
15
|
-
if (plainSeq.size() == 0)
|
|
16
|
-
{
|
|
17
|
-
return retval;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Reserve enough space for the returned base64 string
|
|
21
|
-
size_t base64Bytes = (((plainSeq.size() * 4) / 3) + 1);
|
|
22
|
-
size_t newlineBytes = (((base64Bytes * 2) / 76) + 1);
|
|
23
|
-
size_t totalBytes = base64Bytes + newlineBytes;
|
|
24
|
-
|
|
25
|
-
retval.reserve(totalBytes);
|
|
26
|
-
|
|
27
|
-
byte by1 = byte{0};
|
|
28
|
-
byte by2 = byte{0};
|
|
29
|
-
byte by3 = byte{0};
|
|
30
|
-
byte by4 = byte{0};
|
|
31
|
-
byte by5 = byte{0};
|
|
32
|
-
byte by6 = byte{0};
|
|
33
|
-
byte by7 = byte{0};
|
|
18
|
+
retval.reserve(((plainSeq.size() + 2) / 3) * 4);
|
|
34
19
|
|
|
35
20
|
for (size_t i = 0; i < plainSeq.size(); i += 3)
|
|
36
21
|
{
|
|
37
|
-
by1 = plainSeq[i];
|
|
38
|
-
by2 = byte{0};
|
|
39
|
-
by3 = byte{0};
|
|
40
|
-
|
|
22
|
+
byte by1 = plainSeq[i];
|
|
23
|
+
byte by2 = byte{0};
|
|
24
|
+
byte by3 = byte{0};
|
|
41
25
|
if ((i + 1) < plainSeq.size())
|
|
42
26
|
{
|
|
43
27
|
by2 = plainSeq[i + 1];
|
|
44
28
|
}
|
|
45
|
-
|
|
46
29
|
if ((i + 2) < plainSeq.size())
|
|
47
30
|
{
|
|
48
31
|
by3 = plainSeq[i + 2];
|
|
49
32
|
}
|
|
50
33
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
by6 = (by2 & byte{0xf}) << 2 | (by3 >> 6);
|
|
54
|
-
by7 = by3 & byte{0x3f};
|
|
55
|
-
|
|
56
|
-
retval += encode(by4);
|
|
57
|
-
retval += encode(by5);
|
|
58
|
-
|
|
34
|
+
retval += encode(by1 >> 2);
|
|
35
|
+
retval += encode((by1 & byte{0x3}) << 4 | (by2 >> 4));
|
|
59
36
|
if ((i + 1) < plainSeq.size())
|
|
60
37
|
{
|
|
61
|
-
retval += encode(
|
|
38
|
+
retval += encode((by2 & byte{0xf}) << 2 | (by3 >> 6));
|
|
62
39
|
}
|
|
63
40
|
else
|
|
64
41
|
{
|
|
65
42
|
retval += "=";
|
|
66
43
|
}
|
|
67
|
-
|
|
68
44
|
if ((i + 2) < plainSeq.size())
|
|
69
45
|
{
|
|
70
|
-
retval += encode(
|
|
46
|
+
retval += encode(by3 & byte{0x3f});
|
|
71
47
|
}
|
|
72
48
|
else
|
|
73
49
|
{
|
|
@@ -75,96 +51,60 @@ IceInternal::Base64::encode(const vector<byte>& plainSeq)
|
|
|
75
51
|
}
|
|
76
52
|
}
|
|
77
53
|
|
|
78
|
-
|
|
79
|
-
outString.reserve(totalBytes);
|
|
80
|
-
string::iterator iter = retval.begin();
|
|
81
|
-
|
|
82
|
-
while ((retval.end() - iter) > 76)
|
|
83
|
-
{
|
|
84
|
-
copy(iter, iter + 76, back_inserter(outString));
|
|
85
|
-
outString += "\r\n";
|
|
86
|
-
iter += 76;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
copy(iter, retval.end(), back_inserter(outString));
|
|
90
|
-
|
|
91
|
-
return outString;
|
|
54
|
+
return retval;
|
|
92
55
|
}
|
|
93
56
|
|
|
94
57
|
vector<byte>
|
|
95
|
-
IceInternal::Base64::decode(
|
|
58
|
+
IceInternal::Base64::decode(string str)
|
|
96
59
|
{
|
|
97
|
-
string
|
|
98
|
-
|
|
99
|
-
|
|
60
|
+
// First, remove any whitespace from the string.
|
|
61
|
+
auto it = std::remove_if(str.begin(), str.end(), [](unsigned char c) { return std::isspace(c); });
|
|
62
|
+
str.erase(it, str.end());
|
|
100
63
|
|
|
101
|
-
|
|
64
|
+
// Reject any non-base64 characters.
|
|
65
|
+
auto paddingStart = str.begin() + static_cast<ptrdiff_t>(str.find_last_not_of('=') + 1);
|
|
66
|
+
it = std::find_if_not(str.begin(), paddingStart, isBase64);
|
|
67
|
+
if (it != paddingStart)
|
|
102
68
|
{
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
69
|
+
ostringstream os;
|
|
70
|
+
os << "invalid base64 character '" << *it << "' (ordinal " << +static_cast<unsigned char>(*it) << ")";
|
|
71
|
+
throw std::invalid_argument(os.str());
|
|
107
72
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
if (newStr.length() == 0)
|
|
73
|
+
// Reject bad padding. There can be at most 2 padding characters, and it must make the total length a multiple of 4.
|
|
74
|
+
if (paddingStart != str.end() && (str.end() - paddingStart > 2 || (str.size() % 4) != 0))
|
|
112
75
|
{
|
|
113
|
-
|
|
76
|
+
throw std::invalid_argument("invalid base64 padding");
|
|
114
77
|
}
|
|
78
|
+
// Drop any padding characters at this point.
|
|
79
|
+
str.erase(paddingStart, str.end());
|
|
115
80
|
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
// size_t totalBytes = (lines * 76) + (((str.size() - (lines * 78)) * 3) / 4);
|
|
120
|
-
|
|
121
|
-
// Figure out how long the final sequence is going to be.
|
|
122
|
-
size_t totalBytes = (newStr.size() * 3 / 4) + 1;
|
|
123
|
-
|
|
124
|
-
retval.reserve(totalBytes);
|
|
125
|
-
|
|
126
|
-
byte by1{0};
|
|
127
|
-
byte by2{0};
|
|
128
|
-
byte by3{0};
|
|
129
|
-
byte by4{0};
|
|
130
|
-
|
|
131
|
-
char c1, c2, c3, c4;
|
|
132
|
-
|
|
133
|
-
for (size_t i = 0; i < newStr.length(); i += 4)
|
|
81
|
+
// Reject any base64 strings with only 1 out of 4 characters in the final sequence.
|
|
82
|
+
// The final sequence may have 2, 3, or 4 characters, but 1 can't encode a full byte.
|
|
83
|
+
if (str.length() % 4 == 1)
|
|
134
84
|
{
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
c4 = 'A';
|
|
138
|
-
|
|
139
|
-
c1 = newStr[i];
|
|
140
|
-
|
|
141
|
-
if ((i + 1) < newStr.length())
|
|
142
|
-
{
|
|
143
|
-
c2 = newStr[i + 1];
|
|
144
|
-
}
|
|
85
|
+
throw std::invalid_argument("invalid base64 string length");
|
|
86
|
+
}
|
|
145
87
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
c3 = newStr[i + 2];
|
|
149
|
-
}
|
|
88
|
+
vector<byte> retval;
|
|
89
|
+
retval.reserve((str.length() * 3) / 4);
|
|
150
90
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
91
|
+
for (size_t i = 0; i < str.length(); i += 4)
|
|
92
|
+
{
|
|
93
|
+
const char c1 = str[i];
|
|
94
|
+
const char c2 = str[i + 1]; // Guaranteed okay because of the 'str.length() % 4 == 1' check above.
|
|
95
|
+
const char c3 = ((i + 2) < str.length()) ? str[i + 2] : '=';
|
|
96
|
+
const char c4 = ((i + 3) < str.length()) ? str[i + 3] : '=';
|
|
155
97
|
|
|
156
|
-
by1 = decode(c1);
|
|
157
|
-
by2 = decode(c2);
|
|
158
|
-
by3 = decode(c3);
|
|
159
|
-
by4 = decode(c4);
|
|
98
|
+
const byte by1 = decode(c1);
|
|
99
|
+
const byte by2 = decode(c2);
|
|
100
|
+
const byte by3 = decode(c3);
|
|
101
|
+
const byte by4 = decode(c4);
|
|
160
102
|
|
|
161
103
|
retval.push_back((by1 << 2) | by2 >> 4);
|
|
162
|
-
|
|
163
104
|
if (c3 != '=')
|
|
164
105
|
{
|
|
165
106
|
retval.push_back(((by2 & byte{0xf}) << 4) | (by3 >> 2));
|
|
166
107
|
}
|
|
167
|
-
|
|
168
108
|
if (c4 != '=')
|
|
169
109
|
{
|
|
170
110
|
retval.push_back(((by3 & byte{0x3}) << 6) | by4);
|
|
@@ -177,37 +117,7 @@ IceInternal::Base64::decode(const string& str)
|
|
|
177
117
|
bool
|
|
178
118
|
IceInternal::Base64::isBase64(char c)
|
|
179
119
|
{
|
|
180
|
-
|
|
181
|
-
{
|
|
182
|
-
return true;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
if (c >= 'a' && c <= 'z')
|
|
186
|
-
{
|
|
187
|
-
return true;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (c >= '0' && c <= '9')
|
|
191
|
-
{
|
|
192
|
-
return true;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
if (c == '+')
|
|
196
|
-
{
|
|
197
|
-
return true;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
if (c == '/')
|
|
201
|
-
{
|
|
202
|
-
return true;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
if (c == '=')
|
|
206
|
-
{
|
|
207
|
-
return true;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
return false;
|
|
120
|
+
return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '+' || c == '/';
|
|
211
121
|
}
|
|
212
122
|
|
|
213
123
|
char
|
|
@@ -14,10 +14,10 @@ namespace IceInternal
|
|
|
14
14
|
{
|
|
15
15
|
public:
|
|
16
16
|
static std::string encode(const std::vector<std::byte>&);
|
|
17
|
-
static std::vector<std::byte> decode(
|
|
18
|
-
static bool isBase64(char);
|
|
17
|
+
static std::vector<std::byte> decode(std::string);
|
|
19
18
|
|
|
20
19
|
private:
|
|
20
|
+
static bool isBase64(char);
|
|
21
21
|
static char encode(std::byte);
|
|
22
22
|
static std::byte decode(char);
|
|
23
23
|
};
|
|
@@ -79,17 +79,19 @@ BatchRequestQueue::prepareBatchRequest(OutputStream* os)
|
|
|
79
79
|
void
|
|
80
80
|
BatchRequestQueue::finishBatchRequest(OutputStream* os, const Ice::ObjectPrx& proxy, string_view operation)
|
|
81
81
|
{
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
{
|
|
83
|
+
// Bring the request stream back and become the owner so this thread's own auto-flush below can
|
|
84
|
+
// re-enter swap(). swap() lets only _batchStreamOwnerId through while the stream is in use, and only
|
|
85
|
+
// after passing that gate does it read the queue's bookkeeping; no other thread can touch the queue,
|
|
86
|
+
// so the mutations below need no further synchronization.
|
|
87
|
+
lock_guard lock(_mutex);
|
|
88
|
+
assert(_batchStreamInUse);
|
|
89
|
+
_batchStream.swap(*os);
|
|
90
|
+
_batchStreamOwnerId = std::this_thread::get_id();
|
|
91
|
+
}
|
|
88
92
|
|
|
89
93
|
try
|
|
90
94
|
{
|
|
91
|
-
_batchStreamCanFlush = true; // Allow flush to proceed even if the stream is marked in use.
|
|
92
|
-
|
|
93
95
|
if (_maxSize > 0 && _batchStream.b.size() >= static_cast<size_t>(_maxSize))
|
|
94
96
|
{
|
|
95
97
|
proxy->ice_flushBatchRequestsAsync(nullptr); // auto-flush, don't wait for response
|
|
@@ -115,15 +117,18 @@ BatchRequestQueue::finishBatchRequest(OutputStream* os, const Ice::ObjectPrx& pr
|
|
|
115
117
|
lock_guard lock(_mutex);
|
|
116
118
|
_batchStream.resize(_batchMarker);
|
|
117
119
|
_batchStreamInUse = false;
|
|
118
|
-
|
|
120
|
+
_batchStreamOwnerId = std::thread::id{};
|
|
119
121
|
_conditionVariable.notify_all();
|
|
120
122
|
}
|
|
121
|
-
catch (
|
|
123
|
+
catch (...)
|
|
122
124
|
{
|
|
125
|
+
// Restore the queue to a usable state on any exception, including a non-std::exception escaping the
|
|
126
|
+
// interceptor. Otherwise _batchStreamInUse would stay set and wedge the queue (all future
|
|
127
|
+
// prepareBatchRequest/swap calls would block forever).
|
|
123
128
|
lock_guard lock(_mutex);
|
|
124
129
|
_batchStream.resize(_batchMarker);
|
|
125
130
|
_batchStreamInUse = false;
|
|
126
|
-
|
|
131
|
+
_batchStreamOwnerId = std::thread::id{};
|
|
127
132
|
_conditionVariable.notify_all();
|
|
128
133
|
throw;
|
|
129
134
|
}
|
|
@@ -146,13 +151,23 @@ int
|
|
|
146
151
|
BatchRequestQueue::swap(OutputStream* os, bool& compress) noexcept
|
|
147
152
|
{
|
|
148
153
|
unique_lock lock(_mutex);
|
|
154
|
+
|
|
155
|
+
// Only the thread that currently owns the in-use stream may bypass the wait, to run its own auto-flush;
|
|
156
|
+
// every other caller waits for the in-progress batch request to finish. (The owner can't change while we
|
|
157
|
+
// block here: a thread becomes the owner only inside finishBatchRequest, never while parked in this wait.)
|
|
158
|
+
if (_batchStreamOwnerId != std::this_thread::get_id())
|
|
159
|
+
{
|
|
160
|
+
_conditionVariable.wait(lock, [this] { return !_batchStreamInUse; });
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Read the bookkeeping only after passing the gate above: finishBatchRequest mutates these scalars
|
|
164
|
+
// without the lock while it owns the in-use stream, so reading _batchRequestNum before the wait would
|
|
165
|
+
// race those writes.
|
|
149
166
|
if (_batchRequestNum == 0)
|
|
150
167
|
{
|
|
151
168
|
return 0;
|
|
152
169
|
}
|
|
153
170
|
|
|
154
|
-
_conditionVariable.wait(lock, [this] { return !_batchStreamInUse || _batchStreamCanFlush; });
|
|
155
|
-
|
|
156
171
|
vector<byte> lastRequest;
|
|
157
172
|
if (_batchMarker < _batchStream.b.size())
|
|
158
173
|
{
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
#include <condition_variable>
|
|
12
12
|
#include <functional>
|
|
13
13
|
#include <mutex>
|
|
14
|
+
#include <thread>
|
|
14
15
|
|
|
15
16
|
namespace IceInternal
|
|
16
17
|
{
|
|
@@ -33,7 +34,10 @@ namespace IceInternal
|
|
|
33
34
|
std::function<void(const Ice::BatchRequest&, int, int)> _interceptor;
|
|
34
35
|
Ice::OutputStream _batchStream;
|
|
35
36
|
bool _batchStreamInUse{false};
|
|
36
|
-
|
|
37
|
+
// While finishBatchRequest holds the in-use stream, this is its thread: the only thread allowed to
|
|
38
|
+
// re-enter swap() (for its own auto-flush). A default-constructed id means no thread may flush the
|
|
39
|
+
// in-use stream, so other threads wait for _batchStreamInUse to clear.
|
|
40
|
+
std::thread::id _batchStreamOwnerId{};
|
|
37
41
|
bool _batchCompress{false};
|
|
38
42
|
int _batchRequestNum{0};
|
|
39
43
|
size_t _batchMarker;
|
|
@@ -34,7 +34,7 @@ namespace IceInternal
|
|
|
34
34
|
|
|
35
35
|
void asyncRequestCanceled(const OutgoingAsyncBasePtr&, std::exception_ptr) final;
|
|
36
36
|
|
|
37
|
-
Ice::ConnectionIPtr getConnection() final;
|
|
37
|
+
Ice::ConnectionIPtr getConnection() noexcept final;
|
|
38
38
|
|
|
39
39
|
AsyncStatus invokeAsyncRequest(OutgoingAsyncBase*, int, bool);
|
|
40
40
|
|
|
@@ -48,11 +48,12 @@ Ice::Communicator::destroy() noexcept
|
|
|
48
48
|
void
|
|
49
49
|
Ice::Communicator::destroyAsync(function<void()> completed) noexcept
|
|
50
50
|
{
|
|
51
|
-
if (completed)
|
|
51
|
+
if (!completed)
|
|
52
52
|
{
|
|
53
|
-
|
|
53
|
+
// we tolerate null callbacks
|
|
54
|
+
completed = [] {};
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
+
_instance->destroyAsync(std::move(completed));
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
void
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
#include "ConnectionI.h"
|
|
7
7
|
#include "Instance.h"
|
|
8
8
|
#include "ObjectAdapterFactory.h"
|
|
9
|
+
#include "RequestHandler.h" // For RetryException
|
|
9
10
|
|
|
10
11
|
using namespace std;
|
|
11
12
|
using namespace Ice;
|
|
@@ -97,6 +98,13 @@ CommunicatorFlushBatchAsync::flushConnection(const ConnectionIPtr& con, Ice::Com
|
|
|
97
98
|
con->sendAsyncRequest(flushBatch, compress, false, batchRequestNum);
|
|
98
99
|
}
|
|
99
100
|
}
|
|
101
|
+
catch (const RetryException& ex)
|
|
102
|
+
{
|
|
103
|
+
// If the connection is closed and sendAsyncRequest throws a RetryException, we rethrow the underlying exception
|
|
104
|
+
// to the caller.
|
|
105
|
+
check(false);
|
|
106
|
+
rethrow_exception(ex.get());
|
|
107
|
+
}
|
|
100
108
|
catch (const LocalException&)
|
|
101
109
|
{
|
|
102
110
|
check(false);
|
|
@@ -59,23 +59,13 @@ ConnectRequestHandler::asyncRequestCanceled(const OutgoingAsyncBasePtr& outAsync
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
Ice::ConnectionIPtr
|
|
62
|
-
ConnectRequestHandler::getConnection()
|
|
62
|
+
ConnectRequestHandler::getConnection() noexcept
|
|
63
63
|
{
|
|
64
64
|
lock_guard lock(_mutex);
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
//
|
|
70
|
-
if (_connection)
|
|
71
|
-
{
|
|
72
|
-
return _connection;
|
|
73
|
-
}
|
|
74
|
-
else if (_exception)
|
|
75
|
-
{
|
|
76
|
-
rethrow_exception(_exception);
|
|
77
|
-
}
|
|
78
|
-
return nullptr;
|
|
65
|
+
// Return the connection in whatever state it is; if the connection establishment failed, return null. Like all
|
|
66
|
+
// getConnection implementations, this function never throws: a null return is how the absence of a connection is
|
|
67
|
+
// reported.
|
|
68
|
+
return _connection;
|
|
79
69
|
}
|
|
80
70
|
|
|
81
71
|
void
|
|
@@ -25,7 +25,7 @@ namespace IceInternal
|
|
|
25
25
|
|
|
26
26
|
void asyncRequestCanceled(const OutgoingAsyncBasePtr&, std::exception_ptr) final;
|
|
27
27
|
|
|
28
|
-
Ice::ConnectionIPtr getConnection() final;
|
|
28
|
+
Ice::ConnectionIPtr getConnection() noexcept final;
|
|
29
29
|
|
|
30
30
|
// setConnection and setException are the response and exception for RoutableReference::getConnectionAsync.
|
|
31
31
|
void setConnection(Ice::ConnectionIPtr, bool);
|
|
@@ -205,7 +205,7 @@ IceInternal::OutgoingConnectionFactory::setRouterInfo(const RouterInfoPtr& route
|
|
|
205
205
|
// endpoints that differ in the value of the compression flag
|
|
206
206
|
// only, we always set the compression flag to false here in
|
|
207
207
|
// this connection factory. We also clear the timeout as it is
|
|
208
|
-
// no longer used for Ice 3.8.
|
|
208
|
+
// no longer used for Ice 3.8 or greater.
|
|
209
209
|
//
|
|
210
210
|
endpoint = endpoint->compress(false)->timeout(-1);
|
|
211
211
|
|
|
@@ -387,7 +387,7 @@ IceInternal::OutgoingConnectionFactory::incPendingConnectCount()
|
|
|
387
387
|
//
|
|
388
388
|
// Keep track of the number of pending connects. The outgoing connection factory
|
|
389
389
|
// waitUntilFinished() method waits for all the pending connects to terminate before
|
|
390
|
-
//
|
|
390
|
+
// returning. This ensures that the communicator client thread pool isn't destroyed
|
|
391
391
|
// too soon and will still be available to execute the ice_exception() callbacks for
|
|
392
392
|
// the asynchronous requests waiting on a connection to be established.
|
|
393
393
|
//
|
|
@@ -426,7 +426,7 @@ IceInternal::OutgoingConnectionFactory::getConnection(
|
|
|
426
426
|
throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
|
|
427
427
|
}
|
|
428
428
|
|
|
429
|
-
// Search for an existing
|
|
429
|
+
// Search for an existing connection matching one of the given endpoints.
|
|
430
430
|
Ice::ConnectionIPtr connection = findConnection(connectors, compress);
|
|
431
431
|
if (connection)
|
|
432
432
|
{
|
|
@@ -695,7 +695,7 @@ IceInternal::OutgoingConnectionFactory::handleException(exception_ptr ex, bool h
|
|
|
695
695
|
{
|
|
696
696
|
Trace out(_instance->initializationData().logger, traceLevels->networkCat);
|
|
697
697
|
|
|
698
|
-
out << "
|
|
698
|
+
out << "could not resolve endpoint host";
|
|
699
699
|
|
|
700
700
|
try
|
|
701
701
|
{
|
|
@@ -903,9 +903,9 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
|
|
|
903
903
|
{
|
|
904
904
|
//
|
|
905
905
|
// A null return value from getConnection indicates that the connection
|
|
906
|
-
// is being established and that
|
|
906
|
+
// is being established and that everything has been done to ensure that
|
|
907
907
|
// the callback will be notified when the connection establishment is
|
|
908
|
-
// done or that the callback already
|
|
908
|
+
// done or that the callback already obtained the connection.
|
|
909
909
|
//
|
|
910
910
|
return;
|
|
911
911
|
}
|
|
@@ -1510,7 +1510,6 @@ IceInternal::IncomingConnectionFactory::startAcceptor()
|
|
|
1510
1510
|
return;
|
|
1511
1511
|
}
|
|
1512
1512
|
|
|
1513
|
-
_acceptorStopped = false;
|
|
1514
1513
|
createAcceptor();
|
|
1515
1514
|
}
|
|
1516
1515
|
|
|
@@ -1523,7 +1522,6 @@ IceInternal::IncomingConnectionFactory::stopAcceptor()
|
|
|
1523
1522
|
return;
|
|
1524
1523
|
}
|
|
1525
1524
|
|
|
1526
|
-
_acceptorStopped = true;
|
|
1527
1525
|
_acceptorStarted = false;
|
|
1528
1526
|
if (_adapter->getThreadPool()->finish(shared_from_this(), true))
|
|
1529
1527
|
{
|
|
@@ -241,9 +241,6 @@ namespace IceInternal
|
|
|
241
241
|
EndpointIPtr _endpoint;
|
|
242
242
|
|
|
243
243
|
bool _acceptorStarted{false};
|
|
244
|
-
#if defined(__APPLE__) && TARGET_OS_IPHONE != 0
|
|
245
|
-
bool _acceptorStopped{false};
|
|
246
|
-
#endif
|
|
247
244
|
|
|
248
245
|
std::shared_ptr<Ice::ObjectAdapterI> _adapter;
|
|
249
246
|
const bool _warn;
|