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,41 +1,43 @@
1
- //
2
- // Copyright (c) ZeroC, Inc. All rights reserved.
3
- //
4
-
5
- #include <Ice/UUID.h>
6
- #include <Ice/ObjectAdapterI.h>
7
- #include <Ice/CommunicatorI.h>
8
- #include <Ice/ObjectAdapterFactory.h>
9
- #include <Ice/Instance.h>
10
- #include <Ice/Proxy.h>
11
- #include <Ice/ProxyFactory.h>
12
- #include <Ice/ReferenceFactory.h>
13
- #include <Ice/EndpointI.h>
14
- #include <Ice/EndpointFactoryManager.h>
15
- #include <Ice/ConnectionFactory.h>
16
- #include <Ice/ServantManager.h>
17
- #include <Ice/RouterInfo.h>
18
- #include <Ice/LocalException.h>
19
- #include <Ice/Properties.h>
20
- #include <Ice/Functional.h>
21
- #include <Ice/LocatorInfo.h>
22
- #include <Ice/Locator.h>
23
- #include <Ice/LoggerUtil.h>
24
- #include <Ice/ThreadPool.h>
25
- #include <Ice/Communicator.h>
26
- #include <Ice/Router.h>
27
- #include <Ice/DefaultsAndOverrides.h>
28
- #include <Ice/TraceLevels.h>
29
- #include <Ice/PropertyNames.h>
30
- #include <Ice/ConsoleUtil.h>
1
+ // Copyright (c) ZeroC, Inc.
2
+
3
+ #include "ObjectAdapterI.h"
4
+ #include "CheckIdentity.h"
5
+ #include "ConnectionFactory.h"
6
+ #include "ConsoleUtil.h"
7
+ #include "DefaultsAndOverrides.h"
8
+ #include "EndpointFactoryManager.h"
9
+ #include "EndpointI.h"
10
+ #include "Ice/Communicator.h"
11
+ #include "Ice/LocalExceptions.h"
12
+ #include "Ice/Locator.h"
13
+ #include "Ice/LoggerUtil.h"
14
+ #include "Ice/Properties.h"
15
+ #include "Ice/Proxy.h"
16
+ #include "Ice/ProxyFunctions.h"
17
+ #include "Ice/Router.h"
18
+ #include "Ice/UUID.h"
19
+ #include "Instance.h"
20
+ #include "LocatorInfo.h"
21
+ #include "LoggerMiddleware.h"
22
+ #include "ObjectAdapterFactory.h"
23
+ #include "ObserverMiddleware.h"
24
+ #include "PropertyNames.h"
25
+ #include "PropertyUtil.h"
26
+ #include "ReferenceFactory.h"
27
+ #include "RouterInfo.h"
28
+ #include "ServantManager.h"
29
+ #include "ThreadPool.h"
30
+ #include "TraceLevels.h"
31
31
 
32
32
  #ifdef _WIN32
33
- # include <sys/timeb.h>
33
+ # include <sys/timeb.h>
34
34
  #else
35
- # include <sys/time.h>
35
+ # include <sys/time.h>
36
36
  #endif
37
37
 
38
+ #include <algorithm>
38
39
  #include <iterator>
40
+ #include <stdexcept>
39
41
 
40
42
  using namespace std;
41
43
  using namespace Ice;
@@ -43,40 +45,21 @@ using namespace IceInternal;
43
45
 
44
46
  namespace
45
47
  {
46
- inline void checkIdentity(const Identity& ident)
47
- {
48
- if(ident.name.empty())
49
- {
50
- throw IllegalIdentityException(__FILE__, __LINE__, ident);
51
- }
52
- }
48
+ inline EndpointIPtr toEndpointI(const EndpointPtr& endp) { return dynamic_pointer_cast<EndpointI>(endp); }
53
49
 
54
- inline void checkServant(const ObjectPtr& servant)
55
- {
56
- if(!servant)
57
- {
58
- throw IllegalServantException(__FILE__, __LINE__, "cannot add null servant to Object Adapter");
59
- }
50
+ string emptyName{};
60
51
  }
61
52
 
62
- inline EndpointIPtr toEndpointI(const EndpointPtr& endp)
63
- {
64
- return ICE_DYNAMIC_CAST(EndpointI, endp);
65
- }
53
+ Ice::ObjectAdapter::~ObjectAdapter() = default; // avoid weak vtable
66
54
 
67
- }
68
-
69
- string
70
- Ice::ObjectAdapterI::getName() const ICE_NOEXCEPT
55
+ const string&
56
+ Ice::ObjectAdapterI::getName() const noexcept
71
57
  {
72
- //
73
- // No mutex lock necessary, _name is immutable.
74
- //
75
- return _noConfig ? string("") : _name;
58
+ return _noConfig ? emptyName : _name;
76
59
  }
77
60
 
78
61
  CommunicatorPtr
79
- Ice::ObjectAdapterI::getCommunicator() const ICE_NOEXCEPT
62
+ Ice::ObjectAdapterI::getCommunicator() const noexcept
80
63
  {
81
64
  return _communicator;
82
65
  }
@@ -86,9 +69,10 @@ Ice::ObjectAdapterI::activate()
86
69
  {
87
70
  LocatorInfoPtr locatorInfo;
88
71
  bool printAdapterReady = false;
72
+ bool hasPublishedEndpoints = false;
89
73
 
90
74
  {
91
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
75
+ lock_guard lock(_mutex);
92
76
 
93
77
  checkForDeactivation();
94
78
 
@@ -96,18 +80,15 @@ Ice::ObjectAdapterI::activate()
96
80
  // If we've previously been initialized we just need to activate the
97
81
  // incoming connection factories and we're done.
98
82
  //
99
- if(_state != StateUninitialized)
83
+ if (_state != StateUninitialized)
100
84
  {
101
- #ifdef ICE_CPP11_COMPILER
102
- for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
103
- [](const IncomingConnectionFactoryPtr& factory)
104
- {
105
- factory->activate();
106
- });
107
- #else
108
- for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
109
- Ice::voidMemFun(&IncomingConnectionFactory::activate));
110
- #endif
85
+ for_each(
86
+ _incomingConnectionFactories.begin(),
87
+ _incomingConnectionFactories.end(),
88
+ [](const IncomingConnectionFactoryPtr& factory) { factory->activate(); });
89
+
90
+ _state = StateActive;
91
+ _conditionVariable.notify_all();
111
92
  return;
112
93
  }
113
94
 
@@ -121,77 +102,65 @@ Ice::ObjectAdapterI::activate()
121
102
  _state = StateActivating;
122
103
 
123
104
  locatorInfo = _locatorInfo;
124
- if(!_noConfig)
105
+ if (!_noConfig)
125
106
  {
126
107
  PropertiesPtr properties = _instance->initializationData().properties;
127
- printAdapterReady = properties->getPropertyAsInt("Ice.PrintAdapterReady") > 0;
108
+ printAdapterReady = properties->getIcePropertyAsInt("Ice.PrintAdapterReady") > 0;
128
109
  }
110
+ hasPublishedEndpoints = !_publishedEndpoints.empty();
129
111
  }
130
112
 
131
- try
132
- {
133
- Ice::Identity dummy;
134
- dummy.name = "dummy";
135
- updateLocatorRegistry(locatorInfo, createDirectProxy(dummy));
136
- }
137
- catch(const Ice::LocalException&)
113
+ if (hasPublishedEndpoints)
138
114
  {
139
- //
140
- // If we couldn't update the locator registry, we let the
141
- // exception go through and don't activate the adapter to
142
- // allow to user code to retry activating the adapter
143
- // later.
144
- //
115
+ try
145
116
  {
146
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
147
- _state = StateUninitialized;
148
- notifyAll();
117
+ updateLocatorRegistry(locatorInfo, createDirectProxy(Identity{.name = "dummy", .category = ""}));
118
+ }
119
+ catch (const Ice::LocalException&)
120
+ {
121
+ //
122
+ // If we couldn't update the locator registry, we let the
123
+ // exception go through and don't activate the adapter to
124
+ // allow to user code to retry activating the adapter
125
+ // later.
126
+ //
127
+ {
128
+ lock_guard lock(_mutex);
129
+ _state = StateUninitialized;
130
+ _conditionVariable.notify_all();
131
+ }
132
+ throw;
149
133
  }
150
- throw;
151
134
  }
152
135
 
153
- if(printAdapterReady)
136
+ if (printAdapterReady)
154
137
  {
155
138
  consoleOut << _name << " ready" << endl;
156
139
  }
157
140
 
158
141
  {
159
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
142
+ lock_guard lock(_mutex);
160
143
  assert(_state == StateActivating);
161
-
162
- #ifdef ICE_CPP11_COMPILER
163
- for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
164
- [](const IncomingConnectionFactoryPtr& factory)
165
- {
166
- factory->activate();
167
- });
168
- #else
169
- for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
170
- Ice::voidMemFun(&IncomingConnectionFactory::activate));
171
- #endif
144
+ for_each(
145
+ _incomingConnectionFactories.begin(),
146
+ _incomingConnectionFactories.end(),
147
+ [](const IncomingConnectionFactoryPtr& factory) { factory->activate(); });
172
148
  _state = StateActive;
173
- notifyAll();
149
+ _conditionVariable.notify_all();
174
150
  }
175
151
  }
176
152
 
177
153
  void
178
154
  Ice::ObjectAdapterI::hold()
179
155
  {
180
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
156
+ lock_guard lock(_mutex);
181
157
 
182
158
  checkForDeactivation();
183
159
  _state = StateHeld;
184
-
185
- #ifdef ICE_CPP11_COMPILER
186
- for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
187
- [](const IncomingConnectionFactoryPtr& factory)
188
- {
189
- factory->hold();
190
- });
191
- #else
192
- for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
193
- Ice::voidMemFun(&IncomingConnectionFactory::hold));
194
- #endif
160
+ for_each(
161
+ _incomingConnectionFactories.begin(),
162
+ _incomingConnectionFactories.end(),
163
+ [](const IncomingConnectionFactoryPtr& factory) { factory->hold(); });
195
164
  }
196
165
 
197
166
  void
