zeroc-ice 3.7.9.1 → 3.7.11

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