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,149 +1,87 @@
1
- //
2
- // Copyright (c) ZeroC, Inc. All rights reserved.
3
- //
4
-
5
- #include <Ice/Reference.h>
6
- #include <Ice/ReferenceFactory.h>
7
- #include <Ice/LocalException.h>
8
- #include <Ice/Instance.h>
9
- #include <Ice/EndpointI.h>
10
- #include <Ice/OpaqueEndpointI.h>
11
- #include <Ice/OutputStream.h>
12
- #include <Ice/RouterInfo.h>
13
- #include <Ice/Router.h>
14
- #include <Ice/LocatorInfo.h>
15
- #include <Ice/Locator.h>
16
- #include <Ice/Functional.h>
17
- #include <Ice/ConnectionI.h>
18
- #include <Ice/ConnectionFactory.h>
19
- #include <Ice/LoggerUtil.h>
20
- #include <Ice/TraceLevels.h>
21
- #include <Ice/HashUtil.h>
22
- #include <Ice/RequestHandlerFactory.h>
23
- #include <Ice/ConnectionRequestHandler.h>
24
- #include <Ice/DefaultsAndOverrides.h>
25
- #include <Ice/Comparable.h>
26
- #include <Ice/StringUtil.h>
27
-
28
- #include <IceUtil/Random.h>
29
- #include <IceUtil/MutexPtrLock.h>
1
+ // Copyright (c) ZeroC, Inc.
2
+
3
+ #include "Reference.h"
4
+ #include "CollocatedRequestHandler.h"
5
+ #include "ConnectRequestHandler.h"
6
+ #include "ConnectionFactory.h"
7
+ #include "ConnectionI.h"
8
+ #include "DefaultsAndOverrides.h"
9
+ #include "EndpointI.h"
10
+ #include "FixedRequestHandler.h"
11
+ #include "HashUtil.h"
12
+ #include "Ice/LocalExceptions.h"
13
+ #include "Ice/Locator.h"
14
+ #include "Ice/LoggerUtil.h"
15
+ #include "Ice/OutputStream.h"
16
+ #include "Ice/Router.h"
17
+ #include "Ice/StringUtil.h"
18
+ #include "Instance.h"
19
+ #include "LocatorInfo.h"
20
+ #include "ObjectAdapterFactory.h"
21
+ #include "OpaqueEndpointI.h"
22
+ #include "Random.h"
23
+ #include "ReferenceFactory.h"
24
+ #include "RouterInfo.h"
25
+ #include "TargetCompare.h"
26
+ #include "TraceLevels.h"
30
27
 
31
- #include <functional>
32
28
  #include <algorithm>
29
+ #include <functional>
33
30
 
34
31
  using namespace std;
35
32
  using namespace Ice;
36
33
  using namespace IceInternal;
37
34
 
38
- IceUtil::Shared* IceInternal::upCast(IceInternal::Reference* p) { return p; }
39
-
40
- namespace
41
- {
42
-
43
- IceUtil::Mutex* hashMutex = 0;
44
-
45
- class Init
46
- {
47
- public:
48
-
49
- Init()
50
- {
51
- hashMutex = new IceUtil::Mutex;
52
- }
53
-
54
- ~Init()
55
- {
56
- delete hashMutex;
57
- hashMutex = 0;
58
- }
59
- };
60
-
61
- Init init;
62
-
63
- }
64
-
65
35
  CommunicatorPtr
66
- IceInternal::Reference::getCommunicator() const
36
+ IceInternal::Reference::getCommunicator() const noexcept
67
37
  {
68
38
  return _communicator;
69
39
  }
70
40
 
71
41
  ReferencePtr
72
- IceInternal::Reference::changeContext(const Context& newContext) const
42
+ IceInternal::Reference::changeContext(Context newContext) const
73
43
  {
74
- ReferencePtr r = _instance->referenceFactory()->copy(this);
75
- r->_context = new SharedContext(newContext);
44
+ ReferencePtr r = clone();
45
+ r->_context = make_shared<SharedContext>(std::move(newContext));
76
46
  return r;
77
47
  }
78
48
 
79
49
  ReferencePtr
80
50
  IceInternal::Reference::changeMode(Mode newMode) const
81
51
  {
82
- if(newMode == _mode)
83
- {
84
- return ReferencePtr(const_cast<Reference*>(this));
85
- }
86
- ReferencePtr r = _instance->referenceFactory()->copy(this);
52
+ ReferencePtr r = clone();
87
53
  r->_mode = newMode;
88
54
  return r;
89
55
  }
90
56
 
91
57
  ReferencePtr
92
- IceInternal::Reference::changeSecure(bool newSecure) const
93
- {
94
- if(newSecure == _secure)
95
- {
96
- return ReferencePtr(const_cast<Reference*>(this));
97
- }
98
- ReferencePtr r = _instance->referenceFactory()->copy(this);
99
- r->_secure = newSecure;
100
- return r;
101
- }
102
-
103
- ReferencePtr
104
- IceInternal::Reference::changeIdentity(const Identity& newIdentity) const
58
+ IceInternal::Reference::changeIdentity(Identity newIdentity) const
105
59
  {
106
- if(newIdentity == _identity)
107
- {
108
- return ReferencePtr(const_cast<Reference*>(this));
109
- }
110
- ReferencePtr r = _instance->referenceFactory()->copy(this);
111
- r->_identity = newIdentity;
60
+ ReferencePtr r = clone();
61
+ r->_identity = std::move(newIdentity);
112
62
  return r;
113
63
  }
114
64
 
115
65
  ReferencePtr
116
- IceInternal::Reference::changeFacet(const string& newFacet) const
66
+ IceInternal::Reference::changeFacet(string newFacet) const
117
67
  {
118
- if(newFacet == _facet)
119
- {
120
- return ReferencePtr(const_cast<Reference*>(this));
121
- }
122
- ReferencePtr r = _instance->referenceFactory()->copy(this);
123
- r->_facet = newFacet;
68
+ ReferencePtr r = clone();
69
+ r->_facet = std::move(newFacet);
124
70
  return r;
125
71
  }
126
72
 
127
73
  ReferencePtr
128
- IceInternal::Reference::changeInvocationTimeout(int invocationTimeout) const
74
+ IceInternal::Reference::changeInvocationTimeout(chrono::milliseconds invocationTimeout) const
129
75
  {
130
- if(_invocationTimeout == invocationTimeout)
131
- {
132
- return ReferencePtr(const_cast<Reference*>(this));
133
- }
134
- ReferencePtr r = _instance->referenceFactory()->copy(this);
76
+ ReferencePtr r = clone();
135
77
  r->_invocationTimeout = invocationTimeout;
136
78
  return r;
137
79
  }
138
80
 
139
81
  ReferencePtr
140
- IceInternal::Reference::changeEncoding(const Ice::EncodingVersion& encoding) const
82
+ IceInternal::Reference::changeEncoding(Ice::EncodingVersion encoding) const
141
83
  {
142
- if(_encoding == encoding)
143
- {
144
- return ReferencePtr(const_cast<Reference*>(this));
145
- }
146
- ReferencePtr r = _instance->referenceFactory()->copy(this);
84
+ ReferencePtr r = clone();
147
85
  r->_encoding = encoding;
148
86
  return r;
149
87
  }
@@ -151,45 +89,33 @@ IceInternal::Reference::changeEncoding(const Ice::EncodingVersion& encoding) con
151
89
  ReferencePtr
152
90
  IceInternal::Reference::changeCompress(bool newCompress) const
153
91
  {
154
- if(_overrideCompress && newCompress == _compress)
155
- {
156
- return ReferencePtr(const_cast<Reference*>(this));
157
- }
158
- ReferencePtr r = _instance->referenceFactory()->copy(this);
92
+ ReferencePtr r = clone();
159
93
  r->_compress = newCompress;
160
- r->_overrideCompress = true;
161
94
  return r;
162
95
  }
163
96
 
164
- bool
165
- IceInternal::Reference::getCompressOverride(bool& compress) const
97
+ optional<bool>
98
+ IceInternal::Reference::getCompressOverride() const noexcept
166
99
  {
167
100
  DefaultsAndOverridesPtr defaultsAndOverrides = getInstance()->defaultsAndOverrides();
168
- if(defaultsAndOverrides->overrideCompress)
169
- {
170
- compress = defaultsAndOverrides->overrideCompressValue;
171
- }
172
- else if(_overrideCompress)
173
- {
174
- compress = _compress;
175
- }
176
- else
177
- {
178
- return false;
179
- }
180
- return true;
101
+ optional<bool> compress =
102
+ defaultsAndOverrides->overrideCompress.has_value() ? defaultsAndOverrides->overrideCompress : _compress;
103
+ return compress;
181
104
  }
182
105
 
183
- Int
184
- Reference::hash() const
106
+ size_t
107
+ Reference::hash() const noexcept
185
108
  {
186
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(hashMutex);
187
- if(!_hashInitialized)
188
- {
189
- _hashValue = hashInit();
190
- _hashInitialized = true;
191
- }
192
- return _hashValue;
109
+ size_t h = 5381;
110
+ hashAdd(h, static_cast<int32_t>(_mode));
111
+ hashAdd(h, _identity.name);
112
+ hashAdd(h, _identity.category);
113
+ hashAdd(h, _context->getValue());
114
+ hashAdd(h, _facet);
115
+ hashAdd(h, _compress);
116
+ // We don't include protocol and encoding in the hash; they are using 1.0 and 1.1, respectively.
117
+ hashAdd(h, _invocationTimeout.count());
118
+ return h;
193
119
  }
194
120
 
195
121
  void
@@ -203,20 +129,20 @@ IceInternal::Reference::streamWrite(OutputStream* s) const
203
129
  //
204
130
  // For compatibility with the old FacetPath.
205
131
  //
206
- if(_facet.empty())
132
+ if (_facet.empty())
207
133
  {
208
- s->write(static_cast<string*>(0), static_cast<string*>(0));
134
+ s->write(static_cast<string*>(nullptr), static_cast<string*>(nullptr));
209
135
  }
210
136
  else
211
137
  {
212
138
  s->write(&_facet, &_facet + 1);
213
139
  }
214
140
 
215
- s->write(static_cast<Byte>(_mode));
141
+ s->write(static_cast<uint8_t>(_mode));
216
142
 
217
- s->write(_secure);
143
+ s->write(false); // secure, no longer used
218
144
 
219
- if(s->getEncoding() != Ice::Encoding_1_0)
145
+ if (s->getEncoding() != Ice::Encoding_1_0)
220
146
  {
221
147
  s->write(_protocol);
222
148
  s->write(_encoding);
@@ -248,7 +174,7 @@ IceInternal::Reference::toString() const
248
174
  // the identity string in quotes.
249
175
  //
250
176
 
251
- if(id.find_first_of(separators) != string::npos)
177
+ if (id.find_first_of(separators) != string::npos)
252
178
  {
253
179
  s << '"' << id << '"';
254
180
  }
@@ -257,7 +183,7 @@ IceInternal::Reference::toString() const
257
183
  s << id;
258
184
  }
259
185
 
260
- if(!_facet.empty())
186
+ if (!_facet.empty())
261
187
  {
262
188
  s << " -f ";
263
189
 
@@ -267,7 +193,7 @@ IceInternal::Reference::toString() const
267
193
  // the reference parser uses as separators, then we enclose
268
194
  // the facet string in quotes.
269
195
  //
270
- if(fs.find_first_of(separators) != string::npos)
196
+ if (fs.find_first_of(separators) != string::npos)
271
197
  {
272
198
  s << '"' << fs << '"';
273
199
  }
@@ -277,11 +203,11 @@ IceInternal::Reference::toString() const
277
203
  }
278
204
  }
279
205
 
280
- switch(_mode)
206
+ switch (_mode)
281
207
  {
282
208
  case ModeTwoway:
283
209
  {
284
- s << " -t";
210
+ // Don't print the default mode.
285
211
  break;
286
212
  }
287
213
 
@@ -310,82 +236,66 @@ IceInternal::Reference::toString() const
310
236
  }
311
237
  }
312
238
 
313
- if(_secure)
239
+ if (_protocol != Protocol_1_0)
314
240
  {
315
- s << " -s";
241
+ // We print the protocol unless it's 1.0.
242
+ s << " -p " << _protocol;
316
243
  }
317
244
 
318
- if(_protocol != Ice::Protocol_1_0)
245
+ // We print the encoding if it's not 1.1 or if Ice.Default.EncodingVersion is set to something other than 1.1.
246
+ if (_encoding != Ice::Encoding_1_1 || _instance->defaultsAndOverrides()->defaultEncoding != Ice::Encoding_1_1)
319
247
  {
320
- //
321
- // We only print the protocol if it's not 1.0. It's fine as
322
- // long as we don't add Ice.Default.ProtocolVersion, a
323
- // stringified proxy will convert back to the same proxy with
324
- // stringToProxy.
325
- //
326
- s << " -p " << _protocol;
248
+ s << " -e " << _encoding;
327
249
  }
