zeroc-ice 3.7.2 → 3.7.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 +5 -5
- data/ext/Config.h +4 -0
- data/ext/Operation.cpp +5 -5
- data/ext/Properties.cpp +1 -1
- data/ext/Proxy.cpp +16 -2
- data/ext/Types.cpp +45 -40
- data/ext/Util.cpp +1 -1
- data/ext/Util.h +10 -8
- data/ext/ice/cpp/include/Ice/Config.h +4 -0
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +1 -1
- data/ext/ice/cpp/include/Ice/IconvStringConverter.h +4 -3
- data/ext/ice/cpp/include/Ice/InputStream.h +4 -4
- data/ext/ice/cpp/include/Ice/Optional.h +11 -0
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +1 -1
- data/ext/ice/cpp/include/Ice/OutputStream.h +5 -5
- data/ext/ice/cpp/include/Ice/Proxy.h +17 -5
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +1 -1
- data/ext/ice/cpp/include/Ice/Value.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Atomic.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Config.h +16 -6
- data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +4 -4
- data/ext/ice/cpp/include/IceUtil/Optional.h +8 -0
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +17 -14
- data/ext/ice/cpp/include/IceUtil/Random.h +1 -1
- data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +2 -2
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +6 -0
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +1 -1
- data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Communicator.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Connection.h +33 -36
- data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Current.h +20 -21
- data/ext/ice/cpp/include/generated/Ice/Endpoint.h +24 -24
- data/ext/ice/cpp/include/generated/Ice/EndpointF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/FacetMap.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Identity.h +4 -5
- data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +15 -15
- data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/LocalException.h +27 -93
- data/ext/ice/cpp/include/generated/Ice/Locator.h +27 -32
- data/ext/ice/cpp/include/generated/Ice/LocatorF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Logger.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/LoggerF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Metrics.h +75 -79
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Plugin.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/PluginF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Process.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ProcessF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Properties.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +9 -9
- data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +9 -11
- data/ext/ice/cpp/include/generated/Ice/Router.h +22 -22
- data/ext/ice/cpp/include/generated/Ice/RouterF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Version.h +15 -17
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +3 -3
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +3 -3
- data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +3 -3
- data/ext/ice/cpp/src/Ice/ArgVector.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Base64.cpp +11 -12
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Buffer.cpp +2 -2
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Communicator.cpp +3 -3
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +19 -0
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +5 -0
- data/ext/ice/cpp/src/Ice/Connection.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +31 -16
- data/ext/ice/cpp/src/Ice/Current.cpp +3 -3
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +13 -0
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +6 -5
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +3 -3
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Exception.cpp +5 -5
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +3 -3
- data/ext/ice/cpp/src/Ice/HashUtil.h +1 -1
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +12 -1
- data/ext/ice/cpp/src/Ice/Identity.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Incoming.cpp +2 -0
- data/ext/ice/cpp/src/Ice/Initialize.cpp +4 -3
- data/ext/ice/cpp/src/Ice/InputStream.cpp +19 -19
- data/ext/ice/cpp/src/Ice/Instance.cpp +28 -8
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +3 -3
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/LocalException.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Locator.cpp +7 -7
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Logger.cpp +3 -3
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +1 -7
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +6 -0
- data/ext/ice/cpp/src/Ice/Metrics.cpp +5 -5
- data/ext/ice/cpp/src/Ice/Network.cpp +23 -22
- data/ext/ice/cpp/src/Ice/Network.h +1 -1
- data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +57 -0
- data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +40 -0
- data/ext/ice/cpp/src/Ice/Object.cpp +9 -7
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +13 -1
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +4 -0
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +3 -3
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +1 -1
- data/ext/ice/cpp/src/Ice/OutputStream.cpp +24 -24
- data/ext/ice/cpp/src/Ice/Plugin.cpp +3 -3
- data/ext/ice/cpp/src/Ice/PluginF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Process.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Properties.cpp +3 -3
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +4 -4
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +2 -1
- data/ext/ice/cpp/src/Ice/PropertyNames.h +1 -1
- data/ext/ice/cpp/src/Ice/Proxy.cpp +6 -0
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +1 -1
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +1 -1
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +3 -2
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Router.cpp +6 -6
- data/ext/ice/cpp/src/Ice/RouterF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/SHA1.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Selector.cpp +18 -13
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +3 -3
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +6 -6
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +6 -0
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +5 -0
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +5 -0
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +5 -0
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +63 -0
- data/ext/ice/cpp/src/Ice/ThreadPool.h +10 -2
- data/ext/ice/cpp/src/Ice/Timer.cpp +10 -0
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +11 -1
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +10 -2
- data/ext/ice/cpp/src/Ice/ValueFactory.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Version.cpp +3 -3
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +16 -15
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +3 -3
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +3 -3
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +3 -3
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +3 -3
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +37 -8
- data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +3 -3
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +3 -3
- data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +3 -3
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +3 -3
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +4 -16
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -1
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +40 -3
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -7
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +0 -2
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +18 -6
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +19 -7
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +2 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +32 -21
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +21 -6
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +19 -16
- data/ext/ice/cpp/src/IceSSL/Util.cpp +11 -5
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Options.cpp +3 -3
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +40 -10
- data/ext/ice/cpp/src/IceUtil/Random.cpp +2 -2
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +5 -5
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +3 -3
- data/ext/ice/cpp/src/IceUtil/Time.cpp +3 -3
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +5 -5
- data/ext/ice/cpp/src/IceUtil/UtilException.cpp +4 -4
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +13 -9
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +1 -1
- data/ext/ice/cpp/src/Slice/Grammar.cpp +8 -0
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +1 -2
- data/ext/ice/cpp/src/Slice/MD5I.cpp +8 -0
- data/ext/ice/cpp/src/Slice/Parser.cpp +60 -112
- data/ext/ice/cpp/src/Slice/Parser.h +27 -1
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +2 -1
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +10 -10
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +1 -1
- data/ext/ice/cpp/src/Slice/Scanner.cpp +8 -0
- data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +11 -6
- data/ext/ice/mcpp/Makefile +2 -5
- data/ice.gemspec +1 -1
- data/lib/Glacier2/Metrics.rb +1 -1
- data/lib/Glacier2/PermissionsVerifier.rb +1 -1
- data/lib/Glacier2/PermissionsVerifierF.rb +1 -1
- data/lib/Glacier2/Router.rb +1 -1
- data/lib/Glacier2/RouterF.rb +1 -1
- data/lib/Glacier2/SSLInfo.rb +1 -1
- data/lib/Glacier2/Session.rb +1 -1
- data/lib/Ice/BuiltinSequences.rb +1 -1
- data/lib/Ice/Communicator.rb +1 -1
- data/lib/Ice/CommunicatorF.rb +1 -1
- data/lib/Ice/Connection.rb +1 -1
- data/lib/Ice/ConnectionF.rb +1 -1
- data/lib/Ice/Current.rb +1 -1
- data/lib/Ice/Endpoint.rb +1 -1
- data/lib/Ice/EndpointF.rb +1 -1
- data/lib/Ice/EndpointTypes.rb +1 -1
- data/lib/Ice/FacetMap.rb +1 -1
- data/lib/Ice/Identity.rb +1 -1
- data/lib/Ice/ImplicitContext.rb +1 -1
- data/lib/Ice/ImplicitContextF.rb +1 -1
- data/lib/Ice/Instrumentation.rb +1 -1
- data/lib/Ice/InstrumentationF.rb +1 -1
- data/lib/Ice/LocalException.rb +1 -1
- data/lib/Ice/Locator.rb +1 -1
- data/lib/Ice/LocatorF.rb +1 -1
- data/lib/Ice/Logger.rb +1 -1
- data/lib/Ice/LoggerF.rb +1 -1
- data/lib/Ice/Metrics.rb +1 -1
- data/lib/Ice/ObjectAdapter.rb +1 -1
- data/lib/Ice/ObjectAdapterF.rb +1 -1
- data/lib/Ice/ObjectFactory.rb +1 -1
- data/lib/Ice/Plugin.rb +1 -1
- data/lib/Ice/PluginF.rb +1 -1
- data/lib/Ice/Process.rb +1 -1
- data/lib/Ice/ProcessF.rb +1 -1
- data/lib/Ice/Properties.rb +1 -1
- data/lib/Ice/PropertiesAdmin.rb +1 -1
- data/lib/Ice/PropertiesF.rb +1 -1
- data/lib/Ice/RemoteLogger.rb +1 -1
- data/lib/Ice/Router.rb +1 -1
- data/lib/Ice/RouterF.rb +1 -1
- data/lib/Ice/ServantLocator.rb +1 -1
- data/lib/Ice/ServantLocatorF.rb +1 -1
- data/lib/Ice/SliceChecksumDict.rb +1 -1
- data/lib/Ice/ValueFactory.rb +1 -1
- data/lib/Ice/Version.rb +1 -1
- data/lib/IceBox/IceBox.rb +1 -1
- data/lib/IceGrid/Admin.rb +1 -1
- data/lib/IceGrid/Descriptor.rb +1 -1
- data/lib/IceGrid/Exception.rb +1 -1
- data/lib/IceGrid/FileParser.rb +1 -1
- data/lib/IceGrid/PluginFacade.rb +1 -1
- data/lib/IceGrid/Registry.rb +1 -1
- data/lib/IceGrid/Session.rb +1 -1
- data/lib/IceGrid/UserAccountMapper.rb +1 -1
- data/lib/IcePatch2/FileInfo.rb +1 -1
- data/lib/IcePatch2/FileServer.rb +1 -1
- data/lib/IceStorm/IceStorm.rb +1 -1
- data/lib/IceStorm/Metrics.rb +1 -1
- data/slice/Glacier2/Metrics.ice +1 -1
- data/slice/Ice/Communicator.ice +57 -25
- data/slice/Ice/Connection.ice +14 -14
- data/slice/Ice/Current.ice +1 -1
- data/slice/Ice/Endpoint.ice +6 -6
- data/slice/Ice/EndpointF.ice +1 -1
- data/slice/Ice/FacetMap.ice +1 -1
- data/slice/Ice/ImplicitContext.ice +6 -6
- data/slice/Ice/Instrumentation.ice +6 -6
- data/slice/Ice/Logger.ice +6 -6
- data/slice/Ice/Metrics.ice +12 -9
- data/slice/Ice/ObjectAdapter.ice +43 -31
- data/slice/Ice/ObjectFactory.ice +1 -1
- data/slice/Ice/Plugin.ice +2 -2
- data/slice/Ice/Properties.ice +10 -10
- data/slice/Ice/ServantLocator.ice +4 -2
- data/slice/Ice/ValueFactory.ice +3 -3
- data/slice/IceBT/EndpointInfo.ice +1 -1
- data/slice/IceGrid/PluginFacade.ice +4 -4
- data/slice/IceIAP/ConnectionInfo.ice +1 -1
- data/slice/IceIAP/EndpointInfo.ice +1 -1
- data/slice/IceSSL/ConnectionInfo.ice +3 -2
- data/slice/IceSSL/ConnectionInfoF.ice +1 -1
- data/slice/IceSSL/EndpointInfo.ice +1 -1
- data/slice/IceStorm/Metrics.ice +1 -1
- metadata +5 -3
|
@@ -110,6 +110,10 @@ public:
|
|
|
110
110
|
|
|
111
111
|
std::string prefix() const;
|
|
112
112
|
|
|
113
|
+
#ifdef ICE_SWIFT
|
|
114
|
+
dispatch_queue_t getDispatchQueue() const ICE_NOEXCEPT;
|
|
115
|
+
#endif
|
|
116
|
+
|
|
113
117
|
private:
|
|
114
118
|
|
|
115
119
|
void run(const EventHandlerThreadPtr&);
|
|
@@ -127,10 +131,14 @@ private:
|
|
|
127
131
|
std::string nextThreadId();
|
|
128
132
|
|
|
129
133
|
const InstancePtr _instance;
|
|
130
|
-
#ifdef
|
|
134
|
+
#ifdef ICE_SWIFT
|
|
135
|
+
const dispatch_queue_t _dispatchQueue;
|
|
136
|
+
#else // Ice for Swift does not support a dispatcher
|
|
137
|
+
# ifdef ICE_CPP11_MAPPING
|
|
131
138
|
std::function<void(std::function<void()>, const std::shared_ptr<Ice::Connection>&)> _dispatcher;
|
|
132
|
-
#else
|
|
139
|
+
# else
|
|
133
140
|
const Ice::DispatcherPtr _dispatcher;
|
|
141
|
+
# endif
|
|
134
142
|
#endif
|
|
135
143
|
ThreadPoolWorkQueuePtr _workQueue;
|
|
136
144
|
bool _destroyed;
|
|
@@ -242,6 +242,16 @@ Timer::run()
|
|
|
242
242
|
{
|
|
243
243
|
consoleErr << "IceUtil::Timer::run(): uncaught exception" << endl;
|
|
244
244
|
}
|
|
245
|
+
|
|
246
|
+
if(token.delay == IceUtil::Time())
|
|
247
|
+
{
|
|
248
|
+
//
|
|
249
|
+
// If thisthe task is not a repeated task, clear the task reference now rather than
|
|
250
|
+
// in the synchronization block above. Clearing the task reference might end up
|
|
251
|
+
// calling user code which could trigger a deadlock. See also issue #352.
|
|
252
|
+
//
|
|
253
|
+
token.task = ICE_NULLPTR;
|
|
254
|
+
}
|
|
245
255
|
}
|
|
246
256
|
}
|
|
247
257
|
}
|
|
@@ -214,7 +214,17 @@ IceInternal::UdpEndpointI::options() const
|
|
|
214
214
|
|
|
215
215
|
if(_mcastInterface.length() > 0)
|
|
216
216
|
{
|
|
217
|
-
s << " --interface "
|
|
217
|
+
s << " --interface ";
|
|
218
|
+
bool addQuote = _mcastInterface.find(':') != string::npos;
|
|
219
|
+
if(addQuote)
|
|
220
|
+
{
|
|
221
|
+
s << "\"";
|
|
222
|
+
}
|
|
223
|
+
s << _mcastInterface;
|
|
224
|
+
if(addQuote)
|
|
225
|
+
{
|
|
226
|
+
s << "\"";
|
|
227
|
+
}
|
|
218
228
|
}
|
|
219
229
|
|
|
220
230
|
if(_mcastTtl != -1)
|
|
@@ -259,13 +259,21 @@ IceInternal::UdpTransceiver::read(Buffer& buf)
|
|
|
259
259
|
assert(buf.i == buf.b.begin());
|
|
260
260
|
assert(_fd != INVALID_SOCKET);
|
|
261
261
|
|
|
262
|
-
|
|
262
|
+
#ifdef _WIN32
|
|
263
|
+
int packetSize = min(_maxPacketSize, _rcvSize - _udpOverhead);
|
|
264
|
+
#else
|
|
265
|
+
const size_t packetSize = static_cast<size_t>(min(_maxPacketSize, _rcvSize - _udpOverhead));
|
|
266
|
+
#endif
|
|
263
267
|
buf.b.resize(packetSize);
|
|
264
268
|
buf.i = buf.b.begin();
|
|
265
269
|
|
|
266
270
|
repeat:
|
|
267
271
|
|
|
272
|
+
#ifdef _WIN32
|
|
273
|
+
int ret;
|
|
274
|
+
#else
|
|
268
275
|
ssize_t ret;
|
|
276
|
+
#endif
|
|
269
277
|
if(_state == StateConnected)
|
|
270
278
|
{
|
|
271
279
|
ret = ::recv(_fd, reinterpret_cast<char*>(&buf.b[0]), packetSize, 0);
|
|
@@ -341,7 +349,7 @@ repeat:
|
|
|
341
349
|
}
|
|
342
350
|
}
|
|
343
351
|
|
|
344
|
-
buf.b.resize(ret);
|
|
352
|
+
buf.b.resize(static_cast<size_t>(ret));
|
|
345
353
|
buf.i = buf.b.end();
|
|
346
354
|
return SocketOperationNone;
|
|
347
355
|
#endif
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
3
|
//
|
|
4
4
|
//
|
|
5
|
-
// Ice version 3.7.
|
|
5
|
+
// Ice version 3.7.3
|
|
6
6
|
//
|
|
7
7
|
// <auto-generated>
|
|
8
8
|
//
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
# if ICE_INT_VERSION / 100 != 307
|
|
35
35
|
# error Ice version mismatch!
|
|
36
36
|
# endif
|
|
37
|
-
# if ICE_INT_VERSION % 100
|
|
37
|
+
# if ICE_INT_VERSION % 100 >= 50
|
|
38
38
|
# error Beta header file detected
|
|
39
39
|
# endif
|
|
40
|
-
# if ICE_INT_VERSION % 100 <
|
|
40
|
+
# if ICE_INT_VERSION % 100 < 3
|
|
41
41
|
# error Ice patch level mismatch!
|
|
42
42
|
# endif
|
|
43
43
|
#endif
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
3
|
//
|
|
4
4
|
//
|
|
5
|
-
// Ice version 3.7.
|
|
5
|
+
// Ice version 3.7.3
|
|
6
6
|
//
|
|
7
7
|
// <auto-generated>
|
|
8
8
|
//
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
# if ICE_INT_VERSION / 100 != 307
|
|
35
35
|
# error Ice version mismatch!
|
|
36
36
|
# endif
|
|
37
|
-
# if ICE_INT_VERSION % 100
|
|
37
|
+
# if ICE_INT_VERSION % 100 >= 50
|
|
38
38
|
# error Beta header file detected
|
|
39
39
|
# endif
|
|
40
|
-
# if ICE_INT_VERSION % 100 <
|
|
40
|
+
# if ICE_INT_VERSION % 100 < 3
|
|
41
41
|
# error Ice patch level mismatch!
|
|
42
42
|
# endif
|
|
43
43
|
#endif
|
|
@@ -588,11 +588,11 @@ IceInternal::WSTransceiver::read(Buffer& buf)
|
|
|
588
588
|
// no more than the payload length. The remaining of the buffer will be
|
|
589
589
|
// sent over in another frame.
|
|
590
590
|
//
|
|
591
|
-
size_t readSz = _readPayloadLength - (buf.i - _readStart); // Already read
|
|
591
|
+
size_t readSz = _readPayloadLength - static_cast<size_t>(buf.i - _readStart); // Already read
|
|
592
592
|
if(static_cast<size_t>(buf.b.end() - buf.i) > readSz)
|
|
593
593
|
{
|
|
594
594
|
size_t size = buf.b.size();
|
|
595
|
-
buf.b.resize(buf.i - buf.b.begin() + readSz);
|
|
595
|
+
buf.b.resize(static_cast<size_t>(buf.i - buf.b.begin()) + readSz);
|
|
596
596
|
s = _delegate->read(buf);
|
|
597
597
|
buf.b.resize(size);
|
|
598
598
|
}
|
|
@@ -1394,7 +1394,7 @@ IceInternal::WSTransceiver::preRead(Buffer& buf)
|
|
|
1394
1394
|
return false;
|
|
1395
1395
|
}
|
|
1396
1396
|
|
|
1397
|
-
size_t n = min(_readBuffer.i - _readI, buf.b.end() - buf.i);
|
|
1397
|
+
size_t n = min(static_cast<size_t>(_readBuffer.i - _readI), static_cast<size_t>(buf.b.end() - buf.i));
|
|
1398
1398
|
|
|
1399
1399
|
if(n > _readPayloadLength)
|
|
1400
1400
|
{
|
|
@@ -1435,13 +1435,13 @@ IceInternal::WSTransceiver::postRead(Buffer& buf)
|
|
|
1435
1435
|
// Unmask the data we just read.
|
|
1436
1436
|
//
|
|
1437
1437
|
IceInternal::Buffer::Container::iterator p = _readStart;
|
|
1438
|
-
for(size_t n = _readStart - _readFrameStart; p < buf.i; ++p, ++n)
|
|
1438
|
+
for(size_t n = static_cast<size_t>(_readStart - _readFrameStart); p < buf.i; ++p, ++n)
|
|
1439
1439
|
{
|
|
1440
1440
|
*p ^= _readMask[n % 4];
|
|
1441
1441
|
}
|
|
1442
1442
|
}
|
|
1443
1443
|
|
|
1444
|
-
_readPayloadLength -= buf.i - _readStart;
|
|
1444
|
+
_readPayloadLength -= static_cast<size_t>(buf.i - _readStart);
|
|
1445
1445
|
_readStart = buf.i;
|
|
1446
1446
|
if(_readPayloadLength == 0)
|
|
1447
1447
|
{
|
|
@@ -1474,7 +1474,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1474
1474
|
{
|
|
1475
1475
|
prepareWriteHeader(OP_PING, 0); // Don't send any payload
|
|
1476
1476
|
|
|
1477
|
-
_writeBuffer.b.resize(_writeBuffer.i - _writeBuffer.b.begin());
|
|
1477
|
+
_writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
|
|
1478
1478
|
_writeState = WriteStateControlFrame;
|
|
1479
1479
|
_writeBuffer.i = _writeBuffer.b.begin();
|
|
1480
1480
|
}
|
|
@@ -1483,7 +1483,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1483
1483
|
prepareWriteHeader(OP_PONG, _pingPayload.size());
|
|
1484
1484
|
if(_pingPayload.size() > static_cast<size_t>(_writeBuffer.b.end() - _writeBuffer.i))
|
|
1485
1485
|
{
|
|
1486
|
-
size_t pos = _writeBuffer.i - _writeBuffer.b.begin();
|
|
1486
|
+
size_t pos = static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin());
|
|
1487
1487
|
_writeBuffer.b.resize(pos + _pingPayload.size());
|
|
1488
1488
|
_writeBuffer.i = _writeBuffer.b.begin() + pos;
|
|
1489
1489
|
}
|
|
@@ -1491,7 +1491,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1491
1491
|
_writeBuffer.i += _pingPayload.size();
|
|
1492
1492
|
_pingPayload.clear();
|
|
1493
1493
|
|
|
1494
|
-
_writeBuffer.b.resize(_writeBuffer.i - _writeBuffer.b.begin());
|
|
1494
|
+
_writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
|
|
1495
1495
|
_writeState = WriteStateControlFrame;
|
|
1496
1496
|
_writeBuffer.i = _writeBuffer.b.begin();
|
|
1497
1497
|
}
|
|
@@ -1513,7 +1513,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1513
1513
|
}
|
|
1514
1514
|
|
|
1515
1515
|
_writeState = WriteStateControlFrame;
|
|
1516
|
-
_writeBuffer.b.resize(_writeBuffer.i - _writeBuffer.b.begin());
|
|
1516
|
+
_writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
|
|
1517
1517
|
_writeBuffer.i = _writeBuffer.b.begin();
|
|
1518
1518
|
}
|
|
1519
1519
|
else
|
|
@@ -1543,7 +1543,7 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1543
1543
|
_writeBuffer.i = _writeBuffer.b.begin();
|
|
1544
1544
|
}
|
|
1545
1545
|
|
|
1546
|
-
size_t n = buf.i - buf.b.begin();
|
|
1546
|
+
size_t n = static_cast<size_t>(buf.i - buf.b.begin());
|
|
1547
1547
|
for(; n < buf.b.size() && _writeBuffer.i < _writeBuffer.b.end(); ++_writeBuffer.i, ++n)
|
|
1548
1548
|
{
|
|
1549
1549
|
*_writeBuffer.i = buf.b[n] ^ _writeMask[n % 4];
|
|
@@ -1551,20 +1551,21 @@ IceInternal::WSTransceiver::preWrite(Buffer& buf)
|
|
|
1551
1551
|
_writePayloadLength = n;
|
|
1552
1552
|
if(_writeBuffer.i < _writeBuffer.b.end())
|
|
1553
1553
|
{
|
|
1554
|
-
_writeBuffer.b.resize(_writeBuffer.i - _writeBuffer.b.begin());
|
|
1554
|
+
_writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
|
|
1555
1555
|
}
|
|
1556
1556
|
_writeBuffer.i = _writeBuffer.b.begin();
|
|
1557
1557
|
}
|
|
1558
1558
|
else if(_writePayloadLength == 0)
|
|
1559
1559
|
{
|
|
1560
|
-
size_t n = min(_writeBuffer.b.end() - _writeBuffer.i,
|
|
1560
|
+
size_t n = min(static_cast<size_t>(_writeBuffer.b.end() - _writeBuffer.i),
|
|
1561
|
+
static_cast<size_t>(buf.b.end() - buf.i));
|
|
1561
1562
|
memcpy(_writeBuffer.i, buf.i, n);
|
|
1562
1563
|
_writeBuffer.i += n;
|
|
1563
1564
|
buf.i += n;
|
|
1564
1565
|
_writePayloadLength = n;
|
|
1565
1566
|
if(_writeBuffer.i < _writeBuffer.b.end())
|
|
1566
1567
|
{
|
|
1567
|
-
_writeBuffer.b.resize(_writeBuffer.i - _writeBuffer.b.begin());
|
|
1568
|
+
_writeBuffer.b.resize(static_cast<size_t>(_writeBuffer.i - _writeBuffer.b.begin()));
|
|
1568
1569
|
}
|
|
1569
1570
|
_writeBuffer.i = _writeBuffer.b.begin();
|
|
1570
1571
|
}
|
|
@@ -1670,7 +1671,7 @@ IceInternal::WSTransceiver::readBuffered(IceInternal::Buffer::Container::size_ty
|
|
|
1670
1671
|
}
|
|
1671
1672
|
else
|
|
1672
1673
|
{
|
|
1673
|
-
|
|
1674
|
+
size_t available = static_cast<size_t>(_readBuffer.i - _readI);
|
|
1674
1675
|
if(available < sz)
|
|
1675
1676
|
{
|
|
1676
1677
|
if(_readI != &_readBuffer.b[0])
|
|
@@ -1728,7 +1729,7 @@ IceInternal::WSTransceiver::prepareWriteHeader(Byte opCode, IceInternal::Buffer:
|
|
|
1728
1729
|
// Use an extra 64 bits to encode the payload length.
|
|
1729
1730
|
//
|
|
1730
1731
|
*_writeBuffer.i++ = static_cast<Byte>(127);
|
|
1731
|
-
ice_htonll(payloadLength, _writeBuffer.i);
|
|
1732
|
+
ice_htonll(static_cast<Long>(payloadLength), _writeBuffer.i);
|
|
1732
1733
|
_writeBuffer.i += 8;
|
|
1733
1734
|
}
|
|
1734
1735
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
3
|
//
|
|
4
4
|
//
|
|
5
|
-
// Ice version 3.7.
|
|
5
|
+
// Ice version 3.7.3
|
|
6
6
|
//
|
|
7
7
|
// <auto-generated>
|
|
8
8
|
//
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
# if ICE_INT_VERSION / 100 != 307
|
|
35
35
|
# error Ice version mismatch!
|
|
36
36
|
# endif
|
|
37
|
-
# if ICE_INT_VERSION % 100
|
|
37
|
+
# if ICE_INT_VERSION % 100 >= 50
|
|
38
38
|
# error Beta header file detected
|
|
39
39
|
# endif
|
|
40
|
-
# if ICE_INT_VERSION % 100 <
|
|
40
|
+
# if ICE_INT_VERSION % 100 < 3
|
|
41
41
|
# error Ice patch level mismatch!
|
|
42
42
|
# endif
|
|
43
43
|
#endif
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
3
|
//
|
|
4
4
|
//
|
|
5
|
-
// Ice version 3.7.
|
|
5
|
+
// Ice version 3.7.3
|
|
6
6
|
//
|
|
7
7
|
// <auto-generated>
|
|
8
8
|
//
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
# if ICE_INT_VERSION / 100 != 307
|
|
40
40
|
# error Ice version mismatch!
|
|
41
41
|
# endif
|
|
42
|
-
# if ICE_INT_VERSION % 100
|
|
42
|
+
# if ICE_INT_VERSION % 100 >= 50
|
|
43
43
|
# error Beta header file detected
|
|
44
44
|
# endif
|
|
45
|
-
# if ICE_INT_VERSION % 100 <
|
|
45
|
+
# if ICE_INT_VERSION % 100 < 3
|
|
46
46
|
# error Ice patch level mismatch!
|
|
47
47
|
# endif
|
|
48
48
|
#endif
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
3
|
//
|
|
4
4
|
//
|
|
5
|
-
// Ice version 3.7.
|
|
5
|
+
// Ice version 3.7.3
|
|
6
6
|
//
|
|
7
7
|
// <auto-generated>
|
|
8
8
|
//
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
# if ICE_INT_VERSION / 100 != 307
|
|
36
36
|
# error Ice version mismatch!
|
|
37
37
|
# endif
|
|
38
|
-
# if ICE_INT_VERSION % 100
|
|
38
|
+
# if ICE_INT_VERSION % 100 >= 50
|
|
39
39
|
# error Beta header file detected
|
|
40
40
|
# endif
|
|
41
|
-
# if ICE_INT_VERSION % 100 <
|
|
41
|
+
# if ICE_INT_VERSION % 100 < 3
|
|
42
42
|
# error Ice patch level mismatch!
|
|
43
43
|
# endif
|
|
44
44
|
#endif
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
3
|
//
|
|
4
4
|
//
|
|
5
|
-
// Ice version 3.7.
|
|
5
|
+
// Ice version 3.7.3
|
|
6
6
|
//
|
|
7
7
|
// <auto-generated>
|
|
8
8
|
//
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
# if ICE_INT_VERSION / 100 != 307
|
|
42
42
|
# error Ice version mismatch!
|
|
43
43
|
# endif
|
|
44
|
-
# if ICE_INT_VERSION % 100
|
|
44
|
+
# if ICE_INT_VERSION % 100 >= 50
|
|
45
45
|
# error Beta header file detected
|
|
46
46
|
# endif
|
|
47
|
-
# if ICE_INT_VERSION % 100 <
|
|
47
|
+
# if ICE_INT_VERSION % 100 < 3
|
|
48
48
|
# error Ice patch level mismatch!
|
|
49
49
|
# endif
|
|
50
50
|
#endif
|
|
@@ -106,9 +106,9 @@ private:
|
|
|
106
106
|
|
|
107
107
|
LookupPrxPtr _lookup;
|
|
108
108
|
vector<pair<LookupPrxPtr, LookupReplyPrxPtr> > _lookups;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
IceUtil::Time _timeout;
|
|
110
|
+
int _retryCount;
|
|
111
|
+
IceUtil::Time _retryDelay;
|
|
112
112
|
const IceUtil::TimerPtr _timer;
|
|
113
113
|
const int _traceLevel;
|
|
114
114
|
|
|
@@ -119,6 +119,7 @@ private:
|
|
|
119
119
|
Ice::LocatorPrxPtr _voidLocator;
|
|
120
120
|
|
|
121
121
|
IceUtil::Time _nextRetry;
|
|
122
|
+
bool _pending;
|
|
122
123
|
int _pendingRetryCount;
|
|
123
124
|
size_t _failureCount;
|
|
124
125
|
bool _warnOnce;
|
|
@@ -574,10 +575,24 @@ LocatorI::LocatorI(const string& name,
|
|
|
574
575
|
_warned(false),
|
|
575
576
|
_locator(lookup->ice_getCommunicator()->getDefaultLocator()),
|
|
576
577
|
_voidLocator(voidLocator),
|
|
578
|
+
_pending(false),
|
|
577
579
|
_pendingRetryCount(0),
|
|
578
580
|
_failureCount(0),
|
|
579
581
|
_warnOnce(true)
|
|
580
582
|
{
|
|
583
|
+
if(_timeout < IceUtil::Time::milliSeconds(0))
|
|
584
|
+
{
|
|
585
|
+
_timeout = IceUtil::Time::milliSeconds(300);
|
|
586
|
+
}
|
|
587
|
+
if(_retryCount < 0)
|
|
588
|
+
{
|
|
589
|
+
_retryCount = 0;
|
|
590
|
+
}
|
|
591
|
+
if(_retryDelay < IceUtil::Time::milliSeconds(0))
|
|
592
|
+
{
|
|
593
|
+
_retryDelay = IceUtil::Time::milliSeconds(0);
|
|
594
|
+
}
|
|
595
|
+
|
|
581
596
|
//
|
|
582
597
|
// Create one lookup proxy per endpoint from the given proxy. We want to send a multicast
|
|
583
598
|
// datagram on each endpoint.
|
|
@@ -669,7 +684,7 @@ LocatorI::getLocators(const string& instanceName, const IceUtil::Time& waitTime)
|
|
|
669
684
|
else
|
|
670
685
|
{
|
|
671
686
|
Lock sync(*this);
|
|
672
|
-
while(_locators.find(instanceName) == _locators.end() &&
|
|
687
|
+
while(_locators.find(instanceName) == _locators.end() && _pending)
|
|
673
688
|
{
|
|
674
689
|
timedWait(waitTime);
|
|
675
690
|
}
|
|
@@ -725,10 +740,11 @@ LocatorI::foundLocator(const Ice::LocatorPrxPtr& locator)
|
|
|
725
740
|
return;
|
|
726
741
|
}
|
|
727
742
|
|
|
728
|
-
if(
|
|
743
|
+
if(_pending) // No need to continue, we found a locator.
|
|
729
744
|
{
|
|
730
745
|
_timer->cancel(ICE_SHARED_FROM_THIS);
|
|
731
746
|
_pendingRetryCount = 0;
|
|
747
|
+
_pending = false;
|
|
732
748
|
}
|
|
733
749
|
|
|
734
750
|
if(_traceLevel > 0)
|
|
@@ -821,8 +837,9 @@ LocatorI::invoke(const Ice::LocatorPrxPtr& locator, const RequestPtr& request)
|
|
|
821
837
|
_pendingRequests.push_back(request);
|
|
822
838
|
}
|
|
823
839
|
|
|
824
|
-
if(
|
|
840
|
+
if(!_pending) // No request in progress
|
|
825
841
|
{
|
|
842
|
+
_pending = true;
|
|
826
843
|
_failureCount = 0;
|
|
827
844
|
_pendingRetryCount = _retryCount;
|
|
828
845
|
try
|
|
@@ -877,6 +894,7 @@ LocatorI::invoke(const Ice::LocatorPrxPtr& locator, const RequestPtr& request)
|
|
|
877
894
|
(*p)->invoke(_voidLocator);
|
|
878
895
|
}
|
|
879
896
|
_pendingRequests.clear();
|
|
897
|
+
_pending = false;
|
|
880
898
|
_pendingRetryCount = 0;
|
|
881
899
|
}
|
|
882
900
|
}
|
|
@@ -887,13 +905,14 @@ void
|
|
|
887
905
|
LocatorI::exception(const Ice::LocalException& ex)
|
|
888
906
|
{
|
|
889
907
|
Lock sync(*this);
|
|
890
|
-
if(++_failureCount == _lookups.size() &&
|
|
908
|
+
if(++_failureCount == _lookups.size() && _pending)
|
|
891
909
|
{
|
|
892
910
|
//
|
|
893
911
|
// All the lookup calls failed, cancel the timer and propagate the error to the requests.
|
|
894
912
|
//
|
|
895
913
|
_timer->cancel(ICE_SHARED_FROM_THIS);
|
|
896
914
|
_pendingRetryCount = 0;
|
|
915
|
+
_pending = false;
|
|
897
916
|
|
|
898
917
|
if(_warnOnce)
|
|
899
918
|
{
|
|
@@ -932,8 +951,15 @@ void
|
|
|
932
951
|
LocatorI::runTimerTask()
|
|
933
952
|
{
|
|
934
953
|
Lock sync(*this);
|
|
935
|
-
if(
|
|
954
|
+
if(!_pending)
|
|
936
955
|
{
|
|
956
|
+
assert(_pendingRequests.empty());
|
|
957
|
+
return; // The request failed
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
if(_pendingRetryCount > 0)
|
|
961
|
+
{
|
|
962
|
+
--_pendingRetryCount;
|
|
937
963
|
try
|
|
938
964
|
{
|
|
939
965
|
if(_traceLevel > 1)
|
|
@@ -976,6 +1002,9 @@ LocatorI::runTimerTask()
|
|
|
976
1002
|
_pendingRetryCount = 0;
|
|
977
1003
|
}
|
|
978
1004
|
|
|
1005
|
+
assert(_pendingRetryCount == 0);
|
|
1006
|
+
_pending = false;
|
|
1007
|
+
|
|
979
1008
|
if(_traceLevel > 0)
|
|
980
1009
|
{
|
|
981
1010
|
Ice::Trace out(_lookup->ice_getCommunicator()->getLogger(), "Lookup");
|