zeroc-ice 3.7.11 → 3.8.1

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 (895) hide show
  1. checksums.yaml +4 -4
  2. data/dist/IceRuby/Communicator.cpp +159 -376
  3. data/dist/IceRuby/Communicator.h +8 -9
  4. data/dist/IceRuby/Config.h +23 -89
  5. data/dist/IceRuby/Connection.cpp +111 -219
  6. data/dist/IceRuby/Connection.h +8 -12
  7. data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
  8. data/dist/IceRuby/DefaultSliceLoader.h +25 -0
  9. data/dist/IceRuby/Endpoint.cpp +63 -65
  10. data/dist/IceRuby/Endpoint.h +7 -11
  11. data/dist/IceRuby/ImplicitContext.cpp +26 -31
  12. data/dist/IceRuby/ImplicitContext.h +6 -10
  13. data/dist/IceRuby/Init.cpp +27 -40
  14. data/dist/IceRuby/Logger.cpp +23 -28
  15. data/dist/IceRuby/Logger.h +8 -12
  16. data/dist/IceRuby/Operation.cpp +177 -219
  17. data/dist/IceRuby/Operation.h +15 -18
  18. data/dist/IceRuby/Properties.cpp +133 -89
  19. data/dist/IceRuby/Properties.h +6 -10
  20. data/dist/IceRuby/Proxy.cpp +179 -649
  21. data/dist/IceRuby/Proxy.h +11 -12
  22. data/dist/IceRuby/RubySliceLoader.cpp +39 -0
  23. data/dist/IceRuby/RubySliceLoader.h +27 -0
  24. data/dist/IceRuby/Slice.cpp +88 -94
  25. data/dist/IceRuby/Slice.h +3 -7
  26. data/dist/IceRuby/Types.cpp +987 -1190
  27. data/dist/IceRuby/Types.h +390 -461
  28. data/dist/IceRuby/Util.cpp +214 -473
  29. data/dist/IceRuby/Util.h +378 -479
  30. data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
  31. data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
  32. data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +4 -10
  33. data/dist/ice/cpp/include/Ice/Buffer.h +116 -111
  34. data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
  35. data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
  36. data/dist/ice/cpp/include/Ice/Config.h +46 -62
  37. data/dist/ice/cpp/include/Ice/Connection.h +410 -0
  38. data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
  39. data/dist/ice/cpp/include/Ice/ConnectionIF.h +6 -28
  40. data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
  41. data/dist/ice/cpp/include/Ice/Current.h +60 -0
  42. data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
  43. data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
  44. data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
  45. data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
  46. data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
  47. data/dist/ice/cpp/include/Ice/Exception.h +46 -151
  48. data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
  49. data/dist/ice/cpp/include/Ice/Format.h +11 -27
  50. data/dist/ice/cpp/include/Ice/Ice.h +53 -48
  51. data/dist/ice/cpp/include/Ice/IconvStringConverter.h +165 -326
  52. data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
  53. data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
  54. data/dist/ice/cpp/include/Ice/Initialize.h +113 -927
  55. data/dist/ice/cpp/include/Ice/InputStream.h +748 -1320
  56. data/dist/ice/cpp/include/Ice/InstanceF.h +4 -10
  57. data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
  58. data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
  59. data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
  60. data/dist/ice/cpp/include/Ice/Logger.h +62 -0
  61. data/dist/ice/cpp/include/Ice/LoggerUtil.h +124 -147
  62. data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
  63. data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +41 -71
  64. data/dist/ice/cpp/include/Ice/Object.h +151 -490
  65. data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
  66. data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
  67. data/dist/ice/cpp/include/Ice/ObjectF.h +5 -19
  68. data/dist/ice/cpp/include/Ice/ObserverHelper.h +115 -132
  69. data/dist/ice/cpp/include/Ice/OutgoingAsync.h +392 -748
  70. data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
  71. data/dist/ice/cpp/include/Ice/OutputStream.h +756 -956
  72. data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
  73. data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
  74. data/dist/ice/cpp/include/{IceUtil → Ice}/PopDisableWarnings.h +8 -6
  75. data/dist/ice/cpp/include/Ice/Properties.h +307 -0
  76. data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
  77. data/dist/ice/cpp/include/Ice/Proxy.h +665 -5094
  78. data/dist/ice/cpp/include/Ice/ProxyF.h +2 -44
  79. data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
  80. data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
  81. data/dist/ice/cpp/include/Ice/ReferenceF.h +4 -19
  82. data/dist/ice/cpp/include/Ice/RequestHandlerF.h +8 -18
  83. data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +276 -0
  84. data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
  85. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
  86. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
  87. data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
  88. data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
  89. data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +286 -0
  90. data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
  91. data/dist/ice/cpp/include/Ice/Service.h +182 -342
  92. data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
  93. data/dist/ice/cpp/include/Ice/SlicedData.h +113 -160
  94. data/dist/ice/cpp/include/Ice/SlicedDataF.h +17 -27
  95. data/dist/ice/cpp/include/Ice/StreamHelpers.h +532 -1070
  96. data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
  97. data/dist/ice/cpp/include/Ice/StringConverter.h +152 -63
  98. data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
  99. data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
  100. data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
  101. data/dist/ice/cpp/include/Ice/UUID.h +6 -9
  102. data/dist/ice/cpp/include/Ice/UserException.h +46 -0
  103. data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +4 -79
  104. data/dist/ice/cpp/include/Ice/Value.h +103 -115
  105. data/dist/ice/cpp/include/Ice/ValueF.h +6 -11
  106. data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +16 -1877
  107. data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +16 -1185
  108. data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +46 -146
  109. data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
  110. data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +49 -93
  111. data/dist/ice/cpp/include/generated/Ice/Identity.h +70 -226
  112. data/dist/ice/cpp/include/generated/Ice/Locator.h +494 -3850
  113. data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
  114. data/dist/ice/cpp/include/generated/Ice/Metrics.h +937 -4603
  115. data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
  116. data/dist/ice/cpp/include/generated/Ice/Process.h +197 -929
  117. data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +249 -1301
  118. data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
  119. data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +637 -2620
  120. data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
  121. data/dist/ice/cpp/include/generated/Ice/Router.h +429 -1783
  122. data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +18 -65
  123. data/dist/ice/cpp/include/generated/Ice/Version.h +73 -318
  124. data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
  125. data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
  126. data/dist/ice/cpp/src/Ice/Acceptor.h +28 -24
  127. data/dist/ice/cpp/src/Ice/AcceptorF.h +6 -14
  128. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
  129. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
  130. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
  131. data/dist/ice/cpp/src/Ice/ArgVector.cpp +17 -18
  132. data/dist/ice/cpp/src/Ice/ArgVector.h +19 -25
  133. data/dist/ice/cpp/src/Ice/Base64.cpp +66 -66
  134. data/dist/ice/cpp/src/Ice/Base64.h +14 -19
  135. data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +70 -121
  136. data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +37 -47
  137. data/dist/ice/cpp/src/Ice/Buffer.cpp +73 -41
  138. data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
  139. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +215 -249
  140. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +38 -60
  141. data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
  142. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
  143. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
  144. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +63 -184
  145. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +30 -51
  146. data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +4 -14
  147. data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
  148. data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +578 -792
  149. data/dist/ice/cpp/src/Ice/ConnectionFactory.h +200 -200
  150. data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +6 -19
  151. data/dist/ice/cpp/src/Ice/ConnectionI.cpp +1674 -1782
  152. data/dist/ice/cpp/src/Ice/ConnectionI.h +333 -293
  153. data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
  154. data/dist/ice/cpp/src/Ice/Connector.h +25 -19
  155. data/dist/ice/cpp/src/Ice/ConnectorF.h +4 -11
  156. data/dist/ice/cpp/src/{IceUtil → Ice}/ConsoleUtil.cpp +32 -53
  157. data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
  158. data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
  159. data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
  160. data/dist/ice/cpp/src/Ice/DLLMain.cpp +25 -35
  161. data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
  162. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +41 -119
  163. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +27 -41
  164. data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +4 -11
  165. data/dist/ice/cpp/src/Ice/Demangle.cpp +26 -0
  166. data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
  167. data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +44 -112
  168. data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
  169. data/dist/ice/cpp/src/Ice/Endian.h +40 -0
  170. data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +35 -59
  171. data/dist/ice/cpp/src/Ice/EndpointFactory.h +82 -103
  172. data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +4 -11
  173. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +54 -87
  174. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +28 -33
  175. data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +4 -11
  176. data/dist/ice/cpp/src/Ice/EndpointI.cpp +53 -23
  177. data/dist/ice/cpp/src/Ice/EndpointI.h +132 -200
  178. data/dist/ice/cpp/src/Ice/EndpointIF.h +11 -39
  179. data/dist/ice/cpp/src/Ice/EventHandler.cpp +3 -26
  180. data/dist/ice/cpp/src/Ice/EventHandler.h +46 -56
  181. data/dist/ice/cpp/src/Ice/EventHandlerF.h +4 -14
  182. data/dist/ice/cpp/src/Ice/Exception.cpp +3 -816
  183. data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
  184. data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
  185. data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
  186. data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
  187. data/dist/ice/cpp/src/Ice/HashUtil.h +46 -32
  188. data/dist/ice/cpp/src/Ice/HttpParser.cpp +431 -431
  189. data/dist/ice/cpp/src/Ice/HttpParser.h +95 -100
  190. data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +207 -324
  191. data/dist/ice/cpp/src/Ice/IPEndpointI.h +80 -126
  192. data/dist/ice/cpp/src/Ice/IPEndpointIF.h +6 -17
  193. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
  194. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
  195. data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
  196. data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
  197. data/dist/ice/cpp/src/Ice/Initialize.cpp +48 -542
  198. data/dist/ice/cpp/src/Ice/InputStream.cpp +848 -1385
  199. data/dist/ice/cpp/src/Ice/Instance.cpp +816 -827
  200. data/dist/ice/cpp/src/Ice/Instance.h +202 -212
  201. data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +526 -661
  202. data/dist/ice/cpp/src/Ice/InstrumentationI.h +171 -192
  203. data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
  204. data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
  205. data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +291 -329
  206. data/dist/ice/cpp/src/Ice/LocatorInfo.h +144 -157
  207. data/dist/ice/cpp/src/Ice/LocatorInfoF.h +8 -17
  208. data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +561 -743
  209. data/dist/ice/cpp/src/Ice/LoggerAdminI.h +18 -28
  210. data/dist/ice/cpp/src/Ice/LoggerI.cpp +66 -91
  211. data/dist/ice/cpp/src/Ice/LoggerI.h +36 -41
  212. data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
  213. data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
  214. data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +14 -38
  215. data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
  216. data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +194 -280
  217. data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
  218. data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
  219. data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
  220. data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
  221. data/dist/ice/cpp/src/Ice/Network.cpp +595 -917
  222. data/dist/ice/cpp/src/Ice/Network.h +189 -213
  223. data/dist/ice/cpp/src/Ice/NetworkF.h +2 -10
  224. data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +99 -104
  225. data/dist/ice/cpp/src/Ice/NetworkProxy.h +49 -54
  226. data/dist/ice/cpp/src/Ice/NetworkProxyF.h +4 -11
  227. data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +16 -18
  228. data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +22 -27
  229. data/dist/ice/cpp/src/Ice/Object.cpp +152 -338
  230. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +170 -113
  231. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +41 -41
  232. data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +4 -15
  233. data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +580 -727
  234. data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +149 -145
  235. data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +36 -17
  236. data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
  237. data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
  238. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +147 -187
  239. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +56 -64
  240. data/dist/ice/cpp/src/{IceUtil → Ice}/Options.cpp +187 -258
  241. data/dist/ice/cpp/src/Ice/Options.h +119 -0
  242. data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +516 -732
  243. data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
  244. data/dist/ice/cpp/src/Ice/OutputStream.cpp +610 -543
  245. data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
  246. data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
  247. data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +118 -277
  248. data/dist/ice/cpp/src/Ice/PluginManagerI.h +41 -48
  249. data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
  250. data/dist/ice/cpp/src/Ice/PropertyNames.cpp +519 -1341
  251. data/dist/ice/cpp/src/Ice/PropertyNames.h +49 -64
  252. data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
  253. data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
  254. data/dist/ice/cpp/src/Ice/Protocol.cpp +129 -94
  255. data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
  256. data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +117 -62
  257. data/dist/ice/cpp/src/Ice/ProtocolInstance.h +63 -82
  258. data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +4 -11
  259. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +10 -32
  260. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +25 -54
  261. data/dist/ice/cpp/src/Ice/Proxy.cpp +294 -1357
  262. data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
  263. data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
  264. data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
  265. data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
  266. data/dist/ice/cpp/src/Ice/Random.h +23 -0
  267. data/dist/ice/cpp/src/Ice/Reference.cpp +635 -1097
  268. data/dist/ice/cpp/src/Ice/Reference.h +314 -298
  269. data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +320 -378
  270. data/dist/ice/cpp/src/Ice/ReferenceFactory.h +48 -66
  271. data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +4 -9
  272. data/dist/ice/cpp/src/Ice/RequestHandler.cpp +15 -24
  273. data/dist/ice/cpp/src/Ice/RequestHandler.h +43 -68
  274. data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
  275. data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
  276. data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
  277. data/dist/ice/cpp/src/Ice/RetryQueue.cpp +51 -57
  278. data/dist/ice/cpp/src/Ice/RetryQueue.h +39 -46
  279. data/dist/ice/cpp/src/Ice/RetryQueueF.h +4 -9
  280. data/dist/ice/cpp/src/Ice/RouterInfo.cpp +97 -201
  281. data/dist/ice/cpp/src/Ice/RouterInfo.h +61 -118
  282. data/dist/ice/cpp/src/Ice/RouterInfoF.h +6 -14
  283. data/dist/ice/cpp/src/Ice/SHA1.cpp +86 -60
  284. data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
  285. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
  286. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
  287. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +521 -0
  288. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
  289. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
  290. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +646 -0
  291. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
  292. data/dist/ice/cpp/src/{IceSSL → Ice/SSL}/RFC2253.cpp +85 -88
  293. data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
  294. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
  295. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
  296. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
  297. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
  298. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
  299. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
  300. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
  301. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +69 -0
  302. data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
  303. data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
  304. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
  305. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
  306. data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
  307. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +673 -0
  308. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +118 -0
  309. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1449 -0
  310. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
  311. data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
  312. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1088 -0
  313. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
  314. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +825 -0
  315. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
  316. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
  317. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
  318. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
  319. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1048 -0
  320. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
  321. data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +233 -0
  322. data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
  323. data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
  324. data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
  325. data/dist/ice/cpp/src/Ice/Selector.cpp +341 -606
  326. data/dist/ice/cpp/src/Ice/Selector.h +167 -224
  327. data/dist/ice/cpp/src/Ice/ServantManager.cpp +195 -128
  328. data/dist/ice/cpp/src/Ice/ServantManager.h +52 -55
  329. data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
  330. data/dist/ice/cpp/src/Ice/Service.cpp +548 -641
  331. data/dist/ice/cpp/src/Ice/SharedContext.h +13 -26
  332. data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
  333. data/dist/ice/cpp/src/Ice/SlicedData.cpp +17 -96
  334. data/dist/ice/cpp/src/Ice/StreamSocket.cpp +104 -151
  335. data/dist/ice/cpp/src/Ice/StreamSocket.h +48 -60
  336. data/dist/ice/cpp/src/Ice/StringConverter.cpp +586 -0
  337. data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
  338. data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +41 -47
  339. data/dist/ice/cpp/src/Ice/SysLoggerI.h +24 -27
  340. data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +16 -17
  341. data/dist/ice/cpp/src/Ice/SystemdJournalI.h +19 -25
  342. data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
  343. data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +67 -88
  344. data/dist/ice/cpp/src/Ice/TcpAcceptor.h +34 -40
  345. data/dist/ice/cpp/src/Ice/TcpConnector.cpp +42 -41
  346. data/dist/ice/cpp/src/Ice/TcpConnector.h +26 -35
  347. data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +172 -146
  348. data/dist/ice/cpp/src/Ice/TcpEndpointI.h +76 -80
  349. data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +38 -26
  350. data/dist/ice/cpp/src/Ice/TcpTransceiver.h +40 -45
  351. data/dist/ice/cpp/src/Ice/ThreadPool.cpp +333 -515
  352. data/dist/ice/cpp/src/Ice/ThreadPool.h +202 -290
  353. data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
  354. data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
  355. data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
  356. data/dist/ice/cpp/src/Ice/Timer.cpp +73 -167
  357. data/dist/ice/cpp/src/Ice/Timer.h +212 -0
  358. data/dist/ice/cpp/src/Ice/TraceLevels.cpp +11 -29
  359. data/dist/ice/cpp/src/Ice/TraceLevels.h +22 -28
  360. data/dist/ice/cpp/src/Ice/TraceLevelsF.h +4 -11
  361. data/dist/ice/cpp/src/Ice/TraceUtil.cpp +136 -215
  362. data/dist/ice/cpp/src/Ice/TraceUtil.h +27 -16
  363. data/dist/ice/cpp/src/Ice/Transceiver.cpp +3 -7
  364. data/dist/ice/cpp/src/Ice/Transceiver.h +35 -32
  365. data/dist/ice/cpp/src/Ice/TransceiverF.h +10 -20
  366. data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
  367. data/dist/ice/cpp/src/Ice/UdpConnector.cpp +39 -39
  368. data/dist/ice/cpp/src/Ice/UdpConnector.h +27 -36
  369. data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +178 -213
  370. data/dist/ice/cpp/src/Ice/UdpEndpointI.h +82 -85
  371. data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +201 -221
  372. data/dist/ice/cpp/src/Ice/UdpTransceiver.h +68 -74
  373. data/dist/ice/cpp/{include/IceUtil → src/Ice}/UndefSysMacros.h +12 -12
  374. data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
  375. data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
  376. data/dist/ice/cpp/src/Ice/Value.cpp +107 -38
  377. data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +10 -15
  378. data/dist/ice/cpp/src/Ice/WSAcceptor.h +31 -37
  379. data/dist/ice/cpp/src/Ice/WSConnector.cpp +25 -40
  380. data/dist/ice/cpp/src/Ice/WSConnector.h +26 -33
  381. data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +164 -217
  382. data/dist/ice/cpp/src/Ice/WSEndpoint.h +72 -83
  383. data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +469 -458
  384. data/dist/ice/cpp/src/Ice/WSTransceiver.h +117 -123
  385. data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +20 -29
  386. data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
  387. data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +20 -31
  388. data/dist/ice/cpp/src/Ice/generated/Identity.cpp +24 -34
  389. data/dist/ice/cpp/src/Ice/generated/Locator.cpp +454 -1744
  390. data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
  391. data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +824 -1971
  392. data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
  393. data/dist/ice/cpp/src/Ice/generated/Process.cpp +190 -331
  394. data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +289 -449
  395. data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
  396. data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +547 -867
  397. data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
  398. data/dist/ice/cpp/src/Ice/generated/Router.cpp +406 -723
  399. data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +19 -29
  400. data/dist/ice/cpp/src/Ice/generated/Version.cpp +28 -31
  401. data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +76 -139
  402. data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +55 -96
  403. data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +190 -303
  404. data/dist/ice/cpp/src/IceDiscovery/LookupI.h +126 -185
  405. data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +56 -77
  406. data/dist/ice/cpp/src/IceDiscovery/PluginI.h +20 -25
  407. data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
  408. data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +14 -37
  409. data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +411 -649
  410. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
  411. data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
  412. data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
  413. data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
  414. data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
  415. data/dist/ice/cpp/src/Slice/FileTracker.cpp +25 -75
  416. data/dist/ice/cpp/src/Slice/FileTracker.h +35 -56
  417. data/dist/ice/cpp/src/Slice/Grammar.cpp +2711 -3382
  418. data/dist/ice/cpp/src/Slice/Grammar.h +95 -75
  419. data/dist/ice/cpp/src/Slice/GrammarUtil.h +117 -217
  420. data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +486 -0
  421. data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
  422. data/dist/ice/cpp/src/Slice/Parser.cpp +3068 -5223
  423. data/dist/ice/cpp/src/Slice/Parser.h +1086 -1065
  424. data/dist/ice/cpp/src/Slice/Preprocessor.cpp +97 -599
  425. data/dist/ice/cpp/src/Slice/Preprocessor.h +26 -42
  426. data/dist/ice/cpp/src/Slice/Scanner.cpp +1562 -924
  427. data/dist/ice/cpp/src/Slice/SliceUtil.cpp +517 -113
  428. data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +254 -269
  429. data/dist/ice/cpp/src/Slice/Util.h +126 -35
  430. data/dist/ice/cpp/src/slice2rb/Main.cpp +13 -15
  431. data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
  432. data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
  433. data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
  434. data/dist/ice/slice/Glacier2/Metrics.ice +34 -75
  435. data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +42 -98
  436. data/dist/ice/slice/Glacier2/Router.ice +80 -173
  437. data/dist/ice/slice/Glacier2/SSLInfo.ice +23 -40
  438. data/dist/ice/slice/Glacier2/Session.ice +120 -261
  439. data/dist/ice/slice/Ice/BuiltinSequences.ice +33 -38
  440. data/dist/ice/slice/Ice/Context.ice +24 -0
  441. data/dist/ice/slice/Ice/EndpointTypes.ice +35 -33
  442. data/dist/ice/slice/Ice/Identity.ice +24 -63
  443. data/dist/ice/slice/Ice/Locator.ice +61 -226
  444. data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
  445. data/dist/ice/slice/Ice/Metrics.ice +189 -424
  446. data/dist/ice/slice/Ice/OperationMode.ice +38 -0
  447. data/dist/ice/slice/Ice/Process.ice +16 -52
  448. data/dist/ice/slice/Ice/PropertiesAdmin.ice +25 -75
  449. data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
  450. data/dist/ice/slice/Ice/RemoteLogger.ice +113 -213
  451. data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
  452. data/dist/ice/slice/Ice/Router.ice +42 -91
  453. data/dist/ice/slice/Ice/SliceChecksumDict.ice +7 -25
  454. data/dist/ice/slice/Ice/Version.ice +31 -39
  455. data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
  456. data/dist/ice/slice/IceGrid/Admin.ice +942 -1918
  457. data/dist/ice/slice/IceGrid/Descriptor.ice +476 -1051
  458. data/dist/ice/slice/IceGrid/Exception.ice +86 -384
  459. data/dist/ice/slice/IceGrid/FileParser.ice +23 -59
  460. data/dist/ice/slice/IceGrid/Registry.ice +117 -256
  461. data/dist/ice/slice/IceGrid/Session.ice +46 -110
  462. data/dist/ice/slice/IceGrid/UserAccountMapper.ice +22 -57
  463. data/dist/ice/slice/IceStorm/IceStorm.ice +173 -401
  464. data/dist/ice/slice/IceStorm/Metrics.ice +28 -70
  465. data/dist/lib/Glacier2/Metrics.rb +16 -31
  466. data/dist/lib/Glacier2/PermissionsVerifier.rb +18 -50
  467. data/dist/lib/Glacier2/Router.rb +20 -42
  468. data/dist/lib/Glacier2/SSLInfo.rb +14 -22
  469. data/dist/lib/Glacier2/Session.rb +53 -113
  470. data/dist/lib/Glacier2.rb +6 -6
  471. data/dist/lib/Ice/BuiltinSequences.rb +14 -26
  472. data/dist/lib/Ice/CompressBatch.rb +50 -0
  473. data/dist/lib/Ice/Context.rb +12 -0
  474. data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
  475. data/dist/lib/Ice/EndpointTypes.rb +14 -55
  476. data/dist/lib/Ice/Exception.rb +20 -0
  477. data/dist/lib/Ice/Identity.rb +10 -26
  478. data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
  479. data/dist/lib/Ice/InitializationData.rb +12 -0
  480. data/dist/lib/Ice/LocalExceptions.rb +168 -0
  481. data/dist/lib/Ice/Locator.rb +21 -134
  482. data/dist/lib/Ice/LocatorRegistry.rb +73 -0
  483. data/dist/lib/Ice/Metrics.rb +85 -132
  484. data/dist/lib/Ice/OperationMode.rb +58 -0
  485. data/dist/lib/Ice/Process.rb +12 -31
  486. data/dist/lib/Ice/PropertiesAdmin.rb +12 -36
  487. data/dist/lib/Ice/PropertyDict.rb +12 -0
  488. data/dist/lib/Ice/Proxy.rb +85 -0
  489. data/dist/lib/Ice/ProxyFunctions.rb +69 -0
  490. data/dist/lib/Ice/RemoteLogger.rb +29 -60
  491. data/dist/lib/Ice/ReplyStatus.rb +65 -0
  492. data/dist/lib/Ice/Router.rb +19 -47
  493. data/dist/lib/Ice/SliceChecksumDict.rb +5 -17
  494. data/dist/lib/Ice/SliceUtil.rb +41 -0
  495. data/dist/lib/Ice/Struct.rb +11 -0
  496. data/dist/lib/Ice/ToStringMode.rb +50 -0
  497. data/dist/lib/Ice/Value.rb +93 -0
  498. data/dist/lib/Ice/Version.rb +12 -24
  499. data/dist/lib/Ice.rb +29 -665
  500. data/dist/lib/IceBox/ServiceManager.rb +104 -0
  501. data/dist/lib/IceBox.rb +2 -4
  502. data/dist/lib/IceGrid/Admin.rb +303 -291
  503. data/dist/lib/IceGrid/Descriptor.rb +147 -192
  504. data/dist/lib/IceGrid/Exception.rb +26 -257
  505. data/dist/lib/IceGrid/FileParser.rb +12 -36
  506. data/dist/lib/IceGrid/Registry.rb +35 -76
  507. data/dist/lib/IceGrid/Session.rb +19 -34
  508. data/dist/lib/IceGrid/UserAccountMapper.rb +11 -34
  509. data/dist/lib/IceGrid.rb +3 -3
  510. data/dist/lib/IceStorm/IceStorm.rb +51 -132
  511. data/dist/lib/IceStorm/Metrics.rb +19 -37
  512. data/dist/lib/IceStorm.rb +3 -5
  513. data/extconf.rb +6 -8
  514. data/ice.gemspec +3 -3
  515. data/scripts/slice2rb +1 -3
  516. metadata +206 -386
  517. data/dist/IceRuby/ValueFactoryManager.cpp +0 -445
  518. data/dist/IceRuby/ValueFactoryManager.h +0 -95
  519. data/dist/ice/cpp/include/Ice/Application.h +0 -326
  520. data/dist/ice/cpp/include/Ice/AsyncResult.h +0 -155
  521. data/dist/ice/cpp/include/Ice/AsyncResultF.h +0 -23
  522. data/dist/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
  523. data/dist/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
  524. data/dist/ice/cpp/include/Ice/Comparable.h +0 -205
  525. data/dist/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
  526. data/dist/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
  527. data/dist/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
  528. data/dist/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
  529. data/dist/ice/cpp/include/Ice/Dispatcher.h +0 -67
  530. data/dist/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
  531. data/dist/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
  532. data/dist/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
  533. data/dist/ice/cpp/include/Ice/FactoryTable.h +0 -73
  534. data/dist/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
  535. data/dist/ice/cpp/include/Ice/Functional.h +0 -140
  536. data/dist/ice/cpp/include/Ice/GCObject.h +0 -76
  537. data/dist/ice/cpp/include/Ice/Handle.h +0 -182
  538. data/dist/ice/cpp/include/Ice/Incoming.h +0 -225
  539. data/dist/ice/cpp/include/Ice/IncomingAsync.h +0 -186
  540. data/dist/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
  541. data/dist/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
  542. data/dist/ice/cpp/include/Ice/LocalObject.h +0 -35
  543. data/dist/ice/cpp/include/Ice/LocalObjectF.h +0 -21
  544. data/dist/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
  545. data/dist/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
  546. data/dist/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
  547. data/dist/ice/cpp/include/Ice/Optional.h +0 -1114
  548. data/dist/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
  549. data/dist/ice/cpp/include/Ice/Protocol.h +0 -274
  550. data/dist/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
  551. data/dist/ice/cpp/include/Ice/ProxyHandle.h +0 -318
  552. data/dist/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
  553. data/dist/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
  554. data/dist/ice/cpp/include/Ice/SHA1.h +0 -40
  555. data/dist/ice/cpp/include/Ice/ServantManagerF.h +0 -21
  556. data/dist/ice/cpp/include/Ice/SliceChecksums.h +0 -33
  557. data/dist/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
  558. data/dist/ice/cpp/include/Ice/UniquePtr.h +0 -95
  559. data/dist/ice/cpp/include/Ice/UniqueRef.h +0 -97
  560. data/dist/ice/cpp/include/IceSSL/Config.h +0 -21
  561. data/dist/ice/cpp/include/IceSSL/IceSSL.h +0 -24
  562. data/dist/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
  563. data/dist/ice/cpp/include/IceSSL/Plugin.h +0 -712
  564. data/dist/ice/cpp/include/IceSSL/SChannel.h +0 -72
  565. data/dist/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
  566. data/dist/ice/cpp/include/IceUtil/Atomic.h +0 -179
  567. data/dist/ice/cpp/include/IceUtil/Cond.h +0 -317
  568. data/dist/ice/cpp/include/IceUtil/Config.h +0 -392
  569. data/dist/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
  570. data/dist/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
  571. data/dist/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -96
  572. data/dist/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
  573. data/dist/ice/cpp/include/IceUtil/Exception.h +0 -394
  574. data/dist/ice/cpp/include/IceUtil/FileUtil.h +0 -140
  575. data/dist/ice/cpp/include/IceUtil/Functional.h +0 -389
  576. data/dist/ice/cpp/include/IceUtil/Handle.h +0 -261
  577. data/dist/ice/cpp/include/IceUtil/IceUtil.h +0 -40
  578. data/dist/ice/cpp/include/IceUtil/InputUtil.h +0 -42
  579. data/dist/ice/cpp/include/IceUtil/Iterator.h +0 -31
  580. data/dist/ice/cpp/include/IceUtil/Lock.h +0 -128
  581. data/dist/ice/cpp/include/IceUtil/Monitor.h +0 -243
  582. data/dist/ice/cpp/include/IceUtil/Mutex.h +0 -349
  583. data/dist/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
  584. data/dist/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
  585. data/dist/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
  586. data/dist/ice/cpp/include/IceUtil/Optional.h +0 -433
  587. data/dist/ice/cpp/include/IceUtil/Options.h +0 -135
  588. data/dist/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
  589. data/dist/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
  590. data/dist/ice/cpp/include/IceUtil/Random.h +0 -55
  591. data/dist/ice/cpp/include/IceUtil/RecMutex.h +0 -107
  592. data/dist/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
  593. data/dist/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
  594. data/dist/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
  595. data/dist/ice/cpp/include/IceUtil/Shared.h +0 -127
  596. data/dist/ice/cpp/include/IceUtil/StopWatch.h +0 -49
  597. data/dist/ice/cpp/include/IceUtil/StringConverter.h +0 -195
  598. data/dist/ice/cpp/include/IceUtil/StringUtil.h +0 -97
  599. data/dist/ice/cpp/include/IceUtil/Thread.h +0 -160
  600. data/dist/ice/cpp/include/IceUtil/ThreadException.h +0 -94
  601. data/dist/ice/cpp/include/IceUtil/Time.h +0 -205
  602. data/dist/ice/cpp/include/IceUtil/Timer.h +0 -153
  603. data/dist/ice/cpp/include/IceUtil/UUID.h +0 -21
  604. data/dist/ice/cpp/include/generated/Glacier2/Metrics.h +0 -475
  605. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifier.h +0 -1430
  606. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifierF.h +0 -147
  607. data/dist/ice/cpp/include/generated/Glacier2/Router.h +0 -3260
  608. data/dist/ice/cpp/include/generated/Glacier2/RouterF.h +0 -125
  609. data/dist/ice/cpp/include/generated/Glacier2/SSLInfo.h +0 -223
  610. data/dist/ice/cpp/include/generated/Glacier2/Session.h +0 -5894
  611. data/dist/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
  612. data/dist/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
  613. data/dist/ice/cpp/include/generated/Ice/Connection.h +0 -1703
  614. data/dist/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
  615. data/dist/ice/cpp/include/generated/Ice/Current.h +0 -322
  616. data/dist/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
  617. data/dist/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
  618. data/dist/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
  619. data/dist/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
  620. data/dist/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
  621. data/dist/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
  622. data/dist/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
  623. data/dist/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
  624. data/dist/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
  625. data/dist/ice/cpp/include/generated/Ice/Logger.h +0 -237
  626. data/dist/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
  627. data/dist/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
  628. data/dist/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
  629. data/dist/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
  630. data/dist/ice/cpp/include/generated/Ice/Plugin.h +0 -318
  631. data/dist/ice/cpp/include/generated/Ice/PluginF.h +0 -110
  632. data/dist/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
  633. data/dist/ice/cpp/include/generated/Ice/Properties.h +0 -452
  634. data/dist/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
  635. data/dist/ice/cpp/include/generated/Ice/RouterF.h +0 -125
  636. data/dist/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
  637. data/dist/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
  638. data/dist/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
  639. data/dist/ice/cpp/include/generated/IceBox/IceBox.h +0 -3269
  640. data/dist/ice/cpp/include/generated/IceGrid/Admin.h +0 -33773
  641. data/dist/ice/cpp/include/generated/IceGrid/Descriptor.h +0 -5254
  642. data/dist/ice/cpp/include/generated/IceGrid/Exception.h +0 -2834
  643. data/dist/ice/cpp/include/generated/IceGrid/FileParser.h +0 -824
  644. data/dist/ice/cpp/include/generated/IceGrid/PluginFacade.h +0 -635
  645. data/dist/ice/cpp/include/generated/IceGrid/Registry.h +0 -5089
  646. data/dist/ice/cpp/include/generated/IceGrid/Session.h +0 -2240
  647. data/dist/ice/cpp/include/generated/IceGrid/UserAccountMapper.h +0 -800
  648. data/dist/ice/cpp/include/generated/IcePatch2/FileInfo.h +0 -325
  649. data/dist/ice/cpp/include/generated/IcePatch2/FileServer.h +0 -2891
  650. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
  651. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
  652. data/dist/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
  653. data/dist/ice/cpp/include/generated/IceStorm/IceStorm.h +0 -6627
  654. data/dist/ice/cpp/include/generated/IceStorm/Metrics.h +0 -665
  655. data/dist/ice/cpp/src/Ice/ACM.cpp +0 -380
  656. data/dist/ice/cpp/src/Ice/ACM.h +0 -119
  657. data/dist/ice/cpp/src/Ice/ACMF.h +0 -30
  658. data/dist/ice/cpp/src/Ice/Acceptor.cpp +0 -16
  659. data/dist/ice/cpp/src/Ice/Application.cpp +0 -661
  660. data/dist/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
  661. data/dist/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
  662. data/dist/ice/cpp/src/Ice/CommunicatorI.h +0 -167
  663. data/dist/ice/cpp/src/Ice/Cond.cpp +0 -381
  664. data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
  665. data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
  666. data/dist/ice/cpp/src/Ice/Connector.cpp +0 -16
  667. data/dist/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
  668. data/dist/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
  669. data/dist/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
  670. data/dist/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
  671. data/dist/ice/cpp/src/Ice/GCObject.cpp +0 -442
  672. data/dist/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
  673. data/dist/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
  674. data/dist/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
  675. data/dist/ice/cpp/src/Ice/Incoming.cpp +0 -795
  676. data/dist/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
  677. data/dist/ice/cpp/src/Ice/IncomingRequest.h +0 -33
  678. data/dist/ice/cpp/src/Ice/LocalObject.cpp +0 -23
  679. data/dist/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
  680. data/dist/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
  681. data/dist/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
  682. data/dist/ice/cpp/src/Ice/PropertiesI.cpp +0 -739
  683. data/dist/ice/cpp/src/Ice/PropertiesI.h +0 -70
  684. data/dist/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
  685. data/dist/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
  686. data/dist/ice/cpp/src/Ice/ProxyFactory.h +0 -57
  687. data/dist/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
  688. data/dist/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
  689. data/dist/ice/cpp/src/Ice/ReplyStatus.h +0 -24
  690. data/dist/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
  691. data/dist/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
  692. data/dist/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
  693. data/dist/ice/cpp/src/Ice/ResponseHandler.h +0 -43
  694. data/dist/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
  695. data/dist/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
  696. data/dist/ice/cpp/src/Ice/StringUtil.h +0 -30
  697. data/dist/ice/cpp/src/Ice/Thread.cpp +0 -569
  698. data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
  699. data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
  700. data/dist/ice/cpp/src/Ice/VirtualShared.h +0 -38
  701. data/dist/ice/cpp/src/Ice/generated/Communicator.cpp +0 -79
  702. data/dist/ice/cpp/src/Ice/generated/CommunicatorF.cpp +0 -61
  703. data/dist/ice/cpp/src/Ice/generated/Connection.cpp +0 -155
  704. data/dist/ice/cpp/src/Ice/generated/ConnectionF.cpp +0 -61
  705. data/dist/ice/cpp/src/Ice/generated/Current.cpp +0 -62
  706. data/dist/ice/cpp/src/Ice/generated/Endpoint.cpp +0 -147
  707. data/dist/ice/cpp/src/Ice/generated/EndpointF.cpp +0 -61
  708. data/dist/ice/cpp/src/Ice/generated/FacetMap.cpp +0 -49
  709. data/dist/ice/cpp/src/Ice/generated/ImplicitContext.cpp +0 -75
  710. data/dist/ice/cpp/src/Ice/generated/ImplicitContextF.cpp +0 -61
  711. data/dist/ice/cpp/src/Ice/generated/Instrumentation.cpp +0 -188
  712. data/dist/ice/cpp/src/Ice/generated/InstrumentationF.cpp +0 -66
  713. data/dist/ice/cpp/src/Ice/generated/LocalException.cpp +0 -3262
  714. data/dist/ice/cpp/src/Ice/generated/LocatorF.cpp +0 -63
  715. data/dist/ice/cpp/src/Ice/generated/Logger.cpp +0 -73
  716. data/dist/ice/cpp/src/Ice/generated/LoggerF.cpp +0 -61
  717. data/dist/ice/cpp/src/Ice/generated/ObjectAdapter.cpp +0 -79
  718. data/dist/ice/cpp/src/Ice/generated/ObjectAdapterF.cpp +0 -61
  719. data/dist/ice/cpp/src/Ice/generated/ObjectFactory.cpp +0 -75
  720. data/dist/ice/cpp/src/Ice/generated/Plugin.cpp +0 -87
  721. data/dist/ice/cpp/src/Ice/generated/PluginF.cpp +0 -61
  722. data/dist/ice/cpp/src/Ice/generated/ProcessF.cpp +0 -63
  723. data/dist/ice/cpp/src/Ice/generated/Properties.cpp +0 -78
  724. data/dist/ice/cpp/src/Ice/generated/PropertiesF.cpp +0 -63
  725. data/dist/ice/cpp/src/Ice/generated/RouterF.cpp +0 -63
  726. data/dist/ice/cpp/src/Ice/generated/ServantLocator.cpp +0 -75
  727. data/dist/ice/cpp/src/Ice/generated/ServantLocatorF.cpp +0 -61
  728. data/dist/ice/cpp/src/Ice/generated/ValueFactory.cpp +0 -83
  729. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.cpp +0 -154
  730. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.h +0 -49
  731. data/dist/ice/cpp/src/Ice/ios/StreamConnector.cpp +0 -146
  732. data/dist/ice/cpp/src/Ice/ios/StreamConnector.h +0 -52
  733. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.cpp +0 -477
  734. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.h +0 -156
  735. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.cpp +0 -570
  736. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.h +0 -93
  737. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery/IceDiscovery.h +0 -1889
  738. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery.cpp +0 -915
  739. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
  740. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery.cpp +0 -730
  741. data/dist/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
  742. data/dist/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
  743. data/dist/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
  744. data/dist/ice/cpp/src/IceSSL/CertificateI.h +0 -64
  745. data/dist/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
  746. data/dist/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
  747. data/dist/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
  748. data/dist/ice/cpp/src/IceSSL/EndpointI.h +0 -100
  749. data/dist/ice/cpp/src/IceSSL/Instance.cpp +0 -28
  750. data/dist/ice/cpp/src/IceSSL/Instance.h +0 -37
  751. data/dist/ice/cpp/src/IceSSL/InstanceF.h +0 -33
  752. data/dist/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
  753. data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
  754. data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
  755. data/dist/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
  756. data/dist/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
  757. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
  758. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
  759. data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
  760. data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
  761. data/dist/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
  762. data/dist/ice/cpp/src/IceSSL/PluginI.h +0 -67
  763. data/dist/ice/cpp/src/IceSSL/RFC2253.h +0 -62
  764. data/dist/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
  765. data/dist/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
  766. data/dist/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
  767. data/dist/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
  768. data/dist/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
  769. data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
  770. data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
  771. data/dist/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
  772. data/dist/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
  773. data/dist/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
  774. data/dist/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
  775. data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
  776. data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
  777. data/dist/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
  778. data/dist/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
  779. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
  780. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
  781. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
  782. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
  783. data/dist/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
  784. data/dist/ice/cpp/src/IceSSL/TrustManager.h +0 -46
  785. data/dist/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
  786. data/dist/ice/cpp/src/IceSSL/Util.cpp +0 -192
  787. data/dist/ice/cpp/src/IceSSL/Util.h +0 -99
  788. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfo.cpp +0 -75
  789. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfoF.cpp +0 -61
  790. data/dist/ice/cpp/src/IceSSL/generated/EndpointInfo.cpp +0 -75
  791. data/dist/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
  792. data/dist/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
  793. data/dist/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
  794. data/dist/ice/cpp/src/IceUtil/FileUtil.cpp +0 -471
  795. data/dist/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
  796. data/dist/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
  797. data/dist/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
  798. data/dist/ice/cpp/src/IceUtil/Random.cpp +0 -180
  799. data/dist/ice/cpp/src/IceUtil/RecMutex.cpp +0 -238
  800. data/dist/ice/cpp/src/IceUtil/Shared.cpp +0 -71
  801. data/dist/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
  802. data/dist/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1135
  803. data/dist/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
  804. data/dist/ice/cpp/src/IceUtil/Time.cpp +0 -307
  805. data/dist/ice/cpp/src/IceUtil/UUID.cpp +0 -165
  806. data/dist/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
  807. data/dist/ice/cpp/src/IceUtil/Unicode.h +0 -43
  808. data/dist/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
  809. data/dist/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
  810. data/dist/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
  811. data/dist/ice/cpp/src/Slice/Checksum.cpp +0 -447
  812. data/dist/ice/cpp/src/Slice/Checksum.h +0 -21
  813. data/dist/ice/cpp/src/Slice/JavaUtil.cpp +0 -5183
  814. data/dist/ice/cpp/src/Slice/JavaUtil.h +0 -407
  815. data/dist/ice/cpp/src/Slice/MD5.cpp +0 -52
  816. data/dist/ice/cpp/src/Slice/MD5.h +0 -39
  817. data/dist/ice/cpp/src/Slice/MD5I.cpp +0 -393
  818. data/dist/ice/cpp/src/Slice/MD5I.h +0 -91
  819. data/dist/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
  820. data/dist/ice/cpp/src/Slice/PHPUtil.h +0 -36
  821. data/dist/ice/cpp/src/Slice/Python.cpp +0 -830
  822. data/dist/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
  823. data/dist/ice/cpp/src/Slice/PythonUtil.h +0 -70
  824. data/dist/ice/cpp/src/Slice/Ruby.cpp +0 -350
  825. data/dist/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
  826. data/dist/ice/cpp/src/Slice/RubyUtil.h +0 -49
  827. data/dist/ice/slice/Glacier2/PermissionsVerifierF.ice +0 -30
  828. data/dist/ice/slice/Glacier2/RouterF.ice +0 -29
  829. data/dist/ice/slice/Ice/Communicator.ice +0 -676
  830. data/dist/ice/slice/Ice/CommunicatorF.ice +0 -31
  831. data/dist/ice/slice/Ice/Connection.ice +0 -516
  832. data/dist/ice/slice/Ice/ConnectionF.ice +0 -33
  833. data/dist/ice/slice/Ice/Current.ice +0 -170
  834. data/dist/ice/slice/Ice/Endpoint.ice +0 -291
  835. data/dist/ice/slice/Ice/EndpointF.ice +0 -43
  836. data/dist/ice/slice/Ice/FacetMap.ice +0 -36
  837. data/dist/ice/slice/Ice/ImplicitContext.ice +0 -119
  838. data/dist/ice/slice/Ice/ImplicitContextF.ice +0 -30
  839. data/dist/ice/slice/Ice/Instrumentation.ice +0 -509
  840. data/dist/ice/slice/Ice/InstrumentationF.ice +0 -38
  841. data/dist/ice/slice/Ice/LocalException.ice +0 -1040
  842. data/dist/ice/slice/Ice/LocatorF.ice +0 -32
  843. data/dist/ice/slice/Ice/Logger.ice +0 -99
  844. data/dist/ice/slice/Ice/LoggerF.ice +0 -31
  845. data/dist/ice/slice/Ice/ObjectAdapter.ice +0 -710
  846. data/dist/ice/slice/Ice/ObjectAdapterF.ice +0 -31
  847. data/dist/ice/slice/Ice/ObjectFactory.ice +0 -71
  848. data/dist/ice/slice/Ice/Plugin.ice +0 -131
  849. data/dist/ice/slice/Ice/PluginF.ice +0 -36
  850. data/dist/ice/slice/Ice/ProcessF.ice +0 -31
  851. data/dist/ice/slice/Ice/Properties.ice +0 -244
  852. data/dist/ice/slice/Ice/PropertiesF.ice +0 -32
  853. data/dist/ice/slice/Ice/RouterF.ice +0 -31
  854. data/dist/ice/slice/Ice/ServantLocator.ice +0 -136
  855. data/dist/ice/slice/Ice/ServantLocatorF.ice +0 -31
  856. data/dist/ice/slice/Ice/ValueFactory.ice +0 -133
  857. data/dist/ice/slice/IceBox/IceBox.ice +0 -216
  858. data/dist/ice/slice/IceGrid/PluginFacade.ice +0 -329
  859. data/dist/ice/slice/IcePatch2/FileInfo.ice +0 -85
  860. data/dist/ice/slice/IcePatch2/FileServer.ice +0 -191
  861. data/dist/lib/Glacier2/PermissionsVerifierF.rb +0 -30
  862. data/dist/lib/Glacier2/RouterF.rb +0 -25
  863. data/dist/lib/Ice/Communicator.rb +0 -87
  864. data/dist/lib/Ice/CommunicatorF.rb +0 -24
  865. data/dist/lib/Ice/Connection.rb +0 -413
  866. data/dist/lib/Ice/ConnectionF.rb +0 -32
  867. data/dist/lib/Ice/Current.rb +0 -141
  868. data/dist/lib/Ice/Endpoint.rb +0 -187
  869. data/dist/lib/Ice/EndpointF.rb +0 -48
  870. data/dist/lib/Ice/FacetMap.rb +0 -24
  871. data/dist/lib/Ice/ImplicitContext.rb +0 -26
  872. data/dist/lib/Ice/ImplicitContextF.rb +0 -24
  873. data/dist/lib/Ice/Instrumentation.rb +0 -169
  874. data/dist/lib/Ice/InstrumentationF.rb +0 -31
  875. data/dist/lib/Ice/LocalException.rb +0 -1031
  876. data/dist/lib/Ice/LocatorF.rb +0 -30
  877. data/dist/lib/Ice/Logger.rb +0 -24
  878. data/dist/lib/Ice/LoggerF.rb +0 -24
  879. data/dist/lib/Ice/ObjectAdapter.rb +0 -29
  880. data/dist/lib/Ice/ObjectAdapterF.rb +0 -24
  881. data/dist/lib/Ice/ObjectFactory.rb +0 -24
  882. data/dist/lib/Ice/Plugin.rb +0 -30
  883. data/dist/lib/Ice/PluginF.rb +0 -28
  884. data/dist/lib/Ice/ProcessF.rb +0 -25
  885. data/dist/lib/Ice/Properties.rb +0 -25
  886. data/dist/lib/Ice/PropertiesF.rb +0 -29
  887. data/dist/lib/Ice/RouterF.rb +0 -25
  888. data/dist/lib/Ice/ServantLocator.rb +0 -26
  889. data/dist/lib/Ice/ServantLocatorF.rb +0 -24
  890. data/dist/lib/Ice/ValueFactory.rb +0 -28
  891. data/dist/lib/IceBox/IceBox.rb +0 -164
  892. data/dist/lib/IceGrid/PluginFacade.rb +0 -35
  893. data/dist/lib/IcePatch2/FileInfo.rb +0 -115
  894. data/dist/lib/IcePatch2/FileServer.rb +0 -123
  895. data/dist/lib/IcePatch2.rb +0 -5
