zeroc-ice 3.7.10 → 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 (936) 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/ExceptionHelpers.h +74 -0
  12. data/dist/ice/cpp/include/Ice/Initialize.h +957 -0
  13. data/dist/ice/cpp/include/Ice/MetricsObserverI.h +669 -0
  14. data/dist/ice/cpp/include/Ice/OutgoingAsync.h +868 -0
  15. data/dist/ice/cpp/include/Ice/Proxy.h +5171 -0
  16. data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +90 -0
  17. data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +1889 -0
  18. data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +1197 -0
  19. data/dist/ice/cpp/include/IceUtil/Cond.h +317 -0
  20. data/dist/ice/cpp/include/IceUtil/Config.h +392 -0
  21. data/dist/ice/cpp/include/IceUtil/CtrlCHandler.h +96 -0
  22. data/dist/ice/cpp/include/IceUtil/InputUtil.h +42 -0
  23. data/dist/ice/cpp/include/IceUtil/ResourceConfig.h +37 -0
  24. data/dist/ice/cpp/include/IceUtil/Timer.h +153 -0
  25. data/dist/ice/cpp/include/generated/Glacier2/Metrics.h +475 -0
  26. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifier.h +1430 -0
  27. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifierF.h +147 -0
  28. data/dist/ice/cpp/include/generated/Glacier2/Router.h +3260 -0
  29. data/dist/ice/cpp/include/generated/Glacier2/RouterF.h +125 -0
  30. data/dist/ice/cpp/include/generated/Glacier2/SSLInfo.h +223 -0
  31. data/dist/ice/cpp/include/generated/Glacier2/Session.h +5894 -0
  32. data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +170 -0
  33. data/dist/ice/cpp/include/generated/Ice/Communicator.h +1162 -0
  34. data/dist/ice/cpp/include/generated/Ice/CommunicatorF.h +101 -0
  35. data/dist/ice/cpp/include/generated/Ice/Connection.h +1703 -0
  36. data/dist/ice/cpp/include/generated/Ice/ConnectionF.h +119 -0
  37. data/dist/ice/cpp/include/generated/Ice/Current.h +322 -0
  38. data/dist/ice/cpp/include/generated/Ice/Endpoint.h +979 -0
  39. data/dist/ice/cpp/include/generated/Ice/EndpointF.h +166 -0
  40. data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +118 -0
  41. data/dist/ice/cpp/include/generated/Ice/FacetMap.h +80 -0
  42. data/dist/ice/cpp/include/generated/Ice/Identity.h +264 -0
  43. data/dist/ice/cpp/include/generated/Ice/ImplicitContext.h +284 -0
  44. data/dist/ice/cpp/include/generated/Ice/ImplicitContextF.h +101 -0
  45. data/dist/ice/cpp/include/generated/Ice/Instrumentation.h +1203 -0
  46. data/dist/ice/cpp/include/generated/Ice/InstrumentationF.h +128 -0
  47. data/dist/ice/cpp/include/generated/Ice/LocalException.h +7437 -0
  48. data/dist/ice/cpp/include/generated/Ice/Locator.h +3898 -0
  49. data/dist/ice/cpp/include/generated/Ice/LocatorF.h +147 -0
  50. data/dist/ice/cpp/include/generated/Ice/Logger.h +237 -0
  51. data/dist/ice/cpp/include/generated/Ice/LoggerF.h +101 -0
  52. data/dist/ice/cpp/include/generated/Ice/Metrics.h +4769 -0
  53. data/dist/ice/cpp/include/generated/Ice/ObjectAdapter.h +1181 -0
  54. data/dist/ice/cpp/include/generated/Ice/ObjectAdapterF.h +101 -0
  55. data/dist/ice/cpp/include/generated/Ice/ObjectFactory.h +203 -0
  56. data/dist/ice/cpp/include/generated/Ice/Plugin.h +318 -0
  57. data/dist/ice/cpp/include/generated/Ice/PluginF.h +110 -0
  58. data/dist/ice/cpp/include/generated/Ice/Process.h +977 -0
  59. data/dist/ice/cpp/include/generated/Ice/ProcessF.h +125 -0
  60. data/dist/ice/cpp/include/generated/Ice/Properties.h +452 -0
  61. data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +1366 -0
  62. data/dist/ice/cpp/include/generated/Ice/PropertiesF.h +134 -0
  63. data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +2707 -0
  64. data/dist/ice/cpp/include/generated/Ice/Router.h +1850 -0
  65. data/dist/ice/cpp/include/generated/Ice/RouterF.h +125 -0
  66. data/dist/ice/cpp/include/generated/Ice/ServantLocator.h +305 -0
  67. data/dist/ice/cpp/include/generated/Ice/ServantLocatorF.h +101 -0
  68. data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +84 -0
  69. data/dist/ice/cpp/include/generated/Ice/ValueFactory.h +330 -0
  70. data/dist/ice/cpp/include/generated/Ice/Version.h +357 -0
  71. data/dist/ice/cpp/include/generated/IceBox/IceBox.h +3269 -0
  72. data/dist/ice/cpp/include/generated/IceGrid/Admin.h +33773 -0
  73. data/dist/ice/cpp/include/generated/IceGrid/Descriptor.h +5254 -0
  74. data/dist/ice/cpp/include/generated/IceGrid/Exception.h +2834 -0
  75. data/dist/ice/cpp/include/generated/IceGrid/FileParser.h +824 -0
  76. data/dist/ice/cpp/include/generated/IceGrid/PluginFacade.h +635 -0
  77. data/dist/ice/cpp/include/generated/IceGrid/Registry.h +5089 -0
  78. data/dist/ice/cpp/include/generated/IceGrid/Session.h +2240 -0
  79. data/dist/ice/cpp/include/generated/IceGrid/UserAccountMapper.h +800 -0
  80. data/dist/ice/cpp/include/generated/IcePatch2/FileInfo.h +325 -0
  81. data/dist/ice/cpp/include/generated/IcePatch2/FileServer.h +2891 -0
  82. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +228 -0
  83. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +101 -0
  84. data/dist/ice/cpp/include/generated/IceSSL/EndpointInfo.h +186 -0
  85. data/dist/ice/cpp/include/generated/IceStorm/IceStorm.h +6627 -0
  86. data/dist/ice/cpp/include/generated/IceStorm/Metrics.h +665 -0
  87. data/dist/ice/cpp/src/Ice/Application.cpp +661 -0
  88. data/dist/ice/cpp/src/Ice/CountDownLatch.cpp +171 -0
  89. data/dist/ice/cpp/src/Ice/DLLMain.cpp +50 -0
  90. data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +189 -0
  91. data/dist/ice/cpp/src/Ice/EndpointI.cpp +98 -0
  92. data/dist/ice/cpp/src/Ice/InputStream.cpp +2741 -0
  93. data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +694 -0
  94. data/dist/ice/cpp/src/Ice/Network.cpp +2249 -0
  95. data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +1530 -0
  96. data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +1322 -0
  97. data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +503 -0
  98. data/dist/ice/cpp/src/Ice/PropertyNames.cpp +1428 -0
  99. data/dist/ice/cpp/src/Ice/PropertyNames.h +78 -0
  100. data/dist/ice/cpp/src/Ice/Proxy.cpp +1604 -0
  101. data/dist/ice/cpp/src/Ice/Selector.cpp +1535 -0
  102. data/dist/ice/cpp/src/Ice/Service.cpp +1883 -0
  103. data/dist/ice/cpp/src/Ice/ThreadPool.cpp +1292 -0
  104. data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +49 -0
  105. data/dist/ice/cpp/src/Ice/generated/Communicator.cpp +79 -0
  106. data/dist/ice/cpp/src/Ice/generated/CommunicatorF.cpp +61 -0
  107. data/dist/ice/cpp/src/Ice/generated/Connection.cpp +155 -0
  108. data/dist/ice/cpp/src/Ice/generated/ConnectionF.cpp +61 -0
  109. data/dist/ice/cpp/src/Ice/generated/Current.cpp +62 -0
  110. data/dist/ice/cpp/src/Ice/generated/Endpoint.cpp +147 -0
  111. data/dist/ice/cpp/src/Ice/generated/EndpointF.cpp +61 -0
  112. data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +51 -0
  113. data/dist/ice/cpp/src/Ice/generated/FacetMap.cpp +49 -0
  114. data/dist/ice/cpp/src/Ice/generated/Identity.cpp +57 -0
  115. data/dist/ice/cpp/src/Ice/generated/ImplicitContext.cpp +75 -0
  116. data/dist/ice/cpp/src/Ice/generated/ImplicitContextF.cpp +61 -0
  117. data/dist/ice/cpp/src/Ice/generated/Instrumentation.cpp +188 -0
  118. data/dist/ice/cpp/src/Ice/generated/InstrumentationF.cpp +66 -0
  119. data/dist/ice/cpp/src/Ice/generated/LocalException.cpp +3262 -0
  120. data/dist/ice/cpp/src/Ice/generated/Locator.cpp +2042 -0
  121. data/dist/ice/cpp/src/Ice/generated/LocatorF.cpp +63 -0
  122. data/dist/ice/cpp/src/Ice/generated/Logger.cpp +73 -0
  123. data/dist/ice/cpp/src/Ice/generated/LoggerF.cpp +61 -0
  124. data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +2352 -0
  125. data/dist/ice/cpp/src/Ice/generated/ObjectAdapter.cpp +79 -0
  126. data/dist/ice/cpp/src/Ice/generated/ObjectAdapterF.cpp +61 -0
  127. data/dist/ice/cpp/src/Ice/generated/ObjectFactory.cpp +75 -0
  128. data/dist/ice/cpp/src/Ice/generated/Plugin.cpp +87 -0
  129. data/dist/ice/cpp/src/Ice/generated/PluginF.cpp +61 -0
  130. data/dist/ice/cpp/src/Ice/generated/Process.cpp +471 -0
  131. data/dist/ice/cpp/src/Ice/generated/ProcessF.cpp +63 -0
  132. data/dist/ice/cpp/src/Ice/generated/Properties.cpp +78 -0
  133. data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +603 -0
  134. data/dist/ice/cpp/src/Ice/generated/PropertiesF.cpp +63 -0
  135. data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +1171 -0
  136. data/dist/ice/cpp/src/Ice/generated/Router.cpp +977 -0
  137. data/dist/ice/cpp/src/Ice/generated/RouterF.cpp +63 -0
  138. data/dist/ice/cpp/src/Ice/generated/ServantLocator.cpp +75 -0
  139. data/dist/ice/cpp/src/Ice/generated/ServantLocatorF.cpp +61 -0
  140. data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +49 -0
  141. data/dist/ice/cpp/src/Ice/generated/ValueFactory.cpp +83 -0
  142. data/dist/ice/cpp/src/Ice/generated/Version.cpp +57 -0
  143. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.cpp +154 -0
  144. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.h +49 -0
  145. data/dist/ice/cpp/src/Ice/ios/StreamConnector.cpp +146 -0
  146. data/dist/ice/cpp/src/Ice/ios/StreamConnector.h +52 -0
  147. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.cpp +477 -0
  148. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.h +156 -0
  149. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.cpp +570 -0
  150. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.h +93 -0
  151. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery/IceDiscovery.h +1889 -0
  152. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery.cpp +915 -0
  153. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery/IceLocatorDiscovery.h +1197 -0
  154. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery.cpp +730 -0
  155. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +1092 -0
  156. data/dist/ice/cpp/src/IceSSL/PluginI.cpp +246 -0
  157. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +719 -0
  158. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +868 -0
  159. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfo.cpp +75 -0
  160. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfoF.cpp +61 -0
  161. data/dist/ice/cpp/src/IceSSL/generated/EndpointInfo.cpp +75 -0
  162. data/dist/ice/cpp/src/IceUtil/StringConverter.cpp +690 -0
  163. data/dist/ice/cpp/src/Slice/JavaUtil.cpp +5183 -0
  164. data/dist/ice/cpp/src/slice2rb/Main.cpp +35 -0
  165. data/dist/ice/mcpp/directive.c +1407 -0
  166. data/dist/ice/mcpp/internal.H +530 -0
  167. data/dist/ice/mcpp/mcpp_main.c +792 -0
  168. data/dist/ice/mcpp/support.c +1985 -0
  169. data/dist/ice/mcpp/system.c +2741 -0
  170. data/dist/ice/slice/Ice/Connection.ice +516 -0
  171. data/dist/ice/slice/Ice/Locator.ice +239 -0
  172. data/dist/ice/slice/Ice/Metrics.ice +436 -0
  173. data/dist/ice/slice/Ice/ObjectAdapter.ice +710 -0
  174. data/dist/ice/slice/Ice/Router.ice +103 -0
  175. data/dist/ice/slice/IceGrid/PluginFacade.ice +329 -0
  176. data/dist/ice/slice/IceStorm/IceStorm.ice +414 -0
  177. data/dist/lib/Glacier2/Metrics.rb +56 -0
  178. data/dist/lib/Glacier2/PermissionsVerifier.rb +93 -0
  179. data/dist/lib/Glacier2/PermissionsVerifierF.rb +30 -0
  180. data/dist/lib/Glacier2/Router.rb +95 -0
  181. data/dist/lib/Glacier2/RouterF.rb +25 -0
  182. data/dist/lib/Glacier2/SSLInfo.rb +72 -0
  183. data/dist/lib/Glacier2/Session.rb +247 -0
  184. data/dist/lib/Ice/BuiltinSequences.rb +60 -0
  185. data/dist/lib/Ice/Communicator.rb +87 -0
  186. data/dist/lib/Ice/CommunicatorF.rb +24 -0
  187. data/dist/lib/Ice/Connection.rb +413 -0
  188. data/dist/lib/Ice/ConnectionF.rb +32 -0
  189. data/dist/lib/Ice/Current.rb +141 -0
  190. data/dist/lib/Ice/Endpoint.rb +187 -0
  191. data/dist/lib/Ice/EndpointF.rb +48 -0
  192. data/dist/lib/Ice/EndpointTypes.rb +69 -0
  193. data/dist/lib/Ice/FacetMap.rb +24 -0
  194. data/dist/lib/Ice/Identity.rb +63 -0
  195. data/dist/lib/Ice/ImplicitContext.rb +26 -0
  196. data/dist/lib/Ice/ImplicitContextF.rb +24 -0
  197. data/dist/lib/Ice/Instrumentation.rb +169 -0
  198. data/dist/lib/Ice/InstrumentationF.rb +31 -0
  199. data/dist/lib/Ice/LocalException.rb +1031 -0
  200. data/dist/lib/Ice/Locator.rb +196 -0
  201. data/dist/lib/Ice/LocatorF.rb +30 -0
  202. data/dist/lib/Ice/Logger.rb +24 -0
  203. data/dist/lib/Ice/LoggerF.rb +24 -0
  204. data/dist/lib/Ice/Metrics.rb +337 -0
  205. data/dist/lib/Ice/ObjectAdapter.rb +29 -0
  206. data/dist/lib/Ice/ObjectAdapterF.rb +24 -0
  207. data/dist/lib/Ice/ObjectFactory.rb +24 -0
  208. data/dist/lib/Ice/Plugin.rb +30 -0
  209. data/dist/lib/Ice/PluginF.rb +28 -0
  210. data/dist/lib/Ice/Process.rb +53 -0
  211. data/dist/lib/Ice/ProcessF.rb +25 -0
  212. data/dist/lib/Ice/Properties.rb +25 -0
  213. data/dist/lib/Ice/PropertiesAdmin.rb +63 -0
  214. data/dist/lib/Ice/PropertiesF.rb +29 -0
  215. data/dist/lib/Ice/RemoteLogger.rb +207 -0
  216. data/dist/lib/Ice/Router.rb +87 -0
  217. data/dist/lib/Ice/RouterF.rb +25 -0
  218. data/dist/lib/Ice/ServantLocator.rb +26 -0
  219. data/dist/lib/Ice/ServantLocatorF.rb +24 -0
  220. data/dist/lib/Ice/SliceChecksumDict.rb +24 -0
  221. data/dist/lib/Ice/ValueFactory.rb +28 -0
  222. data/dist/lib/Ice/Version.rb +90 -0
  223. data/dist/lib/IceBox/IceBox.rb +164 -0
  224. data/dist/lib/IceGrid/Admin.rb +1196 -0
  225. data/dist/lib/IceGrid/Descriptor.rb +1034 -0
  226. data/dist/lib/IceGrid/Exception.rb +376 -0
  227. data/dist/lib/IceGrid/FileParser.rb +65 -0
  228. data/dist/lib/IceGrid/PluginFacade.rb +35 -0
  229. data/dist/lib/IceGrid/Registry.rb +209 -0
  230. data/dist/lib/IceGrid/Session.rb +71 -0
  231. data/dist/lib/IceGrid/UserAccountMapper.rb +61 -0
  232. data/dist/lib/IcePatch2/FileInfo.rb +115 -0
  233. data/dist/lib/IcePatch2/FileServer.rb +123 -0
  234. data/dist/lib/IceStorm/IceStorm.rb +332 -0
  235. data/dist/lib/IceStorm/Metrics.rb +73 -0
  236. data/extconf.rb +91 -0
  237. data/ice.gemspec +21 -16
  238. metadata +715 -711
  239. data/ICE_LICENSE +0 -48
  240. data/LICENSE +0 -340
  241. data/MCPP_LICENSE +0 -29
  242. data/ext/Connection.cpp +0 -532
  243. data/ext/Endpoint.cpp +0 -340
  244. data/ext/ImplicitContext.cpp +0 -144
  245. data/ext/Logger.cpp +0 -147
  246. data/ext/Operation.cpp +0 -661
  247. data/ext/Properties.cpp +0 -365
  248. data/ext/Types.cpp +0 -3325
  249. data/ext/Types.h +0 -595
  250. data/ext/ValueFactoryManager.cpp +0 -441
  251. data/ext/extconf.rb +0 -97
  252. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
  253. data/ext/ice/cpp/include/Ice/Initialize.h +0 -957
  254. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
  255. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +0 -856
  256. data/ext/ice/cpp/include/Ice/Proxy.h +0 -5154
  257. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +0 -88
  258. data/ext/ice/cpp/include/IceSSL/UWP.h +0 -62
  259. data/ext/ice/cpp/include/IceUtil/Cond.h +0 -317
  260. data/ext/ice/cpp/include/IceUtil/Config.h +0 -392
  261. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -92
  262. data/ext/ice/cpp/include/IceUtil/InputUtil.h +0 -42
  263. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
  264. data/ext/ice/cpp/include/IceUtil/Timer.h +0 -144
  265. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +0 -170
  266. data/ext/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
  267. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
  268. data/ext/ice/cpp/include/generated/Ice/Connection.h +0 -1703
  269. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
  270. data/ext/ice/cpp/include/generated/Ice/Current.h +0 -322
  271. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
  272. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
  273. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +0 -118
  274. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
  275. data/ext/ice/cpp/include/generated/Ice/Identity.h +0 -264
  276. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
  277. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
  278. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
  279. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
  280. data/ext/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
  281. data/ext/ice/cpp/include/generated/Ice/Locator.h +0 -3898
  282. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
  283. data/ext/ice/cpp/include/generated/Ice/Logger.h +0 -237
  284. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
  285. data/ext/ice/cpp/include/generated/Ice/Metrics.h +0 -4769
  286. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
  287. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
  288. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
  289. data/ext/ice/cpp/include/generated/Ice/Plugin.h +0 -318
  290. data/ext/ice/cpp/include/generated/Ice/PluginF.h +0 -110
  291. data/ext/ice/cpp/include/generated/Ice/Process.h +0 -977
  292. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
  293. data/ext/ice/cpp/include/generated/Ice/Properties.h +0 -452
  294. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +0 -1366
  295. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
  296. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +0 -2707
  297. data/ext/ice/cpp/include/generated/Ice/Router.h +0 -1850
  298. data/ext/ice/cpp/include/generated/Ice/RouterF.h +0 -125
  299. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
  300. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
  301. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +0 -84
  302. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
  303. data/ext/ice/cpp/include/generated/Ice/Version.h +0 -357
  304. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
  305. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
  306. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
  307. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +0 -49
  308. data/ext/ice/cpp/src/Ice/Communicator.cpp +0 -79
  309. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +0 -61
  310. data/ext/ice/cpp/src/Ice/Connection.cpp +0 -155
  311. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +0 -61
  312. data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
  313. data/ext/ice/cpp/src/Ice/Current.cpp +0 -62
  314. data/ext/ice/cpp/src/Ice/Endpoint.cpp +0 -147
  315. data/ext/ice/cpp/src/Ice/EndpointF.cpp +0 -61
  316. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +0 -189
  317. data/ext/ice/cpp/src/Ice/EndpointI.cpp +0 -98
  318. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +0 -51
  319. data/ext/ice/cpp/src/Ice/FacetMap.cpp +0 -49
  320. data/ext/ice/cpp/src/Ice/Identity.cpp +0 -57
  321. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +0 -75
  322. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +0 -61
  323. data/ext/ice/cpp/src/Ice/InputStream.cpp +0 -2741
  324. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +0 -188
  325. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +0 -66
  326. data/ext/ice/cpp/src/Ice/LocalException.cpp +0 -3262
  327. data/ext/ice/cpp/src/Ice/Locator.cpp +0 -2042
  328. data/ext/ice/cpp/src/Ice/LocatorF.cpp +0 -63
  329. data/ext/ice/cpp/src/Ice/Logger.cpp +0 -73
  330. data/ext/ice/cpp/src/Ice/LoggerF.cpp +0 -61
  331. data/ext/ice/cpp/src/Ice/Metrics.cpp +0 -2352
  332. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +0 -694
  333. data/ext/ice/cpp/src/Ice/Network.cpp +0 -2249
  334. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +0 -79
  335. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +0 -61
  336. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +0 -1530
  337. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +0 -75
  338. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +0 -1322
  339. data/ext/ice/cpp/src/Ice/Plugin.cpp +0 -87
  340. data/ext/ice/cpp/src/Ice/PluginF.cpp +0 -61
  341. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +0 -503
  342. data/ext/ice/cpp/src/Ice/Process.cpp +0 -471
  343. data/ext/ice/cpp/src/Ice/ProcessF.cpp +0 -63
  344. data/ext/ice/cpp/src/Ice/Properties.cpp +0 -78
  345. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +0 -603
  346. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +0 -63
  347. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +0 -1429
  348. data/ext/ice/cpp/src/Ice/PropertyNames.h +0 -78
  349. data/ext/ice/cpp/src/Ice/Proxy.cpp +0 -1601
  350. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +0 -1171
  351. data/ext/ice/cpp/src/Ice/Router.cpp +0 -977
  352. data/ext/ice/cpp/src/Ice/RouterF.cpp +0 -63
  353. data/ext/ice/cpp/src/Ice/Selector.cpp +0 -1525
  354. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +0 -75
  355. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +0 -61
  356. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +0 -49
  357. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +0 -1292
  358. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +0 -83
  359. data/ext/ice/cpp/src/Ice/Version.cpp +0 -57
  360. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +0 -915
  361. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +0 -1889
  362. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +0 -730
  363. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
  364. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +0 -75
  365. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +0 -61
  366. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +0 -75
  367. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
  368. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
  369. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
  370. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
  371. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +0 -266
  372. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +0 -338
  373. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +0 -41
  374. data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +0 -26
  375. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +0 -89
  376. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +0 -383
  377. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +0 -71
  378. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
  379. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +0 -5176
  380. data/ext/ice/mcpp/CMakeLists.txt +0 -80
  381. data/ext/ice/mcpp/LICENSE +0 -29
  382. data/ext/ice/mcpp/Makefile +0 -63
  383. data/ext/ice/mcpp/README.md +0 -32
  384. data/ext/ice/mcpp/directive.c +0 -1404
  385. data/ext/ice/mcpp/internal.H +0 -530
  386. data/ext/ice/mcpp/main.c +0 -792
  387. data/ext/ice/mcpp/mcpp.gyp +0 -88
  388. data/ext/ice/mcpp/support.c +0 -1985
  389. data/ext/ice/mcpp/system.c +0 -2737
  390. data/lib/Glacier2/Metrics.rb +0 -56
  391. data/lib/Glacier2/PermissionsVerifier.rb +0 -93
  392. data/lib/Glacier2/PermissionsVerifierF.rb +0 -30
  393. data/lib/Glacier2/Router.rb +0 -95
  394. data/lib/Glacier2/RouterF.rb +0 -25
  395. data/lib/Glacier2/SSLInfo.rb +0 -72
  396. data/lib/Glacier2/Session.rb +0 -247
  397. data/lib/Ice/BuiltinSequences.rb +0 -60
  398. data/lib/Ice/Communicator.rb +0 -87
  399. data/lib/Ice/CommunicatorF.rb +0 -24
  400. data/lib/Ice/Connection.rb +0 -413
  401. data/lib/Ice/ConnectionF.rb +0 -32
  402. data/lib/Ice/Current.rb +0 -141
  403. data/lib/Ice/Endpoint.rb +0 -187
  404. data/lib/Ice/EndpointF.rb +0 -48
  405. data/lib/Ice/EndpointTypes.rb +0 -69
  406. data/lib/Ice/FacetMap.rb +0 -24
  407. data/lib/Ice/Identity.rb +0 -63
  408. data/lib/Ice/ImplicitContext.rb +0 -26
  409. data/lib/Ice/ImplicitContextF.rb +0 -24
  410. data/lib/Ice/Instrumentation.rb +0 -169
  411. data/lib/Ice/InstrumentationF.rb +0 -31
  412. data/lib/Ice/LocalException.rb +0 -1031
  413. data/lib/Ice/Locator.rb +0 -196
  414. data/lib/Ice/LocatorF.rb +0 -30
  415. data/lib/Ice/Logger.rb +0 -24
  416. data/lib/Ice/LoggerF.rb +0 -24
  417. data/lib/Ice/Metrics.rb +0 -337
  418. data/lib/Ice/ObjectAdapter.rb +0 -29
  419. data/lib/Ice/ObjectAdapterF.rb +0 -24
  420. data/lib/Ice/ObjectFactory.rb +0 -24
  421. data/lib/Ice/Plugin.rb +0 -30
  422. data/lib/Ice/PluginF.rb +0 -28
  423. data/lib/Ice/Process.rb +0 -53
  424. data/lib/Ice/ProcessF.rb +0 -25
  425. data/lib/Ice/Properties.rb +0 -25
  426. data/lib/Ice/PropertiesAdmin.rb +0 -63
  427. data/lib/Ice/PropertiesF.rb +0 -29
  428. data/lib/Ice/RemoteLogger.rb +0 -207
  429. data/lib/Ice/Router.rb +0 -87
  430. data/lib/Ice/RouterF.rb +0 -25
  431. data/lib/Ice/ServantLocator.rb +0 -26
  432. data/lib/Ice/ServantLocatorF.rb +0 -24
  433. data/lib/Ice/SliceChecksumDict.rb +0 -24
  434. data/lib/Ice/ValueFactory.rb +0 -28
  435. data/lib/Ice/Version.rb +0 -90
  436. data/lib/IceBox/IceBox.rb +0 -164
  437. data/lib/IceGrid/Admin.rb +0 -1196
  438. data/lib/IceGrid/Descriptor.rb +0 -1034
  439. data/lib/IceGrid/Exception.rb +0 -376
  440. data/lib/IceGrid/FileParser.rb +0 -65
  441. data/lib/IceGrid/PluginFacade.rb +0 -35
  442. data/lib/IceGrid/Registry.rb +0 -209
  443. data/lib/IceGrid/Session.rb +0 -71
  444. data/lib/IceGrid/UserAccountMapper.rb +0 -61
  445. data/lib/IcePatch2/FileInfo.rb +0 -115
  446. data/lib/IcePatch2/FileServer.rb +0 -123
  447. data/lib/IceStorm/IceStorm.rb +0 -332
  448. data/lib/IceStorm/Metrics.rb +0 -73
  449. data/slice/Ice/Connection.ice +0 -516
  450. data/slice/Ice/Locator.ice +0 -239
  451. data/slice/Ice/Metrics.ice +0 -436
  452. data/slice/Ice/ObjectAdapter.ice +0 -710
  453. data/slice/Ice/Router.ice +0 -103
  454. data/slice/IceBT/ConnectionInfo.ice +0 -59
  455. data/slice/IceBT/EndpointInfo.ice +0 -57
  456. data/slice/IceBT/Types.ice +0 -45
  457. data/slice/IceDiscovery/IceDiscovery.ice +0 -98
  458. data/slice/IceGrid/PluginFacade.ice +0 -329
  459. data/slice/IceIAP/ConnectionInfo.ice +0 -74
  460. data/slice/IceIAP/EndpointInfo.ice +0 -68
  461. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +0 -83
  462. data/slice/IceSSL/ConnectionInfo.ice +0 -54
  463. data/slice/IceSSL/ConnectionInfoF.ice +0 -31
  464. data/slice/IceSSL/EndpointInfo.ice +0 -45
  465. data/slice/IceStorm/IceStorm.ice +0 -414
  466. /data/{ext → dist/IceRuby}/Communicator.cpp +0 -0
  467. /data/{ext → dist/IceRuby}/Communicator.h +0 -0
  468. /data/{ext → dist/IceRuby}/Config.h +0 -0
  469. /data/{ext → dist/IceRuby}/Connection.h +0 -0
  470. /data/{ext → dist/IceRuby}/Endpoint.h +0 -0
  471. /data/{ext → dist/IceRuby}/ImplicitContext.h +0 -0
  472. /data/{ext → dist/IceRuby}/Init.cpp +0 -0
  473. /data/{ext → dist/IceRuby}/Logger.h +0 -0
  474. /data/{ext → dist/IceRuby}/Operation.h +0 -0
  475. /data/{ext → dist/IceRuby}/Properties.h +0 -0
  476. /data/{ext → dist/IceRuby}/Proxy.cpp +0 -0
  477. /data/{ext → dist/IceRuby}/Proxy.h +0 -0
  478. /data/{ext → dist/IceRuby}/Slice.cpp +0 -0
  479. /data/{ext → dist/IceRuby}/Slice.h +0 -0
  480. /data/{ext → dist/IceRuby}/Util.cpp +0 -0
  481. /data/{ext → dist/IceRuby}/Util.h +0 -0
  482. /data/{ext → dist/IceRuby}/ValueFactoryManager.h +0 -0
  483. /data/{ext → dist}/ice/cpp/include/Ice/Application.h +0 -0
  484. /data/{ext → dist}/ice/cpp/include/Ice/AsyncResult.h +0 -0
  485. /data/{ext → dist}/ice/cpp/include/Ice/AsyncResultF.h +0 -0
  486. /data/{ext → dist}/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -0
  487. /data/{ext → dist}/ice/cpp/include/Ice/BatchRequestQueueF.h +0 -0
  488. /data/{ext → dist}/ice/cpp/include/Ice/Buffer.h +0 -0
  489. /data/{ext → dist}/ice/cpp/include/Ice/CommunicatorAsync.h +0 -0
  490. /data/{ext → dist}/ice/cpp/include/Ice/Comparable.h +0 -0
  491. /data/{ext → dist}/ice/cpp/include/Ice/Config.h +0 -0
  492. /data/{ext → dist}/ice/cpp/include/Ice/ConnectionAsync.h +0 -0
  493. /data/{ext → dist}/ice/cpp/include/Ice/ConnectionIF.h +0 -0
  494. /data/{ext → dist}/ice/cpp/include/Ice/ConsoleUtil.h +0 -0
  495. /data/{ext → dist}/ice/cpp/include/Ice/DefaultValueFactory.h +0 -0
  496. /data/{ext → dist}/ice/cpp/include/Ice/DispatchInterceptor.h +0 -0
  497. /data/{ext → dist}/ice/cpp/include/Ice/Dispatcher.h +0 -0
  498. /data/{ext → dist}/ice/cpp/include/Ice/DynamicLibrary.h +0 -0
  499. /data/{ext → dist}/ice/cpp/include/Ice/DynamicLibraryF.h +0 -0
  500. /data/{ext → dist}/ice/cpp/include/Ice/Exception.h +0 -0
  501. /data/{ext → dist}/ice/cpp/include/Ice/FactoryTable.h +0 -0
  502. /data/{ext → dist}/ice/cpp/include/Ice/FactoryTableInit.h +0 -0
  503. /data/{ext → dist}/ice/cpp/include/Ice/Format.h +0 -0
  504. /data/{ext → dist}/ice/cpp/include/Ice/Functional.h +0 -0
  505. /data/{ext → dist}/ice/cpp/include/Ice/GCObject.h +0 -0
  506. /data/{ext → dist}/ice/cpp/include/Ice/Handle.h +0 -0
  507. /data/{ext → dist}/ice/cpp/include/Ice/Ice.h +0 -0
  508. /data/{ext → dist}/ice/cpp/include/Ice/IconvStringConverter.h +0 -0
  509. /data/{ext → dist}/ice/cpp/include/Ice/Incoming.h +0 -0
  510. /data/{ext → dist}/ice/cpp/include/Ice/IncomingAsync.h +0 -0
  511. /data/{ext → dist}/ice/cpp/include/Ice/IncomingAsyncF.h +0 -0
  512. /data/{ext → dist}/ice/cpp/include/Ice/InputStream.h +0 -0
  513. /data/{ext → dist}/ice/cpp/include/Ice/InstanceF.h +0 -0
  514. /data/{ext → dist}/ice/cpp/include/Ice/InterfaceByValue.h +0 -0
  515. /data/{ext → dist}/ice/cpp/include/Ice/LocalObject.h +0 -0
  516. /data/{ext → dist}/ice/cpp/include/Ice/LocalObjectF.h +0 -0
  517. /data/{ext → dist}/ice/cpp/include/Ice/LoggerUtil.h +0 -0
  518. /data/{ext → dist}/ice/cpp/include/Ice/MetricsAdminI.h +0 -0
  519. /data/{ext → dist}/ice/cpp/include/Ice/MetricsFunctional.h +0 -0
  520. /data/{ext → dist}/ice/cpp/include/Ice/NativePropertiesAdmin.h +0 -0
  521. /data/{ext → dist}/ice/cpp/include/Ice/Object.h +0 -0
  522. /data/{ext → dist}/ice/cpp/include/Ice/ObjectF.h +0 -0
  523. /data/{ext → dist}/ice/cpp/include/Ice/ObserverHelper.h +0 -0
  524. /data/{ext → dist}/ice/cpp/include/Ice/Optional.h +0 -0
  525. /data/{ext → dist}/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -0
  526. /data/{ext → dist}/ice/cpp/include/Ice/OutputStream.h +0 -0
  527. /data/{ext → dist}/ice/cpp/include/Ice/Protocol.h +0 -0
  528. /data/{ext → dist}/ice/cpp/include/Ice/ProxyF.h +0 -0
  529. /data/{ext → dist}/ice/cpp/include/Ice/ProxyFactoryF.h +0 -0
  530. /data/{ext → dist}/ice/cpp/include/Ice/ProxyHandle.h +0 -0
  531. /data/{ext → dist}/ice/cpp/include/Ice/ReferenceF.h +0 -0
  532. /data/{ext → dist}/ice/cpp/include/Ice/RegisterPlugins.h +0 -0
  533. /data/{ext → dist}/ice/cpp/include/Ice/RequestHandlerF.h +0 -0
  534. /data/{ext → dist}/ice/cpp/include/Ice/ResponseHandlerF.h +0 -0
  535. /data/{ext → dist}/ice/cpp/include/Ice/SHA1.h +0 -0
  536. /data/{ext → dist}/ice/cpp/include/Ice/ServantManagerF.h +0 -0
  537. /data/{ext → dist}/ice/cpp/include/Ice/Service.h +0 -0
  538. /data/{ext → dist}/ice/cpp/include/Ice/SliceChecksums.h +0 -0
  539. /data/{ext → dist}/ice/cpp/include/Ice/SlicedData.h +0 -0
  540. /data/{ext → dist}/ice/cpp/include/Ice/SlicedDataF.h +0 -0
  541. /data/{ext → dist}/ice/cpp/include/Ice/StreamHelpers.h +0 -0
  542. /data/{ext → dist}/ice/cpp/include/Ice/StringConverter.h +0 -0
  543. /data/{ext → dist}/ice/cpp/include/Ice/ThreadPoolF.h +0 -0
  544. /data/{ext → dist}/ice/cpp/include/Ice/UUID.h +0 -0
  545. /data/{ext → dist}/ice/cpp/include/Ice/UniquePtr.h +0 -0
  546. /data/{ext → dist}/ice/cpp/include/Ice/UniqueRef.h +0 -0
  547. /data/{ext → dist}/ice/cpp/include/Ice/Value.h +0 -0
  548. /data/{ext → dist}/ice/cpp/include/Ice/ValueF.h +0 -0
  549. /data/{ext → dist}/ice/cpp/include/IceSSL/Config.h +0 -0
  550. /data/{ext → dist}/ice/cpp/include/IceSSL/IceSSL.h +0 -0
  551. /data/{ext → dist}/ice/cpp/include/IceSSL/OpenSSL.h +0 -0
  552. /data/{ext → dist}/ice/cpp/include/IceSSL/Plugin.h +0 -0
  553. /data/{ext → dist}/ice/cpp/include/IceSSL/SChannel.h +0 -0
  554. /data/{ext → dist}/ice/cpp/include/IceSSL/SecureTransport.h +0 -0
  555. /data/{ext → dist}/ice/cpp/include/IceUtil/Atomic.h +0 -0
  556. /data/{ext → dist}/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -0
  557. /data/{ext → dist}/ice/cpp/include/IceUtil/CountDownLatch.h +0 -0
  558. /data/{ext → dist}/ice/cpp/include/IceUtil/DisableWarnings.h +0 -0
  559. /data/{ext → dist}/ice/cpp/include/IceUtil/Exception.h +0 -0
  560. /data/{ext → dist}/ice/cpp/include/IceUtil/FileUtil.h +0 -0
  561. /data/{ext → dist}/ice/cpp/include/IceUtil/Functional.h +0 -0
  562. /data/{ext → dist}/ice/cpp/include/IceUtil/Handle.h +0 -0
  563. /data/{ext → dist}/ice/cpp/include/IceUtil/IceUtil.h +0 -0
  564. /data/{ext → dist}/ice/cpp/include/IceUtil/Iterator.h +0 -0
  565. /data/{ext → dist}/ice/cpp/include/IceUtil/Lock.h +0 -0
  566. /data/{ext → dist}/ice/cpp/include/IceUtil/Monitor.h +0 -0
  567. /data/{ext → dist}/ice/cpp/include/IceUtil/Mutex.h +0 -0
  568. /data/{ext → dist}/ice/cpp/include/IceUtil/MutexProtocol.h +0 -0
  569. /data/{ext → dist}/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -0
  570. /data/{ext → dist}/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -0
  571. /data/{ext → dist}/ice/cpp/include/IceUtil/Optional.h +0 -0
  572. /data/{ext → dist}/ice/cpp/include/IceUtil/Options.h +0 -0
  573. /data/{ext → dist}/ice/cpp/include/IceUtil/OutputUtil.h +0 -0
  574. /data/{ext → dist}/ice/cpp/include/IceUtil/PopDisableWarnings.h +0 -0
  575. /data/{ext → dist}/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -0
  576. /data/{ext → dist}/ice/cpp/include/IceUtil/Random.h +0 -0
  577. /data/{ext → dist}/ice/cpp/include/IceUtil/RecMutex.h +0 -0
  578. /data/{ext → dist}/ice/cpp/include/IceUtil/ScannerConfig.h +0 -0
  579. /data/{ext → dist}/ice/cpp/include/IceUtil/ScopedArray.h +0 -0
  580. /data/{ext → dist}/ice/cpp/include/IceUtil/Shared.h +0 -0
  581. /data/{ext → dist}/ice/cpp/include/IceUtil/StopWatch.h +0 -0
  582. /data/{ext → dist}/ice/cpp/include/IceUtil/StringConverter.h +0 -0
  583. /data/{ext → dist}/ice/cpp/include/IceUtil/StringUtil.h +0 -0
  584. /data/{ext → dist}/ice/cpp/include/IceUtil/Thread.h +0 -0
  585. /data/{ext → dist}/ice/cpp/include/IceUtil/ThreadException.h +0 -0
  586. /data/{ext → dist}/ice/cpp/include/IceUtil/Time.h +0 -0
  587. /data/{ext → dist}/ice/cpp/include/IceUtil/UUID.h +0 -0
  588. /data/{ext → dist}/ice/cpp/include/IceUtil/UndefSysMacros.h +0 -0
  589. /data/{ext → dist}/ice/cpp/src/Ice/ACM.cpp +0 -0
  590. /data/{ext → dist}/ice/cpp/src/Ice/ACM.h +0 -0
  591. /data/{ext → dist}/ice/cpp/src/Ice/ACMF.h +0 -0
  592. /data/{ext → dist}/ice/cpp/src/Ice/Acceptor.cpp +0 -0
  593. /data/{ext → dist}/ice/cpp/src/Ice/Acceptor.h +0 -0
  594. /data/{ext → dist}/ice/cpp/src/Ice/AcceptorF.h +0 -0
  595. /data/{ext → dist}/ice/cpp/src/Ice/ArgVector.cpp +0 -0
  596. /data/{ext → dist}/ice/cpp/src/Ice/ArgVector.h +0 -0
  597. /data/{ext → dist}/ice/cpp/src/Ice/AsyncResult.cpp +0 -0
  598. /data/{ext → dist}/ice/cpp/src/Ice/Base64.cpp +0 -0
  599. /data/{ext → dist}/ice/cpp/src/Ice/Base64.h +0 -0
  600. /data/{ext → dist}/ice/cpp/src/Ice/BatchRequestQueue.cpp +0 -0
  601. /data/{ext → dist}/ice/cpp/src/Ice/BatchRequestQueue.h +0 -0
  602. /data/{ext → dist}/ice/cpp/src/Ice/Buffer.cpp +0 -0
  603. /data/{ext → dist}/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +0 -0
  604. /data/{ext → dist}/ice/cpp/src/Ice/CollocatedRequestHandler.h +0 -0
  605. /data/{ext → dist}/ice/cpp/src/Ice/CommunicatorI.cpp +0 -0
  606. /data/{ext → dist}/ice/cpp/src/Ice/CommunicatorI.h +0 -0
  607. /data/{ext → dist}/ice/cpp/src/Ice/Cond.cpp +0 -0
  608. /data/{ext → dist}/ice/cpp/src/Ice/ConnectRequestHandler.cpp +0 -0
  609. /data/{ext → dist}/ice/cpp/src/Ice/ConnectRequestHandler.h +0 -0
  610. /data/{ext → dist}/ice/cpp/src/Ice/ConnectRequestHandlerF.h +0 -0
  611. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionFactory.cpp +0 -0
  612. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionFactory.h +0 -0
  613. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionFactoryF.h +0 -0
  614. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionI.cpp +0 -0
  615. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionI.h +0 -0
  616. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -0
  617. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -0
  618. /data/{ext → dist}/ice/cpp/src/Ice/Connector.cpp +0 -0
  619. /data/{ext → dist}/ice/cpp/src/Ice/Connector.h +0 -0
  620. /data/{ext → dist}/ice/cpp/src/Ice/ConnectorF.h +0 -0
  621. /data/{ext → dist}/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +0 -0
  622. /data/{ext → dist}/ice/cpp/src/Ice/DefaultsAndOverrides.h +0 -0
  623. /data/{ext → dist}/ice/cpp/src/Ice/DefaultsAndOverridesF.h +0 -0
  624. /data/{ext → dist}/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -0
  625. /data/{ext → dist}/ice/cpp/src/Ice/DynamicLibrary.cpp +0 -0
  626. /data/{ext → dist}/ice/cpp/src/Ice/EndpointFactory.h +0 -0
  627. /data/{ext → dist}/ice/cpp/src/Ice/EndpointFactoryF.h +0 -0
  628. /data/{ext → dist}/ice/cpp/src/Ice/EndpointFactoryManager.cpp +0 -0
  629. /data/{ext → dist}/ice/cpp/src/Ice/EndpointFactoryManager.h +0 -0
  630. /data/{ext → dist}/ice/cpp/src/Ice/EndpointFactoryManagerF.h +0 -0
  631. /data/{ext → dist}/ice/cpp/src/Ice/EndpointI.h +0 -0
  632. /data/{ext → dist}/ice/cpp/src/Ice/EndpointIF.h +0 -0
  633. /data/{ext → dist}/ice/cpp/src/Ice/EventHandler.cpp +0 -0
  634. /data/{ext → dist}/ice/cpp/src/Ice/EventHandler.h +0 -0
  635. /data/{ext → dist}/ice/cpp/src/Ice/EventHandlerF.h +0 -0
  636. /data/{ext → dist}/ice/cpp/src/Ice/Exception.cpp +0 -0
  637. /data/{ext → dist}/ice/cpp/src/Ice/FactoryTable.cpp +0 -0
  638. /data/{ext → dist}/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -0
  639. /data/{ext → dist}/ice/cpp/src/Ice/GCObject.cpp +0 -0
  640. /data/{ext → dist}/ice/cpp/src/Ice/HashUtil.h +0 -0
  641. /data/{ext → dist}/ice/cpp/src/Ice/HttpParser.cpp +0 -0
  642. /data/{ext → dist}/ice/cpp/src/Ice/HttpParser.h +0 -0
  643. /data/{ext → dist}/ice/cpp/src/Ice/IPEndpointI.cpp +0 -0
  644. /data/{ext → dist}/ice/cpp/src/Ice/IPEndpointI.h +0 -0
  645. /data/{ext → dist}/ice/cpp/src/Ice/IPEndpointIF.h +0 -0
  646. /data/{ext → dist}/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -0
  647. /data/{ext → dist}/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -0
  648. /data/{ext → dist}/ice/cpp/src/Ice/ImplicitContextI.h +0 -0
  649. /data/{ext → dist}/ice/cpp/src/Ice/Incoming.cpp +0 -0
  650. /data/{ext → dist}/ice/cpp/src/Ice/IncomingAsync.cpp +0 -0
  651. /data/{ext → dist}/ice/cpp/src/Ice/IncomingRequest.h +0 -0
  652. /data/{ext → dist}/ice/cpp/src/Ice/Initialize.cpp +0 -0
  653. /data/{ext → dist}/ice/cpp/src/Ice/Instance.cpp +0 -0
  654. /data/{ext → dist}/ice/cpp/src/Ice/Instance.h +0 -0
  655. /data/{ext → dist}/ice/cpp/src/Ice/InstrumentationI.cpp +0 -0
  656. /data/{ext → dist}/ice/cpp/src/Ice/InstrumentationI.h +0 -0
  657. /data/{ext → dist}/ice/cpp/src/Ice/LocalObject.cpp +0 -0
  658. /data/{ext → dist}/ice/cpp/src/Ice/LocatorInfo.cpp +0 -0
  659. /data/{ext → dist}/ice/cpp/src/Ice/LocatorInfo.h +0 -0
  660. /data/{ext → dist}/ice/cpp/src/Ice/LocatorInfoF.h +0 -0
  661. /data/{ext → dist}/ice/cpp/src/Ice/LoggerAdminI.cpp +0 -0
  662. /data/{ext → dist}/ice/cpp/src/Ice/LoggerAdminI.h +0 -0
  663. /data/{ext → dist}/ice/cpp/src/Ice/LoggerI.cpp +0 -0
  664. /data/{ext → dist}/ice/cpp/src/Ice/LoggerI.h +0 -0
  665. /data/{ext → dist}/ice/cpp/src/Ice/LoggerUtil.cpp +0 -0
  666. /data/{ext → dist}/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -0
  667. /data/{ext → dist}/ice/cpp/src/Ice/Network.h +0 -0
  668. /data/{ext → dist}/ice/cpp/src/Ice/NetworkF.h +0 -0
  669. /data/{ext → dist}/ice/cpp/src/Ice/NetworkProxy.cpp +0 -0
  670. /data/{ext → dist}/ice/cpp/src/Ice/NetworkProxy.h +0 -0
  671. /data/{ext → dist}/ice/cpp/src/Ice/NetworkProxyF.h +0 -0
  672. /data/{ext → dist}/ice/cpp/src/Ice/OSLogLoggerI.cpp +0 -0
  673. /data/{ext → dist}/ice/cpp/src/Ice/OSLogLoggerI.h +0 -0
  674. /data/{ext → dist}/ice/cpp/src/Ice/Object.cpp +0 -0
  675. /data/{ext → dist}/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +0 -0
  676. /data/{ext → dist}/ice/cpp/src/Ice/ObjectAdapterFactory.h +0 -0
  677. /data/{ext → dist}/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +0 -0
  678. /data/{ext → dist}/ice/cpp/src/Ice/ObjectAdapterI.h +0 -0
  679. /data/{ext → dist}/ice/cpp/src/Ice/ObserverHelper.cpp +0 -0
  680. /data/{ext → dist}/ice/cpp/src/Ice/OpaqueEndpointI.cpp +0 -0
  681. /data/{ext → dist}/ice/cpp/src/Ice/OpaqueEndpointI.h +0 -0
  682. /data/{ext → dist}/ice/cpp/src/Ice/OutputStream.cpp +0 -0
  683. /data/{ext → dist}/ice/cpp/src/Ice/PluginManagerI.h +0 -0
  684. /data/{ext → dist}/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -0
  685. /data/{ext → dist}/ice/cpp/src/Ice/PropertiesAdminI.h +0 -0
  686. /data/{ext → dist}/ice/cpp/src/Ice/PropertiesI.cpp +0 -0
  687. /data/{ext → dist}/ice/cpp/src/Ice/PropertiesI.h +0 -0
  688. /data/{ext → dist}/ice/cpp/src/Ice/Protocol.cpp +0 -0
  689. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolInstance.cpp +0 -0
  690. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolInstance.h +0 -0
  691. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolInstanceF.h +0 -0
  692. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +0 -0
  693. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolPluginFacade.h +0 -0
  694. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -0
  695. /data/{ext → dist}/ice/cpp/src/Ice/ProxyFactory.cpp +0 -0
  696. /data/{ext → dist}/ice/cpp/src/Ice/ProxyFactory.h +0 -0
  697. /data/{ext → dist}/ice/cpp/src/Ice/Reference.cpp +0 -0
  698. /data/{ext → dist}/ice/cpp/src/Ice/Reference.h +0 -0
  699. /data/{ext → dist}/ice/cpp/src/Ice/ReferenceFactory.cpp +0 -0
  700. /data/{ext → dist}/ice/cpp/src/Ice/ReferenceFactory.h +0 -0
  701. /data/{ext → dist}/ice/cpp/src/Ice/ReferenceFactoryF.h +0 -0
  702. /data/{ext → dist}/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -0
  703. /data/{ext → dist}/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -0
  704. /data/{ext → dist}/ice/cpp/src/Ice/ReplyStatus.h +0 -0
  705. /data/{ext → dist}/ice/cpp/src/Ice/RequestHandler.cpp +0 -0
  706. /data/{ext → dist}/ice/cpp/src/Ice/RequestHandler.h +0 -0
  707. /data/{ext → dist}/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -0
  708. /data/{ext → dist}/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -0
  709. /data/{ext → dist}/ice/cpp/src/Ice/ResponseHandler.cpp +0 -0
  710. /data/{ext → dist}/ice/cpp/src/Ice/ResponseHandler.h +0 -0
  711. /data/{ext → dist}/ice/cpp/src/Ice/RetryQueue.cpp +0 -0
  712. /data/{ext → dist}/ice/cpp/src/Ice/RetryQueue.h +0 -0
  713. /data/{ext → dist}/ice/cpp/src/Ice/RetryQueueF.h +0 -0
  714. /data/{ext → dist}/ice/cpp/src/Ice/RouterInfo.cpp +0 -0
  715. /data/{ext → dist}/ice/cpp/src/Ice/RouterInfo.h +0 -0
  716. /data/{ext → dist}/ice/cpp/src/Ice/RouterInfoF.h +0 -0
  717. /data/{ext → dist}/ice/cpp/src/Ice/SHA1.cpp +0 -0
  718. /data/{ext → dist}/ice/cpp/src/Ice/Selector.h +0 -0
  719. /data/{ext → dist}/ice/cpp/src/Ice/ServantManager.cpp +0 -0
  720. /data/{ext → dist}/ice/cpp/src/Ice/ServantManager.h +0 -0
  721. /data/{ext → dist}/ice/cpp/src/Ice/SharedContext.h +0 -0
  722. /data/{ext → dist}/ice/cpp/src/Ice/SliceChecksums.cpp +0 -0
  723. /data/{ext → dist}/ice/cpp/src/Ice/SlicedData.cpp +0 -0
  724. /data/{ext → dist}/ice/cpp/src/Ice/StreamSocket.cpp +0 -0
  725. /data/{ext → dist}/ice/cpp/src/Ice/StreamSocket.h +0 -0
  726. /data/{ext → dist}/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -0
  727. /data/{ext → dist}/ice/cpp/src/Ice/StringUtil.h +0 -0
  728. /data/{ext → dist}/ice/cpp/src/Ice/SysLoggerI.cpp +0 -0
  729. /data/{ext → dist}/ice/cpp/src/Ice/SysLoggerI.h +0 -0
  730. /data/{ext → dist}/ice/cpp/src/Ice/SystemdJournalI.cpp +0 -0
  731. /data/{ext → dist}/ice/cpp/src/Ice/SystemdJournalI.h +0 -0
  732. /data/{ext → dist}/ice/cpp/src/Ice/TcpAcceptor.cpp +0 -0
  733. /data/{ext → dist}/ice/cpp/src/Ice/TcpAcceptor.h +0 -0
  734. /data/{ext → dist}/ice/cpp/src/Ice/TcpConnector.cpp +0 -0
  735. /data/{ext → dist}/ice/cpp/src/Ice/TcpConnector.h +0 -0
  736. /data/{ext → dist}/ice/cpp/src/Ice/TcpEndpointI.cpp +0 -0
  737. /data/{ext → dist}/ice/cpp/src/Ice/TcpEndpointI.h +0 -0
  738. /data/{ext → dist}/ice/cpp/src/Ice/TcpTransceiver.cpp +0 -0
  739. /data/{ext → dist}/ice/cpp/src/Ice/TcpTransceiver.h +0 -0
  740. /data/{ext → dist}/ice/cpp/src/Ice/Thread.cpp +0 -0
  741. /data/{ext → dist}/ice/cpp/src/Ice/ThreadPool.h +0 -0
  742. /data/{ext → dist}/ice/cpp/src/Ice/Timer.cpp +0 -0
  743. /data/{ext → dist}/ice/cpp/src/Ice/TraceLevels.cpp +0 -0
  744. /data/{ext → dist}/ice/cpp/src/Ice/TraceLevels.h +0 -0
  745. /data/{ext → dist}/ice/cpp/src/Ice/TraceLevelsF.h +0 -0
  746. /data/{ext → dist}/ice/cpp/src/Ice/TraceUtil.cpp +0 -0
  747. /data/{ext → dist}/ice/cpp/src/Ice/TraceUtil.h +0 -0
  748. /data/{ext → dist}/ice/cpp/src/Ice/Transceiver.cpp +0 -0
  749. /data/{ext → dist}/ice/cpp/src/Ice/Transceiver.h +0 -0
  750. /data/{ext → dist}/ice/cpp/src/Ice/TransceiverF.h +0 -0
  751. /data/{ext → dist}/ice/cpp/src/Ice/UdpConnector.cpp +0 -0
  752. /data/{ext → dist}/ice/cpp/src/Ice/UdpConnector.h +0 -0
  753. /data/{ext → dist}/ice/cpp/src/Ice/UdpEndpointI.cpp +0 -0
  754. /data/{ext → dist}/ice/cpp/src/Ice/UdpEndpointI.h +0 -0
  755. /data/{ext → dist}/ice/cpp/src/Ice/UdpTransceiver.cpp +0 -0
  756. /data/{ext → dist}/ice/cpp/src/Ice/UdpTransceiver.h +0 -0
  757. /data/{ext → dist}/ice/cpp/src/Ice/Value.cpp +0 -0
  758. /data/{ext → dist}/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -0
  759. /data/{ext → dist}/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -0
  760. /data/{ext → dist}/ice/cpp/src/Ice/VirtualShared.h +0 -0
  761. /data/{ext → dist}/ice/cpp/src/Ice/WSAcceptor.cpp +0 -0
  762. /data/{ext → dist}/ice/cpp/src/Ice/WSAcceptor.h +0 -0
  763. /data/{ext → dist}/ice/cpp/src/Ice/WSConnector.cpp +0 -0
  764. /data/{ext → dist}/ice/cpp/src/Ice/WSConnector.h +0 -0
  765. /data/{ext → dist}/ice/cpp/src/Ice/WSEndpoint.cpp +0 -0
  766. /data/{ext → dist}/ice/cpp/src/Ice/WSEndpoint.h +0 -0
  767. /data/{ext → dist}/ice/cpp/src/Ice/WSTransceiver.cpp +0 -0
  768. /data/{ext → dist}/ice/cpp/src/Ice/WSTransceiver.h +0 -0
  769. /data/{ext → dist}/ice/cpp/src/IceDiscovery/LocatorI.cpp +0 -0
  770. /data/{ext → dist}/ice/cpp/src/IceDiscovery/LocatorI.h +0 -0
  771. /data/{ext → dist}/ice/cpp/src/IceDiscovery/LookupI.cpp +0 -0
  772. /data/{ext → dist}/ice/cpp/src/IceDiscovery/LookupI.h +0 -0
  773. /data/{ext → dist}/ice/cpp/src/IceDiscovery/PluginI.cpp +0 -0
  774. /data/{ext → dist}/ice/cpp/src/IceDiscovery/PluginI.h +0 -0
  775. /data/{ext → dist}/ice/cpp/src/IceLocatorDiscovery/Plugin.h +0 -0
  776. /data/{ext → dist}/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +0 -0
  777. /data/{ext → dist}/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -0
  778. /data/{ext → dist}/ice/cpp/src/IceSSL/AcceptorI.h +0 -0
  779. /data/{ext → dist}/ice/cpp/src/IceSSL/CertificateI.cpp +0 -0
  780. /data/{ext → dist}/ice/cpp/src/IceSSL/CertificateI.h +0 -0
  781. /data/{ext → dist}/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -0
  782. /data/{ext → dist}/ice/cpp/src/IceSSL/ConnectorI.h +0 -0
  783. /data/{ext → dist}/ice/cpp/src/IceSSL/EndpointI.cpp +0 -0
  784. /data/{ext → dist}/ice/cpp/src/IceSSL/EndpointI.h +0 -0
  785. /data/{ext → dist}/ice/cpp/src/IceSSL/Instance.cpp +0 -0
  786. /data/{ext → dist}/ice/cpp/src/IceSSL/Instance.h +0 -0
  787. /data/{ext → dist}/ice/cpp/src/IceSSL/InstanceF.h +0 -0
  788. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -0
  789. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -0
  790. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -0
  791. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -0
  792. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -0
  793. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -0
  794. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -0
  795. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -0
  796. /data/{ext → dist}/ice/cpp/src/IceSSL/PluginI.h +0 -0
  797. /data/{ext → dist}/ice/cpp/src/IceSSL/RFC2253.cpp +0 -0
  798. /data/{ext → dist}/ice/cpp/src/IceSSL/RFC2253.h +0 -0
  799. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -0
  800. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -0
  801. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelEngine.h +0 -0
  802. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -0
  803. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -0
  804. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -0
  805. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -0
  806. /data/{ext → dist}/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -0
  807. /data/{ext → dist}/ice/cpp/src/IceSSL/SSLEngine.h +0 -0
  808. /data/{ext → dist}/ice/cpp/src/IceSSL/SSLEngineF.h +0 -0
  809. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -0
  810. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -0
  811. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -0
  812. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -0
  813. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -0
  814. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -0
  815. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -0
  816. /data/{ext → dist}/ice/cpp/src/IceSSL/TrustManager.cpp +0 -0
  817. /data/{ext → dist}/ice/cpp/src/IceSSL/TrustManager.h +0 -0
  818. /data/{ext → dist}/ice/cpp/src/IceSSL/TrustManagerF.h +0 -0
  819. /data/{ext → dist}/ice/cpp/src/IceSSL/Util.cpp +0 -0
  820. /data/{ext → dist}/ice/cpp/src/IceSSL/Util.h +0 -0
  821. /data/{ext → dist}/ice/cpp/src/IceUtil/ConsoleUtil.cpp +0 -0
  822. /data/{ext → dist}/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -0
  823. /data/{ext → dist}/ice/cpp/src/IceUtil/ConvertUTF.h +0 -0
  824. /data/{ext → dist}/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -0
  825. /data/{ext → dist}/ice/cpp/src/IceUtil/FileUtil.cpp +0 -0
  826. /data/{ext → dist}/ice/cpp/src/IceUtil/InputUtil.cpp +0 -0
  827. /data/{ext → dist}/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -0
  828. /data/{ext → dist}/ice/cpp/src/IceUtil/Options.cpp +0 -0
  829. /data/{ext → dist}/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -0
  830. /data/{ext → dist}/ice/cpp/src/IceUtil/Random.cpp +0 -0
  831. /data/{ext → dist}/ice/cpp/src/IceUtil/RecMutex.cpp +0 -0
  832. /data/{ext → dist}/ice/cpp/src/IceUtil/Shared.cpp +0 -0
  833. /data/{ext → dist}/ice/cpp/src/IceUtil/StringUtil.cpp +0 -0
  834. /data/{ext → dist}/ice/cpp/src/IceUtil/ThreadException.cpp +0 -0
  835. /data/{ext → dist}/ice/cpp/src/IceUtil/Time.cpp +0 -0
  836. /data/{ext → dist}/ice/cpp/src/IceUtil/UUID.cpp +0 -0
  837. /data/{ext → dist}/ice/cpp/src/IceUtil/Unicode.cpp +0 -0
  838. /data/{ext → dist}/ice/cpp/src/IceUtil/Unicode.h +0 -0
  839. /data/{ext → dist}/ice/cpp/src/IceUtil/UtilException.cpp +0 -0
  840. /data/{ext → dist}/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -0
  841. /data/{ext → dist}/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -0
  842. /data/{ext → dist}/ice/cpp/src/Slice/Checksum.cpp +0 -0
  843. /data/{ext → dist}/ice/cpp/src/Slice/Checksum.h +0 -0
  844. /data/{ext → dist}/ice/cpp/src/Slice/FileTracker.cpp +0 -0
  845. /data/{ext → dist}/ice/cpp/src/Slice/FileTracker.h +0 -0
  846. /data/{ext → dist}/ice/cpp/src/Slice/Grammar.cpp +0 -0
  847. /data/{ext → dist}/ice/cpp/src/Slice/Grammar.h +0 -0
  848. /data/{ext → dist}/ice/cpp/src/Slice/GrammarUtil.h +0 -0
  849. /data/{ext → dist}/ice/cpp/src/Slice/JavaUtil.h +0 -0
  850. /data/{ext → dist}/ice/cpp/src/Slice/MD5.cpp +0 -0
  851. /data/{ext → dist}/ice/cpp/src/Slice/MD5.h +0 -0
  852. /data/{ext → dist}/ice/cpp/src/Slice/MD5I.cpp +0 -0
  853. /data/{ext → dist}/ice/cpp/src/Slice/MD5I.h +0 -0
  854. /data/{ext → dist}/ice/cpp/src/Slice/PHPUtil.cpp +0 -0
  855. /data/{ext → dist}/ice/cpp/src/Slice/PHPUtil.h +0 -0
  856. /data/{ext → dist}/ice/cpp/src/Slice/Parser.cpp +0 -0
  857. /data/{ext → dist}/ice/cpp/src/Slice/Parser.h +0 -0
  858. /data/{ext → dist}/ice/cpp/src/Slice/Preprocessor.cpp +0 -0
  859. /data/{ext → dist}/ice/cpp/src/Slice/Preprocessor.h +0 -0
  860. /data/{ext → dist}/ice/cpp/src/Slice/Python.cpp +0 -0
  861. /data/{ext → dist}/ice/cpp/src/Slice/PythonUtil.cpp +0 -0
  862. /data/{ext → dist}/ice/cpp/src/Slice/PythonUtil.h +0 -0
  863. /data/{ext → dist}/ice/cpp/src/Slice/Ruby.cpp +0 -0
  864. /data/{ext → dist}/ice/cpp/src/Slice/RubyUtil.cpp +0 -0
  865. /data/{ext → dist}/ice/cpp/src/Slice/RubyUtil.h +0 -0
  866. /data/{ext → dist}/ice/cpp/src/Slice/Scanner.cpp +0 -0
  867. /data/{ext → dist}/ice/cpp/src/Slice/SliceUtil.cpp +0 -0
  868. /data/{ext → dist}/ice/cpp/src/Slice/StringLiteralUtil.cpp +0 -0
  869. /data/{ext → dist}/ice/cpp/src/Slice/Util.h +0 -0
  870. /data/{ext → dist}/ice/mcpp/config.h +0 -0
  871. /data/{ext → dist}/ice/mcpp/configed.H +0 -0
  872. /data/{ext → dist}/ice/mcpp/eval.c +0 -0
  873. /data/{ext → dist}/ice/mcpp/expand.c +0 -0
  874. /data/{ext → dist}/ice/mcpp/mbchar.c +0 -0
  875. /data/{ext → dist}/ice/mcpp/mcpp_lib.h +0 -0
  876. /data/{ext → dist}/ice/mcpp/mcpp_out.h +0 -0
  877. /data/{ext → dist}/ice/mcpp/system.H +0 -0
  878. /data/{slice → dist/ice/slice}/Glacier2/Metrics.ice +0 -0
  879. /data/{slice → dist/ice/slice}/Glacier2/PermissionsVerifier.ice +0 -0
  880. /data/{slice → dist/ice/slice}/Glacier2/PermissionsVerifierF.ice +0 -0
  881. /data/{slice → dist/ice/slice}/Glacier2/Router.ice +0 -0
  882. /data/{slice → dist/ice/slice}/Glacier2/RouterF.ice +0 -0
  883. /data/{slice → dist/ice/slice}/Glacier2/SSLInfo.ice +0 -0
  884. /data/{slice → dist/ice/slice}/Glacier2/Session.ice +0 -0
  885. /data/{slice → dist/ice/slice}/Ice/BuiltinSequences.ice +0 -0
  886. /data/{slice → dist/ice/slice}/Ice/Communicator.ice +0 -0
  887. /data/{slice → dist/ice/slice}/Ice/CommunicatorF.ice +0 -0
  888. /data/{slice → dist/ice/slice}/Ice/ConnectionF.ice +0 -0
  889. /data/{slice → dist/ice/slice}/Ice/Current.ice +0 -0
  890. /data/{slice → dist/ice/slice}/Ice/Endpoint.ice +0 -0
  891. /data/{slice → dist/ice/slice}/Ice/EndpointF.ice +0 -0
  892. /data/{slice → dist/ice/slice}/Ice/EndpointTypes.ice +0 -0
  893. /data/{slice → dist/ice/slice}/Ice/FacetMap.ice +0 -0
  894. /data/{slice → dist/ice/slice}/Ice/Identity.ice +0 -0
  895. /data/{slice → dist/ice/slice}/Ice/ImplicitContext.ice +0 -0
  896. /data/{slice → dist/ice/slice}/Ice/ImplicitContextF.ice +0 -0
  897. /data/{slice → dist/ice/slice}/Ice/Instrumentation.ice +0 -0
  898. /data/{slice → dist/ice/slice}/Ice/InstrumentationF.ice +0 -0
  899. /data/{slice → dist/ice/slice}/Ice/LocalException.ice +0 -0
  900. /data/{slice → dist/ice/slice}/Ice/LocatorF.ice +0 -0
  901. /data/{slice → dist/ice/slice}/Ice/Logger.ice +0 -0
  902. /data/{slice → dist/ice/slice}/Ice/LoggerF.ice +0 -0
  903. /data/{slice → dist/ice/slice}/Ice/ObjectAdapterF.ice +0 -0
  904. /data/{slice → dist/ice/slice}/Ice/ObjectFactory.ice +0 -0
  905. /data/{slice → dist/ice/slice}/Ice/Plugin.ice +0 -0
  906. /data/{slice → dist/ice/slice}/Ice/PluginF.ice +0 -0
  907. /data/{slice → dist/ice/slice}/Ice/Process.ice +0 -0
  908. /data/{slice → dist/ice/slice}/Ice/ProcessF.ice +0 -0
  909. /data/{slice → dist/ice/slice}/Ice/Properties.ice +0 -0
  910. /data/{slice → dist/ice/slice}/Ice/PropertiesAdmin.ice +0 -0
  911. /data/{slice → dist/ice/slice}/Ice/PropertiesF.ice +0 -0
  912. /data/{slice → dist/ice/slice}/Ice/RemoteLogger.ice +0 -0
  913. /data/{slice → dist/ice/slice}/Ice/RouterF.ice +0 -0
  914. /data/{slice → dist/ice/slice}/Ice/ServantLocator.ice +0 -0
  915. /data/{slice → dist/ice/slice}/Ice/ServantLocatorF.ice +0 -0
  916. /data/{slice → dist/ice/slice}/Ice/SliceChecksumDict.ice +0 -0
  917. /data/{slice → dist/ice/slice}/Ice/ValueFactory.ice +0 -0
  918. /data/{slice → dist/ice/slice}/Ice/Version.ice +0 -0
  919. /data/{slice → dist/ice/slice}/IceBox/IceBox.ice +0 -0
  920. /data/{slice → dist/ice/slice}/IceGrid/Admin.ice +0 -0
  921. /data/{slice → dist/ice/slice}/IceGrid/Descriptor.ice +0 -0
  922. /data/{slice → dist/ice/slice}/IceGrid/Exception.ice +0 -0
  923. /data/{slice → dist/ice/slice}/IceGrid/FileParser.ice +0 -0
  924. /data/{slice → dist/ice/slice}/IceGrid/Registry.ice +0 -0
  925. /data/{slice → dist/ice/slice}/IceGrid/Session.ice +0 -0
  926. /data/{slice → dist/ice/slice}/IceGrid/UserAccountMapper.ice +0 -0
  927. /data/{slice → dist/ice/slice}/IcePatch2/FileInfo.ice +0 -0
  928. /data/{slice → dist/ice/slice}/IcePatch2/FileServer.ice +0 -0
  929. /data/{slice → dist/ice/slice}/IceStorm/Metrics.ice +0 -0
  930. /data/{lib → dist/lib}/Glacier2.rb +0 -0
  931. /data/{lib → dist/lib}/Ice.rb +0 -0
  932. /data/{lib → dist/lib}/IceBox.rb +0 -0
  933. /data/{lib → dist/lib}/IceGrid.rb +0 -0
  934. /data/{lib → dist/lib}/IcePatch2.rb +0 -0
  935. /data/{lib → dist/lib}/IceStorm.rb +0 -0
  936. /data/{bin → scripts}/slice2rb +0 -0