@@ -199,155 +168,115 @@ Ice::ObjectAdapterI::waitForHold()
199
168
  {
200
169
  vector<IncomingConnectionFactoryPtr> incomingConnectionFactories;
201
170
  {
202
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
171
+ lock_guard lock(_mutex);
203
172
 
204
173
  checkForDeactivation();
205
174
 
206
175
  incomingConnectionFactories = _incomingConnectionFactories;
207
176
  }
208
177
 
209
- #ifdef ICE_CPP11_COMPILER
210
- for_each(incomingConnectionFactories.begin(), incomingConnectionFactories.end(),
211
- [](const IncomingConnectionFactoryPtr& factory)
212
- {
213
- factory->waitUntilHolding();
214
- });
215
- #else
216
- for_each(incomingConnectionFactories.begin(), incomingConnectionFactories.end(),
217
- Ice::constVoidMemFun(&IncomingConnectionFactory::waitUntilHolding));
218
- #endif
178
+ for_each(
179
+ incomingConnectionFactories.begin(),
180
+ incomingConnectionFactories.end(),
181
+ [](const IncomingConnectionFactoryPtr& factory) { factory->waitUntilHolding(); });
219
182
  }
220
183
 
221
184
  void
222
- Ice::ObjectAdapterI::deactivate() ICE_NOEXCEPT
185
+ Ice::ObjectAdapterI::deactivate() noexcept
223
186
  {
187
+ bool hasPublishedEndpoints = false;
224
188
  {
225
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
189
+ unique_lock lock(_mutex);
226
190
 
227
- //
228
- // Wait for activation to complete. This is necessary to not
229
- // get out of order locator updates.
230
- //
231
- while(_state == StateActivating || _state == StateDeactivating)
232
- {
233
- wait();
234
- }
235
- if(_state >= StateDeactivated)
191
+ // Wait for activation or a previous deactivation to complete.
192
+ // This is necessary to avoid out of order locator updates.
193
+ _conditionVariable.wait(lock, [this] { return _state != StateActivating && _state != StateDeactivating; });
194
+
195
+ if (_state >= StateDeactivated)
236
196
  {
237
197
  return;
238
198
  }
239
199
  _state = StateDeactivating;
200
+ hasPublishedEndpoints = !_publishedEndpoints.empty();
240
201
  }
241
202
 
242
203
  //
243
204
  // NOTE: the router/locator infos and incoming connection
244
- // facatory list are immutable at this point.
205
+ // factory list are immutable at this point.
245
206
  //
246
207
 
247
- try
208
+ if (hasPublishedEndpoints)
248
209
  {
249
- if(_routerInfo)
210
+ try
211
+ {
212
+ updateLocatorRegistry(_locatorInfo, nullopt);
213
+ }
214
+ catch (const Ice::LocalException&)
250
215
  {
251
216
  //
252
- // Remove entry from the router manager.
253
- //
254
- _instance->routerManager()->erase(_routerInfo->getRouter());
255
-
256
- //
257
- // Clear this object adapter with the router.
217
+ // We can't throw exceptions in deactivate so we ignore
218
+ // failures to update the locator registry.
258
219
  //
259
- _routerInfo->setAdapter(0);
260
220
  }
261
-
262
- updateLocatorRegistry(_locatorInfo, 0);
263
221
  }
264
- catch(const Ice::LocalException&)
265
- {
266
- //
267
- // We can't throw exceptions in deactivate so we ignore
268
- // failures to update the locator registry.
269
- //
270
- }
271
-
272
- #ifdef ICE_CPP11_COMPILER
273
- for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
274
- [](const IncomingConnectionFactoryPtr& factory)
275
- {
276
- factory->destroy();
277
- });
278
- #else
279
- for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
280
- Ice::voidMemFun(&IncomingConnectionFactory::destroy));
281
- #endif
282
222
 
283
- _instance->outgoingConnectionFactory()->removeAdapter(ICE_SHARED_FROM_THIS);
223
+ for_each(
224
+ _incomingConnectionFactories.begin(),
225
+ _incomingConnectionFactories.end(),
226
+ [](const IncomingConnectionFactoryPtr& factory) { factory->destroy(); });
284
227
 
285
228
  {
286
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
229
+ lock_guard lock(_mutex);
287
230
  assert(_state == StateDeactivating);
288
231
  _state = StateDeactivated;
289
- notifyAll();
232
+ _conditionVariable.notify_all();
290
233
  }
291
234
  }
292
235
 
293
236
  void
294
- Ice::ObjectAdapterI::waitForDeactivate() ICE_NOEXCEPT
237
+ Ice::ObjectAdapterI::waitForDeactivate() noexcept
295
238
  {
296
239
  vector<IceInternal::IncomingConnectionFactoryPtr> incomingConnectionFactories;
297
240
 
298
241
  {
299
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
242
+ unique_lock lock(_mutex);
300
243
 
301
244
  //
302
245
  // Wait for deactivation of the adapter itself, and for
303
246
  // the return of all direct method calls using this adapter.
304
247
  //
305
- while((_state < StateDeactivated) || _directCount > 0)
306
- {
307
- wait();
308
- }
309
- if(_state > StateDeactivated)
248
+ _conditionVariable.wait(lock, [this] { return _state >= StateDeactivated && _directCount == 0; });
249
+ if (_state > StateDeactivated)
310
250
  {
311
251
  return;
312
252
  }
313
253
  incomingConnectionFactories = _incomingConnectionFactories;
314
254
  }
315
255
 
316
- //
317
- // Now we wait until all incoming connection factories are
318
- // finished.
319
- //
320
- #ifdef ICE_CPP11_COMPILER
321
- for_each(incomingConnectionFactories.begin(), incomingConnectionFactories.end(),
322
- [](const IncomingConnectionFactoryPtr& factory)
323
- {
324
- factory->waitUntilFinished();
325
- });
326
- #else
327
- for_each(incomingConnectionFactories.begin(), incomingConnectionFactories.end(),
328
- Ice::voidMemFun(&IncomingConnectionFactory::waitUntilFinished));
329
- #endif
256
+ // Now we wait until all incoming connection factories are finished.
257
+ for_each(
258
+ incomingConnectionFactories.begin(),
259
+ incomingConnectionFactories.end(),
260
+ [](const IncomingConnectionFactoryPtr& factory) { factory->waitUntilFinished(); });
330
261
  }
331
262
 
332
263
  bool
333
- Ice::ObjectAdapterI::isDeactivated() const ICE_NOEXCEPT
264
+ Ice::ObjectAdapterI::isDeactivated() const noexcept
334
265
  {
335
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
266
+ lock_guard lock(_mutex);
336
267
 
337
268
  return _state >= StateDeactivated;
338
269
  }
339
270
 
340
271
  void
341
- Ice::ObjectAdapterI::destroy() ICE_NOEXCEPT
272
+ Ice::ObjectAdapterI::destroy() noexcept
342
273
  {
343
- //
344
274
  // Deactivate and wait for completion.
345
- //
346
275
  deactivate();
347
276
  waitForDeactivate();
348
277
 
349
278
  {
350
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
279
+ unique_lock lock(_mutex);
351
280
  assert(_state >= StateDeactivated);
352
281
 
353
282
  //
@@ -355,17 +284,25 @@ Ice::ObjectAdapterI::destroy() ICE_NOEXCEPT
355
284
  // adapter. Other threads wait for the destruction to be
356
285
  // completed.
357
286
  //
358
- while(_state == StateDestroying)
359
- {
360
- wait();
361
- }
362
- if(_state == StateDestroyed)
287
+ _conditionVariable.wait(lock, [this] { return _state != StateDestroying; });
288
+ if (_state == StateDestroyed)
363
289
  {
364
290
  return;
365
291
  }
366
292
  _state = StateDestroying;
367
293
  }
368
294
 
295
+ if (_routerInfo)
296
+ {
297
+ // Remove entry from the router manager.
298
+ _instance->routerManager()->erase(_routerInfo->getRouter());
299
+
300
+ // Clear this object adapter with the router.
301
+ _routerInfo->setAdapter(nullptr);
302
+ }
303
+
304
+ _instance->outgoingConnectionFactory()->removeAdapter(shared_from_this());
305
+
369
306
  //
370
307
  // Now it's also time to clean up our servants and servant
371
308
  // locators.
@@ -375,19 +312,19 @@ Ice::ObjectAdapterI::destroy() ICE_NOEXCEPT
375
312
  //
376
313
  // Destroy the thread pool.
377
314
  //
378
- if(_threadPool)
315
+ if (_threadPool)
379
316
  {
380
317
  _threadPool->destroy();
381
318
  _threadPool->joinWithAllThreads();
382
319
  }
383
320
 
384
- if(_objectAdapterFactory)
321
+ if (_objectAdapterFactory)
385
322
  {
386
- _objectAdapterFactory->removeObjectAdapter(ICE_SHARED_FROM_THIS);
323
+ _objectAdapterFactory->removeObjectAdapter(shared_from_this());
387
324
  }
388
325
 
389
326
  {
390
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
327
+ lock_guard lock(_mutex);
391
328
 
392
329
  //
393
330
  // We're done, now we can throw away all incoming connection
@@ -398,62 +335,81 @@ Ice::ObjectAdapterI::destroy() ICE_NOEXCEPT
398
335
  //
399
336
  // Remove object references (some of them cyclic).
400
337
  //
401
- _instance = 0;
402
- _threadPool = 0;
403
- _routerInfo = 0;
338
+ _instance = nullptr;
339
+ _threadPool = nullptr;
340
+ _routerInfo = nullptr;
404
341
  _publishedEndpoints.clear();
405
- _locatorInfo = 0;
406
- _reference = 0;
407
- _objectAdapterFactory = 0;
342
+ _locatorInfo = nullptr;
343
+ _reference = nullptr;
344
+ _objectAdapterFactory = nullptr;
408
345
 
409
346
  _state = StateDestroyed;
410
- notifyAll();
347
+ _conditionVariable.notify_all();
411
348
  }
412
349
  }
413
350
 
414
- ObjectPrxPtr
415
- Ice::ObjectAdapterI::add(const ObjectPtr& object, const Identity& ident)
351
+ ObjectAdapterPtr
352
+ Ice::ObjectAdapterI::use(function<ObjectPtr(ObjectPtr)> middlewareFactory)
416
353
  {
417
- return addFacet(object, ident, "");
354
+ // This code is not thread-safe and is not supposed to be.
355
+ if (_dispatchPipeline)
356
+ {
357
+ throw InitializationException{__FILE__, __LINE__, "all middleware must be installed before the first dispatch"};
358
+ }
359
+
360
+ _middlewareFactoryStack.push(std::move(middlewareFactory));
361
+ return shared_from_this();
418
362
  }
419
363
 
420
- ObjectPrxPtr
421
- Ice::ObjectAdapterI::addFacet(const ObjectPtr& object, const Identity& ident, const string& facet)
364
+ ObjectPrx
365
+ Ice::ObjectAdapterI::_add(ObjectPtr object, Identity ident)
422
366
  {
423
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
367
+ return _addFacet(std::move(object), std::move(ident), "");
368
+ }
424
369
 
