zeroc-ice 3.6b1

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 (675) hide show
  1. checksums.yaml +7 -0
  2. data/ICE_LICENSE +54 -0
  3. data/LICENSE +339 -0
  4. data/bin/slice2rb +17 -0
  5. data/ext/Communicator.cpp +596 -0
  6. data/ext/Communicator.h +25 -0
  7. data/ext/Config.h +111 -0
  8. data/ext/Connection.cpp +381 -0
  9. data/ext/Connection.h +26 -0
  10. data/ext/Endpoint.cpp +311 -0
  11. data/ext/Endpoint.h +27 -0
  12. data/ext/ImplicitContext.cpp +152 -0
  13. data/ext/ImplicitContext.h +25 -0
  14. data/ext/Init.cpp +52 -0
  15. data/ext/Logger.cpp +151 -0
  16. data/ext/Logger.h +28 -0
  17. data/ext/ObjectFactory.cpp +140 -0
  18. data/ext/ObjectFactory.h +50 -0
  19. data/ext/Operation.cpp +676 -0
  20. data/ext/Operation.h +36 -0
  21. data/ext/Properties.cpp +369 -0
  22. data/ext/Properties.h +25 -0
  23. data/ext/Proxy.cpp +1354 -0
  24. data/ext/Proxy.h +27 -0
  25. data/ext/Slice.cpp +223 -0
  26. data/ext/Slice.h +22 -0
  27. data/ext/Types.cpp +3160 -0
  28. data/ext/Types.h +545 -0
  29. data/ext/Util.cpp +792 -0
  30. data/ext/Util.h +511 -0
  31. data/ext/extconf.rb +118 -0
  32. data/ext/ice/BZIP_LICENSE +42 -0
  33. data/ext/ice/MCPP_LICENSE +36 -0
  34. data/ext/ice/bzip2/blocksort.c +1094 -0
  35. data/ext/ice/bzip2/bzlib.c +1572 -0
  36. data/ext/ice/bzip2/bzlib.h +282 -0
  37. data/ext/ice/bzip2/bzlib_private.h +509 -0
  38. data/ext/ice/bzip2/compress.c +672 -0
  39. data/ext/ice/bzip2/crctable.c +104 -0
  40. data/ext/ice/bzip2/decompress.c +646 -0
  41. data/ext/ice/bzip2/huffman.c +205 -0
  42. data/ext/ice/bzip2/randtable.c +84 -0
  43. data/ext/ice/cpp/include/Ice/ACMF.h +30 -0
  44. data/ext/ice/cpp/include/Ice/Application.h +156 -0
  45. data/ext/ice/cpp/include/Ice/AsyncResult.h +363 -0
  46. data/ext/ice/cpp/include/Ice/AsyncResultF.h +26 -0
  47. data/ext/ice/cpp/include/Ice/BasicStream.h +1315 -0
  48. data/ext/ice/cpp/include/Ice/Buffer.h +159 -0
  49. data/ext/ice/cpp/include/Ice/BuiltinSequences.h +74 -0
  50. data/ext/ice/cpp/include/Ice/Communicator.h +194 -0
  51. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +115 -0
  52. data/ext/ice/cpp/include/Ice/CommunicatorF.h +60 -0
  53. data/ext/ice/cpp/include/Ice/Config.h +97 -0
  54. data/ext/ice/cpp/include/Ice/Connection.h +495 -0
  55. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +115 -0
  56. data/ext/ice/cpp/include/Ice/ConnectionF.h +72 -0
  57. data/ext/ice/cpp/include/Ice/ConnectionFactoryF.h +30 -0
  58. data/ext/ice/cpp/include/Ice/ConnectionIF.h +37 -0
  59. data/ext/ice/cpp/include/Ice/Current.h +94 -0
  60. data/ext/ice/cpp/include/Ice/DefaultObjectFactory.h +48 -0
  61. data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +62 -0
  62. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +33 -0
  63. data/ext/ice/cpp/include/Ice/Dispatcher.h +51 -0
  64. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +105 -0
  65. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +29 -0
  66. data/ext/ice/cpp/include/Ice/Endpoint.h +350 -0
  67. data/ext/ice/cpp/include/Ice/EndpointF.h +97 -0
  68. data/ext/ice/cpp/include/Ice/EndpointTypes.h +74 -0
  69. data/ext/ice/cpp/include/Ice/Exception.h +114 -0
  70. data/ext/ice/cpp/include/Ice/FacetMap.h +56 -0
  71. data/ext/ice/cpp/include/Ice/FactoryTable.h +69 -0
  72. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +87 -0
  73. data/ext/ice/cpp/include/Ice/Format.h +39 -0
  74. data/ext/ice/cpp/include/Ice/Functional.h +138 -0
  75. data/ext/ice/cpp/include/Ice/GCObject.h +73 -0
  76. data/ext/ice/cpp/include/Ice/Handle.h +192 -0
  77. data/ext/ice/cpp/include/Ice/Ice.h +54 -0
  78. data/ext/ice/cpp/include/Ice/Identity.h +160 -0
  79. data/ext/ice/cpp/include/Ice/ImplicitContext.h +96 -0
  80. data/ext/ice/cpp/include/Ice/ImplicitContextF.h +60 -0
  81. data/ext/ice/cpp/include/Ice/Incoming.h +131 -0
  82. data/ext/ice/cpp/include/Ice/IncomingAsync.h +108 -0
  83. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +35 -0
  84. data/ext/ice/cpp/include/Ice/Initialize.h +141 -0
  85. data/ext/ice/cpp/include/Ice/InstanceF.h +26 -0
  86. data/ext/ice/cpp/include/Ice/Instrumentation.h +377 -0
  87. data/ext/ice/cpp/include/Ice/InstrumentationF.h +71 -0
  88. data/ext/ice/cpp/include/Ice/LocalException.h +1022 -0
  89. data/ext/ice/cpp/include/Ice/LocalObject.h +36 -0
  90. data/ext/ice/cpp/include/Ice/LocalObjectF.h +26 -0
  91. data/ext/ice/cpp/include/Ice/Locator.h +2191 -0
  92. data/ext/ice/cpp/include/Ice/LocatorF.h +89 -0
  93. data/ext/ice/cpp/include/Ice/Logger.h +94 -0
  94. data/ext/ice/cpp/include/Ice/LoggerF.h +60 -0
  95. data/ext/ice/cpp/include/Ice/LoggerUtil.h +153 -0
  96. data/ext/ice/cpp/include/Ice/Makefile +26 -0
  97. data/ext/ice/cpp/include/Ice/Metrics.h +2989 -0
  98. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +662 -0
  99. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +144 -0
  100. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +576 -0
  101. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +55 -0
  102. data/ext/ice/cpp/include/Ice/Object.h +165 -0
  103. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +162 -0
  104. data/ext/ice/cpp/include/Ice/ObjectAdapterF.h +60 -0
  105. data/ext/ice/cpp/include/Ice/ObjectAdapterFactoryF.h +26 -0
  106. data/ext/ice/cpp/include/Ice/ObjectF.h +26 -0
  107. data/ext/ice/cpp/include/Ice/ObjectFactory.h +86 -0
  108. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +60 -0
  109. data/ext/ice/cpp/include/Ice/ObjectFactoryManagerF.h +26 -0
  110. data/ext/ice/cpp/include/Ice/ObserverHelper.h +177 -0
  111. data/ext/ice/cpp/include/Ice/Outgoing.h +197 -0
  112. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +264 -0
  113. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +38 -0
  114. data/ext/ice/cpp/include/Ice/Plugin.h +121 -0
  115. data/ext/ice/cpp/include/Ice/PluginF.h +66 -0
  116. data/ext/ice/cpp/include/Ice/Process.h +568 -0
  117. data/ext/ice/cpp/include/Ice/ProcessF.h +77 -0
  118. data/ext/ice/cpp/include/Ice/Properties.h +130 -0
  119. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +824 -0
  120. data/ext/ice/cpp/include/Ice/PropertiesF.h +83 -0
  121. data/ext/ice/cpp/include/Ice/Protocol.h +242 -0
  122. data/ext/ice/cpp/include/Ice/Proxy.h +2448 -0
  123. data/ext/ice/cpp/include/Ice/ProxyF.h +78 -0
  124. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +26 -0
  125. data/ext/ice/cpp/include/Ice/ProxyHandle.h +330 -0
  126. data/ext/ice/cpp/include/Ice/ReferenceF.h +34 -0
  127. data/ext/ice/cpp/include/Ice/RemoteLogger.h +1496 -0
  128. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +29 -0
  129. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +25 -0
  130. data/ext/ice/cpp/include/Ice/Router.h +1155 -0
  131. data/ext/ice/cpp/include/Ice/RouterF.h +77 -0
  132. data/ext/ice/cpp/include/Ice/ServantLocator.h +90 -0
  133. data/ext/ice/cpp/include/Ice/ServantLocatorF.h +60 -0
  134. data/ext/ice/cpp/include/Ice/ServantManagerF.h +26 -0
  135. data/ext/ice/cpp/include/Ice/Service.h +260 -0
  136. data/ext/ice/cpp/include/Ice/SliceChecksumDict.h +56 -0
  137. data/ext/ice/cpp/include/Ice/SliceChecksums.h +34 -0
  138. data/ext/ice/cpp/include/Ice/SlicedData.h +103 -0
  139. data/ext/ice/cpp/include/Ice/SlicedDataF.h +34 -0
  140. data/ext/ice/cpp/include/Ice/Stream.h +449 -0
  141. data/ext/ice/cpp/include/Ice/StreamF.h +30 -0
  142. data/ext/ice/cpp/include/Ice/StreamHelpers.h +877 -0
  143. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +28 -0
  144. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +56 -0
  145. data/ext/ice/cpp/include/Ice/Version.h +254 -0
  146. data/ext/ice/cpp/include/IceSSL/Config.h +23 -0
  147. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +119 -0
  148. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +101 -0
  149. data/ext/ice/cpp/include/IceSSL/IceSSL.h +22 -0
  150. data/ext/ice/cpp/include/IceSSL/Makefile +26 -0
  151. data/ext/ice/cpp/include/IceSSL/Plugin.h +558 -0
  152. data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +119 -0
  153. data/ext/ice/cpp/include/IceUtil/Cache.h +362 -0
  154. data/ext/ice/cpp/include/IceUtil/Cond.h +323 -0
  155. data/ext/ice/cpp/include/IceUtil/Config.h +234 -0
  156. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +50 -0
  157. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +70 -0
  158. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +45 -0
  159. data/ext/ice/cpp/include/IceUtil/Exception.h +184 -0
  160. data/ext/ice/cpp/include/IceUtil/Functional.h +389 -0
  161. data/ext/ice/cpp/include/IceUtil/Handle.h +266 -0
  162. data/ext/ice/cpp/include/IceUtil/IceUtil.h +51 -0
  163. data/ext/ice/cpp/include/IceUtil/IconvStringConverter.h +302 -0
  164. data/ext/ice/cpp/include/IceUtil/InputUtil.h +47 -0
  165. data/ext/ice/cpp/include/IceUtil/Iterator.h +36 -0
  166. data/ext/ice/cpp/include/IceUtil/Lock.h +135 -0
  167. data/ext/ice/cpp/include/IceUtil/Makefile +26 -0
  168. data/ext/ice/cpp/include/IceUtil/Monitor.h +249 -0
  169. data/ext/ice/cpp/include/IceUtil/Mutex.h +357 -0
  170. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +28 -0
  171. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +83 -0
  172. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +82 -0
  173. data/ext/ice/cpp/include/IceUtil/Optional.h +322 -0
  174. data/ext/ice/cpp/include/IceUtil/Options.h +141 -0
  175. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +362 -0
  176. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +19 -0
  177. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +26 -0
  178. data/ext/ice/cpp/include/IceUtil/Random.h +24 -0
  179. data/ext/ice/cpp/include/IceUtil/RecMutex.h +113 -0
  180. data/ext/ice/cpp/include/IceUtil/SHA1.h +65 -0
  181. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +44 -0
  182. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +97 -0
  183. data/ext/ice/cpp/include/IceUtil/Shared.h +168 -0
  184. data/ext/ice/cpp/include/IceUtil/StringConverter.h +175 -0
  185. data/ext/ice/cpp/include/IceUtil/StringUtil.h +91 -0
  186. data/ext/ice/cpp/include/IceUtil/Thread.h +181 -0
  187. data/ext/ice/cpp/include/IceUtil/ThreadException.h +108 -0
  188. data/ext/ice/cpp/include/IceUtil/Time.h +209 -0
  189. data/ext/ice/cpp/include/IceUtil/Timer.h +143 -0
  190. data/ext/ice/cpp/include/IceUtil/UUID.h +22 -0
  191. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +42 -0
  192. data/ext/ice/cpp/include/IceUtil/UniquePtr.h +101 -0
  193. data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +64 -0
  194. data/ext/ice/cpp/include/Slice/Checksum.h +26 -0
  195. data/ext/ice/cpp/include/Slice/CsUtil.h +92 -0
  196. data/ext/ice/cpp/include/Slice/DotNetNames.h +34 -0
  197. data/ext/ice/cpp/include/Slice/FileTracker.h +71 -0
  198. data/ext/ice/cpp/include/Slice/JavaUtil.h +277 -0
  199. data/ext/ice/cpp/include/Slice/Makefile +26 -0
  200. data/ext/ice/cpp/include/Slice/PHPUtil.h +50 -0
  201. data/ext/ice/cpp/include/Slice/Parser.h +1116 -0
  202. data/ext/ice/cpp/include/Slice/Preprocessor.h +68 -0
  203. data/ext/ice/cpp/include/Slice/PythonUtil.h +64 -0
  204. data/ext/ice/cpp/include/Slice/RubyUtil.h +54 -0
  205. data/ext/ice/cpp/include/Slice/Util.h +33 -0
  206. data/ext/ice/cpp/src/Ice/ACM.cpp +343 -0
  207. data/ext/ice/cpp/src/Ice/ACM.h +117 -0
  208. data/ext/ice/cpp/src/Ice/Acceptor.cpp +16 -0
  209. data/ext/ice/cpp/src/Ice/Acceptor.h +41 -0
  210. data/ext/ice/cpp/src/Ice/AcceptorF.h +30 -0
  211. data/ext/ice/cpp/src/Ice/Application.cpp +760 -0
  212. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +599 -0
  213. data/ext/ice/cpp/src/Ice/Base64.cpp +269 -0
  214. data/ext/ice/cpp/src/Ice/Base64.h +36 -0
  215. data/ext/ice/cpp/src/Ice/BasicStream.cpp +3393 -0
  216. data/ext/ice/cpp/src/Ice/Buffer.cpp +98 -0
  217. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +34 -0
  218. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +718 -0
  219. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +106 -0
  220. data/ext/ice/cpp/src/Ice/Communicator.cpp +45 -0
  221. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +38 -0
  222. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +386 -0
  223. data/ext/ice/cpp/src/Ice/CommunicatorI.h +112 -0
  224. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +546 -0
  225. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +97 -0
  226. data/ext/ice/cpp/src/Ice/Connection.cpp +58 -0
  227. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +38 -0
  228. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +1639 -0
  229. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +236 -0
  230. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +3876 -0
  231. data/ext/ice/cpp/src/Ice/ConnectionI.h +364 -0
  232. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +115 -0
  233. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +50 -0
  234. data/ext/ice/cpp/src/Ice/Connector.cpp +16 -0
  235. data/ext/ice/cpp/src/Ice/Connector.h +36 -0
  236. data/ext/ice/cpp/src/Ice/ConnectorF.h +26 -0
  237. data/ext/ice/cpp/src/Ice/Current.cpp +38 -0
  238. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +168 -0
  239. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +57 -0
  240. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +26 -0
  241. data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +60 -0
  242. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +49 -0
  243. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +281 -0
  244. data/ext/ice/cpp/src/Ice/Endpoint.cpp +53 -0
  245. data/ext/ice/cpp/src/Ice/EndpointF.cpp +38 -0
  246. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +25 -0
  247. data/ext/ice/cpp/src/Ice/EndpointFactory.h +44 -0
  248. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +26 -0
  249. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +208 -0
  250. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +46 -0
  251. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +26 -0
  252. data/ext/ice/cpp/src/Ice/EndpointI.cpp +87 -0
  253. data/ext/ice/cpp/src/Ice/EndpointI.h +165 -0
  254. data/ext/ice/cpp/src/Ice/EndpointIF.h +41 -0
  255. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +38 -0
  256. data/ext/ice/cpp/src/Ice/EventHandler.cpp +35 -0
  257. data/ext/ice/cpp/src/Ice/EventHandler.h +78 -0
  258. data/ext/ice/cpp/src/Ice/EventHandlerF.h +26 -0
  259. data/ext/ice/cpp/src/Ice/EventLoggerMsg.h +53 -0
  260. data/ext/ice/cpp/src/Ice/Exception.cpp +832 -0
  261. data/ext/ice/cpp/src/Ice/FacetMap.cpp +34 -0
  262. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +158 -0
  263. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +95 -0
  264. data/ext/ice/cpp/src/Ice/GCObject.cpp +444 -0
  265. data/ext/ice/cpp/src/Ice/HashUtil.h +59 -0
  266. data/ext/ice/cpp/src/Ice/HttpParser.cpp +680 -0
  267. data/ext/ice/cpp/src/Ice/HttpParser.h +124 -0
  268. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +733 -0
  269. data/ext/ice/cpp/src/Ice/IPEndpointI.h +157 -0
  270. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +29 -0
  271. data/ext/ice/cpp/src/Ice/Identity.cpp +42 -0
  272. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +41 -0
  273. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +38 -0
  274. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +639 -0
  275. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +51 -0
  276. data/ext/ice/cpp/src/Ice/Incoming.cpp +757 -0
  277. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +340 -0
  278. data/ext/ice/cpp/src/Ice/IncomingRequest.h +37 -0
  279. data/ext/ice/cpp/src/Ice/Initialize.cpp +401 -0
  280. data/ext/ice/cpp/src/Ice/Instance.cpp +1928 -0
  281. data/ext/ice/cpp/src/Ice/Instance.h +198 -0
  282. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +68 -0
  283. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +43 -0
  284. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1083 -0
  285. data/ext/ice/cpp/src/Ice/InstrumentationI.h +262 -0
  286. data/ext/ice/cpp/src/Ice/LocalException.cpp +2091 -0
  287. data/ext/ice/cpp/src/Ice/LocalObject.cpp +29 -0
  288. data/ext/ice/cpp/src/Ice/Locator.cpp +1946 -0
  289. data/ext/ice/cpp/src/Ice/LocatorF.cpp +39 -0
  290. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +917 -0
  291. data/ext/ice/cpp/src/Ice/LocatorInfo.h +193 -0
  292. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +34 -0
  293. data/ext/ice/cpp/src/Ice/Logger.cpp +40 -0
  294. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +862 -0
  295. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +46 -0
  296. data/ext/ice/cpp/src/Ice/LoggerF.cpp +38 -0
  297. data/ext/ice/cpp/src/Ice/LoggerI.cpp +199 -0
  298. data/ext/ice/cpp/src/Ice/LoggerI.h +57 -0
  299. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +107 -0
  300. data/ext/ice/cpp/src/Ice/Makefile +190 -0
  301. data/ext/ice/cpp/src/Ice/Metrics.cpp +2159 -0
  302. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +669 -0
  303. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +14 -0
  304. data/ext/ice/cpp/src/Ice/Network.cpp +2694 -0
  305. data/ext/ice/cpp/src/Ice/Network.h +291 -0
  306. data/ext/ice/cpp/src/Ice/NetworkF.h +28 -0
  307. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +325 -0
  308. data/ext/ice/cpp/src/Ice/NetworkProxy.h +74 -0
  309. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +26 -0
  310. data/ext/ice/cpp/src/Ice/Object.cpp +440 -0
  311. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -0
  312. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +38 -0
  313. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +241 -0
  314. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +52 -0
  315. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +1498 -0
  316. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +155 -0
  317. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +41 -0
  318. data/ext/ice/cpp/src/Ice/ObjectFactoryF.cpp +38 -0
  319. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +140 -0
  320. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +43 -0
  321. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +84 -0
  322. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +407 -0
  323. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +70 -0
  324. data/ext/ice/cpp/src/Ice/Outgoing.cpp +737 -0
  325. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +874 -0
  326. data/ext/ice/cpp/src/Ice/Plugin.cpp +43 -0
  327. data/ext/ice/cpp/src/Ice/PluginF.cpp +38 -0
  328. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +503 -0
  329. data/ext/ice/cpp/src/Ice/PluginManagerI.h +67 -0
  330. data/ext/ice/cpp/src/Ice/Process.cpp +299 -0
  331. data/ext/ice/cpp/src/Ice/ProcessF.cpp +39 -0
  332. data/ext/ice/cpp/src/Ice/Properties.cpp +45 -0
  333. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +555 -0
  334. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +207 -0
  335. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +45 -0
  336. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +39 -0
  337. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +759 -0
  338. data/ext/ice/cpp/src/Ice/PropertiesI.h +78 -0
  339. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +1293 -0
  340. data/ext/ice/cpp/src/Ice/PropertyNames.h +81 -0
  341. data/ext/ice/cpp/src/Ice/Protocol.cpp +137 -0
  342. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +98 -0
  343. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +91 -0
  344. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +26 -0
  345. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +51 -0
  346. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +67 -0
  347. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +26 -0
  348. data/ext/ice/cpp/src/Ice/Proxy.cpp +1810 -0
  349. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +305 -0
  350. data/ext/ice/cpp/src/Ice/ProxyFactory.h +57 -0
  351. data/ext/ice/cpp/src/Ice/Reference.cpp +1947 -0
  352. data/ext/ice/cpp/src/Ice/Reference.h +305 -0
  353. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +937 -0
  354. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +81 -0
  355. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +24 -0
  356. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +958 -0
  357. data/ext/ice/cpp/src/Ice/ReplyStatus.h +29 -0
  358. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +40 -0
  359. data/ext/ice/cpp/src/Ice/RequestHandler.h +90 -0
  360. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +70 -0
  361. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +41 -0
  362. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +20 -0
  363. data/ext/ice/cpp/src/Ice/ResponseHandler.h +39 -0
  364. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +154 -0
  365. data/ext/ice/cpp/src/Ice/RetryQueue.h +69 -0
  366. data/ext/ice/cpp/src/Ice/RetryQueueF.h +24 -0
  367. data/ext/ice/cpp/src/Ice/Router.cpp +849 -0
  368. data/ext/ice/cpp/src/Ice/RouterF.cpp +39 -0
  369. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +381 -0
  370. data/ext/ice/cpp/src/Ice/RouterInfo.h +148 -0
  371. data/ext/ice/cpp/src/Ice/RouterInfoF.h +30 -0
  372. data/ext/ice/cpp/src/Ice/Selector.cpp +926 -0
  373. data/ext/ice/cpp/src/Ice/Selector.h +231 -0
  374. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +41 -0
  375. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +38 -0
  376. data/ext/ice/cpp/src/Ice/ServantManager.cpp +495 -0
  377. data/ext/ice/cpp/src/Ice/ServantManager.h +74 -0
  378. data/ext/ice/cpp/src/Ice/Service.cpp +1897 -0
  379. data/ext/ice/cpp/src/Ice/SharedContext.h +51 -0
  380. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +34 -0
  381. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +80 -0
  382. data/ext/ice/cpp/src/Ice/SlicedData.cpp +80 -0
  383. data/ext/ice/cpp/src/Ice/Stream.cpp +53 -0
  384. data/ext/ice/cpp/src/Ice/StreamI.cpp +832 -0
  385. data/ext/ice/cpp/src/Ice/StreamI.h +198 -0
  386. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +521 -0
  387. data/ext/ice/cpp/src/Ice/StreamSocket.h +85 -0
  388. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +145 -0
  389. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +167 -0
  390. data/ext/ice/cpp/src/Ice/SysLoggerI.h +43 -0
  391. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +235 -0
  392. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +67 -0
  393. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +133 -0
  394. data/ext/ice/cpp/src/Ice/TcpConnector.h +51 -0
  395. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +397 -0
  396. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +93 -0
  397. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +127 -0
  398. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +61 -0
  399. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +1357 -0
  400. data/ext/ice/cpp/src/Ice/ThreadPool.h +399 -0
  401. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +43 -0
  402. data/ext/ice/cpp/src/Ice/TraceLevels.h +50 -0
  403. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +26 -0
  404. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +452 -0
  405. data/ext/ice/cpp/src/Ice/TraceUtil.h +28 -0
  406. data/ext/ice/cpp/src/Ice/Transceiver.cpp +24 -0
  407. data/ext/ice/cpp/src/Ice/Transceiver.h +52 -0
  408. data/ext/ice/cpp/src/Ice/TransceiverF.h +38 -0
  409. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +144 -0
  410. data/ext/ice/cpp/src/Ice/UdpConnector.h +51 -0
  411. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +483 -0
  412. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +95 -0
  413. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +1156 -0
  414. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +123 -0
  415. data/ext/ice/cpp/src/Ice/Version.cpp +46 -0
  416. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +103 -0
  417. data/ext/ice/cpp/src/Ice/WSAcceptor.h +61 -0
  418. data/ext/ice/cpp/src/Ice/WSConnector.cpp +113 -0
  419. data/ext/ice/cpp/src/Ice/WSConnector.h +51 -0
  420. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +441 -0
  421. data/ext/ice/cpp/src/Ice/WSEndpoint.h +97 -0
  422. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +1728 -0
  423. data/ext/ice/cpp/src/Ice/WSTransceiver.h +149 -0
  424. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +594 -0
  425. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +1035 -0
  426. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +208 -0
  427. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +78 -0
  428. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +308 -0
  429. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +183 -0
  430. data/ext/ice/cpp/src/IceDiscovery/Makefile +61 -0
  431. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +148 -0
  432. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +39 -0
  433. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +258 -0
  434. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +66 -0
  435. data/ext/ice/cpp/src/IceSSL/Certificate.cpp +1334 -0
  436. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +42 -0
  437. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +151 -0
  438. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +56 -0
  439. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +397 -0
  440. data/ext/ice/cpp/src/IceSSL/EndpointI.h +96 -0
  441. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +41 -0
  442. data/ext/ice/cpp/src/IceSSL/Instance.cpp +38 -0
  443. data/ext/ice/cpp/src/IceSSL/Instance.h +42 -0
  444. data/ext/ice/cpp/src/IceSSL/InstanceF.h +34 -0
  445. data/ext/ice/cpp/src/IceSSL/Makefile +82 -0
  446. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +1001 -0
  447. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +607 -0
  448. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +75 -0
  449. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +102 -0
  450. data/ext/ice/cpp/src/IceSSL/PluginI.h +56 -0
  451. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +541 -0
  452. data/ext/ice/cpp/src/IceSSL/RFC2253.h +67 -0
  453. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +729 -0
  454. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +1062 -0
  455. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +130 -0
  456. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +291 -0
  457. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +264 -0
  458. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +41 -0
  459. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +1514 -0
  460. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +609 -0
  461. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +91 -0
  462. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +246 -0
  463. data/ext/ice/cpp/src/IceSSL/TrustManager.h +51 -0
  464. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +26 -0
  465. data/ext/ice/cpp/src/IceSSL/Util.cpp +1423 -0
  466. data/ext/ice/cpp/src/IceSSL/Util.h +136 -0
  467. data/ext/ice/cpp/src/IceUtil/ArgVector.cpp +65 -0
  468. data/ext/ice/cpp/src/IceUtil/ArgVector.h +41 -0
  469. data/ext/ice/cpp/src/IceUtil/Cond.cpp +386 -0
  470. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +477 -0
  471. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +144 -0
  472. data/ext/ice/cpp/src/IceUtil/CountDownLatch.cpp +184 -0
  473. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +273 -0
  474. data/ext/ice/cpp/src/IceUtil/Exception.cpp +782 -0
  475. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +532 -0
  476. data/ext/ice/cpp/src/IceUtil/FileUtil.h +159 -0
  477. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +41 -0
  478. data/ext/ice/cpp/src/IceUtil/Makefile +68 -0
  479. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +24 -0
  480. data/ext/ice/cpp/src/IceUtil/Options.cpp +1049 -0
  481. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +591 -0
  482. data/ext/ice/cpp/src/IceUtil/Random.cpp +185 -0
  483. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +257 -0
  484. data/ext/ice/cpp/src/IceUtil/SHA1.cpp +126 -0
  485. data/ext/ice/cpp/src/IceUtil/Shared.cpp +200 -0
  486. data/ext/ice/cpp/src/IceUtil/StopWatch.h +54 -0
  487. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +450 -0
  488. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +842 -0
  489. data/ext/ice/cpp/src/IceUtil/Thread.cpp +809 -0
  490. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +172 -0
  491. data/ext/ice/cpp/src/IceUtil/Time.cpp +306 -0
  492. data/ext/ice/cpp/src/IceUtil/Timer.cpp +251 -0
  493. data/ext/ice/cpp/src/IceUtil/UUID.cpp +174 -0
  494. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +131 -0
  495. data/ext/ice/cpp/src/IceUtil/Unicode.h +49 -0
  496. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +1139 -0
  497. data/ext/ice/cpp/src/Slice/Checksum.cpp +452 -0
  498. data/ext/ice/cpp/src/Slice/CsUtil.cpp +2650 -0
  499. data/ext/ice/cpp/src/Slice/DotNetNames.cpp +146 -0
  500. data/ext/ice/cpp/src/Slice/FileTracker.cpp +203 -0
  501. data/ext/ice/cpp/src/Slice/Grammar.cpp +4755 -0
  502. data/ext/ice/cpp/src/Slice/Grammar.h +98 -0
  503. data/ext/ice/cpp/src/Slice/GrammarUtil.h +234 -0
  504. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +4376 -0
  505. data/ext/ice/cpp/src/Slice/MD5.cpp +57 -0
  506. data/ext/ice/cpp/src/Slice/MD5.h +44 -0
  507. data/ext/ice/cpp/src/Slice/MD5I.cpp +385 -0
  508. data/ext/ice/cpp/src/Slice/MD5I.h +91 -0
  509. data/ext/ice/cpp/src/Slice/Makefile +65 -0
  510. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +156 -0
  511. data/ext/ice/cpp/src/Slice/Parser.cpp +6386 -0
  512. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +686 -0
  513. data/ext/ice/cpp/src/Slice/Python.cpp +675 -0
  514. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +2614 -0
  515. data/ext/ice/cpp/src/Slice/Ruby.cpp +317 -0
  516. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +1774 -0
  517. data/ext/ice/cpp/src/Slice/Scanner.cpp +2426 -0
  518. data/ext/ice/cpp/src/Slice/Util.cpp +325 -0
  519. data/ext/ice/mcpp/config.h.Darwin +227 -0
  520. data/ext/ice/mcpp/config.h.Linux +227 -0
  521. data/ext/ice/mcpp/config.h.MINGW +7 -0
  522. data/ext/ice/mcpp/configed.H +382 -0
  523. data/ext/ice/mcpp/directive.c +1699 -0
  524. data/ext/ice/mcpp/eval.c +1673 -0
  525. data/ext/ice/mcpp/expand.c +2980 -0
  526. data/ext/ice/mcpp/internal.H +564 -0
  527. data/ext/ice/mcpp/main.c +1131 -0
  528. data/ext/ice/mcpp/mbchar.c +869 -0
  529. data/ext/ice/mcpp/mcpp_lib.h +31 -0
  530. data/ext/ice/mcpp/mcpp_out.h +13 -0
  531. data/ext/ice/mcpp/support.c +2811 -0
  532. data/ext/ice/mcpp/system.H +396 -0
  533. data/ext/ice/mcpp/system.c +4940 -0
  534. data/ice.gemspec +41 -0
  535. data/lib/Glacier2.rb +12 -0
  536. data/lib/Glacier2/Metrics.rb +99 -0
  537. data/lib/Glacier2/PermissionsVerifier.rb +168 -0
  538. data/lib/Glacier2/PermissionsVerifierF.rb +34 -0
  539. data/lib/Glacier2/Router.rb +141 -0
  540. data/lib/Glacier2/RouterF.rb +29 -0
  541. data/lib/Glacier2/SSLInfo.rb +79 -0
  542. data/lib/Glacier2/Session.rb +470 -0
  543. data/lib/Ice.rb +659 -0
  544. data/lib/Ice/BuiltinSequences.rb +64 -0
  545. data/lib/Ice/Communicator.rb +93 -0
  546. data/lib/Ice/CommunicatorF.rb +28 -0
  547. data/lib/Ice/Connection.rb +414 -0
  548. data/lib/Ice/ConnectionF.rb +36 -0
  549. data/lib/Ice/Current.rb +152 -0
  550. data/lib/Ice/Endpoint.rb +265 -0
  551. data/lib/Ice/EndpointF.rb +52 -0
  552. data/lib/Ice/EndpointTypes.rb +77 -0
  553. data/lib/Ice/FacetMap.rb +28 -0
  554. data/lib/Ice/Identity.rb +70 -0
  555. data/lib/Ice/ImplicitContext.rb +59 -0
  556. data/lib/Ice/ImplicitContextF.rb +28 -0
  557. data/lib/Ice/Instrumentation.rb +425 -0
  558. data/lib/Ice/InstrumentationF.rb +35 -0
  559. data/lib/Ice/LocalException.rb +1081 -0
  560. data/lib/Ice/Locator.rb +314 -0
  561. data/lib/Ice/LocatorF.rb +34 -0
  562. data/lib/Ice/Logger.rb +57 -0
  563. data/lib/Ice/LoggerF.rb +28 -0
  564. data/lib/Ice/Metrics.rb +696 -0
  565. data/lib/Ice/ObjectAdapterF.rb +28 -0
  566. data/lib/Ice/ObjectFactory.rb +53 -0
  567. data/lib/Ice/ObjectFactoryF.rb +28 -0
  568. data/lib/Ice/Plugin.rb +87 -0
  569. data/lib/Ice/PluginF.rb +32 -0
  570. data/lib/Ice/Process.rb +93 -0
  571. data/lib/Ice/ProcessF.rb +29 -0
  572. data/lib/Ice/Properties.rb +65 -0
  573. data/lib/Ice/PropertiesAdmin.rb +104 -0
  574. data/lib/Ice/PropertiesF.rb +33 -0
  575. data/lib/Ice/Router.rb +163 -0
  576. data/lib/Ice/RouterF.rb +29 -0
  577. data/lib/Ice/SliceChecksumDict.rb +28 -0
  578. data/lib/Ice/Version.rb +100 -0
  579. data/lib/IceBox.rb +10 -0
  580. data/lib/IceBox/IceBox.rb +272 -0
  581. data/lib/IceGrid.rb +17 -0
  582. data/lib/IceGrid/Admin.rb +1076 -0
  583. data/lib/IceGrid/Descriptor.rb +1505 -0
  584. data/lib/IceGrid/Exception.rb +401 -0
  585. data/lib/IceGrid/FileParser.rb +105 -0
  586. data/lib/IceGrid/Locator.rb +105 -0
  587. data/lib/IceGrid/Observer.rb +571 -0
  588. data/lib/IceGrid/Query.rb +168 -0
  589. data/lib/IceGrid/Registry.rb +120 -0
  590. data/lib/IceGrid/Session.rb +114 -0
  591. data/lib/IceGrid/UserAccountMapper.rb +101 -0
  592. data/lib/IcePatch2.rb +10 -0
  593. data/lib/IcePatch2/FileInfo.rb +75 -0
  594. data/lib/IcePatch2/FileServer.rb +141 -0
  595. data/lib/IceStorm.rb +11 -0
  596. data/lib/IceStorm/IceStorm.rb +463 -0
  597. data/lib/IceStorm/Metrics.rb +155 -0
  598. data/slice/Freeze/BackgroundSaveEvictor.ice +111 -0
  599. data/slice/Freeze/CatalogData.ice +49 -0
  600. data/slice/Freeze/Connection.ice +111 -0
  601. data/slice/Freeze/ConnectionF.ice +20 -0
  602. data/slice/Freeze/DB.ice +37 -0
  603. data/slice/Freeze/Evictor.ice +339 -0
  604. data/slice/Freeze/EvictorF.ice +22 -0
  605. data/slice/Freeze/EvictorStorage.ice +72 -0
  606. data/slice/Freeze/Exception.ice +100 -0
  607. data/slice/Freeze/Transaction.ice +57 -0
  608. data/slice/Freeze/TransactionalEvictor.ice +50 -0
  609. data/slice/Glacier2/Metrics.ice +77 -0
  610. data/slice/Glacier2/PermissionsVerifier.ice +105 -0
  611. data/slice/Glacier2/PermissionsVerifierF.ice +21 -0
  612. data/slice/Glacier2/Router.ice +178 -0
  613. data/slice/Glacier2/RouterF.ice +20 -0
  614. data/slice/Glacier2/SSLInfo.ice +50 -0
  615. data/slice/Glacier2/Session.ice +273 -0
  616. data/slice/Ice/BuiltinSequences.ice +48 -0
  617. data/slice/Ice/Communicator.ice +567 -0
  618. data/slice/Ice/CommunicatorF.ice +20 -0
  619. data/slice/Ice/Connection.ice +323 -0
  620. data/slice/Ice/ConnectionF.ice +22 -0
  621. data/slice/Ice/Current.ice +160 -0
  622. data/slice/Ice/Endpoint.ice +227 -0
  623. data/slice/Ice/EndpointF.ice +32 -0
  624. data/slice/Ice/EndpointTypes.ice +38 -0
  625. data/slice/Ice/FacetMap.ice +25 -0
  626. data/slice/Ice/Identity.ice +59 -0
  627. data/slice/Ice/ImplicitContext.ice +109 -0
  628. data/slice/Ice/ImplicitContextF.ice +20 -0
  629. data/slice/Ice/Instrumentation.ice +499 -0
  630. data/slice/Ice/InstrumentationF.ice +26 -0
  631. data/slice/Ice/LocalException.ice +1015 -0
  632. data/slice/Ice/Locator.ice +227 -0
  633. data/slice/Ice/LocatorF.ice +21 -0
  634. data/slice/Ice/Logger.ice +86 -0
  635. data/slice/Ice/LoggerF.ice +20 -0
  636. data/slice/Ice/Metrics.ice +422 -0
  637. data/slice/Ice/ObjectAdapter.ice +673 -0
  638. data/slice/Ice/ObjectAdapterF.ice +20 -0
  639. data/slice/Ice/ObjectFactory.ice +60 -0
  640. data/slice/Ice/ObjectFactoryF.ice +20 -0
  641. data/slice/Ice/Plugin.ice +117 -0
  642. data/slice/Ice/PluginF.ice +21 -0
  643. data/slice/Ice/Process.ice +54 -0
  644. data/slice/Ice/ProcessF.ice +20 -0
  645. data/slice/Ice/Properties.ice +228 -0
  646. data/slice/Ice/PropertiesAdmin.ice +75 -0
  647. data/slice/Ice/PropertiesF.ice +21 -0
  648. data/slice/Ice/RemoteLogger.ice +232 -0
  649. data/slice/Ice/Router.ice +83 -0
  650. data/slice/Ice/RouterF.ice +20 -0
  651. data/slice/Ice/ServantLocator.ice +117 -0
  652. data/slice/Ice/ServantLocatorF.ice +20 -0
  653. data/slice/Ice/SliceChecksumDict.ice +25 -0
  654. data/slice/Ice/Version.ice +39 -0
  655. data/slice/IceBox/IceBox.ice +194 -0
  656. data/slice/IceDiscovery/IceDiscovery.ice +32 -0
  657. data/slice/IceGrid/Admin.ice +1578 -0
  658. data/slice/IceGrid/Descriptor.ice +1079 -0
  659. data/slice/IceGrid/Discovery.ice +73 -0
  660. data/slice/IceGrid/Exception.ice +383 -0
  661. data/slice/IceGrid/FileParser.ice +61 -0
  662. data/slice/IceGrid/Locator.ice +56 -0
  663. data/slice/IceGrid/Observer.ice +394 -0
  664. data/slice/IceGrid/PluginFacade.ice +316 -0
  665. data/slice/IceGrid/Query.ice +130 -0
  666. data/slice/IceGrid/Registry.ice +138 -0
  667. data/slice/IceGrid/Session.ice +124 -0
  668. data/slice/IceGrid/UserAccountMapper.ice +58 -0
  669. data/slice/IcePatch2/FileInfo.ice +49 -0
  670. data/slice/IcePatch2/FileServer.ice +129 -0
  671. data/slice/IceSSL/ConnectionInfo.ice +34 -0
  672. data/slice/IceSSL/EndpointInfo.ice +41 -0
  673. data/slice/IceStorm/IceStorm.ice +405 -0
  674. data/slice/IceStorm/Metrics.ice +71 -0
  675. metadata +737 -0