328
250
 
329
- //
330
- // Always print the encoding version to ensure a stringified proxy
331
- // will convert back to a proxy with the same encoding with
332
- // stringToProxy (and won't use Ice.Default.EncodingVersion).
333
- //
334
- s << " -e " << _encoding;
335
-
336
251
  return s.str();
337
252
 
338
253
  // Derived class writes the remainder of the string.
339
254
  }
340
255
 
341
256
  bool
342
- IceInternal::Reference::operator==(const Reference& r) const
257
+ IceInternal::Reference::operator==(const Reference& r) const noexcept
343
258
  {
344
259
  //
345
260
  // Note: if(this == &r) test is performed by each non-abstract derived class.
346
261
  //
347
262
 
348
- if(_mode != r._mode)
263
+ if (_mode != r._mode)
349
264
  {
350
265
  return false;
351
266
  }
352
267
 
353
- if(_secure != r._secure)
268
+ if (_identity != r._identity)
354
269
  {
355
270
  return false;
356
271
  }
357
272
 
358
- if(_identity != r._identity)
273
+ if (_context->getValue() != r._context->getValue())
359
274
  {
360
275
  return false;
361
276
  }
362
277
 
363
- if(_context->getValue() != r._context->getValue())
278
+ if (_facet != r._facet)
364
279
  {
365
280
  return false;
366
281
  }
367
282
 
368
- if(_facet != r._facet)
283
+ if (_compress != r._compress)
369
284
  {
370
285
  return false;
371
286
  }
372
287
 
373
- if((_overrideCompress != r._overrideCompress) || (_overrideCompress && _compress != r._compress))
288
+ if (_protocol != r._protocol)
374
289
  {
375
290
  return false;
376
291
  }
377
292
 
378
- if(_protocol != r._protocol)
293
+ if (_encoding != r._encoding)
379
294
  {
380
295
  return false;
381
296
  }
382
297
 
383
- if(_encoding != r._encoding)
384
- {
385
- return false;
386
- }
387
-
388
- if(_invocationTimeout != r._invocationTimeout)
298
+ if (_invocationTimeout != r._invocationTimeout)
389
299
  {
390
300
  return false;
391
301
  }
@@ -393,100 +303,80 @@ IceInternal::Reference::operator==(const Reference& r) const
393
303
  }
394
304
 
395
305
  bool
396
- IceInternal::Reference::operator<(const Reference& r) const
306
+ IceInternal::Reference::operator<(const Reference& r) const noexcept
397
307
  {
398
308
  //
399
309
  // Note: if(this == &r) test is performed by each non-abstract derived class.
400
310
  //
401
311
 
402
- if(_mode < r._mode)
312
+ if (_mode < r._mode)
403
313
  {
404
314
  return true;
405
315
  }
406
- else if(r._mode < _mode)
316
+ else if (r._mode < _mode)
407
317
  {
408
318
  return false;
409
319
  }
410
320
 
411
- if(_identity < r._identity)
321
+ if (_identity < r._identity)
412
322
  {
413
323
  return true;
414
324
  }
415
- else if(r._identity < _identity)
325
+ else if (r._identity < _identity)
416
326
  {
417
327
  return false;
418
328
  }
419
329
 
420
- if(_context->getValue() < r._context->getValue())
330
+ if (_context->getValue() < r._context->getValue())
421
331
  {
422
332
  return true;
423
333
  }
424
- else if(r._context->getValue() < _context->getValue())
334
+ else if (r._context->getValue() < _context->getValue())
425
335
  {
426
336
  return false;
427
337
  }
428
338
 
429
- if(_facet < r._facet)
339
+ if (_facet < r._facet)
430
340
  {
431
341
  return true;
432
342
  }
433
- else if(r._facet < _facet)
343
+ else if (r._facet < _facet)
434
344
  {
435
345
  return false;
436
346
  }
437
347
 
438
- if(!_overrideCompress && r._overrideCompress)
348
+ if (_compress < r._compress)
439
349
  {
440
350
  return true;
441
351
  }
442
- else if(r._overrideCompress < _overrideCompress)
352
+ else if (r._compress < _compress)
443
353
  {
444
354
  return false;
445
355
  }
446
- else if(_overrideCompress)
447
- {
448
- if(!_compress && r._compress)
449
- {
450
- return true;
451
- }
452
- else if(r._compress < _compress)
453
- {
454
- return false;
455
- }
456
- }
457
356
 
458
- if(!_secure && r._secure)
357
+ if (_protocol < r._protocol)
459
358
  {
460
359
  return true;
461
360
  }
462
- else if(r._secure < _secure)
361
+ else if (r._protocol < _protocol)
463
362
  {
464
363
  return false;
465
364
  }
466
365
 
467
- if(_protocol < r._protocol)
366
+ if (_encoding < r._encoding)
468
367
  {
469
368
  return true;
470
369
  }
471
- else if(r._protocol < _protocol)
370
+ else if (r._encoding < _encoding)
472
371
  {
473
372
  return false;
474
373
  }
475
374
 
476
- if(_encoding < r._encoding)
375
+ if (_invocationTimeout < r._invocationTimeout)
477
376
  {
478
377
  return true;
479
378
  }
480
- else if(r._encoding < _encoding)
481
- {
482
- return false;
483
- }
484
-
485
- if(_invocationTimeout < r._invocationTimeout)
486
- {
487
- return true;
488
- }
489
- else if(r._invocationTimeout < _invocationTimeout)
379
+ else if (r._invocationTimeout < _invocationTimeout)
490
380
  {
491
381
  return false;
492
382
  }
@@ -494,195 +384,134 @@ IceInternal::Reference::operator<(const Reference& r) const
494
384
  return false;
495
385
  }
496
386
 
497
- #ifndef ICE_CPP11_COMPILER
498
- class ConnectionIsDatagram : public unary_function<ConnectionIPtr, bool>
499
- {
500
- public:
501
-
502
- bool
503
- operator()(ConnectionIPtr p) const
504
- {
505
- return p->endpoint()->datagram();
506
- }
507
- };
508
-
509
- class ConnectionIsSecure : public unary_function<ConnectionIPtr, bool>
510
- {
511
- public:
512
-
513
- bool
514
- operator()(ConnectionIPtr p) const
515
- {
516
- return p->endpoint()->secure();
517
- }
518
- };
519
- #endif
520
-
521
- IceInternal::Reference::Reference(const InstancePtr& instance,
522
- const CommunicatorPtr& communicator,
523
- const Identity& id,
524
- const string& facet,
525
- Mode mode,
526
- bool secure,
527
- const ProtocolVersion& protocol,
528
- const EncodingVersion& encoding,
529
- int invocationTimeout,
530
- const Ice::Context& ctx) :
531
- _hashInitialized(false),
532
- _instance(instance),
533
- _communicator(communicator),
534
- _mode(mode),
535
- _secure(secure),
536
- _identity(id),
537
- _context(new SharedContext(ctx)),
538
- _facet(facet),
539
- _protocol(protocol),
540
- _encoding(encoding),
541
- _invocationTimeout(invocationTimeout),
542
- _overrideCompress(false),
543
- _compress(false)
544
- {
545
- }
546
-
547
- IceInternal::Reference::Reference(const Reference& r) :
548
- IceUtil::Shared(),
549
- _hashInitialized(false),
550
- _instance(r._instance),
551
- _communicator(r._communicator),
552
- _mode(r._mode),
553
- _secure(r._secure),
554
- _identity(r._identity),
555
- _context(r._context),
556
- _facet(r._facet),
557
- _protocol(r._protocol),
558
- _encoding(r._encoding),
559
- _invocationTimeout(r._invocationTimeout),
560
- _overrideCompress(r._overrideCompress),
561
- _compress(r._compress)
387
+ IceInternal::Reference::Reference(
388
+ InstancePtr instance,
389
+ CommunicatorPtr communicator,
390
+ Identity id,
391
+ string facet,
392
+ Mode mode,
393
+ std::optional<bool> compress,
394
+ ProtocolVersion protocol,
395
+ EncodingVersion encoding,
396
+ chrono::milliseconds invocationTimeout,
397
+ Context ctx)
398
+ : _instance(std::move(instance)),
399
+ _communicator(std::move(communicator)),
400
+ _mode(mode),
401
+ _compress(compress),
402
+ _identity(std::move(id)),
403
+ _context(make_shared<SharedContext>(std::move(ctx))),
404
+ _facet(std::move(facet)),
405
+ _protocol(protocol),
406
+ _encoding(encoding),
407
+ _invocationTimeout(invocationTimeout)
408
+ {
409
+ }
410
+
411
+ IceInternal::Reference::Reference(const Reference& r)
412
+ : enable_shared_from_this<Reference>(),
413
+ _instance(r._instance),
414
+ _communicator(r._communicator),
415
+ _mode(r._mode),
416
+ _compress(r._compress),
417
+ _identity(r._identity),
418
+ _context(r._context),
419
+ _facet(r._facet),
420
+ _protocol(r._protocol),
421
+ _encoding(r._encoding),
422
+ _invocationTimeout(r._invocationTimeout)
423
+ {
424
+ }
425
+
426
+ IceInternal::FixedReference::FixedReference(
427
+ InstancePtr instance,
428
+ CommunicatorPtr communicator,
429
+ Identity id,
430
+ string facet,
431
+ Mode mode,
432
+ std::optional<bool> compress,
433
+ ProtocolVersion protocol,
434
+ EncodingVersion encoding,
435
+ ConnectionIPtr fixedConnection,
436
+ chrono::milliseconds invocationTimeout,
437
+ Ice::Context context)
438
+ : Reference(
439
+ std::move(instance),
440
+ std::move(communicator),
441
+ std::move(id),
442
+ std::move(facet),
443
+ mode,
444
+ compress,
445
+ protocol,
446
+ encoding,
447
+ invocationTimeout,
448
+ std::move(context)),
449
+ _fixedConnection(std::move(fixedConnection))
562
450
  {
563
451
  }
564
452
 
565
- int
566
- IceInternal::Reference::hashInit() const
567
- {
568
- Int h = 5381;
569
- hashAdd(h, static_cast<Int>(_mode));
570
- hashAdd(h, _secure);
571
- hashAdd(h, _identity.name);
572
- hashAdd(h, _identity.category);
573
- hashAdd(h, _context->getValue());
574
- hashAdd(h, _facet);
575
- hashAdd(h, _overrideCompress);
576
- if(_overrideCompress)
577
- {
578
- hashAdd(h, _compress);
579
- }
580
- hashAdd(h, _protocol.major);
581
- hashAdd(h, _protocol.minor);
582
- hashAdd(h, _encoding.major);
583
- hashAdd(h, _encoding.minor);
584
- hashAdd(h, _invocationTimeout);
585
- return h;
586
- }
587
-
588
- IceUtil::Shared* IceInternal::upCast(IceInternal::FixedReference* p) { return p; }
589
-
590
- IceInternal::FixedReference::FixedReference(const InstancePtr& instance,
591
- const CommunicatorPtr& communicator,
592
- const Identity& id,
593
- const string& facet,
594
- Mode mode,
595
- bool secure,
596
- const ProtocolVersion& protocol,
597
- const EncodingVersion& encoding,
598
- const ConnectionIPtr& fixedConnection,
599
- int invocationTimeout,
600
- const Ice::Context& context,
601
- const IceUtil::Optional<bool>& compress) :
602
- Reference(instance, communicator, id, facet, mode, secure, protocol, encoding, invocationTimeout, context),
603
- _fixedConnection(fixedConnection)
604
- {
605
- if(compress)
606
- {
607
- _overrideCompress = true;
608
- _compress = *compress;
609
- }
610
- }
611
-
612
453
  vector<EndpointIPtr>
613
454
  IceInternal::FixedReference::getEndpoints() const
614
455
  {
615
- return vector<EndpointIPtr>();
456
+ return {};
616
457
  }
617
458
 
618
459
  string
619
460
  IceInternal::FixedReference::getAdapterId() const
620
461
  {
621
- return string();
462
+ return {};
622
463
  }
623
464
 
624
465
  bool
625
- IceInternal::FixedReference::getCollocationOptimized() const
466
+ IceInternal::FixedReference::getCollocationOptimized() const noexcept
626
467
  {
627
468
  return false;
628
469
  }
629
470
 
630
471
  bool
631
- IceInternal::FixedReference::getCacheConnection() const
472
+ IceInternal::FixedReference::getCacheConnection() const noexcept
632
473
  {
633
474
  return true;
634
475
  }
635
476
 
636
- bool
637
- IceInternal::FixedReference::getPreferSecure() const
638
- {
639
- return false;
640
- }
641
-
642
477
  Ice::EndpointSelectionType