425
- checkForDeactivation();
426
- checkServant(object);
427
- checkIdentity(ident);
370
+ ObjectPrx
371
+ Ice::ObjectAdapterI::_addFacet(ObjectPtr object, Identity ident, string facet)
372
+ {
373
+ lock_guard lock(_mutex);
374
+
375
+ checkForDestruction();
376
+ if (!object)
377
+ {
378
+ throw std::invalid_argument{"cannot add null servant to Ice object adapter"};
379
+ }
380
+ checkIdentity(ident, __FILE__, __LINE__);
428
381
 
429
- _servantManager->addServant(object, ident, facet);
382
+ _servantManager->addServant(std::move(object), ident, facet);
430
383
 
431
- return newProxy(ident, facet);
384
+ return newProxy(std::move(ident), std::move(facet));
432
385
  }
433
386
 
434
- ObjectPrxPtr
435
- Ice::ObjectAdapterI::addWithUUID(const ObjectPtr& object)
387
+ ObjectPrx
388
+ Ice::ObjectAdapterI::_addWithUUID(ObjectPtr object)
436
389
  {
437
- return addFacetWithUUID(object, "");
390
+ return _addFacetWithUUID(std::move(object), "");
438
391
  }
439
392
 
440
- ObjectPrxPtr
441
- Ice::ObjectAdapterI::addFacetWithUUID(const ObjectPtr& object, const string& facet)
393
+ ObjectPrx
394
+ Ice::ObjectAdapterI::_addFacetWithUUID(ObjectPtr object, string facet)
442
395
  {
443
396
  Identity ident;
444
397
  ident.name = Ice::generateUUID();
445
- return addFacet(object, ident, facet);
398
+ return _addFacet(std::move(object), std::move(ident), std::move(facet));
446
399
  }
447
400
 
448
401
  void
449
- Ice::ObjectAdapterI::addDefaultServant(const ObjectPtr& servant, const string& category)
402
+ Ice::ObjectAdapterI::addDefaultServant(ObjectPtr servant, string category)
450
403
  {
451
- checkServant(servant);
404
+ if (!servant)
405
+ {
406
+ throw std::invalid_argument{"cannot add null servant to Ice object adapter"};
407
+ }
452
408
 
453
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
409
+ lock_guard lock(_mutex);
454
410
 
455
- checkForDeactivation();
456
- _servantManager->addDefaultServant(servant, category);
411
+ checkForDestruction();
412
+ _servantManager->addDefaultServant(std::move(servant), std::move(category));
457
413
  }
458
414
 
459
415
  ObjectPtr
@@ -463,12 +419,12 @@ Ice::ObjectAdapterI::remove(const Identity& ident)
463
419
  }
464
420
 
465
421
  ObjectPtr
466
- Ice::ObjectAdapterI::removeFacet(const Identity& ident, const string& facet)
422
+ Ice::ObjectAdapterI::removeFacet(const Identity& ident, string_view facet)
467
423
  {
468
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
424
+ lock_guard lock(_mutex);
469
425
 
470
- checkForDeactivation();
471
- checkIdentity(ident);
426
+ checkForDestruction();
427
+ checkIdentity(ident, __FILE__, __LINE__);
472
428
 
473
429
  return _servantManager->removeServant(ident, facet);
474
430
  }
@@ -476,20 +432,20 @@ Ice::ObjectAdapterI::removeFacet(const Identity& ident, const string& facet)
476
432
  FacetMap
477
433
  Ice::ObjectAdapterI::removeAllFacets(const Identity& ident)
478
434
  {
479
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
435
+ lock_guard lock(_mutex);
480
436
 
481
- checkForDeactivation();
482
- checkIdentity(ident);
437
+ checkForDestruction();
438
+ checkIdentity(ident, __FILE__, __LINE__);
483
439
 
484
440
  return _servantManager->removeAllFacets(ident);
485
441
  }
486
442
 
487
443
  ObjectPtr
488
- Ice::ObjectAdapterI::removeDefaultServant(const string& category)
444
+ Ice::ObjectAdapterI::removeDefaultServant(string_view category)
489
445
  {
490
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
446
+ lock_guard lock(_mutex);
491
447
 
492
- checkForDeactivation();
448
+ checkForDestruction();
493
449
 
494
450
  return _servantManager->removeDefaultServant(category);
495
451
  }
@@ -501,12 +457,12 @@ Ice::ObjectAdapterI::find(const Identity& ident) const
501
457
  }
502
458
 
503
459
  ObjectPtr
504
- Ice::ObjectAdapterI::findFacet(const Identity& ident, const string& facet) const
460
+ Ice::ObjectAdapterI::findFacet(const Identity& ident, string_view facet) const
505
461
  {
506
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
462
+ lock_guard lock(_mutex);
507
463
 
508
- checkForDeactivation();
509
- checkIdentity(ident);
464
+ checkForDestruction();
465
+ checkIdentity(ident, __FILE__, __LINE__);
510
466
 
511
467
  return _servantManager->findServant(ident, facet);
512
468
  }
@@ -514,200 +470,168 @@ Ice::ObjectAdapterI::findFacet(const Identity& ident, const string& facet) const
514
470
  FacetMap
515
471
  Ice::ObjectAdapterI::findAllFacets(const Identity& ident) const
516
472
  {
517
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
473
+ lock_guard lock(_mutex);
518
474
 
519
- checkForDeactivation();
520
- checkIdentity(ident);
475
+ checkForDestruction();
476
+ checkIdentity(ident, __FILE__, __LINE__);
521
477
 
522
478
  return _servantManager->findAllFacets(ident);
523
479
  }
524
480
 
525
481
  ObjectPtr
526
- Ice::ObjectAdapterI::findByProxy(const ObjectPrxPtr& proxy) const
482
+ Ice::ObjectAdapterI::findByProxy(const ObjectPrx& proxy) const
527
483
  {
528
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
484
+ lock_guard lock(_mutex);
529
485
 
530
- checkForDeactivation();
486
+ checkForDestruction();
531
487
 
532
488
  ReferencePtr ref = proxy->_getReference();
533
489
  return findFacet(ref->getIdentity(), ref->getFacet());
534
490
  }
535
491
 
536
492
  ObjectPtr
537
- Ice::ObjectAdapterI::findDefaultServant(const string& category) const
493
+ Ice::ObjectAdapterI::findDefaultServant(string_view category) const
538
494
  {
539
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
495
+ lock_guard lock(_mutex);
540
496
 
541
- checkForDeactivation();
497
+ checkForDestruction();
542
498
 
543
499
  return _servantManager->findDefaultServant(category);
544
500
  }
545
501
 
546
502
  void
547
- Ice::ObjectAdapterI::addServantLocator(const ServantLocatorPtr& locator, const string& prefix)
503
+ Ice::ObjectAdapterI::addServantLocator(ServantLocatorPtr locator, string prefix)
548
504
  {
549
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
505
+ lock_guard lock(_mutex);
550
506
 
551
- checkForDeactivation();
507
+ checkForDestruction();
552
508
 
553
- _servantManager->addServantLocator(locator, prefix);
509
+ _servantManager->addServantLocator(std::move(locator), std::move(prefix));
554
510
  }
555
511
 
556
512
  ServantLocatorPtr
557
- Ice::ObjectAdapterI::removeServantLocator(const string& prefix)
513
+ Ice::ObjectAdapterI::removeServantLocator(string_view prefix)
558
514
  {
559
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
515
+ lock_guard lock(_mutex);
560
516
 
561
- checkForDeactivation();
517
+ checkForDestruction();
562
518
 
563
519
  return _servantManager->removeServantLocator(prefix);
564
520
  }
565
521
 
566
522
  ServantLocatorPtr
567
- Ice::ObjectAdapterI::findServantLocator(const string& prefix) const
523
+ Ice::ObjectAdapterI::findServantLocator(string_view prefix) const
568
524
  {
569
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
525
+ lock_guard lock(_mutex);
570
526
 
571
- checkForDeactivation();
527
+ checkForDestruction();
572
528
 
573
529
  return _servantManager->findServantLocator(prefix);
574
530
  }
575
531
 
576
- ObjectPrxPtr
577
- Ice::ObjectAdapterI::createProxy(const Identity& ident) const
532
+ const ObjectPtr&
533
+ Ice::ObjectAdapterI::dispatchPipeline() const noexcept
534
+ {
535
+ lock_guard lock(_mutex);
536
+ if (!_dispatchPipeline)
537
+ {
538
+ _dispatchPipeline = _servantManager;
539
+ while (!_middlewareFactoryStack.empty())
540
+ {
541
+ _dispatchPipeline = _middlewareFactoryStack.top()(std::move(_dispatchPipeline));
542
+ _middlewareFactoryStack.pop();
543
+ }
544
+ }
545
+ return _dispatchPipeline;
546
+ }
547
+
548
+ ObjectPrx
549
+ Ice::ObjectAdapterI::_createProxy(Identity ident) const
578
550
  {
579
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
551
+ lock_guard lock(_mutex);
580
552
 
581
- checkForDeactivation();
582
- checkIdentity(ident);
553
+ checkForDestruction();
554
+ checkIdentity(ident, __FILE__, __LINE__);
583
555
 
584
- return newProxy(ident, "");
556
+ return newProxy(std::move(ident), "");
585
557
  }
586
558
 
587
- ObjectPrxPtr
588
- Ice::ObjectAdapterI::createDirectProxy(const Identity& ident) const
559
+ ObjectPrx
560
+ Ice::ObjectAdapterI::_createDirectProxy(Identity ident) const
589
561
  {
590
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
562
+ lock_guard lock(_mutex);
591
563
 
592
- checkForDeactivation();
593
- checkIdentity(ident);
564
+ checkForDestruction();
565
+ checkIdentity(ident, __FILE__, __LINE__);
594
566
 
595
- return newDirectProxy(ident, "");
567
+ return newDirectProxy(std::move(ident), "");
596
568
  }
597
569
 
598
- ObjectPrxPtr
599
- Ice::ObjectAdapterI::createIndirectProxy(const Identity& ident) const
570
+ ObjectPrx
571
+ Ice::ObjectAdapterI::_createIndirectProxy(Identity ident) const
600
572
  {
601
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
573
+ lock_guard lock(_mutex);
602
574
 
603
- checkForDeactivation();
604
- checkIdentity(ident);
575
+ checkForDestruction();
576
+ checkIdentity(ident, __FILE__, __LINE__);
605
577
 
606
- return newIndirectProxy(ident, "", _id);
578
+ return newIndirectProxy(std::move(ident), "", _id);
607
579
  }
