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,363 @@
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_ASYNC_RESULT_H
11
+ #define ICE_ASYNC_RESULT_H
12
+
13
+ #include <IceUtil/Monitor.h>
14
+ #include <IceUtil/Mutex.h>
15
+ #include <IceUtil/UniquePtr.h>
16
+ #include <Ice/LocalObject.h>
17
+ #include <Ice/CommunicatorF.h>
18
+ #include <Ice/ConnectionF.h>
19
+ #include <Ice/ProxyF.h>
20
+ #include <Ice/InstanceF.h>
21
+ #include <Ice/RequestHandlerF.h>
22
+ #include <Ice/AsyncResultF.h>
23
+ #include <Ice/ObserverHelper.h>
24
+ #include <Ice/BasicStream.h>
25
+
26
+ #ifdef ICE_CPP11
27
+ # include <functional> // for std::function
28
+ #endif
29
+
30
+ namespace IceInternal
31
+ {
32
+
33
+ class CallbackBase;
34
+ typedef IceUtil::Handle<CallbackBase> CallbackBasePtr;
35
+
36
+ }
37
+
38
+ namespace Ice
39
+ {
40
+
41
+ class ICE_API AsyncResult : public Ice::LocalObject, private IceUtil::noncopyable
42
+ {
43
+ public:
44
+
45
+ void cancel();
46
+
47
+ Int getHash() const;
48
+
49
+ CommunicatorPtr getCommunicator() const;
50
+ virtual ConnectionPtr getConnection() const;
51
+ virtual ObjectPrx getProxy() const;
52
+
53
+ bool isCompleted() const;
54
+ void waitForCompleted();
55
+
56
+ bool isSent() const;
57
+ void waitForSent();
58
+
59
+ void throwLocalException() const;
60
+
61
+ bool sentSynchronously() const;
62
+ LocalObjectPtr getCookie() const;
63
+ const std::string& getOperation() const;
64
+
65
+ ::IceInternal::BasicStream* __startReadParams()
66
+ {
67
+ _is.startReadEncaps();
68
+ return &_is;
69
+ }
70
+ void __endReadParams()
71
+ {
72
+ _is.endReadEncaps();
73
+ }
74
+ void __readEmptyParams()
75
+ {
76
+ _is.skipEmptyEncaps();
77
+ }
78
+ void __readParamEncaps(const ::Ice::Byte*& encaps, ::Ice::Int& sz)
79
+ {
80
+ _is.readEncaps(encaps, sz);
81
+ }
82
+ void __throwUserException();
83
+
84
+ bool __wait();
85
+
86
+ static void __check(const AsyncResultPtr&, const ::IceProxy::Ice::Object*, const ::std::string&);
87
+ static void __check(const AsyncResultPtr&, const Connection*, const ::std::string&);
88
+ static void __check(const AsyncResultPtr&, const Communicator*, const ::std::string&);
89
+
90
+ protected:
91
+
92
+ static void __check(const AsyncResultPtr&, const ::std::string&);
93
+
94
+ AsyncResult(const CommunicatorPtr&, const IceInternal::InstancePtr&, const std::string&,
95
+ const IceInternal::CallbackBasePtr&, const LocalObjectPtr&);
96
+ virtual ~AsyncResult(); // Must be heap-allocated
97
+
98
+ bool sent(bool);
99
+ bool finished(bool);
100
+ bool finished(const Exception&);
101
+
102
+ void invokeSentAsync();
103
+ void invokeCompletedAsync();
104
+
105
+ void invokeSent();
106
+ void invokeCompleted();
107
+
108
+ void cancel(const LocalException&);
109
+ virtual void cancelable(const IceInternal::CancellationHandlerPtr&);
110
+ void checkCanceled();
111
+
112
+ void warning(const std::exception&) const;
113
+ void warning() const;
114
+
115
+ //
116
+ // This virtual method is necessary for the communicator flush
117
+ // batch requests implementation.
118
+ //
119
+ virtual IceInternal::InvocationObserver& getObserver()
120
+ {
121
+ return _observer;
122
+ }
123
+
124
+ const IceInternal::InstancePtr _instance;
125
+ IceInternal::InvocationObserver _observer;
126
+ Ice::ConnectionPtr _cachedConnection;
127
+ bool _sentSynchronously;
128
+
129
+ IceInternal::BasicStream _is;
130
+
131
+ IceUtil::Monitor<IceUtil::Mutex> _monitor;
132
+
133
+ private:
134
+
135
+ const CommunicatorPtr _communicator;
136
+ const std::string& _operation;
137
+ const IceInternal::CallbackBasePtr _callback;
138
+ const LocalObjectPtr _cookie;
139
+ IceUtil::UniquePtr<Exception> _exception;
140
+
141
+ IceInternal::CancellationHandlerPtr _cancellationHandler;
142
+ IceUtil::UniquePtr<Ice::LocalException> _cancellationException;
143
+
144
+ static const unsigned char OK;
145
+ static const unsigned char Done;
146
+ static const unsigned char Sent;
147
+ static const unsigned char EndCalled;
148
+ static const unsigned char Canceled;
149
+ unsigned char _state;
150
+ };
151
+
152
+ }
153
+
154
+ namespace IceInternal
155
+ {
156
+
157
+ //
158
+ // Base class for all callbacks.
159
+ //
160
+ class ICE_API CallbackBase : public IceUtil::Shared
161
+ {
162
+ public:
163
+
164
+ void checkCallback(bool, bool);
165
+
166
+ virtual void completed(const ::Ice::AsyncResultPtr&) const = 0;
167
+ virtual CallbackBasePtr verify(const ::Ice::LocalObjectPtr&) = 0;
168
+ virtual void sent(const ::Ice::AsyncResultPtr&) const = 0;
169
+ virtual bool hasSentCallback() const = 0;
170
+ };
171
+
172
+ //
173
+ // Base class for generic callbacks.
174
+ //
175
+ class ICE_API GenericCallbackBase : virtual public CallbackBase
176
+ {
177
+ };
178
+
179
+ //
180
+ // See comments in OutgoingAsync.cpp
181
+ //
182
+ extern ICE_API CallbackBasePtr __dummyCallback;
183
+
184
+ //
185
+ // Generic callback template that requires the caller to down-cast the
186
+ // proxy and the cookie that are obtained from the AsyncResult.
187
+ //
188
+ template<class T>
189
+ class AsyncCallback : public GenericCallbackBase
190
+ {
191
+ public:
192
+
193
+ typedef T callback_type;
194
+ typedef IceUtil::Handle<T> TPtr;
195
+
196
+ typedef void (T::*Callback)(const ::Ice::AsyncResultPtr&);
197
+
198
+ AsyncCallback(const TPtr& instance, Callback cb, Callback sentcb = 0) :
199
+ _callback(instance), _completed(cb), _sent(sentcb)
200
+ {
201
+ checkCallback(instance, cb != 0);
202
+ }
203
+
204
+ virtual void completed(const ::Ice::AsyncResultPtr& result) const
205
+ {
206
+ (_callback.get()->*_completed)(result);
207
+ }
208
+
209
+ virtual CallbackBasePtr verify(const ::Ice::LocalObjectPtr&)
210
+ {
211
+ return this; // Nothing to do, the cookie is not type-safe.
212
+ }
213
+
214
+ virtual void sent(const ::Ice::AsyncResultPtr& result) const
215
+ {
216
+ if(_sent)
217
+ {
218
+ (_callback.get()->*_sent)(result);
219
+ }
220
+ }
221
+
222
+ virtual bool hasSentCallback() const
223
+ {
224
+ return _sent != 0;
225
+ }
226
+
227
+ private:
228
+
229
+ TPtr _callback;
230
+ Callback _completed;
231
+ Callback _sent;
232
+ };
233
+
234
+ #ifdef ICE_CPP11
235
+
236
+ template<typename T> struct callback_type
237
+ {
238
+ static const int value = 1;
239
+ };
240
+
241
+ template<> struct callback_type<void(const ::Ice::AsyncResultPtr&)>
242
+ {
243
+ static const int value = 2;
244
+ };
245
+
246
+ template<> struct callback_type<void(const ::Ice::Exception&)>
247
+ {
248
+ static const int value = 3;
249
+ };
250
+
251
+ template<typename Callable, typename = void> struct callable_type
252
+ {
253
+ static const int value = 1;
254
+ };
255
+
256
+ template<class Callable> struct callable_type<Callable, typename ::std::enable_if<
257
+ ::std::is_class<Callable>::value &&
258
+ !::std::is_bind_expression<Callable>::value>::type>
259
+ {
260
+ template<typename T, T> struct TypeCheck;
261
+ template<typename T> struct AsyncResultCallback
262
+ {
263
+ typedef void (T::*ok)(const ::Ice::AsyncResultPtr&) const;
264
+ };
265
+ template<typename T> struct ExceptionCallback
266
+ {
267
+ typedef void (T::*ok)(const ::Ice::Exception&) const;
268
+ };
269
+
270
+ typedef char (&other)[1];
271
+ typedef char (&asyncResult)[2];
272
+ typedef char (&exception)[3];
273
+
274
+ template<typename T> static other check(...);
275
+ template<typename T> static asyncResult check(TypeCheck<typename AsyncResultCallback<T>::ok, &T::operator()>*);
276
+ template<typename T> static exception check(TypeCheck<typename ExceptionCallback<T>::ok, &T::operator()>*);
277
+
278
+ enum { value = sizeof(check<Callable>(0)) };
279
+ };
280
+
281
+ template<> struct callable_type<void(*)(const ::Ice::AsyncResultPtr&)>
282
+ {
283
+ static const int value = 2;
284
+ };
285
+
286
+ template<> struct callable_type<void(*)(const ::Ice::Exception&)>
287
+ {
288
+ static const int value = 3;
289
+ };
290
+
291
+ template<typename Callable, typename Callback> struct is_callable
292
+ {
293
+ static const bool value = callable_type<Callable>::value == callback_type<Callback>::value;
294
+ };
295
+
296
+ template<class S> class Function : public std::function<S>
297
+ {
298
+
299
+ public:
300
+
301
+ template<typename T> Function(T f, typename ::std::enable_if<is_callable<T, S>::value>::type* = 0)
302
+ : std::function<S>(f)
303
+ {
304
+ }
305
+
306
+ Function()
307
+ {
308
+ }
309
+
310
+ Function(::std::nullptr_t) : ::std::function<S>(nullptr)
311
+ {
312
+ }
313
+ };
314
+
315
+ #else
316
+
317
+ template<class S> class Function
318
+ {
319
+ public:
320
+ Function()
321
+ {
322
+ }
323
+ };
324
+
325
+ #endif
326
+
327
+ }
328
+
329
+ namespace Ice
330
+ {
331
+
332
+ typedef IceUtil::Handle< ::IceInternal::GenericCallbackBase> CallbackPtr;
333
+
334
+ template<class T> CallbackPtr
335
+ newCallback(const IceUtil::Handle<T>& instance,
336
+ void (T::*cb)(const AsyncResultPtr&),
337
+ void (T::*sentcb)(const AsyncResultPtr&) = 0)
338
+ {
339
+ return new ::IceInternal::AsyncCallback<T>(instance, cb, sentcb);
340
+ }
341
+
342
+ template<class T> CallbackPtr
343
+ newCallback(T* instance,
344
+ void (T::*cb)(const AsyncResultPtr&),
345
+ void (T::*sentcb)(const AsyncResultPtr&) = 0)
346
+ {
347
+ return new ::IceInternal::AsyncCallback<T>(instance, cb, sentcb);
348
+ }
349
+
350
+ #ifdef ICE_CPP11
351
+
352
+ ICE_API CallbackPtr
353
+ newCallback(const ::IceInternal::Function<void (const AsyncResultPtr&)>&,
354
+ const ::IceInternal::Function<void (const AsyncResultPtr&)>& =
355
+ ::IceInternal::Function<void (const AsyncResultPtr&)>());
356
+ #endif
357
+
358
+ //
359
+ // Operation callbacks are specified in Proxy.h
360
+ //
361
+ }
362
+
363
+ #endif
@@ -0,0 +1,26 @@
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_ASYNC_RESULT_F_H
11
+ #define ICE_ASYNC_RESULT_F_H
12
+
13
+ #include <IceUtil/Shared.h>
14
+
15
+ #include <Ice/Handle.h>
16
+
17
+ namespace Ice
18
+ {
19
+
20
+ class AsyncResult;
21
+ ICE_API IceUtil::Shared* upCast(::Ice::AsyncResult*);
22
+ typedef IceInternal::Handle<AsyncResult> AsyncResultPtr;
23
+
24
+ }
25
+
26
+ #endif
@@ -0,0 +1,1315 @@
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_BASIC_STREAM_H
11
+ #define ICE_BASIC_STREAM_H
12
+
13
+ #include <IceUtil/StringConverter.h>
14
+ #include <Ice/InstanceF.h>
15
+ #include <Ice/Object.h>
16
+ #include <Ice/ProxyF.h>
17
+ #include <Ice/ObjectFactoryF.h>
18
+ #include <Ice/ObjectFactoryManagerF.h>
19
+ #include <Ice/Buffer.h>
20
+ #include <Ice/Protocol.h>
21
+ #include <Ice/SlicedDataF.h>
22
+ #include <Ice/UserExceptionFactory.h>
23
+ #include <Ice/StreamHelpers.h>
24
+ #include <Ice/FactoryTable.h>
25
+
26
+ namespace Ice
27
+ {
28
+
29
+ class UserException;
30
+
31
+ }
32
+
33
+ namespace IceInternal
34
+ {
35
+
36
+ template<typename T> inline void
37
+ patchHandle(void* addr, const Ice::ObjectPtr& v)
38
+ {
39
+ IceInternal::Handle<T>* p = static_cast<IceInternal::Handle<T>*>(addr);
40
+ __patch(*p, v); // Generated __patch method, necessary for forward declarations.
41
+ }
42
+
43
+ class ICE_API BasicStream : public Buffer
44
+ {
45
+ public:
46
+
47
+ typedef size_t size_type;
48
+ typedef void (*PatchFunc)(void*, const Ice::ObjectPtr&);
49
+
50
+ BasicStream(Instance*, const Ice::EncodingVersion&);
51
+ BasicStream(Instance*, const Ice::EncodingVersion&, const Ice::Byte*, const Ice::Byte*);
52
+ ~BasicStream()
53
+ {
54
+ // Inlined for performance reasons.
55
+
56
+ if(_currentReadEncaps != &_preAllocatedReadEncaps || _currentWriteEncaps != &_preAllocatedWriteEncaps)
57
+ {
58
+ clear(); // Not inlined.
59
+ }
60
+ }
61
+
62
+ void clear();
63
+
64
+ //
65
+ // Must return Instance*, because we don't hold an InstancePtr for
66
+ // optimization reasons (see comments below).
67
+ //
68
+ Instance* instance() const { return _instance; } // Inlined for performance reasons.
69
+
70
+ void* closure() const;
71
+ void* closure(void*);
72
+
73
+ void swap(BasicStream&);
74
+ void resetEncaps();
75
+
76
+ void resize(Container::size_type sz)
77
+ {
78
+ b.resize(sz);
79
+ i = b.end();
80
+ }
81
+
82
+ void startWriteObject(const Ice::SlicedDataPtr& data)
83
+ {
84
+ assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
85
+ _currentWriteEncaps->encoder->startInstance(ObjectSlice, data);
86
+ }
87
+ void endWriteObject()
88
+ {
89
+ assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
90
+ _currentWriteEncaps->encoder->endInstance();
91
+ }
92
+
93
+ void startReadObject()
94
+ {
95
+ assert(_currentReadEncaps && _currentReadEncaps->decoder);
96
+ _currentReadEncaps->decoder->startInstance(ObjectSlice);
97
+ }
98
+ Ice::SlicedDataPtr endReadObject(bool preserve)
99
+ {
100
+ assert(_currentReadEncaps && _currentReadEncaps->decoder);
101
+ return _currentReadEncaps->decoder->endInstance(preserve);
102
+ }
103
+
104
+ void startWriteException(const Ice::SlicedDataPtr& data)
105
+ {
106
+ assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
107
+ _currentWriteEncaps->encoder->startInstance(ExceptionSlice, data);
108
+ }
109
+ void endWriteException()
110
+ {
111
+ assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
112
+ _currentWriteEncaps->encoder->endInstance();
113
+ }
114
+
115
+ void startReadException()
116
+ {
117
+ assert(_currentReadEncaps && _currentReadEncaps->decoder);
118
+ _currentReadEncaps->decoder->startInstance(ExceptionSlice);
119
+ }
120
+ Ice::SlicedDataPtr endReadException(bool preserve)
121
+ {
122
+ assert(_currentReadEncaps && _currentReadEncaps->decoder);
123
+ return _currentReadEncaps->decoder->endInstance(preserve);
124
+ }
125
+
126
+ void startWriteEncaps();
127
+
128
+ void startWriteEncaps(const Ice::EncodingVersion& encoding, Ice::FormatType format)
129
+ {
130
+ checkSupportedEncoding(encoding);
131
+
132
+ WriteEncaps* oldEncaps = _currentWriteEncaps;
133
+ if(!oldEncaps) // First allocated encaps?
134
+ {
135
+ _currentWriteEncaps = &_preAllocatedWriteEncaps;
136
+ }
137
+ else
138
+ {
139
+ _currentWriteEncaps = new WriteEncaps();
140
+ _currentWriteEncaps->previous = oldEncaps;
141
+ }
142
+ _currentWriteEncaps->format = format;
143
+ _currentWriteEncaps->encoding = encoding;
144
+ _currentWriteEncaps->start = b.size();
145
+
146
+ write(Ice::Int(0)); // Placeholder for the encapsulation length.
147
+ write(_currentWriteEncaps->encoding);
148
+ }
149
+ void endWriteEncaps()
150
+ {
151
+ assert(_currentWriteEncaps);
152
+
153
+ // Size includes size and version.
154
+ const Ice::Int sz = static_cast<Ice::Int>(b.size() - _currentWriteEncaps->start);
155
+ write(sz, &(*(b.begin() + _currentWriteEncaps->start)));
156
+
157
+ WriteEncaps* oldEncaps = _currentWriteEncaps;
158
+ _currentWriteEncaps = _currentWriteEncaps->previous;
159
+ if(oldEncaps == &_preAllocatedWriteEncaps)
160
+ {
161
+ oldEncaps->reset();
162
+ }
163
+ else
164
+ {
165
+ delete oldEncaps;
166
+ }
167
+ }
168
+ void endWriteEncapsChecked(); // Used by public stream API.
169
+ void writeEmptyEncaps(const Ice::EncodingVersion& encoding)
170
+ {
171
+ checkSupportedEncoding(encoding);
172
+ write(Ice::Int(6)); // Size
173
+ write(encoding);
174
+ }
175
+ void writeEncaps(const Ice::Byte* v, Ice::Int sz)
176
+ {
177
+ if(sz < 6)
178
+ {
179
+ throwEncapsulationException(__FILE__, __LINE__);
180
+ }
181
+
182
+ Container::size_type position = b.size();
183
+ resize(position + sz);
184
+ memcpy(&b[position], &v[0], sz);
185
+ }
186
+
187
+ const Ice::EncodingVersion& getWriteEncoding() const
188
+ {
189
+ return _currentWriteEncaps ? _currentWriteEncaps->encoding : _encoding;
190
+ }
191
+
192
+ const Ice::EncodingVersion& startReadEncaps()
193
+ {
194
+ ReadEncaps* oldEncaps = _currentReadEncaps;
195
+ if(!oldEncaps) // First allocated encaps?
196
+ {
197
+ _currentReadEncaps = &_preAllocatedReadEncaps;
198
+ }
199
+ else
200
+ {
201
+ _currentReadEncaps = new ReadEncaps();
202
+ _currentReadEncaps->previous = oldEncaps;
203
+ }
204
+ _currentReadEncaps->start = i - b.begin();
205
+
206
+ //
207
+ // I don't use readSize() and writeSize() for encapsulations,
208
+ // because when creating an encapsulation, I must know in advance
209
+ // how many bytes the size information will require in the data
210
+ // stream. If I use an Int, it is always 4 bytes. For
211
+ // readSize()/writeSize(), it could be 1 or 5 bytes.
212
+ //
213
+ Ice::Int sz;
214
+ read(sz);
215
+ if(sz < 6)
216
+ {
217
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
218
+ }
219
+ if(i - sizeof(Ice::Int) + sz > b.end())
220
+ {
221
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
222
+ }
223
+ _currentReadEncaps->sz = sz;
224
+
225
+ read(_currentReadEncaps->encoding);
226
+ checkSupportedEncoding(_currentReadEncaps->encoding); // Make sure the encoding is supported
227
+
228
+ return _currentReadEncaps->encoding;
229
+ }
230
+
231
+ void endReadEncaps()
232
+ {
233
+ assert(_currentReadEncaps);
234
+
235
+ if(_currentReadEncaps->encoding != Ice::Encoding_1_0)
236
+ {
237
+ skipOpts();
238
+ if(i != b.begin() + _currentReadEncaps->start + _currentReadEncaps->sz)
239
+ {
240
+ throwEncapsulationException(__FILE__, __LINE__);
241
+ }
242
+ }
243
+ else if(i != b.begin() + _currentReadEncaps->start + _currentReadEncaps->sz)
244
+ {
245
+ if(i + 1 != b.begin() + _currentReadEncaps->start + _currentReadEncaps->sz)
246
+ {
247
+ throwEncapsulationException(__FILE__, __LINE__);
248
+ }
249
+
250
+ //
251
+ // Ice version < 3.3 had a bug where user exceptions with
252
+ // class members could be encoded with a trailing byte
253
+ // when dispatched with AMD. So we tolerate an extra byte
254
+ // in the encapsulation.
255
+ //
256
+ ++i;
257
+ }
258
+
259
+ ReadEncaps* oldEncaps = _currentReadEncaps;
260
+ _currentReadEncaps = _currentReadEncaps->previous;
261
+ if(oldEncaps == &_preAllocatedReadEncaps)
262
+ {
263
+ oldEncaps->reset();
264
+ }
265
+ else
266
+ {
267
+ delete oldEncaps;
268
+ }
269
+ }
270
+ Ice::EncodingVersion skipEmptyEncaps()
271
+ {
272
+ Ice::Int sz;
273
+ read(sz);
274
+ if(sz != static_cast<Ice::Int>(sizeof(Ice::Int)) + 2)
275
+ {
276
+ throwEncapsulationException(__FILE__, __LINE__);
277
+ }
278
+
279
+ if(i + 2 > b.end())
280
+ {
281
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
282
+ }
283
+
284
+ Ice::EncodingVersion encoding;
285
+ read(encoding);
286
+ return encoding;
287
+ }
288
+ void endReadEncapsChecked(); // Used by public stream API.
289
+ Ice::EncodingVersion readEncaps(const Ice::Byte*& v, Ice::Int& sz)
290
+ {
291
+ Ice::EncodingVersion encoding;
292
+ v = i;
293
+ read(sz);
294
+ if(sz < 6)
295
+ {
296
+ throwEncapsulationException(__FILE__, __LINE__);
297
+ }
298
+ if(i - sizeof(Ice::Int) + sz > b.end())
299
+ {
300
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
301
+ }
302
+
303
+ read(encoding);
304
+ i += sz - sizeof(Ice::Int) - 2;
305
+ return encoding;
306
+ }
307
+
308
+ const Ice::EncodingVersion& getReadEncoding() const
309
+ {
310
+ return _currentReadEncaps ? _currentReadEncaps->encoding : _encoding;
311
+ }
312
+
313
+ Ice::Int getReadEncapsSize();
314
+ Ice::EncodingVersion skipEncaps();
315
+
316
+ void startWriteSlice(const std::string& typeId, int compactId, bool last)
317
+ {
318
+ assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
319
+ _currentWriteEncaps->encoder->startSlice(typeId, compactId, last);
320
+ }
321
+ void endWriteSlice()
322
+ {
323
+ assert(_currentWriteEncaps && _currentWriteEncaps->encoder);
324
+ _currentWriteEncaps->encoder->endSlice();
325
+ }
326
+
327
+ std::string startReadSlice()
328
+ {
329
+ assert(_currentReadEncaps && _currentReadEncaps->decoder);
330
+ return _currentReadEncaps->decoder->startSlice();
331
+ }
332
+ void endReadSlice()
333
+ {
334
+ assert(_currentReadEncaps && _currentReadEncaps->decoder);
335
+ _currentReadEncaps->decoder->endSlice();
336
+ }
337
+ void skipSlice()
338
+ {
339
+ assert(_currentReadEncaps && _currentReadEncaps->decoder);
340
+ _currentReadEncaps->decoder->skipSlice();
341
+ }
342
+
343
+ void readPendingObjects();
344
+ void writePendingObjects();
345
+
346
+ void writeSize(Ice::Int v) // Inlined for performance reasons.
347
+ {
348
+ assert(v >= 0);
349
+ if(v > 254)
350
+ {
351
+ write(Ice::Byte(255));
352
+ write(v);
353
+ }
354
+ else
355
+ {
356
+ write(static_cast<Ice::Byte>(v));
357
+ }
358
+ }
359
+ void rewriteSize(Ice::Int v, Container::iterator dest)
360
+ {
361
+ assert(v >= 0);
362
+ if(v > 254)
363
+ {
364
+ *dest++ = Ice::Byte(255);
365
+ write(v, dest);
366
+ }
367
+ else
368
+ {
369
+ *dest = static_cast<Ice::Byte>(v);
370
+ }
371
+ }
372
+ Ice::Int readSize() // Inlined for performance reasons.
373
+ {
374
+ Ice::Byte byte;
375
+ read(byte);
376
+ unsigned char val = static_cast<unsigned char>(byte);
377
+ if(val == 255)
378
+ {
379
+ Ice::Int v;
380
+ read(v);
381
+ if(v < 0)
382
+ {
383
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
384
+ }
385
+ return v;
386
+ }
387
+ else
388
+ {
389
+ return static_cast<Ice::Int>(static_cast<unsigned char>(byte));
390
+ }
391
+ }
392
+
393
+ Ice::Int readAndCheckSeqSize(int);
394
+
395
+ size_type startSize()
396
+ {
397
+ size_type position = b.size();
398
+ write(Ice::Int(0));
399
+ return position;
400
+ }
401
+
402
+ void endSize(size_type position)
403
+ {
404
+ rewrite(static_cast<Ice::Int>(b.size() - position) - 4, position);
405
+ }
406
+
407
+ void writeBlob(const std::vector<Ice::Byte>&);
408
+ void readBlob(std::vector<Ice::Byte>&, Ice::Int);
409
+
410
+ void writeBlob(const Ice::Byte* v, Container::size_type sz)
411
+ {
412
+ if(sz > 0)
413
+ {
414
+ Container::size_type position = b.size();
415
+ resize(position + sz);
416
+ memcpy(&b[position], &v[0], sz);
417
+ }
418
+ }
419
+
420
+ void readBlob(const Ice::Byte*& v, Container::size_type sz)
421
+ {
422
+ if(sz > 0)
423
+ {
424
+ v = i;
425
+ if(static_cast<Container::size_type>(b.end() - i) < sz)
426
+ {
427
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
428
+ }
429
+ i += sz;
430
+ }
431
+ else
432
+ {
433
+ v = i;
434
+ }
435
+ }
436
+
437
+ template<typename T> void write(const T& v)
438
+ {
439
+ Ice::StreamHelper<T, Ice::StreamableTraits<T>::helper>::write(this, v);
440
+ }
441
+ template<typename T> void read(T& v)
442
+ {
443
+ Ice::StreamHelper<T, Ice::StreamableTraits<T>::helper>::read(this, v);
444
+ }
445
+
446
+ template<typename T> void write(Ice::Int tag, const IceUtil::Optional<T>& v)
447
+ {
448
+ if(!v)
449
+ {
450
+ return; // Optional not set
451
+ }
452
+
453
+ if(writeOpt(tag, Ice::StreamOptionalHelper<T,
454
+ Ice::StreamableTraits<T>::helper,
455
+ Ice::StreamableTraits<T>::fixedLength>::optionalFormat))
456
+ {
457
+ Ice::StreamOptionalHelper<T,
458
+ Ice::StreamableTraits<T>::helper,
459
+ Ice::StreamableTraits<T>::fixedLength>::write(this, *v);
460
+ }
461
+ }
462
+ template<typename T> void read(Ice::Int tag, IceUtil::Optional<T>& v)
463
+ {
464
+ if(readOpt(tag, Ice::StreamOptionalHelper<T,
465
+ Ice::StreamableTraits<T>::helper,
466
+ Ice::StreamableTraits<T>::fixedLength>::optionalFormat))
467
+ {
468
+ v.__setIsSet();
469
+ Ice::StreamOptionalHelper<T,
470
+ Ice::StreamableTraits<T>::helper,
471
+ Ice::StreamableTraits<T>::fixedLength>::read(this, *v);
472
+ }
473
+ else
474
+ {
475
+ v = IceUtil::None;
476
+ }
477
+ }
478
+
479
+ //
480
+ // Template functions for sequences and custom sequences
481
+ //
482
+ template<typename T> void write(const std::vector<T>& v)
483
+ {
484
+ if(v.empty())
485
+ {
486
+ writeSize(0);
487
+ }
488
+ else
489
+ {
490
+ write(&v[0], &v[0] + v.size());
491
+ }
492
+ }
493
+ template<typename T> void write(const T* begin, const T* end)
494
+ {
495
+ writeSize(static_cast<Ice::Int>(end - begin));
496
+ for(const T* p = begin; p != end; ++p)
497
+ {
498
+ write(*p);
499
+ }
500
+ }
501
+
502
+ // Read/write type and tag for optionals
503
+ bool writeOpt(Ice::Int tag, Ice::OptionalFormat format)
504
+ {
505
+ assert(_currentWriteEncaps);
506
+ if(_currentWriteEncaps->encoder)
507
+ {
508
+ return _currentWriteEncaps->encoder->writeOpt(tag, format);
509
+ }
510
+ else
511
+ {
512
+ return writeOptImpl(tag, format);
513
+ }
514
+ }
515
+ bool readOpt(Ice::Int tag, Ice::OptionalFormat expectedFormat)
516
+ {
517
+ assert(_currentReadEncaps);
518
+ if(_currentReadEncaps->decoder)
519
+ {
520
+ return _currentReadEncaps->decoder->readOpt(tag, expectedFormat);
521
+ }
522
+ else
523
+ {
524
+ return readOptImpl(tag, expectedFormat);
525
+ }
526
+ }
527
+
528
+ // Byte
529
+ void write(Ice::Byte v)
530
+ {
531
+ b.push_back(v);
532
+ }
533
+ void write(const Ice::Byte*, const Ice::Byte*);
534
+ void read(Ice::Byte& v)
535
+ {
536
+ if(i >= b.end())
537
+ {
538
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
539
+ }
540
+ v = *i++;
541
+ }
542
+ void read(std::vector<Ice::Byte>&);
543
+ void read(std::pair<const Ice::Byte*, const Ice::Byte*>&);
544
+
545
+ // This method is useful for generic stream helpers
546
+ void read(std::pair<const Ice::Byte*, const Ice::Byte*>& p, ::IceUtil::ScopedArray<Ice::Byte>& result)
547
+ {
548
+ result.reset();
549
+ read(p);
550
+ }
551
+
552
+ // Bool
553
+ void write(bool v)
554
+ {
555
+ b.push_back(static_cast<Ice::Byte>(v));
556
+ }
557
+ void write(const std::vector<bool>&);
558
+ void write(const bool*, const bool*);
559
+ void read(bool& v)
560
+ {
561
+ if(i >= b.end())
562
+ {
563
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
564
+ }
565
+ v = (0 != *i++);
566
+ }
567
+ void read(std::vector<bool>&);
568
+ void read(std::pair<const bool*, const bool*>&, ::IceUtil::ScopedArray<bool>&);
569
+
570
+ // Short
571
+ void write(Ice::Short);
572
+ void write(const Ice::Short*, const Ice::Short*);
573
+ void read(Ice::Short&);
574
+ void read(std::vector<Ice::Short>&);
575
+ void read(std::pair<const Ice::Short*, const Ice::Short*>&, ::IceUtil::ScopedArray<Ice::Short>&);
576
+
577
+ // Int
578
+ void write(Ice::Int v) // Inlined for performance reasons.
579
+ {
580
+ Container::size_type position = b.size();
581
+ resize(position + sizeof(Ice::Int));
582
+ write(v, &b[position]);
583
+ }
584
+ void write(Ice::Int v, Container::iterator dest)
585
+ {
586
+ #ifdef ICE_BIG_ENDIAN
587
+ const Ice::Byte* src = reinterpret_cast<const Ice::Byte*>(&v) + sizeof(Ice::Int) - 1;
588
+ *dest++ = *src--;
589
+ *dest++ = *src--;
590
+ *dest++ = *src--;
591
+ *dest = *src;
592
+ #else
593
+ const Ice::Byte* src = reinterpret_cast<const Ice::Byte*>(&v);
594
+ *dest++ = *src++;
595
+ *dest++ = *src++;
596
+ *dest++ = *src++;
597
+ *dest = *src;
598
+ #endif
599
+ }
600
+
601
+ void read(Ice::Int& v) // Inlined for performance reasons.
602
+ {
603
+ if(b.end() - i < static_cast<int>(sizeof(Ice::Int)))
604
+ {
605
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
606
+ }
607
+ const Ice::Byte* src = &(*i);
608
+ i += sizeof(Ice::Int);
609
+ #ifdef ICE_BIG_ENDIAN
610
+ Ice::Byte* dest = reinterpret_cast<Ice::Byte*>(&v) + sizeof(Ice::Int) - 1;
611
+ *dest-- = *src++;
612
+ *dest-- = *src++;
613
+ *dest-- = *src++;
614
+ *dest = *src;
615
+ #else
616
+ Ice::Byte* dest = reinterpret_cast<Ice::Byte*>(&v);
617
+ *dest++ = *src++;
618
+ *dest++ = *src++;
619
+ *dest++ = *src++;
620
+ *dest = *src;
621
+ #endif
622
+ }
623
+
624
+ void write(const Ice::Int*, const Ice::Int*);
625
+ void read(std::vector<Ice::Int>&);
626
+ void read(std::pair<const Ice::Int*, const Ice::Int*>&, ::IceUtil::ScopedArray<Ice::Int>&);
627
+
628
+ // Long
629
+ void write(Ice::Long);
630
+ void write(const Ice::Long*, const Ice::Long*);
631
+ void read(Ice::Long&);
632
+ void read(std::vector<Ice::Long>&);
633
+ void read(std::pair<const Ice::Long*, const Ice::Long*>&, ::IceUtil::ScopedArray<Ice::Long>&);
634
+
635
+ // Float
636
+ void write(Ice::Float);
637
+ void write(const Ice::Float*, const Ice::Float*);
638
+ void read(Ice::Float&);
639
+ void read(std::vector<Ice::Float>&);
640
+ void read(std::pair<const Ice::Float*, const Ice::Float*>&, ::IceUtil::ScopedArray<Ice::Float>&);
641
+
642
+ // Double
643
+ void write(Ice::Double);
644
+ void write(const Ice::Double*, const Ice::Double*);
645
+ void read(Ice::Double&);
646
+ void read(std::vector<Ice::Double>&);
647
+ void read(std::pair<const Ice::Double*, const Ice::Double*>&, ::IceUtil::ScopedArray<Ice::Double>&);
648
+
649
+ // String
650
+ void write(const std::string& v, bool convert = true)
651
+ {
652
+ Ice::Int sz = static_cast<Ice::Int>(v.size());
653
+ if(convert && sz > 0 && _stringConverter != 0)
654
+ {
655
+ writeConverted(v.data(), static_cast<size_t>(sz));
656
+ }
657
+ else
658
+ {
659
+ writeSize(sz);
660
+ if(sz > 0)
661
+ {
662
+ Container::size_type position = b.size();
663
+ resize(position + sz);
664
+ memcpy(&b[position], v.data(), sz);
665
+ }
666
+ }
667
+ }
668
+
669
+ // for custom strings
670
+ void write(const char* vdata, size_t vsize, bool convert = true)
671
+ {
672
+ Ice::Int sz = static_cast<Ice::Int>(vsize);
673
+ if(convert && sz > 0 && _stringConverter != 0)
674
+ {
675
+ writeConverted(vdata, vsize);
676
+ }
677
+ else
678
+ {
679
+ writeSize(sz);
680
+ if(sz > 0)
681
+ {
682
+ Container::size_type position = b.size();
683
+ resize(position + sz);
684
+ memcpy(&b[position], vdata, vsize);
685
+ }
686
+ }
687
+ }
688
+
689
+ // Null-terminated C string
690
+ void write(const char* vdata, bool convert = true)
691
+ {
692
+ write(vdata, strlen(vdata), convert);
693
+ }
694
+
695
+ void write(const std::string*, const std::string*, bool = true);
696
+
697
+ void read(std::string& v, bool convert = true)
698
+ {
699
+ Ice::Int sz = readSize();
700
+ if(sz > 0)
701
+ {
702
+ if(b.end() - i < sz)
703
+ {
704
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
705
+ }
706
+ if(convert && _stringConverter != 0)
707
+ {
708
+ readConverted(v, sz);
709
+ }
710
+ else
711
+ {
712
+ std::string(reinterpret_cast<const char*>(&*i), reinterpret_cast<const char*>(&*i) + sz).swap(v);
713
+ }
714
+ i += sz;
715
+ }
716
+ else
717
+ {
718
+ v.clear();
719
+ }
720
+ }
721
+
722
+ // For custom strings, convert = false
723
+ void read(const char*& vdata, size_t& vsize)
724
+ {
725
+ Ice::Int sz = readSize();
726
+ if(sz > 0)
727
+ {
728
+ if(b.end() - i < sz)
729
+ {
730
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
731
+ }
732
+
733
+ vdata = reinterpret_cast<const char*>(&*i);
734
+ vsize = static_cast<size_t>(sz);
735
+ i += sz;
736
+ }
737
+ else
738
+ {
739
+ vdata = 0;
740
+ vsize = 0;
741
+ }
742
+ }
743
+
744
+ // For custom strings, convert = true
745
+ void read(const char*& vdata, size_t& vsize, std::string& holder)
746
+ {
747
+ if(_stringConverter == 0)
748
+ {
749
+ holder.clear();
750
+ read(vdata, vsize);
751
+ }
752
+ else
753
+ {
754
+ Ice::Int sz = readSize();
755
+ if(sz > 0)
756
+ {
757
+ if(b.end() - i < sz)
758
+ {
759
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
760
+ }
761
+
762
+ readConverted(holder, sz);
763
+ vdata = holder.data();
764
+ vsize = holder.size();
765
+ }
766
+ else
767
+ {
768
+ holder.clear();
769
+ vdata = 0;
770
+ vsize = 0;
771
+ }
772
+ }
773
+ }
774
+
775
+ void read(std::vector<std::string>&, bool = true);
776
+
777
+ void write(const std::wstring& v);
778
+ void write(const std::wstring*, const std::wstring*);
779
+ void read(std::wstring&);
780
+ void read(std::vector<std::wstring>&);
781
+
782
+ // Proxy
783
+ void write(const Ice::ObjectPrx&);
784
+ template<typename T> void write(const IceInternal::ProxyHandle<T>& v)
785
+ {
786
+ write(Ice::ObjectPrx(upCast(v.get())));
787
+ }
788
+ void read(Ice::ObjectPrx&);
789
+ template<typename T> void read(IceInternal::ProxyHandle<T>& v)
790
+ {
791
+ __read(this, v); // Generated __read method, necessary for forward declarations.
792
+ }
793
+
794
+ // Class
795
+ void write(const Ice::ObjectPtr& v)
796
+ {
797
+ initWriteEncaps();
798
+ _currentWriteEncaps->encoder->write(v);
799
+ }
800
+ template<typename T> void write(const IceInternal::Handle<T>& v)
801
+ {
802
+ write(Ice::ObjectPtr(upCast(v.get())));
803
+ }
804
+ void read(PatchFunc patchFunc, void* patchAddr)
805
+ {
806
+ initReadEncaps();
807
+ _currentReadEncaps->decoder->read(patchFunc, patchAddr);
808
+ }
809
+ template<typename T> void read(IceInternal::Handle<T>& v)
810
+ {
811
+ read(&patchHandle<T>, &v);
812
+ }
813
+
814
+ // Enum
815
+ Ice::Int readEnum(Ice::Int);
816
+ void writeEnum(Ice::Int, Ice::Int);
817
+
818
+ // Exception
819
+ void writeException(const Ice::UserException&);
820
+ void throwException(const UserExceptionFactoryPtr& = 0);
821
+
822
+ void sliceObjects(bool);
823
+
824
+ // Read/write/skip optionals
825
+ bool readOptImpl(Ice::Int, Ice::OptionalFormat);
826
+ bool writeOptImpl(Ice::Int, Ice::OptionalFormat);
827
+ void skipOpt(Ice::OptionalFormat);
828
+ void skipOpts();
829
+
830
+ // Skip bytes from the stream
831
+ void skip(size_type size)
832
+ {
833
+ if(i + size > b.end())
834
+ {
835
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
836
+ }
837
+ i += size;
838
+ }
839
+ void skipSize()
840
+ {
841
+ Ice::Byte bt;
842
+ read(bt);
843
+ if(static_cast<unsigned char>(bt) == 255)
844
+ {
845
+ skip(4);
846
+ }
847
+ }
848
+
849
+ size_type pos()
850
+ {
851
+ return i - b.begin();
852
+ }
853
+
854
+ void rewrite(Ice::Int value, size_type p)
855
+ {
856
+ write(value, b.begin() + p);
857
+ }
858
+
859
+ private:
860
+
861
+ //
862
+ // String
863
+ //
864
+ void writeConverted(const char*, size_t);
865
+ void readConverted(std::string&, Ice::Int);
866
+
867
+ //
868
+ // I can't throw these exception from inline functions from within
869
+ // this file, because I cannot include the header with the
870
+ // exceptions. Doing so would screw up the whole include file
871
+ // ordering.
872
+ //
873
+ void throwUnmarshalOutOfBoundsException(const char*, int);
874
+ void throwEncapsulationException(const char*, int);
875
+
876
+ //
877
+ // Optimization. The instance may not be deleted while a
878
+ // stack-allocated BasicStream still holds it.
879
+ //
880
+ Instance* _instance;
881
+
882
+ //
883
+ // The public stream API needs to attach data to a stream.
884
+ //
885
+ void* _closure;
886
+
887
+ class ReadEncaps;
888
+ class WriteEncaps;
889
+ enum SliceType { NoSlice, ObjectSlice, ExceptionSlice };
890
+
891
+ typedef std::vector<Ice::ObjectPtr> ObjectList;
892
+
893
+ class ICE_API EncapsDecoder : private ::IceUtil::noncopyable
894
+ {
895
+ public:
896
+
897
+ virtual ~EncapsDecoder() { }
898
+
899
+ virtual void read(PatchFunc, void*) = 0;
900
+ virtual void throwException(const UserExceptionFactoryPtr&) = 0;
901
+
902
+ virtual void startInstance(SliceType) = 0;
903
+ virtual Ice::SlicedDataPtr endInstance(bool) = 0;
904
+ virtual const std::string& startSlice() = 0;
905
+ virtual void endSlice() = 0;
906
+ virtual void skipSlice() = 0;
907
+
908
+ virtual bool readOpt(Ice::Int, Ice::OptionalFormat)
909
+ {
910
+ return false;
911
+ }
912
+
913
+ virtual void readPendingObjects()
914
+ {
915
+ }
916
+
917
+ protected:
918
+
919
+ EncapsDecoder(BasicStream* stream, ReadEncaps* encaps, bool sliceObjects, const ObjectFactoryManagerPtr& f) :
920
+ _stream(stream), _encaps(encaps), _sliceObjects(sliceObjects), _servantFactoryManager(f), _typeIdIndex(0)
921
+ {
922
+ }
923
+
924
+ std::string readTypeId(bool);
925
+ Ice::ObjectPtr newInstance(const std::string&);
926
+
927
+ void addPatchEntry(Ice::Int, PatchFunc, void*);
928
+ void unmarshal(Ice::Int, const Ice::ObjectPtr&);
929
+
930
+ typedef std::map<Ice::Int, Ice::ObjectPtr> IndexToPtrMap;
931
+ typedef std::map<Ice::Int, std::string> TypeIdReadMap;
932
+
933
+ struct PatchEntry
934
+ {
935
+ PatchFunc patchFunc;
936
+ void* patchAddr;
937
+ };
938
+ typedef std::vector<PatchEntry> PatchList;
939
+ typedef std::map<Ice::Int, PatchList> PatchMap;
940
+
941
+ BasicStream* _stream;
942
+ ReadEncaps* _encaps;
943
+ const bool _sliceObjects;
944
+ ObjectFactoryManagerPtr _servantFactoryManager;
945
+
946
+ // Encapsulation attributes for object un-marshalling
947
+ PatchMap _patchMap;
948
+
949
+ private:
950
+
951
+ // Encapsulation attributes for object un-marshalling
952
+ IndexToPtrMap _unmarshaledMap;
953
+ TypeIdReadMap _typeIdMap;
954
+ Ice::Int _typeIdIndex;
955
+ ObjectList _objectList;
956
+ };
957
+
958
+ class ICE_API EncapsDecoder10 : public EncapsDecoder
959
+ {
960
+ public:
961
+
962
+ EncapsDecoder10(BasicStream* stream, ReadEncaps* encaps, bool sliceObjects, const ObjectFactoryManagerPtr& f) :
963
+ EncapsDecoder(stream, encaps, sliceObjects, f), _sliceType(NoSlice)
964
+ {
965
+ }
966
+
967
+ virtual void read(PatchFunc, void*);
968
+ virtual void throwException(const UserExceptionFactoryPtr&);
969
+
970
+ virtual void startInstance(SliceType);
971
+ virtual Ice::SlicedDataPtr endInstance(bool);
972
+ virtual const std::string& startSlice();
973
+ virtual void endSlice();
974
+ virtual void skipSlice();
975
+
976
+ virtual void readPendingObjects();
977
+
978
+ private:
979
+
980
+ void readInstance();
981
+
982
+ // Instance attributes
983
+ SliceType _sliceType;
984
+ bool _skipFirstSlice;
985
+
986
+ // Slice attributes
987
+ Ice::Int _sliceSize;
988
+ std::string _typeId;
989
+ };
990
+
991
+ class ICE_API EncapsDecoder11 : public EncapsDecoder
992
+ {
993
+ public:
994
+
995
+ EncapsDecoder11(BasicStream* stream, ReadEncaps* encaps, bool sliceObjects, const ObjectFactoryManagerPtr& f) :
996
+ EncapsDecoder(stream, encaps, sliceObjects, f), _preAllocatedInstanceData(0), _current(0), _objectIdIndex(1)
997
+ {
998
+ }
999
+
1000
+ virtual void read(PatchFunc, void*);
1001
+ virtual void throwException(const UserExceptionFactoryPtr&);
1002
+
1003
+ virtual void startInstance(SliceType);
1004
+ virtual Ice::SlicedDataPtr endInstance(bool);
1005
+ virtual const std::string& startSlice();
1006
+ virtual void endSlice();
1007
+ virtual void skipSlice();
1008
+
1009
+ virtual bool readOpt(Ice::Int, Ice::OptionalFormat);
1010
+
1011
+ private:
1012
+
1013
+ Ice::Int readInstance(Ice::Int, PatchFunc, void*);
1014
+ Ice::SlicedDataPtr readSlicedData();
1015
+
1016
+ struct IndirectPatchEntry
1017
+ {
1018
+ Ice::Int index;
1019
+ PatchFunc patchFunc;
1020
+ void* patchAddr;
1021
+ };
1022
+ typedef std::vector<IndirectPatchEntry> IndirectPatchList;
1023
+
1024
+ typedef std::vector<Ice::Int> IndexList;
1025
+ typedef std::vector<IndexList> IndexListList;
1026
+
1027
+ struct InstanceData
1028
+ {
1029
+ InstanceData(InstanceData* p) : previous(p), next(0)
1030
+ {
1031
+ if(previous)
1032
+ {
1033
+ previous->next = this;
1034
+ }
1035
+ }
1036
+
1037
+ ~InstanceData()
1038
+ {
1039
+ if(next)
1040
+ {
1041
+ delete next;
1042
+ }
1043
+ }
1044
+
1045
+ // Instance attributes
1046
+ SliceType sliceType;
1047
+ bool skipFirstSlice;
1048
+ Ice::SliceInfoSeq slices; // Preserved slices.
1049
+ IndexListList indirectionTables;
1050
+
1051
+ // Slice attributes
1052
+ Ice::Byte sliceFlags;
1053
+ Ice::Int sliceSize;
1054
+ std::string typeId;
1055
+ int compactId;
1056
+ IndirectPatchList indirectPatchList;
1057
+
1058
+ InstanceData* previous;
1059
+ InstanceData* next;
1060
+ };
1061
+ InstanceData _preAllocatedInstanceData;
1062
+ InstanceData* _current;
1063
+
1064
+ void push(SliceType sliceType)
1065
+ {
1066
+ if(!_current)
1067
+ {
1068
+ _current = &_preAllocatedInstanceData;
1069
+ }
1070
+ else
1071
+ {
1072
+ _current = _current->next ? _current->next : new InstanceData(_current);
1073
+ }
1074
+ _current->sliceType = sliceType;
1075
+ _current->skipFirstSlice = false;
1076
+ }
1077
+
1078
+ Ice::Int _objectIdIndex; // The ID of the next object to un-marshal.
1079
+ };
1080
+
1081
+ class ICE_API EncapsEncoder : private ::IceUtil::noncopyable
1082
+ {
1083
+ public:
1084
+
1085
+ virtual ~EncapsEncoder() { }
1086
+
1087
+ virtual void write(const Ice::ObjectPtr&) = 0;
1088
+ virtual void write(const Ice::UserException&) = 0;
1089
+
1090
+ virtual void startInstance(SliceType, const Ice::SlicedDataPtr&) = 0;
1091
+ virtual void endInstance() = 0;
1092
+ virtual void startSlice(const std::string&, int, bool) = 0;
1093
+ virtual void endSlice() = 0;
1094
+
1095
+ virtual bool writeOpt(Ice::Int, Ice::OptionalFormat)
1096
+ {
1097
+ return false;
1098
+ }
1099
+
1100
+ virtual void writePendingObjects()
1101
+ {
1102
+ }
1103
+
1104
+ protected:
1105
+
1106
+ EncapsEncoder(BasicStream* stream, WriteEncaps* encaps) : _stream(stream), _encaps(encaps), _typeIdIndex(0)
1107
+ {
1108
+ }
1109
+
1110
+ Ice::Int registerTypeId(const std::string&);
1111
+
1112
+ BasicStream* _stream;
1113
+ WriteEncaps* _encaps;
1114
+
1115
+ typedef std::map<Ice::ObjectPtr, Ice::Int> PtrToIndexMap;
1116
+ typedef std::map<std::string, Ice::Int> TypeIdWriteMap;
1117
+
1118
+ // Encapsulation attributes for object marshalling.
1119
+ PtrToIndexMap _marshaledMap;
1120
+
1121
+ private:
1122
+
1123
+ // Encapsulation attributes for object marshalling.
1124
+ TypeIdWriteMap _typeIdMap;
1125
+ Ice::Int _typeIdIndex;
1126
+ };
1127
+
1128
+ class ICE_API EncapsEncoder10 : public EncapsEncoder
1129
+ {
1130
+ public:
1131
+
1132
+ EncapsEncoder10(BasicStream* stream, WriteEncaps* encaps) :
1133
+ EncapsEncoder(stream, encaps), _sliceType(NoSlice), _objectIdIndex(0)
1134
+ {
1135
+ }
1136
+
1137
+ virtual void write(const Ice::ObjectPtr&);
1138
+ virtual void write(const Ice::UserException&);
1139
+
1140
+ virtual void startInstance(SliceType, const Ice::SlicedDataPtr&);
1141
+ virtual void endInstance();
1142
+ virtual void startSlice(const std::string&, int, bool);
1143
+ virtual void endSlice();
1144
+
1145
+ virtual void writePendingObjects();
1146
+
1147
+ private:
1148
+
1149
+ Ice::Int registerObject(const Ice::ObjectPtr&);
1150
+
1151
+ // Instance attributes
1152
+ SliceType _sliceType;
1153
+
1154
+ // Slice attributes
1155
+ Container::size_type _writeSlice; // Position of the slice data members
1156
+
1157
+ // Encapsulation attributes for object marshalling.
1158
+ Ice::Int _objectIdIndex;
1159
+ PtrToIndexMap _toBeMarshaledMap;
1160
+ };
1161
+
1162
+ class ICE_API EncapsEncoder11 : public EncapsEncoder
1163
+ {
1164
+ public:
1165
+
1166
+ EncapsEncoder11(BasicStream* stream, WriteEncaps* encaps) :
1167
+ EncapsEncoder(stream, encaps), _preAllocatedInstanceData(0), _current(0), _objectIdIndex(1)
1168
+ {
1169
+ }
1170
+
1171
+ virtual void write(const Ice::ObjectPtr&);
1172
+ virtual void write(const Ice::UserException&);
1173
+
1174
+ virtual void startInstance(SliceType, const Ice::SlicedDataPtr&);
1175
+ virtual void endInstance();
1176
+ virtual void startSlice(const std::string&, int, bool);
1177
+ virtual void endSlice();
1178
+
1179
+ virtual bool writeOpt(Ice::Int, Ice::OptionalFormat);
1180
+
1181
+ private:
1182
+
1183
+ void writeSlicedData(const Ice::SlicedDataPtr&);
1184
+ void writeInstance(const Ice::ObjectPtr&);
1185
+
1186
+ struct InstanceData
1187
+ {
1188
+ InstanceData(InstanceData* p) : previous(p), next(0)
1189
+ {
1190
+ if(previous)
1191
+ {
1192
+ previous->next = this;
1193
+ }
1194
+ }
1195
+
1196
+ ~InstanceData()
1197
+ {
1198
+ if(next)
1199
+ {
1200
+ delete next;
1201
+ }
1202
+ }
1203
+
1204
+ // Instance attributes
1205
+ SliceType sliceType;
1206
+ bool firstSlice;
1207
+
1208
+ // Slice attributes
1209
+ Ice::Byte sliceFlags;
1210
+ Container::size_type writeSlice; // Position of the slice data members
1211
+ Container::size_type sliceFlagsPos; // Position of the slice flags
1212
+ PtrToIndexMap indirectionMap;
1213
+ ObjectList indirectionTable;
1214
+
1215
+ InstanceData* previous;
1216
+ InstanceData* next;
1217
+ };
1218
+ InstanceData _preAllocatedInstanceData;
1219
+ InstanceData* _current;
1220
+
1221
+ Ice::Int _objectIdIndex; // The ID of the next object to marhsal
1222
+ };
1223
+
1224
+ class ReadEncaps : private ::IceUtil::noncopyable
1225
+ {
1226
+ public:
1227
+
1228
+ ReadEncaps() : start(0), decoder(0), previous(0)
1229
+ {
1230
+ // Inlined for performance reasons.
1231
+ }
1232
+ ~ReadEncaps()
1233
+ {
1234
+ // Inlined for performance reasons.
1235
+ delete decoder;
1236
+ }
1237
+ void reset()
1238
+ {
1239
+ // Inlined for performance reasons.
1240
+ delete decoder;
1241
+ decoder = 0;
1242
+
1243
+ previous = 0;
1244
+ }
1245
+
1246
+ Container::size_type start;
1247
+ Ice::Int sz;
1248
+ Ice::EncodingVersion encoding;
1249
+
1250
+ EncapsDecoder* decoder;
1251
+
1252
+ ReadEncaps* previous;
1253
+ };
1254
+
1255
+ class WriteEncaps : private ::IceUtil::noncopyable
1256
+ {
1257
+
1258
+ public:
1259
+
1260
+ WriteEncaps() : format(Ice::DefaultFormat), encoder(0), previous(0)
1261
+ {
1262
+ // Inlined for performance reasons.
1263
+ }
1264
+ ~WriteEncaps()
1265
+ {
1266
+ // Inlined for performance reasons.
1267
+ delete encoder;
1268
+ }
1269
+ void reset()
1270
+ {
1271
+ // Inlined for performance reasons.
1272
+ delete encoder;
1273
+ encoder = 0;
1274
+
1275
+ previous = 0;
1276
+ }
1277
+
1278
+ Container::size_type start;
1279
+ Ice::EncodingVersion encoding;
1280
+ Ice::FormatType format;
1281
+
1282
+ EncapsEncoder* encoder;
1283
+
1284
+ WriteEncaps* previous;
1285
+ };
1286
+
1287
+ //
1288
+ // The encoding version to use when there's no encapsulation to
1289
+ // read from or write to. This is for example used to read message
1290
+ // headers or when the user is using the streaming API with no
1291
+ // encapsulation.
1292
+ //
1293
+ Ice::EncodingVersion _encoding;
1294
+
1295
+ ReadEncaps* _currentReadEncaps;
1296
+ WriteEncaps* _currentWriteEncaps;
1297
+
1298
+ void initReadEncaps();
1299
+ void initWriteEncaps();
1300
+
1301
+ ReadEncaps _preAllocatedReadEncaps;
1302
+ WriteEncaps _preAllocatedWriteEncaps;
1303
+
1304
+ bool _sliceObjects;
1305
+
1306
+ const IceUtil::StringConverterPtr _stringConverter;
1307
+ const IceUtil::WstringConverterPtr _wstringConverter;
1308
+
1309
+ int _startSeq;
1310
+ int _minSeqSize;
1311
+ };
1312
+
1313
+ } // End namespace IceInternal
1314
+
1315
+ #endif