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,1535 @@
1
+ //
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
3
+ //
4
+
5
+ #include <Ice/Selector.h>
6
+ #include <Ice/EventHandler.h>
7
+ #include <Ice/Instance.h>
8
+ #include <Ice/LoggerUtil.h>
9
+ #include <Ice/LocalException.h>
10
+ #include <IceUtil/Time.h>
11
+
12
+ #ifdef ICE_USE_CFSTREAM
13
+ # include <CoreFoundation/CoreFoundation.h>
14
+ # include <CoreFoundation/CFStream.h>
15
+ #endif
16
+
17
+ using namespace std;
18
+ using namespace IceInternal;
19
+
20
+ #if defined(ICE_USE_KQUEUE)
21
+ namespace
22
+ {
23
+ struct timespec zeroTimeout = { 0, 0 };
24
+ }
25
+ #endif
26
+
27
+ #if defined(ICE_USE_IOCP)
28
+
29
+ Selector::Selector(const InstancePtr& instance) : _instance(instance)
30
+ {
31
+ }
32
+
33
+ Selector::~Selector()
34
+ {
35
+ }
36
+
37
+ #ifdef ICE_USE_IOCP
38
+ void
39
+ Selector::setup(int sizeIO)
40
+ {
41
+ _handle = CreateIoCompletionPort(INVALID_HANDLE_VALUE, ICE_NULLPTR, 0, sizeIO);
42
+ if(_handle == ICE_NULLPTR)
43
+ {
44
+ throw Ice::SocketException(__FILE__, __LINE__, GetLastError());
45
+ }
46
+ }
47
+ #endif
48
+
49
+ void
50
+ Selector::destroy()
51
+ {
52
+ #ifdef ICE_USE_IOCP
53
+ CloseHandle(_handle);
54
+ #endif
55
+ }
56
+
57
+ void
58
+ Selector::initialize(EventHandler* handler)
59
+ {
60
+ if(!handler->getNativeInfo())
61
+ {
62
+ return;
63
+ }
64
+
65
+ #ifdef ICE_USE_IOCP
66
+ SOCKET socket = handler->getNativeInfo()->fd();
67
+ if(socket != INVALID_SOCKET)
68
+ {
69
+ if(CreateIoCompletionPort(reinterpret_cast<HANDLE>(socket),
70
+ _handle,
71
+ reinterpret_cast<ULONG_PTR>(handler),
72
+ 0) == ICE_NULLPTR)
73
+ {
74
+ throw Ice::SocketException(__FILE__, __LINE__, GetLastError());
75
+ }
76
+ }
77
+ handler->getNativeInfo()->initialize(_handle, reinterpret_cast<ULONG_PTR>(handler));
78
+ #else
79
+ EventHandlerPtr h = ICE_GET_SHARED_FROM_THIS(handler);
80
+ handler->getNativeInfo()->setCompletedHandler(
81
+ ref new SocketOperationCompletedHandler(
82
+ [=](int operation)
83
+ {
84
+ //
85
+ // Use the reference counted handler to ensure it's not
86
+ // destroyed as long as the callback lambda exists.
87
+ //
88
+ completed(h.get(), static_cast<SocketOperation>(operation));
89
+ }));
90
+ #endif
91
+ }
92
+
93
+ void
94
+ Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation add)
95
+ {
96
+ handler->_registered = static_cast<SocketOperation>(handler->_registered & ~remove);
97
+ handler->_registered = static_cast<SocketOperation>(handler->_registered | add);
98
+ if(add & SocketOperationRead && !(handler->_pending & SocketOperationRead))
99
+ {
100
+ handler->_pending = static_cast<SocketOperation>(handler->_pending | SocketOperationRead);
101
+ completed(handler, SocketOperationRead); // Start an asynchrnous read
102
+ }
103
+ else if(add & SocketOperationWrite && !(handler->_pending & SocketOperationWrite))
104
+ {
105
+ handler->_pending = static_cast<SocketOperation>(handler->_pending | SocketOperationWrite);
106
+ completed(handler, SocketOperationWrite); // Start an asynchrnous write
107
+ }
108
+ }
109
+
110
+ void
111
+ Selector::finish(IceInternal::EventHandler* handler)
112
+ {
113
+ handler->_registered = SocketOperationNone;
114
+ handler->_finish = false; // Ensures that finished() is only called once on the event handler.
115
+ }
116
+
117
+ void
118
+ Selector::ready(EventHandler* handler, SocketOperation status, bool value)
119
+ {
120
+ if(((handler->_ready & status) != 0) == value)
121
+ {
122
+ return; // Nothing to do if ready state already correctly set.
123
+ }
124
+
125
+ if(value)
126
+ {
127
+ handler->_ready = static_cast<SocketOperation>(handler->_ready | status);
128
+ }
129
+ else
130
+ {
131
+ handler->_ready = static_cast<SocketOperation>(handler->_ready & ~status);
132
+ }
133
+ }
134
+
135
+ EventHandler*
136
+ #ifdef ICE_USE_IOCP
137
+ Selector::getNextHandler(SocketOperation& status, DWORD& count, int& error, int timeout)
138
+ #else
139
+ Selector::getNextHandler(SocketOperation& status, int timeout)
140
+ #endif
141
+ {
142
+ #ifdef ICE_USE_IOCP
143
+ ULONG_PTR key;
144
+ LPOVERLAPPED ol;
145
+ error = ERROR_SUCCESS;
146
+
147
+ if(!GetQueuedCompletionStatus(_handle, &count, &key, &ol, timeout > 0 ? timeout * 1000 : INFINITE))
148
+ {
149
+ int err = WSAGetLastError();
150
+ if(ol == 0)
151
+ {
152
+ if(err == WAIT_TIMEOUT)
153
+ {
154
+ throw SelectorTimeoutException();
155
+ }
156
+ else
157
+ {
158
+ Ice::SocketException ex(__FILE__, __LINE__, err);
159
+ Ice::Error out(_instance->initializationData().logger);
160
+ out << "couldn't dequeue packet from completion port:\n" << ex;
161
+ IceUtil::ThreadControl::sleep(IceUtil::Time::seconds(5)); // Sleep 5s to avoid looping
162
+ }
163
+ }
164
+ AsyncInfo* info = static_cast<AsyncInfo*>(ol);
165
+ if(info)
166
+ {
167
+ status = info->status;
168
+ }
169
+ count = 0;
170
+ error = WSAGetLastError();
171
+ return reinterpret_cast<EventHandler*>(key);
172
+ }
173
+
174
+ AsyncInfo* info = static_cast<AsyncInfo*>(ol);
175
+ if(info)
176
+ {
177
+ status = info->status;
178
+ }
179
+ else
180
+ {
181
+ status = reinterpret_cast<EventHandler*>(key)->_ready;
182
+ }
183
+ return reinterpret_cast<EventHandler*>(key);
184
+ #else
185
+ IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);
186
+ while(_events.empty())
187
+ {
188
+ if(timeout > 0)
189
+ {
190
+ _monitor.timedWait(IceUtil::Time::seconds(timeout));
191
+ if(_events.empty())
192
+ {
193
+ throw SelectorTimeoutException();
194
+ }
195
+ }
196
+ else
197
+ {
198
+ _monitor.wait();
199
+ }
200
+ }
201
+ assert(!_events.empty());
202
+ IceInternal::EventHandlerPtr handler = _events.front().handler;
203
+ const SelectEvent& event = _events.front();
204
+ status = event.status;
205
+ _events.pop_front();
206
+ return handler.get();
207
+ #endif
208
+ }
209
+
210
+ void
211
+ Selector::completed(EventHandler* handler, SocketOperation op)
212
+ {
213
+ #ifdef ICE_USE_IOCP
214
+ AsyncInfo* info = 0;
215
+ NativeInfoPtr nativeInfo = handler->getNativeInfo();
216
+ if(nativeInfo)
217
+ {
218
+ info = nativeInfo->getAsyncInfo(op);
219
+ }
220
+ if(!PostQueuedCompletionStatus(_handle, 0, reinterpret_cast<ULONG_PTR>(handler), info))
221
+ {
222
+ throw Ice::SocketException(__FILE__, __LINE__, GetLastError());
223
+ }
224
+ #else
225
+ IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);
226
+ _events.push_back(SelectEvent(handler->shared_from_this(), op));
227
+ _monitor.notify();
228
+ #endif
229
+ }
230
+
231
+ #elif defined(ICE_USE_KQUEUE) || defined(ICE_USE_EPOLL) || defined(ICE_USE_SELECT) || defined(ICE_USE_POLL)
232
+
233
+ Selector::Selector(const InstancePtr& instance) : _instance(instance), _interrupted(false)
234
+ {
235
+ SOCKET fds[2];
236
+ createPipe(fds);
237
+ _fdIntrRead = fds[0];
238
+ _fdIntrWrite = fds[1];
239
+ _selecting = false;
240
+
241
+ #if defined(ICE_USE_EPOLL)
242
+ _events.resize(256);
243
+ _queueFd = epoll_create(1);
244
+ if(_queueFd < 0)
245
+ {
246
+ throw Ice::SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
247
+ }
248
+
249
+ epoll_event event;
250
+ memset(&event, 0, sizeof(epoll_event));
251
+ event.data.ptr = 0;
252
+ event.events = EPOLLIN;
253
+ if(epoll_ctl(_queueFd, EPOLL_CTL_ADD, _fdIntrRead, &event) != 0)
254
+ {
255
+ Ice::Error out(_instance->initializationData().logger);
256
+ out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
257
+ }
258
+ #elif defined(ICE_USE_KQUEUE)
259
+ _events.resize(256);
260
+ _queueFd = kqueue();
261
+ if(_queueFd < 0)
262
+ {
263
+ throw Ice::SocketException(__FILE__, __LINE__, getSocketErrno());
264
+ }
265
+
266
+ struct kevent ev;
267
+ EV_SET(&ev, _fdIntrRead, EVFILT_READ, EV_ADD, 0, 0, 0);
268
+ int rs = kevent(_queueFd, &ev, 1, 0, 0, 0);
269
+ if(rs < 0)
270
+ {
271
+ Ice::Error out(_instance->initializationData().logger);
272
+ out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
273
+ }
274
+ #elif defined(ICE_USE_SELECT)
275
+ FD_ZERO(&_readFdSet);
276
+ FD_ZERO(&_writeFdSet);
277
+ FD_ZERO(&_errorFdSet);
278
+ FD_SET(_fdIntrRead, &_readFdSet);
279
+ #else
280
+ struct pollfd pollFd;
281
+ pollFd.fd = _fdIntrRead;
282
+ pollFd.events = POLLIN;
283
+ _pollFdSet.push_back(pollFd);
284
+ #endif
285
+ }
286
+
287
+ Selector::~Selector()
288
+ {
289
+ }
290
+
291
+ void
292
+ Selector::destroy()
293
+ {
294
+ #if defined(ICE_USE_KQUEUE) || defined(ICE_USE_EPOLL)
295
+ try
296
+ {
297
+ closeSocket(_queueFd);
298
+ }
299
+ catch(const Ice::LocalException& ex)
300
+ {
301
+ Ice::Error out(_instance->initializationData().logger);
302
+ out << "exception in selector while calling closeSocket():\n" << ex;
303
+ }
304
+ #endif
305
+
306
+ try
307
+ {
308
+ closeSocket(_fdIntrWrite);
309
+ }
310
+ catch(const Ice::LocalException& ex)
311
+ {
312
+ Ice::Error out(_instance->initializationData().logger);
313
+ out << "exception in selector while calling closeSocket():\n" << ex;
314
+ }
315
+
316
+ try
317
+ {
318
+ closeSocket(_fdIntrRead);
319
+ }
320
+ catch(const Ice::LocalException& ex)
321
+ {
322
+ Ice::Error out(_instance->initializationData().logger);
323
+ out << "exception in selector while calling closeSocket():\n" << ex;
324
+ }
325
+ }
326
+
327
+ void
328
+ Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation add)
329
+ {
330
+ SocketOperation previous = handler->_registered;
331
+ handler->_registered = static_cast<SocketOperation>(handler->_registered & ~remove);
332
+ handler->_registered = static_cast<SocketOperation>(handler->_registered | add);
333
+ if(previous == handler->_registered)
334
+ {
335
+ return;
336
+ }
337
+ checkReady(handler);
338
+
339
+ NativeInfoPtr nativeInfo = handler->getNativeInfo();
340
+ if(nativeInfo && nativeInfo->fd() != INVALID_SOCKET)
341
+ {
342
+ updateSelectorForEventHandler(handler, remove, add);
343
+ }
344
+ }
345
+
346
+ void
347
+ Selector::enable(EventHandler* handler, SocketOperation status)
348
+ {
349
+ if(!(handler->_disabled & status))
350
+ {
351
+ return;
352
+ }
353
+ handler->_disabled = static_cast<SocketOperation>(handler->_disabled & ~status);
354
+ checkReady(handler);
355
+
356
+ NativeInfoPtr nativeInfo = handler->getNativeInfo();
357
+ if(!nativeInfo || nativeInfo->fd() == INVALID_SOCKET)
358
+ {
359
+ return;
360
+ }
361
+
362
+ if(handler->_registered & status)
363
+ {
364
+ #if defined(ICE_USE_EPOLL)
365
+ SOCKET fd = nativeInfo->fd();
366
+ SocketOperation previous = static_cast<SocketOperation>(handler->_registered & ~(handler->_disabled | status));
367
+ SocketOperation newStatus = static_cast<SocketOperation>(handler->_registered & ~handler->_disabled);
368
+ epoll_event event;
369
+ memset(&event, 0, sizeof(epoll_event));
370
+ event.data.ptr = handler;
371
+ if(newStatus & SocketOperationRead)
372
+ {
373
+ event.events |= EPOLLIN;
374
+ }
375
+ if(newStatus & SocketOperationWrite)
376
+ {
377
+ event.events |= EPOLLOUT;
378
+ }
379
+ if(epoll_ctl(_queueFd, previous ? EPOLL_CTL_MOD : EPOLL_CTL_ADD, fd, &event) != 0)
380
+ {
381
+ Ice::Error out(_instance->initializationData().logger);
382
+ out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
383
+ }
384
+ #elif defined(ICE_USE_KQUEUE)
385
+ struct kevent ev;
386
+ SOCKET fd = handler->getNativeInfo()->fd();
387
+ EV_SET(&ev, fd, status == SocketOperationRead ? EVFILT_READ : EVFILT_WRITE, EV_ENABLE, 0, 0, handler);
388
+ _changes.push_back(ev);
389
+ if(_selecting)
390
+ {
391
+ updateSelector();
392
+ }
393
+ #else
394
+ _changes.push_back(make_pair(handler, static_cast<SocketOperation>(handler->_registered & ~handler->_disabled)));
395
+ wakeup();
396
+ #endif
397
+ }
398
+ }
399
+
400
+ void
401
+ Selector::disable(EventHandler* handler, SocketOperation status)
402
+ {
403
+ if(handler->_disabled & status)
404
+ {
405
+ return;
406
+ }
407
+ handler->_disabled = static_cast<SocketOperation>(handler->_disabled | status);
408
+ checkReady(handler);
409
+
410
+ NativeInfoPtr nativeInfo = handler->getNativeInfo();
411
+ if(!nativeInfo || nativeInfo->fd() == INVALID_SOCKET)
412
+ {
413
+ return;
414
+ }
415
+
416
+ if(handler->_registered & status)
417
+ {
418
+ #if defined(ICE_USE_EPOLL)
419
+ SOCKET fd = nativeInfo->fd();
420
+ SocketOperation newStatus = static_cast<SocketOperation>(handler->_registered & ~handler->_disabled);
421
+ epoll_event event;
422
+ memset(&event, 0, sizeof(epoll_event));
423
+ event.data.ptr = handler;
424
+ if(newStatus & SocketOperationRead)
425
+ {
426
+ event.events |= EPOLLIN;
427
+ }
428
+ if(newStatus & SocketOperationWrite)
429
+ {
430
+ event.events |= EPOLLOUT;
431
+ }
432
+ if(epoll_ctl(_queueFd, newStatus ? EPOLL_CTL_MOD : EPOLL_CTL_DEL, fd, &event) != 0)
433
+ {
434
+ Ice::Error out(_instance->initializationData().logger);
435
+ out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
436
+ }
437
+ #elif defined(ICE_USE_KQUEUE)
438
+ SOCKET fd = nativeInfo->fd();
439
+ struct kevent ev;
440
+ EV_SET(&ev, fd, status == SocketOperationRead ? EVFILT_READ : EVFILT_WRITE, EV_DISABLE, 0, 0, handler);
441
+ _changes.push_back(ev);
442
+ if(_selecting)
443
+ {
444
+ updateSelector();
445
+ }
446
+ #else
447
+ _changes.push_back(make_pair(handler, static_cast<SocketOperation>(handler->_registered & ~handler->_disabled)));
448
+ wakeup();
449
+ #endif
450
+ }
451
+ }
452
+
453
+ bool
454
+ Selector::finish(EventHandler* handler, bool closeNow)
455
+ {
456
+ if(handler->_registered)
457
+ {
458
+ update(handler, handler->_registered, SocketOperationNone);
459
+ #if !defined(ICE_USE_EPOLL) && !defined(ICE_USE_KQUEUE)
460
+ return false; // Don't close now if selecting
461
+ #endif
462
+ }
463
+
464
+ #if defined(ICE_USE_KQUEUE)
465
+ if(closeNow && !_changes.empty())
466
+ {
467
+ //
468
+ // Update selector now to remove the FD from the kqueue if
469
+ // we're going to close it now. This isn't necessary for
470
+ // epoll since we always update the epoll FD immediately.
471
+ //
472
+ updateSelector();
473
+ }
474
+ #elif !defined(ICE_USE_EPOLL)
475
+ if(!_changes.empty())
476
+ {
477
+ return false;
478
+ }
479
+ #endif
480
+
481
+ return closeNow;
482
+ }
483
+
484
+ void
485
+ Selector::ready(EventHandler* handler, SocketOperation status, bool value)
486
+ {
487
+ if(((handler->_ready & status) != 0) == value)
488
+ {
489
+ return; // Nothing to do if ready state already correctly set.
490
+ }
491
+
492
+ if(status & SocketOperationConnect)
493
+ {
494
+ NativeInfoPtr nativeInfo = handler->getNativeInfo();
495
+ if(nativeInfo && nativeInfo->newFd() && handler->_registered)
496
+ {
497
+ // If new FD is set after connect, register the FD with the selector.
498
+ updateSelectorForEventHandler(handler, SocketOperationNone, handler->_registered);
499
+ }
500
+ }
501
+
502
+ if(value)
503
+ {
504
+ handler->_ready = static_cast<SocketOperation>(handler->_ready | status);
505
+ }
506
+ else
507
+ {
508
+ handler->_ready = static_cast<SocketOperation>(handler->_ready & ~status);
509
+ }
510
+ checkReady(handler);
511
+ }
512
+
513
+ void
514
+ Selector::wakeup()
515
+ {
516
+ if(_selecting && !_interrupted)
517
+ {
518
+ char c = 0;
519
+ while(true)
520
+ {
521
+ if(::write(_fdIntrWrite, &c, 1) == SOCKET_ERROR)
522
+ {
523
+ if(interrupted())
524
+ {
525
+ continue;
526
+ }
527
+
528
+ throw Ice::SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
529
+ }
530
+ break;
531
+ }
532
+ _interrupted = true;
533
+ }
534
+ }
535
+
536
+ void
537
+ Selector::startSelect()
538
+ {
539
+ if(_interrupted)
540
+ {
541
+ char c;
542
+ while(true)
543
+ {
544
+ ssize_t ret = ::read(_fdIntrRead, &c, 1);
545
+ if(ret == SOCKET_ERROR)
546
+ {
547
+ if(interrupted())
548
+ {
549
+ continue;
550
+ }
551
+ throw Ice::SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
552
+ }
553
+ break;
554
+ }
555
+ _interrupted = false;
556
+ }
557
+
558
+ #if !defined(ICE_USE_EPOLL)
559
+ if(!_changes.empty())
560
+ {
561
+ updateSelector();
562
+ }
563
+ #endif
564
+ _selecting = true;
565
+
566
+ //
567
+ // If there are ready handlers, don't block in select, just do a non-blocking
568
+ // select to retrieve new ready handlers from the Java selector.
569
+ //
570
+ _selectNow = !_readyHandlers.empty();
571
+ }
572
+
573
+ void
574
+ Selector::finishSelect(vector<pair<EventHandler*, SocketOperation> >& handlers)
575
+ {
576
+ _selecting = false;
577
+
578
+ assert(handlers.empty());
579
+
580
+ #if defined(ICE_USE_POLL) || defined(ICE_USE_SELECT)
581
+ if(_interrupted) // Interrupted, we have to process the interrupt before returning any handlers
582
+ {
583
+ return;
584
+ }
585
+ #endif
586
+
587
+ #if defined(ICE_USE_POLL)
588
+ for(vector<struct pollfd>::const_iterator r = _pollFdSet.begin(); r != _pollFdSet.end(); ++r)
589
+ #else
590
+ for(int i = 0; i < _count; ++i)
591
+ #endif
592
+ {
593
+ pair<EventHandler*, SocketOperation> p;
594
+
595
+ #if defined(ICE_USE_EPOLL)
596
+ struct epoll_event& ev = _events[i];
597
+ p.first = reinterpret_cast<EventHandler*>(ev.data.ptr);
598
+ p.second = static_cast<SocketOperation>(((ev.events & (EPOLLIN | EPOLLERR)) ?
599
+ SocketOperationRead : SocketOperationNone) |
600
+ ((ev.events & (EPOLLOUT | EPOLLERR)) ?
601
+ SocketOperationWrite : SocketOperationNone));
602
+ #elif defined(ICE_USE_KQUEUE)
603
+ struct kevent& ev = _events[static_cast<size_t>(i)];
604
+ if(ev.flags & EV_ERROR)
605
+ {
606
+ Ice::Error out(_instance->initializationData().logger);
607
+ out << "selector returned error:\n" << IceUtilInternal::errorToString(static_cast<int>(ev.data));
608
+ continue;
609
+ }
610
+ p.first = reinterpret_cast<EventHandler*>(ev.udata);
611
+ p.second = (ev.filter == EVFILT_READ) ? SocketOperationRead : SocketOperationWrite;
612
+ #elif defined(ICE_USE_SELECT)
613
+ //
614
+ // Round robin for the filedescriptors.
615
+ //
616
+ SOCKET fd;
617
+ p.second = SocketOperationNone;
618
+ if(i < _selectedReadFdSet.fd_count)
619
+ {
620
+ fd = _selectedReadFdSet.fd_array[i];
621
+ p.second = static_cast<SocketOperation>(p.second | SocketOperationRead);
622
+ }
623
+ else if(i < _selectedWriteFdSet.fd_count + _selectedReadFdSet.fd_count)
624
+ {
625
+ fd = _selectedWriteFdSet.fd_array[i - _selectedReadFdSet.fd_count];
626
+ p.second = static_cast<SocketOperation>(p.second | SocketOperationWrite);
627
+ }
628
+ else
629
+ {
630
+ fd = _selectedErrorFdSet.fd_array[i - _selectedReadFdSet.fd_count - _selectedWriteFdSet.fd_count];
631
+ p.second = static_cast<SocketOperation>(p.second | SocketOperationConnect);
632
+ }
633
+
634
+ assert(fd != _fdIntrRead);
635
+ p.first = _handlers[fd];
636
+ #else
637
+ if(r->revents == 0)
638
+ {
639
+ continue;
640
+ }
641
+
642
+ SOCKET fd = r->fd;
643
+ assert(_handlers.find(fd) != _handlers.end());
644
+ p.first = _handlers[fd];
645
+ p.second = SocketOperationNone;
646
+ if(r->revents & (POLLIN | POLLERR | POLLHUP))
647
+ {
648
+ p.second = static_cast<SocketOperation>(p.second | SocketOperationRead);
649
+ }
650
+ if(r->revents & (POLLOUT | POLLERR | POLLHUP))
651
+ {
652
+ p.second = static_cast<SocketOperation>(p.second | SocketOperationWrite);
653
+ }
654
+ assert(p.second);
655
+ #endif
656
+ if(!p.first)
657
+ {
658
+ continue; // Interrupted
659
+ }
660
+
661
+ map<EventHandlerPtr, SocketOperation>::iterator q = _readyHandlers.find(ICE_GET_SHARED_FROM_THIS(p.first));
662
+
663
+ if(q != _readyHandlers.end()) // Handler will be added by the loop below
664
+ {
665
+ q->second = p.second; // We just remember which operations are ready here.
666
+ }
667
+ else
668
+ {
669
+ handlers.push_back(p);
670
+ }
671
+ }
672
+
673
+ for(map<EventHandlerPtr, SocketOperation>::iterator q = _readyHandlers.begin(); q != _readyHandlers.end(); ++q)
674
+ {
675
+ pair<EventHandler*, SocketOperation> p;
676
+ p.first = q->first.get();
677
+ p.second = static_cast<SocketOperation>(p.first->_ready & ~p.first->_disabled & p.first->_registered);
678
+ p.second = static_cast<SocketOperation>(p.second | q->second);
679
+ if(p.second)
680
+ {
681
+ handlers.push_back(p);
682
+ }
683
+
684
+ //
685
+ // Reset the operation, it's only used by this method to temporarly store the socket status
686
+ // return by the select operation above.
687
+ //
688
+ q->second = SocketOperationNone;
689
+ }
690
+ }
691
+
692
+ void
693
+ Selector::select(int timeout)
694
+ {
695
+ if(_selectNow)
696
+ {
697
+ timeout = 0;
698
+ }
699
+ else if(timeout > 0)
700
+ {
701
+ // kpoll and select use seconds, epoll and poll use milliseconds
702
+ #if !defined(ICE_USE_KQUEUE) && !defined(ICE_USE_SELECT)
703
+ timeout = timeout * 1000;
704
+ #endif
705
+ }
706
+ else
707
+ {
708
+ timeout = -1;
709
+ }
710
+
711
+ int spuriousWakeup = 0;
712
+ while(true)
713
+ {
714
+ #if defined(ICE_USE_EPOLL)
715
+ _count = epoll_wait(_queueFd, &_events[0], _events.size(), timeout);
716
+ #elif defined(ICE_USE_KQUEUE)
717
+ assert(!_events.empty());
718
+ if(timeout >= 0)
719
+ {
720
+ struct timespec ts;
721
+ ts.tv_sec = timeout;
722
+ ts.tv_nsec = 0;
723
+ _count = kevent(_queueFd, 0, 0, &_events[0], static_cast<int>(_events.size()), &ts);
724
+ }
725
+ else
726
+ {
727
+ _count = kevent(_queueFd, 0, 0, &_events[0], static_cast<int>(_events.size()), 0);
728
+ }
729
+ #elif defined(ICE_USE_SELECT)
730
+ fd_set* rFdSet = fdSetCopy(_selectedReadFdSet, _readFdSet);
731
+ fd_set* wFdSet = fdSetCopy(_selectedWriteFdSet, _writeFdSet);
732
+ fd_set* eFdSet = fdSetCopy(_selectedErrorFdSet, _errorFdSet);
733
+ if(timeout >= 0)
734
+ {
735
+ struct timeval tv;
736
+ tv.tv_sec = timeout;
737
+ tv.tv_usec = 0;
738
+ _count = ::select(0, rFdSet, wFdSet, eFdSet, &tv); // The first parameter is ignored on Windows
739
+ }
740
+ else
741
+ {
742
+ _count = ::select(0, rFdSet, wFdSet, eFdSet, 0); // The first parameter is ignored on Windows
743
+ }
744
+ #else
745
+ _count = poll(&_pollFdSet[0], _pollFdSet.size(), timeout);
746
+ #endif
747
+
748
+ if(_count == SOCKET_ERROR)
749
+ {
750
+ if(interrupted())
751
+ {
752
+ continue;
753
+ }
754
+
755
+ Ice::SocketException ex(__FILE__, __LINE__, IceInternal::getSocketErrno());
756
+ Ice::Error out(_instance->initializationData().logger);
757
+ out << "selector failed:\n" << ex;
758
+ IceUtil::ThreadControl::sleep(IceUtil::Time::seconds(5)); // Sleep 5s to avoid looping
759
+ }
760
+ else if(_count == 0 && timeout < 0)
761
+ {
762
+ if(++spuriousWakeup > 100)
763
+ {
764
+ spuriousWakeup = 0;
765
+ _instance->initializationData().logger->warning("spurious selector wakeup");
766
+ }
767
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(1));
768
+ continue;
769
+ }
770
+ break;
771
+ }
772
+
773
+ if(_count == 0 && !_selectNow)
774
+ {
775
+ throw SelectorTimeoutException();
776
+ }
777
+ }
778
+
779
+ void
780
+ Selector::checkReady(EventHandler* handler)
781
+ {
782
+ if(handler->_ready & ~handler->_disabled & handler->_registered)
783
+ {
784
+ _readyHandlers.insert(make_pair(ICE_GET_SHARED_FROM_THIS(handler), SocketOperationNone));
785
+ wakeup();
786
+ }
787
+ else
788
+ {
789
+ map<EventHandlerPtr, SocketOperation>::iterator p = _readyHandlers.find(ICE_GET_SHARED_FROM_THIS(handler));
790
+ if(p != _readyHandlers.end())
791
+ {
792
+ _readyHandlers.erase(p);
793
+ }
794
+ }
795
+ }
796
+
797
+ void
798
+ Selector::updateSelector()
799
+ {
800
+ #if defined(ICE_USE_KQUEUE)
801
+ int rs = kevent(_queueFd, &_changes[0], static_cast<int>(_changes.size()),
802
+ &_changes[0], static_cast<int>(_changes.size()), &zeroTimeout);
803
+ if(rs < 0)
804
+ {
805
+ Ice::Error out(_instance->initializationData().logger);
806
+ out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
807
+ }
808
+ else
809
+ {
810
+ for(int i = 0; i < rs; ++i)
811
+ {
812
+ //
813
+ // Check for errors, we ignore EINPROGRESS that started showing up with macOS Sierra
814
+ // and which occurs when another thread removes the FD from the kqueue (see ICE-7419).
815
+ //
816
+ if(_changes[static_cast<size_t>(i)].flags & EV_ERROR &&
817
+ _changes[static_cast<size_t>(i)].data != EINPROGRESS)
818
+ {
819
+ Ice::Error out(_instance->initializationData().logger);
820
+ out << "error while updating selector:\n"
821
+ << IceUtilInternal::errorToString(static_cast<int>(_changes[static_cast<size_t>(i)].data));
822
+ }
823
+ }
824
+ }
825
+ _changes.clear();
826
+ #elif !defined(ICE_USE_EPOLL)
827
+ assert(!_selecting);
828
+
829
+ for(vector<pair<EventHandler*, SocketOperation> >::const_iterator p = _changes.begin(); p != _changes.end(); ++p)
830
+ {
831
+ EventHandler* handler = p->first;
832
+ SocketOperation status = p->second;
833
+
834
+ SOCKET fd = handler->getNativeInfo()->fd();
835
+ if(status)
836
+ {
837
+ #if defined(ICE_USE_SELECT)
838
+ if(status & SocketOperationRead)
839
+ {
840
+ FD_SET(fd, &_readFdSet);
841
+ }
842
+ else
843
+ {
844
+ FD_CLR(fd, &_readFdSet);
845
+ }
846
+ if(status & SocketOperationWrite)
847
+ {
848
+ FD_SET(fd, &_writeFdSet);
849
+ }
850
+ else
851
+ {
852
+ FD_CLR(fd, &_writeFdSet);
853
+ }
854
+ if(status & SocketOperationConnect)
855
+ {
856
+ FD_SET(fd, &_writeFdSet);
857
+ FD_SET(fd, &_errorFdSet);
858
+ }
859
+ else
860
+ {
861
+ FD_CLR(fd, &_writeFdSet);
862
+ FD_CLR(fd, &_errorFdSet);
863
+ }
864
+ _handlers[fd] = handler;
865
+ #else
866
+ short events = 0;
867
+ if(status & SocketOperationRead)
868
+ {
869
+ events |= POLLIN;
870
+ }
871
+ if(status & SocketOperationWrite)
872
+ {
873
+ events |= POLLOUT;
874
+ }
875
+ map<SOCKET, EventHandler*>::const_iterator q = _handlers.find(fd);
876
+ if(q == _handlers.end())
877
+ {
878
+ struct pollfd pollFd;
879
+ pollFd.fd = fd;
880
+ pollFd.events = events;
881
+ pollFd.revents = 0;
882
+ _pollFdSet.push_back(pollFd);
883
+ _handlers.insert(make_pair(fd, handler));
884
+ }
885
+ else
886
+ {
887
+ for(vector<struct pollfd>::iterator r = _pollFdSet.begin(); r != _pollFdSet.end(); ++r)
888
+ {
889
+ if(r->fd == fd)
890
+ {
891
+ r->events = events;
892
+ break;
893
+ }
894
+ }
895
+ }
896
+ #endif
897
+ }
898
+ else
899
+ {
900
+ #if defined(ICE_USE_SELECT)
901
+ FD_CLR(fd, &_readFdSet);
902
+ FD_CLR(fd, &_writeFdSet);
903
+ FD_CLR(fd, &_errorFdSet);
904
+ #else
905
+ for(vector<struct pollfd>::iterator r = _pollFdSet.begin(); r != _pollFdSet.end(); ++r)
906
+ {
907
+ if(r->fd == fd)
908
+ {
909
+ _pollFdSet.erase(r);
910
+ break;
911
+ }
912
+ }
913
+ #endif
914
+ _handlers.erase(fd);
915
+ }
916
+ }
917
+ _changes.clear();
918
+ #endif
919
+ }
920
+
921
+ void
922
+ Selector::updateSelectorForEventHandler(EventHandler* handler,
923
+ ICE_MAYBE_UNUSED SocketOperation remove,
924
+ ICE_MAYBE_UNUSED SocketOperation add)
925
+ {
926
+ #if defined(ICE_USE_EPOLL)
927
+ SocketOperation previous = handler->_registered;
928
+ previous = static_cast<SocketOperation>(previous & ~add);
929
+ previous = static_cast<SocketOperation>(previous | remove);
930
+ SOCKET fd = handler->getNativeInfo()->fd();
931
+ assert(fd != INVALID_SOCKET);
932
+ epoll_event event;
933
+ memset(&event, 0, sizeof(epoll_event));
934
+ event.data.ptr = handler;
935
+ SocketOperation status = handler->_registered;
936
+ if(handler->_disabled)
937
+ {
938
+ status = static_cast<SocketOperation>(status & ~handler->_disabled);
939
+ previous = static_cast<SocketOperation>(previous & ~handler->_disabled);
940
+ }
941
+ if(status & SocketOperationRead)
942
+ {
943
+ event.events |= EPOLLIN;
944
+ }
945
+ if(status & SocketOperationWrite)
946
+ {
947
+ event.events |= EPOLLOUT;
948
+ }
949
+ int op;
950
+ if(!previous && status)
951
+ {
952
+ op = EPOLL_CTL_ADD;
953
+ }
954
+ else if(previous && !status)
955
+ {
956
+ op = EPOLL_CTL_DEL;
957
+ }
958
+ else if(previous == status)
959
+ {
960
+ return;
961
+ }
962
+ else
963
+ {
964
+ op = EPOLL_CTL_MOD;
965
+ }
966
+ if(epoll_ctl(_queueFd, op, fd, &event) != 0)
967
+ {
968
+ Ice::Error out(_instance->initializationData().logger);
969
+ out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
970
+ }
971
+ #elif defined(ICE_USE_KQUEUE)
972
+ SOCKET fd = handler->getNativeInfo()->fd();
973
+ assert(fd != INVALID_SOCKET);
974
+ if(remove & SocketOperationRead)
975
+ {
976
+ struct kevent ev;
977
+ EV_SET(&ev, fd, EVFILT_READ, EV_DELETE, 0, 0, handler);
978
+ _changes.push_back(ev);
979
+ }
980
+ if(remove & SocketOperationWrite)
981
+ {
982
+ struct kevent ev;
983
+ EV_SET(&ev, fd, EVFILT_WRITE, EV_DELETE, 0, 0, handler);
984
+ _changes.push_back(ev);
985
+ }
986
+ if(add & SocketOperationRead)
987
+ {
988
+ struct kevent ev;
989
+ EV_SET(&ev, fd, EVFILT_READ, EV_ADD | (handler->_disabled & SocketOperationRead ? EV_DISABLE : 0), 0, 0,
990
+ handler);
991
+ _changes.push_back(ev);
992
+ }
993
+ if(add & SocketOperationWrite)
994
+ {
995
+ struct kevent ev;
996
+ EV_SET(&ev, fd, EVFILT_WRITE, EV_ADD | (handler->_disabled & SocketOperationWrite ? EV_DISABLE : 0), 0, 0,
997
+ handler);
998
+ _changes.push_back(ev);
999
+ }
1000
+ if(_selecting)
1001
+ {
1002
+ updateSelector();
1003
+ }
1004
+ #else
1005
+ _changes.push_back(make_pair(handler, static_cast<SocketOperation>(handler->_registered & ~handler->_disabled)));
1006
+ wakeup();
1007
+ #endif
1008
+ checkReady(handler);
1009
+ }
1010
+
1011
+ #elif defined(ICE_USE_CFSTREAM)
1012
+
1013
+ namespace
1014
+ {
1015
+
1016
+ void selectorInterrupt(void* info)
1017
+ {
1018
+ reinterpret_cast<Selector*>(info)->processInterrupt();
1019
+ }
1020
+
1021
+ void eventHandlerSocketCallback(CFSocketRef, CFSocketCallBackType callbackType, CFDataRef, const void* d, void* info)
1022
+ {
1023
+ if(callbackType == kCFSocketReadCallBack)
1024
+ {
1025
+ reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(SocketOperationRead);
1026
+ }
1027
+ else if(callbackType == kCFSocketWriteCallBack)
1028
+ {
1029
+ reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(SocketOperationWrite);
1030
+ }
1031
+ else if(callbackType == kCFSocketConnectCallBack)
1032
+ {
1033
+ reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(SocketOperationConnect,
1034
+ d ? *reinterpret_cast<const SInt32*>(d) : 0);
1035
+ }
1036
+ }
1037
+
1038
+ class SelectorHelperThread : public IceUtil::Thread
1039
+ {
1040
+ public:
1041
+
1042
+ SelectorHelperThread(Selector& selector) : _selector(selector)
1043
+ {
1044
+ }
1045
+
1046
+ virtual void run()
1047
+ {
1048
+ _selector.run();
1049
+
1050
+ #if TARGET_IPHONE_SIMULATOR != 0
1051
+ //
1052
+ // Workaround for CFSocket bug where the CFSocketManager thread crashes if an
1053
+ // invalidated socket is being processed for reads/writes. We add this sleep
1054
+ // mostly to prevent spurious crashes with testing. This bug is very unlikely
1055
+ // to be hit otherwise.
1056
+ //
1057
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100));
1058
+ #endif
1059
+ }
1060
+
1061
+ private:
1062
+
1063
+ Selector& _selector;
1064
+ };
1065
+
1066
+ CFOptionFlags
1067
+ toCFCallbacks(SocketOperation op)
1068
+ {
1069
+ CFOptionFlags cbs = 0;
1070
+ if(op & SocketOperationRead)
1071
+ {
1072
+ cbs |= kCFSocketReadCallBack;
1073
+ }
1074
+ if(op & SocketOperationWrite)
1075
+ {
1076
+ cbs |= kCFSocketWriteCallBack;
1077
+ }
1078
+ if(op & SocketOperationConnect)
1079
+ {
1080
+ cbs |= kCFSocketConnectCallBack;
1081
+ }
1082
+ return cbs;
1083
+ }
1084
+
1085
+ }
1086
+
1087
+ EventHandlerWrapper::EventHandlerWrapper(EventHandler* handler, Selector& selector) :
1088
+ _handler(ICE_GET_SHARED_FROM_THIS(handler)),
1089
+ _streamNativeInfo(StreamNativeInfoPtr::dynamicCast(handler->getNativeInfo())),
1090
+ _selector(selector),
1091
+ _ready(SocketOperationNone),
1092
+ _finish(false)
1093
+ {
1094
+ if(_streamNativeInfo)
1095
+ {
1096
+ _streamNativeInfo->initStreams(this);
1097
+ }
1098
+ else if(handler->getNativeInfo())
1099
+ {
1100
+ SOCKET fd = handler->getNativeInfo()->fd();
1101
+ CFSocketContext ctx = { 0, this, 0, 0, 0 };
1102
+ _socket.reset(CFSocketCreateWithNative(kCFAllocatorDefault,
1103
+ fd,
1104
+ kCFSocketReadCallBack |
1105
+ kCFSocketWriteCallBack |
1106
+ kCFSocketConnectCallBack,
1107
+ eventHandlerSocketCallback,
1108
+ &ctx));
1109
+
1110
+ // Disable automatic re-enabling of callbacks and closing of the native socket.
1111
+ CFSocketSetSocketFlags(_socket.get(), 0);
1112
+ CFSocketDisableCallBacks(_socket.get(), kCFSocketReadCallBack | kCFSocketWriteCallBack | kCFSocketConnectCallBack);
1113
+ _source.reset(CFSocketCreateRunLoopSource(kCFAllocatorDefault, _socket.get(), 0));
1114
+ }
1115
+ }
1116
+
1117
+ EventHandlerWrapper::~EventHandlerWrapper()
1118
+ {
1119
+ }
1120
+
1121
+ void
1122
+ EventHandlerWrapper::updateRunLoop()
1123
+ {
1124
+ SocketOperation op = _handler->_registered;
1125
+ assert(!op || !_finish);
1126
+
1127
+ if(_socket)
1128
+ {
1129
+ CFSocketDisableCallBacks(_socket.get(), kCFSocketReadCallBack | kCFSocketWriteCallBack | kCFSocketConnectCallBack);
1130
+ if(op)
1131
+ {
1132
+ CFSocketEnableCallBacks(_socket.get(), toCFCallbacks(op));
1133
+ }
1134
+
1135
+ if(op && !CFRunLoopContainsSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode))
1136
+ {
1137
+ CFRunLoopAddSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode);
1138
+ }
1139
+ else if(!op && CFRunLoopContainsSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode))
1140
+ {
1141
+ CFRunLoopRemoveSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode);
1142
+ }
1143
+
1144
+ if(_finish)
1145
+ {
1146
+ CFSocketInvalidate(_socket.get());
1147
+ }
1148
+ }
1149
+ else
1150
+ {
1151
+ SocketOperation readyOp = _streamNativeInfo->registerWithRunLoop(op);
1152
+ if(!(op & (SocketOperationWrite | SocketOperationConnect)) || _ready & SocketOperationWrite)
1153
+ {
1154
+ _streamNativeInfo->unregisterFromRunLoop(SocketOperationWrite, false);
1155
+ }
1156
+
1157
+ if(!(op & (SocketOperationRead | SocketOperationConnect)) || _ready & SocketOperationRead)
1158
+ {
1159
+ _streamNativeInfo->unregisterFromRunLoop(SocketOperationRead, false);
1160
+ }
1161
+
1162
+ if(readyOp)
1163
+ {
1164
+ ready(readyOp, 0);
1165
+ }
1166
+
1167
+ if(_finish)
1168
+ {
1169
+ _streamNativeInfo->closeStreams();
1170
+ }
1171
+ }
1172
+ }
1173
+
1174
+ void
1175
+ EventHandlerWrapper::readyCallback(SocketOperation op, int error)
1176
+ {
1177
+ _selector.ready(this, op, error);
1178
+ }
1179
+
1180
+ void
1181
+ EventHandlerWrapper::ready(SocketOperation op, int error)
1182
+ {
1183
+ if(!_socket)
1184
+ {
1185
+ //
1186
+ // Unregister the stream from the runloop as soon as we got the callback. This is
1187
+ // required to allow thread pool thread to perform read/write operations on the
1188
+ // stream (which can't be used from another thread than the run loop thread if
1189
+ // it's registered with a run loop).
1190
+ //
1191
+ op = _streamNativeInfo->unregisterFromRunLoop(op, error != 0);
1192
+ }
1193
+
1194
+ op = static_cast<SocketOperation>(_handler->_registered & op);
1195
+ if(!op || _ready & op)
1196
+ {
1197
+ return;
1198
+ }
1199
+
1200
+ if(_socket)
1201
+ {
1202
+ if(op & SocketOperationConnect)
1203
+ {
1204
+ _streamNativeInfo->setConnectError(error);
1205
+ }
1206
+ }
1207
+
1208
+ _ready = static_cast<SocketOperation>(_ready | op);
1209
+ checkReady();
1210
+ }
1211
+
1212
+ bool
1213
+ EventHandlerWrapper::checkReady()
1214
+ {
1215
+ if((_ready | _handler->_ready) & ~_handler->_disabled & _handler->_registered)
1216
+ {
1217
+ _selector.addReadyHandler(this);
1218
+ return false;
1219
+ }
1220
+ else
1221
+ {
1222
+ return _handler->getNativeInfo() && !_finish;
1223
+ }
1224
+ }
1225
+
1226
+ SocketOperation
1227
+ EventHandlerWrapper::readyOp()
1228
+ {
1229
+ assert(!(~_handler->_registered & _ready));
1230
+ SocketOperation op = static_cast<SocketOperation>(~_handler->_disabled & (_ready | _handler->_ready));
1231
+ _ready = static_cast<SocketOperation>(~op & _ready);
1232
+ return op;
1233
+ }
1234
+
1235
+ bool
1236
+ EventHandlerWrapper::update(SocketOperation remove, SocketOperation add)
1237
+ {
1238
+ SocketOperation previous = _handler->_registered;
1239
+ _handler->_registered = static_cast<SocketOperation>(_handler->_registered & ~remove);
1240
+ _handler->_registered = static_cast<SocketOperation>(_handler->_registered | add);
1241
+ if(previous == _handler->_registered)
1242
+ {
1243
+ return false;
1244
+ }
1245
+
1246
+ // Clear ready flags which might not be valid anymore.
1247
+ _ready = static_cast<SocketOperation>(_ready & _handler->_registered);
1248
+ return _handler->getNativeInfo();
1249
+ }
1250
+
1251
+ bool
1252
+ EventHandlerWrapper::finish()
1253
+ {
1254
+ _finish = true;
1255
+ _ready = SocketOperationNone;
1256
+ _handler->_registered = SocketOperationNone;
1257
+ return _handler->getNativeInfo();
1258
+ }
1259
+
1260
+ Selector::Selector(const InstancePtr& instance) : _instance(instance), _destroyed(false)
1261
+ {
1262
+ CFRunLoopSourceContext ctx;
1263
+ memset(&ctx, 0, sizeof(CFRunLoopSourceContext));
1264
+ ctx.info = this;
1265
+ ctx.perform = selectorInterrupt;
1266
+ _source.reset(CFRunLoopSourceCreate(0, 0, &ctx));
1267
+ _runLoop = 0;
1268
+
1269
+ _thread = new SelectorHelperThread(*this);
1270
+ _thread->start();
1271
+
1272
+ Lock sync(*this);
1273
+ while(!_runLoop)
1274
+ {
1275
+ wait();
1276
+ }
1277
+ }
1278
+
1279
+ Selector::~Selector()
1280
+ {
1281
+ }
1282
+
1283
+ void
1284
+ Selector::destroy()
1285
+ {
1286
+ {
1287
+ Lock sync(*this);
1288
+
1289
+ //
1290
+ // Make sure any pending changes are processed to ensure remaining
1291
+ // streams/sockets are closed.
1292
+ //
1293
+ _destroyed = true;
1294
+ CFRunLoopSourceSignal(_source.get());
1295
+ CFRunLoopWakeUp(_runLoop);
1296
+
1297
+ while(!_changes.empty())
1298
+ {
1299
+ CFRunLoopSourceSignal(_source.get());
1300
+ CFRunLoopWakeUp(_runLoop);
1301
+
1302
+ wait();
1303
+ }
1304
+ }
1305
+
1306
+ _thread->getThreadControl().join();
1307
+ _thread = 0;
1308
+
1309
+ Lock sync(*this);
1310
+ _source.reset(0);
1311
+
1312
+ //assert(_wrappers.empty());
1313
+ _readyHandlers.clear();
1314
+ _selectedHandlers.clear();
1315
+ }
1316
+
1317
+ void
1318
+ Selector::initialize(EventHandler* handler)
1319
+ {
1320
+ Lock sync(*this);
1321
+ _wrappers[handler] = new EventHandlerWrapper(handler, *this);
1322
+ }
1323
+
1324
+ void
1325
+ Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation add)
1326
+ {
1327
+ Lock sync(*this);
1328
+ const EventHandlerWrapperPtr& wrapper = _wrappers[handler];
1329
+ if(wrapper->update(remove, add))
1330
+ {
1331
+ _changes.insert(wrapper);
1332
+ notify();
1333
+ }
1334
+ }
1335
+
1336
+ void
1337
+ Selector::enable(EventHandler* handler, SocketOperation op)
1338
+ {
1339
+ Lock sync(*this);
1340
+ if(!(handler->_disabled & op))
1341
+ {
1342
+ return;
1343
+ }
1344
+ handler->_disabled = static_cast<SocketOperation>(handler->_disabled & ~op);
1345
+
1346
+ if(handler->_registered & op)
1347
+ {
1348
+ _wrappers[handler]->checkReady();
1349
+ }
1350
+ }
1351
+
1352
+ void
1353
+ Selector::disable(EventHandler* handler, SocketOperation op)
1354
+ {
1355
+ Lock sync(*this);
1356
+ if(handler->_disabled & op)
1357
+ {
1358
+ return;
1359
+ }
1360
+ handler->_disabled = static_cast<SocketOperation>(handler->_disabled | op);
1361
+ }
1362
+
1363
+ bool
1364
+ Selector::finish(EventHandler* handler, bool closeNow)
1365
+ {
1366
+ Lock sync(*this);
1367
+ std::map<EventHandler*, EventHandlerWrapperPtr>::iterator p = _wrappers.find(handler);
1368
+ assert(p != _wrappers.end());
1369
+ EventHandlerWrapperPtr wrapper = p->second;
1370
+ if(wrapper->finish())
1371
+ {
1372
+ _changes.insert(wrapper);
1373
+ notify();
1374
+ }
1375
+ _wrappers.erase(p);
1376
+ return closeNow;
1377
+ }
1378
+
1379
+ void
1380
+ Selector::ready(EventHandler* handler, SocketOperation status, bool value)
1381
+ {
1382
+ if(((handler->_ready & status) != 0) == value)
1383
+ {
1384
+ return; // Nothing to do if ready state already correctly set.
1385
+ }
1386
+
1387
+ if(value)
1388
+ {
1389
+ handler->_ready = static_cast<SocketOperation>(handler->_ready | status);
1390
+ }
1391
+ else
1392
+ {
1393
+ handler->_ready = static_cast<SocketOperation>(handler->_ready & ~status);
1394
+ }
1395
+
1396
+ Lock sync(*this);
1397
+ std::map<EventHandler*, EventHandlerWrapperPtr>::iterator p = _wrappers.find(handler);
1398
+ assert(p != _wrappers.end());
1399
+ p->second->checkReady();
1400
+ }
1401
+
1402
+ void
1403
+ Selector::startSelect()
1404
+ {
1405
+ Lock sync(*this);
1406
+
1407
+ //
1408
+ // Re-enable callbacks for previously selected handlers.
1409
+ //
1410
+ vector<pair<EventHandlerWrapperPtr, SocketOperation> >::const_iterator p;
1411
+ for(p = _selectedHandlers.begin(); p != _selectedHandlers.end(); ++p)
1412
+ {
1413
+ if(p->first->checkReady())
1414
+ {
1415
+ _changes.insert(p->first);
1416
+ }
1417
+ }
1418
+ _selectedHandlers.clear();
1419
+ }
1420
+
1421
+ void
1422
+ Selector::finishSelect(std::vector<std::pair<EventHandler*, SocketOperation> >& handlers)
1423
+ {
1424
+ Lock sync(*this);
1425
+ handlers.clear();
1426
+ for(set<EventHandlerWrapperPtr>::const_iterator p = _readyHandlers.begin(); p != _readyHandlers.end(); ++p)
1427
+ {
1428
+ SocketOperation op = (*p)->readyOp();
1429
+ if(op)
1430
+ {
1431
+ _selectedHandlers.push_back(pair<EventHandlerWrapperPtr, SocketOperation>(*p, op));
1432
+ handlers.push_back(pair<EventHandler*, SocketOperation>((*p)->_handler.get(), op));
1433
+ }
1434
+ }
1435
+ _readyHandlers.clear();
1436
+ }
1437
+
1438
+ void
1439
+ Selector::select(int timeout)
1440
+ {
1441
+ //
1442
+ // Wait for handlers to be ready.
1443
+ //
1444
+ Lock sync(*this);
1445
+ while(!_destroyed)
1446
+ {
1447
+ while(!_changes.empty())
1448
+ {
1449
+ CFRunLoopSourceSignal(_source.get());
1450
+ CFRunLoopWakeUp(_runLoop);
1451
+
1452
+ wait();
1453
+ }
1454
+
1455
+ if(_readyHandlers.empty())
1456
+ {
1457
+ if(timeout > 0)
1458
+ {
1459
+ bool timedOut = !timedWait(IceUtil::Time::seconds(timeout));
1460
+ if(_readyHandlers.empty())
1461
+ {
1462
+ if(timedOut)
1463
+ {
1464
+ throw SelectorTimeoutException(); // Actual timeout
1465
+ }
1466
+ // Signaled but no ready handlers - spurious wakeup, continue waiting
1467
+ continue;
1468
+ }
1469
+ break; // Ready handlers
1470
+ }
1471
+ else
1472
+ {
1473
+ wait();
1474
+ }
1475
+ }
1476
+
1477
+ if(_changes.empty())
1478
+ {
1479
+ break;
1480
+ }
1481
+ }
1482
+ }
1483
+
1484
+ void
1485
+ Selector::processInterrupt()
1486
+ {
1487
+ Lock sync(*this);
1488
+ if(!_changes.empty())
1489
+ {
1490
+ for(set<EventHandlerWrapperPtr>::const_iterator p = _changes.begin(); p != _changes.end(); ++p)
1491
+ {
1492
+ (*p)->updateRunLoop();
1493
+ }
1494
+ _changes.clear();
1495
+ notify();
1496
+ }
1497
+ if(_destroyed)
1498
+ {
1499
+ CFRunLoopStop(_runLoop);
1500
+ }
1501
+ }
1502
+
1503
+ void
1504
+ Selector::run()
1505
+ {
1506
+ {
1507
+ Lock sync(*this);
1508
+ _runLoop = CFRunLoopGetCurrent();
1509
+ notify();
1510
+ }
1511
+
1512
+ CFRunLoopAddSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode);
1513
+ CFRunLoopRun();
1514
+ CFRunLoopRemoveSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode);
1515
+ }
1516
+
1517
+ void
1518
+ Selector::ready(EventHandlerWrapper* wrapper, SocketOperation op, int error)
1519
+ {
1520
+ Lock sync(*this);
1521
+ wrapper->ready(op, error);
1522
+ }
1523
+
1524
+ void
1525
+ Selector::addReadyHandler(EventHandlerWrapper* wrapper)
1526
+ {
1527
+ // Called from ready()
1528
+ _readyHandlers.insert(wrapper);
1529
+ if(_readyHandlers.size() == 1)
1530
+ {
1531
+ notify();
1532
+ }
1533
+ }
1534
+
1535
+ #endif