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.
Files changed (283) hide show
  1. checksums.yaml +5 -5
  2. data/ext/Config.h +4 -0
  3. data/ext/Operation.cpp +5 -5
  4. data/ext/Properties.cpp +1 -1
  5. data/ext/Proxy.cpp +16 -2
  6. data/ext/Types.cpp +45 -40
  7. data/ext/Util.cpp +1 -1
  8. data/ext/Util.h +10 -8
  9. data/ext/ice/cpp/include/Ice/Config.h +4 -0
  10. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +1 -1
  11. data/ext/ice/cpp/include/Ice/IconvStringConverter.h +4 -3
  12. data/ext/ice/cpp/include/Ice/InputStream.h +4 -4
  13. data/ext/ice/cpp/include/Ice/Optional.h +11 -0
  14. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +1 -1
  15. data/ext/ice/cpp/include/Ice/OutputStream.h +5 -5
  16. data/ext/ice/cpp/include/Ice/Proxy.h +17 -5
  17. data/ext/ice/cpp/include/Ice/StreamHelpers.h +1 -1
  18. data/ext/ice/cpp/include/Ice/Value.h +1 -1
  19. data/ext/ice/cpp/include/IceUtil/Atomic.h +1 -1
  20. data/ext/ice/cpp/include/IceUtil/Config.h +16 -6
  21. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +4 -4
  22. data/ext/ice/cpp/include/IceUtil/Optional.h +8 -0
  23. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +17 -14
  24. data/ext/ice/cpp/include/IceUtil/Random.h +1 -1
  25. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +2 -2
  26. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +6 -0
  27. data/ext/ice/cpp/include/IceUtil/StringConverter.h +1 -1
  28. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +3 -3
  29. data/ext/ice/cpp/include/generated/Ice/Communicator.h +3 -3
  30. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +3 -3
  31. data/ext/ice/cpp/include/generated/Ice/Connection.h +33 -36
  32. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +3 -3
  33. data/ext/ice/cpp/include/generated/Ice/Current.h +20 -21
  34. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +24 -24
  35. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +3 -3
  36. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +3 -3
  37. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +3 -3
  38. data/ext/ice/cpp/include/generated/Ice/Identity.h +4 -5
  39. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +3 -3
  40. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +3 -3
  41. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +15 -15
  42. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +3 -3
  43. data/ext/ice/cpp/include/generated/Ice/LocalException.h +27 -93
  44. data/ext/ice/cpp/include/generated/Ice/Locator.h +27 -32
  45. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +3 -3
  46. data/ext/ice/cpp/include/generated/Ice/Logger.h +3 -3
  47. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +3 -3
  48. data/ext/ice/cpp/include/generated/Ice/Metrics.h +75 -79
  49. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +3 -3
  50. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +3 -3
  51. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +3 -3
  52. data/ext/ice/cpp/include/generated/Ice/Plugin.h +3 -3
  53. data/ext/ice/cpp/include/generated/Ice/PluginF.h +3 -3
  54. data/ext/ice/cpp/include/generated/Ice/Process.h +3 -3
  55. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +3 -3
  56. data/ext/ice/cpp/include/generated/Ice/Properties.h +3 -3
  57. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +9 -9
  58. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +3 -3
  59. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +9 -11
  60. data/ext/ice/cpp/include/generated/Ice/Router.h +22 -22
  61. data/ext/ice/cpp/include/generated/Ice/RouterF.h +3 -3
  62. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +3 -3
  63. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +3 -3
  64. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +3 -3
  65. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +3 -3
  66. data/ext/ice/cpp/include/generated/Ice/Version.h +15 -17
  67. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +3 -3
  68. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +3 -3
  69. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +3 -3
  70. data/ext/ice/cpp/src/Ice/ArgVector.cpp +3 -3
  71. data/ext/ice/cpp/src/Ice/Base64.cpp +11 -12
  72. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +1 -1
  73. data/ext/ice/cpp/src/Ice/Buffer.cpp +2 -2
  74. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +3 -3
  75. data/ext/ice/cpp/src/Ice/Communicator.cpp +3 -3
  76. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +3 -3
  77. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +19 -0
  78. data/ext/ice/cpp/src/Ice/CommunicatorI.h +5 -0
  79. data/ext/ice/cpp/src/Ice/Connection.cpp +3 -3
  80. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +3 -3
  81. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +31 -16
  82. data/ext/ice/cpp/src/Ice/Current.cpp +3 -3
  83. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +13 -0
  84. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +6 -5
  85. data/ext/ice/cpp/src/Ice/Endpoint.cpp +3 -3
  86. data/ext/ice/cpp/src/Ice/EndpointF.cpp +3 -3
  87. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +3 -3
  88. data/ext/ice/cpp/src/Ice/Exception.cpp +5 -5
  89. data/ext/ice/cpp/src/Ice/FacetMap.cpp +3 -3
  90. data/ext/ice/cpp/src/Ice/HashUtil.h +1 -1
  91. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +12 -1
  92. data/ext/ice/cpp/src/Ice/Identity.cpp +3 -3
  93. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +3 -3
  94. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +3 -3
  95. data/ext/ice/cpp/src/Ice/Incoming.cpp +2 -0
  96. data/ext/ice/cpp/src/Ice/Initialize.cpp +4 -3
  97. data/ext/ice/cpp/src/Ice/InputStream.cpp +19 -19
  98. data/ext/ice/cpp/src/Ice/Instance.cpp +28 -8
  99. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +3 -3
  100. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +3 -3
  101. data/ext/ice/cpp/src/Ice/LocalException.cpp +3 -3
  102. data/ext/ice/cpp/src/Ice/Locator.cpp +7 -7
  103. data/ext/ice/cpp/src/Ice/LocatorF.cpp +3 -3
  104. data/ext/ice/cpp/src/Ice/Logger.cpp +3 -3
  105. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +1 -7
  106. data/ext/ice/cpp/src/Ice/LoggerF.cpp +3 -3
  107. data/ext/ice/cpp/src/Ice/LoggerI.cpp +6 -0
  108. data/ext/ice/cpp/src/Ice/Metrics.cpp +5 -5
  109. data/ext/ice/cpp/src/Ice/Network.cpp +23 -22
  110. data/ext/ice/cpp/src/Ice/Network.h +1 -1
  111. data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +57 -0
  112. data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +40 -0
  113. data/ext/ice/cpp/src/Ice/Object.cpp +9 -7
  114. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +3 -3
  115. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +3 -3
  116. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +13 -1
  117. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +4 -0
  118. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +3 -3
  119. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +1 -1
  120. data/ext/ice/cpp/src/Ice/OutputStream.cpp +24 -24
  121. data/ext/ice/cpp/src/Ice/Plugin.cpp +3 -3
  122. data/ext/ice/cpp/src/Ice/PluginF.cpp +3 -3
  123. data/ext/ice/cpp/src/Ice/Process.cpp +3 -3
  124. data/ext/ice/cpp/src/Ice/ProcessF.cpp +3 -3
  125. data/ext/ice/cpp/src/Ice/Properties.cpp +3 -3
  126. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +4 -4
  127. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +3 -3
  128. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +2 -1
  129. data/ext/ice/cpp/src/Ice/PropertyNames.h +1 -1
  130. data/ext/ice/cpp/src/Ice/Proxy.cpp +6 -0
  131. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +1 -1
  132. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +1 -1
  133. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +3 -2
  134. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +3 -3
  135. data/ext/ice/cpp/src/Ice/Router.cpp +6 -6
  136. data/ext/ice/cpp/src/Ice/RouterF.cpp +3 -3
  137. data/ext/ice/cpp/src/Ice/SHA1.cpp +2 -2
  138. data/ext/ice/cpp/src/Ice/Selector.cpp +18 -13
  139. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +3 -3
  140. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +3 -3
  141. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +3 -3
  142. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +6 -6
  143. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +6 -0
  144. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +5 -0
  145. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +5 -0
  146. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +5 -0
  147. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +63 -0
  148. data/ext/ice/cpp/src/Ice/ThreadPool.h +10 -2
  149. data/ext/ice/cpp/src/Ice/Timer.cpp +10 -0
  150. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +11 -1
  151. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +10 -2
  152. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +3 -3
  153. data/ext/ice/cpp/src/Ice/Version.cpp +3 -3
  154. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +16 -15
  155. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +3 -3
  156. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +3 -3
  157. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +3 -3
  158. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +3 -3
  159. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +37 -8
  160. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +3 -3
  161. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +3 -3
  162. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +3 -3
  163. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +3 -3
  164. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +4 -16
  165. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -1
  166. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +40 -3
  167. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -7
  168. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +0 -2
  169. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +18 -6
  170. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +19 -7
  171. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +2 -0
  172. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +32 -21
  173. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +21 -6
  174. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +19 -16
  175. data/ext/ice/cpp/src/IceSSL/Util.cpp +11 -5
  176. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +1 -1
  177. data/ext/ice/cpp/src/IceUtil/Options.cpp +3 -3
  178. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +40 -10
  179. data/ext/ice/cpp/src/IceUtil/Random.cpp +2 -2
  180. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +5 -5
  181. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +3 -3
  182. data/ext/ice/cpp/src/IceUtil/Time.cpp +3 -3
  183. data/ext/ice/cpp/src/IceUtil/UUID.cpp +5 -5
  184. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +4 -4
  185. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +13 -9
  186. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +1 -1
  187. data/ext/ice/cpp/src/Slice/Grammar.cpp +8 -0
  188. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +1 -2
  189. data/ext/ice/cpp/src/Slice/MD5I.cpp +8 -0
  190. data/ext/ice/cpp/src/Slice/Parser.cpp +60 -112
  191. data/ext/ice/cpp/src/Slice/Parser.h +27 -1
  192. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +2 -1
  193. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +10 -10
  194. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +1 -1
  195. data/ext/ice/cpp/src/Slice/Scanner.cpp +8 -0
  196. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +11 -6
  197. data/ext/ice/mcpp/Makefile +2 -5
  198. data/ice.gemspec +1 -1
  199. data/lib/Glacier2/Metrics.rb +1 -1
  200. data/lib/Glacier2/PermissionsVerifier.rb +1 -1
  201. data/lib/Glacier2/PermissionsVerifierF.rb +1 -1
  202. data/lib/Glacier2/Router.rb +1 -1
  203. data/lib/Glacier2/RouterF.rb +1 -1
  204. data/lib/Glacier2/SSLInfo.rb +1 -1
  205. data/lib/Glacier2/Session.rb +1 -1
  206. data/lib/Ice/BuiltinSequences.rb +1 -1
  207. data/lib/Ice/Communicator.rb +1 -1
  208. data/lib/Ice/CommunicatorF.rb +1 -1
  209. data/lib/Ice/Connection.rb +1 -1
  210. data/lib/Ice/ConnectionF.rb +1 -1
  211. data/lib/Ice/Current.rb +1 -1
  212. data/lib/Ice/Endpoint.rb +1 -1
  213. data/lib/Ice/EndpointF.rb +1 -1
  214. data/lib/Ice/EndpointTypes.rb +1 -1
  215. data/lib/Ice/FacetMap.rb +1 -1
  216. data/lib/Ice/Identity.rb +1 -1
  217. data/lib/Ice/ImplicitContext.rb +1 -1
  218. data/lib/Ice/ImplicitContextF.rb +1 -1
  219. data/lib/Ice/Instrumentation.rb +1 -1
  220. data/lib/Ice/InstrumentationF.rb +1 -1
  221. data/lib/Ice/LocalException.rb +1 -1
  222. data/lib/Ice/Locator.rb +1 -1
  223. data/lib/Ice/LocatorF.rb +1 -1
  224. data/lib/Ice/Logger.rb +1 -1
  225. data/lib/Ice/LoggerF.rb +1 -1
  226. data/lib/Ice/Metrics.rb +1 -1
  227. data/lib/Ice/ObjectAdapter.rb +1 -1
  228. data/lib/Ice/ObjectAdapterF.rb +1 -1
  229. data/lib/Ice/ObjectFactory.rb +1 -1
  230. data/lib/Ice/Plugin.rb +1 -1
  231. data/lib/Ice/PluginF.rb +1 -1
  232. data/lib/Ice/Process.rb +1 -1
  233. data/lib/Ice/ProcessF.rb +1 -1
  234. data/lib/Ice/Properties.rb +1 -1
  235. data/lib/Ice/PropertiesAdmin.rb +1 -1
  236. data/lib/Ice/PropertiesF.rb +1 -1
  237. data/lib/Ice/RemoteLogger.rb +1 -1
  238. data/lib/Ice/Router.rb +1 -1
  239. data/lib/Ice/RouterF.rb +1 -1
  240. data/lib/Ice/ServantLocator.rb +1 -1
  241. data/lib/Ice/ServantLocatorF.rb +1 -1
  242. data/lib/Ice/SliceChecksumDict.rb +1 -1
  243. data/lib/Ice/ValueFactory.rb +1 -1
  244. data/lib/Ice/Version.rb +1 -1
  245. data/lib/IceBox/IceBox.rb +1 -1
  246. data/lib/IceGrid/Admin.rb +1 -1
  247. data/lib/IceGrid/Descriptor.rb +1 -1
  248. data/lib/IceGrid/Exception.rb +1 -1
  249. data/lib/IceGrid/FileParser.rb +1 -1
  250. data/lib/IceGrid/PluginFacade.rb +1 -1
  251. data/lib/IceGrid/Registry.rb +1 -1
  252. data/lib/IceGrid/Session.rb +1 -1
  253. data/lib/IceGrid/UserAccountMapper.rb +1 -1
  254. data/lib/IcePatch2/FileInfo.rb +1 -1
  255. data/lib/IcePatch2/FileServer.rb +1 -1
  256. data/lib/IceStorm/IceStorm.rb +1 -1
  257. data/lib/IceStorm/Metrics.rb +1 -1
  258. data/slice/Glacier2/Metrics.ice +1 -1
  259. data/slice/Ice/Communicator.ice +57 -25
  260. data/slice/Ice/Connection.ice +14 -14
  261. data/slice/Ice/Current.ice +1 -1
  262. data/slice/Ice/Endpoint.ice +6 -6
  263. data/slice/Ice/EndpointF.ice +1 -1
  264. data/slice/Ice/FacetMap.ice +1 -1
  265. data/slice/Ice/ImplicitContext.ice +6 -6
  266. data/slice/Ice/Instrumentation.ice +6 -6
  267. data/slice/Ice/Logger.ice +6 -6
  268. data/slice/Ice/Metrics.ice +12 -9
  269. data/slice/Ice/ObjectAdapter.ice +43 -31
  270. data/slice/Ice/ObjectFactory.ice +1 -1
  271. data/slice/Ice/Plugin.ice +2 -2
  272. data/slice/Ice/Properties.ice +10 -10
  273. data/slice/Ice/ServantLocator.ice +4 -2
  274. data/slice/Ice/ValueFactory.ice +3 -3
  275. data/slice/IceBT/EndpointInfo.ice +1 -1
  276. data/slice/IceGrid/PluginFacade.ice +4 -4
  277. data/slice/IceIAP/ConnectionInfo.ice +1 -1
  278. data/slice/IceIAP/EndpointInfo.ice +1 -1
  279. data/slice/IceSSL/ConnectionInfo.ice +3 -2
  280. data/slice/IceSSL/ConnectionInfoF.ice +1 -1
  281. data/slice/IceSSL/EndpointInfo.ice +1 -1
  282. data/slice/IceStorm/Metrics.ice +1 -1
  283. 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 ICE_CPP11_MAPPING
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 " << _mcastInterface;
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
- const int packetSize = min(_maxPacketSize, _rcvSize - _udpOverhead);
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.2
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 > 50
37
+ # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 2
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.2
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 > 50
37
+ # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 2
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, buf.b.end() - buf.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
- IceInternal::Buffer::Container::size_type available = _readBuffer.i - _readI;
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.2
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 > 50
37
+ # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 2
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.2
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 > 50
42
+ # if ICE_INT_VERSION % 100 >= 50
43
43
  # error Beta header file detected
44
44
  # endif
45
- # if ICE_INT_VERSION % 100 < 2
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.2
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 > 50
38
+ # if ICE_INT_VERSION % 100 >= 50
39
39
  # error Beta header file detected
40
40
  # endif
41
- # if ICE_INT_VERSION % 100 < 2
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.2
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 > 50
44
+ # if ICE_INT_VERSION % 100 >= 50
45
45
  # error Beta header file detected
46
46
  # endif
47
- # if ICE_INT_VERSION % 100 < 2
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
- const IceUtil::Time _timeout;
110
- const int _retryCount;
111
- const IceUtil::Time _retryDelay;
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() && _pendingRetryCount > 0)
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(_pendingRetryCount > 0) // No need to retry, we found a locator.
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(_pendingRetryCount == 0) // No request in progress
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() && _pendingRetryCount > 0)
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(--_pendingRetryCount > 0)
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");