@@ -1,36 +1,32 @@
1
- //
2
- // Copyright (c) ZeroC, Inc. All rights reserved.
3
- //
4
-
5
- #include <Ice/ConnectionFactory.h>
6
- #include <Ice/ConnectionI.h>
7
- #include <Ice/Instance.h>
8
- #include <Ice/LoggerUtil.h>
9
- #include <Ice/TraceLevels.h>
10
- #include <Ice/DefaultsAndOverrides.h>
11
- #include <Ice/Properties.h>
12
- #include <Ice/Transceiver.h>
13
- #include <Ice/Connector.h>
14
- #include <Ice/Acceptor.h>
15
- #include <Ice/ThreadPool.h>
16
- #include <Ice/ObjectAdapterI.h> // For getThreadPool().
17
- #include <Ice/Reference.h>
18
- #include <Ice/EndpointI.h>
19
- #include <Ice/RouterInfo.h>
20
- #include <Ice/LocalException.h>
21
- #include <Ice/Functional.h>
22
- #include <Ice/OutgoingAsync.h>
23
- #include <Ice/CommunicatorI.h>
24
- #include <IceUtil/Random.h>
1
+ // Copyright (c) ZeroC, Inc.
2
+
3
+ #include "ConnectionFactory.h"
4
+ #include "Acceptor.h"
5
+ #include "CommunicatorFlushBatchAsync.h"
6
+ #include "ConnectionI.h"
7
+ #include "Connector.h"
8
+ #include "DefaultsAndOverrides.h"
9
+ #include "EndpointI.h"
10
+ #include "Ice/Communicator.h"
11
+ #include "Ice/LocalExceptions.h"
12
+ #include "Ice/LoggerUtil.h"
13
+ #include "Ice/Properties.h"
14
+ #include "Instance.h"
15
+ #include "ObjectAdapterI.h"
16
+ #include "RouterInfo.h"
17
+ #include "ThreadPool.h"
18
+ #include "TraceLevels.h"
19
+ #include "Transceiver.h"
20
+
21
+ #include <algorithm>
22
+ #include <chrono>
25
23
  #include <iterator>
