zeroc-ice 3.6b1

Sign up to get free protection for your applications and to get access to all the features.
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