608
580
 
609
581
  void
610
- Ice::ObjectAdapterI::setLocator(const LocatorPrxPtr& locator)
582
+ Ice::ObjectAdapterI::setLocator(optional<LocatorPrx> locator)
611
583
  {
612
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
613
-
584
+ lock_guard lock(_mutex);
614
585
  checkForDeactivation();
615
-
616
- _locatorInfo = _instance->locatorManager()->get(locator);
586
+ _locatorInfo = locator ? _instance->locatorManager()->get(locator.value()) : nullptr;
617
587
  }
618
588
 
619
- LocatorPrxPtr
620
- Ice::ObjectAdapterI::getLocator() const ICE_NOEXCEPT
589
+ optional<LocatorPrx>
590
+ Ice::ObjectAdapterI::getLocator() const noexcept
621
591
  {
622
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
623
-
624
- if(!_locatorInfo)
625
- {
626
- return 0;
627
- }
628
- else
629
- {
630
- return _locatorInfo->getLocator();
631
- }
592
+ lock_guard lock(_mutex);
593
+ return _locatorInfo ? optional<LocatorPrx>(_locatorInfo->getLocator()) : nullopt;
632
594
  }
633
595
 
634
596
  EndpointSeq
635
- Ice::ObjectAdapterI::getEndpoints() const ICE_NOEXCEPT
597
+ Ice::ObjectAdapterI::getEndpoints() const
636
598
  {
637
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
599
+ lock_guard lock(_mutex);
638
600
 
639
601
  EndpointSeq endpoints;
640
- transform(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
641
- back_inserter(endpoints),
642
- #ifdef ICE_CPP11_COMPILER
643
- [](const IncomingConnectionFactoryPtr& factory)
644
- {
645
- return factory->endpoint();
646
- });
647
- #else
648
- Ice::constMemFun(&IncomingConnectionFactory::endpoint));
649
- #endif
602
+ transform(
603
+ _incomingConnectionFactories.begin(),
604
+ _incomingConnectionFactories.end(),
605
+ back_inserter(endpoints),
606
+ [](const IncomingConnectionFactoryPtr& factory) { return factory->endpoint(); });
650
607
  return endpoints;
651
608
  }
652
609
 
653
- void
654
- Ice::ObjectAdapterI::refreshPublishedEndpoints()
655
- {
656
- LocatorInfoPtr locatorInfo;
657
- vector<EndpointIPtr> oldPublishedEndpoints;
658
-
659
- {
660
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
661
- checkForDeactivation();
662
-
663
- oldPublishedEndpoints = _publishedEndpoints;
664
- _publishedEndpoints = computePublishedEndpoints();
665
-
666
- locatorInfo = _locatorInfo;
667
- }
668
-
669
- try
670
- {
671
- Ice::Identity dummy;
672
- dummy.name = "dummy";
673
- updateLocatorRegistry(locatorInfo, createDirectProxy(dummy));
674
- }
675
- catch(const Ice::LocalException&)
676
- {
677
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
678
-
679
- //
680
- // Restore the old published endpoints.
681
- //
682
- _publishedEndpoints = oldPublishedEndpoints;
683
- throw;
684
- }
685
- }
686
-
687
610
  EndpointSeq
688
- Ice::ObjectAdapterI::getPublishedEndpoints() const ICE_NOEXCEPT
611
+ Ice::ObjectAdapterI::getPublishedEndpoints() const
689
612
  {
690
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
691
- return EndpointSeq(_publishedEndpoints.begin(), _publishedEndpoints.end());
613
+ lock_guard lock(_mutex);
614
+ return {_publishedEndpoints.begin(), _publishedEndpoints.end()};
692
615
  }
693
616
 
694
617
  void
695
- Ice::ObjectAdapterI::setPublishedEndpoints(const EndpointSeq& newEndpoints)
618
+ Ice::ObjectAdapterI::setPublishedEndpoints(EndpointSeq newEndpoints)
696
619
  {
697
620
  LocatorInfoPtr locatorInfo;
698
621
  vector<EndpointIPtr> oldPublishedEndpoints;
622
+
623
+ if (newEndpoints.empty())
699
624
  {
700
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
625
+ throw std::invalid_argument("the newEndpoints argument must contain at least one endpoint");
626
+ }
627
+
628
+ {
629
+ lock_guard lock(_mutex);
701
630
  checkForDeactivation();
702
631
 
703
- if(_routerInfo)
632
+ if (_routerInfo)
704
633
  {
705
- const string s("can't set published endpoints on object adapter associated with a router");
706
- #ifdef ICE_CPP11_MAPPING
707
- throw invalid_argument(s);
708
- #else
709
- throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, s);
710
- #endif
634
+ throw invalid_argument("cannot set published endpoints on an object adapter associated with a router");
711
635
  }
712
636
 
713
637
  oldPublishedEndpoints = _publishedEndpoints;
@@ -721,11 +645,11 @@ Ice::ObjectAdapterI::setPublishedEndpoints(const EndpointSeq& newEndpoints)
721
645
  {
722
646
  Ice::Identity dummy;
723
647
  dummy.name = "dummy";
724
- updateLocatorRegistry(locatorInfo, createDirectProxy(dummy));
648
+ updateLocatorRegistry(locatorInfo, createDirectProxy(std::move(dummy)));
725
649
  }
726
- catch(const Ice::LocalException&)
650
+ catch (const Ice::LocalException&)
727
651
  {
728
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
652
+ lock_guard lock(_mutex);
729
653
 
730
654
  //
731
655
  // Restore the old published endpoints.
@@ -735,28 +659,15 @@ Ice::ObjectAdapterI::setPublishedEndpoints(const EndpointSeq& newEndpoints)
735
659
  }
736
660
  }
737
661
 
738
- #ifdef ICE_SWIFT
739
- dispatch_queue_t
740
- Ice::ObjectAdapterI::getDispatchQueue() const
741
- {
742
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
743
-
744
- checkForDeactivation();
745
-
746
- return getThreadPool()->getDispatchQueue();
747
- }
748
- #endif
749
-
750
662
  bool