26
24
 
27
25
  #if TARGET_OS_IPHONE != 0
28
26
  namespace IceInternal
29
27
  {
30
-
31
- bool registerForBackgroundNotification(const IceInternal::IncomingConnectionFactoryPtr&);
32
- void unregisterForBackgroundNotification(const IceInternal::IncomingConnectionFactoryPtr&);
33
-
28
+ bool registerForBackgroundNotification(const IceInternal::IncomingConnectionFactoryPtr&);
29
+ void unregisterForBackgroundNotification(const IceInternal::IncomingConnectionFactoryPtr&);
34
30
  }
35
31
  #endif
36
32
 
@@ -39,201 +35,88 @@ using namespace Ice;
39
35
  using namespace Ice::Instrumentation;
40
36
  using namespace IceInternal;
41
37
 
42
- IceUtil::Shared* IceInternal::upCast(OutgoingConnectionFactory* p) { return p; }
43
-
44
- #ifndef ICE_CPP11_MAPPING
45
- IceUtil::Shared* IceInternal::upCast(IncomingConnectionFactory* p) { return p; }
46
- #endif
47
-
48
38
  namespace
49
39
  {
50
-
51
- #ifdef ICE_CPP11_COMPILER
52
- template <typename Map> void
53
- remove(Map& m, const typename Map::key_type& k, const typename Map::mapped_type& v)
54
- {
55
- auto pr = m.equal_range(k);
56
- assert(pr.first != pr.second);
57
- for(auto q = pr.first; q != pr.second; ++q)
58
- {
59
- if(q->second.get() == v.get())
60
- {
61
- m.erase(q);
62
- return;
63
- }
64
- }
65
- assert(false); // Nothing was removed which is an error.
66
- }
67
-
68
- template<typename Map, typename Predicate> typename Map::mapped_type
69
- find(const Map& m, const typename Map::key_type& k, Predicate predicate)
70
- {
71
- auto pr = m.equal_range(k);
72
- for(auto q = pr.first; q != pr.second; ++q)
73
- {
74
- if(predicate(q->second))
75
- {
76
- return q->second;
77
- }
78
- }
79
- return nullptr;
80
- }
81
-
82
- #else
83
- template <typename K, typename V> void
84
- remove(multimap<K, V>& m, K k, V v)
85
- {
86
- pair<typename multimap<K, V>::iterator, typename multimap<K, V>::iterator> pr = m.equal_range(k);
87
- assert(pr.first != pr.second);
88
- for(typename multimap<K, V>::iterator q = pr.first; q != pr.second; ++q)
89
- {
90
- if(q->second.get() == v.get())
91
- {
92
- m.erase(q);
93
- return;
94
- }
95
- }
96
- assert(false); // Nothing was removed which is an error.
97
- }
98
-
99
- template <typename K, typename V> ::IceInternal::Handle<V>
100
- find(const multimap<K,::IceInternal::Handle<V> >& m,
101
- K k,
102
- const ::IceUtilInternal::ConstMemFun<bool, V, ::IceInternal::Handle<V> >& predicate)
103
- {
104
- pair<typename multimap<K, ::IceInternal::Handle<V> >::const_iterator,
105
- typename multimap<K, ::IceInternal::Handle<V> >::const_iterator> pr = m.equal_range(k);
106
- for(typename multimap<K, ::IceInternal::Handle<V> >::const_iterator q = pr.first; q != pr.second; ++q)
40
+ template<typename Map> void remove(Map& m, const typename Map::key_type& k, const typename Map::mapped_type& v)
107
41
  {
108
- if(predicate(q->second))
42
+ auto pr = m.equal_range(k);
43
+ assert(pr.first != pr.second);
44
+ for (auto q = pr.first; q != pr.second; ++q)
109
45
  {
110
- return q->second;
46
+ if (q->second.get() == v.get())
47
+ {
48
+ m.erase(q);
49
+ return;
50
+ }
111
51
  }
52
+ assert(false); // Nothing was removed which is an error.
112
53
  }
113
- return IceInternal::Handle<V>();
114
- }
115
- #endif
116
54
 
117
- class StartAcceptor : public IceUtil::TimerTask
118
- #ifdef ICE_CPP11_MAPPING
119
- , public std::enable_shared_from_this<StartAcceptor>
120
- #endif
121
- {
122
- public:
123
-
124
- StartAcceptor(const IncomingConnectionFactoryPtr& factory, const InstancePtr& instance) :
125
- _factory(factory), _instance(instance)
55
+ template<typename Map, typename Predicate>
56
+ typename Map::mapped_type find(const Map& m, const typename Map::key_type& k, Predicate predicate)
126
57
  {
127
- }
128
-
129
- void
130
- runTimerTask()
131
- {
132
- try
133
- {
134
- _factory->startAcceptor();
135
- }
136
- catch(const Ice::Exception& ex)
58
+ auto pr = m.equal_range(k);
59
+ for (auto q = pr.first; q != pr.second; ++q)
137
60
  {
138
- Error out(_instance->initializationData().logger);
139
- out << "acceptor creation failed:\n" << ex << '\n' << _factory->toString();
140
- _instance->timer()->schedule(ICE_SHARED_FROM_THIS, IceUtil::Time::seconds(1));
61
+ if (predicate(q->second))
62
+ {
63
+ return q->second;
64
+ }
141
65
  }
66
+ return nullptr;
142
67
  }
143
-
144
- private:
145
-
146
- IncomingConnectionFactoryPtr _factory;
147
- InstancePtr _instance;
148
- };
149
-
150
- #if TARGET_OS_IPHONE != 0
151
- class FinishCall : public DispatchWorkItem
152
- {
153
- public:
154
-
155
- FinishCall(const IncomingConnectionFactoryPtr& factory) : _factory(factory)
156
- {
157
- }
158
-
159
- virtual void
160
- run()
161
- {
162
- _factory->finish();
163
- }
164
-
165
- private:
166
-
167
- const IncomingConnectionFactoryPtr _factory;
168
- };
169
- #endif
170
-
171
68
  }