643
- IceInternal::FixedReference::getEndpointSelection() const
478
+ IceInternal::FixedReference::getEndpointSelection() const noexcept
644
479
  {
645
- return ICE_ENUM(EndpointSelectionType, Random);
480
+ return EndpointSelectionType::Random;
646
481
  }
647
482
 
648
- int
649
- IceInternal::FixedReference::getLocatorCacheTimeout() const
483
+ chrono::milliseconds
484
+ IceInternal::FixedReference::getLocatorCacheTimeout() const noexcept
650
485
  {
651
- return 0;
486
+ return 0ms;
652
487
  }
653
488
 
654
489
  string
655
490
  IceInternal::FixedReference::getConnectionId() const
656
491
  {
657
- return string();
658
- }
659
-
660
- IceUtil::Optional<int>
661
- IceInternal::FixedReference::getTimeout() const
662
- {
663
- return IceUtil::Optional<int>();
492
+ return {};
664
493
  }
665
494
 
666
495
  ReferencePtr
667
- IceInternal::FixedReference::changeEndpoints(const vector<EndpointIPtr>& /*newEndpoints*/) const
496
+ IceInternal::FixedReference::changeEndpoints(vector<EndpointIPtr> /*newEndpoints*/) const
668
497
  {
669
498
  throw FixedProxyException(__FILE__, __LINE__);
670
499
  }
671
500
 
672
501
  ReferencePtr
673
- IceInternal::FixedReference::changeAdapterId(const string& /*newAdapterId*/) const
502
+ IceInternal::FixedReference::changeAdapterId(string /*newAdapterId*/) const
674
503
  {
675
504
  throw FixedProxyException(__FILE__, __LINE__);
676
505
  }
677
506
 
678
507
  ReferencePtr
679
- IceInternal::FixedReference::changeLocator(const LocatorPrxPtr&) const
508
+ IceInternal::FixedReference::changeLocator(optional<LocatorPrx>) const
680
509
  {
681
510
  throw FixedProxyException(__FILE__, __LINE__);
682
511
  }
683
512
 
684
513
  ReferencePtr
685
- IceInternal::FixedReference::changeRouter(const RouterPrxPtr&) const
514
+ IceInternal::FixedReference::changeRouter(optional<RouterPrx>) const
686
515
  {
687
516
  throw FixedProxyException(__FILE__, __LINE__);
688
517
  }
@@ -699,12 +528,6 @@ IceInternal::FixedReference::changeCacheConnection(bool) const
699
528
  throw FixedProxyException(__FILE__, __LINE__);
700
529
  }
701
530
 
702
- ReferencePtr
703
- IceInternal::FixedReference::changePreferSecure(bool) const
704
- {
705
- throw FixedProxyException(__FILE__, __LINE__);
706
- }
707
-
708
531
  ReferencePtr
709
532
  IceInternal::FixedReference::changeEndpointSelection(EndpointSelectionType) const
710
533
  {
@@ -712,43 +535,33 @@ IceInternal::FixedReference::changeEndpointSelection(EndpointSelectionType) cons
712
535
  }
713
536
 
714
537
  ReferencePtr
715
- IceInternal::FixedReference::changeLocatorCacheTimeout(int) const
538
+ IceInternal::FixedReference::changeLocatorCacheTimeout(chrono::milliseconds) const
716
539
  {
717
540
  throw FixedProxyException(__FILE__, __LINE__);
718
541
  }
719
542
 
720
543
  ReferencePtr
721
- IceInternal::FixedReference::changeTimeout(int) const
544
+ IceInternal::FixedReference::changeConnectionId(string) const
722
545
  {
723
546
  throw FixedProxyException(__FILE__, __LINE__);
724
547
  }
725
548
 
726
549
  ReferencePtr
727
- IceInternal::FixedReference::changeConnectionId(const string&) const
550
+ IceInternal::FixedReference::changeConnection(Ice::ConnectionIPtr newConnection) const
728
551
  {
729
- throw FixedProxyException(__FILE__, __LINE__);
730
- }
731
-
732
- ReferencePtr
733
- IceInternal::FixedReference::changeConnection(const Ice::ConnectionIPtr& newConnection) const
734
- {
735
- if(newConnection == _fixedConnection)
736
- {
737
- return FixedReferencePtr(const_cast<FixedReference*>(this));
738
- }
739
- FixedReferencePtr r = FixedReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
740
- r->_fixedConnection = newConnection;
552
+ FixedReferencePtr r = dynamic_pointer_cast<FixedReference>(clone());
553
+ r->_fixedConnection = std::move(newConnection);
741
554
  return r;
742
555
  }
743
556
 
744
557
  bool
745
- IceInternal::FixedReference::isIndirect() const
558
+ IceInternal::FixedReference::isIndirect() const noexcept
746
559
  {
747
560
  return false;
748
561
  }
749
562
 
750
563
  bool
751
- IceInternal::FixedReference::isWellKnown() const
564
+ IceInternal::FixedReference::isWellKnown() const noexcept
752
565
  {
753
566
  return false;
754
567
  }
@@ -760,88 +573,72 @@ IceInternal::FixedReference::streamWrite(OutputStream*) const
760
573
  }
761
574
 
762
575
  PropertyDict
763
- IceInternal::FixedReference::toProperty(const string&) const
576
+ IceInternal::FixedReference::toProperty(string) const
764
577
  {
765
578
  throw FixedProxyException(__FILE__, __LINE__);
766
579
  }
767
580
 
768
581
  RequestHandlerPtr
769
- IceInternal::FixedReference::getRequestHandler(const Ice::ObjectPrxPtr& proxy) const
582
+ IceInternal::FixedReference::getRequestHandler() const
770
583
  {
771
- switch(getMode())
772
- {
773
- case Reference::ModeTwoway:
774
- case Reference::ModeOneway:
775
- case Reference::ModeBatchOneway:
584
+ // We need to perform all these checks here and not in the constructor because changeConnection() clones then
585
+ // sets the connection.
586
+
587
+ switch (getMode())
776
588
  {
777
- if(_fixedConnection->endpoint()->datagram())
589
+ case Reference::ModeTwoway:
590
+ case Reference::ModeOneway:
591
+ case Reference::ModeBatchOneway:
778
592
  {
779
- throw NoEndpointException(__FILE__, __LINE__, toString());
593
+ if (_fixedConnection->endpoint()->datagram())
594
+ {
595
+ throw NoEndpointException(
596
+ __FILE__,
597
+ __LINE__,
598
+ ObjectPrx::_fromReference(const_cast<FixedReference*>(this)->shared_from_this()));
599
+ }
600
+ break;
780
601
  }
781
- break;
782
- }
783
602
 
784
- case Reference::ModeDatagram:
785
- case Reference::ModeBatchDatagram:
786
- {
787
- if(!_fixedConnection->endpoint()->datagram())
603
+ case Reference::ModeDatagram:
604
+ case Reference::ModeBatchDatagram:
788
605
  {
789
- throw NoEndpointException(__FILE__, __LINE__, toString());
606
+ if (!_fixedConnection->endpoint()->datagram())
607
+ {
608
+ throw NoEndpointException(
609
+ __FILE__,
610
+ __LINE__,
611
+ ObjectPrx::_fromReference(const_cast<FixedReference*>(this)->shared_from_this()));
612
+ }
613
+ break;
790
614
  }
791
- break;
792
- }
793
- }
794
-
795
- //
796
- // If a secure connection is requested or secure overrides is set,
797
- // check if the connection is secure.
798
- //
799
- bool secure;
800
- DefaultsAndOverridesPtr defaultsAndOverrides = getInstance()->defaultsAndOverrides();
801
- if(defaultsAndOverrides->overrideSecure)
802
- {
803
- secure = defaultsAndOverrides->overrideSecureValue;
804
- }
805
- else
806
- {
807
- secure = getSecure();
808
- }
809
- if(secure && !_fixedConnection->endpoint()->secure())
810
- {
811
- throw NoEndpointException(__FILE__, __LINE__, toString());
812
615
  }
813
616
 
814
617
  _fixedConnection->throwException(); // Throw in case our connection is already destroyed.
815
618
 
816
- bool compress = false;
817
- if(defaultsAndOverrides->overrideCompress)
818
- {
819
- compress = defaultsAndOverrides->overrideCompressValue;
820
- }
821
- else if(_overrideCompress)
822
- {
823
- compress = _compress;
824
- }
619
+ DefaultsAndOverridesPtr defaultsAndOverrides = getInstance()->defaultsAndOverrides();
620
+ bool compress = defaultsAndOverrides->overrideCompress.has_value() ? *defaultsAndOverrides->overrideCompress
621
+ : getCompress().value_or(false);
825
622
 
826
- ReferencePtr ref = const_cast<FixedReference*>(this);
827
- return proxy->_setRequestHandler(ICE_MAKE_SHARED(ConnectionRequestHandler, ref, _fixedConnection, compress));
623
+ ReferencePtr ref = const_cast<FixedReference*>(this)->shared_from_this();
624
+ return make_shared<FixedRequestHandler>(ref, _fixedConnection, compress);
828
625
  }
829
626
 
830
- BatchRequestQueuePtr
831
- IceInternal::FixedReference::getBatchRequestQueue() const
627
+ const BatchRequestQueuePtr&
628
+ IceInternal::FixedReference::getBatchRequestQueue() const noexcept
832
629
  {
833
630
  return _fixedConnection->getBatchRequestQueue();
834
631
  }
835
632
 
836
633
  bool
837
- IceInternal::FixedReference::operator==(const Reference& r) const
634
+ IceInternal::FixedReference::operator==(const Reference& r) const noexcept
838
635
  {
839
- if(this == &r)
636
+ if (this == &r)
840
637
  {
841
638
  return true;
842
639
  }
843
- const FixedReference* rhs = dynamic_cast<const FixedReference*>(&r);
844
- if(!rhs || !Reference::operator==(r))
640
+ const auto* rhs = dynamic_cast<const FixedReference*>(&r);
641
+ if (!rhs || !Reference::operator==(r))
845
642
  {
846
643
  return false;
847
644
  }
@@ -849,23 +646,23 @@ IceInternal::FixedReference::operator==(const Reference& r) const
849
646
  }
850
647
 
851
648
  bool
852
- IceInternal::FixedReference::operator<(const Reference& r) const
649
+ IceInternal::FixedReference::operator<(const Reference& r) const noexcept
853
650
  {
854
- if(this == &r)
651
+ if (this == &r)
855
652
  {
856
653
  return false;
857
654
  }
858
- if(Reference::operator<(r))
655
+ if (Reference::operator<(r))
859
656
  {
860
657
  return true;
861
658
  }
862
- if(!Reference::operator==(r))
659
+ if (!Reference::operator==(r))
863
660
  {
864
661
  return false;
865
662
  }
866
663
 
867
- const FixedReference* rhs = dynamic_cast<const FixedReference*>(&r);
868
- if(!rhs)
664
+ const auto* rhs = dynamic_cast<const FixedReference*>(&r);
665
+ if (!rhs)
869
666
  {
870
667
  assert(dynamic_cast<const RoutableReference*>(&r));
871
668
  return false; // As a rule, routable references are superior to fixed references.
@@ -876,50 +673,50 @@ IceInternal::FixedReference::operator<(const Reference& r) const
876
673
  ReferencePtr
877
674
  IceInternal::FixedReference::clone() const
878
675
  {
879
- return new FixedReference(*this);
880
- }
881
-
882
- IceInternal::FixedReference::FixedReference(const FixedReference& r) :
883
- Reference(r),
884
- _fixedConnection(r._fixedConnection)
885
- {
886
- }
887
-
888
- IceUtil::Shared* IceInternal::upCast(IceInternal::RoutableReference* p) { return p; }
889
-
890
- IceInternal::RoutableReference::RoutableReference(const InstancePtr& instance,
891
- const CommunicatorPtr& communicator,
892
- const Identity& id,
893
- const string& facet,
894
- Mode mode,
895
- bool secure,
896
- const ProtocolVersion& protocol,
897
- const EncodingVersion& encoding,
898
- const vector<EndpointIPtr>& endpoints,
899
- const string& adapterId,
900
- const LocatorInfoPtr& locatorInfo,
901
- const RouterInfoPtr& routerInfo,
902
- bool collocationOptimized,
903
- bool cacheConnection,
904
- bool preferSecure,
905
- EndpointSelectionType endpointSelection,
906
- int locatorCacheTimeout,
907
- int invocationTimeout,
908
- const Ice::Context& ctx) :
909
- Reference(instance, communicator, id, facet, mode, secure, protocol, encoding, invocationTimeout, ctx),
910
- _endpoints(endpoints),
911
- _adapterId(adapterId),
912
- _locatorInfo(locatorInfo),
913
- _routerInfo(routerInfo),
914
- _collocationOptimized(collocationOptimized),
915
- _cacheConnection(cacheConnection),
916
- _preferSecure(preferSecure),
917
- _endpointSelection(endpointSelection),
918
- _locatorCacheTimeout(locatorCacheTimeout),
919
- _overrideTimeout(false),
920
- _timeout(-1)
676
+ return make_shared<FixedReference>(*this);
677
+ }
678
+
679
+ IceInternal::RoutableReference::RoutableReference(
680
+ InstancePtr instance,
681
+ CommunicatorPtr communicator,
682
+ Identity id,
683
+ string facet,
684
+ Mode mode,
685
+ optional<bool> compress,
686
+ ProtocolVersion protocol,
687
+ EncodingVersion encoding,
688
+ vector<EndpointIPtr> endpoints,
689
+ string adapterId,
690
+ LocatorInfoPtr locatorInfo,
691
+ RouterInfoPtr routerInfo,
692
+ bool collocationOptimized,
693
+ bool cacheConnection,
694
+ EndpointSelectionType endpointSelection,
695
+ chrono::milliseconds locatorCacheTimeout,
696
+ chrono::milliseconds invocationTimeout,
697
+ Ice::Context ctx)
698
+ : Reference(
699
+ std::move(instance),
700
+ std::move(communicator),
701
+ std::move(id),
702
+ std::move(facet),
703
+ mode,
704
+ compress,
705
+ protocol,
706
+ encoding,
707
+ invocationTimeout,
708
+ std::move(ctx)),
709
+ _endpoints(std::move(endpoints)),
710
+ _adapterId(std::move(adapterId)),
711
+ _locatorInfo(std::move(locatorInfo)),
712
+ _routerInfo(std::move(routerInfo)),
713
+ _collocationOptimized(collocationOptimized),
714
+ _cacheConnection(cacheConnection),
715
+ _endpointSelection(endpointSelection),
716
+ _locatorCacheTimeout(locatorCacheTimeout)
921
717
  {
922
718
  assert(_adapterId.empty() || _endpoints.empty());
719
+ setBatchRequestQueue();
923
720
  }
924
721
 
925
722
  vector<EndpointIPtr>
@@ -935,43 +732,37 @@ IceInternal::RoutableReference::getAdapterId() const
935
732
  }