751
- Ice::ObjectAdapterI::isLocal(const ObjectPrxPtr& proxy) const
663
+ Ice::ObjectAdapterI::isLocal(const ReferencePtr& ref) const
752
664
  {
753
665
  //
754
666
  // NOTE: it's important that isLocal() doesn't perform any blocking operations as
755
667
  // it can be called for AMI invocations if the proxy has no delegate set yet.
756
668
  //
757
669
 
758
- ReferencePtr ref = proxy->_getReference();
759
- if(ref->isWellKnown())
670
+ if (ref->isWellKnown())
760
671
  {
761
672
  //
762
673
  // Check the active servant map to see if the well-known
@@ -764,7 +675,7 @@ Ice::ObjectAdapterI::isLocal(const ObjectPrxPtr& proxy) const
764
675
  //
765
676
  return _servantManager->hasServant(ref->getIdentity());
766
677
  }
767
- else if(ref->isIndirect())
678
+ else if (ref->isIndirect())
768
679
  {
769
680
  //
770
681
  // Proxy is local if the reference adapter id matches this
@@ -774,32 +685,22 @@ Ice::ObjectAdapterI::isLocal(const ObjectPrxPtr& proxy) const
774
685
  }
775
686
  else
776
687
  {
777
- vector<EndpointIPtr> endpoints = ref->getEndpoints();
778
-
779
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
780
- checkForDeactivation();
688
+ lock_guard lock(_mutex);
689
+ checkForDestruction();
781
690
 
782
- //
783
- // Proxies which have at least one endpoint in common with the
784
- // endpoints used by this object adapter are considered local.
785
- //
786
- for(vector<EndpointIPtr>::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p)
691
+ // Proxies which have at least one endpoint in common with the published endpoints are considered local.
692
+ // This check doesn't take datagram endpoints into account; this effectively disables colloc optimization
693
+ // for UDP.
694
+ for (const auto& endpoint : ref->getEndpoints())
787
695
  {
788
- for(vector<IncomingConnectionFactoryPtr>::const_iterator q = _incomingConnectionFactories.begin();
789
- q != _incomingConnectionFactories.end(); ++q)
790
- {
791
- if((*q)->isLocal(*p))
792
- {
793
- return true;
794
- }
795
- }
796
-
797
- for(vector<EndpointIPtr>::const_iterator r = _publishedEndpoints.begin();
798
- r != _publishedEndpoints.end(); ++r)
696
+ if (!endpoint->datagram())
799
697
  {
800
- if((*p)->equivalent(*r))
698
+ for (const auto& publishedEndpoint : _publishedEndpoints)
801
699
  {
802
- return true;
700
+ if (endpoint->equivalent(publishedEndpoint))
701
+ {
702
+ return true;
703
+ }
803
704
  }
804
705
  }
805
706
  }
@@ -813,13 +714,13 @@ Ice::ObjectAdapterI::flushAsyncBatchRequests(const CommunicatorFlushBatchAsyncPt
813
714
  {
814
715
  vector<IncomingConnectionFactoryPtr> f;
815
716
  {
816
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
717
+ lock_guard lock(_mutex);
817
718
  f = _incomingConnectionFactories;
818
719
  }
819
720
 
820
- for(vector<IncomingConnectionFactoryPtr>::const_iterator p = f.begin(); p != f.end(); ++p)
721
+ for (const auto& p : f)
821
722
  {
822
- (*p)->flushAsyncBatchRequests(outAsync, compress);
723
+ p->flushAsyncBatchRequests(outAsync, compress);
823
724
  }
824
725
  }
825
726
 
@@ -828,18 +729,13 @@ Ice::ObjectAdapterI::updateConnectionObservers()
828
729
  {
829
730
  vector<IncomingConnectionFactoryPtr> f;
830
731
  {
831
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
732
+ lock_guard lock(_mutex);
832
733
  f = _incomingConnectionFactories;
833
734
  }
834
- #ifdef ICE_CPP11_COMPILER
835
- for_each(f.begin(), f.end(),
836
- [](const IncomingConnectionFactoryPtr& factory)
837
- {
838
- factory->updateConnectionObservers();
839
- });
840
- #else
841
- for_each(f.begin(), f.end(), Ice::voidMemFun(&IncomingConnectionFactory::updateConnectionObservers));
842
- #endif
735
+ for_each(
736
+ f.begin(),
737
+ f.end(),
738
+ [](const IncomingConnectionFactoryPtr& factory) { factory->updateConnectionObservers(); });
843
739
  }
844
740
 
845
741
  void
@@ -847,10 +743,10 @@ Ice::ObjectAdapterI::updateThreadObservers()
847
743
  {
848
744
  ThreadPoolPtr threadPool;
849
745
  {
850
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
746
+ lock_guard lock(_mutex);
851
747
  threadPool = _threadPool;
852
748
  }
853
- if(threadPool)
749
+ if (threadPool)
854
750
  {
855
751
  threadPool->updateObservers();
856
752
  }
@@ -859,9 +755,9 @@ Ice::ObjectAdapterI::updateThreadObservers()
859
755
  void
860
756
  Ice::ObjectAdapterI::incDirectCount()
861
757
  {
862
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
758
+ lock_guard lock(_mutex);
863
759
 
864
- checkForDeactivation();
760
+ checkForDestruction();
865
761
 
866
762
  assert(_directCount >= 0);
867
763
  ++_directCount;
@@ -870,16 +766,16 @@ Ice::ObjectAdapterI::incDirectCount()
870
766
  void
871
767
  Ice::ObjectAdapterI::decDirectCount()
872
768
  {
873
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
769
+ lock_guard lock(_mutex);
874
770
 
875
771
  // Not check for deactivation here!
876
772
 
877
773
  assert(_instance); // Must not be called after destroy().
878
774
 
879
775
  assert(_directCount > 0);
880
- if(--_directCount == 0)
776
+ if (--_directCount == 0)
881
777
  {
882
- notifyAll();
778
+ _conditionVariable.notify_all();
883
779
  }
884
780
  }
885
781
 
@@ -894,7 +790,7 @@ Ice::ObjectAdapterI::getThreadPool() const
894
790
 
895
791
  assert(_instance); // Must not be called after destroy().
896
792
 
897
- if(_threadPool)
793
+ if (_threadPool)
898
794
  {
899
795
  return _threadPool;
900
796
  }
@@ -904,30 +800,12 @@ Ice::ObjectAdapterI::getThreadPool() const
904
800
  }
905
801
  }
906
802
 
907
- ServantManagerPtr
908
- Ice::ObjectAdapterI::getServantManager() const
909
- {
910
- //
911
- // No mutex lock necessary, _servantManager is immutable.
912
- //
913
- return _servantManager;
914
- }
915
-
916
- IceInternal::ACMConfig
917
- Ice::ObjectAdapterI::getACM() const
918
- {
919
- // Not check for deactivation here!
920
-
921
- assert(_instance); // Must not be called after destroy().
922
- return _acm;
923
- }
924
-
925
803
  void
926
804
  Ice::ObjectAdapterI::setAdapterOnConnection(const Ice::ConnectionIPtr& connection)
927
805
  {
928
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
929
- checkForDeactivation();
930
- connection->setAdapterAndServantManager(ICE_SHARED_FROM_THIS, _servantManager);
806
+ lock_guard lock(_mutex);
807
+ checkForDestruction();
808
+ connection->setAdapterFromAdapter(shared_from_this());
931
809
  }
932
810
 
933
811
  //
@@ -935,56 +813,84 @@ Ice::ObjectAdapterI::setAdapterOnConnection(const Ice::ConnectionIPtr& connectio
935
813
  // function because when it was part of the constructor C++Builder 2010 apps would
936
814
  // crash if an exception was thrown from any calls within the constructor.
937
815
  //
938
- Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const CommunicatorPtr& communicator,
939
- const ObjectAdapterFactoryPtr& objectAdapterFactory, const string& name,
940
- /*const RouterPrxPtr& router,*/ bool noConfig) :
941
- _state(StateUninitialized),
942
- _instance(instance),
943
- _communicator(communicator),
944
- _objectAdapterFactory(objectAdapterFactory),
945
- _servantManager(new ServantManager(instance, name)),
946
- _name(name),
947
- _directCount(0),
948
- _noConfig(noConfig),
949
- _messageSizeMax(0)
816
+ Ice::ObjectAdapterI::ObjectAdapterI(
817
+ InstancePtr instance,
818
+ CommunicatorPtr communicator,
819
+ ObjectAdapterFactoryPtr objectAdapterFactory,
820
+ string name,
821
+ bool noConfig,
822
+ optional<SSL::ServerAuthenticationOptions> serverAuthenticationOptions)
823
+ : _instance(std::move(instance)),
824
+ _communicator(std::move(communicator)),
825
+ _objectAdapterFactory(std::move(objectAdapterFactory)),
826
+ _servantManager(make_shared<ServantManager>(_instance, name)),
827
+ _name(std::move(name)),
828
+ _noConfig(noConfig),
829
+ _serverAuthenticationOptions(std::move(serverAuthenticationOptions))
950
830
  {
831
+ #if defined(ICE_USE_SCHANNEL)
832
+ if (_serverAuthenticationOptions && _serverAuthenticationOptions->trustedRootCertificates)
833
+ {
834
+ CertDuplicateStore(_serverAuthenticationOptions->trustedRootCertificates);
835
+ }
836
+ #elif defined(ICE_USE_SECURE_TRANSPORT)
837
+ if (_serverAuthenticationOptions && _serverAuthenticationOptions->trustedRootCertificates)
838
+ {
839
+ CFRetain(_serverAuthenticationOptions->trustedRootCertificates);
840
+ }
841
+ #endif
951
842
  }
952
843
 
953
844
  void
954
- Ice::ObjectAdapterI::initialize(const RouterPrxPtr& router)
845
+ Ice::ObjectAdapterI::initialize(optional<RouterPrx> router)
955
846
  {
956
- if(_noConfig)
847
+ // shared_from_this() is available now and is called by `use`.
848
+
849
+ const LoggerPtr logger = _instance->initializationData().logger;
850
+ if (logger)
957
851
  {
958
- _reference = _instance->referenceFactory()->create("dummy -t", "");
959
- const_cast<ACMConfig&>(_acm) = _instance->serverACM();
960
- return;
852
+ int warningLevel = _instance->initializationData().properties->getIcePropertyAsInt("Ice.Warn.Dispatch");
853
+ if (_instance->traceLevels()->dispatch > 0 || warningLevel > 0)
854
+ {
855
+ use(
856
+ [logger,
857
+ warningLevel,
858
+ traceLevel = _instance->traceLevels()->dispatch,
859
+ traceCat = _instance->traceLevels()->dispatchCat,
860
+ toStringMode = _instance->toStringMode()](ObjectPtr next)
861
+ {
862
+ return make_shared<LoggerMiddleware>(
863
+ std::move(next),
864
+ logger,
865
+ traceLevel,
866
+ traceCat,
867
+ warningLevel,
868
+ toStringMode);
869
+ });
870
+ }
961
871
  }
962
872
 
963
- PropertiesPtr properties = _instance->initializationData().properties;
964
- StringSeq unknownProps;
965
- bool noProps = filterProperties(unknownProps);
873
+ const Instrumentation::CommunicatorObserverPtr observer = _instance->initializationData().observer;
874
+ if (observer)
875
+ {
876
+ use([observer](ObjectPtr next) { return make_shared<ObserverMiddleware>(std::move(next), observer); });
877
+ }
966
878
 
967
- //
968
- // Warn about unknown object adapter properties.
969
- //
970
- if(unknownProps.size() != 0 && properties->getPropertyAsIntWithDefault("Ice.Warn.UnknownProperties", 1) > 0)
879
+ if (_noConfig)
971
880
  {
972
- Warning out(_instance->initializationData().logger);
973
- out << "found unknown properties for object adapter `" << _name << "':";
974
- for(unsigned int i = 0; i < unknownProps.size(); ++i)
975
- {
976
- out << "\n " << unknownProps[i];
977
- }
881
+ _reference = _instance->referenceFactory()->create("dummy -t", "");
882
+ return;
978
883
  }
979
884
 
885
+ PropertiesPtr properties = _instance->initializationData().properties;
886
+
980
887
  try
981
888
  {
982
- //
983
- // Make sure named adapter has some configuration
984
- //
985
- if(router == 0 && noProps)
889
+ validatePropertiesWithPrefix(_name, properties, &PropertyNames::ObjectAdapterProps);
890
+
891
+ if (!router && properties->getPropertiesForPrefix(_name + ".").size() == 0)
986
892
  {
987
- throw InitializationException(__FILE__, __LINE__, "object adapter `" + _name + "' requires configuration");
893
+ throw InitializationException(__FILE__, __LINE__, "object adapter '" + _name + "' requires configuration");
988
894
  }
989
895
 
990
896
  const_cast<string&>(_id) = properties->getProperty(_name + ".AdapterId");
@@ -999,66 +905,82 @@ Ice::ObjectAdapterI::initialize(const RouterPrxPtr& router)
999
905
  {
1000
906
  _reference = _instance->referenceFactory()->create("dummy " + proxyOptions, "");
1001
907
  }
1002
- catch(const ProxyParseException&)
908
+ catch (const ParseException&)
1003
909
  {
1004
- throw InitializationException(__FILE__, __LINE__, "invalid proxy options `" + proxyOptions +
1005
- "' for object adapter `" + _name + "'");
910
+ throw InitializationException(
911
+ __FILE__,
912
+ __LINE__,
913
+ "invalid proxy options '" + proxyOptions + "' for object adapter '" + _name + "'");
1006
914
  }
1007
915
 
1008
- const_cast<ACMConfig&>(_acm) =
1009
- ACMConfig(properties, _communicator->getLogger(), _name + ".ACM", _instance->serverACM());
1010
-
1011
916
  {
1012
917
  const int defaultMessageSizeMax = static_cast<int>(_instance->messageSizeMax() / 1024);
1013
- Int num = properties->getPropertyAsIntWithDefault(_name + ".MessageSizeMax", defaultMessageSizeMax);
1014
- if(num < 1 || static_cast<size_t>(num) > static_cast<size_t>(0x7fffffff / 1024))
918
+ int32_t messageSizeMax =
919
+ properties->getPropertyAsIntWithDefault(_name + ".MessageSizeMax", defaultMessageSizeMax);
920
+ // The maximum size of an Ice protocol message in bytes. This is limited to 0x7fffffff, which corresponds to
921
+ // the maximum value of a 32-bit signed integer (int32_t).
922
+ const int32_t messageSizeMaxUpperLimit = numeric_limits<int32_t>::max();
923
+ if (messageSizeMax > messageSizeMaxUpperLimit / 1024)
1015
924
  {
1016
- const_cast<size_t&>(_messageSizeMax) = static_cast<size_t>(0x7fffffff);
925
+ ostringstream os;
926
+ os << _name << ".MessageSizeMax '" << messageSizeMax
927
+ << "' is too large, it must be less than or equal to '" << (messageSizeMaxUpperLimit / 1024)
928
+ << "' KiB";
929
+ throw InitializationException{__FILE__, __LINE__, os.str()};
930
+ }
931
+ else if (messageSizeMax < 1)
932
+ {
933
+ const_cast<int32_t&>(_messageSizeMax) = 0x7fffffff;
1017
934
  }
1018
935
  else
1019
936
  {
1020
- const_cast<size_t&>(_messageSizeMax) = static_cast<size_t>(num) * 1024;
937
+ const_cast<int32_t&>(_messageSizeMax) = messageSizeMax * 1024;
1021
938
  }
1022
939
  }
1023
940
 
1024
- int threadPoolSize = properties->getPropertyAsInt(_name + ".ThreadPool.Size");
1025
- int threadPoolSizeMax = properties->getPropertyAsInt(_name + ".ThreadPool.SizeMax");
1026
- bool hasPriority = properties->getProperty(_name + ".ThreadPool.ThreadPriority") != "";
1027
-
1028
- //
1029
- // Create the per-adapter thread pool, if necessary. This is done before the creation of the incoming
1030
- // connection factory as the thread pool is needed during creation for the call to incFdsInUse.
1031
- //
1032
- if(threadPoolSize > 0 || threadPoolSizeMax > 0 || hasPriority)
941
+ // If the user configured any of the ObjectAdapter.ThreadPool properties, create a per-adapter thread pool.
942
+ // Otherwise the OA will use the default server thread pool.
943
+ // This is done before the creation of the incoming connection factory as the thread pool is needed during
944
+ // creation for the call to incFdsInUse.
945
+ if (properties->getPropertiesForPrefix(_name + ".ThreadPool.").size() > 0)
1033
946
  {
1034
- _threadPool = new ThreadPool(_instance, _name + ".ThreadPool", 0);
947
+ _threadPool = ThreadPool::create(_instance, _name + ".ThreadPool", 0);
1035
948
  }
1036
949
 
1037
- if(!router)
950
+ if (!router)
1038
951
  {
1039
- const_cast<RouterPrxPtr&>(router) = ICE_UNCHECKED_CAST(RouterPrx,
1040
- _instance->proxyFactory()->propertyToProxy(_name + ".Router"));
952
+ router = _communicator->propertyToProxy<RouterPrx>(_name + ".Router");
1041
953
  }
1042
- if(router)
954
+ if (router)
1043
955
  {
1044
- _routerInfo = _instance->routerManager()->get(router);
956
+ _routerInfo = _instance->routerManager()->get(router.value());
1045
957
  assert(_routerInfo);
1046
958
 
959
+ if (!properties->getProperty(_name + ".Endpoints").empty())
960
+ {
961
+ throw InitializationException{
962
+ __FILE__,
963
+ __LINE__,
964
+ "an object adapter with a router cannot accept incoming connections"};
965
+ }
966
+
1047
967
  //
1048
968
  // Make sure this router is not already registered with another adapter.
1049
969
  //
1050
- if(_routerInfo->getAdapter())
970
+ if (_routerInfo->getAdapter())
1051
971
  {
1052
- throw AlreadyRegisteredException(__FILE__, __LINE__,
1053
- "object adapter with router",
1054
- _communicator->identityToString(router->ice_getIdentity()));
972
+ throw AlreadyRegisteredException(
973
+ __FILE__,
974
+ __LINE__,
975
+ "object adapter with router",
976
+ _communicator->identityToString(router->ice_getIdentity()));
1055
977
  }
1056
978
 
1057
979
  //
1058
980
  // Associate this object adapter with the router. This way, new outgoing connections
1059
981
  // to the router's client proxy will use this object adapter for callbacks.
1060
982
  //
1061
- _routerInfo->setAdapter(ICE_SHARED_FROM_THIS);
983
+ _routerInfo->setAdapter(shared_from_this());
1062
984
 
1063
985
  //
1064
986
  // Also modify all existing outgoing connections to the router's client proxy to use
@@ -1074,28 +996,22 @@ Ice::ObjectAdapterI::initialize(const RouterPrxPtr& router)
1074
996
  // fill in the real port number.
1075
997
  //
1076
998
  vector<EndpointIPtr> endpoints = parseEndpoints(properties->getProperty(_name + ".Endpoints"), true);
1077
- for(vector<EndpointIPtr>::iterator p = endpoints.begin(); p != endpoints.end(); ++p)
999
+ for (const auto& endpoint : endpoints)
1078
1000
  {
1079
- EndpointIPtr publishedEndpoint;
1080
- vector<EndpointIPtr> expanded = (*p)->expandHost(publishedEndpoint);
1081
- for(vector<EndpointIPtr>::iterator q = expanded.begin(); q != expanded.end(); ++q)
1001
+ for (const auto& expanded : endpoint->expandHost())
1082
1002
  {
1083
- IncomingConnectionFactoryPtr factory = ICE_MAKE_SHARED(IncomingConnectionFactory,
1084
- _instance,
1085
- *q,
1086
- publishedEndpoint,
1087
- ICE_SHARED_FROM_THIS);
1003
+ auto factory = make_shared<IncomingConnectionFactory>(_instance, expanded, shared_from_this());
1088
1004
  factory->initialize();
1089
1005
  _incomingConnectionFactories.push_back(factory);
1090
1006
  }
1091
1007
  }
1092
- if(endpoints.empty())
1008
+ if (endpoints.empty())
1093
1009
  {
1094
1010
  TraceLevelsPtr tl = _instance->traceLevels();
1095
- if(tl->network >= 2)
1011
+ if (tl->network >= 2)
1096
1012
  {
1097
1013
  Trace out(_instance->initializationData().logger, tl->networkCat);
1098
- out << "created adapter `" << _name << "' without endpoints";
1014
+ out << "created adapter '" << _name << "' without endpoints";
1099
1015
  }
1100
1016
  }
1101
1017
  }
@@ -1105,16 +1021,16 @@ Ice::ObjectAdapterI::initialize(const RouterPrxPtr& router)
1105
1021
  //
1106
1022
  _publishedEndpoints = computePublishedEndpoints();
1107
1023
 
1108
- if(!properties->getProperty(_name + ".Locator").empty())
1024
+ if (!properties->getProperty(_name + ".Locator").empty())
1109
1025
  {
1110
- setLocator(ICE_UNCHECKED_CAST(LocatorPrx, _instance->proxyFactory()->propertyToProxy(_name + ".Locator")));
1026
+ setLocator(_communicator->propertyToProxy<LocatorPrx>(_name + ".Locator"));
1111
1027
  }
1112
1028
  else
1113
1029
  {
1114
1030
  setLocator(_instance->referenceFactory()->getDefaultLocator());
1115
1031
  }
1116
1032
  }
1117
- catch(...)
1033
+ catch (...)
1118
1034
  {
1119
1035
  destroy();
1120
1036
  throw;
@@ -1123,101 +1039,115 @@ Ice::ObjectAdapterI::initialize(const RouterPrxPtr& router)
1123
1039
 
1124
1040
  Ice::ObjectAdapterI::~ObjectAdapterI()
1125
1041
  {
1126
- if(_state < StateDeactivated)
1042
+ #if defined(ICE_USE_SCHANNEL)
1043
+ if (_serverAuthenticationOptions && _serverAuthenticationOptions->trustedRootCertificates)
1044
+ {
1045
+ CertCloseStore(_serverAuthenticationOptions->trustedRootCertificates, 0);
1046
+ }
1047
+ #elif defined(ICE_USE_SECURE_TRANSPORT)
1048
+ if (_serverAuthenticationOptions && _serverAuthenticationOptions->trustedRootCertificates)
1049
+ {
1050
+ CFRelease(_serverAuthenticationOptions->trustedRootCertificates);
1051
+ }
1052
+ #endif
1053
+ if (_state < StateDeactivated)
1127
1054
  {
1128
1055
  Warning out(_instance->initializationData().logger);
1129
- out << "object adapter `" << getName() << "' has not been deactivated";
1056
+ out << "object adapter '" << getName() << "' has not been deactivated";
1130
1057
  }
1131
- else if(_state != StateDestroyed)
1058
+ else if (_state != StateDestroyed)
1132
1059
  {
1133
1060
  Warning out(_instance->initializationData().logger);
1134
- out << "object adapter `" << getName() << "' has not been destroyed";
1061
+ out << "object adapter '" << getName() << "' has not been destroyed";
1135
1062
  }
1136
1063
  else
1137
1064
  {
1138
- //assert(!_servantManager); // We don't clear this reference, it needs to be immutable.
1065
+ // assert(!_servantManager); // We don't clear this reference, it needs to be immutable.
1139
1066
  assert(!_threadPool);
1140
1067
  assert(_incomingConnectionFactories.empty());
1141
1068
  assert(_directCount == 0);
1142
1069
  }
1143
1070
  }
1144
1071
 
1145
- ObjectPrxPtr
1146
- Ice::ObjectAdapterI::newProxy(const Identity& ident, const string& facet) const
1072
+ ObjectPrx
1073
+ Ice::ObjectAdapterI::newProxy(Identity ident, string facet) const
1147
1074
  {
1148
- if(_id.empty())
1075
+ if (_id.empty())
1149
1076
  {
1150
- return newDirectProxy(ident, facet);
1077
+ return newDirectProxy(std::move(ident), std::move(facet));
1151
1078
  }
1152
- else if(_replicaGroupId.empty())
1079
+ else if (_replicaGroupId.empty())
1153
1080
  {
1154
- return newIndirectProxy(ident, facet, _id);
1081
+ return newIndirectProxy(std::move(ident), std::move(facet), _id);
1155
1082
  }
1156
1083
  else
1157
1084
  {
1158
- return newIndirectProxy(ident, facet, _replicaGroupId);
1085
+ return newIndirectProxy(std::move(ident), std::move(facet), _replicaGroupId);
1159
1086
  }
1160
1087
  }
1161
1088
 
1162
- ObjectPrxPtr
1163
- Ice::ObjectAdapterI::newDirectProxy(const Identity& ident, const string& facet) const
1089
+ ObjectPrx
1090
+ Ice::ObjectAdapterI::newDirectProxy(Identity ident, string facet) const
1164
1091
  {
1165
- //
1166
- // Create a reference and return a proxy for this reference.
1167
- //
1168
- ReferencePtr ref = _instance->referenceFactory()->create(ident, facet, _reference, _publishedEndpoints);
1169
- return _instance->proxyFactory()->referenceToProxy(ref);
1092
+ return ObjectPrx::_fromReference(
1093
+ _instance->referenceFactory()->create(std::move(ident), std::move(facet), _reference, _publishedEndpoints));
1170
1094
  }
1171
1095
 
1172
- ObjectPrxPtr
1173
- Ice::ObjectAdapterI::newIndirectProxy(const Identity& ident, const string& facet, const string& id) const
1096
+ ObjectPrx
1097
+ Ice::ObjectAdapterI::newIndirectProxy(Identity ident, string facet, string id) const
1174
1098
  {
1175
1099
  //
1176
1100
  // Create an indirect reference with the given adapter id.
1177
1101
  //
1178
- ReferencePtr ref = _instance->referenceFactory()->create(ident, facet, _reference, id);
1179
-
1180
- //
1181
- // Return a proxy for the reference.
1182
- //
1183
- return _instance->proxyFactory()->referenceToProxy(ref);
1102
+ return ObjectPrx::_fromReference(
1103
+ _instance->referenceFactory()->create(std::move(ident), std::move(facet), _reference, std::move(id)));
1184
1104
  }
1185
1105
 
1186
1106
  void
1187
1107
  Ice::ObjectAdapterI::checkForDeactivation() const
1188
1108
  {
1189
- if(_state >= StateDeactivating)
1109
+ checkForDestruction();
1110
+ if (_state >= StateDeactivating)
1190
1111
  {
1191
- throw ObjectAdapterDeactivatedException(__FILE__, __LINE__, getName());
1112
+ throw ObjectAdapterDeactivatedException{__FILE__, __LINE__, getName()};
1113
+ }
1114
+ }
1115
+
1116
+ void
1117
+ Ice::ObjectAdapterI::checkForDestruction() const
1118
+ {
1119
+ if (_state >= StateDestroying)
1120
+ {
1121
+ throw ObjectAdapterDestroyedException{__FILE__, __LINE__, getName()};
1192
1122
  }
1193
1123
  }
1194
1124
 
1195
1125
  vector<EndpointIPtr>
1196
- Ice::ObjectAdapterI::parseEndpoints(const string& endpts, bool oaEndpoints) const
1126
+ Ice::ObjectAdapterI::parseEndpoints(string_view endpts, bool oaEndpoints) const
1197
1127
  {
1198
1128
  string::size_type beg;
1199
1129
  string::size_type end = 0;
1200
1130
 
1201
1131
  vector<EndpointIPtr> endpoints;
1202
- while(end < endpts.length())
1132
+ while (end < endpts.length())
1203
1133
  {
1204
1134
  const string delim = " \t\n\r";
1205
1135
 
1206
1136
  beg = endpts.find_first_not_of(delim, end);
1207
- if(beg == string::npos)
1137
+ if (beg == string::npos)
1208
1138
  {
1209
- if(!endpoints.empty())
1139
+ if (!endpoints.empty())
1210
1140
  {
1211
- throw EndpointParseException(__FILE__, __LINE__, "invalid empty object adapter endpoint");
1141
+ throw ParseException(__FILE__, __LINE__, "invalid empty object adapter endpoint");
1212
1142
  }
1213
1143
  break;
1214
1144
  }
1215
1145
 
1216
1146
  end = beg;
1217
- while(true)
1147
+ while (true)
1218
1148
  {
1219
1149
  end = endpts.find(':', end);
1220
- if(end == string::npos)
1150
+ if (end == string::npos)
1221
1151
  {
1222
1152
  end = endpts.length();
1223
1153
  break;
@@ -1226,21 +1156,21 @@ Ice::ObjectAdapterI::parseEndpoints(const string& endpts, bool oaEndpoints) cons
1226
1156
  {
1227
1157
  bool quoted = false;
1228
1158
  string::size_type quote = beg;
1229
- while(true)
1159
+ while (true)
1230
1160
  {
1231
1161
  quote = endpts.find('\"', quote);
1232
- if(quote == string::npos || end < quote)
1162
+ if (quote == string::npos || end < quote)
1233
1163
  {
1234
1164
  break;
1235
1165
  }
1236
1166
  else
1237
1167
  {
1238
1168
  quote = endpts.find('\"', ++quote);
1239
- if(quote == string::npos)
1169
+ if (quote == string::npos)
1240
1170
  {
1241
1171
  break;
1242
1172
  }
1243
- else if(end < quote)
1173
+ else if (end < quote)
1244
1174
  {
1245
1175
  quoted = true;
1246
1176
  break;
@@ -1248,7 +1178,7 @@ Ice::ObjectAdapterI::parseEndpoints(const string& endpts, bool oaEndpoints) cons
1248
1178
  ++quote;
1249
1179
  }
1250
1180
  }
1251
- if(!quoted)
1181
+ if (!quoted)
1252
1182
  {
1253
1183
  break;
1254
1184
  }
@@ -1256,16 +1186,16 @@ Ice::ObjectAdapterI::parseEndpoints(const string& endpts, bool oaEndpoints) cons
1256
1186
  }
1257
1187
  }
1258
1188
 
1259
- if(end == beg)
1189
+ if (end == beg)
1260
1190
  {
1261
- throw EndpointParseException(__FILE__, __LINE__, "invalid empty object adapter endpoint");
1191
+ throw ParseException(__FILE__, __LINE__, "invalid empty object adapter endpoint");
1262
1192
  }
1263
1193
 
1264
- string s = endpts.substr(beg, end - beg);
1194
+ string_view s = endpts.substr(beg, end - beg);
1265
1195
  EndpointIPtr endp = _instance->endpointFactoryManager()->create(s, oaEndpoints);
1266
- if(endp == 0)
1196
+ if (endp == nullptr)
1267
1197
  {
1268
- throw EndpointParseException(__FILE__, __LINE__, "invalid object adapter endpoint `" + s + "'");
1198
+ throw ParseException(__FILE__, __LINE__, "invalid object adapter endpoint '" + string{s} + "'");
1269
1199
  }
1270
1200
  endpoints.push_back(endp);
1271
1201
 
@@ -1279,61 +1209,74 @@ std::vector<EndpointIPtr>
1279
1209
  ObjectAdapterI::computePublishedEndpoints()
1280
1210
  {
1281
1211
  vector<EndpointIPtr> endpoints;
1282
- if(_routerInfo)
1212
+ if (_routerInfo)
1283
1213
  {
1284
- //
1285
1214
  // Get the router's server proxy endpoints and use them as the published endpoints.
1286
- //
1287
- vector<EndpointIPtr> endps = _routerInfo->getServerEndpoints();
1288
- for(vector<EndpointIPtr>::const_iterator p = endps.begin(); p != endps.end(); ++p)
1289
- {
1290
- if(::find(endpoints.begin(), endpoints.end(), *p) == endpoints.end())
1291
- {
1292
- endpoints.push_back(*p);
1293
- }
1294
- }
1215
+ endpoints = _routerInfo->getServerEndpoints();
1295
1216
  }
1296
1217
  else
1297
1218
  {
1298
- //
1299
- // Parse published endpoints. If set, these are used in proxies
1300
- // instead of the connection factory endpoints.
1301
- //
1302
- string endpts = _communicator->getProperties()->getProperty(_name + ".PublishedEndpoints");
1303
- endpoints = parseEndpoints(endpts, false);
1304
- if(endpoints.empty())
1219
+ // Parse published endpoints. If set, these are used in proxies instead of the connection factory endpoints.
1220
+ endpoints = parseEndpoints(_communicator->getProperties()->getProperty(_name + ".PublishedEndpoints"), false);
1221
+ if (endpoints.empty())
1305
1222
  {
1306
- //
1307
- // If the PublishedEndpoints property isn't set, we compute the published endpoints
1308
- // from the OA endpoints, expanding any endpoints that may be listening on INADDR_ANY
1309
- // to include actual addresses in the published endpoints.
1310
- //
1311
- for(unsigned int i = 0; i < _incomingConnectionFactories.size(); ++i)
1223
+ // If the PublishedEndpoints property isn't set, we compute the published endpoints from the factory
1224
+ // endpoints.
1225
+ for (const auto& factory : _incomingConnectionFactories)
1226
+ {
1227
+ endpoints.push_back(factory->endpoint());
1228
+ }
1229
+
1230
+ // Remove all loopback/multicast endpoints
1231
+ vector<EndpointIPtr> endpointsNoLoopback;
1232
+ copy_if(
1233
+ endpoints.begin(),
1234
+ endpoints.end(),
1235
+ back_inserter(endpointsNoLoopback),
1236
+ [](const EndpointIPtr& endpoint) { return !endpoint->isLoopbackOrMulticast(); });
1237
+
1238
+ // Retrieve published host
1239
+ string publishedHost = _communicator->getProperties()->getProperty(_name + ".PublishedHost");
1240
+
1241
+ if (!endpointsNoLoopback.empty())
1312
1242
  {
1313
- vector<EndpointIPtr> endps = _incomingConnectionFactories[i]->endpoint()->expandIfWildcard();
1314
- for(vector<EndpointIPtr>::const_iterator p = endps.begin(); p != endps.end(); ++p)
1243
+ endpoints = std::move(endpointsNoLoopback);
1244
+
1245
+ // For non-loopback/multicast endpoints, we use the fully qualified name of the local host as default
1246
+ // for publishedHost.
1247
+ if (publishedHost.empty())
1315
1248
  {
1316
- //
1317
- // Check for duplicate endpoints, this might occur if an endpoint with a DNS name
1318
- // expands to multiple addresses. In this case, multiple incoming connection
1319
- // factories can point to the same published endpoint.
1320
- //
1321
- if(::find(endpoints.begin(), endpoints.end(), *p) == endpoints.end())
1322
- {
1323
- endpoints.push_back(*p);
1324
- }
1249
+ publishedHost = getHostName(); // fully qualified name of local host
1325
1250
  }
1326
1251
  }
1252
+ // else keep endpoints as-is; they are all loopback or multicast
1253
+
1254
+ vector<EndpointIPtr> newEndpoints;
1255
+
1256
+ // Replace the host in all endpoints by publishedHost (when applicable), clear local options and remove
1257
+ // duplicates.
1258
+ for (const auto& endpoint : endpoints)
1259
+ {
1260
+ EndpointIPtr newEndpoint = endpoint->toPublishedEndpoint(publishedHost);
1261
+ if (none_of(
1262
+ newEndpoints.begin(),
1263
+ newEndpoints.end(),
1264
+ [&newEndpoint](const EndpointIPtr& p) { return *newEndpoint == *p; }))
1265
+ {
1266
+ newEndpoints.push_back(newEndpoint);
1267
+ }
1268
+ }
1269
+ endpoints = std::move(newEndpoints);
1327
1270
  }
1328
1271
  }
1329
1272
 
1330
- if(_instance->traceLevels()->network >= 1 && !endpoints.empty())
1273
+ if (_instance->traceLevels()->network >= 1 && !endpoints.empty())
1331
1274
  {
1332
1275
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1333
- out << "published endpoints for object adapter `" << getName() << "':\n";
1334
- for(unsigned int i = 0; i < endpoints.size(); ++i)
1276
+ out << "published endpoints for object adapter '" << getName() << "':\n";
1277
+ for (size_t i = 0; i < endpoints.size(); ++i)
1335
1278
  {
1336
- if(i > 0)
1279
+ if (i > 0)
1337
1280
  {
1338
1281
  out << ":";
1339
1282
  }
@@ -1345,22 +1288,22 @@ ObjectAdapterI::computePublishedEndpoints()
1345
1288
  }
1346
1289
 
1347
1290
  void
1348
- ObjectAdapterI::updateLocatorRegistry(const IceInternal::LocatorInfoPtr& locatorInfo, const Ice::ObjectPrxPtr& proxy)
1291
+ ObjectAdapterI::updateLocatorRegistry(const IceInternal::LocatorInfoPtr& locatorInfo, const optional<ObjectPrx>& proxy)
1349
1292
  {
1350
- if(_id.empty() || !locatorInfo)
1293
+ if (_id.empty() || !locatorInfo)
1351
1294
  {
1352
1295
  return; // Nothing to update.
1353
1296
  }
1354
1297
 
1355
- LocatorRegistryPrxPtr locatorRegistry = locatorInfo->getLocatorRegistry();
1356
- if(!locatorRegistry)
1298
+ optional<LocatorRegistryPrx> locatorRegistry = locatorInfo->getLocatorRegistry();
1299
+ if (!locatorRegistry)
1357
1300
  {
1358
1301
  return;
1359
1302
  }
1360
1303
 
1361
1304
  try
1362
1305
  {
1363
- if(_replicaGroupId.empty())
1306
+ if (_replicaGroupId.empty())
1364
1307
  {
1365
1308
  locatorRegistry->setAdapterDirectProxy(_id, proxy);
1366
1309
  }
@@ -1369,162 +1312,72 @@ ObjectAdapterI::updateLocatorRegistry(const IceInternal::LocatorInfoPtr& locator
1369
1312
  locatorRegistry->setReplicatedAdapterDirectProxy(_id, _replicaGroupId, proxy);
1370
1313
  }
1371
1314
  }
1372
- catch(const AdapterNotFoundException&)
1315
+ catch (const AdapterNotFoundException&)
1373
1316
  {
1374
- if(_instance->traceLevels()->location >= 1)
1317
+ if (_instance->traceLevels()->location >= 1)
1375
1318
  {
1376
1319
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->locationCat);
1377
- out << "couldn't update object adapter `" + _id + "' endpoints with the locator registry:\n";
1320
+ out << "couldn't update object adapter '" + _id + "' endpoints with the locator registry:\n";
1378
1321
  out << "the object adapter is not known to the locator registry";
1379
1322
  }
1380
1323
 
1381
1324
  throw NotRegisteredException(__FILE__, __LINE__, "object adapter", _id);
1382
1325
  }
1383
- catch(const InvalidReplicaGroupIdException&)
1326
+ catch (const InvalidReplicaGroupIdException&)
1384
1327
  {
1385
- if(_instance->traceLevels()->location >= 1)
1328
+ if (_instance->traceLevels()->location >= 1)
1386
1329
  {
1387
1330
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->locationCat);
1388
- out << "couldn't update object adapter `" + _id + "' endpoints with the locator registry:\n";
1389
- out << "the replica group `" << _replicaGroupId << "' is not known to the locator registry";
1331
+ out << "couldn't update object adapter '" + _id + "' endpoints with the locator registry:\n";
1332
+ out << "the replica group '" << _replicaGroupId << "' is not known to the locator registry";
1390
1333
  }
1391
1334
 
1392
1335
  throw NotRegisteredException(__FILE__, __LINE__, "replica group", _replicaGroupId);
1393
1336
  }
1394
- catch(const AdapterAlreadyActiveException&)
1337
+ catch (const AdapterAlreadyActiveException&)
1395
1338
  {
1396
- if(_instance->traceLevels()->location >= 1)
1339
+ if (_instance->traceLevels()->location >= 1)
1397
1340
  {
1398
1341
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->locationCat);
1399
- out << "couldn't update object adapter `" + _id + "' endpoints with the locator registry:\n";
1342
+ out << "couldn't update object adapter '" + _id + "' endpoints with the locator registry:\n";
1400
1343
  out << "the object adapter endpoints are already set";
1401
1344
  }
1402
1345
 
1403
1346
  throw ObjectAdapterIdInUseException(__FILE__, __LINE__, _id);
1404
1347
  }
1405
- catch(const ObjectAdapterDeactivatedException&)
1348
+ catch (const ObjectAdapterDeactivatedException&)
1406
1349
  {
1407
1350
  // Expected if collocated call and OA is deactivated, ignore.
1408
1351
  }
1409
- catch(const CommunicatorDestroyedException&)
1352
+ catch (const CommunicatorDestroyedException&)
1410
1353
  {
1411
1354
  // Ignore.
1412
1355
  }
1413
- catch(const LocalException& ex)
1356
+ catch (const LocalException& ex)
1414
1357
  {
1415
- if(_instance->traceLevels()->location >= 1)
1358
+ if (_instance->traceLevels()->location >= 1)
1416
1359
  {
1417
1360
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->locationCat);
1418
- out << "couldn't update object adapter `" + _id + "' endpoints with the locator registry:\n" << ex;
1361
+ out << "couldn't update object adapter '" + _id + "' endpoints with the locator registry:\n" << ex;
1419
1362
  }
1420
1363
  throw; // TODO: Shall we raise a special exception instead of a non obvious local exception?
1421
1364
  }
1422
1365
 
1423
- if(_instance->traceLevels()->location >= 1)
1366
+ if (_instance->traceLevels()->location >= 1)
1424
1367
  {
1425
1368
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->locationCat);
1426
- out << "updated object adapter `" + _id + "' endpoints with the locator registry\n";
1369
+ out << "updated object adapter '" + _id + "' endpoints with the locator registry\n";
1427
1370
  out << "endpoints = ";
1428
- if(proxy)
1371
+ if (proxy)
1429
1372
  {
1430
1373
  EndpointSeq endpts = proxy ? proxy->ice_getEndpoints() : EndpointSeq();
1431
1374
  ostringstream o;
1432
- #ifdef ICE_CPP11_COMPILER
1433
- transform(endpts.begin(), endpts.end(), ostream_iterator<string>(o, endpts.size() > 1 ? ":" : ""),
1434
- [](const EndpointPtr& endpoint)
1435
- {
1436
- return endpoint->toString();
1437
- });
1438
- #else
1439
- transform(endpts.begin(), endpts.end(), ostream_iterator<string>(o, endpts.size() > 1 ? ":" : ""),
1440
- Ice::constMemFun(&Endpoint::toString));
1441
- #endif
1375
+ transform(
1376
+ endpts.begin(),
1377
+ endpts.end(),
1378
+ ostream_iterator<string>(o, endpts.size() > 1 ? ":" : ""),
1379
+ [](const EndpointPtr& endpoint) { return endpoint->toString(); });
1442
1380
  out << o.str();
1443
1381
  }
1444
1382
  }
1445
1383
  }
1446
-
1447
- bool
1448
- Ice::ObjectAdapterI::filterProperties(StringSeq& unknownProps)
1449
- {
1450
- static const string suffixes[] =
1451
- {
1452
- "ACM",
1453
- "ACM.Close",
1454
- "ACM.Heartbeat",
1455
- "ACM.Timeout",
1456
- "AdapterId",
1457
- "Endpoints",
1458
- "Locator",
1459
- "Locator.EncodingVersion",
1460
- "Locator.EndpointSelection",
1461
- "Locator.ConnectionCached",
1462
- "Locator.PreferSecure",
1463
- "Locator.CollocationOptimized",
1464
- "Locator.Router",
1465
- "MessageSizeMax",
1466
- "PublishedEndpoints",
1467
- "ReplicaGroupId",
1468
- "Router",
1469
- "Router.EncodingVersion",
1470
- "Router.EndpointSelection",
1471
- "Router.ConnectionCached",
1472
- "Router.PreferSecure",
1473
- "Router.CollocationOptimized",
1474
- "Router.Locator",
1475
- "Router.Locator.EndpointSelection",
1476
- "Router.Locator.ConnectionCached",
1477
- "Router.Locator.PreferSecure",
1478
- "Router.Locator.CollocationOptimized",
1479
- "Router.Locator.LocatorCacheTimeout",
1480
- "Router.Locator.InvocationTimeout",
1481
- "Router.LocatorCacheTimeout",
1482
- "Router.InvocationTimeout",
1483
- "ProxyOptions",
1484
- "ThreadPool.Size",
1485
- "ThreadPool.SizeMax",
1486
- "ThreadPool.SizeWarn",
1487
- "ThreadPool.StackSize",
1488
- "ThreadPool.Serialize",
1489
- "ThreadPool.ThreadPriority"
1490
- };
1491
-
1492
- //
1493
- // Do not create unknown properties list if Ice prefix, ie Ice, Glacier2, etc
1494
- //
1495
- bool addUnknown = true;
1496
- string prefix = _name + ".";
1497
- for(const char** i = IceInternal::PropertyNames::clPropNames; *i != 0; ++i)
1498
- {
1499
- string icePrefix = string(*i) + ".";
1500
- if(prefix.find(icePrefix) == 0)
1501
- {
1502
- addUnknown = false;
1503
- break;
1504
- }
1505
- }
1506
-
1507
- bool noProps = true;
1508
- PropertyDict props = _instance->initializationData().properties->getPropertiesForPrefix(prefix);
1509
- for(PropertyDict::const_iterator p = props.begin(); p != props.end(); ++p)
1510
- {
1511
- bool valid = false;
1512
- for(unsigned int i = 0; i < sizeof(suffixes)/sizeof(*suffixes); ++i)
1513
- {
1514
- string prop = prefix + suffixes[i];
1515
- if(p->first == prop)
1516
- {
1517
- noProps = false;
1518
- valid = true;
1519
- break;
1520
- }
1521
- }
1522
-
1523
- if(!valid && addUnknown)
1524
- {
1525
- unknownProps.push_back(p->first);
1526
- }
1527
- }
1528
-
1529
- return noProps;
1530
- }