172
69
 
173
70
  bool
174
71
  IceInternal::OutgoingConnectionFactory::ConnectorInfo::operator==(const ConnectorInfo& other) const
175
72
  {
176
- return connector == other.connector;
73
+ return targetEqualTo(connector, other.connector);
177
74
  }
178
75
 
179
76
  void
180
77
  IceInternal::OutgoingConnectionFactory::destroy()
181
78
  {
182
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
79
+ lock_guard lock(_mutex);
183
80
 
184
- if(_destroyed)
81
+ if (_destroyed)
185
82
  {
186
83
  return;
187
84
  }
188
85
 
189
- #ifdef ICE_CPP11_COMPILER
190
- for(const auto& p : _connections)
86
+ for (const auto& [_, connection] : _connections)
191
87
  {
192
- p.second->destroy(ConnectionI::CommunicatorDestroyed);
88
+ connection->destroy(ConnectionI::CommunicatorDestroyed);
193
89
  }
194
- #else
195
- for_each(_connections.begin(), _connections.end(),
196
- bind2nd(Ice::secondVoidMemFun1<const ConnectorPtr, ConnectionI, ConnectionI::DestructionReason>
197
- (&ConnectionI::destroy), ConnectionI::CommunicatorDestroyed));
198
- #endif
199
90
  _destroyed = true;
200
- _communicator = 0;
91
+ _communicator = nullptr;
201
92
 
202
- notifyAll();
93
+ _conditionVariable.notify_all();
203
94
  }
204
95
 
205
96
  void
206
97
  IceInternal::OutgoingConnectionFactory::updateConnectionObservers()
207
98
  {
208
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
209
- #ifdef ICE_CPP11_COMPILER
210
- for(const auto& p : _connections)
99
+ lock_guard lock(_mutex);
100
+ for (const auto& [_, connection] : _connections)
211
101
  {
212
- p.second->updateObserver();
102
+ connection->updateObserver();
213
103
  }
214
- #else
215
- for_each(_connections.begin(), _connections.end(),
216
- Ice::secondVoidMemFun<const ConnectorPtr, ConnectionI>(&ConnectionI::updateObserver));
217
- #endif
218
104
  }
219
105
 
220
106
  void
221
107
  IceInternal::OutgoingConnectionFactory::waitUntilFinished()
222
108
  {
223
- multimap<ConnectorPtr, ConnectionIPtr> connections;
109
+ multimap<ConnectorPtr, ConnectionIPtr, Ice::TargetCompare<ConnectorPtr, std::less>> connections;
224
110
 
225
111
  {
226
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
112
+ unique_lock lock(_mutex);
227
113
 
228
114
  //
229
115
  // First we wait until the factory is destroyed. We also wait
230
116
  // until there are no pending connections anymore. Only then
231
117
  // we can be sure the _connections contains all connections.
232
118
  //
233
- while(!_destroyed || !_pending.empty() || _pendingConnectCount > 0)
234
- {
235
- wait();
236
- }
119
+ _conditionVariable.wait(lock, [this] { return _destroyed && _pending.empty() && _pendingConnectCount == 0; });
237
120
 
238
121
  //
239
122
  // We want to wait until all connections are finished outside the
@@ -242,45 +125,26 @@ IceInternal::OutgoingConnectionFactory::waitUntilFinished()
242
125
  connections = _connections;
243
126
  }
244
127
 
245
- #ifdef ICE_CPP11_COMPILER
246
- for(const auto& p : _connections)
128
+ for (const auto& p : connections)
247
129
  {
248
130
  p.second->waitUntilFinished();
249
131
  }
250
- #else
251
- for_each(connections.begin(), connections.end(),
252
- Ice::secondVoidMemFun<const ConnectorPtr, ConnectionI>(&ConnectionI::waitUntilFinished));
253
- #endif
132
+
254
133
  {
255
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
256
- // Ensure all the connections are finished and reapable at this point.
257
- vector<Ice::ConnectionIPtr> cons;
258
- _monitor->swapReapedConnections(cons);
259
- assert(cons.size() == _connections.size());
260
- cons.clear();
134
+ lock_guard lock(_mutex);
261
135
  _connections.clear();
262
136
  _connectionsByEndpoint.clear();
263
137
  }
264
-
265
- //
266
- // Must be destroyed outside the synchronization since this might block waiting for
267
- // a timer task to complete.
268
- //
269
- _monitor->destroy();
270
138
  }
271
139
 
272
140
  void
273
- IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpts,
274
- bool hasMore,
275
- Ice::EndpointSelectionType selType,
276
- const CreateConnectionCallbackPtr& callback)
141
+ IceInternal::OutgoingConnectionFactory::createAsync(
142
+ vector<EndpointIPtr> endpoints,
143
+ bool hasMore,
144
+ function<void(Ice::ConnectionIPtr, bool)> response,
145
+ function<void(std::exception_ptr)> exception)
277
146
  {
278
- assert(!endpts.empty());
279
-
280
- //
281
- // Apply the overrides.
282
- //
283
- vector<EndpointIPtr> endpoints = applyOverrides(endpts);
147
+ assert(!endpoints.empty());
284
148
 
285
149
  //
286
150
  // Try to find a connection to one of the given endpoints.
@@ -289,23 +153,25 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
289
153
  {
290
154
  bool compress;
291
155
  Ice::ConnectionIPtr connection = findConnection(endpoints, compress);
292
- if(connection)
156
+ if (connection)
293
157
  {
294
- callback->setConnection(connection, compress);
158
+ response(std::move(connection), compress);
295
159
  return;
296
160
  }
297
161
  }
298
- catch(const Ice::LocalException& ex)
162
+ catch (...)
299
163
  {
300
- callback->setException(ex);
164
+ exception(current_exception());
301
165
  return;
302
166
  }
303
167
 
304
- #ifdef ICE_CPP11_MAPPING
305
- auto cb = make_shared<ConnectCallback>(_instance, this, endpoints, hasMore, callback, selType);
306
- #else
307
- ConnectCallbackPtr cb = new ConnectCallback(_instance, this, endpoints, hasMore, callback, selType);
308
- #endif
168
+ auto cb = make_shared<ConnectCallback>(
169
+ _instance,
170
+ shared_from_this(),
171
+ std::move(endpoints),
172
+ hasMore,
173
+ std::move(response),
174
+ std::move(exception));
309
175
  cb->getConnectors();
310
176
  }
311
177
 