@@ -0,0 +1,1883 @@
1
+ //
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
3
+ //
4
+
5
+ #include <IceUtil/CtrlCHandler.h>
6
+ #include <IceUtil/StringUtil.h>
7
+ #include <IceUtil/Thread.h>
8
+ #include <IceUtil/Monitor.h>
9
+ #include <IceUtil/Mutex.h>
10
+ #include <Ice/ArgVector.h>
11
+ #include <IceUtil/FileUtil.h>
12
+ #include <Ice/ConsoleUtil.h>
13
+ #include <Ice/StringConverter.h>
14
+ #include <Ice/Service.h>
15
+ #include <Ice/LoggerI.h>
16
+ #include <Ice/Initialize.h>
17
+ #include <Ice/Communicator.h>
18
+ #include <Ice/LocalException.h>
19
+ #include <Ice/Properties.h>
20
+ #include <Ice/Instance.h>
21
+ #include <Ice/LoggerUtil.h>
22
+
23
+ #ifdef _WIN32
24
+ # include <winsock2.h>
25
+ # include <Ice/EventLoggerMsg.h>
26
+ #else
27
+ # include <Ice/Logger.h>
28
+ # include <Ice/Network.h>
29
+ # include <sys/types.h>
30
+ # include <sys/stat.h>
31
+ # include <csignal>
32
+ # ifdef ICE_USE_SYSTEMD
33
+ # include <systemd/sd-daemon.h>
34
+ # endif
35
+ #endif
36
+
37
+ using namespace std;
38
+ using namespace Ice;
39
+ using namespace IceInternal;
40
+
41
+ Ice::Service* Ice::Service::_instance = 0;
42
+ static IceUtil::CtrlCHandler* _ctrlCHandler = 0;
43
+
44
+ //
45
+ // Callback for IceUtil::CtrlCHandler.
46
+ //
47
+ static void
48
+ ctrlCHandlerCallback(int sig)
49
+ {
50
+ Ice::Service* service = Ice::Service::instance();
51
+ assert(service != 0);
52
+ service->handleInterrupt(sig);
53
+ }
54
+
55
+ #ifdef _WIN32
56
+
57
+ //
58
+ // Main function for Win32 service.
59
+ //
60
+ void WINAPI
61
+ Ice_Service_ServiceMain(DWORD argc, LPWSTR* argv)
62
+ {
63
+ Ice::Service* service = Ice::Service::instance();
64
+ assert(service != 0);
65
+ service->serviceMain(argc, argv);
66
+ }
67
+
68
+ //
69
+ // Win32 service control handler.
70
+ //
71
+ void WINAPI
72
+ Ice_Service_CtrlHandler(DWORD ctrl)
73
+ {
74
+ Ice::Service* service = Ice::Service::instance();
75
+ assert(service != 0);
76
+ service->control(ctrl);
77
+ }
78
+
79
+ namespace
80
+ {
81
+
82
+ class ServiceStatusManager : public IceUtil::Monitor<IceUtil::Mutex>
83
+ {
84
+ public:
85
+
86
+ ServiceStatusManager(SERVICE_STATUS_HANDLE);
87
+
88
+ //
89
+ // Start a thread to provide regular status updates to the SCM.
90
+ //
91
+ void startUpdate(DWORD);
92
+
93
+ //
94
+ // Stop the update thread.
95
+ //
96
+ void stopUpdate();
97
+
98
+ //
99
+ // Change the service status and report it (once).
100
+ //
101
+ void changeStatus(DWORD, DWORD);
102
+
103
+ //
104
+ // Report the current status.
105
+ //
106
+ void reportStatus();
107
+
108
+ private:
109
+
110
+ void run();
111
+
112
+ class StatusThread : public IceUtil::Thread
113
+ {
114
+ public:
115
+
116
+ StatusThread(ServiceStatusManager* manager) :
117
+ IceUtil::Thread("Ice service status manager thread"),
118
+ _manager(manager)
119
+ {
120
+ }
121
+
122
+ virtual void run()
123
+ {
124
+ _manager->run();
125
+ }
126
+
127
+ private:
128
+
129
+ ServiceStatusManager* _manager;
130
+ };
131
+ friend class StatusThread;
132
+
133
+ SERVICE_STATUS_HANDLE _handle;
134
+ SERVICE_STATUS _status;
135
+ IceUtil::ThreadPtr _thread;
136
+ bool _stopped;
137
+ };
138
+
139
+ static ServiceStatusManager* serviceStatusManager;
140
+
141
+ //
142
+ // Interface implemented by SMEventLoggerI and called from
143
+ // SMEventLoggerIWrapper.
144
+ //
145
+ class SMEventLogger : public IceUtil::Shared
146
+ {
147
+ public:
148
+ virtual void print(const string&, const string&) = 0;
149
+ virtual void trace(const string&, const string&, const string&) = 0;
150
+ virtual void warning(const string&, const string&) = 0;
151
+ virtual void error(const string&, const string&) = 0;
152
+ };
153
+ typedef IceUtil::Handle<SMEventLogger> SMEventLoggerPtr;
154
+
155
+ class SMEventLoggerIWrapper : public Ice::Logger
156
+ {
157
+ public:
158
+
159
+ SMEventLoggerIWrapper(const SMEventLoggerPtr& logger, const string& prefix) :
160
+ _logger(logger),
161
+ _prefix(prefix)
162
+ {
163
+ assert(_logger);
164
+ }
165
+
166
+ virtual void
167
+ print(const string& message)
168
+ {
169
+ _logger->print(_prefix, message);
170
+ }
171
+
172
+ void
173
+ trace(const string& category, const string& message)
174
+ {
175
+ _logger->trace(_prefix, category, message);
176
+ }
177
+
178
+ virtual void
179
+ warning(const string& message)
180
+ {
181
+ _logger->warning(_prefix, message);
182
+ }
183
+
184
+ virtual void
185
+ error(const string& message)
186
+ {
187
+ _logger->error(_prefix, message);
188
+ }
189
+
190
+ virtual string
191
+ getPrefix()
192
+ {
193
+ return _prefix;
194
+ }
195
+
196
+ virtual Ice::LoggerPtr
197
+ cloneWithPrefix(const string& prefix)
198
+ {
199
+ return ICE_MAKE_SHARED(SMEventLoggerIWrapper, _logger, prefix);
200
+ }
201
+
202
+ private:
203
+
204
+ SMEventLoggerPtr _logger;
205
+ const string _prefix;
206
+ };
207
+
208
+ class SMEventLoggerI : public SMEventLogger
209
+ {
210
+ public:
211
+
212
+ SMEventLoggerI(const string& source, const StringConverterPtr& stringConverter) :
213
+ _stringConverter(stringConverter)
214
+ {
215
+ //
216
+ // Don't need to use a wide string converter as the wide string is passed
217
+ // to Windows API.
218
+ //
219
+ _source = RegisterEventSourceW(0, stringToWstring(mangleSource(source), _stringConverter).c_str());
220
+ if(_source == 0)
221
+ {
222
+ throw SyscallException(__FILE__, __LINE__, GetLastError());
223
+ }
224
+ }
225
+
226
+ ~SMEventLoggerI()
227
+ {
228
+ assert(_source != 0);
229
+ DeregisterEventSource(_source);
230
+ }
231
+
232
+ static void
233
+ addKeys(const string& source, const StringConverterPtr& stringConverter)
234
+ {
235
+ HKEY hKey;
236
+ DWORD d;
237
+ //
238
+ // Don't need to use a wide string converter as the wide string is passed
239
+ // to Windows API.
240
+ //
241
+ LONG err = RegCreateKeyExW(HKEY_LOCAL_MACHINE,
242
+ stringToWstring(createKey(source), stringConverter).c_str(),
243
+ 0, const_cast<wchar_t*>(L"REG_SZ"), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, &hKey, &d);
244
+
245
+ if(err != ERROR_SUCCESS)
246
+ {
247
+ throw SyscallException(__FILE__, __LINE__, err);
248
+ }
249
+
250
+ //
251
+ // Get the filename of this DLL.
252
+ //
253
+ wchar_t path[_MAX_PATH];
254
+ assert(_module != 0);
255
+ if(!GetModuleFileNameW(_module, path, _MAX_PATH))
256
+ {
257
+ RegCloseKey(hKey);
258
+ throw SyscallException(__FILE__, __LINE__, GetLastError());
259
+ }
260
+
261
+ //
262
+ // The event resources are bundled into this DLL, therefore
263
+ // the "EventMessageFile" key should contain the path to this
264
+ // DLL.
265
+ //
266
+ err = RegSetValueExW(hKey, L"EventMessageFile", 0, REG_EXPAND_SZ, reinterpret_cast<unsigned char*>(path),
267
+ static_cast<DWORD>((wcslen(path) * sizeof(wchar_t)) + 1));
268
+
269
+ if(err == ERROR_SUCCESS)
270
+ {
271
+ //
272
+ // The "TypesSupported" key indicates the supported event
273
+ // types.
274
+ //
275
+ DWORD typesSupported = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE;
276
+ err = RegSetValueExW(hKey, L"TypesSupported", 0, REG_DWORD,
277
+ reinterpret_cast<unsigned char*>(&typesSupported), sizeof(typesSupported));
278
+ }
279
+ if(err != ERROR_SUCCESS)
280
+ {
281
+ RegCloseKey(hKey);
282
+ throw SyscallException(__FILE__, __LINE__, err);
283
+ }
284
+
285
+ RegCloseKey(hKey);
286
+ }
287
+
288
+ static void
289
+ removeKeys(const string& source, const StringConverterPtr& stringConverter)
290
+ {
291
+ //
292
+ // Don't need to use a wide string converter as the wide string is passed
293
+ // to Windows API.
294
+ //
295
+ LONG err = RegDeleteKeyW(HKEY_LOCAL_MACHINE,
296
+ stringToWstring(createKey(source), stringConverter).c_str());
297
+ if(err != ERROR_SUCCESS)
298
+ {
299
+ throw SyscallException(__FILE__, __LINE__, err);
300
+ }
301
+ }
302
+
303
+ virtual void
304
+ print(const string& prefix, const string& message)
305
+ {
306
+ string s;
307
+ if(!prefix.empty())
308
+ {
309
+ s = prefix;
310
+ s.append(": ");
311
+ }
312
+ s.append(message);
313
+ print(s);
314
+ }
315
+
316
+ void
317
+ print(const string& message)
318
+ {
319
+ //
320
+ // Don't need to use a wide string converter as the wide string is passed
321
+ // to Windows API.
322
+ //
323
+ const wstring msg = stringToWstring(message, _stringConverter);
324
+ const wchar_t* messages[1];
325
+ messages[0] = msg.c_str();
326
+ //
327
+ // We ignore any failures from ReportEvent since there isn't
328
+ // anything we can do about it.
329
+ //
330
+ ReportEventW(_source, EVENTLOG_INFORMATION_TYPE, 0, EVENT_LOGGER_MSG, 0, 1, 0, messages, 0);
331
+ }
332
+
333
+ virtual void
334
+ trace(const string& prefix, const string& category, const string& message)
335
+ {
336
+ string s;
337
+ if(!category.empty())
338
+ {
339
+ s = category;
340
+ s.append(": ");
341
+ }
342
+ s.append(message);
343
+ trace(prefix, s);
344
+ }
345
+
346
+ void
347
+ trace(const string& category, const string& message)
348
+ {
349
+ string s;
350
+ if(!category.empty())
351
+ {
352
+ s = category;
353
+ s.append(": ");
354
+ }
355
+ s.append(message);
356
+
357
+ //
358
+ // Don't need to use a wide string converter as the wide string is passed
359
+ // to Windows API.
360
+ //
361
+ wstring msg = stringToWstring(s, _stringConverter);
362
+ const wchar_t* messages[1];
363
+ messages[0] = msg.c_str();
364
+ //
365
+ // We ignore any failures from ReportEvent since there isn't
366
+ // anything we can do about it.
367
+ //
368
+ ReportEventW(_source, EVENTLOG_INFORMATION_TYPE, 0, EVENT_LOGGER_MSG, 0, 1, 0, messages, 0);
369
+ }
370
+
371
+ virtual void
372
+ warning(const string& prefix, const string& message)
373
+ {
374
+ string s;
375
+ if(!prefix.empty())
376
+ {
377
+ s = prefix;
378
+ s.append(": ");
379
+ }
380
+ s.append(message);
381
+ warning(s);
382
+ }
383
+
384
+ void
385
+ warning(const string& message)
386
+ {
387
+ //
388
+ // Don't need to use a wide string converter as the wide string is passed
389
+ // to Windows API.
390
+ //
391
+ wstring msg = stringToWstring(message, _stringConverter);
392
+ const wchar_t* messages[1];
393
+ messages[0] = msg.c_str();
394
+ //
395
+ // We ignore any failures from ReportEvent since there isn't
396
+ // anything we can do about it.
397
+ //
398
+ ReportEventW(_source, EVENTLOG_WARNING_TYPE, 0, EVENT_LOGGER_MSG, 0, 1, 0, messages, 0);
399
+ }
400
+
401
+ virtual void
402
+ error(const string& prefix, const string& message)
403
+ {
404
+ string s;
405
+ if(!prefix.empty())
406
+ {
407
+ s = prefix;
408
+ s.append(": ");
409
+ }
410
+ s.append(message);
411
+ error(s);
412
+ }
413
+
414
+ void
415
+ error(const string& message)
416
+ {
417
+ //
418
+ // Don't need to use a wide string converter as the wide string is passed
419
+ // to Windows API.
420
+ //
421
+ wstring msg = stringToWstring(message, _stringConverter);
422
+ const wchar_t* messages[1];
423
+ messages[0] = msg.c_str();
424
+ //
425
+ // We ignore any failures from ReportEvent since there isn't
426
+ // anything we can do about it.
427
+ //
428
+ ReportEventW(_source, EVENTLOG_ERROR_TYPE, 0, EVENT_LOGGER_MSG, 0, 1, 0, messages, 0);
429
+ }
430
+
431
+ static void
432
+ setModuleHandle(HMODULE module)
433
+ {
434
+ _module = module;
435
+ }
436
+
437
+ private:
438
+
439
+ static string
440
+ mangleSource(string name)
441
+ {
442
+ //
443
+ // The source name cannot contain backslashes.
444
+ //
445
+ string::size_type pos = 0;
446
+ while((pos = name.find('\\', pos)) != string::npos)
447
+ {
448
+ name[pos] = '/';
449
+ }
450
+ return name;
451
+ }
452
+
453
+ static string
454
+ createKey(string name)
455
+ {
456
+ //
457
+ // The registry key is:
458
+ //
459
+ // HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application.
460
+ //
461
+ return "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\" + mangleSource(name);
462
+ }
463
+
464
+ StringConverterPtr _stringConverter;
465
+ HANDLE _source;
466
+ static HMODULE _module;
467
+ };
468
+
469
+ HMODULE SMEventLoggerI::_module = 0;
470
+
471
+ }
472
+
473
+ #endif
474
+
475
+ Ice::Service::Service()
476
+ {
477
+ assert(_instance == 0);
478
+ _nohup = true;
479
+ _service = false;
480
+ _instance = this;
481
+ #ifndef _WIN32
482
+ _changeDirectory = true;
483
+ _closeFiles = true;
484
+ #endif
485
+ }
486
+
487
+ Ice::Service::~Service()
488
+ {
489
+ _instance = 0;
490
+ delete _ctrlCHandler;
491
+ }
492
+
493
+ bool
494
+ Ice::Service::shutdown()
495
+ {
496
+ if(_communicator)
497
+ {
498
+ try
499
+ {
500
+ _communicator->shutdown();
501
+ }
502
+ catch(const CommunicatorDestroyedException&)
503
+ {
504
+ //
505
+ // Expected if the service communicator is being destroyed.
506
+ //
507
+ }
508
+ catch(const Ice::Exception& ex)
509
+ {
510
+ ServiceWarning warn(this);
511
+ warn << "exception during shutdown:\n" << ex;
512
+ }
513
+ catch(const std::exception& ex)
514
+ {
515
+ ServiceWarning warn(this);
516
+ warn << "exception during shutdown:\n" << ex;
517
+ }
518
+ catch(...)
519
+ {
520
+ warning("unknown exception during shutdown");
521
+ }
522
+ }
523
+ return true;
524
+ }
525
+
526
+ void
527
+ Ice::Service::interrupt()
528
+ {
529
+ shutdown();
530
+ }
531
+
532
+ int
533
+ Ice::Service::main(int argc, const char* const argv[], const InitializationData& initializationData, int version)
534
+ {
535
+ _name = "";
536
+ if(argc > 0)
537
+ {
538
+ _name = argv[0];
539
+ }
540
+
541
+ IceInternal::ArgVector av(argc, argv); // copy args
542
+
543
+ //
544
+ // We parse the properties here to extract Ice.ProgramName and
545
+ // Ice.EventLog.Source on Windows.
546
+ //
547
+ InitializationData initData = initializationData;
548
+ try
549
+ {
550
+ initData.properties = createProperties(av.argc, av.argv, initData.properties);
551
+ }
552
+ catch(const Ice::Exception& ex)
553
+ {
554
+ ServiceError err(this);
555
+ err << "createProperties failed: " << ex;
556
+ return EXIT_FAILURE;
557
+ }
558
+
559
+ #ifdef _WIN32
560
+
561
+ //
562
+ // First check for the --service option.
563
+ //
564
+ string name;
565
+ int idx = 1;
566
+ const StringConverterPtr stringConverter = getProcessStringConverter();
567
+ while(idx < av.argc)
568
+ {
569
+ if(strcmp(av.argv[idx], "--service") == 0)
570
+ {
571
+ if(idx + 1 >= av.argc)
572
+ {
573
+ error("service name argument expected for `" + string(av.argv[idx]) + "'");
574
+ return EXIT_FAILURE;
575
+ }
576
+
577
+ name = av.argv[idx + 1];
578
+
579
+ //
580
+ // If the process logger is the default logger then we use
581
+ // our own logger.
582
+ //
583
+ _logger = getProcessLogger();
584
+ if(ICE_DYNAMIC_CAST(LoggerI, _logger))
585
+ {
586
+ string eventLogSource = initData.properties->getPropertyWithDefault("Ice.EventLog.Source", name);
587
+ _logger = ICE_MAKE_SHARED(SMEventLoggerIWrapper, new SMEventLoggerI(eventLogSource, stringConverter), "");
588
+ setProcessLogger(_logger);
589
+ }
590
+
591
+ for(int i = idx; i + 2 < av.argc; ++i)
592
+ {
593
+ av.argv[i] = av.argv[i + 2];
594
+ }
595
+ av.argc -= 2;
596
+ }
597
+ else
598
+ {
599
+ ++idx;
600
+ }
601
+ }
602
+
603
+ if(!name.empty())
604
+ {
605
+ configureService(name);
606
+ }
607
+ #else
608
+ //
609
+ // Check for --daemon, --noclose, --nochdir and --pidfile.
610
+ //
611
+
612
+ bool daemonize = false;
613
+ bool closeFiles = true;
614
+ bool changeDirectory = true;
615
+ string pidFile;
616
+ int idx = 1;
617
+ while(idx < av.argc)
618
+ {
619
+ if(strcmp(av.argv[idx], "--daemon") == 0)
620
+ {
621
+ for(int i = idx; i + 1 < av.argc; ++i)
622
+ {
623
+ av.argv[i] = av.argv[i + 1];
624
+ }
625
+ av.argc -= 1;
626
+
627
+ daemonize = true;
628
+ }
629
+ else if(strcmp(av.argv[idx], "--noclose") == 0)
630
+ {
631
+ for(int i = idx; i + 1 < av.argc; ++i)
632
+ {
633
+ av.argv[i] = av.argv[i + 1];
634
+ }
635
+ av.argc -= 1;
636
+
637
+ closeFiles = false;
638
+ }
639
+ else if(strcmp(av.argv[idx], "--nochdir") == 0)
640
+ {
641
+ for(int i = idx; i + 1 < av.argc; ++i)
642
+ {
643
+ av.argv[i] = av.argv[i + 1];
644
+ }
645
+ av.argc -= 1;
646
+
647
+ changeDirectory = false;
648
+ }
649
+ else if(strcmp(av.argv[idx], "--pidfile") == 0)
650
+ {
651
+ if(idx + 1 < av.argc)
652
+ {
653
+ pidFile = av.argv[idx + 1];
654
+ }
655
+ else
656
+ {
657
+ if(av.argv[0])
658
+ {
659
+ consoleErr << av.argv[0] << ": ";
660
+ }
661
+ consoleErr << "--pidfile must be followed by an argument" << endl;
662
+ return EXIT_FAILURE;
663
+ }
664
+
665
+ for(int i = idx; i + 2 < av.argc; ++i)
666
+ {
667
+ av.argv[i] = av.argv[i + 2];
668
+ }
669
+ av.argc -= 2;
670
+ }
671
+ else
672
+ {
673
+ ++idx;
674
+ }
675
+ }
676
+
677
+ if(!closeFiles && !daemonize)
678
+ {
679
+ if(av.argv[0])
680
+ {
681
+ consoleErr << av.argv[0] << ": ";
682
+ }
683
+ consoleErr << "--noclose must be used with --daemon" << endl;
684
+ return EXIT_FAILURE;
685
+ }
686
+
687
+ if(pidFile.size() > 0 && !daemonize)
688
+ {
689
+ if(av.argv[0])
690
+ {
691
+ consoleErr << av.argv[0] << ": ";
692
+ }
693
+ consoleErr << "--pidfile <file> must be used with --daemon" << endl;
694
+ return EXIT_FAILURE;
695
+ }
696
+
697
+ if(daemonize)
698
+ {
699
+ configureDaemon(changeDirectory, closeFiles, pidFile);
700
+ }
701
+ #endif
702
+
703
+ //
704
+ // If no logger has been set yet, we set it to the process logger. If the
705
+ // process logger is the default logger, we change it to a logger which is
706
+ // using the program name for the prefix.
707
+ //
708
+ if(!_logger)
709
+ {
710
+ _logger = getProcessLogger();
711
+ if(ICE_DYNAMIC_CAST(LoggerI, _logger))
712
+ {
713
+ const bool convert =
714
+ initData.properties->getPropertyAsIntWithDefault("Ice.LogStdErr.Convert", 1) > 0 &&
715
+ initData.properties->getProperty("Ice.StdErr").empty();
716
+
717
+ _logger = ICE_MAKE_SHARED(LoggerI, initData.properties->getProperty("Ice.ProgramName"), "", convert);
718
+ setProcessLogger(_logger);
719
+ }
720
+ }
721
+
722
+ return run(av.argc, av.argv, initData, version);
723
+ }
724
+
725
+ #ifdef _WIN32
726
+ int
727
+ Ice::Service::main(int argc, const wchar_t* const argv[], const InitializationData& initializationData, int version)
728
+ {
729
+ return main(Ice::argsToStringSeq(argc, argv), initializationData, version);
730
+ }
731
+ #endif
732
+
733
+ int
734
+ Ice::Service::main(const StringSeq& args, const InitializationData& initData, int version)
735
+ {
736
+ IceInternal::ArgVector av(args);
737
+ return main(av.argc, av.argv, initData, version);
738
+ }
739
+
740
+ Ice::CommunicatorPtr
741
+ Ice::Service::communicator() const
742
+ {
743
+ return _communicator;
744
+ }
745
+
746
+ Ice::Service*
747
+ Ice::Service::instance()
748
+ {
749
+ return _instance;
750
+ }
751
+
752
+ bool
753
+ Ice::Service::service() const
754
+ {
755
+ return _service;
756
+ }
757
+
758
+ string
759
+ Ice::Service::name() const
760
+ {
761
+ return _name;
762
+ }
763
+
764
+ #ifdef _WIN32
765
+ int
766
+ Ice::Service::run(int argc, const wchar_t* const argv[], const InitializationData& initData, int version)
767
+ {
768
+ StringSeq args = Ice::argsToStringSeq(argc, argv);
769
+ IceInternal::ArgVector av(args);
770
+ return run(av.argc, av.argv, initData, version);
771
+ }
772
+ #endif
773
+
774
+ int
775
+ Ice::Service::run(int argc, const char* const argv[], const InitializationData& initData, int version)
776
+ {
777
+ IceInternal::ArgVector av(argc, argv); // copy args
778
+
779
+ if(_service)
780
+ {
781
+ #ifdef _WIN32
782
+ return runService(av.argc, av.argv, initData);
783
+ #else
784
+ return runDaemon(av.argc, av.argv, initData, version);
785
+ #endif
786
+ }
787
+
788
+ //
789
+ // Run as a foreground process.
790
+ //
791
+ int status = EXIT_FAILURE;
792
+ try
793
+ {
794
+ //
795
+ // Create the CtrlCHandler after any potential forking so that signals
796
+ // are initialized properly. We do this before initializing the
797
+ // communicator because we need to ensure that this is done before any
798
+ // additional threads are created.
799
+ //
800
+ _ctrlCHandler = new IceUtil::CtrlCHandler;
801
+
802
+ //
803
+ // Initialize the communicator.
804
+ //
805
+ _communicator = initializeCommunicator(av.argc, av.argv, initData, version);
806
+
807
+ //
808
+ // Use the configured logger.
809
+ //
810
+ _logger = _communicator->getLogger();
811
+
812
+ //
813
+ // Determines whether we ignore SIGHUP/CTRL_LOGOFF_EVENT.
814
+ //
815
+ _nohup = _communicator->getProperties()->getPropertyAsIntWithDefault("Ice.Nohup", 1) > 0;
816
+
817
+ //
818
+ // Start the service.
819
+ //
820
+ if(start(av.argc, av.argv, status))
821
+ {
822
+ #ifdef ICE_USE_SYSTEMD
823
+ sd_notify(0, "READY=1");
824
+ #endif
825
+ //
826
+ // Wait for service shutdown.
827
+ //
828
+ waitForShutdown();
829
+
830
+ #ifdef ICE_USE_SYSTEMD
831
+ //
832
+ // Inform the service manager that the service is beginning its shutdown.
833
+ //
834
+ sd_notify(0, "STOPPING=1");
835
+ #endif
836
+ //
837
+ // Stop the service.
838
+ //
839
+ if(stop())
840
+ {
841
+ status = EXIT_SUCCESS;
842
+ }
843
+ }
844
+ }
845
+ catch(const Ice::Exception& ex)
846
+ {
847
+ ServiceError err(this);
848
+ err << "service terminating after catching exception:\n" << ex;
849
+ #ifdef ICE_USE_SYSTEMD
850
+ const string msg = err.str();
851
+ sd_notifyf(0, "STATUS=Failed service terminating after catching exception: %s", msg.c_str());
852
+ #endif
853
+ }
854
+ catch(const std::exception& ex)
855
+ {
856
+ ServiceError err(this);
857
+ err << "service terminating after catching exception:\n" << ex;
858
+ #ifdef ICE_USE_SYSTEMD
859
+ const string msg = err.str();
860
+ sd_notifyf(0, "STATUS=Failed service terminating after catching exception: %s", msg.c_str());
861
+ #endif
862
+ }
863
+ catch(const std::string& msg)
864
+ {
865
+ ServiceError err(this);
866
+ err << "service terminating after catching exception:\n" << msg;
867
+ #ifdef ICE_USE_SYSTEMD
868
+ sd_notifyf(0, "STATUS=Failed service terminating after catching exception: %s", msg.c_str());
869
+ #endif
870
+ }
871
+ catch(const char* msg)
872
+ {
873
+ ServiceError err(this);
874
+ err << "service terminating after catching exception:\n" << msg;
875
+ #ifdef ICE_USE_SYSTEMD
876
+ sd_notifyf(0, "STATUS=Failed service terminating after catching exception: %s", msg);
877
+ #endif
878
+ }
879
+ catch(...)
880
+ {
881
+ error("service terminating after catching unknown exception");
882
+ #ifdef ICE_USE_SYSTEMD
883
+ sd_notify(0, "STATUS=Failed service terminating after catching unknown exception");
884
+ #endif
885
+ }
886
+
887
+ if(_communicator)
888
+ {
889
+ _communicator->destroy();
890
+ }
891
+
892
+ return status;
893
+ }
894
+
895
+ #ifdef _WIN32
896
+
897
+ void
898
+ Ice::Service::configureService(const string& name)
899
+ {
900
+ _service = true;
901
+ _name = name;
902
+ }
903
+
904
+ void
905
+ Ice::Service::setModuleHandle(HMODULE module)
906
+ {
907
+ SMEventLoggerI::setModuleHandle(module);
908
+ }
909
+
910
+ #else
911
+
912
+ void
913
+ Ice::Service::configureDaemon(bool changeDirectory, bool closeFiles, const string& pidFile)
914
+ {
915
+ _service = true;
916
+ _changeDirectory = changeDirectory;
917
+ _closeFiles = closeFiles;
918
+ _pidFile = pidFile;
919
+ }
920
+
921
+ #endif
922
+
923
+ void
924
+ Ice::Service::handleInterrupt(int sig)
925
+ {
926
+ #ifdef _WIN32
927
+ if(_nohup && sig == CTRL_LOGOFF_EVENT)
928
+ {
929
+ return;
930
+ }
931
+ #else
932
+ if(_nohup && sig == SIGHUP)
933
+ {
934
+ return;
935
+ }
936
+ #endif
937
+
938
+ interrupt();
939
+ }
940
+
941
+ void
942
+ Ice::Service::waitForShutdown()
943
+ {
944
+ if(_communicator)
945
+ {
946
+ enableInterrupt();
947
+ _communicator->waitForShutdown();
948
+ disableInterrupt();
949
+ }
950
+ }
951
+
952
+ bool
953
+ Ice::Service::stop()
954
+ {
955
+ return true;
956
+ }
957
+
958
+ Ice::CommunicatorPtr
959
+ Ice::Service::initializeCommunicator(int& argc, char* argv[], const InitializationData& initData, int version)
960
+ {
961
+ return Ice::initialize(argc, argv, initData, version);
962
+ }
963
+
964
+ void
965
+ Ice::Service::syserror(const string& msg)
966
+ {
967
+ string errmsg = IceUtilInternal::lastErrorToString();
968
+ if(_logger)
969
+ {
970
+ ostringstream ostr;
971
+ if(!msg.empty())
972
+ {
973
+ ostr << msg << endl;
974
+ }
975
+ if(!errmsg.empty())
976
+ {
977
+ ostr << errmsg;
978
+ }
979
+ _logger->error(ostr.str());
980
+ }
981
+ else
982
+ {
983
+ if(!_name.empty())
984
+ {
985
+ consoleErr << _name << ": ";
986
+ }
987
+ if(!msg.empty())
988
+ {
989
+ consoleErr << msg << endl;
990
+ }
991
+ if(!errmsg.empty())
992
+ {
993
+ consoleErr << errmsg;
994
+ }
995
+ }
996
+ }
997
+
998
+ void
999
+ Ice::Service::error(const string& msg)
1000
+ {
1001
+ if(_logger)
1002
+ {
1003
+ _logger->error(msg);
1004
+ }
1005
+ else
1006
+ {
1007
+ if(!_name.empty())
1008
+ {
1009
+ consoleErr << _name << ": ";
1010
+ }
1011
+ consoleErr << "error: " << msg << endl;
1012
+ }
1013
+ }
1014
+
1015
+ void
1016
+ Ice::Service::warning(const string& msg)
1017
+ {
1018
+ if(_logger)
1019
+ {
1020
+ _logger->warning(msg);
1021
+ }
1022
+ else
1023
+ {
1024
+ if(!_name.empty())
1025
+ {
1026
+ consoleErr << _name << ": ";
1027
+ }
1028
+ consoleErr << "warning: " << msg << endl;
1029
+ }
1030
+ }
1031
+
1032
+ void
1033
+ Ice::Service::trace(const string& msg)
1034
+ {
1035
+ if(_logger)
1036
+ {
1037
+ _logger->trace("", msg);
1038
+ }
1039
+ else
1040
+ {
1041
+ consoleErr << msg << endl;
1042
+ }
1043
+ }
1044
+
1045
+ void
1046
+ Ice::Service::print(const string& msg)
1047
+ {
1048
+ if(_logger)
1049
+ {
1050
+ _logger->print(msg);
1051
+ }
1052
+ else
1053
+ {
1054
+ consoleErr << msg << endl;
1055
+ }
1056
+ }
1057
+
1058
+ void
1059
+ Ice::Service::enableInterrupt()
1060
+ {
1061
+ _ctrlCHandler->setCallback(ctrlCHandlerCallback);
1062
+ }
1063
+
1064
+ void
1065
+ Ice::Service::disableInterrupt()
1066
+ {
1067
+ _ctrlCHandler->setCallback(0);
1068
+ }
1069
+
1070
+ #ifdef _WIN32
1071
+
1072
+ int
1073
+ Ice::Service::runService(int argc, const char* const argv[], const InitializationData& initData)
1074
+ {
1075
+ assert(_service);
1076
+
1077
+ if(_name.empty())
1078
+ {
1079
+ error("invalid name for Win32 service");
1080
+ return EXIT_FAILURE;
1081
+ }
1082
+
1083
+ //
1084
+ // Arguments passed to the executable are not passed to the service's main function,
1085
+ // so save them now and serviceMain will merge them later.
1086
+ //
1087
+ for(int idx = 1; idx < argc; ++idx)
1088
+ {
1089
+ _serviceArgs.push_back(argv[idx]);
1090
+ }
1091
+
1092
+ _initData = initData;
1093
+
1094
+ //
1095
+ // Don't need to use a wide string converter as the wide string is passed
1096
+ // to Windows API.
1097
+ //
1098
+ const wstring serviceName = stringToWstring(_name, getProcessStringConverter());
1099
+ SERVICE_TABLE_ENTRYW ste[] =
1100
+ {
1101
+ { const_cast<wchar_t*>(serviceName.c_str()), Ice_Service_ServiceMain },
1102
+ { 0, 0 },
1103
+ };
1104
+
1105
+ //
1106
+ // Start the service.
1107
+ //
1108
+ if(!StartServiceCtrlDispatcherW(ste))
1109
+ {
1110
+ syserror("unable to start service control dispatcher");
1111
+ return EXIT_FAILURE;
1112
+ }
1113
+
1114
+ return EXIT_SUCCESS;
1115
+ }
1116
+
1117
+ void
1118
+ Ice::Service::terminateService(DWORD exitCode)
1119
+ {
1120
+ serviceStatusManager->stopUpdate();
1121
+ delete serviceStatusManager;
1122
+ serviceStatusManager = 0;
1123
+
1124
+ SERVICE_STATUS status;
1125
+
1126
+ status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
1127
+ status.dwCurrentState = SERVICE_STOPPED;
1128
+ status.dwControlsAccepted = 0;
1129
+ if(exitCode != 0)
1130
+ {
1131
+ status.dwWin32ExitCode = ERROR_SERVICE_SPECIFIC_ERROR;
1132
+ }
1133
+ else
1134
+ {
1135
+ status.dwWin32ExitCode = 0;
1136
+ }
1137
+ status.dwServiceSpecificExitCode = exitCode;
1138
+ status.dwCheckPoint = 0;
1139
+ status.dwWaitHint = 0;
1140
+
1141
+ SetServiceStatus(_statusHandle, &status);
1142
+ }
1143
+
1144
+ bool
1145
+ Ice::Service::waitForServiceState(SC_HANDLE hService, DWORD pendingState, SERVICE_STATUS& status)
1146
+ {
1147
+ if(!QueryServiceStatus(hService, &status))
1148
+ {
1149
+ return false;
1150
+ }
1151
+
1152
+ //
1153
+ // Save the tick count and initial checkpoint.
1154
+ //
1155
+ DWORD startTickCount = GetTickCount();
1156
+ DWORD oldCheckPoint = status.dwCheckPoint;
1157
+
1158
+ //
1159
+ // Loop while the service is in the pending state.
1160
+ //
1161
+ while(status.dwCurrentState == pendingState)
1162
+ {
1163
+ //
1164
+ // Do not wait longer than the wait hint. A good interval is
1165
+ // one tenth the wait hint, but no less than 1 second and no
1166
+ // more than 10 seconds.
1167
+ //
1168
+
1169
+ DWORD waitTime = status.dwWaitHint / 10;
1170
+
1171
+ if(waitTime < 1000)
1172
+ {
1173
+ waitTime = 1000;
1174
+ }
1175
+ else if(waitTime > 10000)
1176
+ {
1177
+ waitTime = 10000;
1178
+ }
1179
+
1180
+ Sleep(waitTime);
1181
+
1182
+ //
1183
+ // Check the status again.
1184
+ //
1185
+ if(!QueryServiceStatus(hService, &status))
1186
+ {
1187
+ return false;
1188
+ }
1189
+
1190
+ if(status.dwCheckPoint > oldCheckPoint)
1191
+ {
1192
+ //
1193
+ // The service is making progress.
1194
+ //
1195
+ startTickCount = GetTickCount();
1196
+ oldCheckPoint = status.dwCheckPoint;
1197
+ }
1198
+ else
1199
+ {
1200
+ if(GetTickCount() - startTickCount > status.dwWaitHint)
1201
+ {
1202
+ //
1203
+ // No progress made within the wait hint.
1204
+ //
1205
+ break;
1206
+ }
1207
+ }
1208
+ }
1209
+
1210
+ return true;
1211
+ }
1212
+
1213
+ void
1214
+ Ice::Service::showServiceStatus(const string& msg, SERVICE_STATUS& status)
1215
+ {
1216
+ string state;
1217
+ switch(status.dwCurrentState)
1218
+ {
1219
+ case SERVICE_STOPPED:
1220
+ state = "STOPPED";
1221
+ break;
1222
+ case SERVICE_START_PENDING:
1223
+ state = "START PENDING";
1224
+ break;
1225
+ case SERVICE_STOP_PENDING:
1226
+ state = "STOP PENDING";
1227
+ break;
1228
+ case SERVICE_RUNNING:
1229
+ state = "RUNNING";
1230
+ break;
1231
+ case SERVICE_CONTINUE_PENDING:
1232
+ state = "CONTINUE PENDING";
1233
+ break;
1234
+ case SERVICE_PAUSE_PENDING:
1235
+ state = "PAUSE PENDING";
1236
+ break;
1237
+ case SERVICE_PAUSED:
1238
+ state = "PAUSED";
1239
+ break;
1240
+ default:
1241
+ state = "UNKNOWN";
1242
+ break;
1243
+ }
1244
+
1245
+ ServiceTrace tr(this);
1246
+ tr << msg
1247
+ << "\n Current state: " << state
1248
+ << "\n Exit code: " << status.dwWin32ExitCode
1249
+ << "\n Service specific exit code: " << status.dwServiceSpecificExitCode
1250
+ << "\n Check point: " << status.dwCheckPoint
1251
+ << "\n Wait hint: " << status.dwWaitHint;
1252
+ }
1253
+
1254
+ void
1255
+ Ice::Service::serviceMain(int argc, const wchar_t* const argv[])
1256
+ {
1257
+ _ctrlCHandler = new IceUtil::CtrlCHandler;
1258
+
1259
+ //
1260
+ // Register the control handler function.
1261
+ //
1262
+ _statusHandle = RegisterServiceCtrlHandlerW(argv[0], Ice_Service_CtrlHandler);
1263
+ if(_statusHandle == 0)
1264
+ {
1265
+ syserror("unable to register service control handler");
1266
+ return;
1267
+ }
1268
+
1269
+ //
1270
+ // Create the service status manager and start a thread to periodically
1271
+ // update the service's status with the service control manager (SCM).
1272
+ // The SCM must receive periodic updates otherwise it assumes that
1273
+ // initialization failed and terminates the service.
1274
+ //
1275
+ serviceStatusManager = new ServiceStatusManager(_statusHandle);
1276
+ serviceStatusManager->startUpdate(SERVICE_START_PENDING);
1277
+
1278
+ //
1279
+ // Don't need to pass a wide string converter in the argv conversions
1280
+ // as argv come from Windows API.
1281
+ //
1282
+ const IceUtil::StringConverterPtr converter = IceUtil::getProcessStringConverter();
1283
+
1284
+ //
1285
+ // Merge the executable's arguments with the service's arguments.
1286
+ //
1287
+ char** args = new char*[_serviceArgs.size() + argc];
1288
+
1289
+ //
1290
+ // First argument is argv[0] the serviceName
1291
+ //
1292
+ const string serviceName = wstringToString(argv[0], converter);
1293
+ args[0] = const_cast<char*>(serviceName.c_str());
1294
+
1295
+ int i = 1;
1296
+ for(vector<string>::iterator p = _serviceArgs.begin(); p != _serviceArgs.end(); ++p)
1297
+ {
1298
+ args[i++] = const_cast<char*>(p->c_str());
1299
+ }
1300
+
1301
+ //
1302
+ // Convert wide string wchar_t** argv to a sequence of narrow strings and merge
1303
+ // the converted sequence into the args array.
1304
+ //
1305
+ vector<string> executableArgs;
1306
+ for(int j = 1; j < argc; ++j)
1307
+ {
1308
+ executableArgs.push_back(IceUtil::wstringToString(argv[j], converter));
1309
+ }
1310
+ for(vector<string>::iterator p = executableArgs.begin(); p != executableArgs.end(); ++p)
1311
+ {
1312
+ args[i++] = const_cast<char*>(p->c_str());
1313
+ }
1314
+ argc += static_cast<int>(_serviceArgs.size());
1315
+
1316
+ //
1317
+ // If we can't initialize a communicator, then stop immediately.
1318
+ //
1319
+ try
1320
+ {
1321
+ _communicator = initializeCommunicator(argc, args, _initData, ICE_INT_VERSION);
1322
+ }
1323
+ catch(const Ice::Exception& ex)
1324
+ {
1325
+ delete[] args;
1326
+ {
1327
+ ServiceError err(this);
1328
+ err << "exception occurred while initializing a communicator:\n" << ex;
1329
+ }
1330
+ terminateService(EXIT_FAILURE);
1331
+ return;
1332
+ }
1333
+ catch(...)
1334
+ {
1335
+ delete[] args;
1336
+ error("unknown exception occurred while initializing a communicator");
1337
+ terminateService(EXIT_FAILURE);
1338
+ return;
1339
+ }
1340
+
1341
+ //
1342
+ // Use the configured logger.
1343
+ //
1344
+ _logger = _communicator->getLogger();
1345
+
1346
+ //
1347
+ // Determines whether we ignore SIGHUP/CTRL_LOGOFF_EVENT.
1348
+ //
1349
+ _nohup = _communicator->getProperties()->getPropertyAsIntWithDefault("Ice.Nohup", 1) > 0;
1350
+
1351
+ DWORD status = EXIT_FAILURE;
1352
+ try
1353
+ {
1354
+ int tmpStatus = EXIT_FAILURE;
1355
+ if(start(argc, args, tmpStatus))
1356
+ {
1357
+ trace("Service started successfully.");
1358
+
1359
+ //
1360
+ // Change the current status from START_PENDING to RUNNING.
1361
+ //
1362
+ serviceStatusManager->stopUpdate();
1363
+ serviceStatusManager->changeStatus(SERVICE_RUNNING, SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN);
1364
+
1365
+ //
1366
+ // Wait for the service to be shut down.
1367
+ //
1368
+ waitForShutdown();
1369
+
1370
+ //
1371
+ // Give the service a chance to clean up.
1372
+ //
1373
+ if(stop())
1374
+ {
1375
+ status = EXIT_SUCCESS;
1376
+ }
1377
+ }
1378
+ else
1379
+ {
1380
+ status = tmpStatus;
1381
+ }
1382
+ }
1383
+ catch(const Ice::Exception& ex)
1384
+ {
1385
+ ServiceError err(this);
1386
+ err << "service terminating after catching exception:\n" << ex;
1387
+ }
1388
+ catch(const std::exception& ex)
1389
+ {
1390
+ ServiceError err(this);
1391
+ err << "service terminating after catching exception:\n" << ex;
1392
+ }
1393
+ catch(...)
1394
+ {
1395
+ error("service terminating after catching unknown exception");
1396
+ }
1397
+
1398
+ delete[] args;
1399
+
1400
+ assert(_communicator);
1401
+ _communicator->destroy();
1402
+
1403
+ terminateService(status);
1404
+ }
1405
+
1406
+ void
1407
+ Ice::Service::control(int ctrl)
1408
+ {
1409
+ assert(serviceStatusManager);
1410
+
1411
+ switch(ctrl)
1412
+ {
1413
+ case SERVICE_CONTROL_SHUTDOWN:
1414
+ case SERVICE_CONTROL_STOP:
1415
+ {
1416
+ serviceStatusManager->startUpdate(SERVICE_STOP_PENDING);
1417
+ shutdown();
1418
+ break;
1419
+ }
1420
+ default:
1421
+ {
1422
+ if(ctrl != SERVICE_CONTROL_INTERROGATE)
1423
+ {
1424
+ ServiceError err(this);
1425
+ err << "unrecognized service control code " << ctrl;
1426
+ }
1427
+
1428
+ serviceStatusManager->reportStatus();
1429
+ break;
1430
+ }
1431
+ }
1432
+ }
1433
+
1434
+ ServiceStatusManager::ServiceStatusManager(SERVICE_STATUS_HANDLE handle) :
1435
+ _handle(handle), _stopped(false)
1436
+ {
1437
+ _status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
1438
+ _status.dwControlsAccepted = 0;
1439
+ _status.dwWin32ExitCode = 0;
1440
+ _status.dwServiceSpecificExitCode = 0;
1441
+ _status.dwCheckPoint = 0;
1442
+ _status.dwWaitHint = 0;
1443
+ }
1444
+
1445
+ void
1446
+ ServiceStatusManager::startUpdate(DWORD state)
1447
+ {
1448
+ Lock sync(*this);
1449
+
1450
+ assert(state == SERVICE_START_PENDING || state == SERVICE_STOP_PENDING);
1451
+ assert(!_thread);
1452
+
1453
+ _status.dwCurrentState = state;
1454
+ _status.dwControlsAccepted = 0; // Don't accept any other control messages while pending.
1455
+
1456
+ _stopped = false;
1457
+
1458
+ _thread = new StatusThread(this);
1459
+ _thread->start();
1460
+ }
1461
+
1462
+ void
1463
+ ServiceStatusManager::stopUpdate()
1464
+ {
1465
+ IceUtil::ThreadPtr thread;
1466
+
1467
+ {
1468
+ Lock sync(*this);
1469
+
1470
+ if(_thread)
1471
+ {
1472
+ _stopped = true;
1473
+ notify();
1474
+ thread = _thread;
1475
+ _thread = 0;
1476
+ }
1477
+ }
1478
+
1479
+ if(thread)
1480
+ {
1481
+ thread->getThreadControl().join();
1482
+ }
1483
+ }
1484
+
1485
+ void
1486
+ ServiceStatusManager::changeStatus(DWORD state, DWORD controlsAccepted)
1487
+ {
1488
+ Lock sync(*this);
1489
+
1490
+ _status.dwCurrentState = state;
1491
+ _status.dwControlsAccepted = controlsAccepted;
1492
+
1493
+ SetServiceStatus(_handle, &_status);
1494
+ }
1495
+
1496
+ void
1497
+ ServiceStatusManager::reportStatus()
1498
+ {
1499
+ Lock sync(*this);
1500
+
1501
+ SetServiceStatus(_handle, &_status);
1502
+ }
1503
+
1504
+ void
1505
+ ServiceStatusManager::run()
1506
+ {
1507
+ Lock sync(*this);
1508
+
1509
+ IceUtil::Time delay = IceUtil::Time::milliSeconds(1000);
1510
+ _status.dwWaitHint = 2000;
1511
+ _status.dwCheckPoint = 0;
1512
+
1513
+ while(!_stopped)
1514
+ {
1515
+ _status.dwCheckPoint++;
1516
+ SetServiceStatus(_handle, &_status);
1517
+ timedWait(delay);
1518
+ }
1519
+ }
1520
+
1521
+ #else
1522
+
1523
+ int
1524
+ Ice::Service::runDaemon(int argc, char* argv[], const InitializationData& initData, int version)
1525
+ {
1526
+ assert(_service);
1527
+
1528
+ //
1529
+ // Create a pipe that is used to notify the parent when the child is ready.
1530
+ //
1531
+ SOCKET fds[2];
1532
+ IceInternal::createPipe(fds);
1533
+
1534
+ //
1535
+ // Fork the child.
1536
+ //
1537
+ pid_t pid = fork();
1538
+ if(pid < 0)
1539
+ {
1540
+ if(argv[0])
1541
+ {
1542
+ consoleErr << argv[0] << ": ";
1543
+ }
1544
+ consoleErr << IceUtilInternal::errorToString(errno) << endl;
1545
+ return EXIT_FAILURE;
1546
+ }
1547
+
1548
+ if(pid != 0)
1549
+ {
1550
+ //
1551
+ // Parent process.
1552
+ //
1553
+
1554
+ //
1555
+ // Close an unused end of the pipe.
1556
+ //
1557
+ close(fds[1]);
1558
+
1559
+ //
1560
+ // Wait for the child to write a byte to the pipe to indicate that it
1561
+ // is ready to receive requests, or that an error occurred.
1562
+ //
1563
+ char c = 0;
1564
+ while(true)
1565
+ {
1566
+ if(read(fds[0], &c, 1) == -1)
1567
+ {
1568
+ if(IceInternal::interrupted())
1569
+ {
1570
+ continue;
1571
+ }
1572
+
1573
+ if(argv[0])
1574
+ {
1575
+ consoleErr << argv[0] << ": ";
1576
+ }
1577
+ consoleErr << IceUtilInternal::errorToString(errno) << endl;
1578
+ _exit(EXIT_FAILURE);
1579
+ }
1580
+ break;
1581
+ }
1582
+
1583
+ if(c != 0)
1584
+ {
1585
+ //
1586
+ // Read an error message.
1587
+ //
1588
+ ssize_t rs;
1589
+ char s[16];
1590
+ string message;
1591
+ while((rs = read(fds[0], &s, 16)) > 0)
1592
+ {
1593
+ message.append(s, static_cast<size_t>(rs));
1594
+ }
1595
+
1596
+ if(argv[0])
1597
+ {
1598
+ consoleErr << argv[0] << ": ";
1599
+ }
1600
+
1601
+ if(rs == -1)
1602
+ {
1603
+ consoleErr << "I/O error while reading error message from child:\n" << IceUtilInternal::errorToString(errno);
1604
+ }
1605
+ else
1606
+ {
1607
+ consoleErr << "failure occurred in daemon";
1608
+ if(!message.empty())
1609
+ {
1610
+ consoleErr << ":\n" << message;
1611
+ }
1612
+ }
1613
+ consoleErr << endl;
1614
+ _exit(EXIT_FAILURE);
1615
+ }
1616
+
1617
+ _exit(EXIT_SUCCESS);
1618
+ }
1619
+
1620
+ //
1621
+ // Child process.
1622
+ //
1623
+
1624
+ string errMsg;
1625
+ int status = EXIT_FAILURE;
1626
+ try
1627
+ {
1628
+ //
1629
+ // Become a session and process group leader.
1630
+ //
1631
+ if(setsid() == -1)
1632
+ {
1633
+ throw SyscallException(__FILE__, __LINE__, IceInternal::getSystemErrno());
1634
+ }
1635
+
1636
+ //
1637
+ // Ignore SIGHUP so that the grandchild process is not sent SIGHUP when this
1638
+ // process exits.
1639
+ //
1640
+ signal(SIGHUP, SIG_IGN);
1641
+
1642
+ //
1643
+ // Fork again to eliminate the possibility of acquiring a controlling terminal.
1644
+ //
1645
+ pid = fork();
1646
+ if(pid < 0)
1647
+ {
1648
+ throw SyscallException(__FILE__, __LINE__, IceInternal::getSystemErrno());
1649
+ }
1650
+ if(pid != 0)
1651
+ {
1652
+ exit(0);
1653
+ }
1654
+
1655
+ if(_changeDirectory)
1656
+ {
1657
+ //
1658
+ // Change the working directory.
1659
+ //
1660
+ if(chdir("/") != 0)
1661
+ {
1662
+ throw SyscallException(__FILE__, __LINE__, IceInternal::getSystemErrno());
1663
+ }
1664
+ }
1665
+
1666
+ vector<int> fdsToClose;
1667
+ if(_closeFiles)
1668
+ {
1669
+ //
1670
+ // Take a snapshot of the open file descriptors. We don't actually close these
1671
+ // descriptors until after the communicator is initialized, so that plug-ins
1672
+ // have an opportunity to use stdin/stdout/stderr if necessary. This also
1673
+ // conveniently allows the Ice.PrintProcessId property to work as expected.
1674
+ //
1675
+ int fdMax = static_cast<int>(sysconf(_SC_OPEN_MAX));
1676
+ if(fdMax <= 0)
1677
+ {
1678
+ throw SyscallException(__FILE__, __LINE__, IceInternal::getSystemErrno());
1679
+ }
1680
+
1681
+ for(int i = 0; i < fdMax; ++i)
1682
+ {
1683
+ if(fcntl(i, F_GETFL) != -1)
1684
+ {
1685
+ //
1686
+ // Don't close the write end of the pipe.
1687
+ //
1688
+ if(i != fds[1])
1689
+ {
1690
+ fdsToClose.push_back(i);
1691
+ }
1692
+ }
1693
+ }
1694
+ }
1695
+
1696
+ //
1697
+ // Create the CtrlCHandler after forking the child so that signals are initialized
1698
+ // properly. We do this before initializing the communicator because we need to
1699
+ // ensure that signals are initialized before additional threads are created. The
1700
+ // communicator thread pools currently use lazy initialization, but a thread can
1701
+ // be created to monitor connections.
1702
+ //
1703
+ _ctrlCHandler = new IceUtil::CtrlCHandler;
1704
+
1705
+ //
1706
+ // Initialize the communicator.
1707
+ //
1708
+ _communicator = initializeCommunicator(argc, argv, initData, version);
1709
+
1710
+ if(_closeFiles)
1711
+ {
1712
+ //
1713
+ // Close unnecessary file descriptors.
1714
+ //
1715
+ PropertiesPtr properties = _communicator->getProperties();
1716
+ string stdOut = properties->getProperty("Ice.StdOut");
1717
+ string stdErr = properties->getProperty("Ice.StdErr");
1718
+
1719
+ for(vector<int>::const_iterator p = fdsToClose.begin(); p != fdsToClose.end(); ++p)
1720
+ {
1721
+ //
1722
+ // NOTE: Do not close stdout if Ice.StdOut is defined. Likewise for Ice.StdErr.
1723
+ //
1724
+ if((*p == 1 && !stdOut.empty()) || (*p == 2 && !stdErr.empty()))
1725
+ {
1726
+ continue;
1727
+ }
1728
+ close(*p);
1729
+ }
1730
+
1731
+ //
1732
+ // Associate stdin, stdout and stderr with /dev/null.
1733
+ //
1734
+ int fd = open("/dev/null", O_RDWR);
1735
+ assert(fd == 0);
1736
+ if(fd != 0)
1737
+ {
1738
+ throw SyscallException(__FILE__, __LINE__, IceInternal::getSystemErrno());
1739
+ }
1740
+ if(stdOut.empty())
1741
+ {
1742
+ fd = dup2(0, 1);
1743
+ assert(fd == 1);
1744
+ if(fd != 1)
1745
+ {
1746
+ throw SyscallException(__FILE__, __LINE__, IceInternal::getSystemErrno());
1747
+ }
1748
+ }
1749
+ if(stdErr.empty())
1750
+ {
1751
+ fd = dup2(1, 2);
1752
+ assert(fd == 2);
1753
+ if(fd != 2)
1754
+ {
1755
+ throw SyscallException(__FILE__, __LINE__, IceInternal::getSystemErrno());
1756
+ }
1757
+ }
1758
+ }
1759
+
1760
+ //
1761
+ // Write PID
1762
+ //
1763
+ if(_pidFile.size() > 0)
1764
+ {
1765
+ ofstream of(_pidFile.c_str());
1766
+ of << getpid() << endl;
1767
+
1768
+ if(!of)
1769
+ {
1770
+ warning("Could not write PID file " + _pidFile);
1771
+ }
1772
+ }
1773
+
1774
+ //
1775
+ // Use the configured logger.
1776
+ //
1777
+ _logger = _communicator->getLogger();
1778
+
1779
+ //
1780
+ // Start the service.
1781
+ //
1782
+ if(start(argc, argv, status))
1783
+ {
1784
+ //
1785
+ // Notify the parent that the child is ready.
1786
+ //
1787
+ char c = 0;
1788
+ while(true)
1789
+ {
1790
+ if(write(fds[1], &c, 1) == -1)
1791
+ {
1792
+ if(IceInternal::interrupted())
1793
+ {
1794
+ continue;
1795
+ }
1796
+ }
1797
+ break;
1798
+ }
1799
+ close(fds[1]);
1800
+ fds[1] = -1;
1801
+
1802
+ //
1803
+ // Wait for service shutdown.
1804
+ //
1805
+ waitForShutdown();
1806
+
1807
+ //
1808
+ // Stop the service.
1809
+ //
1810
+ if(stop())
1811
+ {
1812
+ status = EXIT_SUCCESS;
1813
+ }
1814
+ }
1815
+ }
1816
+ catch(const Ice::Exception& ex)
1817
+ {
1818
+ ServiceError err(this);
1819
+ err << "service terminating after catching exception:\n" << ex;
1820
+ errMsg = err.str();
1821
+ }
1822
+ catch(const std::exception& ex)
1823
+ {
1824
+ ServiceError err(this);
1825
+ err << "service terminating after catching exception:\n" << ex;
1826
+ errMsg = err.str();
1827
+ }
1828
+ catch(...)
1829
+ {
1830
+ errMsg = "service terminating after catching unknown exception";
1831
+ error(errMsg);
1832
+ }
1833
+
1834
+ //
1835
+ // If the service failed and the pipe to the parent is still open,
1836
+ // then send an error notification to the parent.
1837
+ //
1838
+ if(status != EXIT_SUCCESS && fds[1] != -1)
1839
+ {
1840
+ char c = 1;
1841
+ while(true)
1842
+ {
1843
+ if(write(fds[1], &c, 1) == -1)
1844
+ {
1845
+ if(IceInternal::interrupted())
1846
+ {
1847
+ continue;
1848
+ }
1849
+ }
1850
+ break;
1851
+ }
1852
+ const char* msg = errMsg.c_str();
1853
+ size_t len = strlen(msg) + 1; // Include null byte
1854
+ size_t pos = 0;
1855
+ while(len > 0)
1856
+ {
1857
+ ssize_t n = write(fds[1], &msg[pos], len);
1858
+ if(n == -1)
1859
+ {
1860
+ if(IceInternal::interrupted())
1861
+ {
1862
+ continue;
1863
+ }
1864
+ else
1865
+ {
1866
+ break;
1867
+ }
1868
+ }
1869
+ len -= static_cast<size_t>(n);
1870
+ pos += static_cast<size_t>(n);
1871
+ }
1872
+ close(fds[1]);
1873
+ }
1874
+
1875
+ if(_communicator)
1876
+ {
1877
+ _communicator->destroy();
1878
+ }
1879
+
1880
+ return status;
1881
+ }
1882
+
1883
+ #endif