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,30 @@
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_STREAM_F_H
11
+ #define ICE_STREAM_F_H
12
+
13
+ #include <IceUtil/Shared.h>
14
+
15
+ #include <Ice/Handle.h>
16
+
17
+ namespace Ice
18
+ {
19
+
20
+ class InputStream;
21
+ ICE_API IceUtil::Shared* upCast(::Ice::InputStream*);
22
+ typedef IceInternal::Handle< InputStream > InputStreamPtr;
23
+
24
+ class OutputStream;
25
+ ICE_API IceUtil::Shared* upCast(::Ice::OutputStream*);
26
+ typedef IceInternal::Handle< OutputStream > OutputStreamPtr;
27
+
28
+ }
29
+
30
+ #endif
@@ -0,0 +1,877 @@
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_STREAM_TRAITS_H
11
+ #define ICE_STREAM_TRAITS_H
12
+
13
+ #include <IceUtil/ScopedArray.h>
14
+ #include <IceUtil/Iterator.h>
15
+
16
+ #include <Ice/ObjectF.h>
17
+
18
+ namespace Ice
19
+ {
20
+
21
+ // The stream helper category
22
+ // Allows streams to select the desired StreamHelper for a given streamable object;
23
+ // see StreamableTraits below.
24
+ //
25
+
26
+ typedef int StreamHelperCategory;
27
+
28
+ const StreamHelperCategory StreamHelperCategoryUnknown = 0;
29
+ const StreamHelperCategory StreamHelperCategoryBuiltin = 1;
30
+ const StreamHelperCategory StreamHelperCategoryStruct = 2;
31
+ const StreamHelperCategory StreamHelperCategoryStructClass = 3; // struct with cpp:class metadata
32
+ const StreamHelperCategory StreamHelperCategoryEnum = 4;
33
+ const StreamHelperCategory StreamHelperCategorySequence = 5;
34
+ const StreamHelperCategory StreamHelperCategoryDictionary = 6;
35
+ const StreamHelperCategory StreamHelperCategoryProxy = 7;
36
+ const StreamHelperCategory StreamHelperCategoryClass = 8;
37
+ const StreamHelperCategory StreamHelperCategoryUserException = 9;
38
+
39
+ //
40
+ // The optional format.
41
+ //
42
+ // Optional data members and parameters are encoded with a specific
43
+ // optional format. This optional format describes how the data is encoded
44
+ // and how it can be skipped by the unmarshaling code if the optional
45
+ // isn't known to the receiver.
46
+ //
47
+ enum OptionalFormat
48
+ {
49
+ OptionalFormatF1 = 0, // Fixed 1-byte encoding
50
+ OptionalFormatF2 = 1, // Fixed 2 bytes encoding
51
+ OptionalFormatF4 = 2, // Fixed 4 bytes encoding
52
+ OptionalFormatF8 = 3, // Fixed 8 bytes encoding
53
+ OptionalFormatSize = 4, // "Size encoding" on 1 to 5 bytes, e.g. enum, class identifier
54
+ OptionalFormatVSize = 5, // "Size encoding" on 1 to 5 bytes followed by data, e.g. string, fixed size
55
+ // struct, or containers whose size can be computed prior to marshaling
56
+ OptionalFormatFSize = 6, // Fixed size on 4 bytes followed by data, e.g. variable-size struct, container.
57
+ OptionalFormatClass = 7
58
+ };
59
+
60
+
61
+ //
62
+ // Is the provided type a container?
63
+ // For now, the implementation only checks if there is a T::iterator typedef
64
+ // using SFINAE
65
+ //
66
+ template<typename T>
67
+ struct IsContainer
68
+ {
69
+ template<typename C>
70
+ static char test(typename C::iterator*);
71
+
72
+ template<typename C>
73
+ static long test(...);
74
+
75
+ static const bool value = sizeof(test<T>(0)) == sizeof(char);
76
+ };
77
+
78
+ //
79
+ // Is the provided type a map?
80
+ // For now, the implementation only checks if there is a T::mapped_type typedef
81
+ // using SFINAE
82
+ //
83
+ template<typename T>
84
+ struct IsMap
85
+ {
86
+ template<typename C>
87
+ static char test(typename C::mapped_type*);
88
+
89
+ template<typename C>
90
+ static long test(...);
91
+
92
+ static const bool value = IsContainer<T>::value && sizeof(test<T>(0)) == sizeof(char);
93
+ };
94
+
95
+ //
96
+ // Base traits template.
97
+ // Types with no specialized trait use this trait.
98
+ //
99
+ template<typename T, typename Enabler = void>
100
+ struct StreamableTraits
101
+ {
102
+ static const StreamHelperCategory helper = IsMap<T>::value ? StreamHelperCategoryDictionary :
103
+ (IsContainer<T>::value ? StreamHelperCategorySequence : StreamHelperCategoryUnknown);
104
+
105
+ //
106
+ // When extracting a sequence<T> from a stream, we can ensure the
107
+ // stream has at least StreamableTraits<T>::minWireSize * size bytes
108
+ // For containers, the minWireSize is 1 (just 1 byte for an empty container).
109
+ //
110
+ static const int minWireSize = 1;
111
+
112
+ //
113
+ // Is this type encoded on a fixed number of bytes?
114
+ // Used only for marshaling/unmarshaling optional data members and parameters.
115
+ //
116
+ static const bool fixedLength = false;
117
+ };
118
+
119
+ //
120
+ // StreamableTraits specialization for array / range mapped sequences
121
+ // The type can be a std::pair<T, T> or a
122
+ // std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> >
123
+ //
124
+ template<typename T, typename U>
125
+ struct StreamableTraits< ::std::pair<T, U> >
126
+ {
127
+ static const StreamHelperCategory helper = StreamHelperCategorySequence;
128
+ static const int minWireSize = 1;
129
+ static const bool fixedLength = false;
130
+ };
131
+
132
+ //
133
+ // StreamableTraits specialization for user exceptions.
134
+ //
135
+ template<>
136
+ struct StreamableTraits<UserException>
137
+ {
138
+ static const StreamHelperCategory helper = StreamHelperCategoryUserException;
139
+
140
+ //
141
+ // There is no sequence/dictionary of UserException (so no need for minWireSize)
142
+ // and no optional UserException (so no need for fixedLength)
143
+ //
144
+ };
145
+
146
+
147
+ //
148
+ // StreamableTraits specialization for builtins (these are needed for sequence
149
+ // marshaling to figure out the minWireSize of each built-in).
150
+ //
151
+ template<>
152
+ struct StreamableTraits<bool>
153
+ {
154
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
155
+ static const int minWireSize = 1;
156
+ static const bool fixedLength = true;
157
+ };
158
+
159
+ template<>
160
+ struct StreamableTraits<Byte>
161
+ {
162
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
163
+ static const int minWireSize = 1;
164
+ static const bool fixedLength = true;
165
+ };
166
+
167
+ template<>
168
+ struct StreamableTraits<Short>
169
+ {
170
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
171
+ static const int minWireSize = 2;
172
+ static const bool fixedLength = true;
173
+ };
174
+
175
+ template<>
176
+ struct StreamableTraits<Int>
177
+ {
178
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
179
+ static const int minWireSize = 4;
180
+ static const bool fixedLength = true;
181
+ };
182
+
183
+ template<>
184
+ struct StreamableTraits<Long>
185
+ {
186
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
187
+ static const int minWireSize = 8;
188
+ static const bool fixedLength = true;
189
+ };
190
+
191
+ template<>
192
+ struct StreamableTraits<Float>
193
+ {
194
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
195
+ static const int minWireSize = 4;
196
+ static const bool fixedLength = true;
197
+ };
198
+
199
+ template<>
200
+ struct StreamableTraits<Double>
201
+ {
202
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
203
+ static const int minWireSize = 8;
204
+ static const bool fixedLength = true;
205
+ };
206
+
207
+ template<>
208
+ struct StreamableTraits< ::std::string>
209
+ {
210
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
211
+ static const int minWireSize = 1;
212
+ static const bool fixedLength = false;
213
+ };
214
+
215
+ template<>
216
+ struct StreamableTraits< ::std::wstring>
217
+ {
218
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
219
+ static const int minWireSize = 1;
220
+ static const bool fixedLength = false;
221
+ };
222
+
223
+ //
224
+ // vector<bool> is a special type in C++: the streams are responsible
225
+ // to handle it like a built-in type.
226
+ //
227
+ template<>
228
+ struct StreamableTraits< ::std::vector<bool> >
229
+ {
230
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
231
+ static const int minWireSize = 1;
232
+ static const bool fixedLength = false;
233
+ };
234
+
235
+
236
+ template<typename T>
237
+ struct StreamableTraits< ::IceInternal::ProxyHandle<T> >
238
+ {
239
+ static const StreamHelperCategory helper = StreamHelperCategoryProxy;
240
+ static const int minWireSize = 2;
241
+ static const bool fixedLength = false;
242
+ };
243
+
244
+ template<typename T>
245
+ struct StreamableTraits< ::IceInternal::Handle<T> >
246
+ {
247
+ static const StreamHelperCategory helper = StreamHelperCategoryClass;
248
+ static const int minWireSize = 1;
249
+ static const bool fixedLength = false;
250
+ };
251
+
252
+ //
253
+ // StreamHelper templates used by streams to read and write data.
254
+ //
255
+
256
+ // Base StreamHelper template; it must be specialized for each type
257
+ template<typename T, StreamHelperCategory st>
258
+ struct StreamHelper;
259
+
260
+
261
+ // Helper for builtins, delegates read/write to the stream.
262
+ template<typename T>
263
+ struct StreamHelper<T, StreamHelperCategoryBuiltin>
264
+ {
265
+ template<class S> static inline void
266
+ write(S* stream, const T& v)
267
+ {
268
+ stream->write(v);
269
+ }
270
+
271
+ template<class S> static inline void
272
+ read(S* stream, T& v)
273
+ {
274
+ stream->read(v);
275
+ }
276
+ };
277
+
278
+ // "helpers" for the StreamHelper<T, StreamHelperCategoryStruct[Class]> below
279
+ // We generate specializations, which can be instantiated explicitly and exported from DLLs
280
+ //
281
+
282
+ template<typename T, typename S>
283
+ struct StreamWriter;
284
+
285
+ template<typename T, typename S>
286
+ struct StreamReader;
287
+
288
+ // Helper for structs
289
+ template<typename T>
290
+ struct StreamHelper<T, StreamHelperCategoryStruct>
291
+ {
292
+ template<class S> static inline void
293
+ write(S* stream, const T& v)
294
+ {
295
+ StreamWriter<T, S>::write(stream, v);
296
+ }
297
+
298
+ template<class S> static inline void
299
+ read(S* stream, T& v)
300
+ {
301
+ StreamReader<T, S>::read(stream, v);
302
+ }
303
+ };
304
+
305
+
306
+ // Helper for class structs
307
+ template<typename T>
308
+ struct StreamHelper<T, StreamHelperCategoryStructClass>
309
+ {
310
+ template<class S> static inline void
311
+ write(S* stream, const T& v)
312
+ {
313
+ StreamWriter<T, S>::write(stream, v);
314
+ }
315
+
316
+ template<class S> static inline void
317
+ read(S* stream, T& v)
318
+ {
319
+ v = new typename T::element_type;
320
+ StreamReader<T, S>::read(stream, v);
321
+ }
322
+ };
323
+
324
+ // Helper for enums
325
+ template<typename T>
326
+ struct StreamHelper<T, StreamHelperCategoryEnum>
327
+ {
328
+ template<class S> static inline void
329
+ write(S* stream, const T& v)
330
+ {
331
+ if(static_cast<Int>(v) < StreamableTraits<T>::minValue || static_cast<Int>(v) > StreamableTraits<T>::maxValue)
332
+ {
333
+ IceInternal::Ex::throwMarshalException(__FILE__, __LINE__, "enumerator out of range");
334
+ }
335
+ stream->writeEnum(static_cast<Int>(v), StreamableTraits<T>::maxValue);
336
+ }
337
+
338
+ template<class S> static inline void
339
+ read(S* stream, T& v)
340
+ {
341
+ Int value = stream->readEnum(StreamableTraits<T>::maxValue);
342
+ if(value < StreamableTraits<T>::minValue || value > StreamableTraits<T>::maxValue)
343
+ {
344
+ IceInternal::Ex::throwMarshalException(__FILE__, __LINE__, "enumerator out of range");
345
+ }
346
+ v = static_cast<T>(value);
347
+ }
348
+ };
349
+
350
+ // Helper for sequences
351
+ template<typename T>
352
+ struct StreamHelper<T, StreamHelperCategorySequence>
353
+ {
354
+ template<class S> static inline void
355
+ write(S* stream, const T& v)
356
+ {
357
+ stream->writeSize(static_cast<Int>(v.size()));
358
+ for(typename T::const_iterator p = v.begin(); p != v.end(); ++p)
359
+ {
360
+ stream->write(*p);
361
+ }
362
+ }
363
+
364
+ template<class S> static inline void
365
+ read(S* stream, T& v)
366
+ {
367
+ Int sz = stream->readAndCheckSeqSize(StreamableTraits<typename T::value_type>::minWireSize);
368
+ T(sz).swap(v);
369
+ for(typename T::iterator p = v.begin(); p != v.end(); ++p)
370
+ {
371
+ stream->read(*p);
372
+ }
373
+ }
374
+ };
375
+
376
+ // Helper for array and range:array custom sequence parameters
377
+ template<typename T>
378
+ struct StreamHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence>
379
+ {
380
+ template<class S> static inline void
381
+ write(S* stream, const std::pair<const T*, const T*>& v)
382
+ {
383
+ stream->write(v.first, v.second);
384
+ }
385
+
386
+ template<class S> static inline void
387
+ read(S* stream, std::pair<const T*, const T*>& v)
388
+ {
389
+ stream->read(v);
390
+ }
391
+ };
392
+
393
+ // Helper for range custom sequence parameters
394
+ template<typename T>
395
+ struct StreamHelper<std::pair<T, T>, StreamHelperCategorySequence>
396
+ {
397
+ template<class S> static inline void
398
+ write(S* stream, const std::pair<T, T>& v)
399
+ {
400
+ stream->writeSize(static_cast<Int>(IceUtilInternal::distance(v.first, v.second)));
401
+ for(T p = v.first; p != v.second; ++p)
402
+ {
403
+ stream->write(*p);
404
+ }
405
+ }
406
+
407
+ template<class S> static inline void
408
+ read(S* stream, std::pair<T, T>& v)
409
+ {
410
+ stream->read(v);
411
+ }
412
+ };
413
+
414
+ template<>
415
+ struct StreamHelper<std::pair< ::std::vector<bool>::const_iterator,
416
+ ::std::vector<bool>::const_iterator>, StreamHelperCategorySequence>
417
+ {
418
+ template<class S> static inline void
419
+ write(S* stream, const std::pair< ::std::vector<bool>::const_iterator,
420
+ ::std::vector<bool>::const_iterator>& v)
421
+ {
422
+ stream->writeSize(static_cast<Int>(IceUtilInternal::distance(v.first, v.second)));
423
+ for(::std::vector<bool>::const_iterator p = v.first; p != v.second; ++p)
424
+ {
425
+ stream->write(static_cast<bool>(*p));
426
+ }
427
+ }
428
+
429
+ // no read: only used for marshaling
430
+ };
431
+
432
+ // Helper for zero-copy array sequence parameters
433
+ template<typename T>
434
+ struct StreamHelper<std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> >, StreamHelperCategorySequence>
435
+ {
436
+ template<class S> static inline void
437
+ read(S* stream, std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> >& v)
438
+ {
439
+ stream->read(v.second, v.first);
440
+ }
441
+
442
+ // no write: only used for unmarshaling
443
+ };
444
+
445
+ // Helper for dictionaries
446
+ template<typename T>
447
+ struct StreamHelper<T, StreamHelperCategoryDictionary>
448
+ {
449
+ template<class S> static inline void
450
+ write(S* stream, const T& v)
451
+ {
452
+ stream->writeSize(static_cast<Int>(v.size()));
453
+ for(typename T::const_iterator p = v.begin(); p != v.end(); ++p)
454
+ {
455
+ stream->write(p->first);
456
+ stream->write(p->second);
457
+ }
458
+ }
459
+
460
+ template<class S> static inline void
461
+ read(S* stream, T& v)
462
+ {
463
+ Int sz = stream->readSize();
464
+ v.clear();
465
+ while(sz--)
466
+ {
467
+ typename T::value_type p;
468
+ stream->read(const_cast<typename T::key_type&>(p.first));
469
+ typename T::iterator i = v.insert(v.end(), p);
470
+ stream->read(i->second);
471
+ }
472
+ }
473
+ };
474
+
475
+ // Helper for user exceptions
476
+ template<typename T>
477
+ struct StreamHelper<T, StreamHelperCategoryUserException>
478
+ {
479
+ template<class S> static inline void
480
+ write(S* stream, const T& v)
481
+ {
482
+ stream->writeException(v);
483
+ }
484
+
485
+ // no read: only used for marshaling
486
+ };
487
+
488
+ // Helper for proxies
489
+ template<typename T>
490
+ struct StreamHelper<T, StreamHelperCategoryProxy>
491
+ {
492
+ template<class S> static inline void
493
+ write(S* stream, const T& v)
494
+ {
495
+ stream->write(v);
496
+ }
497
+
498
+ template<class S> static inline void
499
+ read(S* stream, T& v)
500
+ {
501
+ stream->read(v);
502
+ }
503
+ };
504
+
505
+ // Helper for classes
506
+ template<typename T>
507
+ struct StreamHelper<T, StreamHelperCategoryClass>
508
+ {
509
+ template<class S> static inline void
510
+ write(S* stream, const T& v)
511
+ {
512
+ stream->write(v);
513
+ }
514
+
515
+ template<class S> static inline void
516
+ read(S* stream, T& v)
517
+ {
518
+ stream->read(v);
519
+ }
520
+ };
521
+
522
+
523
+ //
524
+ // Helpers to read/write optional attributes or members.
525
+ //
526
+
527
+ //
528
+ // Extract / compute the optionalFormat
529
+ // This is used _only_ for the base StreamOptionalHelper below
530
+ // /!\ Do not use in StreamOptionalHelper specializations, and do
531
+ // not provide specialization not handled by the base StreamOptionalHelper
532
+ //
533
+ template<StreamHelperCategory st, int minWireSize, bool fixedLength>
534
+ struct GetOptionalFormat;
535
+
536
+ template<>
537
+ struct GetOptionalFormat<StreamHelperCategoryBuiltin, 1, true>
538
+ {
539
+ static const OptionalFormat value = OptionalFormatF1;
540
+ };
541
+
542
+ template<>
543
+ struct GetOptionalFormat<StreamHelperCategoryBuiltin, 2, true>
544
+ {
545
+ static const OptionalFormat value = OptionalFormatF2;
546
+ };
547
+
548
+ template<>
549
+ struct GetOptionalFormat<StreamHelperCategoryBuiltin, 4, true>
550
+ {
551
+ static const OptionalFormat value = OptionalFormatF4;
552
+ };
553
+
554
+ template<>
555
+ struct GetOptionalFormat<StreamHelperCategoryBuiltin, 8, true>
556
+ {
557
+ static const OptionalFormat value = OptionalFormatF8;
558
+ };
559
+
560
+ template<>
561
+ struct GetOptionalFormat<StreamHelperCategoryBuiltin, 1, false>
562
+ {
563
+ static const OptionalFormat value = OptionalFormatVSize;
564
+ };
565
+
566
+ template<>
567
+ struct GetOptionalFormat<StreamHelperCategoryClass, 1, false>
568
+ {
569
+ static const OptionalFormat value = OptionalFormatClass;
570
+ };
571
+
572
+ template<int minWireSize>
573
+ struct GetOptionalFormat<StreamHelperCategoryEnum, minWireSize, false>
574
+ {
575
+ static const OptionalFormat value = OptionalFormatSize;
576
+ };
577
+
578
+
579
+ // Base helper: simply read/write the data
580
+ template<typename T, StreamHelperCategory st, bool fixedLength>
581
+ struct StreamOptionalHelper
582
+ {
583
+ typedef StreamableTraits<T> Traits;
584
+
585
+ // If this optionalFormat fails to compile, you must either define your specialization
586
+ // for GetOptionalFormat (in which case the optional data will be marshaled/unmarshaled
587
+ // with straight calls to write/read on the stream), or define your own
588
+ // StreamOptionalHelper specialization (which gives you more control over marshaling)
589
+ //
590
+ static const OptionalFormat optionalFormat = GetOptionalFormat<st, Traits::minWireSize, fixedLength>::value;
591
+
592
+ template<class S> static inline void
593
+ write(S* stream, const T& v)
594
+ {
595
+ stream->write(v);
596
+ }
597
+
598
+ template<class S> static inline void
599
+ read(S* stream, T& v)
600
+ {
601
+ stream->read(v);
602
+ }
603
+ };
604
+
605
+ // Helper to write fixed size structs
606
+ template<typename T>
607
+ struct StreamOptionalHelper<T, StreamHelperCategoryStruct, true>
608
+ {
609
+ static const OptionalFormat optionalFormat = OptionalFormatVSize;
610
+
611
+ template<class S> static inline void
612
+ write(S* stream, const T& v)
613
+ {
614
+ stream->writeSize(StreamableTraits<T>::minWireSize);
615
+ stream->write(v);
616
+ }
617
+
618
+ template<class S> static inline void
619
+ read(S* stream, T& v)
620
+ {
621
+ stream->skipSize();
622
+ stream->read(v);
623
+ }
624
+ };
625
+
626
+ // Helper to write variable size structs
627
+ template<typename T>
628
+ struct StreamOptionalHelper<T, StreamHelperCategoryStruct, false>
629
+ {
630
+ static const OptionalFormat optionalFormat = OptionalFormatFSize;
631
+
632
+ template<class S> static inline void
633
+ write(S* stream, const T& v)
634
+ {
635
+ typename S::size_type pos = stream->startSize();
636
+ stream->write(v);
637
+ stream->endSize(pos);
638
+ }
639
+
640
+ template<class S> static inline void
641
+ read(S* stream, T& v)
642
+ {
643
+ stream->skip(4);
644
+ stream->read(v);
645
+ }
646
+ };
647
+
648
+ // Class structs are encoded like structs
649
+ template<typename T, bool fixedLength>
650
+ struct StreamOptionalHelper<T, StreamHelperCategoryStructClass, fixedLength> : StreamOptionalHelper<T, StreamHelperCategoryStruct, fixedLength>
651
+ {
652
+ };
653
+
654
+ // Optional proxies are encoded like variable size structs, using the FSize encoding
655
+ template<typename T>
656
+ struct StreamOptionalHelper<T, StreamHelperCategoryProxy, false> : StreamOptionalHelper<T, StreamHelperCategoryStruct, false>
657
+ {
658
+ };
659
+
660
+
661
+ //
662
+ // Helpers to read/write optional sequences or dictionaries
663
+ //
664
+ template<typename T, bool fixedLength, int sz>
665
+ struct StreamOptionalContainerHelper;
666
+
667
+ //
668
+ // Encode containers of variable size elements with the FSize optional
669
+ // type, since we can't easily figure out the size of the container
670
+ // before encoding. This is the same encoding as variable size structs
671
+ // so we just re-use its implementation.
672
+ //
673
+ template<typename T, int sz>
674
+ struct StreamOptionalContainerHelper<T, false, sz>
675
+ {
676
+ static const OptionalFormat optionalFormat = OptionalFormatFSize;
677
+
678
+ template<class S> static inline void
679
+ write(S* stream, const T& v, Int)
680
+ {
681
+ StreamOptionalHelper<T, StreamHelperCategoryStruct, false>::write(stream, v);
682
+ }
683
+
684
+ template<class S> static inline void
685
+ read(S* stream, T& v)
686
+ {
687
+ StreamOptionalHelper<T, StreamHelperCategoryStruct, false>::read(stream, v);
688
+ }
689
+ };
690
+
691
+ //
692
+ // Encode containers of fixed size elements with the VSize optional
693
+ // type since we can figure out the size of the container before
694
+ // encoding.
695
+ //
696
+ template<typename T, int sz>
697
+ struct StreamOptionalContainerHelper<T, true, sz>
698
+ {
699
+ static const OptionalFormat optionalFormat = OptionalFormatVSize;
700
+
701
+ template<class S> static inline void
702
+ write(S* stream, const T& v, Int n)
703
+ {
704
+ //
705
+ // The container size is the number of elements * the size of
706
+ // an element and the size-encoded number of elements (1 or
707
+ // 5 depending on the number of elements).
708
+ //
709
+ stream->writeSize(sz * n + (n < 255 ? 1 : 5));
710
+ stream->write(v);
711
+ }
712
+
713
+ template<class S> static inline void
714
+ read(S* stream, T& v)
715
+ {
716
+ stream->skipSize();
717
+ stream->read(v);
718
+ }
719
+ };
720
+
721
+ //
722
+ // Optimization: containers of 1 byte elements are encoded with the
723
+ // VSize optional type. There's no need to encode an additional size
724
+ // for those, the number of elements of the container can be used to
725
+ // skip the optional.
726
+ //
727
+ template<typename T>
728
+ struct StreamOptionalContainerHelper<T, true, 1>
729
+ {
730
+ static const OptionalFormat optionalFormat = OptionalFormatVSize;
731
+
732
+ template<class S> static inline void
733
+ write(S* stream, const T& v, Int)
734
+ {
735
+ stream->write(v);
736
+ }
737
+
738
+ template<class S> static inline void
739
+ read(S* stream, T& v)
740
+ {
741
+ stream->read(v);
742
+ }
743
+ };
744
+
745
+
746
+ //
747
+ // Helper to write sequences, delegates to the optional container
748
+ // helper template partial specializations.
749
+ //
750
+ template<typename T>
751
+ struct StreamOptionalHelper<T, StreamHelperCategorySequence, false>
752
+ {
753
+ typedef typename T::value_type E;
754
+ static const int size = StreamableTraits<E>::minWireSize;
755
+ static const bool fixedLength = StreamableTraits<E>::fixedLength;
756
+
757
+ // The optional type of a sequence depends on whether or not elements are fixed
758
+ // or variable size elements and their size.
759
+ static const OptionalFormat optionalFormat = StreamOptionalContainerHelper<T, fixedLength, size>::optionalFormat;
760
+
761
+ template<class S> static inline void
762
+ write(S* stream, const T& v)
763
+ {
764
+ StreamOptionalContainerHelper<T, fixedLength, size>::write(stream, v, static_cast<Int>(v.size()));
765
+ }
766
+
767
+ template<class S> static inline void
768
+ read(S* stream, T& v)
769
+ {
770
+ StreamOptionalContainerHelper<T, fixedLength, size>::read(stream, v);
771
+ }
772
+ };
773
+
774
+ template<typename T>
775
+ struct StreamOptionalHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence, false>
776
+ {
777
+ typedef std::pair<const T*, const T*> P;
778
+ static const int size = StreamableTraits<T>::minWireSize;
779
+ static const bool fixedLength = StreamableTraits<T>::fixedLength;
780
+
781
+ // The optional type of a sequence depends on whether or not elements are fixed
782
+ // or variable size elements and their size.
783
+ static const OptionalFormat optionalFormat = StreamOptionalContainerHelper<P, fixedLength, size>::optionalFormat;
784
+
785
+ template<class S> static inline void
786
+ write(S* stream, const P& v)
787
+ {
788
+ Int n = static_cast<Int>(v.second - v.first);
789
+ StreamOptionalContainerHelper<P, fixedLength, size>::write(stream, v, n);
790
+ }
791
+
792
+ template<class S> static inline void
793
+ read(S* stream, P& v)
794
+ {
795
+ StreamOptionalContainerHelper<P, fixedLength, size>::read(stream, v);
796
+ }
797
+ };
798
+
799
+ template<typename T>
800
+ struct StreamOptionalHelper<std::pair<T, T>, StreamHelperCategorySequence, false>
801
+ {
802
+ typedef std::pair<T, T> P;
803
+ static const int size = StreamableTraits<typename T::value_type>::minWireSize;
804
+ static const bool fixedLength = StreamableTraits<typename T::value_type>::fixedLength;
805
+
806
+ // The optional type of a sequence depends on whether or not elements are fixed
807
+ // or variable size elements and their size.
808
+ static const OptionalFormat optionalFormat = StreamOptionalContainerHelper<P, fixedLength, size>::optionalFormat;
809
+
810
+ template<class S> static inline void
811
+ write(S* stream, const P& v)
812
+ {
813
+ Int n = static_cast<Int>(v.second - v.first);
814
+ StreamOptionalContainerHelper<P, fixedLength, size>::write(stream, v, n);
815
+ }
816
+
817
+ template<class S> static inline void
818
+ read(S* stream, P& v)
819
+ {
820
+ StreamOptionalContainerHelper<P, fixedLength, size>::read(stream, v);
821
+ }
822
+ };
823
+
824
+ template<typename T>
825
+ struct StreamOptionalHelper<std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> >,
826
+ StreamHelperCategorySequence, false>
827
+ {
828
+ typedef std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> > P;
829
+ static const int size = StreamableTraits<T>::minWireSize;
830
+ static const bool fixedLength = StreamableTraits<T>::fixedLength;
831
+
832
+ // The optional type of a sequence depends on whether or not elements are fixed
833
+ // or variable size elements and their size.
834
+ static const OptionalFormat optionalFormat = StreamOptionalContainerHelper<P, fixedLength, size>::optionalFormat;
835
+
836
+ template<class S> static inline void
837
+ read(S* stream, P& v)
838
+ {
839
+ StreamOptionalContainerHelper<P, fixedLength, size>::read(stream, v);
840
+ }
841
+
842
+ // no write: only used for unmarshaling
843
+ };
844
+
845
+ //
846
+ // Helper to write dictionaries, delegates to the optional container
847
+ // helper template partial specializations.
848
+ //
849
+ template<typename T>
850
+ struct StreamOptionalHelper<T, StreamHelperCategoryDictionary, false>
851
+ {
852
+ typedef typename T::key_type K;
853
+ typedef typename T::mapped_type V;
854
+
855
+ static const int size = StreamableTraits<K>::minWireSize + StreamableTraits<V>::minWireSize;
856
+ static const bool fixedLength = StreamableTraits<K>::fixedLength && StreamableTraits<V>::fixedLength;
857
+
858
+ // The optional type of a dictionary depends on whether or not elements are fixed
859
+ // or variable size elements.
860
+ static const OptionalFormat optionalFormat = StreamOptionalContainerHelper<T, fixedLength, size>::optionalFormat;
861
+
862
+ template<class S> static inline void
863
+ write(S* stream, const T& v)
864
+ {
865
+ StreamOptionalContainerHelper<T, fixedLength, size>::write(stream, v, static_cast<Int>(v.size()));
866
+ }
867
+
868
+ template<class S> static inline void
869
+ read(S* stream, T& v)
870
+ {
871
+ StreamOptionalContainerHelper<T, fixedLength, size>::read(stream, v);
872
+ }
873
+ };
874
+
875
+ }
876
+
877
+ #endif