@@ -316,9 +182,9 @@ IceInternal::OutgoingConnectionFactory::setRouterInfo(const RouterInfoPtr& route
316
182
  ObjectAdapterPtr adapter = routerInfo->getAdapter();
317
183
  vector<EndpointIPtr> endpoints = routerInfo->getClientEndpoints(); // Must be called outside the synchronization
318
184
 
319
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
185
+ lock_guard lock(_mutex);
320
186
 
321
- if(_destroyed)
187
+ if (_destroyed)
322
188
  {
323
189
  throw CommunicatorDestroyedException(__FILE__, __LINE__);
324
190
  }
@@ -329,18 +195,8 @@ IceInternal::OutgoingConnectionFactory::setRouterInfo(const RouterInfoPtr& route
329
195
  // callbacks from the router can be received over such
330
196
  // connections.
331
197
  //
332
- for(vector<EndpointIPtr>::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p)
198
+ for (auto endpoint : endpoints)
333
199
  {
334
- EndpointIPtr endpoint = *p;
335
-
336
- //
337
- // Modify endpoints with overrides.
338
- //
339
- if(_instance->defaultsAndOverrides()->overrideTimeout)
340
- {
341
- endpoint = endpoint->timeout(_instance->defaultsAndOverrides()->overrideTimeoutValue);
342
- }
343
-
344
200
  //
345
201
  // The Connection object does not take the compression flag of
346
202
  // endpoints into account, but instead gets the information
@@ -348,16 +204,16 @@ IceInternal::OutgoingConnectionFactory::setRouterInfo(const RouterInfoPtr& route
348
204
  // other sources. In order to allow connection sharing for
349
205
  // endpoints that differ in the value of the compression flag
350
206
  // only, we always set the compression flag to false here in
351
- // this connection factory.
207
+ // this connection factory. We also clear the timeout as it is
208
+ // no longer used for Ice 3.8.
352
209
  //
353
- endpoint = endpoint->compress(false);
210
+ endpoint = endpoint->compress(false)->timeout(-1);
354
211
 
355
- for(multimap<ConnectorPtr, ConnectionIPtr>::const_iterator q = _connections.begin();
356
- q != _connections.end(); ++q)
212
+ for (const auto& [_, connection] : _connections)
357
213
  {
358
- if(q->second->endpoint() == endpoint)
214
+ if (connection->endpoint() == endpoint)
359
215
  {
360
- q->second->setAdapter(adapter);
216
+ connection->setAdapter(adapter);
361
217
  }
362
218
  }
363
219
  }
@@ -366,60 +222,71 @@ IceInternal::OutgoingConnectionFactory::setRouterInfo(const RouterInfoPtr& route
366
222
  void
367
223
  IceInternal::OutgoingConnectionFactory::removeAdapter(const ObjectAdapterPtr& adapter)
368
224
  {
369
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
225
+ lock_guard lock(_mutex);
370
226
 
371
- if(_destroyed)
227
+ if (_destroyed)
372
228
  {
373
229
  return;
374
230
  }
375
231
 
376
- for(multimap<ConnectorPtr, ConnectionIPtr>::const_iterator p = _connections.begin(); p != _connections.end(); ++p)
232
+ for (const auto& [_, connection] : _connections)
377
233
  {
378
- if(p->second->getAdapter() == adapter)
234
+ if (connection->getAdapter() == adapter)
379
235
  {
380
- p->second->setAdapter(0);
236
+ connection->setAdapter(nullptr);
381
237
  }
382
238
  }
383
239
  }
384
240
 
385
241
  void
386
- IceInternal::OutgoingConnectionFactory::flushAsyncBatchRequests(const CommunicatorFlushBatchAsyncPtr& outAsync,
387
- Ice::CompressBatch compress)
242
+ IceInternal::OutgoingConnectionFactory::flushAsyncBatchRequests(
243
+ const CommunicatorFlushBatchAsyncPtr& outAsync,
244
+ Ice::CompressBatch compress)
388
245
  {
389
246
  list<ConnectionIPtr> c;
390
247
 
391
248
  {
392
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
393
- for(multimap<ConnectorPtr, ConnectionIPtr>::const_iterator p = _connections.begin(); p != _connections.end();
394
- ++p)
249
+ lock_guard lock(_mutex);
250
+ for (const auto& [_, connection] : _connections)
395
251
  {
396
- if(p->second->isActiveOrHolding())
252
+ if (connection->isActiveOrHolding())
397
253
  {
398
- c.push_back(p->second);
254
+ c.push_back(connection);
399
255
  }
400
256
  }
401
257
  }
402
258
 
403
- for(list<ConnectionIPtr>::const_iterator p = c.begin(); p != c.end(); ++p)
259
+ for (const auto& p : c)
404
260
  {
405
261
  try
406
262
  {
407
- outAsync->flushConnection(*p, compress);
263
+ outAsync->flushConnection(p, compress);
408
264
  }
409
- catch(const LocalException&)
265
+ catch (const LocalException&)
410
266
  {
411
267
  // Ignore.
412
268
  }
413
269
  }
414
270
  }
415
271
 
416
- IceInternal::OutgoingConnectionFactory::OutgoingConnectionFactory(const CommunicatorPtr& communicator,
417
- const InstancePtr& instance) :
418
- _communicator(communicator),
419
- _instance(instance),
420
- _monitor(new FactoryACMMonitor(instance, instance->clientACM())),
421
- _destroyed(false),
422
- _pendingConnectCount(0)
272
+ void
273
+ IceInternal::OutgoingConnectionFactory::removeConnection(const ConnectionIPtr& connection) noexcept
274
+ {
275
+ lock_guard lock(_mutex);
276
+ if (!_destroyed)
277
+ {
278
+ remove(_connections, connection->connector(), connection);
279
+ remove(_connectionsByEndpoint, connection->endpoint(), connection);
280
+ remove(_connectionsByEndpoint, connection->endpoint()->compress(true), connection);
281
+ }
282
+ }
283
+
284
+ IceInternal::OutgoingConnectionFactory::OutgoingConnectionFactory(
285
+ CommunicatorPtr communicator,
286
+ const InstancePtr& instance)
287
+ : _communicator(std::move(communicator)),
288
+ _instance(instance),
289
+ _connectionOptions(instance->clientConnectionOptions())
423
290
  {
424
291
  }
425
292
 
@@ -432,60 +299,54 @@ IceInternal::OutgoingConnectionFactory::~OutgoingConnectionFactory()
432
299
  assert(_pendingConnectCount == 0);
433
300
  }
434
301
 
435
- vector<EndpointIPtr>
436
- IceInternal::OutgoingConnectionFactory::applyOverrides(const vector<EndpointIPtr>& endpts)
302
+ ObjectAdapterPtr
303
+ IceInternal::OutgoingConnectionFactory::getDefaultObjectAdapter() const noexcept
437
304
  {
438
- DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides();
439
- vector<EndpointIPtr> endpoints = endpts;
440
- for(vector<EndpointIPtr>::iterator p = endpoints.begin(); p != endpoints.end(); ++p)
441
- {
442
- //
443
- // Modify endpoints with overrides.
444
- //
445
- if(defaultsAndOverrides->overrideTimeout)
446
- {
447
- *p = (*p)->timeout(defaultsAndOverrides->overrideTimeoutValue);
448
- }
449
- }
450
- return endpoints;
305
+ lock_guard lock(_mutex);
306
+ return _defaultObjectAdapter;
307
+ }
308
+
309
+ void
310
+ IceInternal::OutgoingConnectionFactory::setDefaultObjectAdapter(
311
+ ObjectAdapterPtr adapter) noexcept // NOLINT(performance-unnecessary-value-param)
312
+ {
313
+ lock_guard lock(_mutex);
314
+ _defaultObjectAdapter = dynamic_pointer_cast<ObjectAdapterI>(adapter);
451
315
  }
452
316
 
453
317
  ConnectionIPtr
454
318
  IceInternal::OutgoingConnectionFactory::findConnection(const vector<EndpointIPtr>& endpoints, bool& compress)
455
319
  {
456
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
457
- if(_destroyed)
320
+ lock_guard lock(_mutex);
321
+ if (_destroyed)
458
322
  {
459
323
  throw CommunicatorDestroyedException(__FILE__, __LINE__);
460
324
  }
461
325
 
462
326
  DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides();
463
327
  assert(!endpoints.empty());
464
- for(vector<EndpointIPtr>::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p)
465
- {
466
- #ifdef ICE_CPP11_COMPILER
467
- auto connection = find(_connectionsByEndpoint, *p,
468
- [](const ConnectionIPtr& conn)
469
- {
470
- return conn->isActiveOrHolding();
471
- });
472
- #else
473
- ConnectionIPtr connection = find(_connectionsByEndpoint, *p, Ice::constMemFun(&ConnectionI::isActiveOrHolding));
474
- #endif
475
- if(connection)
328
+
329
+ for (const auto& p : endpoints)
330
+ {
331
+ auto connection = find(
332
+ _connectionsByEndpoint,
333
+ p->timeout(-1), // clear the timeout
334
+ [](const ConnectionIPtr& conn) { return conn->isActiveOrHolding(); });
335
+
336
+ if (connection)
476
337
  {
477
- if(defaultsAndOverrides->overrideCompress)
338
+ if (defaultsAndOverrides->overrideCompress.has_value())
478
339
  {
479
- compress = defaultsAndOverrides->overrideCompressValue;
340
+ compress = *defaultsAndOverrides->overrideCompress;
480
341
  }
481
342
  else
482
343
  {
483
- compress = (*p)->compress();
344
+ compress = p->compress();
484
345
  }
485
346
  return connection;
486
347
  }
487
348
  }
488
- return 0;
349
+ return nullptr;
489
350
  }
490
351
 
491
352
  ConnectionIPtr
@@ -494,37 +355,30 @@ IceInternal::OutgoingConnectionFactory::findConnection(const vector<ConnectorInf
494
355
  // This must be called with the mutex locked.
495
356
 
496
357
  DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides();
497
- for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
358
+ for (const auto& p : connectors)
498
359
  {
499
- if(_pending.find(p->connector) != _pending.end())
360
+ if (_pending.find(p.connector) != _pending.end())
500
361
  {
501
362
  continue;
502
363
  }
503
364
 
504
- #ifdef ICE_CPP11_COMPILER
505
- auto connection = find(_connections, p->connector,
506
- [](const ConnectionIPtr& conn)
507
- {
508
- return conn->isActiveOrHolding();
509
- });
510
- #else
511
- ConnectionIPtr connection = find(_connections, p->connector, Ice::constMemFun(&ConnectionI::isActiveOrHolding));
512
- #endif
513
- if(connection)
365
+ auto connection =
366
+ find(_connections, p.connector, [](const ConnectionIPtr& conn) { return conn->isActiveOrHolding(); });
367
+ if (connection)
514
368
  {
515
- if(defaultsAndOverrides->overrideCompress)
369
+ if (defaultsAndOverrides->overrideCompress.has_value())
516
370
  {
517
- compress = defaultsAndOverrides->overrideCompressValue;
371
+ compress = *defaultsAndOverrides->overrideCompress;
518
372
  }
519
373
  else
520
374
  {
521
- compress = p->endpoint->compress();
375
+ compress = p.endpoint->compress();
522
376
  }
523
377
  return connection;
524
378
  }
525
379
  }
526
380
 
527
- return 0;
381
+ return nullptr;
528
382
  }
529
383
 
530
384
  void
@@ -538,8 +392,8 @@ IceInternal::OutgoingConnectionFactory::incPendingConnectCount()
538
392
  // the asynchronous requests waiting on a connection to be established.
539
393
  //
540
394
 
541
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
542
- if(_destroyed)
395
+ lock_guard lock(_mutex);
396
+ if (_destroyed)
543
397
  {
544
398
  throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
545
399
  }
@@ -549,111 +403,58 @@ IceInternal::OutgoingConnectionFactory::incPendingConnectCount()
549
403
  void
550
404
  IceInternal::OutgoingConnectionFactory::decPendingConnectCount()
551
405
  {
552
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
406
+ lock_guard lock(_mutex);
553
407
  --_pendingConnectCount;
554
408
  assert(_pendingConnectCount >= 0);
555
- if(_destroyed && _pendingConnectCount == 0)
409
+ if (_destroyed && _pendingConnectCount == 0)
556
410
  {
557
- notifyAll();
411
+ _conditionVariable.notify_all();
558
412
  }
559
413
  }
560
414
 
561
415
  ConnectionIPtr
562
- IceInternal::OutgoingConnectionFactory::getConnection(const vector<ConnectorInfo>& connectors,
563
- const ConnectCallbackPtr& cb,
564
- bool& compress)
416
+ IceInternal::OutgoingConnectionFactory::getConnection(
417
+ const vector<ConnectorInfo>& connectors,
418
+ const ConnectCallbackPtr& cb,
419
+ bool& compress)
565
420
  {
566
421
  {
567
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
568
- if(_destroyed)
422
+ assert(cb);
423
+ unique_lock lock(_mutex);
424
+ if (_destroyed)
569
425
  {
570
426
  throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
571
427
  }
572
428
 
573
- //
574
- // Reap closed connections
575
- //
576
- vector<Ice::ConnectionIPtr> cons;
577
- _monitor->swapReapedConnections(cons);
578
- for(vector<Ice::ConnectionIPtr>::const_iterator p = cons.begin(); p != cons.end(); ++p)
429
+ // Search for an existing connections matching one of the given endpoints.
430
+ Ice::ConnectionIPtr connection = findConnection(connectors, compress);
431
+ if (connection)
579
432
  {
580
- remove(_connections, (*p)->connector(), *p);
581
- remove(_connectionsByEndpoint, (*p)->endpoint(), *p);
582
- remove(_connectionsByEndpoint, (*p)->endpoint()->compress(true), *p);
433
+ return connection;
583
434
  }
584
435
 
585
436
  //
586
- // Try to get the connection. We may need to wait for other threads to
587
- // finish if one of them is currently establishing a connection to one
588
- // of our connectors.
437
+ // Determine whether another thread/request is currently attempting to connect to
438
+ // one of our endpoints; if so we wait until it's done.
589
439
  //
590
- while(true)
440
+ if (addToPending(cb, connectors))
591
441
  {
592
- if(_destroyed)
593
- {
594
- throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
595
- }
596
-
597
- //
598
- // Search for a matching connection. If we find one, we're done.
599
- //
600
- Ice::ConnectionIPtr connection = findConnection(connectors, compress);
601
- if(connection)
602
- {
603
- return connection;
604
- }
605
-
606
- //
607
- // Determine whether another thread/request is currently attempting to connect to
608
- // one of our endpoints; if so we wait until it's done.
609
- //
610
- if(addToPending(cb, connectors))
611
- {
612
- //
613
- // If a callback is not specified we wait until another thread notifies us about a
614
- // change to the pending list. Otherwise, if a callback is provided we're done:
615
- // when the pending list changes the callback will be notified and will try to
616
- // get the connection again.
617
- //
618
- if(!cb)
619
- {
620
- wait();
621
- }
622
- else
623
- {
624
- return 0;
625
- }
626
- }
627
- else
628
- {
629
- //
630
- // If no thread is currently establishing a connection to one of our connectors,
631
- // we get out of this loop and start the connection establishment to one of the
632
- // given connectors.
633
- //
634
- break;
635
- }
442
+ // A connection to one of our endpoints is pending. The callback will be notified once the connection
443
+ // is established. Returning null indicates that the connection is still pending.
444
+ return nullptr;
636
445
  }
637
446
  }
638
447
 
639
- //
640
- // At this point, we're responsible for establishing the connection to one of
641
- // the given connectors. If it's a non-blocking connect, calling nextConnector
642
- // will start the connection establishment. Otherwise, we return null to get
643
- // the caller to establish the connection.
644
- //
645
- if(cb)
646
- {
647
- cb->nextConnector();
648
- }
649
-
650
- return 0;
448
+ // No connection is pending. Call nextConnector to initiate connection establishment. Return null to indicate
449
+ // that the connection is still pending.
450
+ cb->nextConnector();
451
+ return nullptr;
651
452
  }
652
453
 
653
454
  ConnectionIPtr
654
455
  IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& transceiver, const ConnectorInfo& ci)
655
456
  {
656
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
457
+ lock_guard lock(_mutex);
657
458
  assert(_pending.find(ci.connector) != _pending.end() && transceiver);
658
459
 
659
460
  //
@@ -664,21 +465,36 @@ IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& t
664
465
  Ice::ConnectionIPtr connection;
665
466
  try
666
467
  {
667
- if(_destroyed)
468
+ if (_destroyed)
668
469
  {
669
470
  throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
670
471
  }
671
472
 
672
- connection = ConnectionI::create(_communicator, _instance, _monitor, transceiver, ci.connector,
673
- ci.endpoint->compress(false), ICE_NULLPTR);
473
+ // The connect, close and idle timeouts are ignored for UDP connections.
474
+
475
+ connection = ConnectionI::create(
476
+ _communicator,
477
+ _instance,
478
+ transceiver,
479
+ ci.connector,
480
+ ci.endpoint->compress(false)->timeout(-1),
481
+ _defaultObjectAdapter,
482
+ [weakSelf = weak_from_this()](const ConnectionIPtr& closedConnection)
483
+ {
484
+ if (auto self = weakSelf.lock())
485
+ {
486
+ self->removeConnection(closedConnection);
487
+ }
488
+ },
489
+ _connectionOptions);
674
490
  }
675
- catch(const Ice::LocalException&)
491
+ catch (const Ice::LocalException&)
676
492
  {
677
493
  try
678
494
  {
679
495
  transceiver->close();
680
496
  }
681
- catch(const Ice::LocalException&)
497
+ catch (const Ice::LocalException&)
682
498
  {
683
499
  // Ignore
684
500
  }
@@ -687,153 +503,156 @@ IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& t
687
503
 
688
504
  _connections.insert(pair<const ConnectorPtr, ConnectionIPtr>(ci.connector, connection));
689
505
  _connectionsByEndpoint.insert(pair<const EndpointIPtr, ConnectionIPtr>(connection->endpoint(), connection));
690
- _connectionsByEndpoint.insert(pair<const EndpointIPtr, ConnectionIPtr>(connection->endpoint()->compress(true),
691
- connection));
506
+ _connectionsByEndpoint.insert(
507
+ pair<const EndpointIPtr, ConnectionIPtr>(connection->endpoint()->compress(true), connection));
692
508
  return connection;
693
509
  }
694
510
 
695
511
  void
696
- IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<ConnectorInfo>& connectors,
697
- const ConnectorInfo& ci,
698
- const ConnectionIPtr& connection,
699
- const ConnectCallbackPtr& cb)
512
+ IceInternal::OutgoingConnectionFactory::finishGetConnection(
513
+ const vector<ConnectorInfo>& connectors,
514
+ const ConnectorInfo& ci,
515
+ const ConnectionIPtr& connection,
516
+ const ConnectCallbackPtr& cb)
700
517
  {
701
- set<ConnectCallbackPtr> connectionCallbacks;
702
- if(cb)
518
+ ConnectCallbackSet connectionCallbacks;
519
+ if (cb)
703
520
  {
704
521
  connectionCallbacks.insert(cb);
705
522
  }
706
523
 
707
- set<ConnectCallbackPtr> callbacks;
524
+ ConnectCallbackSet callbacks;
708
525
  {
709
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
710
- for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
526
+ lock_guard lock(_mutex);
527
+ for (const auto& connector : connectors)
711
528
  {
712
- map<ConnectorPtr, set<ConnectCallbackPtr> >::iterator q = _pending.find(p->connector);
713
- if(q != _pending.end())
529
+ auto q = _pending.find(connector.connector);
530
+ if (q != _pending.end())
714
531
  {
715
- for(set<ConnectCallbackPtr>::const_iterator r = q->second.begin(); r != q->second.end(); ++r)
532
+ for (const auto& r : q->second)
716
533
  {
717
- if((*r)->hasConnector(ci))
534
+ if (r->hasConnector(ci))
718
535
  {
719
- connectionCallbacks.insert(*r);
536
+ connectionCallbacks.insert(r);
720
537
  }
721
538
  else
722
539
  {
723
- callbacks.insert(*r);
540
+ callbacks.insert(r);
724
541
  }
725
542
  }
726
543
  _pending.erase(q);
727
544
  }
728
545
  }
729
546
 
730
- for(set<ConnectCallbackPtr>::iterator r = connectionCallbacks.begin(); r != connectionCallbacks.end(); ++r)
547
+ for (const auto& connectionCallback : connectionCallbacks)
731
548
  {
732
- (*r)->removeFromPending();
733
- callbacks.erase(*r);
549
+ connectionCallback->removeFromPending();
550
+ callbacks.erase(connectionCallback);
734
551
  }
735
- for(set<ConnectCallbackPtr>::iterator r = callbacks.begin(); r != callbacks.end(); ++r)
552
+ for (const auto& callback : callbacks)
736
553
  {
737
- (*r)->removeFromPending();
554
+ callback->removeFromPending();
738
555
  }
739
- notifyAll();
556
+ _conditionVariable.notify_all();
740
557
  }
741
558
 
742
559
  bool compress;
743
560
  DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides();
744
- if(defaultsAndOverrides->overrideCompress)
561
+ if (defaultsAndOverrides->overrideCompress.has_value())
745
562
  {
746
- compress = defaultsAndOverrides->overrideCompressValue;
563
+ compress = *defaultsAndOverrides->overrideCompress;
747
564
  }
748
565
  else
749
566
  {
750
567
  compress = ci.endpoint->compress();
751
568
  }
752
569
 
753
- for(set<ConnectCallbackPtr>::const_iterator p = callbacks.begin(); p != callbacks.end(); ++p)
570
+ for (const auto& callback : callbacks)
754
571
  {
755
- (*p)->getConnection();
572
+ callback->getConnection();
756
573
  }
757
- for(set<ConnectCallbackPtr>::const_iterator p = connectionCallbacks.begin(); p != connectionCallbacks.end(); ++p)
574
+ for (const auto& connectionCallback : connectionCallbacks)
758
575
  {
759
- (*p)->setConnection(connection, compress);
576
+ connectionCallback->setConnection(connection, compress);
760
577
  }
761
578
  }
762
579
 
763
580
  void
764
- IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<ConnectorInfo>& connectors,
765
- const Ice::LocalException& ex,
766
- const ConnectCallbackPtr& cb)
581
+ IceInternal::OutgoingConnectionFactory::finishGetConnection(
582
+ const vector<ConnectorInfo>& connectors,
583
+ std::exception_ptr ex,
584
+ const ConnectCallbackPtr& cb)
767
585
  {
768
- set<ConnectCallbackPtr> failedCallbacks;
769
- if(cb)
586
+ ConnectCallbackSet failedCallbacks;
587
+ if (cb)
770
588
  {
771
589
  failedCallbacks.insert(cb);
772
590
  }
773
591
 
774
- set<ConnectCallbackPtr> callbacks;
592
+ ConnectCallbackSet callbacks;
775
593
  {
776
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
777
- for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
594
+ lock_guard lock(_mutex);
595
+ for (auto p = connectors.begin(); p != connectors.end(); ++p)
778
596
  {
779
- map<ConnectorPtr, set<ConnectCallbackPtr> >::iterator q = _pending.find(p->connector);
780
- if(q != _pending.end())
597
+ auto q = _pending.find(p->connector);
598
+ if (q != _pending.end())
781
599
  {
782
- for(set<ConnectCallbackPtr>::const_iterator r = q->second.begin(); r != q->second.end(); ++r)
600
+ for (const auto& r : q->second)
783
601
  {
784
- if((*r)->removeConnectors(connectors))
602
+ if (r->removeConnectors(connectors))
785
603
  {
786
- failedCallbacks.insert(*r);
604
+ failedCallbacks.insert(r);
787
605
  }
788
606
  else
789
607
  {
790
- callbacks.insert(*r);
608
+ callbacks.insert(r);
791
609
  }
792
610
  }
793
611
  _pending.erase(q);
794
612
  }
795
613
  }
796
614
 
797
- for(set<ConnectCallbackPtr>::iterator r = callbacks.begin(); r != callbacks.end(); ++r)
615
+ for (const auto& callback : callbacks)
798
616
  {
799
- assert(failedCallbacks.find(*r) == failedCallbacks.end());
800
- (*r)->removeFromPending();
617
+ assert(failedCallbacks.find(callback) == failedCallbacks.end());
618
+ callback->removeFromPending();
801
619
  }
802
- notifyAll();
620
+ _conditionVariable.notify_all();
803
621
  }
804
622
 
805
- for(set<ConnectCallbackPtr>::const_iterator p = callbacks.begin(); p != callbacks.end(); ++p)
623
+ for (const auto& callback : callbacks)
806
624
  {
807
- (*p)->getConnection();
625
+ callback->getConnection();
808
626
  }
809
- for(set<ConnectCallbackPtr>::const_iterator p = failedCallbacks.begin(); p != failedCallbacks.end(); ++p)
627
+ for (const auto& failedCallback : failedCallbacks)
810
628
  {
811
- (*p)->setException(ex);
629
+ failedCallback->setException(ex);
812
630
  }
813
631
  }
814
632
 
815
633
  bool
816
- IceInternal::OutgoingConnectionFactory::addToPending(const ConnectCallbackPtr& cb,
817
- const vector<ConnectorInfo>& connectors)
634
+ IceInternal::OutgoingConnectionFactory::addToPending(
635
+ const ConnectCallbackPtr& cb,
636
+ const vector<ConnectorInfo>& connectors)
818
637
  {
819
638
  //
820
639
  // Add the callback to each connector pending list.
821
640
  //
822
641
  bool found = false;
823
- for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
642
+ for (const auto& connector : connectors)
824
643
  {
825
- map<ConnectorPtr, set<ConnectCallbackPtr> >::iterator q = _pending.find(p->connector);
826
- if(q != _pending.end())
644
+ auto q = _pending.find(connector.connector);
645
+ if (q != _pending.end())
827
646
  {
828
647
  found = true;
829
- if(cb)
648
+ if (cb)
830
649
  {
831
650
  q->second.insert(cb);
832
651
  }
833
652
  }
834
653
  }
835
654
 
836
- if(found)
655
+ if (found)
837
656
  {
838
657
  return true;
839
658
  }
@@ -843,24 +662,25 @@ IceInternal::OutgoingConnectionFactory::addToPending(const ConnectCallbackPtr& c
843
662
  // responsible for its establishment. We add empty pending lists,
844
663
  // other callbacks to the same connectors will be queued.
845
664
  //
846
- for(vector<ConnectorInfo>::const_iterator r = connectors.begin(); r != connectors.end(); ++r)
665
+ for (const auto& connector : connectors)
847
666
  {
848
- if(_pending.find(r->connector) == _pending.end())
667
+ if (_pending.find(connector.connector) == _pending.end())
849
668
  {
850
- _pending.insert(pair<ConnectorPtr, set<ConnectCallbackPtr> >(r->connector, set<ConnectCallbackPtr>()));
669
+ _pending.insert(make_pair(connector.connector, ConnectCallbackSet()));
851
670
  }
852
671
  }
853
672
  return false;
854
673
  }
855
674
 
856
675
  void
857
- IceInternal::OutgoingConnectionFactory::removeFromPending(const ConnectCallbackPtr& cb,
858
- const vector<ConnectorInfo>& connectors)
676
+ IceInternal::OutgoingConnectionFactory::removeFromPending(
677
+ const ConnectCallbackPtr& cb,
678
+ const vector<ConnectorInfo>& connectors)
859
679
  {
860
- for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
680
+ for (const auto& connector : connectors)
861
681
  {
862
- map<ConnectorPtr, set<ConnectCallbackPtr> >::iterator q = _pending.find(p->connector);
863
- if(q != _pending.end())
682
+ auto q = _pending.find(connector.connector);
683
+ if (q != _pending.end())
864
684
  {
865
685
  q->second.erase(cb);
866
686
  }
@@ -868,21 +688,26 @@ IceInternal::OutgoingConnectionFactory::removeFromPending(const ConnectCallbackP
868
688
  }
869
689
 
870
690
  void
871
- IceInternal::OutgoingConnectionFactory::handleException(const LocalException& ex, bool hasMore)
691
+ IceInternal::OutgoingConnectionFactory::handleException(exception_ptr ex, bool hasMore)
872
692
  {
873
693
  TraceLevelsPtr traceLevels = _instance->traceLevels();
874
- if(traceLevels->network >= 2)
694
+ if (traceLevels->network >= 2)
875
695
  {
876
696
  Trace out(_instance->initializationData().logger, traceLevels->networkCat);
877
697
 
878
698
  out << "couldn't resolve endpoint host";
879
- if(dynamic_cast<const CommunicatorDestroyedException*>(&ex))
699
+
700
+ try
880
701
  {
881
- out << "\n";
702
+ rethrow_exception(ex);
882
703
  }
883
- else
704
+ catch (const CommunicatorDestroyedException& e)
884
705
  {
885
- if(hasMore)
706
+ out << "\n" << e;
707
+ }
708
+ catch (const std::exception& e)
709
+ {
710
+ if (hasMore)
886
711
  {
887
712
  out << ", trying next endpoint\n";
888
713
  }
@@ -890,27 +715,32 @@ IceInternal::OutgoingConnectionFactory::handleException(const LocalException& ex
890
715
  {
891
716
  out << " and no more endpoints to try\n";
892
717
  }
718
+ out << e;
893
719
  }
894
- out << ex;
895
720
  }
896
721
  }
897
722
 
898
723
  void
899
- IceInternal::OutgoingConnectionFactory::handleConnectionException(const LocalException& ex, bool hasMore)
724
+ IceInternal::OutgoingConnectionFactory::handleConnectionException(exception_ptr ex, bool hasMore)
900
725
  {
901
726
  TraceLevelsPtr traceLevels = _instance->traceLevels();
902
- if(traceLevels->network >= 2)
727
+ if (traceLevels->network >= 2)
903
728
  {
904
729
  Trace out(_instance->initializationData().logger, traceLevels->networkCat);
905
730
 
906
731
  out << "connection to endpoint failed";
907
- if(dynamic_cast<const CommunicatorDestroyedException*>(&ex))
732
+
733
+ try
908
734
  {
909
- out << "\n";
735
+ rethrow_exception(ex);
910
736
  }
911
- else
737
+ catch (const CommunicatorDestroyedException& e)
912
738
  {
913
- if(hasMore)
739
+ out << "\n" << e;
740
+ }
741
+ catch (const std::exception& e)
742
+ {
743
+ if (hasMore)
914
744
  {
915
745
  out << ", trying next endpoint\n";
916
746
  }
@@ -918,23 +748,24 @@ IceInternal::OutgoingConnectionFactory::handleConnectionException(const LocalExc
918
748
  {
919
749
  out << " and no more endpoints to try\n";
920
750
  }
751
+ out << e;
921
752
  }
922
- out << ex;
923
753
  }
924
754
  }
925
755
 
926
- IceInternal::OutgoingConnectionFactory::ConnectCallback::ConnectCallback(const InstancePtr& instance,
927
- const OutgoingConnectionFactoryPtr& factory,
928
- const vector<EndpointIPtr>& endpoints,
929
- bool hasMore,
930
- const CreateConnectionCallbackPtr& cb,
931
- Ice::EndpointSelectionType selType) :
932
- _instance(instance),
933
- _factory(factory),
934
- _endpoints(endpoints),
935
- _hasMore(hasMore),
936
- _callback(cb),
937
- _selType(selType)
756
+ IceInternal::OutgoingConnectionFactory::ConnectCallback::ConnectCallback(
757
+ InstancePtr instance,
758
+ OutgoingConnectionFactoryPtr factory,
759
+ vector<EndpointIPtr> endpoints,
760
+ bool hasMore,
761
+ std::function<void(Ice::ConnectionIPtr, bool)> createConnectionResponse,
762
+ std::function<void(std::exception_ptr)> createConnectionException)
763
+ : _instance(std::move(instance)),
764
+ _factory(std::move(factory)),
765
+ _endpoints(std::move(endpoints)),
766
+ _hasMore(hasMore),
767
+ _createConnectionResponse(std::move(createConnectionResponse)),
768
+ _createConnectionException(std::move(createConnectionException))
938
769
  {
939
770
  _endpointsIter = _endpoints.begin();
940
771
  }
@@ -945,21 +776,22 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::ConnectCallback(const I
945
776
  void
946
777
  IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartCompleted(const ConnectionIPtr& connection)
947
778
  {
948
- if(_observer)
779
+ if (_observer)
949
780
  {
950
781
  _observer->detach();
951
782
  }
952
783
 
953
784
  connection->activate();
954
- _factory->finishGetConnection(_connectors, *_iter, connection, ICE_SHARED_FROM_THIS);
785
+ _factory->finishGetConnection(_connectors, *_iter, connection, shared_from_this());
955
786
  }
956
787
 
957
788
  void
958
- IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(const ConnectionIPtr& /*connection*/,
959
- const LocalException& ex)
789
+ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(
790
+ const ConnectionIPtr& /*connection*/,
791
+ exception_ptr ex)
960
792
  {
961
793
  assert(_iter != _connectors.end());
962
- if(connectionStartFailedImpl(ex))
794
+ if (connectionStartFailedImpl(ex))
963
795
  {
964
796
  nextConnector();
965
797
  }
@@ -971,12 +803,12 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(c
971
803
  void
972
804
  IceInternal::OutgoingConnectionFactory::ConnectCallback::connectors(const vector<ConnectorPtr>& connectors)
973
805
  {
974
- for(vector<ConnectorPtr>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
806
+ for (const auto& connector : connectors)
975
807
  {
976
- _connectors.push_back(ConnectorInfo(*p, *_endpointsIter));
808
+ _connectors.emplace_back(connector, *_endpointsIter);
977
809
  }
978
810
 
979
- if(++_endpointsIter != _endpoints.end())
811
+ if (++_endpointsIter != _endpoints.end())
980
812
  {
981
813
  nextEndpoint();
982
814
  }
@@ -994,14 +826,14 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectors(const vector
994
826
  }
995
827
 
996
828
  void
997
- IceInternal::OutgoingConnectionFactory::ConnectCallback::exception(const Ice::LocalException& ex)
829
+ IceInternal::OutgoingConnectionFactory::ConnectCallback::exception(exception_ptr ex)
998
830
  {
999
831
  _factory->handleException(ex, _hasMore || _endpointsIter != _endpoints.end() - 1);
1000
- if(++_endpointsIter != _endpoints.end())
832
+ if (++_endpointsIter != _endpoints.end())
1001
833
  {
1002
834
  nextEndpoint();
1003
835
  }
1004
- else if(!_connectors.empty())
836
+ else if (!_connectors.empty())
1005
837
  {
1006
838
  //
1007
839
  // We now have all the connectors for the given endpoints. We can try to obtain the
@@ -1012,7 +844,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::exception(const Ice::Lo
1012
844
  }
1013
845
  else
1014
846
  {
1015
- _callback->setException(ex);
847
+ _createConnectionException(ex);
1016
848
  _factory->decPendingConnectCount(); // Must be called last.
1017
849
  }
1018
850
  }
@@ -1029,9 +861,9 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnectors()
1029
861
  //
1030
862
  _factory->incPendingConnectCount();
1031
863
  }
1032
- catch(const Ice::LocalException& ex)
864
+ catch (const std::exception&)
1033
865
  {
1034
- _callback->setException(ex);
866
+ _createConnectionException(current_exception());
1035
867
  return;
1036
868
  }
1037
869
 
@@ -1043,13 +875,16 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextEndpoint()
1043
875
  {
1044
876
  try
1045
877
  {
878
+ auto self = shared_from_this();
1046
879
  assert(_endpointsIter != _endpoints.end());
1047
- (*_endpointsIter)->connectors_async(_selType, ICE_SHARED_FROM_THIS);
1048
-
880
+ (*_endpointsIter)
881
+ ->connectorsAsync(
882
+ [self](const vector<ConnectorPtr>& connectors) { self->connectors(connectors); },
883
+ [self](exception_ptr ex) { self->exception(ex); });
1049
884
  }
1050
- catch(const Ice::LocalException& ex)
885
+ catch (const std::exception&)
1051
886
  {
1052
- exception(ex);
887
+ exception(current_exception());
1053
888
  }
1054
889
  }
1055
890
 
@@ -1063,8 +898,8 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
1063
898
  // connection.
1064
899
  //
1065
900
  bool compress;
1066
- Ice::ConnectionIPtr connection = _factory->getConnection(_connectors, ICE_SHARED_FROM_THIS, compress);
1067
- if(!connection)
901
+ Ice::ConnectionIPtr connection = _factory->getConnection(_connectors, shared_from_this(), compress);
902
+ if (!connection)
1068
903
  {
1069
904
  //
1070
905
  // A null return value from getConnection indicates that the connection
@@ -1075,12 +910,12 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
1075
910
  return;
1076
911
  }
1077
912
 
1078
- _callback->setConnection(connection, compress);
913
+ _createConnectionResponse(connection, compress);
1079
914
  _factory->decPendingConnectCount(); // Must be called last.
1080
915
  }
1081
- catch(const Ice::LocalException& ex)
916
+ catch (const std::exception&)
1082
917
  {
1083
- _callback->setException(ex);
918
+ _createConnectionException(current_exception());
1084
919
  _factory->decPendingConnectCount(); // Must be called last.
1085
920
  }
1086
921
  }
@@ -1088,15 +923,15 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
1088
923
  void
1089
924
  IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
1090
925
  {
1091
- while(true)
926
+ while (true)
1092
927
  {
1093
928
  try
1094
929
  {
1095
930
  const CommunicatorObserverPtr& obsv = _factory->_instance->initializationData().observer;
1096
- if(obsv)
931
+ if (obsv)
1097
932
  {
1098
933
  _observer = obsv->getConnectionEstablishmentObserver(_iter->endpoint, _iter->connector->toString());
1099
- if(_observer)
934
+ if (_observer)
1100
935
  {
1101
936
  _observer->attach();
1102
937
  }
@@ -1104,25 +939,29 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
1104
939
 
1105
940
  assert(_iter != _connectors.end());
1106
941
 
1107
- if(_instance->traceLevels()->network >= 2)
942
+ if (_instance->traceLevels()->network >= 2)
1108
943
  {
1109
944
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1110
945
  out << "trying to establish " << _iter->endpoint->protocol() << " connection to "
1111
946
  << _iter->connector->toString();
1112
947
  }
1113
948
  Ice::ConnectionIPtr connection = _factory->createConnection(_iter->connector->connect(), *_iter);
1114
- connection->start(ICE_SHARED_FROM_THIS);
949
+ auto self = shared_from_this();
950
+ connection->startAsync(
951
+ [self](const ConnectionIPtr& conn) { self->connectionStartCompleted(conn); },
952
+ [self](const ConnectionIPtr& conn, exception_ptr ex) { self->connectionStartFailed(conn, ex); });
1115
953
  }
1116
- catch(const Ice::LocalException& ex)
954
+ catch (const Ice::LocalException& ex)
1117
955
  {
1118
- if(_instance->traceLevels()->network >= 2)
956
+ if (_instance->traceLevels()->network >= 2)
1119
957
  {
1120
958
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1121
959
  out << "failed to establish " << _iter->endpoint->protocol() << " connection to "
1122
- << _iter->connector->toString() << "\n" << ex;
960
+ << _iter->connector->toString() << "\n"
961
+ << ex;
1123
962
  }
1124
963
 
1125
- if(connectionStartFailedImpl(ex))
964
+ if (connectionStartFailedImpl(current_exception()))
1126
965
  {
1127
966
  continue; // More connectors to try, continue.
1128
967
  }
@@ -1132,24 +971,25 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
1132
971
  }
1133
972
 
1134
973
  void
1135
- IceInternal::OutgoingConnectionFactory::ConnectCallback::setConnection(const Ice::ConnectionIPtr& connection,
1136
- bool compress)
974
+ IceInternal::OutgoingConnectionFactory::ConnectCallback::setConnection(
975
+ const Ice::ConnectionIPtr& connection,
976
+ bool compress)
1137
977
  {
1138
978
  //
1139
979
  // Callback from the factory: the connection to one of the callback
1140
980
  // connectors has been established.
1141
981
  //
1142
- _callback->setConnection(connection, compress);
982
+ _createConnectionResponse(connection, compress);
1143
983
  _factory->decPendingConnectCount(); // Must be called last.
1144
984
  }
1145
985
 
1146
986
  void
1147
- IceInternal::OutgoingConnectionFactory::ConnectCallback::setException(const Ice::LocalException& ex)
987
+ IceInternal::OutgoingConnectionFactory::ConnectCallback::setException(exception_ptr ex)
1148
988
  {
1149
989
  //
1150
990
  // Callback from the factory: connection establishment failed.
1151
991
  //
1152
- _callback->setException(ex);
992
+ _createConnectionException(ex);
1153
993
  _factory->decPendingConnectCount(); // Must be called last.
1154
994
  }
1155
995
 
@@ -1167,9 +1007,9 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::removeConnectors(const
1167
1007
  // failed, we remove the connectors and return true if there's
1168
1008
  // no more connectors left to try.
1169
1009
  //
1170
- for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
1010
+ for (const auto& p : connectors)
1171
1011
  {
1172
- _connectors.erase(remove(_connectors.begin(), _connectors.end(), *p), _connectors.end());
1012
+ _connectors.erase(remove(_connectors.begin(), _connectors.end(), p), _connectors.end());
1173
1013
  }
1174
1014
  return _connectors.empty();
1175
1015
  }
@@ -1177,73 +1017,79 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::removeConnectors(const
1177
1017
  void
1178
1018
  IceInternal::OutgoingConnectionFactory::ConnectCallback::removeFromPending()
1179
1019
  {
1180
- _factory->removeFromPending(ICE_SHARED_FROM_THIS, _connectors);
1020
+ _factory->removeFromPending(shared_from_this(), _connectors);
1181
1021
  }
1182
1022
 
1183
1023
  bool
1184
- IceInternal::OutgoingConnectionFactory::ConnectCallback::operator<(const ConnectCallback& rhs) const
1024
+ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailedImpl(std::exception_ptr ex)
1185
1025
  {
1186
- return this < &rhs;
1187
- }
1188
-
1189
- bool
1190
- IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailedImpl(const Ice::LocalException& ex)
1191
- {
1192
- if(_observer)
1026
+ if (_observer)
1193
1027
  {
1194
- _observer->failed(ex.ice_id());
1028
+ _observer->failed(getExceptionId(ex));
1195
1029
  _observer->detach();
1196
1030
  }
1197
1031
 
1198
1032
  _factory->handleConnectionException(ex, _hasMore || _iter != _connectors.end() - 1);
1199
- if(dynamic_cast<const Ice::CommunicatorDestroyedException*>(&ex)) // No need to continue.
1200
- {
1201
- _factory->finishGetConnection(_connectors, ex, ICE_SHARED_FROM_THIS);
1202
- }
1203
- else if(++_iter != _connectors.end()) // Try the next connector.
1033
+
1034
+ bool keepGoing = ++_iter != _connectors.end();
1035
+
1036
+ if (keepGoing)
1204
1037
  {
1205
- return true;
1038
+ try
1039
+ {
1040
+ rethrow_exception(ex);
1041
+ }
1042
+ catch (const CommunicatorDestroyedException&)
1043
+ {
1044
+ keepGoing = false;
1045
+ }
1046
+ catch (const ConnectTimeoutException&)
1047
+ {
1048
+ // We stop on ConnectTimeoutException to fail reasonably fast when the endpoint has many connectors
1049
+ // (IP addresses).
1050
+ keepGoing = false;
1051
+ }
1052
+ catch (...)
1053
+ {
1054
+ }
1206
1055
  }
1207
- else
1056
+
1057
+ if (!keepGoing)
1208
1058
  {
1209
- _factory->finishGetConnection(_connectors, ex, ICE_SHARED_FROM_THIS);
1059
+ _factory->finishGetConnection(_connectors, ex, shared_from_this());
1210
1060
  }
1211
- return false;
1061
+ return keepGoing;
1212
1062
  }
1213
1063
 
1214
1064
  void
1215
1065
  IceInternal::IncomingConnectionFactory::activate()
1216
1066
  {
1217
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1067
+ lock_guard lock(_mutex);
1218
1068
  setState(StateActive);
1219
1069
  }
1220
1070
 
1221
1071
  void
1222
1072
  IceInternal::IncomingConnectionFactory::hold()
1223
1073
  {
1224
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1074
+ lock_guard lock(_mutex);
1225
1075
  setState(StateHolding);
1226
1076
  }
1227
1077
 
1228
1078
  void
1229
1079
  IceInternal::IncomingConnectionFactory::destroy()
1230
1080
  {
1231
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1081
+ lock_guard lock(_mutex);
1232
1082
  setState(StateClosed);
1233
1083
  }
1234
1084
 
1235
1085
  void
1236
1086
  IceInternal::IncomingConnectionFactory::updateConnectionObservers()
1237
1087
  {
1238
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1239
- #ifdef ICE_CPP11_COMPILER
1240
- for(const auto& conn : _connections)
1088
+ lock_guard lock(_mutex);
1089
+ for (const auto& connection : _connections)
1241
1090
  {
1242
- conn->updateObserver();
1091
+ connection->updateObserver();
1243
1092
  }
1244
- #else
1245
- for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::updateObserver));
1246
- #endif
1247
1093
  }
1248
1094
 
1249
1095
  void
@@ -1252,16 +1098,13 @@ IceInternal::IncomingConnectionFactory::waitUntilHolding() const
1252
1098
  set<ConnectionIPtr> connections;
1253
1099
 
1254
1100
  {
1255
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1101
+ unique_lock lock(_mutex);
1256
1102
 
1257
1103
  //
1258
1104
  // First we wait until the connection factory itself is in holding
1259
1105
  // state.
1260
1106
  //
1261
- while(_state < StateHolding)
1262
- {
1263
- wait();
1264
- }
1107
+ _conditionVariable.wait(lock, [this] { return _state >= StateHolding; });
1265
1108
 
1266
1109
  //
1267
1110
  // We want to wait until all connections are in holding state
@@ -1273,14 +1116,10 @@ IceInternal::IncomingConnectionFactory::waitUntilHolding() const
1273
1116
  //
1274
1117
  // Now we wait until each connection is in holding state.
1275
1118
  //
1276
- #ifdef ICE_CPP11_COMPILER
1277
- for(const auto& conn : connections)
1119
+ for (const auto& conn : connections)
1278
1120
  {
1279
1121
  conn->waitUntilHolding();
1280
1122
  }
1281
- #else
1282
- for_each(connections.begin(), connections.end(), Ice::constVoidMemFun(&ConnectionI::waitUntilHolding));
1283
- #endif
1284
1123
  }
1285
1124
 
1286
1125
  void
@@ -1288,21 +1127,18 @@ IceInternal::IncomingConnectionFactory::waitUntilFinished()
1288
1127
  {
1289
1128
  set<ConnectionIPtr> connections;
1290
1129
  {
1291
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1130
+ unique_lock lock(_mutex);
1292
1131
 
1293
1132
  //
1294
1133
  // First we wait until the factory is destroyed. If we are using
1295
1134
  // an acceptor, we also wait for it to be closed.
1296
1135
  //
1297
- while(_state != StateFinished)
1298
- {
1299
- wait();
1300
- }
1136
+ _conditionVariable.wait(lock, [this] { return _state == StateFinished; });
1301
1137
 
1302
1138
  //
1303
1139
  // Clear the OA. See bug 1673 for the details of why this is necessary.
1304
1140
  //
1305
- _adapter = 0;
1141
+ _adapter = nullptr;
1306
1142
 
1307
1143
  // We want to wait until all connections are finished outside the
1308
1144
  // thread synchronization.
@@ -1310,97 +1146,67 @@ IceInternal::IncomingConnectionFactory::waitUntilFinished()
1310
1146
  connections = _connections;
1311
1147
  }
1312
1148
 
1313
- #ifdef ICE_CPP11_COMPILER
1314
- for(const auto& conn : connections)
1149
+ for (const auto& conn : connections)
1315
1150
  {
1316
1151
  conn->waitUntilFinished();
1317
1152
  }
1318
- #else
1319
- for_each(connections.begin(), connections.end(), Ice::voidMemFun(&ConnectionI::waitUntilFinished));
1320
- #endif
1321
1153
 
1322
1154
  {
1323
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1324
- if(_transceiver)
1325
- {
1326
- assert(_connections.size() <= 1); // The connection isn't monitored or reaped.
1327
- }
1328
- else
1329
- {
1330
- // Ensure all the connections are finished and reapable at this point.
1331
- vector<Ice::ConnectionIPtr> cons;
1332
- _monitor->swapReapedConnections(cons);
1333
- assert(cons.size() == _connections.size());
1334
- cons.clear();
1335
- }
1155
+ lock_guard lock(_mutex);
1336
1156
  _connections.clear();
1337
1157
  }
1338
-
1339
- //
1340
- // Must be destroyed outside the synchronization since this might block waiting for
1341
- // a timer task to complete.
1342
- //
1343
- _monitor->destroy();
1344
- }
1345
-
1346
- bool
1347
- IceInternal::IncomingConnectionFactory::isLocal(const EndpointIPtr& endpoint) const
1348
- {
1349
- if(_publishedEndpoint && endpoint->equivalent(_publishedEndpoint))
1350
- {
1351
- return true;
1352
- }
1353
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1354
- return endpoint->equivalent(_endpoint);
1355
1158
  }
1356
1159
 
1357
1160
  EndpointIPtr
1358
1161
  IceInternal::IncomingConnectionFactory::endpoint() const
1359
1162
  {
1360
- if(_publishedEndpoint)
1361
- {
1362
- return _publishedEndpoint;
1363
- }
1364
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1163
+ lock_guard lock(_mutex);
1365
1164
  return _endpoint;
1366
1165
  }
1367
1166
 
1368
1167
  list<ConnectionIPtr>
1369
1168
  IceInternal::IncomingConnectionFactory::connections() const
1370
1169
  {
1371
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1170
+ lock_guard lock(_mutex);
1372
1171
 
1373
1172
  list<ConnectionIPtr> result;
1374
1173
 
1375
1174
  //
1376
1175
  // Only copy connections which have not been destroyed.
1377
1176
  //
1378
- #ifdef ICE_CPP11_COMPILER
1379
- remove_copy_if(_connections.begin(), _connections.end(), back_inserter(result),
1380
- [](const ConnectionIPtr& conn)
1381
- {
1382
- return !conn->isActiveOrHolding();
1383
- });
1384
- #else
1385
- remove_copy_if(_connections.begin(), _connections.end(), back_inserter(result),
1386
- not1(Ice::constMemFun(&ConnectionI::isActiveOrHolding)));
1387
- #endif
1177
+ remove_copy_if(
1178
+ _connections.begin(),
1179
+ _connections.end(),
1180
+ back_inserter(result),
1181
+ [](const ConnectionIPtr& conn) { return !conn->isActiveOrHolding(); });
1388
1182
  return result;
1389
1183
  }
1390
1184
 
1391
1185
  void
1392
- IceInternal::IncomingConnectionFactory::flushAsyncBatchRequests(const CommunicatorFlushBatchAsyncPtr& outAsync,
1393
- Ice::CompressBatch compress)
1186
+ IceInternal::IncomingConnectionFactory::removeConnection(const ConnectionIPtr& connection) noexcept
1187
+ {
1188
+ lock_guard lock(_mutex);
1189
+ if (_state == StateActive || _state == StateHolding)
1190
+ {
1191
+ _connections.erase(connection);
1192
+ }
1193
+ // else it's already being cleaned up.
1194
+ }
1195
+
1196
+ void
1197
+ IceInternal::IncomingConnectionFactory::flushAsyncBatchRequests(
1198
+ const CommunicatorFlushBatchAsyncPtr& outAsync,
1199
+ Ice::CompressBatch compress)
1394
1200
  {
1395
1201
  list<ConnectionIPtr> c = connections(); // connections() is synchronized, so no need to synchronize here.
1396
1202
 
1397
- for(list<ConnectionIPtr>::const_iterator p = c.begin(); p != c.end(); ++p)
1203
+ for (const auto& p : c)
1398
1204
  {
1399
1205
  try
1400
1206
  {
1401
- outAsync->flushConnection(*p, compress);
1207
+ outAsync->flushConnection(p, compress);
1402
1208
  }
1403
- catch(const LocalException&)
1209
+ catch (const LocalException&)
1404
1210
  {
1405
1211
  // Ignore.
1406
1212
  }
@@ -1412,7 +1218,7 @@ bool
1412
1218
  IceInternal::IncomingConnectionFactory::startAsync(SocketOperation)
1413
1219
  {
1414
1220
  assert(_acceptor);
1415
- if(_state >= StateClosed)
1221
+ if (_state >= StateClosed)
1416
1222
  {
1417
1223
  return false;
1418
1224
  }
@@ -1421,9 +1227,9 @@ IceInternal::IncomingConnectionFactory::startAsync(SocketOperation)
1421
1227
  {
1422
1228
  _acceptor->startAccept();
1423
1229
  }
1424
- catch(const Ice::LocalException& ex)
1230
+ catch (const Ice::LocalException&)
1425
1231
  {
1426
- ICE_SET_EXCEPTION_FROM_CLONE(_acceptorException, ex.ice_clone());
1232
+ _acceptorException = current_exception();
1427
1233
  _acceptor->getNativeInfo()->completed(SocketOperationRead);
1428
1234
  }
1429
1235
  return true;
@@ -1435,25 +1241,20 @@ IceInternal::IncomingConnectionFactory::finishAsync(SocketOperation)
1435
1241
  assert(_acceptor);
1436
1242
  try
1437
1243
  {
1438
- if(_acceptorException)
1244
+ if (_acceptorException)
1439
1245
  {
1440
- _acceptorException->ice_throw();
1246
+ rethrow_exception(_acceptorException);
1441
1247
  }
1442
1248
  _acceptor->finishAccept();
1443
1249
  }
1444
- catch(const LocalException& ex)
1250
+ catch (const LocalException& ex)
1445
1251
  {
1446
- _acceptorException.reset(ICE_NULLPTR);
1252
+ _acceptorException = nullptr;
1447
1253
 
1448
- Error out(_instance->initializationData().logger);
1449
- out << "couldn't accept connection:\n" << ex << '\n' << _acceptor->toString();
1450
- if(_acceptorStarted)
1254
+ if (_warn)
1451
1255
  {
1452
- _acceptorStarted = false;
1453
- if(_adapter->getThreadPool()->finish(ICE_SHARED_FROM_THIS, true))
1454
- {
1455
- closeAcceptor();
1456
- }
1256
+ Warning out(_instance->initializationData().logger);
1257
+ out << "error accepting connection:\n" << ex << '\n' << _acceptor->toString();
1457
1258
  }
1458
1259
  }
1459
1260
  return _state < StateClosed;
@@ -1468,35 +1269,25 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
1468
1269
  ThreadPoolMessage<IncomingConnectionFactory> msg(current, *this);
1469
1270
 
1470
1271
  {
1471
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1272
+ lock_guard lock(_mutex);
1472
1273
 
1473
1274
  ThreadPoolMessage<IncomingConnectionFactory>::IOScope io(msg);
1474
- if(!io)
1275
+ if (!io)
1475
1276
  {
1476
1277
  return;
1477
1278
  }
1478
1279
 
1479
- if(_state >= StateClosed)
1280
+ if (_state >= StateClosed)
1480
1281
  {
1481
1282
  return;
1482
1283
  }
1483
- else if(_state == StateHolding)
1284
+ else if (_state == StateHolding)
1484
1285
  {
1485
- IceUtil::ThreadControl::yield();
1286
+ this_thread::yield();
1486
1287
  return;
1487
1288
  }
1488
1289
 
1489
- //
1490
- // Reap closed connections
1491
- //
1492
- vector<Ice::ConnectionIPtr> cons;
1493
- _monitor->swapReapedConnections(cons);
1494
- for(vector<Ice::ConnectionIPtr>::const_iterator p = cons.begin(); p != cons.end(); ++p)
1495
- {
1496
- _connections.erase(*p);
1497
- }
1498
-
1499
- if(!_acceptorStarted)
1290
+ if (!_acceptorStarted)
1500
1291
  {
1501
1292
  return;
1502
1293
  }
@@ -1509,37 +1300,40 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
1509
1300
  {
1510
1301
  transceiver = _acceptor->accept();
1511
1302
 
1512
- if(_instance->traceLevels()->network >= 2)
1513
- {
1514
- Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1515
- out << "trying to accept " << _endpoint->protocol() << " connection\n" << transceiver->toString();
1516
- }
1517
- }
1518
- catch(const SocketException& ex)
1519
- {
1520
- if(noMoreFds(ex.error))
1303
+ if (_maxConnections > 0 && _connections.size() == static_cast<size_t>(_maxConnections))
1521
1304
  {
1522
- Error out(_instance->initializationData().logger);
1523
- out << "can't accept more connections:\n" << ex << '\n' << _acceptor->toString();
1305
+ // Can't accept more connections, so we abort this transport connection.
1524
1306
 
1525
- assert(_acceptorStarted);
1526
- _acceptorStarted = false;
1527
- if(_adapter->getThreadPool()->finish(ICE_SHARED_FROM_THIS, true))
1307
+ if (_instance->traceLevels()->network >= 2)
1528
1308
  {
1529
- closeAcceptor();
1309
+ Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1310
+ out << "rejecting new " << _endpoint->protocol() << " connection\n"
1311
+ << transceiver->toString() << "\nbecause the maximum number of connections has been reached";
1312
+ }
1313
+
1314
+ try
1315
+ {
1316
+ transceiver->close();
1317
+ }
1318
+ catch (...)
1319
+ {
1320
+ // Ignore.
1530
1321
  }
1322
+ return;
1531
1323
  }
1532
1324
 
1533
- // Ignore socket exceptions.
1534
- return;
1325
+ if (_instance->traceLevels()->network >= 2)
1326
+ {
1327
+ Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1328
+ out << "trying to accept " << _endpoint->protocol() << " connection\n" << transceiver->toString();
1329
+ }
1535
1330
  }
1536
- catch(const LocalException& ex)
1331
+ catch (const LocalException& ex)
1537
1332
  {
1538
- // Warn about other Ice local exceptions.
1539
- if(_warn)
1333
+ if (_warn)
1540
1334
  {
1541
1335
  Warning out(_instance->initializationData().logger);
1542
- out << "connection exception:\n" << ex << '\n' << _acceptor->toString();
1336
+ out << "error accepting connection:\n" << ex << '\n' << _acceptor->toString();
1543
1337
  }
1544
1338
  return;
1545
1339
  }
@@ -1548,24 +1342,37 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
1548
1342
 
1549
1343
  try
1550
1344
  {
1551
- connection = ConnectionI::create(_adapter->getCommunicator(), _instance, _monitor, transceiver, 0,
1552
- _endpoint, _adapter);
1345
+ connection = ConnectionI::create(
1346
+ _adapter->getCommunicator(),
1347
+ _instance,
1348
+ transceiver,
1349
+ nullptr, // connector
1350
+ _endpoint,
1351
+ _adapter,
1352
+ [weakSelf = weak_from_this()](const ConnectionIPtr& closedConnection)
1353
+ {
1354
+ if (auto self = weakSelf.lock())
1355
+ {
1356
+ static_pointer_cast<IncomingConnectionFactory>(self)->removeConnection(closedConnection);
1357
+ }
1358
+ },
1359
+ _connectionOptions);
1553
1360
  }
1554
- catch(const LocalException& ex)
1361
+ catch (const LocalException& ex)
1555
1362
  {
1556
1363
  try
1557
1364
  {
1558
1365
  transceiver->close();
1559
1366
  }
1560
- catch(const Ice::LocalException&)
1367
+ catch (const Ice::LocalException&)
1561
1368
  {
1562
1369
  // Ignore.
1563
1370
  }
1564
1371
 
1565
- if(_warn)
1372
+ if (_warn)
1566
1373
  {
1567
1374
  Warning out(_instance->initializationData().logger);
1568
- out << "connection exception:\n" << ex << '\n' << _acceptor->toString();
1375
+ out << "error accepting connection:\n" << ex << '\n' << _acceptor->toString();
1569
1376
  }
1570
1377
  return;
1571
1378
  }
@@ -1575,42 +1382,35 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
1575
1382
 
1576
1383
  assert(connection);
1577
1384
 
1578
- connection->start(ICE_SHARED_FROM_THIS);
1385
+ auto self = shared_from_this();
1386
+ connection->startAsync(
1387
+ [self](const ConnectionIPtr& conn) { self->connectionStartCompleted(conn); },
1388
+ [self](const ConnectionIPtr& conn, exception_ptr ex) { self->connectionStartFailed(conn, ex); });
1579
1389
  }
1580
1390
 
1581
1391
  void
1582
1392
  IceInternal::IncomingConnectionFactory::finished(ThreadPoolCurrent&, bool close)
1583
1393
  {
1584
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1585
- if(_state < StateClosed)
1394
+ unique_lock lock(_mutex);
1395
+ if (_state < StateClosed)
1586
1396
  {
1587
- if(close)
1397
+ if (close)
1588
1398
  {
1589
1399
  closeAcceptor();
1590
1400
  }
1591
-
1592
- //
1593
- // If the acceptor hasn't been explicitly stopped (which is the case if the acceptor got closed
1594
- // because of an unexpected error), try to restart the acceptor in 1 second.
1595
- //
1596
- if(!_acceptorStopped)
1597
- {
1598
- _instance->timer()->schedule(ICE_MAKE_SHARED(StartAcceptor, ICE_SHARED_FROM_THIS, _instance),
1599
- IceUtil::Time::seconds(1));
1600
- }
1601
1401
  return;
1602
1402
  }
1603
1403
 
1604
1404
  assert(_state >= StateClosed);
1605
1405
  setState(StateFinished);
1606
1406
 
1607
- if(close)
1407
+ if (close)
1608
1408
  {
1609
1409
  closeAcceptor();
1610
1410
  }
1611
1411
 
1612
1412
  #if TARGET_OS_IPHONE != 0
1613
- sync.release();
1413
+ lock.unlock();
1614
1414
  finish();
1615
1415
  #endif
1616
1416
  }
@@ -1619,101 +1419,93 @@ IceInternal::IncomingConnectionFactory::finished(ThreadPoolCurrent&, bool close)
1619
1419
  void
1620
1420
  IceInternal::IncomingConnectionFactory::finish()
1621
1421
  {
1622
- unregisterForBackgroundNotification(ICE_SHARED_FROM_THIS);
1422
+ unregisterForBackgroundNotification(shared_from_this());
1623
1423
  }
1624
1424
  #endif
1625
1425
 
1626
1426
  string
1627
1427
  IceInternal::IncomingConnectionFactory::toString() const
1628
1428
  {
1629
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1630
- if(_transceiver)
1429
+ lock_guard lock(_mutex);
1430
+ if (_transceiver)
1631
1431
  {
1632
1432
  return _transceiver->toString();
1633
1433
  }
1634
- else if(_acceptor)
1434
+ else if (_acceptor)
1635
1435
  {
1636
1436
  return _acceptor->toString();
1637
1437
  }
1638
1438
  else
1639
1439
  {
1640
- return string();
1440
+ return {};
1641
1441
  }
1642
1442
  }
1643
1443
 
1644
1444
  NativeInfoPtr
1645
1445
  IceInternal::IncomingConnectionFactory::getNativeInfo()
1646
1446
  {
1647
- if(_transceiver)
1447
+ if (_transceiver)
1648
1448
  {
1649
1449
  return _transceiver->getNativeInfo();
1650
1450
  }
1651
- else if(_acceptor)
1451
+ else if (_acceptor)
1652
1452
  {
1653
1453
  return _acceptor->getNativeInfo();
1654
1454
  }
1655
1455
  else
1656
1456
  {
1657
- return 0;
1457
+ return nullptr;
1658
1458
  }
1659
1459
  }
1660
1460
 
1661
1461
  void
1662
1462
  IceInternal::IncomingConnectionFactory::connectionStartCompleted(const Ice::ConnectionIPtr& connection)
1663
1463
  {
1664
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1464
+ lock_guard lock(_mutex);
1665
1465
 
1666
1466
  //
1667
- // Initialy, connections are in the holding state. If the factory is active
1467
+ // Initially, connections are in the holding state. If the factory is active
1668
1468
  // we activate the connection.
1669
1469
  //
1670
- if(_state == StateActive)
1470
+ if (_state == StateActive)
1671
1471
  {
1672
1472
  connection->activate();
1673
1473
  }
1674
1474
  }
1675
1475
 
1676
1476
  void
1677
- IceInternal::IncomingConnectionFactory::connectionStartFailed(const Ice::ConnectionIPtr& /*connection*/,
1678
- const Ice::LocalException&)
1477
+ IceInternal::IncomingConnectionFactory::connectionStartFailed(const Ice::ConnectionIPtr& /*connection*/, exception_ptr)
1679
1478
  {
1680
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1681
- if(_state >= StateClosed)
1682
- {
1683
- return;
1684
- }
1685
-
1686
- //
1687
1479
  // Do not warn about connection exceptions here. The connection is not yet validated.
1688
- //
1689
1480
  }
1690
1481
 
1691
1482
  //
1692
1483
  // COMPILERFIX: The ConnectionFactory setup is broken out into a separate initialize
1693
1484
  // function because when it was part of the constructor C++Builder 2007 apps would
1694
- // crash if an execption was thrown from any calls within the constructor.
1485
+ // crash if an exception was thrown from any calls within the constructor.
1695
1486
  //
1696
- IceInternal::IncomingConnectionFactory::IncomingConnectionFactory(const InstancePtr& instance,
1697
- const EndpointIPtr& endpoint,
1698
- const EndpointIPtr& publishedEndpoint,
1699
- const ObjectAdapterIPtr& adapter) :
1700
- _instance(instance),
1701
- _monitor(new FactoryACMMonitor(instance, dynamic_cast<ObjectAdapterI*>(adapter.get())->getACM())),
1702
- _endpoint(endpoint),
1703
- _publishedEndpoint(publishedEndpoint),
1704
- _acceptorStarted(false),
1705
- _acceptorStopped(false),
1706
- _adapter(adapter),
1707
- _warn(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Connections") > 0),
1708
- _state(StateHolding)
1709
- {
1710
- }
1711
-
1487
+ IceInternal::IncomingConnectionFactory::IncomingConnectionFactory(
1488
+ const InstancePtr& instance,
1489
+ const EndpointIPtr& endpoint,
1490
+ const shared_ptr<ObjectAdapterI>& adapter)
1491
+ : _instance(instance),
1492
+ _connectionOptions(instance->serverConnectionOptions(adapter->getName())),
1493
+ _maxConnections(
1494
+ endpoint->datagram()
1495
+ ? 0
1496
+ : instance->initializationData().properties->getPropertyAsInt(adapter->getName() + ".MaxConnections")),
1497
+ _endpoint(endpoint),
1498
+ _adapter(adapter),
1499
+ _warn(_instance->initializationData().properties->getIcePropertyAsInt("Ice.Warn.Connections") > 0)
1500
+ {
1501
+ }
1502
+
1503
+ #if defined(__APPLE__) && TARGET_OS_IPHONE != 0
1712
1504
  void
1713
1505
  IceInternal::IncomingConnectionFactory::startAcceptor()
1714
1506
  {
1715
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1716
- if(_state >= StateClosed || _acceptorStarted)
1507
+ lock_guard lock(_mutex);
1508
+ if (_state >= StateClosed || _acceptorStarted)
1717
1509
  {
1718
1510
  return;
1719
1511
  }
@@ -1725,47 +1517,54 @@ IceInternal::IncomingConnectionFactory::startAcceptor()
1725
1517
  void
1726
1518
  IceInternal::IncomingConnectionFactory::stopAcceptor()
1727
1519
  {
1728
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1729
- if(_state >= StateClosed || !_acceptorStarted)
1520
+ lock_guard lock(_mutex);
1521
+ if (_state >= StateClosed || !_acceptorStarted)
1730
1522
  {
1731
1523
  return;
1732
1524
  }
1733
1525
 
1734
1526
  _acceptorStopped = true;
1735
1527
  _acceptorStarted = false;
1736
- if(_adapter->getThreadPool()->finish(ICE_SHARED_FROM_THIS, true))
1528
+ if (_adapter->getThreadPool()->finish(shared_from_this(), true))
1737
1529
  {
1738
1530
  closeAcceptor();
1739
1531
  }
1740
1532
  }
1533
+ #endif
1741
1534
 
1742
1535
  void
1743
1536
  IceInternal::IncomingConnectionFactory::initialize()
1744
1537
  {
1745
- if(_instance->defaultsAndOverrides()->overrideTimeout)
1538
+ if (_instance->defaultsAndOverrides()->overrideCompress.has_value())
1746
1539
  {
1747
- _endpoint = _endpoint->timeout(_instance->defaultsAndOverrides()->overrideTimeoutValue);
1540
+ _endpoint = _endpoint->compress(*_instance->defaultsAndOverrides()->overrideCompress);
1748
1541
  }
1749
1542
 
1750
- if(_instance->defaultsAndOverrides()->overrideCompress)
1751
- {
1752
- _endpoint = _endpoint->compress(_instance->defaultsAndOverrides()->overrideCompressValue);
1753
- }
1754
1543
  try
1755
1544
  {
1756
1545
  const_cast<TransceiverPtr&>(_transceiver) = _endpoint->transceiver();
1757
- if(_transceiver)
1546
+ if (_transceiver)
1758
1547
  {
1759
- if(_instance->traceLevels()->network >= 2)
1548
+ // All this is for UDP "connections".
1549
+
1550
+ if (_instance->traceLevels()->network >= 2)
1760
1551
  {
1761
1552
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1762
1553
  out << "attempting to bind to " << _endpoint->protocol() << " socket\n" << _transceiver->toString();
1763
1554
  }
1764
1555
  const_cast<EndpointIPtr&>(_endpoint) = _transceiver->bind();
1765
- ConnectionIPtr connection(ConnectionI::create(_adapter->getCommunicator(), _instance, 0, _transceiver, 0,
1766
- _endpoint, _adapter));
1767
- connection->start(0);
1556
+ ConnectionIPtr connection(ConnectionI::create(
1557
+ _adapter->getCommunicator(),
1558
+ _instance,
1559
+ _transceiver,
1560
+ nullptr,
1561
+ _endpoint,
1562
+ _adapter,
1563
+ nullptr,
1564
+ _connectionOptions));
1565
+ connection->startAsync(nullptr, nullptr);
1768
1566
  _connections.insert(connection);
1567
+ assert(_maxConnections == 0); // UDP so no max connections
1769
1568
  }
1770
1569
  else
1771
1570
  {
@@ -1774,28 +1573,27 @@ IceInternal::IncomingConnectionFactory::initialize()
1774
1573
  // The notification center will call back on the factory to
1775
1574
  // start the acceptor if necessary.
1776
1575
  //
1777
- registerForBackgroundNotification(ICE_SHARED_FROM_THIS);
1576
+ registerForBackgroundNotification(shared_from_this());
1778
1577
  #else
1779
1578
  createAcceptor();
1780
1579
  #endif
1781
1580
  }
1782
1581
  }
1783
- catch(const Ice::Exception&)
1582
+ catch (const Ice::Exception&)
1784
1583
  {
1785
- if(_transceiver)
1584
+ if (_transceiver)
1786
1585
  {
1787
1586
  try
1788
1587
  {
1789
1588
  _transceiver->close();
1790
1589
  }
1791
- catch(const Ice::LocalException&)
1590
+ catch (const Ice::LocalException&)
1792
1591
  {
1793
1592
  // Ignore
1794
1593
  }
1795
1594
  }
1796
1595
 
1797
1596
  _state = StateFinished;
1798
- _monitor->destroy();
1799
1597
  _connections.clear();
1800
1598
  throw;
1801
1599
  }
@@ -1810,68 +1608,61 @@ IceInternal::IncomingConnectionFactory::~IncomingConnectionFactory()
1810
1608
  void
1811
1609
  IceInternal::IncomingConnectionFactory::setState(State state)
1812
1610
  {
1813
- if(_state == state) // Don't switch twice.
1611
+ if (_state == state) // Don't switch twice.
1814
1612
  {
1815
1613
  return;
1816
1614
  }
1817
1615
 
1818
- switch(state)
1616
+ switch (state)
1819
1617
  {
1820
1618
  case StateActive:
1821
1619
  {
1822
- if(_state != StateHolding) // Can only switch from holding to active.
1620
+ if (_state != StateHolding) // Can only switch from holding to active.
1823
1621
  {
1824
1622
  return;
1825
1623
  }
1826
- if(_acceptor)
1624
+ if (_acceptor)
1827
1625
  {
1828
- if(_instance->traceLevels()->network >= 1)
1626
+ if (_instance->traceLevels()->network >= 1)
1829
1627
  {
1830
1628
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1831
1629
  out << "accepting " << _endpoint->protocol() << " connections at " << _acceptor->toString();
1832
1630
  }
1833
- _adapter->getThreadPool()->_register(ICE_SHARED_FROM_THIS, SocketOperationRead);
1631
+ _adapter->getThreadPool()->_register(shared_from_this(), SocketOperationRead);
1834
1632
  }
1835
- #ifdef ICE_CPP11_COMPILER
1836
- for(const auto& conn : _connections)
1633
+
1634
+ for (const auto& connection : _connections)
1837
1635
  {
1838
- conn->activate();
1636
+ connection->activate();
1839
1637
  }
1840
- #else
1841
- for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::activate));
1842
- #endif
1843
1638
  break;
1844
1639
  }
1845
1640
 
1846
1641
  case StateHolding:
1847
1642
  {
1848
- if(_state != StateActive) // Can only switch from active to holding.
1643
+ if (_state != StateActive) // Can only switch from active to holding.
1849
1644
  {
1850
1645
  return;
1851
1646
  }
1852
- if(_acceptor)
1647
+ if (_acceptor)
1853
1648
  {
1854
- if(_instance->traceLevels()->network >= 1)
1649
+ if (_instance->traceLevels()->network >= 1)
1855
1650
  {
1856
1651
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1857
1652
  out << "holding " << _endpoint->protocol() << " connections at " << _acceptor->toString();
1858
1653
  }
1859
- _adapter->getThreadPool()->unregister(ICE_SHARED_FROM_THIS, SocketOperationRead);
1654
+ _adapter->getThreadPool()->unregister(shared_from_this(), SocketOperationRead);
1860
1655
  }
1861
- #ifdef ICE_CPP11_COMPILER
1862
- for(const auto& conn : _connections)
1656
+ for (const auto& connection : _connections)
1863
1657
  {
1864
- conn->hold();
1658
+ connection->hold();
1865
1659
  }
1866
- #else
1867
- for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::hold));
1868
- #endif
1869
1660
  break;
1870
1661
  }
1871
1662
 
1872
1663
  case StateClosed:
1873
1664
  {
1874
- if(_acceptorStarted)
1665
+ if (_acceptorStarted)
1875
1666
  {
1876
1667
  //
1877
1668
  // If possible, close the acceptor now to prevent new connections from
@@ -1881,7 +1672,7 @@ IceInternal::IncomingConnectionFactory::setState(State state)
1881
1672
  // however.
1882
1673
  //
1883
1674
  _acceptorStarted = false;
1884
- if(_adapter->getThreadPool()->finish(ICE_SHARED_FROM_THIS, true))
1675
+ if (_adapter->getThreadPool()->finish(shared_from_this(), true))
1885
1676
  {
1886
1677
  closeAcceptor();
1887
1678
  }
@@ -1889,20 +1680,15 @@ IceInternal::IncomingConnectionFactory::setState(State state)
1889
1680
  else
1890
1681
  {
1891
1682
  #if TARGET_OS_IPHONE != 0
1892
- _adapter->getThreadPool()->dispatch(new FinishCall(ICE_SHARED_FROM_THIS));
1683
+ _adapter->getThreadPool()->execute([self = shared_from_this()]() { self->finish(); }, nullptr);
1893
1684
  #endif
1894
1685
  state = StateFinished;
1895
1686
  }
1896
1687
 
1897
- #ifdef ICE_CPP11_COMPILER
1898
- for(const auto& conn : _connections)
1688
+ for (const auto& connection : _connections)
1899
1689
  {
1900
- conn->destroy(ConnectionI::ObjectAdapterDeactivated);
1690
+ connection->destroy(ConnectionI::ObjectAdapterDeactivated);
1901
1691
  }
1902
- #else
1903
- for_each(_connections.begin(), _connections.end(),
1904
- bind2nd(Ice::voidMemFun1(&ConnectionI::destroy), ConnectionI::ObjectAdapterDeactivated));
1905
- #endif
1906
1692
  break;
1907
1693
  }
1908
1694
 
@@ -1914,7 +1700,7 @@ IceInternal::IncomingConnectionFactory::setState(State state)
1914
1700
  }
1915
1701
 
1916
1702
  _state = state;
1917
- notifyAll();
1703
+ _conditionVariable.notify_all();
1918
1704
  }
1919
1705
 
1920
1706
  void
@@ -1923,32 +1709,32 @@ IceInternal::IncomingConnectionFactory::createAcceptor()
1923
1709
  try
1924
1710
  {
1925
1711
  assert(!_acceptorStarted);
1926
- _acceptor = _endpoint->acceptor(_adapter->getName());
1712
+ _acceptor = _endpoint->acceptor(_adapter->getName(), _adapter->serverAuthenticationOptions());
1927
1713
  assert(_acceptor);
1928
- if(_instance->traceLevels()->network >= 2)
1714
+ if (_instance->traceLevels()->network >= 2)
1929
1715
  {
1930
1716
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1931
1717
  out << "attempting to bind to " << _endpoint->protocol() << " socket " << _acceptor->toString();
1932
1718
  }
1933
1719
 
1934
1720
  _endpoint = _acceptor->listen();
1935
- if(_instance->traceLevels()->network >= 1)
1721
+ if (_instance->traceLevels()->network >= 1)
1936
1722
  {
1937
1723
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1938
1724
  out << "listening for " << _endpoint->protocol() << " connections\n" << _acceptor->toDetailedString();
1939
1725
  }
1940
1726
 
1941
- _adapter->getThreadPool()->initialize(ICE_SHARED_FROM_THIS);
1942
- if(_state == StateActive)
1727
+ _adapter->getThreadPool()->initialize(shared_from_this());
1728
+ if (_state == StateActive)
1943
1729
  {
1944
- _adapter->getThreadPool()->_register(ICE_SHARED_FROM_THIS, SocketOperationRead);
1730
+ _adapter->getThreadPool()->_register(shared_from_this(), SocketOperationRead);
1945
1731
  }
1946
1732
 
1947
1733
  _acceptorStarted = true;
1948
1734
  }
1949
- catch(const Ice::Exception&)
1735
+ catch (const Ice::Exception&)
1950
1736
  {
1951
- if(_acceptor)
1737
+ if (_acceptor)
1952
1738
  {
1953
1739
  _acceptor->close();
1954
1740
  }
@@ -1961,7 +1747,7 @@ IceInternal::IncomingConnectionFactory::closeAcceptor()
1961
1747
  {
1962
1748
  assert(_acceptor);
1963
1749
 
1964
- if(_instance->traceLevels()->network >= 1)
1750
+ if (_instance->traceLevels()->network >= 1)
1965
1751
  {
1966
1752
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1967
1753
  out << "stopping to accept " << _endpoint->protocol() << " connections at " << _acceptor->toString();