936
733
 
937
734
  LocatorInfoPtr
938
- IceInternal::RoutableReference::getLocatorInfo() const
735
+ IceInternal::RoutableReference::getLocatorInfo() const noexcept
939
736
  {
940
737
  return _locatorInfo;
941
738
  }
942
739
 
943
740
  RouterInfoPtr
944
- IceInternal::RoutableReference::getRouterInfo() const
741
+ IceInternal::RoutableReference::getRouterInfo() const noexcept
945
742
  {
946
743
  return _routerInfo;
947
744
  }
948
745
 
949
746
  bool
950
- IceInternal::RoutableReference::getCollocationOptimized() const
747
+ IceInternal::RoutableReference::getCollocationOptimized() const noexcept
951
748
  {
952
749
  return _collocationOptimized;
953
750
  }
954
751
 
955
752
  bool
956
- IceInternal::RoutableReference::getCacheConnection() const
753
+ IceInternal::RoutableReference::getCacheConnection() const noexcept
957
754
  {
958
755
  return _cacheConnection;
959
756
  }
960
757
 
961
- bool
962
- IceInternal::RoutableReference::getPreferSecure() const
963
- {
964
- return _preferSecure;
965
- }
966
-
967
758
  Ice::EndpointSelectionType
968
- IceInternal::RoutableReference::getEndpointSelection() const
759
+ IceInternal::RoutableReference::getEndpointSelection() const noexcept
969
760
  {
970
761
  return _endpointSelection;
971
762
  }
972
763
 
973
- int
974
- IceInternal::RoutableReference::getLocatorCacheTimeout() const
764
+ chrono::milliseconds
765
+ IceInternal::RoutableReference::getLocatorCacheTimeout() const noexcept
975
766
  {
976
767
  return _locatorCacheTimeout;
977
768
  }
@@ -982,20 +773,22 @@ IceInternal::RoutableReference::getConnectionId() const
982
773
  return _connectionId;
983
774
  }
984
775
 
985
- IceUtil::Optional<int>
986
- IceInternal::RoutableReference::getTimeout() const
776
+ ReferencePtr
777
+ IceInternal::RoutableReference::changeMode(Mode newMode) const
987
778
  {
988
- return _overrideTimeout ? IceUtil::Optional<int>(_timeout) : IceUtil::None;
779
+ ReferencePtr r = Reference::changeMode(newMode);
780
+ static_pointer_cast<RoutableReference>(r)->setBatchRequestQueue();
781
+ return r;
989
782
  }
990
783
 
991
784
  ReferencePtr