@@ -0,0 +1,159 @@
1
+ // **********************************************************************
2
+ //
3
+ // Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
4
+ //
5
+ // This copy of Ice is licensed to you under the terms described in the
6
+ // ICE_LICENSE file included in this distribution.
7
+ //
8
+ // **********************************************************************
9
+
10
+ #ifndef ICE_FILE_UTIL_H
11
+ #define ICE_FILE_UTIL_H
12
+
13
+ #include <IceUtil/Config.h>
14
+ #include <IceUtil/Shared.h>
15
+ #include <IceUtil/Handle.h>
16
+
17
+ #include <sys/stat.h>
18
+ #include <fcntl.h>
19
+ #include <stdio.h>
20
+ #include <fstream>
21
+
22
+ namespace IceUtilInternal
23
+ {
24
+
25
+ extern const ICE_UTIL_API std::string pathsep;
26
+ extern const ICE_UTIL_API std::string separator;
27
+
28
+ //
29
+ // Detemine if path is an absolute path.
30
+ //
31
+ ICE_UTIL_API bool isAbsolutePath(const std::string&);
32
+
33
+ //
34
+ // Determine if a file exists.
35
+ //
36
+ ICE_UTIL_API bool fileExists(const std::string&);
37
+
38
+ //
39
+ // Determine if a directory exists.
40
+ //
41
+ ICE_UTIL_API bool directoryExists(const std::string&);
42
+
43
+ #ifdef _WIN32
44
+
45
+ #if defined(__MINGW32__)
46
+ typedef struct _stat structstat;
47
+ #else
48
+ typedef struct _stat64i32 structstat;
49
+ #endif
50
+
51
+ #ifdef _MSC_VER
52
+ # define O_RDONLY _O_RDONLY
53
+ # define O_BINARY _O_BINARY
54
+
55
+ # define S_ISDIR(mode) ((mode) & _S_IFDIR)
56
+ # define S_ISREG(mode) ((mode) & _S_IFREG)
57
+ #endif
58
+
59
+ #else
60
+
61
+ typedef struct stat structstat;
62
+ # define O_BINARY 0
63
+
64
+ #endif
65
+
66
+ //
67
+ // OS stat
68
+ //
69
+ ICE_UTIL_API int stat(const std::string&, structstat*);
70
+ ICE_UTIL_API int remove(const std::string&);
71
+ ICE_UTIL_API int rename(const std::string&, const std::string&);
72
+ ICE_UTIL_API int rmdir(const std::string&);
73
+
74
+ ICE_UTIL_API int mkdir(const std::string&, int);
75
+ ICE_UTIL_API FILE* fopen(const std::string&, const std::string&);
76
+ ICE_UTIL_API FILE* freopen(const std::string&, const std::string&, FILE*);
77
+ ICE_UTIL_API int open(const std::string&, int);
78
+
79
+ #ifndef ICE_OS_WINRT
80
+ ICE_UTIL_API int getcwd(std::string&);
81
+ #endif
82
+
83
+ ICE_UTIL_API int unlink(const std::string&);
84
+ ICE_UTIL_API int close(int);
85
+
86
+ //
87
+ // This class is used to implement process file locking. This class
88
+ // is not intended to do file locking within the same process.
89
+ //
90
+ class ICE_UTIL_API FileLock : public IceUtil::Shared, public IceUtil::noncopyable
91
+ {
92
+ public:
93
+ //
94
+ // The constructor opens the given file (eventually creating it)
95
+ // and acquires a lock on the file or throws FileLockException if
96
+ // the file couldn't be locked.
97
+ //
98
+ // If the lock can be acquired, the process pid is written to the
99
+ // file.
100
+ //
101
+ FileLock(const std::string&);
102
+
103
+ //
104
+ // The destructor releases the lock and removes the file.
105
+ //
106
+ virtual ~FileLock();
107
+
108
+ private:
109
+
110
+ #ifdef _WIN32
111
+ HANDLE _fd;
112
+ #else
113
+ int _fd;
114
+ #endif
115
+ std::string _path;
116
+ };
117
+
118
+ typedef IceUtil::Handle<FileLock> FileLockPtr;
119
+
120
+ class ICE_UTIL_API ifstream : public std::ifstream
121
+ {
122
+ public:
123
+
124
+ ifstream();
125
+ ifstream(const std::string&, std::ios_base::openmode mode = std::ios_base::in);
126
+ void open(const std::string&, std::ios_base::openmode mode = std::ios_base::in);
127
+
128
+ #ifdef __SUNPRO_CC
129
+ using std::ifstream::open;
130
+ #endif
131
+
132
+ private:
133
+
134
+ // Hide const char* definitions since they shouldn't be used.
135
+ ifstream(const char*);
136
+ void open(const char*, std::ios_base::openmode mode = std::ios_base::in);
137
+ };
138
+
139
+ class ICE_UTIL_API ofstream : public std::ofstream
140
+ {
141
+ public:
142
+
143
+ ofstream();
144
+ ofstream(const std::string&, std::ios_base::openmode mode = std::ios_base::out);
145
+ void open(const std::string&, std::ios_base::openmode mode = std::ios_base::out);
146
+
147
+ #ifdef __SUNPRO_CC
148
+ using std::ofstream::open;
149
+ #endif
150
+
151
+ private:
152
+
153
+ // Hide const char* definitions since they shouldn't be used.
154
+ ofstream(const char*);
155
+ void open(const char*, std::ios_base::openmode mode = std::ios_base::out);
156
+ };
157
+
158
+ }
159
+ #endif
@@ -0,0 +1,41 @@
1
+ // **********************************************************************
2
+ //
3
+ // Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
4
+ //
5
+ // This copy of Ice is licensed to you under the terms described in the
6
+ // ICE_LICENSE file included in this distribution.
7
+ //
8
+ // **********************************************************************
9
+
10
+ #include <IceUtil/InputUtil.h>
11
+ #include <stdlib.h>
12
+
13
+ using namespace std;
14
+ using namespace IceUtil;
15
+
16
+ namespace IceUtilInternal
17
+ {
18
+
19
+ Int64
20
+ strToInt64(const char* s, char** endptr, int base)
21
+ {
22
+ #if defined(_WIN32) && defined(_MSC_VER)
23
+ return _strtoi64(s, endptr, base);
24
+ #elif defined(ICE_64) && !defined(_WIN32)
25
+ return strtol(s, endptr, base);
26
+ #else
27
+ return strtoll(s, endptr, base);
28
+ #endif
29
+ }
30
+
31
+ bool
32
+ stringToInt64(const string& s, Int64& result)
33
+ {
34
+ const char* start = s.c_str();
35
+ char* end = 0;
36
+ errno = 0;
37
+ result = strToInt64(start, &end, 0);
38
+ return (errno == 0 && start != end);
39
+ }
40
+
41
+ }
@@ -0,0 +1,68 @@
1
+ # **********************************************************************
2
+ #
3
+ # Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
4
+ #
5
+ # This copy of Ice is licensed to you under the terms described in the
6
+ # ICE_LICENSE file included in this distribution.
7
+ #
8
+ # **********************************************************************
9
+
10
+ top_srcdir = ../..
11
+
12
+ LIBFILENAME = $(call mklibfilename,IceUtil,$(VERSION))
13
+ SONAME = $(call mksoname,IceUtil,$(SOVERSION))
14
+ LIBNAME = $(call mklibname,IceUtil)
15
+ TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)$(cpp11libdirsuffix)/$(LIBNAME))
16
+
17
+ OBJS = ArgVector.o \
18
+ Cond.o \
19
+ ConvertUTF.o \
20
+ CountDownLatch.o \
21
+ CtrlCHandler.o \
22
+ Exception.o \
23
+ FileUtil.o \
24
+ InputUtil.o \
25
+ MutexProtocol.o \
26
+ Options.o \
27
+ OutputUtil.o \
28
+ Random.o \
29
+ RecMutex.o \
30
+ SHA1.o \
31
+ Shared.o \
32
+ StringConverter.o \
33
+ StringUtil.o \
34
+ Thread.o \
35
+ ThreadException.o \
36
+ Time.o \
37
+ Timer.o \
38
+ Unicode.o \
39
+ UUID.o
40
+
41
+ include $(top_srcdir)/config/Make.rules
42
+
43
+ CPPFLAGS := $(CPPFLAGS) $(ICEUTIL_FLAGS) -DICE_UTIL_API_EXPORTS -I..
44
+ LINKWITH := $(ICEUTIL_OS_LIBS)
45
+
46
+ ifeq ($(STATICLIBS),yes)
47
+ $(libdir)/$(LIBNAME): $(OBJS)
48
+ @mkdir -p $(dir $@)
49
+ rm -f $@
50
+ $(call mklib,$@,$(OBJS))
51
+ else
52
+ $(libdir)/$(LIBFILENAME): $(OBJS)
53
+ @mkdir -p $(dir $@)
54
+ rm -f $@
55
+ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH))
56
+
57
+ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME)
58
+ rm -f $@
59
+ ln -s $(LIBFILENAME) $@
60
+
61
+ $(libdir)$(cpp11libdirsuffix)/$(LIBNAME): $(libdir)/$(SONAME)
62
+ @mkdir -p $(libdir)$(cpp11libdirsuffix)
63
+ rm -f $@
64
+ ln -s $(cpp11sonamedir)$(SONAME) $@
65
+ endif
66
+
67
+ install:: all
68
+ $(call installlib,$(DESTDIR)$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME))
@@ -0,0 +1,24 @@
1
+ // **********************************************************************
2
+ //
3
+ // Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
4
+ //
5
+ // This copy of Ice is licensed to you under the terms described in the
6
+ // ICE_LICENSE file included in this distribution.
7
+ //
8
+ // **********************************************************************
9
+
10
+ #include <IceUtil/MutexProtocol.h>
11
+
12
+ IceUtil::MutexProtocol
13
+ IceUtil::getDefaultMutexProtocol()
14
+ {
15
+ #ifdef _WIN32
16
+ return PrioNone;
17
+ #else
18
+ # if defined(ICE_PRIO_INHERIT) && defined(_POSIX_THREAD_PRIO_INHERIT) && _POSIX_THREAD_PRIO_INHERIT > 0
19
+ return PrioInherit;
20
+ # else
21
+ return PrioNone;
22
+ # endif
23
+ #endif
24
+ }
@@ -0,0 +1,1049 @@
1
+ // **********************************************************************
2
+ //
3
+ // Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
4
+ //
5
+ // This copy of Ice is licensed to you under the terms described in the
6
+ // ICE_LICENSE file included in this distribution.
7
+ //
8
+ // **********************************************************************
9
+
10
+ #include <IceUtil/Options.h>
11
+ #include <IceUtil/StringUtil.h>
12
+ #include <iostream>
13
+ #include <set>
14
+
15
+ using namespace std;
16
+ using namespace IceUtil;
17
+
18
+ IceUtilInternal::APIException::APIException(const char* file, int line, const string& r)
19
+ : IceUtil::Exception(file, line), reason(r)
20
+ {
21
+ }
22
+
23
+ IceUtilInternal::APIException::~APIException() throw()
24
+ {
25
+ }
26
+
27
+ const char* IceUtilInternal::APIException::_name = "IceUtilInternal::APIException";
28
+
29
+ string
30
+ IceUtilInternal::APIException::ice_name() const
31
+ {
32
+ return _name;
33
+ }
34
+
35
+ void
36
+ IceUtilInternal::APIException::ice_print(ostream& out) const
37
+ {
38
+ Exception::ice_print(out);
39
+ if(!reason.empty())
40
+ {
41
+ out << ": " << reason;
42
+ }
43
+ }
44
+
45
+ IceUtilInternal::APIException*
46
+ IceUtilInternal::APIException::ice_clone() const
47
+ {
48
+ return new APIException(*this);
49
+ }
50
+
51
+ void
52
+ IceUtilInternal::APIException::ice_throw() const
53
+ {
54
+ throw *this;
55
+ }
56
+
57
+ ostream&
58
+ IceUtilInternal::operator<<(ostream& out, const IceUtilInternal::APIException& ex)
59
+ {
60
+ ex.ice_print(out);
61
+ return out;
62
+ }
63
+
64
+ IceUtilInternal::BadOptException::BadOptException(const char* file, int line, const string& r)
65
+ : IceUtil::Exception(file, line), reason(r)
66
+ {
67
+ }
68
+
69
+ IceUtilInternal::BadOptException::~BadOptException() throw()
70
+ {
71
+ }
72
+
73
+ const char* IceUtilInternal::BadOptException::_name = "IceUtilInternal::BadOptException";
74
+
75
+ string
76
+ IceUtilInternal::BadOptException::ice_name() const
77
+ {
78
+ return _name;
79
+ }
80
+
81
+ void
82
+ IceUtilInternal::BadOptException::ice_print(ostream& out) const
83
+ {
84
+ Exception::ice_print(out);
85
+ if(!reason.empty())
86
+ {
87
+ out << ": " << reason;
88
+ }
89
+ }
90
+
91
+ IceUtilInternal::BadOptException*
92
+ IceUtilInternal::BadOptException::ice_clone() const
93
+ {
94
+ return new BadOptException(*this);
95
+ }
96
+
97
+ void
98
+ IceUtilInternal::BadOptException::ice_throw() const
99
+ {
100
+ throw *this;
101
+ }
102
+
103
+ ostream&
104
+ IceUtilInternal::operator<<(ostream& out, const IceUtilInternal::BadOptException& ex)
105
+ {
106
+ ex.ice_print(out);
107
+ return out;
108
+ }
109
+
110
+ IceUtilInternal::Options::Options()
111
+ : parseCalled(false)
112
+ {
113
+ }
114
+
115
+ void
116
+ IceUtilInternal::Options::checkArgs(const string& shortOpt, const string& longOpt, bool needArg, const string& dflt)
117
+ {
118
+ if(shortOpt.empty() && longOpt.empty())
119
+ {
120
+ throw IllegalArgumentException(__FILE__, __LINE__, "short and long option cannot both be empty");
121
+ }
122
+
123
+ if(!shortOpt.empty())
124
+ {
125
+ if(shortOpt.size() != 1)
126
+ {
127
+ string err = "`";
128
+ err += shortOpt;
129
+ err += "': a short option cannot specify more than one option";
130
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
131
+ }
132
+ if(shortOpt.find_first_of(" \t\n\r\f\v") != string::npos)
133
+ {
134
+ string err = "`";
135
+ err += shortOpt;
136
+ err += "': a short option cannot be whitespace";
137
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
138
+ }
139
+ if(shortOpt[0] == '-')
140
+ {
141
+ string err = "`";
142
+ err += shortOpt;
143
+ err += "': a short option cannot be `-'";
144
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
145
+ }
146
+ }
147
+
148
+ if(!longOpt.empty())
149
+ {
150
+ if(longOpt.find_first_of(" \t\n\r\f\v") != string::npos)
151
+ {
152
+ string err = "`";
153
+ err += longOpt;
154
+ err += "': a long option cannot contain whitespace";
155
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
156
+ }
157
+ if(longOpt[0] == '-')
158
+ {
159
+ string err = "`";
160
+ err += longOpt;
161
+ err += "': a long option must not contain a leading `-'";
162
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
163
+ }
164
+ }
165
+
166
+ if(!needArg && !dflt.empty())
167
+ {
168
+ throw IllegalArgumentException(__FILE__, __LINE__,
169
+ "a default value can be specified only for options requiring an argument");
170
+ }
171
+ }
172
+
173
+ void
174
+ IceUtilInternal::Options::addOpt(const string& shortOpt, const string& longOpt, ArgType at, string dflt, RepeatType rt)
175
+ {
176
+ RecMutex::Lock sync(_m);
177
+
178
+ if(parseCalled)
179
+ {
180
+ throw APIException(__FILE__, __LINE__, "cannot add options after parse() was called");
181
+ }
182
+
183
+ checkArgs(shortOpt, longOpt, at == NeedArg, dflt);
184
+
185
+ addValidOpt(shortOpt, longOpt, at, dflt, rt);
186
+ }
187
+
188
+ //
189
+ // Split a command line into argv-style arguments, applying
190
+ // bash quoting rules. The return value is the arguments
191
+ // in the command line, with all shell escapes applied, and
192
+ // quotes removed.
193
+ //
194
+
195
+ IceUtilInternal::Options::StringVector
196
+ IceUtilInternal::Options::split(const string& line)
197
+ {
198
+ const string IFS = " \t\n"; // Internal Field Separator.
199
+
200
+ //
201
+ // Strip leading and trailing whitespace.
202
+ //
203
+ string::size_type start = line.find_first_not_of(IFS);
204
+ if(start == string::npos)
205
+ {
206
+ return StringVector();
207
+ }
208
+ string::size_type end = line.find_last_not_of(IFS);
209
+ assert(end != string::npos);
210
+
211
+ string l(line, start, end - start + 1);
212
+
213
+ StringVector vec;
214
+
215
+ enum ParseState { Normal, DoubleQuote, SingleQuote, ANSIQuote };
216
+ ParseState state = Normal;
217
+
218
+ string arg;
219
+
220
+ for(string::size_type i = 0; i < l.size(); ++i)
221
+ {
222
+ char c = l[i];
223
+ switch(state)
224
+ {
225
+ case Normal:
226
+ {
227
+ switch(c)
228
+ {
229
+ case '\\':
230
+ {
231
+ //
232
+ // Ignore a backslash at the end of the string,
233
+ // and strip backslash-newline pairs. If a
234
+ // backslash is followed by a space, single quote,
235
+ // double quote, or dollar sign, we drop the backslash
236
+ // and write the space, single quote, double quote,
237
+ // or dollar sign. This is necessary to allow quotes
238
+ // to be escaped. Dropping the backslash preceding a
239
+ // space deviates from bash quoting rules, but is
240
+ // necessary so we don't drop backslashes from Windows
241
+ // path names.)
242
+ //
243
+ if(i < l.size() - 1 && l[++i] != '\n')
244
+ {
245
+ switch(l[i])
246
+ {
247
+ case ' ':
248
+ case '$':
249
+ case '\'':
250
+ case '"':
251
+ {
252
+ arg.push_back(l[i]);
253
+ break;
254
+ }
255
+ default:
256
+ {
257
+ arg.push_back('\\');
258
+ arg.push_back(l[i]);
259
+ break;
260
+ }
261
+ }
262
+ }
263
+ break;
264
+ }
265
+ case '\'':
266
+ {
267
+ state = SingleQuote;
268
+ break;
269
+ }
270
+ case '"':
271
+ {
272
+ state = DoubleQuote;
273
+ break;
274
+ }
275
+ case '$':
276
+ {
277
+ if(i < l.size() - 1 && l[i + 1] == '\'')
278
+ {
279
+ state = ANSIQuote; // Bash uses $'<text>' to allow ANSI escape sequences within <text>.
280
+ ++i;
281
+ }
282
+ else
283
+ {
284
+ arg.push_back('$');
285
+ }
286
+ break;
287
+ }
288
+ default:
289
+ {
290
+ if(IFS.find(l[i]) != string::npos)
291
+ {
292
+ vec.push_back(arg);
293
+ arg.clear();
294
+
295
+ //
296
+ // Move to start of next argument.
297
+ //
298
+ while(++i < l.size() && IFS.find(l[i]) != string::npos)
299
+ {
300
+ ;
301
+ }
302
+ --i;
303
+ }
304
+ else
305
+ {
306
+ arg.push_back(l[i]);
307
+ }
308
+ break;
309
+ }
310
+ }
311
+ break;
312
+ }
313
+ case DoubleQuote:
314
+ {
315
+ //
316
+ // Within double quotes, only backslash retains its special
317
+ // meaning, and only if followed by double quote, backslash,
318
+ // or newline. If not followed by one of these characters,
319
+ // both the backslash and the character are preserved.
320
+ //
321
+ if(c == '\\' && i < l.size() - 1)
322
+ {
323
+ switch(c = l[++i])
324
+ {
325
+ case '"':
326
+ case '\\':
327
+ case '\n':
328
+ {
329
+ arg.push_back(c);
330
+ break;
331
+ }
332
+ default:
333
+ {
334
+ arg.push_back('\\');
335
+ arg.push_back(c);
336
+ break;
337
+ }
338
+ }
339
+ }
340
+ else if(c == '"') // End of double-quote mode.
341
+ {
342
+ state = Normal;
343
+ }
344
+ else
345
+ {
346
+ arg.push_back(c); // Everything else is taken literally.
347
+ }
348
+ break;
349
+ }
350
+ case SingleQuote:
351
+ {
352
+ if(c == '\'') // End of single-quote mode.
353
+ {
354
+ state = Normal;
355
+ }
356
+ else
357
+ {
358
+ arg.push_back(c); // Everything else is taken literally.
359
+ }
360
+ break;
361
+ }
362
+ case ANSIQuote:
363
+ {
364
+ switch(c)
365
+ {
366
+ case '\\':
367
+ {
368
+ if(i == l.size() - 1)
369
+ {
370
+ break;
371
+ }
372
+ switch(c = l[++i])
373
+ {
374
+ //
375
+ // Single-letter escape sequences.
376
+ //
377
+ case 'a':
378
+ {
379
+ arg.push_back('\a');
380
+ break;
381
+ }
382
+ case 'b':
383
+ {
384
+ arg.push_back('\b');
385
+ break;
386
+ }
387
+ case 'f':
388
+ {
389
+ arg.push_back('\f');
390
+ break;
391
+ }
392
+ case 'n':
393
+ {
394
+ arg.push_back('\n');
395
+ break;
396
+ }
397
+ case 'r':
398
+ {
399
+ arg.push_back('\r');
400
+ break;
401
+ }
402
+ case 't':
403
+ {
404
+ arg.push_back('\t');
405
+ break;
406
+ }
407
+ case 'v':
408
+ {
409
+ arg.push_back('\v');
410
+ break;
411
+ }
412
+ case '\\':
413
+ {
414
+ arg.push_back('\\');
415
+ break;
416
+ }
417
+ case '\'':
418
+ {
419
+ arg.push_back('\'');
420
+ break;
421
+ }
422
+ case 'e': // Not ANSI-C, but used by bash.
423
+ {
424
+ arg.push_back('\033');
425
+ break;
426
+ }
427
+
428
+ //
429
+ // Process up to three octal digits.
430
+ //
431
+ case '0':
432
+ case '1':
433
+ case '2':
434
+ case '3':
435
+ case '4':
436
+ case '5':
437
+ case '6':
438
+ case '7':
439
+ {
440
+ static const string octalDigits = "01234567";
441
+ unsigned short us = 0;
442
+ string::size_type j;
443
+ for(j = i;
444
+ j < i + 3 && j < l.size() && octalDigits.find_first_of(c = l[j]) != string::npos;
445
+ ++j)
446
+ {
447
+ us = us * 8 + c - '0';
448
+ }
449
+ i = j - 1;
450
+ arg.push_back(static_cast<char>(us));
451
+ break;
452
+ }
453
+
454
+ //
455
+ // Process up to two hex digits.
456
+ //
457
+ case 'x':
458
+ {
459
+ if(i < l.size() - 1 && !isxdigit(static_cast<unsigned char>(l[i + 1])))
460
+ {
461
+ arg.push_back('\\');
462
+ arg.push_back('x');
463
+ break;
464
+ }
465
+
466
+ Int64 ull = 0;
467
+ string::size_type j;
468
+ for(j = i + 1; j < i + 3 && j < l.size() &&
469
+ isxdigit(static_cast<unsigned char>(c = l[j])); ++j)
470
+ {
471
+ ull *= 16;
472
+ if(isdigit(static_cast<unsigned char>(c)))
473
+ {
474
+ ull += c - '0';
475
+ }
476
+ else if(islower(static_cast<unsigned char>(c)))
477
+ {
478
+ ull += c - 'a' + 10;
479
+ }
480
+ else
481
+ {
482
+ ull += c - 'A' + 10;
483
+ }
484
+ }
485
+ i = j - 1;
486
+ arg.push_back(static_cast<char>(ull));
487
+ break;
488
+ }
489
+
490
+ //
491
+ // Process control-chars.
492
+ //
493
+ case 'c':
494
+ {
495
+ c = l[++i];
496
+ if(IceUtilInternal::isAlpha(c) || c == '@' || (c >= '[' && c <= '_'))
497
+ {
498
+ arg.push_back(static_cast<char>(toupper(static_cast<unsigned char>(c)) - '@'));
499
+ }
500
+ else
501
+ {
502
+ //
503
+ // Bash does not define what should happen if a \c
504
+ // is not followed by a recognized control character.
505
+ // We simply treat this case like other unrecognized
506
+ // escape sequences, that is, we preserve the escape
507
+ // sequence unchanged.
508
+ //
509
+ arg.push_back('\\');
510
+ arg.push_back('c');
511
+ arg.push_back(c);
512
+ }
513
+ break;
514
+ }
515
+
516
+ //
517
+ // If inside an ANSI-quoted string, a backslash isn't followed by
518
+ // one of the recognized characters, both the backslash and the
519
+ // character are preserved.
520
+ //
521
+ default:
522
+ {
523
+ arg.push_back('\\');
524
+ arg.push_back(c);
525
+ break;
526
+ }
527
+ }
528
+ break;
529
+ }
530
+ case '\'': // End of ANSI-quote mode.
531
+ {
532
+ state = Normal;
533
+ break;
534
+ }
535
+ default:
536
+ {
537
+ arg.push_back(c); // Everything else is taken literally.
538
+ break;
539
+ }
540
+ }
541
+ break;
542
+ }
543
+ default:
544
+ {
545
+ assert(!"Impossible parse state");
546
+ break;
547
+ }
548
+ }
549
+ }
550
+
551
+ switch(state)
552
+ {
553
+ case Normal:
554
+ {
555
+ vec.push_back(arg);
556
+ break;
557
+ }
558
+ case SingleQuote:
559
+ {
560
+ throw BadOptException(__FILE__, __LINE__, "missing closing single quote");
561
+ break;
562
+ }
563
+ case DoubleQuote:
564
+ {
565
+ throw BadOptException(__FILE__, __LINE__, "missing closing double quote");
566
+ break;
567
+ }
568
+ case ANSIQuote:
569
+ {
570
+ throw BadOptException(__FILE__, __LINE__, "unterminated $' quote");
571
+ break;
572
+ }
573
+ default:
574
+ {
575
+ assert(!"Impossible parse state");
576
+ break;
577
+ }
578
+ }
579
+
580
+ return vec;
581
+ }
582
+
583
+ //
584
+ // Parse a vector of arguments and return the non-option
585
+ // arguments as the return value. Throw BadOptException if any of the
586
+ // options are invalid.
587
+ // Note that args[0] is ignored because that is the name
588
+ // of the executable.
589
+ //
590
+
591
+ IceUtilInternal::Options::StringVector
592
+ IceUtilInternal::Options::parse(const StringVector& args)
593
+ {
594
+ RecMutex::Lock sync(_m);
595
+
596
+ if(parseCalled)
597
+ {
598
+ throw APIException(__FILE__, __LINE__, "cannot call parse() more than once on the same Option instance");
599
+ }
600
+ parseCalled = true;
601
+
602
+ set<string> seenNonRepeatableOpts; // To catch repeated non-repeatable options.
603
+
604
+ StringVector result;
605
+
606
+ string::size_type i;
607
+ for(i = 1; i < args.size(); ++i)
608
+ {
609
+ if(args[i] == "-" || args[i] == "--")
610
+ {
611
+ ++i;
612
+ break; // "-" and "--" indicate end of options.
613
+ }
614
+
615
+ string opt;
616
+ ValidOpts::iterator pos;
617
+ bool argDone = false;
618
+
619
+ if(args[i].compare(0, 2, "--") == 0)
620
+ {
621
+ //
622
+ // Long option. If the option has an argument, it can either be separated by '='
623
+ // or appear as a separate argument. For example, "--name value" is the same
624
+ // as "--name=value".
625
+ //
626
+ string::size_type p = args[i].find('=', 2);
627
+ if(p != string::npos)
628
+ {
629
+ opt = args[i].substr(2, p - 2);
630
+ }
631
+ else
632
+ {
633
+ opt = args[i].substr(2);
634
+ }
635
+
636
+ pos = checkOpt(opt, LongOpt);
637
+
638
+ if(pos->second->repeat == NoRepeat)
639
+ {
640
+ set<string>::iterator seenPos = seenNonRepeatableOpts.find(opt);
641
+ if(seenPos != seenNonRepeatableOpts.end())
642
+ {
643
+ string err = "`--";
644
+ err += opt + ":' option cannot be repeated";
645
+ throw BadOptException(__FILE__, __LINE__, err);
646
+ }
647
+ seenNonRepeatableOpts.insert(seenPos, opt);
648
+ string synonym = getSynonym(opt);
649
+ if(!synonym.empty())
650
+ {
651
+ seenNonRepeatableOpts.insert(synonym);
652
+ }
653
+ }
654
+
655
+ if(p != string::npos)
656
+ {
657
+ if(pos->second->arg == NoArg && p != args[i].size() - 1)
658
+ {
659
+ string err = "`";
660
+ err += args[i];
661
+ err += "': option does not take an argument";
662
+ throw BadOptException(__FILE__, __LINE__, err);
663
+ }
664
+ setOpt(opt, "", args[i].substr(p + 1), pos->second->repeat);
665
+ argDone = true;
666
+ }
667
+ }
668
+ else if(!args[i].empty() && args[i][0] == '-')
669
+ {
670
+ //
671
+ // Short option.
672
+ //
673
+ for(string::size_type p = 1; p < args[i].size(); ++p)
674
+ {
675
+ opt.clear();
676
+ opt.push_back(args[i][p]);
677
+ pos = checkOpt(opt, ShortOpt);
678
+
679
+ if(pos->second->repeat == NoRepeat)
680
+ {
681
+ set<string>::iterator seenPos = seenNonRepeatableOpts.find(opt);
682
+ if(seenPos != seenNonRepeatableOpts.end())
683
+ {
684
+ string err = "`-";
685
+ err += opt + ":' option cannot be repeated";
686
+ throw BadOptException(__FILE__, __LINE__, err);
687
+ }
688
+ seenNonRepeatableOpts.insert(seenPos, opt);
689
+ string synonym = getSynonym(opt);
690
+ if(!synonym.empty())
691
+ {
692
+ seenNonRepeatableOpts.insert(synonym);
693
+ }
694
+ }
695
+
696
+ if(pos->second->arg == NeedArg && p != args[i].size() - 1)
697
+ {
698
+ string optArg = args[i].substr(p + 1);
699
+ setOpt(opt, "", optArg, pos->second->repeat);
700
+ argDone = true;
701
+ break;
702
+ }
703
+ }
704
+ }
705
+ else
706
+ {
707
+ //
708
+ // Not an option or option argument.
709
+ //
710
+ result.push_back(args[i]);
711
+ argDone = true;
712
+ }
713
+
714
+ if(!argDone)
715
+ {
716
+ if(pos->second->arg == NeedArg) // Need an argument that is separated by whitespace.
717
+ {
718
+ if(i == args.size() - 1)
719
+ {
720
+ string err = "`-";
721
+ if(opt.size() != 1)
722
+ {
723
+ err += "-";
724
+ }
725
+ err += opt;
726
+ err += "' option requires an argument";
727
+ throw BadOptException(__FILE__, __LINE__, err);
728
+ }
729
+ setOpt(opt, "", args[++i], pos->second->repeat);
730
+ }
731
+ else
732
+ {
733
+ setOpt(opt, "", "1", pos->second->repeat);
734
+ }
735
+ }
736
+ }
737
+
738
+ _synonyms.clear(); // Don't need the contents anymore.
739
+
740
+ while(i < args.size())
741
+ {
742
+ result.push_back(args[i++]);
743
+ }
744
+
745
+ return result;
746
+ }
747
+
748
+ //
749
+ // Parse a normal argc/argv pair and return the non-option
750
+ // arguments as the return value.
751
+ //
752
+
753
+ IceUtilInternal::Options::StringVector
754
+ IceUtilInternal::Options::parse(int argc, const char* const argv[])
755
+ {
756
+ StringVector vec;
757
+ for(int i = 0; i < argc; ++i)
758
+ {
759
+ vec.push_back(argv[i]);
760
+ }
761
+ return parse(vec);
762
+ }
763
+
764
+ bool
765
+ IceUtilInternal::Options::isSet(const string& opt) const
766
+ {
767
+ RecMutex::Lock sync(_m);
768
+
769
+ if(!parseCalled)
770
+ {
771
+ throw APIException(__FILE__, __LINE__, "cannot lookup options before calling parse()");
772
+ }
773
+
774
+ ValidOpts::const_iterator pos = checkOptIsValid(opt);
775
+ return pos->second->repeat == NoRepeat ? _opts.find(opt) != _opts.end() : _ropts.find(opt) != _ropts.end();
776
+ }
777
+
778
+ string
779
+ IceUtilInternal::Options::optArg(const string& opt) const
780
+ {
781
+ RecMutex::Lock sync(_m);
782
+
783
+ if(!parseCalled)
784
+ {
785
+ throw APIException(__FILE__, __LINE__, "cannot lookup options before calling parse()");
786
+ }
787
+
788
+ ValidOpts::const_iterator pos = checkOptHasArg(opt);
789
+
790
+ if(pos->second->repeat == Repeat)
791
+ {
792
+ string err = "`-";
793
+ if(pos->second->length == LongOpt)
794
+ {
795
+ err.push_back('-');
796
+ }
797
+ err += opt;
798
+ err += "': is a repeating option -- use argVec() to get its arguments";
799
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
800
+ }
801
+
802
+ Opts::const_iterator p = _opts.find(opt);
803
+ if(p == _opts.end())
804
+ {
805
+ return "";
806
+ }
807
+ return p->second->val;
808
+ }
809
+
810
+ IceUtilInternal::Options::StringVector
811
+ IceUtilInternal::Options::argVec(const string& opt) const
812
+ {
813
+ RecMutex::Lock sync(_m);
814
+
815
+ if(!parseCalled)
816
+ {
817
+ throw APIException(__FILE__, __LINE__, "cannot lookup options before calling parse()");
818
+ }
819
+
820
+ ValidOpts::const_iterator pos = checkOptHasArg(opt);
821
+
822
+ if(pos->second->repeat == NoRepeat)
823
+ {
824
+ string err = "`-";
825
+ if(pos->second->length == LongOpt)
826
+ {
827
+ err.push_back('-');
828
+ }
829
+ err += opt + "': is a non-repeating option -- use optArg() to get its argument";
830
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
831
+ }
832
+
833
+ ROpts::const_iterator p = _ropts.find(opt);
834
+ return p == _ropts.end() ? StringVector() : p->second->vals;
835
+ }
836
+
837
+ void
838
+ IceUtilInternal::Options::addValidOpt(const string& shortOpt, const string& longOpt,
839
+ ArgType at, const string& dflt, RepeatType rt)
840
+ {
841
+ if(!shortOpt.empty() && _validOpts.find(shortOpt) != _validOpts.end())
842
+ {
843
+ string err = "`";
844
+ err += shortOpt;
845
+ err += "': duplicate option";
846
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
847
+ }
848
+ if(!longOpt.empty() && _validOpts.find(longOpt) != _validOpts.end())
849
+ {
850
+ string err = "`";
851
+ err += longOpt;
852
+ err += "': duplicate option";
853
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
854
+ }
855
+
856
+ ODPtr odp = new OptionDetails;
857
+ odp->arg = at;
858
+ odp->repeat = rt;
859
+ odp->hasDefault = !dflt.empty();
860
+
861
+ if(!shortOpt.empty())
862
+ {
863
+ odp->length = ShortOpt;
864
+ _validOpts[shortOpt] = odp;
865
+ }
866
+ if(!longOpt.empty())
867
+ {
868
+ odp->length = LongOpt;
869
+ _validOpts[longOpt] = odp;
870
+ }
871
+
872
+ updateSynonyms(shortOpt, longOpt);
873
+
874
+ if(at == NeedArg && !dflt.empty())
875
+ {
876
+ setOpt(shortOpt, longOpt, dflt, rt);
877
+ }
878
+ }
879
+
880
+ IceUtilInternal::Options::ValidOpts::iterator
881
+ IceUtilInternal::Options::checkOpt(const string& opt, LengthType lt)
882
+ {
883
+ ValidOpts::iterator pos = _validOpts.find(opt);
884
+ if(pos == _validOpts.end())
885
+ {
886
+ string err = "invalid option: `-";
887
+ if(lt == LongOpt)
888
+ {
889
+ err.push_back('-');
890
+ }
891
+ err += opt;
892
+ err.push_back('\'');
893
+ throw BadOptException(__FILE__, __LINE__, err);
894
+ }
895
+ return pos;
896
+ }
897
+
898
+ void
899
+ IceUtilInternal::Options::setOpt(const string& opt1, const string& opt2, const string& val, RepeatType rt)
900
+ {
901
+ //
902
+ // opt1 and opt2 (short and long opt) can't both be empty.
903
+ //
904
+ assert(!(opt1.empty() && opt2.empty()));
905
+
906
+ if(rt == NoRepeat)
907
+ {
908
+ setNonRepeatingOpt(opt1, val);
909
+ setNonRepeatingOpt(opt2, val);
910
+ }
911
+ else
912
+ {
913
+ setRepeatingOpt(opt1, val);
914
+ setRepeatingOpt(opt2, val);
915
+ }
916
+ }
917
+
918
+ void
919
+ IceUtilInternal::Options::setNonRepeatingOpt(const string& opt, const string& val)
920
+ {
921
+ if(opt.empty())
922
+ {
923
+ return;
924
+ }
925
+
926
+ //
927
+ // The option must not have been set before or, if it was set, it must have
928
+ // been because of a default value.
929
+ //
930
+ assert(_opts.find(opt) == _opts.end() || _validOpts.find(opt)->second->hasDefault);
931
+
932
+ OValPtr ovp = new OptionValue;
933
+ ovp->val = val;
934
+ _opts[opt] = ovp;
935
+
936
+ const string synonym = getSynonym(opt);
937
+ if(!synonym.empty())
938
+ {
939
+ _opts[synonym] = ovp;
940
+ }
941
+ }
942
+
943
+ void
944
+ IceUtilInternal::Options::setRepeatingOpt(const string& opt, const string& val)
945
+ {
946
+ if(opt.empty())
947
+ {
948
+ return;
949
+ }
950
+
951
+ ValidOpts::const_iterator vpos = _validOpts.find(opt);
952
+ assert(vpos != _validOpts.end());
953
+
954
+ ROpts::iterator pos = _ropts.find(opt);
955
+ const string synonym = getSynonym(opt);
956
+ ROpts::iterator spos = _ropts.find(synonym);
957
+
958
+ if(pos != _ropts.end())
959
+ {
960
+ assert(_validOpts.find(opt) != _validOpts.end());
961
+ assert(vpos->second->repeat == Repeat);
962
+
963
+ _ropts[opt] = pos->second;
964
+ if(vpos->second->hasDefault && pos->second->vals.size() == 1)
965
+ {
966
+ pos->second->vals[0] = val;
967
+ vpos->second->hasDefault = false;
968
+ }
969
+ else
970
+ {
971
+ pos->second->vals.push_back(val);
972
+ }
973
+ }
974
+ else if(spos != _ropts.end())
975
+ {
976
+ assert(_validOpts.find(synonym) != _validOpts.end());
977
+ assert(_validOpts.find(synonym)->second->repeat == Repeat);
978
+
979
+ _ropts[synonym] = spos->second;
980
+ if(vpos->second->hasDefault && spos->second->vals.size() == 1)
981
+ {
982
+ spos->second->vals[0] = val;
983
+ vpos->second->hasDefault = false;
984
+ }
985
+ else
986
+ {
987
+ spos->second->vals.push_back(val);
988
+ }
989
+ }
990
+ else
991
+ {
992
+ OVecPtr ovp = new OptionValueVector;
993
+ ovp->vals.push_back(val);
994
+ _ropts[opt] = ovp;
995
+ if(!synonym.empty())
996
+ {
997
+ _ropts[synonym] = ovp;
998
+ }
999
+ }
1000
+ }
1001
+
1002
+ IceUtilInternal::Options::ValidOpts::const_iterator
1003
+ IceUtilInternal::Options::checkOptIsValid(const string& opt) const
1004
+ {
1005
+ ValidOpts::const_iterator pos = _validOpts.find(opt);
1006
+ if(pos == _validOpts.end())
1007
+ {
1008
+ string err = "`";
1009
+ err += opt;
1010
+ err += "': invalid option";
1011
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
1012
+ }
1013
+ return pos;
1014
+ }
1015
+
1016
+ IceUtilInternal::Options::ValidOpts::const_iterator
1017
+ IceUtilInternal::Options::checkOptHasArg(const string& opt) const
1018
+ {
1019
+ ValidOpts::const_iterator pos = checkOptIsValid(opt);
1020
+ if(pos->second->arg == NoArg)
1021
+ {
1022
+ string err = "`-";
1023
+ if(pos->second->length == LongOpt)
1024
+ {
1025
+ err.push_back('-');
1026
+ }
1027
+ err += opt;
1028
+ err += "': option does not take arguments";
1029
+ throw IllegalArgumentException(__FILE__, __LINE__, err);
1030
+ }
1031
+ return pos;
1032
+ }
1033
+
1034
+ void
1035
+ IceUtilInternal::Options::updateSynonyms(const ::std::string& shortOpt, const ::std::string& longOpt)
1036
+ {
1037
+ if(!shortOpt.empty() && !longOpt.empty())
1038
+ {
1039
+ _synonyms[shortOpt] = longOpt;
1040
+ _synonyms[longOpt] = shortOpt;
1041
+ }
1042
+ }
1043
+
1044
+ string
1045
+ IceUtilInternal::Options::getSynonym(const ::std::string& optName) const
1046
+ {
1047
+ Synonyms::const_iterator pos = _synonyms.find(optName);
1048
+ return pos != _synonyms.end() ? pos->second : string("");
1049
+ }