992
- IceInternal::RoutableReference::changeEncoding(const Ice::EncodingVersion& encoding) const
785
+ IceInternal::RoutableReference::changeEncoding(Ice::EncodingVersion encoding) const
993
786
  {
994
787
  ReferencePtr r = Reference::changeEncoding(encoding);
995
- if(r.get() != const_cast<RoutableReference*>(this))
788
+ if (r.get() != const_cast<RoutableReference*>(this))
996
789
  {
997
- LocatorInfoPtr& locInfo = RoutableReferencePtr::dynamicCast(r)->_locatorInfo;
998
- if(locInfo && locInfo->getLocator()->ice_getEncodingVersion() != encoding)
790
+ LocatorInfoPtr& locInfo = dynamic_pointer_cast<RoutableReference>(r)->_locatorInfo;
791
+ if (locInfo && locInfo->getLocator()->ice_getEncodingVersion() != encoding)
999
792
  {
1000
793
  locInfo = getInstance()->locatorManager()->get(locInfo->getLocator()->ice_encodingVersion(encoding));
1001
794
  }
@@ -1008,79 +801,60 @@ IceInternal::RoutableReference::changeCompress(bool newCompress) const
1008
801
  {
1009
802
  ReferencePtr r = Reference::changeCompress(newCompress);
1010
803
  // Also override the compress flag on the endpoints if it was updated.
1011
- if(r.get() != const_cast<RoutableReference*>(this) && !_endpoints.empty())
804
+ if (r.get() != const_cast<RoutableReference*>(this) && !_endpoints.empty())
1012
805
  {
1013
806
  vector<EndpointIPtr> newEndpoints;
1014
- for(vector<EndpointIPtr>::const_iterator p = _endpoints.begin(); p != _endpoints.end(); ++p)
807
+ newEndpoints.reserve(_endpoints.size());
808
+ for (const auto& endpoint : _endpoints)
1015
809
  {
1016
- newEndpoints.push_back((*p)->compress(newCompress));
810
+ newEndpoints.push_back(endpoint->compress(newCompress));
1017
811
  }
1018
- RoutableReferencePtr::dynamicCast(r)->_endpoints = newEndpoints;
812
+ dynamic_pointer_cast<RoutableReference>(r)->_endpoints = newEndpoints;
1019
813
  }
1020
814
  return r;
1021
815
  }
1022
816
 
1023
817
  ReferencePtr
1024
- IceInternal::RoutableReference::changeEndpoints(const vector<EndpointIPtr>& newEndpoints) const
818
+ IceInternal::RoutableReference::changeEndpoints(vector<EndpointIPtr> newEndpoints) const
1025
819
  {
1026
- if(newEndpoints == _endpoints)
1027
- {
1028
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1029
- }
1030
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
1031
- r->_endpoints = newEndpoints;
820
+ RoutableReferencePtr r = dynamic_pointer_cast<RoutableReference>(clone());
821
+ r->_endpoints = std::move(newEndpoints);
1032
822
  r->applyOverrides(r->_endpoints);
1033
823
  r->_adapterId.clear();
1034
824
  return r;
1035
825
  }
1036
826
 
1037
827
  ReferencePtr
1038
- IceInternal::RoutableReference::changeAdapterId(const string& newAdapterId) const
828
+ IceInternal::RoutableReference::changeAdapterId(string newAdapterId) const
1039
829
  {
1040
- if(newAdapterId == _adapterId)
1041
- {
1042
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1043
- }
1044
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
1045
- r->_adapterId = newAdapterId;
830
+ RoutableReferencePtr r = dynamic_pointer_cast<RoutableReference>(clone());
831
+ r->_adapterId = std::move(newAdapterId);
1046
832
  r->_endpoints.clear();
1047
833
  return r;
1048
834
  }
1049
835
 
1050
836
  ReferencePtr
1051
- IceInternal::RoutableReference::changeLocator(const LocatorPrxPtr& newLocator) const
837
+ IceInternal::RoutableReference::changeLocator(optional<LocatorPrx> newLocator) const
1052
838
  {
1053
- LocatorInfoPtr newLocatorInfo = getInstance()->locatorManager()->get(newLocator);
1054
- if(newLocatorInfo == _locatorInfo)
1055
- {
1056
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1057
- }
1058
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
1059
- r->_locatorInfo = newLocatorInfo;
839
+ LocatorInfoPtr newLocatorInfo = newLocator ? getInstance()->locatorManager()->get(newLocator.value()) : nullptr;
840
+ RoutableReferencePtr r = dynamic_pointer_cast<RoutableReference>(clone());
841
+ r->_locatorInfo = std::move(newLocatorInfo);
1060
842
  return r;
1061
843
  }
1062
844
 
1063
845
  ReferencePtr
1064
- IceInternal::RoutableReference::changeRouter(const RouterPrxPtr& newRouter) const
846
+ IceInternal::RoutableReference::changeRouter(optional<RouterPrx> newRouter) const
1065
847
  {
1066
- RouterInfoPtr newRouterInfo = getInstance()->routerManager()->get(newRouter);
1067
- if(newRouterInfo == _routerInfo)
1068
- {
1069
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1070
- }
1071
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
1072
- r->_routerInfo = newRouterInfo;
848
+ RouterInfoPtr newRouterInfo = newRouter ? getInstance()->routerManager()->get(newRouter.value()) : nullptr;
849
+ RoutableReferencePtr r = dynamic_pointer_cast<RoutableReference>(clone());
850
+ r->_routerInfo = std::move(newRouterInfo);
1073
851
  return r;
1074
852
  }
1075
853
 
1076
854
  ReferencePtr
1077
855
  IceInternal::RoutableReference::changeCollocationOptimized(bool newCollocationOptimized) const
1078
856
  {
1079
- if(newCollocationOptimized == _collocationOptimized)
1080
- {
1081
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1082
- }
1083
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
857
+ RoutableReferencePtr r = dynamic_pointer_cast<RoutableReference>(clone());
1084
858
  r->_collocationOptimized = newCollocationOptimized;
1085
859
  return r;
1086
860
  }
@@ -1088,88 +862,39 @@ IceInternal::RoutableReference::changeCollocationOptimized(bool newCollocationOp
1088
862
  ReferencePtr
1089
863
  IceInternal::RoutableReference::changeCacheConnection(bool newCache) const
1090
864
  {
1091
- if(newCache == _cacheConnection)
1092
- {
1093
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1094
- }
1095
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
865
+ RoutableReferencePtr r = dynamic_pointer_cast<RoutableReference>(clone());
1096
866
  r->_cacheConnection = newCache;
1097
867
  return r;
1098
868
  }
1099
869
 
1100
- ReferencePtr
1101
- IceInternal::RoutableReference::changePreferSecure(bool newPreferSecure) const
1102
- {
1103
- if(newPreferSecure == _preferSecure)
1104
- {
1105
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1106
- }
1107
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
1108
- r->_preferSecure = newPreferSecure;
1109
- return r;
1110
- }
1111
-
1112
870
  ReferencePtr
1113
871
  IceInternal::RoutableReference::changeEndpointSelection(EndpointSelectionType newType) const
1114
872
  {
1115
- if(newType == _endpointSelection)
1116
- {
1117
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1118
- }
1119
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
873
+ RoutableReferencePtr r = dynamic_pointer_cast<RoutableReference>(clone());
1120
874
  r->_endpointSelection = newType;
1121
875
  return r;
1122
876
  }
1123
877
 
1124
878
  ReferencePtr
1125
- IceInternal::RoutableReference::changeLocatorCacheTimeout(int timeout) const
879
+ IceInternal::RoutableReference::changeLocatorCacheTimeout(chrono::milliseconds timeout) const
1126
880
  {
1127
- if(timeout == _locatorCacheTimeout)
1128
- {
1129
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1130
- }
1131
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
881
+ RoutableReferencePtr r = dynamic_pointer_cast<RoutableReference>(clone());
1132
882
  r->_locatorCacheTimeout = timeout;
1133
883
  return r;
1134
884
  }
1135
885
 
1136
886
  ReferencePtr
1137
- IceInternal::RoutableReference::changeTimeout(int newTimeout) const
1138
- {
1139
- if(_overrideTimeout && newTimeout == _timeout)
1140
- {
1141
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1142
- }
1143
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
1144
- r->_timeout = newTimeout;
1145
- r->_overrideTimeout = true;
1146
- if(!_endpoints.empty()) // Also override the timeout on the endpoints.
1147
- {
1148
- vector<EndpointIPtr> newEndpoints;
1149
- for(vector<EndpointIPtr>::const_iterator p = _endpoints.begin(); p != _endpoints.end(); ++p)
1150
- {
1151
- newEndpoints.push_back((*p)->timeout(newTimeout));
1152
- }
1153
- r->_endpoints = newEndpoints;
1154
- }
1155
- return r;
1156
- }
1157
-
1158
- ReferencePtr
1159
- IceInternal::RoutableReference::changeConnectionId(const string& id) const
887
+ IceInternal::RoutableReference::changeConnectionId(string id) const
1160
888
  {
1161
- if(id == _connectionId)
1162
- {
1163
- return RoutableReferencePtr(const_cast<RoutableReference*>(this));
1164
- }
1165
- RoutableReferencePtr r = RoutableReferencePtr::dynamicCast(getInstance()->referenceFactory()->copy(this));
889
+ RoutableReferencePtr r = dynamic_pointer_cast<RoutableReference>(clone());
1166
890
  r->_connectionId = id;
1167
- if(!_endpoints.empty()) // Also override the connection id on the endpoints.
891
+ if (!_endpoints.empty()) // Also override the connection id on the endpoints.
1168
892
  {
1169
893
  vector<EndpointIPtr> newEndpoints;
1170
- for(vector<EndpointIPtr>::const_iterator p = _endpoints.begin(); p != _endpoints.end(); ++p)
894
+ newEndpoints.reserve(_endpoints.size());
895
+ for (const auto& endpoint : _endpoints)
1171
896
  {
1172
- newEndpoints.push_back((*p)->connectionId(id));
897
+ newEndpoints.push_back(endpoint->connectionId(id));
1173
898
  }
1174
899
  r->_endpoints = newEndpoints;
1175
900
  }
@@ -1177,30 +902,30 @@ IceInternal::RoutableReference::changeConnectionId(const string& id) const
1177
902
  }
1178
903
 
1179
904
  ReferencePtr
1180
- IceInternal::RoutableReference::changeConnection(const Ice::ConnectionIPtr& connection) const
1181
- {
1182
- return new FixedReference(getInstance(),
1183
- getCommunicator(),
1184
- getIdentity(),
1185
- getFacet(),
1186
- getMode(),
1187
- getSecure(),
1188
- getProtocol(),
1189
- getEncoding(),
1190
- connection,
1191
- getInvocationTimeout(),
1192
- getContext()->getValue(),
1193
- getCompress());
905
+ IceInternal::RoutableReference::changeConnection(Ice::ConnectionIPtr connection) const
906
+ {
907
+ return make_shared<FixedReference>(
908
+ getInstance(),
909
+ getCommunicator(),
910
+ getIdentity(),
911
+ getFacet(),
912
+ getMode(),
913
+ getCompress(),
914
+ getProtocol(),
915
+ getEncoding(),
916
+ std::move(connection),
917
+ getInvocationTimeout(),
918
+ getContext()->getValue());
1194
919
  }
1195
920
 
1196
921
  bool
1197
- IceInternal::RoutableReference::isIndirect() const
922
+ IceInternal::RoutableReference::isIndirect() const noexcept
1198
923
  {
1199
924
  return _endpoints.empty();
1200
925
  }
1201
926
 
1202
927
  bool
1203
- IceInternal::RoutableReference::isWellKnown() const
928
+ IceInternal::RoutableReference::isWellKnown() const noexcept
1204
929
  {
1205
930
  return _endpoints.empty() && _adapterId.empty();
1206
931
  }
@@ -1210,15 +935,15 @@ IceInternal::RoutableReference::streamWrite(OutputStream* s) const
1210
935
  {
1211
936
  Reference::streamWrite(s);
1212
937
 
1213
- Int sz = static_cast<Int>(_endpoints.size());
938
+ auto sz = static_cast<int32_t>(_endpoints.size());
1214
939
  s->writeSize(sz);
1215
- if(sz)
940
+ if (sz)
1216
941
  {
1217
942
  assert(_adapterId.empty());
1218
- for(vector<EndpointIPtr>::const_iterator p = _endpoints.begin(); p != _endpoints.end(); ++p)
943
+ for (const auto& endpoint : _endpoints)
1219
944
  {
1220
- s->write((*p)->type());
1221
- (*p)->streamWrite(s);
945
+ s->write(endpoint->type());
946
+ endpoint->streamWrite(s);
1222
947
  }
1223
948
  }
1224
949
  else
@@ -1239,19 +964,19 @@ IceInternal::RoutableReference::toString() const
1239
964
  //
1240
965
  string result = Reference::toString();
1241
966
 
1242
- if(!_endpoints.empty())
967
+ if (!_endpoints.empty())
1243
968
  {
1244
- for(vector<EndpointIPtr>::const_iterator p = _endpoints.begin(); p != _endpoints.end(); ++p)
969
+ for (const auto& endpoint : _endpoints)
1245
970
  {
1246
- string endp = (*p)->toString();
1247
- if(!endp.empty())
971
+ string endp = endpoint->toString();
972
+ if (!endp.empty())
1248
973
  {
1249
974
  result.append(":");
1250
975
  result.append(endp);
1251
976
  }
1252
977
  }
1253
978
  }
1254
- else if(!_adapterId.empty())
979
+ else if (!_adapterId.empty())
1255
980
  {
1256
981
  result.append(" @ ");
1257
982
 
@@ -1261,7 +986,7 @@ IceInternal::RoutableReference::toString() const
1261
986
  // adapter id string in quotes.
1262
987
  //
1263
988
  string a = escapeString(_adapterId, "", getInstance()->toStringMode());
1264
- if(a.find_first_of(" :@") != string::npos)
989
+ if (a.find_first_of(" :@") != string::npos)
1265
990
  {
1266
991
  result.append("\"");
1267
992
  result.append(a);
@@ -1280,120 +1005,106 @@ IceInternal::RoutableReference::toString() const
1280
1005
  }
1281
1006
 
1282
1007
  PropertyDict
1283
- IceInternal::RoutableReference::toProperty(const string& prefix) const
1008
+ IceInternal::RoutableReference::toProperty(string prefix) const
1284
1009
  {
1285
1010
  Ice::PropertyDict properties;
1286
1011
 
1287
- properties[prefix] = toString();
1288
1012
  properties[prefix + ".CollocationOptimized"] = _collocationOptimized ? "1" : "0";
1289
1013
  properties[prefix + ".ConnectionCached"] = _cacheConnection ? "1" : "0";
1290
- properties[prefix + ".PreferSecure"] = _preferSecure ? "1" : "0";
1291
- properties[prefix + ".EndpointSelection"] = _endpointSelection == ICE_ENUM(EndpointSelectionType, Random) ? "Random" : "Ordered";
1292
- {
1293
- ostringstream s;
1294
- s << _locatorCacheTimeout;
1295
- properties[prefix + ".LocatorCacheTimeout"] = s.str();
1296
- }
1297
- {
1298
- ostringstream s;
1299
- s << getInvocationTimeout();
1300
- properties[prefix + ".InvocationTimeout"] = s.str();
1301
- }
1302
- if(_routerInfo)
1014
+ properties[prefix + ".EndpointSelection"] =
1015
+ _endpointSelection == EndpointSelectionType::Random ? "Random" : "Ordered";
1016
+ properties[prefix + ".LocatorCacheTimeout"] =
1017
+ to_string(chrono::duration_cast<chrono::seconds>(_locatorCacheTimeout).count());
1018
+ properties[prefix + ".InvocationTimeout"] = to_string(getInvocationTimeout().count());
1019
+
1020
+ if (_routerInfo)
1303
1021
  {
1304
1022
  PropertyDict routerProperties = _routerInfo->getRouter()->_getReference()->toProperty(prefix + ".Router");
1305
- for(PropertyDict::const_iterator p = routerProperties.begin(); p != routerProperties.end(); ++p)
1023
+ for (const auto& routerProp : routerProperties)
1306
1024
  {
1307
- properties[p->first] = p->second;
1025
+ properties[routerProp.first] = routerProp.second;
1308
1026
  }
1309
1027
  }
1310
1028
 
1311
- if(_locatorInfo)
1029
+ if (_locatorInfo)
1312
1030
  {
1313
1031
  PropertyDict locatorProperties = _locatorInfo->getLocator()->_getReference()->toProperty(prefix + ".Locator");
1314
- for(PropertyDict::const_iterator p = locatorProperties.begin(); p != locatorProperties.end(); ++p)
1032
+ for (const auto& locatorProp : locatorProperties)
1315
1033
  {
1316
- properties[p->first] = p->second;
1034
+ properties[locatorProp.first] = locatorProp.second;
1317
1035
  }
1318
1036
  }
1319
1037
 
1038
+ properties.emplace(std::move(prefix), toString());
1039
+
1320
1040
  return properties;
1321
1041
  }
1322
1042
 
1323
- int
1324
- IceInternal::RoutableReference::hashInit() const
1043
+ size_t
1044
+ IceInternal::RoutableReference::hash() const noexcept
1325
1045
  {
1326
- int value = Reference::hashInit();
1327
- hashAdd(value, _adapterId);
1328
- return value;
1046
+ size_t h = Reference::hash();
1047
+ hashAdd(h, _adapterId);
1048
+ hashAdd(h, _endpoints);
1049
+ return h;
1329
1050
  }
1330
1051
 
1331
1052
  bool
1332
- IceInternal::RoutableReference::operator==(const Reference& r) const
1053
+ IceInternal::RoutableReference::operator==(const Reference& r) const noexcept
1333
1054
  {
1334
1055
  //
1335
1056
  // Note: if(this == &r) test is performed by each non-abstract derived class.
1336
1057
  //
1337
- if(this == &r)
1058
+ if (this == &r)
1338
1059
  {
1339
1060
  return true;
1340
1061
  }
1341
1062
 
1342
- const RoutableReference* rhs = dynamic_cast<const RoutableReference*>(&r);
1343
- if(!rhs || !Reference::operator==(r))
1344
- {
1345
- return false;
1346
- }
1347
- if(_preferSecure != rhs->_preferSecure)
1348
- {
1349
- return false;
1350
- }
1351
- if(_collocationOptimized != rhs->_collocationOptimized)
1063
+ const auto* rhs = dynamic_cast<const RoutableReference*>(&r);
1064
+ if (!rhs || !Reference::operator==(r))
1352
1065
  {
1353
1066
  return false;
1354
1067
  }
1355
- if(_cacheConnection != rhs->_cacheConnection)
1068
+ if (_collocationOptimized != rhs->_collocationOptimized)
1356
1069
  {
1357
1070
  return false;
1358
1071
  }
1359
- if(_endpointSelection != rhs->_endpointSelection)
1072
+ if (_cacheConnection != rhs->_cacheConnection)
1360
1073
  {
1361
1074
  return false;
1362
1075
  }
1363
- if(_connectionId != rhs->_connectionId)
1076
+ if (_endpointSelection != rhs->_endpointSelection)
1364
1077
  {
1365
1078
  return false;
1366
1079
  }
1367
- if((_overrideTimeout != rhs->_overrideTimeout) || (_overrideTimeout && _timeout != rhs->_timeout))
1080
+ if (_connectionId != rhs->_connectionId)
1368
1081
  {
1369
1082
  return false;
1370
1083
  }
1371
- if(_routerInfo != rhs->_routerInfo)
1084
+ if (!Ice::targetEqualTo(_routerInfo, rhs->_routerInfo))
1372
1085
  {
1373
1086
  return false;
1374
1087
  }
1375
- if(_locatorInfo != rhs->_locatorInfo)
1088
+ if (!Ice::targetEqualTo(_locatorInfo, rhs->_locatorInfo))
1376
1089
  {
1377
1090
  return false;
1378
1091
  }
1379
- #ifdef ICE_CPP11_MAPPING
1380
- //
1381
- // TODO: With C++14 we could use the version that receives four iterators and we don't need to explicitly
1382
- // check the sizes are equal.
1383
- //
1384
- if(_endpoints.size() != rhs->_endpoints.size() ||
1385
- !equal(_endpoints.begin(), _endpoints.end(), rhs->_endpoints.begin(), Ice::TargetCompare<shared_ptr<EndpointI>, std::equal_to>()))
1386
- #else
1387
- if(_endpoints != rhs->_endpoints)
1388
- #endif
1092
+
1093
+ // Check if the two endpoint lists are equal.
1094
+ if (!equal(
1095
+ _endpoints.begin(),
1096
+ _endpoints.end(),
1097
+ rhs->_endpoints.begin(),
1098
+ rhs->_endpoints.end(),
1099
+ Ice::TargetCompare<shared_ptr<EndpointI>, std::equal_to>()))
1389
1100
  {
1390
1101
  return false;
1391
1102
  }
1392
- if(_adapterId != rhs->_adapterId)
1103
+ if (_adapterId != rhs->_adapterId)
1393
1104
  {
1394
1105
  return false;
1395
1106
  }
1396
- if(_locatorCacheTimeout != rhs->_locatorCacheTimeout)
1107
+ if (_locatorCacheTimeout != rhs->_locatorCacheTimeout)
1397
1108
  {
1398
1109
  return false;
1399
1110
  }
@@ -1401,130 +1112,103 @@ IceInternal::RoutableReference::operator==(const Reference& r) const
1401
1112
  }
1402
1113
 
1403
1114
  bool
1404
- IceInternal::RoutableReference::operator<(const Reference& r) const
1115
+ IceInternal::RoutableReference::operator<(const Reference& r) const noexcept
1405
1116
  {
1406
- if(this == &r)
1117
+ if (this == &r)
1407
1118
  {
1408
1119
  return false;
1409
1120
  }
1410
1121
 
1411
- if(Reference::operator<(r))
1122
+ if (Reference::operator<(r))
1412
1123
  {
1413
1124
  return true;
1414
1125
  }
1415
- else if(!Reference::operator==(r))
1126
+ else if (!Reference::operator==(r))
1416
1127
  {
1417
1128
  return false;
1418
1129
  }
1419
1130
 
1420
- const RoutableReference* rhs = dynamic_cast<const RoutableReference*>(&r);
1421
- if(!rhs)
1131
+ const auto* rhs = dynamic_cast<const RoutableReference*>(&r);
1132
+ if (!rhs)
1422
1133
  {
1423
1134
  assert(dynamic_cast<const FixedReference*>(&r));
1424
1135
  return true; // As a rule, routable references are superior to fixed references.
1425
1136
  }
1426
1137
 
1427
- if(!_preferSecure && rhs->_preferSecure)
1428
- {
1429
- return true;
1430
- }
1431
- else if(rhs->_preferSecure < _preferSecure)
1432
- {
1433
- return false;
1434
- }
1435
- if(!_collocationOptimized && rhs->_collocationOptimized)
1436
- {
1437
- return true;
1438
- }
1439
- else if(rhs->_collocationOptimized < _collocationOptimized)
1440
- {
1441
- return false;
1442
- }
1443
- if(!_cacheConnection && rhs->_cacheConnection)
1138
+ if (!_collocationOptimized && rhs->_collocationOptimized)
1444
1139
  {
1445
1140
  return true;
1446
1141
  }
1447
- else if(rhs->_cacheConnection < _cacheConnection)
1142
+ else if (rhs->_collocationOptimized < _collocationOptimized)
1448
1143
  {
1449
1144
  return false;
1450
1145
  }
1451
- if(_endpointSelection < rhs->_endpointSelection)
1146
+ if (!_cacheConnection && rhs->_cacheConnection)
1452
1147
  {
1453
1148
  return true;
1454
1149
  }
1455
- else if(rhs->_endpointSelection < _endpointSelection)
1150
+ else if (rhs->_cacheConnection < _cacheConnection)
1456
1151
  {
1457
1152
  return false;
1458
1153
  }
1459
- if(_connectionId < rhs->_connectionId)
1154
+ if (_endpointSelection < rhs->_endpointSelection)
1460
1155
  {
1461
1156
  return true;
1462
1157
  }
1463
- else if(rhs->_connectionId < _connectionId)
1158
+ else if (rhs->_endpointSelection < _endpointSelection)
1464
1159
  {
1465
1160
  return false;
1466
1161
  }
1467
- if(!_overrideTimeout && rhs->_overrideTimeout)
1162
+ if (_connectionId < rhs->_connectionId)
1468
1163
  {
1469
1164
  return true;
1470
1165
  }
1471
- else if(rhs->_overrideTimeout < _overrideTimeout)
1166
+ else if (rhs->_connectionId < _connectionId)
1472
1167
  {
1473
1168
  return false;
1474
1169
  }
1475
- else if(_overrideTimeout)
1476
- {
1477
- if(_timeout < rhs->_timeout)
1478
- {
1479
- return true;
1480
- }
1481
- else if(rhs->_timeout < _timeout)
1482
- {
1483
- return false;
1484
- }
1485
- }
1486
- if(_routerInfo < rhs->_routerInfo)
1170
+ if (Ice::targetLess(_routerInfo, rhs->_routerInfo))
1487
1171
  {
1488
1172
  return true;
1489
1173
  }
1490
- else if(rhs->_routerInfo < _routerInfo)
1174
+ else if (Ice::targetLess(rhs->_routerInfo, _routerInfo))
1491
1175
  {
1492
1176
  return false;
1493
1177
  }
1494
- if(_locatorInfo < rhs->_locatorInfo)
1178
+ if (Ice::targetLess(_locatorInfo, rhs->_locatorInfo))
1495
1179
  {
1496
1180
  return true;
1497
1181
  }
1498
- else if(rhs->_locatorInfo < _locatorInfo)
1182
+ else if (Ice::targetLess(rhs->_locatorInfo, _locatorInfo))
1499
1183
  {
1500
1184
  return false;
1501
1185
  }
1502
- if(_adapterId < rhs->_adapterId)
1186
+ if (_adapterId < rhs->_adapterId)
1503
1187
  {
1504
1188
  return true;
1505
1189
  }
1506
- else if(rhs->_adapterId < _adapterId)
1190
+ else if (rhs->_adapterId < _adapterId)
1507
1191
  {
1508
1192
  return false;
1509
1193
  }
1510
- #ifdef ICE_CPP11_MAPPING
1511
- if(lexicographical_compare(_endpoints.begin(), _endpoints.end(), rhs->_endpoints.begin(), rhs->_endpoints.end(),
1512
- Ice::TargetCompare<shared_ptr<EndpointI>, std::less>()))
1513
- #else
1514
- if(_endpoints < rhs->_endpoints)
1515
- #endif
1194
+ if (lexicographical_compare(
1195
+ _endpoints.begin(),
1196
+ _endpoints.end(),
1197
+ rhs->_endpoints.begin(),
1198
+ rhs->_endpoints.end(),
1199
+ Ice::TargetCompare<shared_ptr<EndpointI>, std::less>()))
1516
1200
  {
1517
1201
  return true;
1518
1202
  }
1519
- else if(rhs->_endpoints < _endpoints)
1203
+ else if (rhs->_endpoints < _endpoints)
1520
1204
  {
1521
1205
  return false;
1522
1206
  }
1523
- if(_locatorCacheTimeout < rhs->_locatorCacheTimeout)
1207
+ if (_locatorCacheTimeout < rhs->_locatorCacheTimeout)
1524
1208
  {
1525
1209
  return true;
1526
1210
  }
1527
- else if(rhs->_locatorCacheTimeout < _locatorCacheTimeout)
1211
+ else if (rhs->_locatorCacheTimeout < _locatorCacheTimeout)
1528
1212
  {
1529
1213
  return false;
1530
1214
  }
@@ -1534,368 +1218,299 @@ IceInternal::RoutableReference::operator<(const Reference& r) const
1534
1218
  ReferencePtr
1535
1219
  IceInternal::RoutableReference::clone() const
1536
1220
  {
1537
- return new RoutableReference(*this);
1221
+ return make_shared<RoutableReference>(*this);
1538
1222
  }
1539
1223
 
1540
1224
  RequestHandlerPtr
1541
- IceInternal::RoutableReference::getRequestHandler(const Ice::ObjectPrxPtr& proxy) const
1225
+ IceInternal::RoutableReference::getRequestHandler() const
1542
1226
  {
1543
- return getInstance()->requestHandlerFactory()->getRequestHandler(const_cast<RoutableReference*>(this), proxy);
1227
+ auto self = const_cast<RoutableReference*>(this)->shared_from_this();
1228
+
1229
+ if (_collocationOptimized)
1230
+ {
1231
+ Ice::ObjectAdapterPtr adapter = _instance->objectAdapterFactory()->findObjectAdapter(self);
1232
+ if (adapter)
1233
+ {
1234
+ return make_shared<CollocatedRequestHandler>(self, adapter);
1235
+ }
1236
+ }
1237
+
1238
+ ConnectRequestHandlerPtr handler = make_shared<ConnectRequestHandler>(self);
1239
+ getConnectionAsync(
1240
+ [handler](Ice::ConnectionIPtr connection, bool compress)
1241
+ { handler->setConnection(std::move(connection), compress); },
1242
+ [handler](exception_ptr ex) { handler->setException(ex); });
1243
+
1244
+ return handler; // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
1245
+ // Looks like a clang-tidy bug. See https://github.com/llvm/llvm-project/issues/55219
1544
1246
  }
1545
1247
 
1546
- BatchRequestQueuePtr
1547
- IceInternal::RoutableReference::getBatchRequestQueue() const
1248
+ const BatchRequestQueuePtr&
1249
+ IceInternal::RoutableReference::getBatchRequestQueue() const noexcept
1548
1250
  {
1549
- return new BatchRequestQueue(getInstance(), getMode() == Reference::ModeBatchDatagram);
1251
+ return _batchRequestQueue;
1550
1252
  }
1551
1253
 
1552
1254
  void
1553
- IceInternal::RoutableReference::getConnection(const GetConnectionCallbackPtr& callback) const
1255
+ IceInternal::RoutableReference::getConnectionAsync(
1256
+ function<void(ConnectionIPtr, bool)> response,
1257
+ function<void(std::exception_ptr)> exception) const
1554
1258
  {
1555
- class Callback : public RouterInfo::GetClientEndpointsCallback
1259
+ if (_routerInfo)
1556
1260
  {
1557
- public:
1261
+ // If we route, we send everything to the router's client proxy endpoints.
1262
+ auto self = dynamic_pointer_cast<RoutableReference>(const_cast<RoutableReference*>(this)->shared_from_this());
1558
1263
 
1559
- virtual void
1560
- setEndpoints(const vector<EndpointIPtr>& endpoints)
1561
- {
1562
- vector<EndpointIPtr> endpts = endpoints;
1563
- if(!endpts.empty())
1264
+ _routerInfo->getClientEndpointsAsync(
1265
+ [self = std::move(self), response = std::move(response), exception](vector<EndpointIPtr> endpoints) mutable
1564
1266
  {
1565
- _reference->applyOverrides(endpts);
1566
- _reference->createConnection(endpts, _callback);
1567
- return;
1568
- }
1569
-
1570
- _reference->getConnectionNoRouterInfo(_callback);
1571
- }
1572
-
1573
- virtual void
1574
- setException(const Ice::LocalException& ex)
1575
- {
1576
- _callback->setException(ex);
1577
- }
1578
-
1579
- Callback(const RoutableReferencePtr& reference, const GetConnectionCallbackPtr& callback) :
1580
- _reference(reference), _callback(callback)
1581
- {
1582
- }
1583
-
1584
- private:
1585
-
1586
- const RoutableReferencePtr _reference;
1587
- const GetConnectionCallbackPtr _callback;
1588
- };
1589
-
1590
- if(_routerInfo)
1267
+ if (endpoints.empty())
1268
+ {
1269
+ self->getConnectionNoRouterInfoAsync(std::move(response), std::move(exception));
1270
+ }
1271
+ else
1272
+ {
1273
+ self->applyOverrides(endpoints);
1274
+ self->createConnectionAsync(endpoints, std::move(response), std::move(exception));
1275
+ }
1276
+ },
1277
+ exception);
1278
+ }
1279
+ else
1591
1280
  {
1592
- //
1593
- // If we route, we send everything to the router's client
1594
- // proxy endpoints.
1595
- //
1596
- _routerInfo->getClientEndpoints(new Callback(const_cast<RoutableReference*>(this), callback));
1597
- return;
1281
+ getConnectionNoRouterInfoAsync(std::move(response), std::move(exception));
1598
1282
  }
1599
-
1600
- getConnectionNoRouterInfo(callback);
1601
1283
  }
1602
1284
 
1603
1285
  void
1604
- IceInternal::RoutableReference::getConnectionNoRouterInfo(const GetConnectionCallbackPtr& callback) const
1286
+ IceInternal::RoutableReference::getConnectionNoRouterInfoAsync(
1287
+ function<void(ConnectionIPtr, bool)> response,
1288
+ function<void(std::exception_ptr)> exception) const
1605
1289
  {
1606
- class Callback : public LocatorInfo::GetEndpointsCallback
1290
+ class Callback final : public LocatorInfo::GetEndpointsCallback
1607
1291
  {
1608
1292
  public:
1609
-
1610
- class Callback2 ICE_FINAL : public Reference::GetConnectionCallback
1293
+ void setEndpoints(const vector<EndpointIPtr>& endpoints, bool cached) final
1611
1294
  {
1612
- public:
1613
-
1614
- virtual void
1615
- setConnection(const Ice::ConnectionIPtr& connection, bool compress)
1295
+ if (endpoints.empty())
1616
1296
  {
1617
- _callback->setConnection(connection, compress);
1297
+ _exception(make_exception_ptr(
1298
+ Ice::NoEndpointException(__FILE__, __LINE__, ObjectPrx::_fromReference(_reference))));
1299
+ return;
1618
1300
  }
1619
1301
 
1620
- virtual void
1621
- setException(const Ice::LocalException& exc)
1622
- {
1623
- try
1624
- {
1625
- exc.ice_throw();
1626
- }
1627
- catch(const Ice::NoEndpointException& ex)
1628
- {
1629
- _callback->setException(ex); // No need to retry if there's no endpoints.
1630
- }
1631
- catch(const Ice::LocalException& ex)
1302
+ vector<EndpointIPtr> endpts = endpoints;
1303
+ _reference->applyOverrides(endpts);
1304
+ _reference->createConnectionAsync(
1305
+ endpts,
1306
+ _response,
1307
+ [reference = _reference, response = _response, exception = _exception, cached](std::exception_ptr exc)
1632
1308
  {
1633
- LocatorInfoPtr locatorInfo = _reference->getLocatorInfo();
1634
- assert(locatorInfo);
1635
- locatorInfo->clearCache(_reference);
1636
- if(_cached)
1309
+ try
1637
1310
  {
1638
- TraceLevelsPtr traceLvls = _reference->getInstance()->traceLevels();
1639
- if(traceLvls->retry >= 2)
1311
+ rethrow_exception(exc);
1312
+ }
1313
+ catch (const Ice::NoEndpointException&)
1314
+ {
1315
+ exception(exc); // No need to retry if there's no endpoints.
1316
+ }
1317
+ catch (const Ice::LocalException& ex)
1318
+ {
1319
+ LocatorInfoPtr locatorInfo = reference->getLocatorInfo();
1320
+ assert(locatorInfo);
1321
+ locatorInfo->clearCache(reference);
1322
+ if (cached)
1640
1323
  {
1641
- Trace out(_reference->getInstance()->initializationData().logger, traceLvls->retryCat);
1642
- out << "connection to cached endpoints failed\n"
1643
- << "removing endpoints from cache and trying again\n" << ex;
1324
+ TraceLevelsPtr traceLvls = reference->getInstance()->traceLevels();
1325
+ if (traceLvls->retry >= 2)
1326
+ {
1327
+ Trace out(reference->getInstance()->initializationData().logger, traceLvls->retryCat);
1328
+ out << "connection to cached endpoints failed\n"
1329
+ << "removing endpoints from cache and trying again\n"
1330
+ << ex;
1331
+ }
1332
+ reference->getConnectionNoRouterInfoAsync(response, exception); // Retry.
1333
+ return;
1644
1334
  }
1645
- _reference->getConnectionNoRouterInfo(_callback); // Retry.
1646
- return;
1335
+ exception(exc);
1647
1336
  }
1648
- _callback->setException(ex);
1649
- }
1650
- }
1651
-
1652
- Callback2(const RoutableReferencePtr& reference, const GetConnectionCallbackPtr& cb, bool cached) :
1653
- _reference(reference), _callback(cb), _cached(cached)
1654
- {
1655
- }
1656
-
1657
- private:
1658
-
1659
- const RoutableReferencePtr _reference;
1660
- const GetConnectionCallbackPtr _callback;
1661
- const bool _cached;
1662
- };
1663
-
1664
- virtual void
1665
- setEndpoints(const vector<EndpointIPtr>& endpoints, bool cached)
1666
- {
1667
- if(endpoints.empty())
1668
- {
1669
- _callback->setException(Ice::NoEndpointException(__FILE__, __LINE__, _reference->toString()));
1670
- return;
1671
- }
1672
-
1673
- vector<EndpointIPtr> endpts = endpoints;
1674
- _reference->applyOverrides(endpts);
1675
- _reference->createConnection(endpts, ICE_MAKE_SHARED(Callback2, _reference, _callback, cached));
1337
+ });
1676
1338
  }
1677
1339
 
1678
- virtual void
1679
- setException(const Ice::LocalException& ex)
1680
- {
1681
- _callback->setException(ex);
1682
- }
1340
+ void setException(std::exception_ptr ex) final { _exception(ex); }
1683
1341
 
1684
- Callback(const RoutableReferencePtr& reference, const GetConnectionCallbackPtr& callback) :
1685
- _reference(reference), _callback(callback)
1342
+ Callback(
1343
+ RoutableReferencePtr reference,
1344
+ function<void(ConnectionIPtr, bool)> response,
1345
+ function<void(std::exception_ptr)> exception)
1346
+ : _reference(std::move(reference)),
1347
+ _response(std::move(response)),
1348
+ _exception(std::move(exception))
1686
1349
  {
1687
1350
  }
1688
1351
 
1689
1352
  private:
1690
-
1691
1353
  const RoutableReferencePtr _reference;
1692
- const GetConnectionCallbackPtr _callback;
1354
+ const function<void(ConnectionIPtr, bool)> _response;
1355
+ const function<void(std::exception_ptr)> _exception;
1693
1356
  };
1694
1357
 
1695
- if(!_endpoints.empty())
1358
+ if (!_endpoints.empty())
1696
1359
  {
1697
- createConnection(_endpoints, callback);
1360
+ createConnectionAsync(_endpoints, std::move(response), std::move(exception));
1698
1361
  return;
1699
1362
  }
1700
1363
 
1701
- if(_locatorInfo)
1364
+ if (_locatorInfo)
1702
1365
  {
1703
- RoutableReference* self = const_cast<RoutableReference*>(this);
1704
- _locatorInfo->getEndpoints(self, _locatorCacheTimeout, new Callback(self, callback));
1366
+ RoutableReferencePtr self =
1367
+ dynamic_pointer_cast<RoutableReference>(const_cast<RoutableReference*>(this)->shared_from_this());
1368
+ _locatorInfo->getEndpoints(
1369
+ self,
1370
+ _locatorCacheTimeout,
1371
+ make_shared<Callback>(self, std::move(response), std::move(exception)));
1705
1372
  }
1706
1373
  else
1707
1374
  {
1708
- callback->setException(Ice::NoEndpointException(__FILE__, __LINE__, toString()));
1375
+ exception(make_exception_ptr(Ice::NoEndpointException(
1376
+ __FILE__,
1377
+ __LINE__,
1378
+ ObjectPrx::_fromReference(const_cast<RoutableReference*>(this)->shared_from_this()))));
1709
1379
  }
1710
1380
  }
1711
1381
 
1712
1382
  void
1713
- IceInternal::RoutableReference::createConnection(const vector<EndpointIPtr>& allEndpoints,
1714
- const GetConnectionCallbackPtr& callback) const
1383
+ IceInternal::RoutableReference::createConnectionAsync(
1384
+ const vector<EndpointIPtr>& allEndpoints,
1385
+ function<void(ConnectionIPtr, bool)> response,
1386
+ function<void(std::exception_ptr)> exception) const
1715
1387
  {
1716
1388
  vector<EndpointIPtr> endpoints = filterEndpoints(allEndpoints);
1717
- if(endpoints.empty())
1389
+ if (endpoints.empty())
1718
1390
  {
1719
- callback->setException(Ice::NoEndpointException(__FILE__, __LINE__, toString()));
1391
+ exception(make_exception_ptr(Ice::NoEndpointException(
1392
+ __FILE__,
1393
+ __LINE__,
1394
+ ObjectPrx::_fromReference(const_cast<RoutableReference*>(this)->shared_from_this()))));
1720
1395
  return;
1721
1396
  }
1722
1397
 
1723
- //
1724
- // Finally, create the connection.
1725
- //
1726
1398
  OutgoingConnectionFactoryPtr factory = getInstance()->outgoingConnectionFactory();
1727
- if(getCacheConnection() || endpoints.size() == 1)
1399
+ auto self = static_pointer_cast<RoutableReference>(const_cast<RoutableReference*>(this)->shared_from_this());
1400
+
1401
+ auto createConnectionSucceded =
1402
+ [routerInfo = _routerInfo, response = std::move(response)](Ice::ConnectionIPtr connection, bool compress)
1728
1403
  {
1729
- class CB1 : public OutgoingConnectionFactory::CreateConnectionCallback
1404
+ // If we have a router, set the object adapter for this router (if any) to the new connection, so that
1405
+ // callbacks from the router can be received over this new connection.
1406
+ if (routerInfo && routerInfo->getAdapter())
1730
1407
  {
1731
- public:
1732
-
1733
- virtual void
1734
- setConnection(const Ice::ConnectionIPtr& connection, bool compress)
1735
- {
1736
- //
1737
- // If we have a router, set the object adapter for this router
1738
- // (if any) to the new connection, so that callbacks from the
1739
- // router can be received over this new connection.
1740
- //
1741
- if(_routerInfo && _routerInfo->getAdapter())
1742
- {
1743
- connection->setAdapter(_routerInfo->getAdapter());
1744
- }
1745
- _callback->setConnection(connection, compress);
1746
- }
1747
-
1748
- virtual void
1749
- setException(const Ice::LocalException& ex)
1750
- {
1751
- _callback->setException(ex);
1752
- }
1753
-
1754
- CB1(const RouterInfoPtr& routerInfo, const GetConnectionCallbackPtr& callback) :
1755
- _routerInfo(routerInfo), _callback(callback)
1756
- {
1757
- }
1758
-
1759
- private:
1760
-
1761
- const RouterInfoPtr _routerInfo;
1762
- const GetConnectionCallbackPtr _callback;
1763
- };
1408
+ connection->setAdapter(routerInfo->getAdapter());
1409
+ }
1410
+ response(std::move(connection), compress);
1411
+ };
1764
1412
 
1765
- //
1766
- // Get an existing connection or create one if there's no
1767
- // existing connection to one of the given endpoints.
1768
- //
1769
- factory->create(endpoints, false, getEndpointSelection(), new CB1(_routerInfo, callback));
1770
- return;
1413
+ if (getCacheConnection() || endpoints.size() == 1)
1414
+ {
1415
+ // Get an existing connection or create one if there's no existing connection to one of the given endpoints.
1416
+ factory->createAsync(std::move(endpoints), false, std::move(createConnectionSucceded), std::move(exception));
1771
1417
  }
1772
1418
  else
1773
1419
  {
1774
- class CB2 : public OutgoingConnectionFactory::CreateConnectionCallback
1420
+ // Go through the list of endpoints and try to create the connection until it succeeds. This is different from
1421
+ // just calling create() with the given endpoints since this might create a new connection even if there's an
1422
+ // existing connection for one of the endpoints.
1423
+
1424
+ class CreateConnectionState final : public std::enable_shared_from_this<CreateConnectionState>
1775
1425
  {
1776
1426
  public:
1427
+ CreateConnectionState(
1428
+ vector<EndpointIPtr> endpoints,
1429
+ OutgoingConnectionFactoryPtr factory,
1430
+ function<void(Ice::ConnectionIPtr, bool)> createConnectionSucceded,
1431
+ function<void(exception_ptr)> exception)
1432
+ : _endpoints(std::move(endpoints)),
1433
+ _factory(std::move(factory)),
1434
+ _createConnectionSucceded(std::move(createConnectionSucceded)),
1435
+ _createConnectionFailed(std::move(exception))
1436
+ {
1437
+ }
1777
1438
 
1778
- virtual void
1779
- setConnection(const Ice::ConnectionIPtr& connection, bool compress)
1439
+ void createAsync()
1780
1440
  {
1781
- //
1782
- // If we have a router, set the object adapter for this router
1783
- // (if any) to the new connection, so that callbacks from the
1784
- // router can be received over this new connection.
1785
- //
1786
- if(_reference->getRouterInfo() && _reference->getRouterInfo()->getAdapter())
1787
- {
1788
- connection->setAdapter(_reference->getRouterInfo()->getAdapter());
1789
- }
1790
- _callback->setConnection(connection, compress);
1441
+ _factory->createAsync(
1442
+ {_endpoints[_endpointIndex]},
1443
+ true,
1444
+ _createConnectionSucceded,
1445
+ [self = shared_from_this()](exception_ptr e) { self->handleException(e); });
1791
1446
  }
1792
1447
 
1793
- virtual void
1794
- setException(const Ice::LocalException& ex)
1448
+ void handleException(std::exception_ptr ex)
1795
1449
  {
1796
- if(!_exception)
1450
+ if (!_exception)
1797
1451
  {
1798
- ICE_SET_EXCEPTION_FROM_CLONE(_exception, ex.ice_clone());
1452
+ _exception = ex;
1799
1453
  }
1800
1454
 
1801
- if(++_i == _endpoints.size())
1455
+ if (++_endpointIndex == _endpoints.size())
1802
1456
  {
1803
- _callback->setException(*_exception);
1457
+ _createConnectionFailed(_exception);
1804
1458
  return;
1805
1459
  }
1806
1460
 
1807
- const bool more = _i != _endpoints.size() - 1;
1808
- vector<EndpointIPtr> endpoint;
1809
- endpoint.push_back(_endpoints[_i]);
1810
-
1811
- OutgoingConnectionFactoryPtr factory = _reference->getInstance()->outgoingConnectionFactory();
1812
- factory->create(endpoint, more, _reference->getEndpointSelection(), this);
1813
- }
1814
-
1815
- CB2(const RoutableReferencePtr& reference, const vector<EndpointIPtr>& endpoints,
1816
- const GetConnectionCallbackPtr& callback) :
1817
- _reference(reference),
1818
- _endpoints(endpoints),
1819
- _callback(callback),
1820
- _i(0)
1821
- {
1461
+ const bool more = _endpointIndex != _endpoints.size() - 1;
1462
+ _factory->createAsync(
1463
+ {_endpoints[_endpointIndex]},
1464
+ more,
1465
+ _createConnectionSucceded,
1466
+ [self = shared_from_this()](exception_ptr e) { self->handleException(e); });
1822
1467
  }
1823
1468
 
1824
1469
  private:
1825
-
1826
- const RoutableReferencePtr _reference;
1827
- const vector<EndpointIPtr> _endpoints;
1828
- const GetConnectionCallbackPtr _callback;
1829
- size_t _i;
1830
- IceInternal::UniquePtr<Ice::LocalException> _exception;
1470
+ exception_ptr _exception = nullptr;
1471
+ size_t _endpointIndex = 0;
1472
+ vector<EndpointIPtr> _endpoints;
1473
+ OutgoingConnectionFactoryPtr _factory;
1474
+ std::function<void(Ice::ConnectionIPtr, bool)> _createConnectionSucceded;
1475
+ std::function<void(exception_ptr)> _createConnectionFailed;
1831
1476
  };
1832
1477
 
1833
- //
1834
- // Go through the list of endpoints and try to create the
1835
- // connection until it succeeds. This is different from just
1836
- // calling create() with the given endpoints since this might
1837
- // create a new connection even if there's an existing
1838
- // connection for one of the endpoints.
1839
- //
1840
-
1841
- vector<EndpointIPtr> endpt;
1842
- endpt.push_back(endpoints[0]);
1843
- RoutableReference* self = const_cast<RoutableReference*>(this);
1844
- factory->create(endpt, true, getEndpointSelection(), new CB2(self, endpoints, callback));
1845
- return;
1478
+ auto state = make_shared<CreateConnectionState>(
1479
+ std::move(endpoints),
1480
+ std::move(factory),
1481
+ std::move(createConnectionSucceded),
1482
+ std::move(exception));
1483
+ state->createAsync();
1846
1484
  }
1847
1485
  }
1848
1486
 
1849
1487
  void
1850
1488
  IceInternal::RoutableReference::applyOverrides(vector<EndpointIPtr>& endpoints) const
1851
1489
  {
1852
- for(vector<EndpointIPtr>::iterator p = endpoints.begin(); p != endpoints.end(); ++p)
1490
+ for (auto& endpoint : endpoints)
1853
1491
  {
1854
- *p = (*p)->connectionId(_connectionId);
1855
- if(_overrideCompress)
1492
+ endpoint = endpoint->connectionId(_connectionId);
1493
+ optional<bool> compress = getCompress();
1494
+ if (compress.has_value())
1856
1495
  {
1857
- *p = (*p)->compress(_compress);
1858
- }
1859
- if(_overrideTimeout)
1860
- {
1861
- *p = (*p)->timeout(_timeout);
1496
+ endpoint = endpoint->compress(*compress);
1862
1497
  }
1863
1498
  }
1864
1499
  }
1865
1500
 
1866
- IceInternal::RoutableReference::RoutableReference(const RoutableReference& r) :
1867
- Reference(r),
1868
- _endpoints(r._endpoints),
1869
- _adapterId(r._adapterId),
1870
- _locatorInfo(r._locatorInfo),
1871
- _routerInfo(r._routerInfo),
1872
- _collocationOptimized(r._collocationOptimized),
1873
- _cacheConnection(r._cacheConnection),
1874
- _preferSecure(r._preferSecure),
1875
- _endpointSelection(r._endpointSelection),
1876
- _locatorCacheTimeout(r._locatorCacheTimeout),
1877
- _overrideTimeout(r._overrideTimeout),
1878
- _timeout(r._timeout),
1879
- _connectionId(r._connectionId)
1501
+ IceInternal::RoutableReference::RoutableReference(const RoutableReference& r)
1502
+ : Reference(r),
1503
+ _endpoints(r._endpoints),
1504
+ _adapterId(r._adapterId),
1505
+ _locatorInfo(r._locatorInfo),
1506
+ _routerInfo(r._routerInfo),
1507
+ _collocationOptimized(r._collocationOptimized),
1508
+ _cacheConnection(r._cacheConnection),
1509
+ _endpointSelection(r._endpointSelection),
1510
+ _locatorCacheTimeout(r._locatorCacheTimeout),
1511
+ _connectionId(r._connectionId)
1880
1512
  {
1881
- }
1882
-
1883
- namespace
1884
- {
1885
-
1886
- #ifndef ICE_CPP11_COMPILER
1887
- struct EndpointIsOpaque : public unary_function<EndpointIPtr, bool>
1888
- {
1889
- public:
1890
-
1891
- bool
1892
- operator()(EndpointIPtr p) const
1893
- {
1894
- return dynamic_cast<OpaqueEndpointI*>(p.get()) != 0;
1895
- }
1896
- };
1897
- #endif
1898
-
1513
+ setBatchRequestQueue();
1899
1514
  }
1900
1515
 
1901
1516
  vector<EndpointIPtr>
@@ -1903,63 +1518,35 @@ IceInternal::RoutableReference::filterEndpoints(const vector<EndpointIPtr>& allE
1903
1518
  {
1904
1519
  vector<EndpointIPtr> endpoints = allEndpoints;
1905
1520
 
1906
- //
1907
1521
  // Filter out unknown endpoints.
1908
- //
1909
- #ifdef ICE_CPP11_COMPILER
1910
- endpoints.erase(remove_if(endpoints.begin(), endpoints.end(),
1911
- [](const EndpointIPtr& p)
1912
- {
1913
- return dynamic_cast<OpaqueEndpointI*>(p.get()) != 0;
1914
- }),
1915
- endpoints.end());
1916
- #else
1917
- endpoints.erase(remove_if(endpoints.begin(), endpoints.end(), EndpointIsOpaque()), endpoints.end());
1918
- #endif
1919
- //
1522
+ endpoints.erase(
1523
+ remove_if(
1524
+ endpoints.begin(),
1525
+ endpoints.end(),
1526
+ [](const EndpointIPtr& p) { return dynamic_pointer_cast<OpaqueEndpointI>(p) != nullptr; }),
1527
+ endpoints.end());
1528
+
1920
1529
  // Filter out endpoints according to the mode of the reference.
1921
- //
1922
- switch(getMode())
1530
+ switch (getMode())
1923
1531
  {
1924
1532
  case Reference::ModeTwoway:
1925
1533
  case Reference::ModeOneway:
1926
1534
  case Reference::ModeBatchOneway:
1927
1535
  {
1928
- //
1929
1536
  // Filter out datagram endpoints.
1930
- //
1931
- #ifdef ICE_CPP11_COMPILER
1932
- endpoints.erase(remove_if(endpoints.begin(), endpoints.end(),
1933
- [](const EndpointIPtr& p)
1934
- {
1935
- return p->datagram();
1936
- }),
1937
- endpoints.end());
1938
- #else
1939
- endpoints.erase(remove_if(endpoints.begin(), endpoints.end(), Ice::constMemFun(&EndpointI::datagram)),
1940
- endpoints.end());
1941
- #endif
1537
+ endpoints.erase(
1538
+ remove_if(endpoints.begin(), endpoints.end(), [](const EndpointIPtr& p) { return p->datagram(); }),
1539
+ endpoints.end());
1942
1540
  break;
1943
1541
  }
1944
1542
 
1945
1543
  case Reference::ModeDatagram:
1946
1544
  case Reference::ModeBatchDatagram:
1947
1545
  {
1948
- //
1949
1546
  // Filter out non-datagram endpoints.
1950
- //
1951
- #ifdef ICE_CPP11_COMPILER
1952
- endpoints.erase(remove_if(endpoints.begin(), endpoints.end(),
1953
- [](const EndpointIPtr& p)
1954
- {
1955
- return !p->datagram();
1956
- }),
1957
- endpoints.end());
1958
- #else
1959
- endpoints.erase(remove_if(endpoints.begin(), endpoints.end(),
1960
- not1(Ice::constMemFun(&EndpointI::datagram))),
1961
- endpoints.end());
1962
- #endif
1547
+ endpoints.erase(
1548
+ remove_if(endpoints.begin(), endpoints.end(), [](const EndpointIPtr& p) { return !p->datagram(); }),
1549
+ endpoints.end());
1963
1550
  break;
1964
1551
  }
1965
1552
  }
@@ -1967,14 +1554,14 @@ IceInternal::RoutableReference::filterEndpoints(const vector<EndpointIPtr>& allE
1967
1554
  //
1968
1555
  // Sort the endpoints according to the endpoint selection type.
1969
1556
  //
1970
- switch(getEndpointSelection())
1557
+ switch (getEndpointSelection())
1971
1558
  {
1972
- case ICE_ENUM(EndpointSelectionType, Random):
1559
+ case EndpointSelectionType::Random:
1973
1560
  {
1974
- IceUtilInternal::shuffle(endpoints.begin(), endpoints.end());
1561
+ IceInternal::shuffle(endpoints.begin(), endpoints.end());
1975
1562
  break;
1976
1563
  }
1977
- case ICE_ENUM(EndpointSelectionType, Ordered):
1564
+ case EndpointSelectionType::Ordered:
1978
1565
  {
1979
1566
  // Nothing to do.
1980
1567
  break;
@@ -1986,61 +1573,12 @@ IceInternal::RoutableReference::filterEndpoints(const vector<EndpointIPtr>& allE
1986
1573
  }
1987
1574
  }
1988
1575
 
1989
- //
1990
- // If a secure connection is requested or secure overrides is set,
1991
- // remove all non-secure endpoints. Otherwise if preferSecure is set
1992
- // make secure endpoints prefered. By default make non-secure
1993
- // endpoints preferred over secure endpoints.
1994
- //
1995
- DefaultsAndOverridesPtr overrides = getInstance()->defaultsAndOverrides();
1996
- if(overrides->overrideSecure ? overrides->overrideSecureValue : getSecure())
1997
- {
1998
- #ifdef ICE_CPP11_COMPILER
1999
- endpoints.erase(remove_if(endpoints.begin(), endpoints.end(),
2000
- [](const EndpointIPtr& p)
2001
- {
2002
- return !p->secure();
2003
- }),
2004
- endpoints.end());
2005
- #else
2006
- endpoints.erase(remove_if(endpoints.begin(), endpoints.end(), not1(Ice::constMemFun(&EndpointI::secure))),
2007
- endpoints.end());
2008
- #endif
2009
- }
2010
- else if(getPreferSecure())
2011
- {
2012
- //
2013
- // We must use stable_partition() instead of just simply
2014
- // partition(), because otherwise some STL implementations
2015
- // order our now randomized endpoints.
2016
- //
2017
- #ifdef ICE_CPP11_COMPILER
2018
- stable_partition(endpoints.begin(), endpoints.end(),
2019
- [](const EndpointIPtr& p)
2020
- {
2021
- return p->secure();
2022
- });
2023
- #else
2024
- stable_partition(endpoints.begin(), endpoints.end(), Ice::constMemFun(&EndpointI::secure));
2025
- #endif
2026
- }
2027
- else
2028
- {
2029
- //
2030
- // We must use stable_partition() instead of just simply
2031
- // partition(), because otherwise some STL implementations
2032
- // order our now randomized endpoints.
2033
- //
2034
- #ifdef ICE_CPP11_COMPILER
2035
- stable_partition(endpoints.begin(), endpoints.end(),
2036
- [](const EndpointIPtr& p)
2037
- {
2038
- return !p->secure();
2039
- });
2040
- #else
2041
- stable_partition(endpoints.begin(), endpoints.end(), not1(Ice::constMemFun(&EndpointI::secure)));
2042
- #endif
2043
- }
2044
-
2045
1576
  return endpoints;
2046
1577
  }
1578
+
1579
+ void
1580
+ IceInternal::RoutableReference::setBatchRequestQueue()
1581
+ {
1582
+ _batchRequestQueue =
1583
+ isBatch() ? make_shared<BatchRequestQueue>(getInstance(), getMode() == Reference::ModeBatchDatagram) : nullptr;
1584
+ }