zeroc-ice 3.7.9.1 → 3.8.0

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 (1215) hide show
  1. checksums.yaml +4 -4
  2. data/dist/IceRuby/Communicator.cpp +575 -0
  3. data/dist/IceRuby/Communicator.h +19 -0
  4. data/dist/IceRuby/Config.h +77 -0
  5. data/dist/IceRuby/Connection.cpp +428 -0
  6. data/dist/IceRuby/Connection.h +20 -0
  7. data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
  8. data/dist/IceRuby/DefaultSliceLoader.h +25 -0
  9. data/dist/IceRuby/Endpoint.cpp +342 -0
  10. data/dist/IceRuby/Endpoint.h +18 -0
  11. data/dist/IceRuby/ImplicitContext.cpp +143 -0
  12. data/dist/IceRuby/ImplicitContext.h +16 -0
  13. data/dist/IceRuby/Init.cpp +36 -0
  14. data/dist/IceRuby/Logger.cpp +146 -0
  15. data/dist/IceRuby/Logger.h +19 -0
  16. data/dist/IceRuby/Operation.cpp +623 -0
  17. data/dist/IceRuby/Operation.h +28 -0
  18. data/dist/IceRuby/Properties.cpp +413 -0
  19. data/dist/IceRuby/Properties.h +16 -0
  20. data/dist/IceRuby/Proxy.cpp +926 -0
  21. data/dist/IceRuby/Proxy.h +21 -0
  22. data/dist/IceRuby/RubySliceLoader.cpp +39 -0
  23. data/dist/IceRuby/RubySliceLoader.h +27 -0
  24. data/dist/IceRuby/Slice.cpp +199 -0
  25. data/dist/IceRuby/Slice.h +13 -0
  26. data/dist/IceRuby/Types.cpp +3133 -0
  27. data/dist/IceRuby/Types.h +533 -0
  28. data/dist/IceRuby/Util.cpp +553 -0
  29. data/dist/IceRuby/Util.h +485 -0
  30. data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
  31. data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
  32. data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +14 -0
  33. data/dist/ice/cpp/include/Ice/Buffer.h +159 -0
  34. data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
  35. data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
  36. data/dist/ice/cpp/include/Ice/Config.h +60 -0
  37. data/dist/ice/cpp/include/Ice/Connection.h +410 -0
  38. data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
  39. data/dist/ice/cpp/include/Ice/ConnectionIF.h +16 -0
  40. data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
  41. data/dist/ice/cpp/include/Ice/Current.h +60 -0
  42. data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
  43. data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
  44. data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
  45. data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
  46. data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
  47. data/dist/ice/cpp/include/Ice/Exception.h +56 -0
  48. data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
  49. data/dist/ice/cpp/include/Ice/Format.h +22 -0
  50. data/dist/ice/cpp/include/Ice/Ice.h +60 -0
  51. data/dist/ice/cpp/include/Ice/IconvStringConverter.h +216 -0
  52. data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
  53. data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
  54. data/dist/ice/cpp/include/Ice/Initialize.h +143 -0
  55. data/dist/ice/cpp/include/Ice/InputStream.h +942 -0
  56. data/dist/ice/cpp/include/Ice/InstanceF.h +14 -0
  57. data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
  58. data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
  59. data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
  60. data/dist/ice/cpp/include/Ice/Logger.h +62 -0
  61. data/dist/ice/cpp/include/Ice/LoggerUtil.h +162 -0
  62. data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
  63. data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +54 -0
  64. data/dist/ice/cpp/include/Ice/Object.h +168 -0
  65. data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
  66. data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
  67. data/dist/ice/cpp/include/Ice/ObjectF.h +16 -0
  68. data/dist/ice/cpp/include/Ice/ObserverHelper.h +164 -0
  69. data/dist/ice/cpp/include/Ice/OutgoingAsync.h +512 -0
  70. data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
  71. data/dist/ice/cpp/include/Ice/OutputStream.h +872 -0
  72. data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
  73. data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
  74. data/dist/ice/cpp/include/Ice/PopDisableWarnings.h +16 -0
  75. data/dist/ice/cpp/include/Ice/Properties.h +307 -0
  76. data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
  77. data/dist/ice/cpp/include/Ice/Proxy.h +742 -0
  78. data/dist/ice/cpp/include/Ice/ProxyF.h +11 -0
  79. data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
  80. data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
  81. data/dist/ice/cpp/include/Ice/ReferenceF.h +14 -0
  82. data/dist/ice/cpp/include/Ice/RequestHandlerF.h +20 -0
  83. data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +268 -0
  84. data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
  85. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
  86. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
  87. data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
  88. data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
  89. data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +278 -0
  90. data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
  91. data/dist/ice/cpp/include/Ice/Service.h +219 -0
  92. data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
  93. data/dist/ice/cpp/include/Ice/SlicedData.h +125 -0
  94. data/dist/ice/cpp/include/Ice/SlicedDataF.h +30 -0
  95. data/dist/ice/cpp/include/Ice/StreamHelpers.h +652 -0
  96. data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
  97. data/dist/ice/cpp/include/Ice/StringConverter.h +167 -0
  98. data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
  99. data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
  100. data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
  101. data/dist/ice/cpp/include/Ice/UUID.h +16 -0
  102. data/dist/ice/cpp/include/Ice/UserException.h +46 -0
  103. data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +15 -0
  104. data/dist/ice/cpp/include/Ice/Value.h +127 -0
  105. data/dist/ice/cpp/include/Ice/ValueF.h +16 -0
  106. data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +28 -0
  107. data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +28 -0
  108. data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +70 -0
  109. data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
  110. data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +74 -0
  111. data/dist/ice/cpp/include/generated/Ice/Identity.h +108 -0
  112. data/dist/ice/cpp/include/generated/Ice/Locator.h +542 -0
  113. data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
  114. data/dist/ice/cpp/include/generated/Ice/Metrics.h +1103 -0
  115. data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
  116. data/dist/ice/cpp/include/generated/Ice/Process.h +245 -0
  117. data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +314 -0
  118. data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
  119. data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +724 -0
  120. data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
  121. data/dist/ice/cpp/include/generated/Ice/Router.h +496 -0
  122. data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +37 -0
  123. data/dist/ice/cpp/include/generated/Ice/Version.h +112 -0
  124. data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
  125. data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
  126. data/dist/ice/cpp/src/Ice/Acceptor.h +41 -0
  127. data/dist/ice/cpp/src/Ice/AcceptorF.h +17 -0
  128. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
  129. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
  130. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
  131. data/dist/ice/cpp/src/Ice/ArgVector.cpp +58 -0
  132. data/dist/ice/cpp/src/Ice/ArgVector.h +30 -0
  133. data/dist/ice/cpp/src/Ice/Base64.cpp +263 -0
  134. data/dist/ice/cpp/src/Ice/Base64.h +26 -0
  135. data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +199 -0
  136. data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +49 -0
  137. data/dist/ice/cpp/src/Ice/Buffer.cpp +187 -0
  138. data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
  139. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +373 -0
  140. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +65 -0
  141. data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
  142. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
  143. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
  144. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +227 -0
  145. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +51 -0
  146. data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +14 -0
  147. data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
  148. data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +1758 -0
  149. data/dist/ice/cpp/src/Ice/ConnectionFactory.h +264 -0
  150. data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +17 -0
  151. data/dist/ice/cpp/src/Ice/ConnectionI.cpp +3563 -0
  152. data/dist/ice/cpp/src/Ice/ConnectionI.h +429 -0
  153. data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
  154. data/dist/ice/cpp/src/Ice/Connector.h +38 -0
  155. data/dist/ice/cpp/src/Ice/ConnectorF.h +14 -0
  156. data/dist/ice/cpp/src/Ice/ConsoleUtil.cpp +136 -0
  157. data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
  158. data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
  159. data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
  160. data/dist/ice/cpp/src/Ice/DLLMain.cpp +40 -0
  161. data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
  162. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +81 -0
  163. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +38 -0
  164. data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +14 -0
  165. data/dist/ice/cpp/src/Ice/Demangle.cpp +25 -0
  166. data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
  167. data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +216 -0
  168. data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
  169. data/dist/ice/cpp/src/Ice/Endian.h +40 -0
  170. data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +165 -0
  171. data/dist/ice/cpp/src/Ice/EndpointFactory.h +96 -0
  172. data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +14 -0
  173. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +180 -0
  174. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +42 -0
  175. data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +14 -0
  176. data/dist/ice/cpp/src/Ice/EndpointI.cpp +128 -0
  177. data/dist/ice/cpp/src/Ice/EndpointI.h +150 -0
  178. data/dist/ice/cpp/src/Ice/EndpointIF.h +21 -0
  179. data/dist/ice/cpp/src/Ice/EventHandler.cpp +9 -0
  180. data/dist/ice/cpp/src/Ice/EventHandler.h +71 -0
  181. data/dist/ice/cpp/src/Ice/EventHandlerF.h +14 -0
  182. data/dist/ice/cpp/src/Ice/Exception.cpp +5 -0
  183. data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
  184. data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
  185. data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
  186. data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
  187. data/dist/ice/cpp/src/Ice/HashUtil.h +67 -0
  188. data/dist/ice/cpp/src/Ice/HttpParser.cpp +684 -0
  189. data/dist/ice/cpp/src/Ice/HttpParser.h +112 -0
  190. data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +593 -0
  191. data/dist/ice/cpp/src/Ice/IPEndpointI.h +106 -0
  192. data/dist/ice/cpp/src/Ice/IPEndpointIF.h +17 -0
  193. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
  194. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
  195. data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
  196. data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
  197. data/dist/ice/cpp/src/Ice/Initialize.cpp +160 -0
  198. data/dist/ice/cpp/src/Ice/InputStream.cpp +2206 -0
  199. data/dist/ice/cpp/src/Ice/Instance.cpp +1956 -0
  200. data/dist/ice/cpp/src/Ice/Instance.h +225 -0
  201. data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +959 -0
  202. data/dist/ice/cpp/src/Ice/InstrumentationI.h +235 -0
  203. data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
  204. data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
  205. data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +851 -0
  206. data/dist/ice/cpp/src/Ice/LocatorInfo.h +176 -0
  207. data/dist/ice/cpp/src/Ice/LocatorInfoF.h +20 -0
  208. data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +774 -0
  209. data/dist/ice/cpp/src/Ice/LoggerAdminI.h +31 -0
  210. data/dist/ice/cpp/src/Ice/LoggerI.cpp +234 -0
  211. data/dist/ice/cpp/src/Ice/LoggerI.h +47 -0
  212. data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
  213. data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
  214. data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +76 -0
  215. data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
  216. data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +608 -0
  217. data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
  218. data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
  219. data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
  220. data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
  221. data/dist/ice/cpp/src/Ice/Network.cpp +1927 -0
  222. data/dist/ice/cpp/src/Ice/Network.h +265 -0
  223. data/dist/ice/cpp/src/Ice/NetworkF.h +11 -0
  224. data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +306 -0
  225. data/dist/ice/cpp/src/Ice/NetworkProxy.h +67 -0
  226. data/dist/ice/cpp/src/Ice/NetworkProxyF.h +14 -0
  227. data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +55 -0
  228. data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +35 -0
  229. data/dist/ice/cpp/src/Ice/Object.cpp +249 -0
  230. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +348 -0
  231. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +53 -0
  232. data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +14 -0
  233. data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +1383 -0
  234. data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +163 -0
  235. data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +75 -0
  236. data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
  237. data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
  238. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +368 -0
  239. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +66 -0
  240. data/dist/ice/cpp/src/Ice/Options.cpp +980 -0
  241. data/dist/ice/cpp/src/Ice/Options.h +119 -0
  242. data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +1106 -0
  243. data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
  244. data/dist/ice/cpp/src/Ice/OutputStream.cpp +1454 -0
  245. data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
  246. data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
  247. data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +344 -0
  248. data/dist/ice/cpp/src/Ice/PluginManagerI.h +54 -0
  249. data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
  250. data/dist/ice/cpp/src/Ice/PropertyNames.cpp +606 -0
  251. data/dist/ice/cpp/src/Ice/PropertyNames.h +63 -0
  252. data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
  253. data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
  254. data/dist/ice/cpp/src/Ice/Protocol.cpp +159 -0
  255. data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
  256. data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +186 -0
  257. data/dist/ice/cpp/src/Ice/ProtocolInstance.h +74 -0
  258. data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +14 -0
  259. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +29 -0
  260. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +35 -0
  261. data/dist/ice/cpp/src/Ice/Proxy.cpp +541 -0
  262. data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
  263. data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
  264. data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
  265. data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
  266. data/dist/ice/cpp/src/Ice/Random.h +23 -0
  267. data/dist/ice/cpp/src/Ice/Reference.cpp +1584 -0
  268. data/dist/ice/cpp/src/Ice/Reference.h +339 -0
  269. data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +830 -0
  270. data/dist/ice/cpp/src/Ice/ReferenceFactory.h +58 -0
  271. data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +14 -0
  272. data/dist/ice/cpp/src/Ice/RequestHandler.cpp +28 -0
  273. data/dist/ice/cpp/src/Ice/RequestHandler.h +53 -0
  274. data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
  275. data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
  276. data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
  277. data/dist/ice/cpp/src/Ice/RetryQueue.cpp +151 -0
  278. data/dist/ice/cpp/src/Ice/RetryQueue.h +59 -0
  279. data/dist/ice/cpp/src/Ice/RetryQueueF.h +14 -0
  280. data/dist/ice/cpp/src/Ice/RouterInfo.cpp +275 -0
  281. data/dist/ice/cpp/src/Ice/RouterInfo.h +95 -0
  282. data/dist/ice/cpp/src/Ice/RouterInfoF.h +17 -0
  283. data/dist/ice/cpp/src/Ice/SHA1.cpp +195 -0
  284. data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
  285. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
  286. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
  287. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +513 -0
  288. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
  289. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
  290. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +635 -0
  291. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
  292. data/dist/ice/cpp/src/Ice/SSL/RFC2253.cpp +487 -0
  293. data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
  294. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
  295. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
  296. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
  297. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
  298. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
  299. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
  300. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
  301. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +72 -0
  302. data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
  303. data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
  304. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
  305. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
  306. data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
  307. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +654 -0
  308. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +104 -0
  309. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1437 -0
  310. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
  311. data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
  312. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1085 -0
  313. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
  314. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +822 -0
  315. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
  316. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
  317. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
  318. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
  319. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1061 -0
  320. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
  321. data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +222 -0
  322. data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
  323. data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
  324. data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
  325. data/dist/ice/cpp/src/Ice/Selector.cpp +1270 -0
  326. data/dist/ice/cpp/src/Ice/Selector.h +235 -0
  327. data/dist/ice/cpp/src/Ice/ServantManager.cpp +547 -0
  328. data/dist/ice/cpp/src/Ice/ServantManager.h +66 -0
  329. data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
  330. data/dist/ice/cpp/src/Ice/Service.cpp +1790 -0
  331. data/dist/ice/cpp/src/Ice/SharedContext.h +33 -0
  332. data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
  333. data/dist/ice/cpp/src/Ice/SlicedData.cpp +48 -0
  334. data/dist/ice/cpp/src/Ice/StreamSocket.cpp +472 -0
  335. data/dist/ice/cpp/src/Ice/StreamSocket.h +73 -0
  336. data/dist/ice/cpp/src/Ice/StringConverter.cpp +582 -0
  337. data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
  338. data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +160 -0
  339. data/dist/ice/cpp/src/Ice/SysLoggerI.h +34 -0
  340. data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +65 -0
  341. data/dist/ice/cpp/src/Ice/SystemdJournalI.h +33 -0
  342. data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
  343. data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +213 -0
  344. data/dist/ice/cpp/src/Ice/TcpAcceptor.h +55 -0
  345. data/dist/ice/cpp/src/Ice/TcpConnector.cpp +128 -0
  346. data/dist/ice/cpp/src/Ice/TcpConnector.h +36 -0
  347. data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +411 -0
  348. data/dist/ice/cpp/src/Ice/TcpEndpointI.h +86 -0
  349. data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +147 -0
  350. data/dist/ice/cpp/src/Ice/TcpTransceiver.h +53 -0
  351. data/dist/ice/cpp/src/Ice/ThreadPool.cpp +1110 -0
  352. data/dist/ice/cpp/src/Ice/ThreadPool.h +305 -0
  353. data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
  354. data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
  355. data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
  356. data/dist/ice/cpp/src/Ice/Timer.cpp +169 -0
  357. data/dist/ice/cpp/src/Ice/Timer.h +212 -0
  358. data/dist/ice/cpp/src/Ice/TraceLevels.cpp +20 -0
  359. data/dist/ice/cpp/src/Ice/TraceLevels.h +39 -0
  360. data/dist/ice/cpp/src/Ice/TraceLevelsF.h +14 -0
  361. data/dist/ice/cpp/src/Ice/TraceUtil.cpp +399 -0
  362. data/dist/ice/cpp/src/Ice/TraceUtil.h +41 -0
  363. data/dist/ice/cpp/src/Ice/Transceiver.cpp +14 -0
  364. data/dist/ice/cpp/src/Ice/Transceiver.h +52 -0
  365. data/dist/ice/cpp/src/Ice/TransceiverF.h +23 -0
  366. data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
  367. data/dist/ice/cpp/src/Ice/UdpConnector.cpp +131 -0
  368. data/dist/ice/cpp/src/Ice/UdpConnector.h +36 -0
  369. data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +480 -0
  370. data/dist/ice/cpp/src/Ice/UdpEndpointI.h +92 -0
  371. data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +786 -0
  372. data/dist/ice/cpp/src/Ice/UdpTransceiver.h +90 -0
  373. data/dist/ice/cpp/src/Ice/UndefSysMacros.h +37 -0
  374. data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
  375. data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
  376. data/dist/ice/cpp/src/Ice/Value.cpp +145 -0
  377. data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +87 -0
  378. data/dist/ice/cpp/src/Ice/WSAcceptor.h +46 -0
  379. data/dist/ice/cpp/src/Ice/WSConnector.cpp +87 -0
  380. data/dist/ice/cpp/src/Ice/WSConnector.h +36 -0
  381. data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +455 -0
  382. data/dist/ice/cpp/src/Ice/WSEndpoint.h +82 -0
  383. data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +1715 -0
  384. data/dist/ice/cpp/src/Ice/WSTransceiver.h +135 -0
  385. data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +40 -0
  386. data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
  387. data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +40 -0
  388. data/dist/ice/cpp/src/Ice/generated/Identity.cpp +47 -0
  389. data/dist/ice/cpp/src/Ice/generated/Locator.cpp +752 -0
  390. data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
  391. data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +1205 -0
  392. data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
  393. data/dist/ice/cpp/src/Ice/generated/Process.cpp +330 -0
  394. data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +443 -0
  395. data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
  396. data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +851 -0
  397. data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
  398. data/dist/ice/cpp/src/Ice/generated/Router.cpp +660 -0
  399. data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +39 -0
  400. data/dist/ice/cpp/src/Ice/generated/Version.cpp +54 -0
  401. data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +202 -0
  402. data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +68 -0
  403. data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +494 -0
  404. data/dist/ice/cpp/src/IceDiscovery/LookupI.h +168 -0
  405. data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +155 -0
  406. data/dist/ice/cpp/src/IceDiscovery/PluginI.h +31 -0
  407. data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
  408. data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +24 -0
  409. data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +822 -0
  410. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
  411. data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
  412. data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
  413. data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
  414. data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
  415. data/dist/ice/cpp/src/Slice/FileTracker.cpp +96 -0
  416. data/dist/ice/cpp/src/Slice/FileTracker.h +44 -0
  417. data/dist/ice/cpp/src/Slice/Grammar.cpp +4125 -0
  418. data/dist/ice/cpp/src/Slice/Grammar.h +138 -0
  419. data/dist/ice/cpp/src/Slice/GrammarUtil.h +128 -0
  420. data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +473 -0
  421. data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
  422. data/dist/ice/cpp/src/Slice/Parser.cpp +4906 -0
  423. data/dist/ice/cpp/src/Slice/Parser.h +1175 -0
  424. data/dist/ice/cpp/src/Slice/Preprocessor.cpp +295 -0
  425. data/dist/ice/cpp/src/Slice/Preprocessor.h +44 -0
  426. data/dist/ice/cpp/src/Slice/Scanner.cpp +3445 -0
  427. data/dist/ice/cpp/src/Slice/SliceUtil.cpp +790 -0
  428. data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +448 -0
  429. data/dist/ice/cpp/src/Slice/Util.h +134 -0
  430. data/dist/ice/cpp/src/slice2rb/Main.cpp +33 -0
  431. data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
  432. data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
  433. data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
  434. data/dist/ice/mcpp/internal.H +530 -0
  435. data/dist/ice/slice/Glacier2/Metrics.ice +47 -0
  436. data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +55 -0
  437. data/dist/ice/slice/Glacier2/Router.ice +93 -0
  438. data/dist/ice/slice/Glacier2/SSLInfo.ice +42 -0
  439. data/dist/ice/slice/Glacier2/Session.ice +133 -0
  440. data/dist/ice/slice/Ice/BuiltinSequences.ice +54 -0
  441. data/dist/ice/slice/Ice/Context.ice +24 -0
  442. data/dist/ice/slice/Ice/EndpointTypes.ice +50 -0
  443. data/dist/ice/slice/Ice/Identity.ice +36 -0
  444. data/dist/ice/slice/Ice/Locator.ice +74 -0
  445. data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
  446. data/dist/ice/slice/Ice/Metrics.ice +201 -0
  447. data/dist/ice/slice/Ice/OperationMode.ice +38 -0
  448. data/dist/ice/slice/Ice/Process.ice +28 -0
  449. data/dist/ice/slice/Ice/PropertiesAdmin.ice +37 -0
  450. data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
  451. data/dist/ice/slice/Ice/RemoteLogger.ice +126 -0
  452. data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
  453. data/dist/ice/slice/Ice/Router.ice +54 -0
  454. data/dist/ice/slice/Ice/SliceChecksumDict.ice +18 -0
  455. data/dist/ice/slice/Ice/Version.ice +43 -0
  456. data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
  457. data/dist/ice/slice/IceGrid/Admin.ice +981 -0
  458. data/dist/ice/slice/IceGrid/Descriptor.ice +519 -0
  459. data/dist/ice/slice/IceGrid/Exception.ice +98 -0
  460. data/dist/ice/slice/IceGrid/FileParser.ice +36 -0
  461. data/dist/ice/slice/IceGrid/Registry.ice +130 -0
  462. data/dist/ice/slice/IceGrid/Session.ice +64 -0
  463. data/dist/ice/slice/IceGrid/UserAccountMapper.ice +34 -0
  464. data/dist/ice/slice/IceStorm/IceStorm.ice +186 -0
  465. data/dist/ice/slice/IceStorm/Metrics.ice +41 -0
  466. data/dist/lib/Glacier2/Metrics.rb +41 -0
  467. data/dist/lib/Glacier2/PermissionsVerifier.rb +61 -0
  468. data/dist/lib/Glacier2/Router.rb +73 -0
  469. data/dist/lib/Glacier2/SSLInfo.rb +64 -0
  470. data/dist/lib/Glacier2/Session.rb +187 -0
  471. data/dist/lib/Glacier2.rb +7 -0
  472. data/dist/lib/Ice/BuiltinSequences.rb +48 -0
  473. data/dist/lib/Ice/CompressBatch.rb +50 -0
  474. data/dist/lib/Ice/Context.rb +12 -0
  475. data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
  476. data/dist/lib/Ice/EndpointTypes.rb +28 -0
  477. data/dist/lib/Ice/Exception.rb +20 -0
  478. data/dist/lib/Ice/Identity.rb +47 -0
  479. data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
  480. data/dist/lib/Ice/InitializationData.rb +12 -0
  481. data/dist/lib/Ice/LocalExceptions.rb +168 -0
  482. data/dist/lib/Ice/Locator.rb +83 -0
  483. data/dist/lib/Ice/LocatorRegistry.rb +73 -0
  484. data/dist/lib/Ice/Metrics.rb +290 -0
  485. data/dist/lib/Ice/OperationMode.rb +58 -0
  486. data/dist/lib/Ice/Process.rb +34 -0
  487. data/dist/lib/Ice/PropertiesAdmin.rb +39 -0
  488. data/dist/lib/Ice/PropertyDict.rb +12 -0
  489. data/dist/lib/Ice/Proxy.rb +85 -0
  490. data/dist/lib/Ice/ProxyFunctions.rb +69 -0
  491. data/dist/lib/Ice/RemoteLogger.rb +176 -0
  492. data/dist/lib/Ice/ReplyStatus.rb +65 -0
  493. data/dist/lib/Ice/Router.rb +59 -0
  494. data/dist/lib/Ice/SliceChecksumDict.rb +12 -0
  495. data/dist/lib/Ice/SliceUtil.rb +41 -0
  496. data/dist/lib/Ice/Struct.rb +11 -0
  497. data/dist/lib/Ice/ToStringMode.rb +50 -0
  498. data/dist/lib/Ice/Value.rb +93 -0
  499. data/dist/lib/Ice/Version.rb +78 -0
  500. data/dist/lib/Ice.rb +37 -0
  501. data/dist/lib/IceBox/ServiceManager.rb +104 -0
  502. data/dist/lib/IceBox.rb +3 -0
  503. data/dist/lib/IceGrid/Admin.rb +1208 -0
  504. data/dist/lib/IceGrid/Descriptor.rb +989 -0
  505. data/dist/lib/IceGrid/Exception.rb +145 -0
  506. data/dist/lib/IceGrid/FileParser.rb +41 -0
  507. data/dist/lib/IceGrid/Registry.rb +168 -0
  508. data/dist/lib/IceGrid/Session.rb +56 -0
  509. data/dist/lib/IceGrid/UserAccountMapper.rb +38 -0
  510. data/dist/lib/IceGrid.rb +9 -0
  511. data/dist/lib/IceStorm/IceStorm.rb +251 -0
  512. data/dist/lib/IceStorm/Metrics.rb +55 -0
  513. data/dist/lib/IceStorm.rb +4 -0
  514. data/extconf.rb +89 -0
  515. data/ice.gemspec +22 -17
  516. data/scripts/slice2rb +10 -0
  517. metadata +536 -712
  518. data/ICE_LICENSE +0 -48
  519. data/LICENSE +0 -340
  520. data/MCPP_LICENSE +0 -29
  521. data/bin/slice2rb +0 -12
  522. data/ext/Communicator.cpp +0 -792
  523. data/ext/Communicator.h +0 -20
  524. data/ext/Config.h +0 -143
  525. data/ext/Connection.cpp +0 -532
  526. data/ext/Connection.h +0 -24
  527. data/ext/Endpoint.cpp +0 -340
  528. data/ext/Endpoint.h +0 -22
  529. data/ext/ImplicitContext.cpp +0 -144
  530. data/ext/ImplicitContext.h +0 -20
  531. data/ext/Init.cpp +0 -49
  532. data/ext/Logger.cpp +0 -147
  533. data/ext/Logger.h +0 -23
  534. data/ext/Operation.cpp +0 -661
  535. data/ext/Operation.h +0 -31
  536. data/ext/Properties.cpp +0 -365
  537. data/ext/Properties.h +0 -20
  538. data/ext/Proxy.cpp +0 -1396
  539. data/ext/Proxy.h +0 -22
  540. data/ext/Slice.cpp +0 -205
  541. data/ext/Slice.h +0 -17
  542. data/ext/Types.cpp +0 -3325
  543. data/ext/Types.h +0 -595
  544. data/ext/Util.cpp +0 -812
  545. data/ext/Util.h +0 -586
  546. data/ext/ValueFactoryManager.cpp +0 -441
  547. data/ext/ValueFactoryManager.h +0 -95
  548. data/ext/extconf.rb +0 -97
  549. data/ext/ice/cpp/include/Ice/Application.h +0 -326
  550. data/ext/ice/cpp/include/Ice/AsyncResult.h +0 -155
  551. data/ext/ice/cpp/include/Ice/AsyncResultF.h +0 -23
  552. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
  553. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +0 -20
  554. data/ext/ice/cpp/include/Ice/Buffer.h +0 -154
  555. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
  556. data/ext/ice/cpp/include/Ice/Comparable.h +0 -205
  557. data/ext/ice/cpp/include/Ice/Config.h +0 -78
  558. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
  559. data/ext/ice/cpp/include/Ice/ConnectionIF.h +0 -38
  560. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
  561. data/ext/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
  562. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
  563. data/ext/ice/cpp/include/Ice/Dispatcher.h +0 -67
  564. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
  565. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
  566. data/ext/ice/cpp/include/Ice/Exception.h +0 -161
  567. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
  568. data/ext/ice/cpp/include/Ice/FactoryTable.h +0 -73
  569. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
  570. data/ext/ice/cpp/include/Ice/Format.h +0 -38
  571. data/ext/ice/cpp/include/Ice/Functional.h +0 -140
  572. data/ext/ice/cpp/include/Ice/GCObject.h +0 -76
  573. data/ext/ice/cpp/include/Ice/Handle.h +0 -182
  574. data/ext/ice/cpp/include/Ice/Ice.h +0 -55
  575. data/ext/ice/cpp/include/Ice/IconvStringConverter.h +0 -377
  576. data/ext/ice/cpp/include/Ice/Incoming.h +0 -225
  577. data/ext/ice/cpp/include/Ice/IncomingAsync.h +0 -186
  578. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
  579. data/ext/ice/cpp/include/Ice/Initialize.h +0 -957
  580. data/ext/ice/cpp/include/Ice/InputStream.h +0 -1514
  581. data/ext/ice/cpp/include/Ice/InstanceF.h +0 -20
  582. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
  583. data/ext/ice/cpp/include/Ice/LocalObject.h +0 -35
  584. data/ext/ice/cpp/include/Ice/LocalObjectF.h +0 -21
  585. data/ext/ice/cpp/include/Ice/LoggerUtil.h +0 -185
  586. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
  587. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
  588. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
  589. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +0 -86
  590. data/ext/ice/cpp/include/Ice/Object.h +0 -507
  591. data/ext/ice/cpp/include/Ice/ObjectF.h +0 -30
  592. data/ext/ice/cpp/include/Ice/ObserverHelper.h +0 -182
  593. data/ext/ice/cpp/include/Ice/Optional.h +0 -1114
  594. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +0 -856
  595. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
  596. data/ext/ice/cpp/include/Ice/OutputStream.h +0 -1092
  597. data/ext/ice/cpp/include/Ice/Protocol.h +0 -274
  598. data/ext/ice/cpp/include/Ice/Proxy.h +0 -5154
  599. data/ext/ice/cpp/include/Ice/ProxyF.h +0 -53
  600. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
  601. data/ext/ice/cpp/include/Ice/ProxyHandle.h +0 -318
  602. data/ext/ice/cpp/include/Ice/ReferenceF.h +0 -29
  603. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
  604. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +0 -30
  605. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
  606. data/ext/ice/cpp/include/Ice/SHA1.h +0 -42
  607. data/ext/ice/cpp/include/Ice/ServantManagerF.h +0 -21
  608. data/ext/ice/cpp/include/Ice/Service.h +0 -379
  609. data/ext/ice/cpp/include/Ice/SliceChecksums.h +0 -33
  610. data/ext/ice/cpp/include/Ice/SlicedData.h +0 -172
  611. data/ext/ice/cpp/include/Ice/SlicedDataF.h +0 -40
  612. data/ext/ice/cpp/include/Ice/StreamHelpers.h +0 -1190
  613. data/ext/ice/cpp/include/Ice/StringConverter.h +0 -78
  614. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
  615. data/ext/ice/cpp/include/Ice/UUID.h +0 -19
  616. data/ext/ice/cpp/include/Ice/UniquePtr.h +0 -95
  617. data/ext/ice/cpp/include/Ice/UniqueRef.h +0 -97
  618. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +0 -88
  619. data/ext/ice/cpp/include/Ice/Value.h +0 -139
  620. data/ext/ice/cpp/include/Ice/ValueF.h +0 -21
  621. data/ext/ice/cpp/include/IceSSL/Config.h +0 -21
  622. data/ext/ice/cpp/include/IceSSL/IceSSL.h +0 -28
  623. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
  624. data/ext/ice/cpp/include/IceSSL/Plugin.h +0 -712
  625. data/ext/ice/cpp/include/IceSSL/SChannel.h +0 -72
  626. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
  627. data/ext/ice/cpp/include/IceSSL/UWP.h +0 -62
  628. data/ext/ice/cpp/include/IceUtil/Atomic.h +0 -179
  629. data/ext/ice/cpp/include/IceUtil/Cond.h +0 -317
  630. data/ext/ice/cpp/include/IceUtil/Config.h +0 -424
  631. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
  632. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
  633. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -92
  634. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
  635. data/ext/ice/cpp/include/IceUtil/Exception.h +0 -394
  636. data/ext/ice/cpp/include/IceUtil/FileUtil.h +0 -143
  637. data/ext/ice/cpp/include/IceUtil/Functional.h +0 -389
  638. data/ext/ice/cpp/include/IceUtil/Handle.h +0 -261
  639. data/ext/ice/cpp/include/IceUtil/IceUtil.h +0 -40
  640. data/ext/ice/cpp/include/IceUtil/InputUtil.h +0 -42
  641. data/ext/ice/cpp/include/IceUtil/Iterator.h +0 -31
  642. data/ext/ice/cpp/include/IceUtil/Lock.h +0 -128
  643. data/ext/ice/cpp/include/IceUtil/Monitor.h +0 -243
  644. data/ext/ice/cpp/include/IceUtil/Mutex.h +0 -353
  645. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
  646. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
  647. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
  648. data/ext/ice/cpp/include/IceUtil/Optional.h +0 -433
  649. data/ext/ice/cpp/include/IceUtil/Options.h +0 -135
  650. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
  651. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +0 -14
  652. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
  653. data/ext/ice/cpp/include/IceUtil/Random.h +0 -55
  654. data/ext/ice/cpp/include/IceUtil/RecMutex.h +0 -107
  655. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +0 -53
  656. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
  657. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
  658. data/ext/ice/cpp/include/IceUtil/Shared.h +0 -127
  659. data/ext/ice/cpp/include/IceUtil/StopWatch.h +0 -49
  660. data/ext/ice/cpp/include/IceUtil/StringConverter.h +0 -195
  661. data/ext/ice/cpp/include/IceUtil/StringUtil.h +0 -97
  662. data/ext/ice/cpp/include/IceUtil/Thread.h +0 -174
  663. data/ext/ice/cpp/include/IceUtil/ThreadException.h +0 -94
  664. data/ext/ice/cpp/include/IceUtil/Time.h +0 -205
  665. data/ext/ice/cpp/include/IceUtil/Timer.h +0 -143
  666. data/ext/ice/cpp/include/IceUtil/UUID.h +0 -21
  667. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +0 -37
  668. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +0 -170
  669. data/ext/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
  670. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
  671. data/ext/ice/cpp/include/generated/Ice/Connection.h +0 -1703
  672. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
  673. data/ext/ice/cpp/include/generated/Ice/Current.h +0 -322
  674. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
  675. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
  676. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +0 -118
  677. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
  678. data/ext/ice/cpp/include/generated/Ice/Identity.h +0 -264
  679. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
  680. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
  681. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
  682. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
  683. data/ext/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
  684. data/ext/ice/cpp/include/generated/Ice/Locator.h +0 -3898
  685. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
  686. data/ext/ice/cpp/include/generated/Ice/Logger.h +0 -237
  687. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
  688. data/ext/ice/cpp/include/generated/Ice/Metrics.h +0 -4769
  689. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
  690. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
  691. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
  692. data/ext/ice/cpp/include/generated/Ice/Plugin.h +0 -318
  693. data/ext/ice/cpp/include/generated/Ice/PluginF.h +0 -110
  694. data/ext/ice/cpp/include/generated/Ice/Process.h +0 -977
  695. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
  696. data/ext/ice/cpp/include/generated/Ice/Properties.h +0 -452
  697. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +0 -1366
  698. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
  699. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +0 -2707
  700. data/ext/ice/cpp/include/generated/Ice/Router.h +0 -1850
  701. data/ext/ice/cpp/include/generated/Ice/RouterF.h +0 -125
  702. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
  703. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
  704. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +0 -84
  705. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
  706. data/ext/ice/cpp/include/generated/Ice/Version.h +0 -357
  707. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
  708. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
  709. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
  710. data/ext/ice/cpp/src/Ice/ACM.cpp +0 -380
  711. data/ext/ice/cpp/src/Ice/ACM.h +0 -119
  712. data/ext/ice/cpp/src/Ice/ACMF.h +0 -30
  713. data/ext/ice/cpp/src/Ice/Acceptor.cpp +0 -16
  714. data/ext/ice/cpp/src/Ice/Acceptor.h +0 -37
  715. data/ext/ice/cpp/src/Ice/AcceptorF.h +0 -25
  716. data/ext/ice/cpp/src/Ice/ArgVector.cpp +0 -59
  717. data/ext/ice/cpp/src/Ice/ArgVector.h +0 -36
  718. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
  719. data/ext/ice/cpp/src/Ice/Base64.cpp +0 -263
  720. data/ext/ice/cpp/src/Ice/Base64.h +0 -31
  721. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +0 -250
  722. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +0 -59
  723. data/ext/ice/cpp/src/Ice/Buffer.cpp +0 -155
  724. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +0 -49
  725. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +0 -407
  726. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +0 -87
  727. data/ext/ice/cpp/src/Ice/Communicator.cpp +0 -79
  728. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +0 -61
  729. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
  730. data/ext/ice/cpp/src/Ice/CommunicatorI.h +0 -167
  731. data/ext/ice/cpp/src/Ice/Cond.cpp +0 -381
  732. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +0 -348
  733. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +0 -72
  734. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +0 -24
  735. data/ext/ice/cpp/src/Ice/Connection.cpp +0 -155
  736. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +0 -61
  737. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +0 -1972
  738. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +0 -264
  739. data/ext/ice/cpp/src/Ice/ConnectionFactoryF.h +0 -30
  740. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +0 -3670
  741. data/ext/ice/cpp/src/Ice/ConnectionI.h +0 -391
  742. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
  743. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
  744. data/ext/ice/cpp/src/Ice/Connector.cpp +0 -16
  745. data/ext/ice/cpp/src/Ice/Connector.h +0 -32
  746. data/ext/ice/cpp/src/Ice/ConnectorF.h +0 -21
  747. data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +0 -179
  748. data/ext/ice/cpp/src/Ice/Current.cpp +0 -62
  749. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +0 -161
  750. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +0 -52
  751. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +0 -21
  752. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
  753. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +0 -291
  754. data/ext/ice/cpp/src/Ice/Endpoint.cpp +0 -147
  755. data/ext/ice/cpp/src/Ice/EndpointF.cpp +0 -61
  756. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +0 -189
  757. data/ext/ice/cpp/src/Ice/EndpointFactory.h +0 -117
  758. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +0 -21
  759. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +0 -213
  760. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +0 -47
  761. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +0 -21
  762. data/ext/ice/cpp/src/Ice/EndpointI.cpp +0 -98
  763. data/ext/ice/cpp/src/Ice/EndpointI.h +0 -218
  764. data/ext/ice/cpp/src/Ice/EndpointIF.h +0 -49
  765. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +0 -51
  766. data/ext/ice/cpp/src/Ice/EventHandler.cpp +0 -32
  767. data/ext/ice/cpp/src/Ice/EventHandler.h +0 -81
  768. data/ext/ice/cpp/src/Ice/EventHandlerF.h +0 -24
  769. data/ext/ice/cpp/src/Ice/Exception.cpp +0 -845
  770. data/ext/ice/cpp/src/Ice/FacetMap.cpp +0 -49
  771. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
  772. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
  773. data/ext/ice/cpp/src/Ice/GCObject.cpp +0 -442
  774. data/ext/ice/cpp/src/Ice/HashUtil.h +0 -53
  775. data/ext/ice/cpp/src/Ice/HttpParser.cpp +0 -684
  776. data/ext/ice/cpp/src/Ice/HttpParser.h +0 -117
  777. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +0 -756
  778. data/ext/ice/cpp/src/Ice/IPEndpointI.h +0 -162
  779. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +0 -28
  780. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
  781. data/ext/ice/cpp/src/Ice/Identity.cpp +0 -57
  782. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +0 -75
  783. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +0 -61
  784. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
  785. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
  786. data/ext/ice/cpp/src/Ice/Incoming.cpp +0 -795
  787. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
  788. data/ext/ice/cpp/src/Ice/IncomingRequest.h +0 -33
  789. data/ext/ice/cpp/src/Ice/Initialize.cpp +0 -654
  790. data/ext/ice/cpp/src/Ice/InputStream.cpp +0 -2741
  791. data/ext/ice/cpp/src/Ice/Instance.cpp +0 -1971
  792. data/ext/ice/cpp/src/Ice/Instance.h +0 -235
  793. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +0 -188
  794. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +0 -66
  795. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +0 -1094
  796. data/ext/ice/cpp/src/Ice/InstrumentationI.h +0 -256
  797. data/ext/ice/cpp/src/Ice/LocalException.cpp +0 -3262
  798. data/ext/ice/cpp/src/Ice/LocalObject.cpp +0 -23
  799. data/ext/ice/cpp/src/Ice/Locator.cpp +0 -2042
  800. data/ext/ice/cpp/src/Ice/LocatorF.cpp +0 -63
  801. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +0 -889
  802. data/ext/ice/cpp/src/Ice/LocatorInfo.h +0 -189
  803. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +0 -29
  804. data/ext/ice/cpp/src/Ice/Logger.cpp +0 -73
  805. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +0 -956
  806. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +0 -41
  807. data/ext/ice/cpp/src/Ice/LoggerF.cpp +0 -61
  808. data/ext/ice/cpp/src/Ice/LoggerI.cpp +0 -261
  809. data/ext/ice/cpp/src/Ice/LoggerI.h +0 -52
  810. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +0 -100
  811. data/ext/ice/cpp/src/Ice/Metrics.cpp +0 -2352
  812. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +0 -694
  813. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
  814. data/ext/ice/cpp/src/Ice/Network.cpp +0 -3075
  815. data/ext/ice/cpp/src/Ice/Network.h +0 -371
  816. data/ext/ice/cpp/src/Ice/NetworkF.h +0 -23
  817. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +0 -324
  818. data/ext/ice/cpp/src/Ice/NetworkProxy.h +0 -72
  819. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +0 -21
  820. data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +0 -57
  821. data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +0 -40
  822. data/ext/ice/cpp/src/Ice/Object.cpp +0 -435
  823. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +0 -79
  824. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +0 -61
  825. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +0 -291
  826. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +0 -53
  827. data/ext/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +0 -25
  828. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +0 -1530
  829. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +0 -159
  830. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +0 -75
  831. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +0 -56
  832. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +0 -408
  833. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +0 -74
  834. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +0 -1322
  835. data/ext/ice/cpp/src/Ice/OutputStream.cpp +0 -1367
  836. data/ext/ice/cpp/src/Ice/Plugin.cpp +0 -87
  837. data/ext/ice/cpp/src/Ice/PluginF.cpp +0 -61
  838. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +0 -503
  839. data/ext/ice/cpp/src/Ice/PluginManagerI.h +0 -61
  840. data/ext/ice/cpp/src/Ice/Process.cpp +0 -471
  841. data/ext/ice/cpp/src/Ice/ProcessF.cpp +0 -63
  842. data/ext/ice/cpp/src/Ice/Properties.cpp +0 -78
  843. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +0 -603
  844. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
  845. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
  846. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +0 -63
  847. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +0 -747
  848. data/ext/ice/cpp/src/Ice/PropertiesI.h +0 -70
  849. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +0 -1429
  850. data/ext/ice/cpp/src/Ice/PropertyNames.h +0 -78
  851. data/ext/ice/cpp/src/Ice/Protocol.cpp +0 -124
  852. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +0 -131
  853. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +0 -93
  854. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +0 -21
  855. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +0 -51
  856. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +0 -64
  857. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
  858. data/ext/ice/cpp/src/Ice/Proxy.cpp +0 -1601
  859. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
  860. data/ext/ice/cpp/src/Ice/ProxyFactory.h +0 -57
  861. data/ext/ice/cpp/src/Ice/Reference.cpp +0 -2046
  862. data/ext/ice/cpp/src/Ice/Reference.h +0 -323
  863. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +0 -888
  864. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +0 -76
  865. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +0 -19
  866. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
  867. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
  868. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +0 -1171
  869. data/ext/ice/cpp/src/Ice/ReplyStatus.h +0 -24
  870. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +0 -37
  871. data/ext/ice/cpp/src/Ice/RequestHandler.h +0 -78
  872. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
  873. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
  874. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
  875. data/ext/ice/cpp/src/Ice/ResponseHandler.h +0 -43
  876. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +0 -157
  877. data/ext/ice/cpp/src/Ice/RetryQueue.h +0 -66
  878. data/ext/ice/cpp/src/Ice/RetryQueueF.h +0 -19
  879. data/ext/ice/cpp/src/Ice/Router.cpp +0 -977
  880. data/ext/ice/cpp/src/Ice/RouterF.cpp +0 -63
  881. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +0 -379
  882. data/ext/ice/cpp/src/Ice/RouterInfo.h +0 -152
  883. data/ext/ice/cpp/src/Ice/RouterInfoF.h +0 -25
  884. data/ext/ice/cpp/src/Ice/SHA1.cpp +0 -185
  885. data/ext/ice/cpp/src/Ice/Selector.cpp +0 -1537
  886. data/ext/ice/cpp/src/Ice/Selector.h +0 -308
  887. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +0 -75
  888. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +0 -61
  889. data/ext/ice/cpp/src/Ice/ServantManager.cpp +0 -480
  890. data/ext/ice/cpp/src/Ice/ServantManager.h +0 -69
  891. data/ext/ice/cpp/src/Ice/SharedContext.h +0 -46
  892. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +0 -49
  893. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
  894. data/ext/ice/cpp/src/Ice/SlicedData.cpp +0 -127
  895. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +0 -682
  896. data/ext/ice/cpp/src/Ice/StreamSocket.h +0 -92
  897. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
  898. data/ext/ice/cpp/src/Ice/StringUtil.h +0 -30
  899. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +0 -166
  900. data/ext/ice/cpp/src/Ice/SysLoggerI.h +0 -37
  901. data/ext/ice/cpp/src/Ice/SystemdJournalI.cpp +0 -66
  902. data/ext/ice/cpp/src/Ice/SystemdJournalI.h +0 -39
  903. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +0 -355
  904. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +0 -69
  905. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +0 -127
  906. data/ext/ice/cpp/src/Ice/TcpConnector.h +0 -45
  907. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +0 -385
  908. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +0 -90
  909. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +0 -135
  910. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +0 -58
  911. data/ext/ice/cpp/src/Ice/Thread.cpp +0 -811
  912. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +0 -1328
  913. data/ext/ice/cpp/src/Ice/ThreadPool.h +0 -393
  914. data/ext/ice/cpp/src/Ice/Timer.cpp +0 -263
  915. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +0 -38
  916. data/ext/ice/cpp/src/Ice/TraceLevels.h +0 -45
  917. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +0 -21
  918. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +0 -478
  919. data/ext/ice/cpp/src/Ice/TraceUtil.h +0 -30
  920. data/ext/ice/cpp/src/Ice/Transceiver.cpp +0 -18
  921. data/ext/ice/cpp/src/Ice/Transceiver.h +0 -49
  922. data/ext/ice/cpp/src/Ice/TransceiverF.h +0 -33
  923. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +0 -136
  924. data/ext/ice/cpp/src/Ice/UdpConnector.h +0 -45
  925. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +0 -515
  926. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +0 -95
  927. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +0 -1153
  928. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +0 -117
  929. data/ext/ice/cpp/src/Ice/Value.cpp +0 -76
  930. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +0 -83
  931. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
  932. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
  933. data/ext/ice/cpp/src/Ice/Version.cpp +0 -57
  934. data/ext/ice/cpp/src/Ice/VirtualShared.h +0 -38
  935. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +0 -92
  936. data/ext/ice/cpp/src/Ice/WSAcceptor.h +0 -52
  937. data/ext/ice/cpp/src/Ice/WSConnector.cpp +0 -102
  938. data/ext/ice/cpp/src/Ice/WSConnector.h +0 -43
  939. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +0 -508
  940. data/ext/ice/cpp/src/Ice/WSEndpoint.h +0 -93
  941. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +0 -1747
  942. data/ext/ice/cpp/src/Ice/WSTransceiver.h +0 -141
  943. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +0 -915
  944. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +0 -1889
  945. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +0 -265
  946. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +0 -109
  947. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +0 -608
  948. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +0 -228
  949. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +0 -176
  950. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +0 -36
  951. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +0 -730
  952. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
  953. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +0 -47
  954. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +0 -1048
  955. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
  956. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
  957. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
  958. data/ext/ice/cpp/src/IceSSL/CertificateI.h +0 -64
  959. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +0 -75
  960. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +0 -61
  961. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
  962. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
  963. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
  964. data/ext/ice/cpp/src/IceSSL/EndpointI.h +0 -100
  965. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +0 -75
  966. data/ext/ice/cpp/src/IceSSL/Instance.cpp +0 -28
  967. data/ext/ice/cpp/src/IceSSL/Instance.h +0 -37
  968. data/ext/ice/cpp/src/IceSSL/InstanceF.h +0 -33
  969. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
  970. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
  971. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
  972. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
  973. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
  974. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
  975. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
  976. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
  977. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
  978. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
  979. data/ext/ice/cpp/src/IceSSL/PluginI.h +0 -67
  980. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +0 -490
  981. data/ext/ice/cpp/src/IceSSL/RFC2253.h +0 -62
  982. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
  983. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
  984. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
  985. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
  986. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
  987. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
  988. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
  989. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
  990. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
  991. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
  992. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
  993. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
  994. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
  995. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
  996. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
  997. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
  998. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
  999. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
  1000. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
  1001. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
  1002. data/ext/ice/cpp/src/IceSSL/TrustManager.h +0 -46
  1003. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
  1004. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +0 -266
  1005. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +0 -338
  1006. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +0 -41
  1007. data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +0 -26
  1008. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +0 -89
  1009. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +0 -383
  1010. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +0 -71
  1011. data/ext/ice/cpp/src/IceSSL/Util.cpp +0 -192
  1012. data/ext/ice/cpp/src/IceSSL/Util.h +0 -99
  1013. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +0 -157
  1014. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
  1015. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
  1016. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
  1017. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +0 -484
  1018. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
  1019. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
  1020. data/ext/ice/cpp/src/IceUtil/Options.cpp +0 -1051
  1021. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
  1022. data/ext/ice/cpp/src/IceUtil/Random.cpp +0 -180
  1023. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +0 -242
  1024. data/ext/ice/cpp/src/IceUtil/Shared.cpp +0 -71
  1025. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
  1026. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1180
  1027. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
  1028. data/ext/ice/cpp/src/IceUtil/Time.cpp +0 -307
  1029. data/ext/ice/cpp/src/IceUtil/UUID.cpp +0 -169
  1030. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
  1031. data/ext/ice/cpp/src/IceUtil/Unicode.h +0 -43
  1032. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
  1033. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
  1034. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
  1035. data/ext/ice/cpp/src/Slice/Checksum.cpp +0 -447
  1036. data/ext/ice/cpp/src/Slice/Checksum.h +0 -21
  1037. data/ext/ice/cpp/src/Slice/FileTracker.cpp +0 -146
  1038. data/ext/ice/cpp/src/Slice/FileTracker.h +0 -66
  1039. data/ext/ice/cpp/src/Slice/Grammar.cpp +0 -4793
  1040. data/ext/ice/cpp/src/Slice/Grammar.h +0 -118
  1041. data/ext/ice/cpp/src/Slice/GrammarUtil.h +0 -228
  1042. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +0 -5154
  1043. data/ext/ice/cpp/src/Slice/JavaUtil.h +0 -398
  1044. data/ext/ice/cpp/src/Slice/MD5.cpp +0 -52
  1045. data/ext/ice/cpp/src/Slice/MD5.h +0 -39
  1046. data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -393
  1047. data/ext/ice/cpp/src/Slice/MD5I.h +0 -91
  1048. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
  1049. data/ext/ice/cpp/src/Slice/PHPUtil.h +0 -36
  1050. data/ext/ice/cpp/src/Slice/Parser.cpp +0 -7058
  1051. data/ext/ice/cpp/src/Slice/Parser.h +0 -1174
  1052. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +0 -797
  1053. data/ext/ice/cpp/src/Slice/Preprocessor.h +0 -60
  1054. data/ext/ice/cpp/src/Slice/Python.cpp +0 -830
  1055. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
  1056. data/ext/ice/cpp/src/Slice/PythonUtil.h +0 -70
  1057. data/ext/ice/cpp/src/Slice/Ruby.cpp +0 -350
  1058. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
  1059. data/ext/ice/cpp/src/Slice/RubyUtil.h +0 -49
  1060. data/ext/ice/cpp/src/Slice/Scanner.cpp +0 -2807
  1061. data/ext/ice/cpp/src/Slice/SliceUtil.cpp +0 -424
  1062. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +0 -456
  1063. data/ext/ice/cpp/src/Slice/Util.h +0 -50
  1064. data/ext/ice/mcpp/CMakeLists.txt +0 -80
  1065. data/ext/ice/mcpp/LICENSE +0 -29
  1066. data/ext/ice/mcpp/Makefile +0 -63
  1067. data/ext/ice/mcpp/README.md +0 -32
  1068. data/ext/ice/mcpp/internal.H +0 -530
  1069. data/ext/ice/mcpp/mcpp.gyp +0 -88
  1070. data/lib/Glacier2/Metrics.rb +0 -56
  1071. data/lib/Glacier2/PermissionsVerifier.rb +0 -93
  1072. data/lib/Glacier2/PermissionsVerifierF.rb +0 -30
  1073. data/lib/Glacier2/Router.rb +0 -95
  1074. data/lib/Glacier2/RouterF.rb +0 -25
  1075. data/lib/Glacier2/SSLInfo.rb +0 -72
  1076. data/lib/Glacier2/Session.rb +0 -247
  1077. data/lib/Glacier2.rb +0 -7
  1078. data/lib/Ice/BuiltinSequences.rb +0 -60
  1079. data/lib/Ice/Communicator.rb +0 -87
  1080. data/lib/Ice/CommunicatorF.rb +0 -24
  1081. data/lib/Ice/Connection.rb +0 -413
  1082. data/lib/Ice/ConnectionF.rb +0 -32
  1083. data/lib/Ice/Current.rb +0 -141
  1084. data/lib/Ice/Endpoint.rb +0 -187
  1085. data/lib/Ice/EndpointF.rb +0 -48
  1086. data/lib/Ice/EndpointTypes.rb +0 -69
  1087. data/lib/Ice/FacetMap.rb +0 -24
  1088. data/lib/Ice/Identity.rb +0 -63
  1089. data/lib/Ice/ImplicitContext.rb +0 -26
  1090. data/lib/Ice/ImplicitContextF.rb +0 -24
  1091. data/lib/Ice/Instrumentation.rb +0 -169
  1092. data/lib/Ice/InstrumentationF.rb +0 -31
  1093. data/lib/Ice/LocalException.rb +0 -1031
  1094. data/lib/Ice/Locator.rb +0 -196
  1095. data/lib/Ice/LocatorF.rb +0 -30
  1096. data/lib/Ice/Logger.rb +0 -24
  1097. data/lib/Ice/LoggerF.rb +0 -24
  1098. data/lib/Ice/Metrics.rb +0 -337
  1099. data/lib/Ice/ObjectAdapter.rb +0 -29
  1100. data/lib/Ice/ObjectAdapterF.rb +0 -24
  1101. data/lib/Ice/ObjectFactory.rb +0 -24
  1102. data/lib/Ice/Plugin.rb +0 -30
  1103. data/lib/Ice/PluginF.rb +0 -28
  1104. data/lib/Ice/Process.rb +0 -53
  1105. data/lib/Ice/ProcessF.rb +0 -25
  1106. data/lib/Ice/Properties.rb +0 -25
  1107. data/lib/Ice/PropertiesAdmin.rb +0 -63
  1108. data/lib/Ice/PropertiesF.rb +0 -29
  1109. data/lib/Ice/RemoteLogger.rb +0 -207
  1110. data/lib/Ice/Router.rb +0 -87
  1111. data/lib/Ice/RouterF.rb +0 -25
  1112. data/lib/Ice/ServantLocator.rb +0 -26
  1113. data/lib/Ice/ServantLocatorF.rb +0 -24
  1114. data/lib/Ice/SliceChecksumDict.rb +0 -24
  1115. data/lib/Ice/ValueFactory.rb +0 -28
  1116. data/lib/Ice/Version.rb +0 -90
  1117. data/lib/Ice.rb +0 -673
  1118. data/lib/IceBox/IceBox.rb +0 -164
  1119. data/lib/IceBox.rb +0 -5
  1120. data/lib/IceGrid/Admin.rb +0 -1196
  1121. data/lib/IceGrid/Descriptor.rb +0 -1034
  1122. data/lib/IceGrid/Exception.rb +0 -376
  1123. data/lib/IceGrid/FileParser.rb +0 -65
  1124. data/lib/IceGrid/PluginFacade.rb +0 -35
  1125. data/lib/IceGrid/Registry.rb +0 -209
  1126. data/lib/IceGrid/Session.rb +0 -71
  1127. data/lib/IceGrid/UserAccountMapper.rb +0 -61
  1128. data/lib/IceGrid.rb +0 -9
  1129. data/lib/IcePatch2/FileInfo.rb +0 -115
  1130. data/lib/IcePatch2/FileServer.rb +0 -123
  1131. data/lib/IcePatch2.rb +0 -5
  1132. data/lib/IceStorm/IceStorm.rb +0 -332
  1133. data/lib/IceStorm/Metrics.rb +0 -73
  1134. data/lib/IceStorm.rb +0 -6
  1135. data/slice/Glacier2/Metrics.ice +0 -88
  1136. data/slice/Glacier2/PermissionsVerifier.ice +0 -111
  1137. data/slice/Glacier2/PermissionsVerifierF.ice +0 -30
  1138. data/slice/Glacier2/Router.ice +0 -186
  1139. data/slice/Glacier2/RouterF.ice +0 -29
  1140. data/slice/Glacier2/SSLInfo.ice +0 -59
  1141. data/slice/Glacier2/Session.ice +0 -274
  1142. data/slice/Ice/BuiltinSequences.ice +0 -59
  1143. data/slice/Ice/Communicator.ice +0 -676
  1144. data/slice/Ice/CommunicatorF.ice +0 -31
  1145. data/slice/Ice/Connection.ice +0 -516
  1146. data/slice/Ice/ConnectionF.ice +0 -33
  1147. data/slice/Ice/Current.ice +0 -170
  1148. data/slice/Ice/Endpoint.ice +0 -291
  1149. data/slice/Ice/EndpointF.ice +0 -43
  1150. data/slice/Ice/EndpointTypes.ice +0 -48
  1151. data/slice/Ice/FacetMap.ice +0 -36
  1152. data/slice/Ice/Identity.ice +0 -75
  1153. data/slice/Ice/ImplicitContext.ice +0 -119
  1154. data/slice/Ice/ImplicitContextF.ice +0 -30
  1155. data/slice/Ice/Instrumentation.ice +0 -509
  1156. data/slice/Ice/InstrumentationF.ice +0 -38
  1157. data/slice/Ice/LocalException.ice +0 -1040
  1158. data/slice/Ice/Locator.ice +0 -239
  1159. data/slice/Ice/LocatorF.ice +0 -32
  1160. data/slice/Ice/Logger.ice +0 -99
  1161. data/slice/Ice/LoggerF.ice +0 -31
  1162. data/slice/Ice/Metrics.ice +0 -436
  1163. data/slice/Ice/ObjectAdapter.ice +0 -710
  1164. data/slice/Ice/ObjectAdapterF.ice +0 -31
  1165. data/slice/Ice/ObjectFactory.ice +0 -71
  1166. data/slice/Ice/Plugin.ice +0 -131
  1167. data/slice/Ice/PluginF.ice +0 -36
  1168. data/slice/Ice/Process.ice +0 -64
  1169. data/slice/Ice/ProcessF.ice +0 -31
  1170. data/slice/Ice/Properties.ice +0 -244
  1171. data/slice/Ice/PropertiesAdmin.ice +0 -87
  1172. data/slice/Ice/PropertiesF.ice +0 -32
  1173. data/slice/Ice/RemoteLogger.ice +0 -226
  1174. data/slice/Ice/Router.ice +0 -103
  1175. data/slice/Ice/RouterF.ice +0 -31
  1176. data/slice/Ice/ServantLocator.ice +0 -136
  1177. data/slice/Ice/ServantLocatorF.ice +0 -31
  1178. data/slice/Ice/SliceChecksumDict.ice +0 -36
  1179. data/slice/Ice/ValueFactory.ice +0 -133
  1180. data/slice/Ice/Version.ice +0 -51
  1181. data/slice/IceBT/ConnectionInfo.ice +0 -59
  1182. data/slice/IceBT/EndpointInfo.ice +0 -57
  1183. data/slice/IceBT/Types.ice +0 -45
  1184. data/slice/IceBox/IceBox.ice +0 -216
  1185. data/slice/IceDiscovery/IceDiscovery.ice +0 -98
  1186. data/slice/IceGrid/Admin.ice +0 -1957
  1187. data/slice/IceGrid/Descriptor.ice +0 -1094
  1188. data/slice/IceGrid/Exception.ice +0 -396
  1189. data/slice/IceGrid/FileParser.ice +0 -72
  1190. data/slice/IceGrid/PluginFacade.ice +0 -329
  1191. data/slice/IceGrid/Registry.ice +0 -269
  1192. data/slice/IceGrid/Session.ice +0 -128
  1193. data/slice/IceGrid/UserAccountMapper.ice +0 -69
  1194. data/slice/IceIAP/ConnectionInfo.ice +0 -74
  1195. data/slice/IceIAP/EndpointInfo.ice +0 -68
  1196. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +0 -83
  1197. data/slice/IcePatch2/FileInfo.ice +0 -85
  1198. data/slice/IcePatch2/FileServer.ice +0 -191
  1199. data/slice/IceSSL/ConnectionInfo.ice +0 -54
  1200. data/slice/IceSSL/ConnectionInfoF.ice +0 -31
  1201. data/slice/IceSSL/EndpointInfo.ice +0 -45
  1202. data/slice/IceStorm/IceStorm.ice +0 -414
  1203. data/slice/IceStorm/Metrics.ice +0 -83
  1204. /data/{ext → dist}/ice/mcpp/config.h +0 -0
  1205. /data/{ext → dist}/ice/mcpp/configed.H +0 -0
  1206. /data/{ext → dist}/ice/mcpp/directive.c +0 -0
  1207. /data/{ext → dist}/ice/mcpp/eval.c +0 -0
  1208. /data/{ext → dist}/ice/mcpp/expand.c +0 -0
  1209. /data/{ext → dist}/ice/mcpp/mbchar.c +0 -0
  1210. /data/{ext → dist}/ice/mcpp/mcpp_lib.h +0 -0
  1211. /data/{ext/ice/mcpp/main.c → dist/ice/mcpp/mcpp_main.c} +0 -0
  1212. /data/{ext → dist}/ice/mcpp/mcpp_out.h +0 -0
  1213. /data/{ext → dist}/ice/mcpp/support.c +0 -0
  1214. /data/{ext → dist}/ice/mcpp/system.H +0 -0
  1215. /data/{ext → dist}/ice/mcpp/system.c +0 -0
@@ -0,0 +1,2206 @@
1
+ // Copyright (c) ZeroC, Inc.
2
+
3
+ #include "Ice/InputStream.h"
4
+ #include "DefaultsAndOverrides.h"
5
+ #include "Endian.h"
6
+ #include "Ice/DefaultSliceLoader.h" // temporary
7
+ #include "Ice/LocalExceptions.h"
8
+ #include "Ice/SlicedData.h"
9
+ #include "Ice/StringConverter.h"
10
+ #include "Ice/UserExceptionFactory.h"
11
+ #include "Instance.h"
12
+ #include "ReferenceFactory.h"
13
+ #include "TraceLevels.h"
14
+ #include "TraceUtil.h"
15
+
16
+ #include "DisableWarnings.h"
17
+
18
+ using namespace std;
19
+ using namespace Ice;
20
+ using namespace IceInternal;
21
+
22
+ namespace
23
+ {
24
+ const char* endOfBufferMessage = "attempting to unmarshal past the end of the buffer";
25
+ }
26
+
27
+ void
28
+ IceInternal::Ex::throwUOE(const char* file, int line, const string& expectedType, const ValuePtr& v)
29
+ {
30
+ UnknownSlicedValuePtr usv = dynamic_pointer_cast<UnknownSlicedValue>(v);
31
+ if (usv)
32
+ {
33
+ throw MarshalException{
34
+ file,
35
+ line,
36
+ "the Slice loader did not find a class for type ID '" + string{usv->ice_id()} + "'"};
37
+ }
38
+
39
+ string type = v->ice_id();
40
+
41
+ throw MarshalException{
42
+ file,
43
+ line,
44
+ "failed to unmarshal class with type ID '" + expectedType +
45
+ "': the Slice loader returned a class with type ID '" + type + "'"};
46
+ }
47
+
48
+ void
49
+ IceInternal::Ex::throwMemoryLimitException(const char* file, int line, size_t requested, int32_t maximum)
50
+ {
51
+ throw MarshalException{
52
+ file,
53
+ line,
54
+ "cannot unmarshal Ice message: the message size of " + to_string(requested) +
55
+ " bytes exceeds the maximum allowed of " + to_string(maximum) + " bytes (see Ice.MessageSizeMax)."};
56
+ }
57
+
58
+ void
59
+ IceInternal::Ex::throwMarshalException(const char* file, int line, string reason)
60
+ {
61
+ throw Ice::MarshalException{file, line, std::move(reason)};
62
+ }
63
+
64
+ Ice::InputStream::InputStream(Instance* instance, EncodingVersion encoding, SliceLoaderPtr sliceLoader)
65
+ : InputStream{instance, encoding, Buffer{}, std::move(sliceLoader)}
66
+ {
67
+ }
68
+
69
+ Ice::InputStream::InputStream(const CommunicatorPtr& communicator, const vector<byte>& v, SliceLoaderPtr sliceLoader)
70
+ : InputStream{
71
+ getInstance(communicator).get(),
72
+ getInstance(communicator)->defaultsAndOverrides()->defaultEncoding,
73
+ Buffer{v},
74
+ std::move(sliceLoader)}
75
+ {
76
+ }
77
+
78
+ Ice::InputStream::InputStream(
79
+ const CommunicatorPtr& communicator,
80
+ pair<const byte*, const byte*> p,
81
+ SliceLoaderPtr sliceLoader)
82
+ : InputStream{
83
+ getInstance(communicator).get(),
84
+ getInstance(communicator)->defaultsAndOverrides()->defaultEncoding,
85
+ Buffer{p.first, p.second},
86
+ std::move(sliceLoader)}
87
+ {
88
+ }
89
+
90
+ Ice::InputStream::InputStream(
91
+ const CommunicatorPtr& communicator,
92
+ EncodingVersion encoding,
93
+ const vector<byte>& v,
94
+ SliceLoaderPtr sliceLoader)
95
+ : InputStream{getInstance(communicator).get(), encoding, Buffer{v}, std::move(sliceLoader)}
96
+ {
97
+ }
98
+
99
+ Ice::InputStream::InputStream(
100
+ const CommunicatorPtr& communicator,
101
+ EncodingVersion encoding,
102
+ pair<const byte*, const byte*> p,
103
+ SliceLoaderPtr sliceLoader)
104
+ : InputStream{getInstance(communicator).get(), encoding, Buffer{p.first, p.second}, std::move(sliceLoader)}
105
+ {
106
+ }
107
+
108
+ Ice::InputStream::InputStream(
109
+ Instance* instance,
110
+ EncodingVersion encoding,
111
+ Buffer& buf,
112
+ bool adopt,
113
+ SliceLoaderPtr sliceLoader)
114
+ : InputStream{instance, encoding, Buffer{buf, adopt}, std::move(sliceLoader)}
115
+ {
116
+ }
117
+
118
+ Ice::InputStream::InputStream(InputStream&& other) noexcept
119
+ // only moves (and resets) the base class
120
+ : InputStream{other._instance, other._encoding, std::move(other), other._sliceLoader}
121
+ {
122
+ _closure = other._closure;
123
+ _startSeq = other._startSeq;
124
+ _minSeqSize = other._minSeqSize;
125
+
126
+ // Reset other to its default state
127
+ other.resetEncapsulation();
128
+ other._closure = nullptr;
129
+ other._startSeq = -1;
130
+ other._minSeqSize = 0;
131
+ }
132
+
133
+ InputStream&
134
+ Ice::InputStream::operator=(InputStream&& other) noexcept
135
+ {
136
+ assert(_instance == other._instance);
137
+
138
+ if (this != &other)
139
+ {
140
+ Buffer::operator=(std::move(other)); // only moves (and resets) the base class
141
+
142
+ _encoding = other._encoding;
143
+ _closure = other._closure;
144
+ _startSeq = other._startSeq;
145
+ _minSeqSize = other._minSeqSize;
146
+ _startSeq = -1;
147
+ _minSeqSize = 0;
148
+ resetEncapsulation();
149
+
150
+ // Reset other to its default state.
151
+ other.resetEncapsulation();
152
+ other._closure = nullptr;
153
+ other._startSeq = -1;
154
+ other._minSeqSize = 0;
155
+ }
156
+ return *this;
157
+ }
158
+
159
+ void
160
+ Ice::InputStream::clear()
161
+ {
162
+ while (_currentEncaps && _currentEncaps != &_preAllocatedEncaps)
163
+ {
164
+ Encaps* oldEncaps = _currentEncaps;
165
+ _currentEncaps = _currentEncaps->previous;
166
+ delete oldEncaps;
167
+ }
168
+
169
+ _startSeq = -1;
170
+ }
171
+
172
+ void*
173
+ Ice::InputStream::getClosure() const
174
+ {
175
+ return _closure;
176
+ }
177
+
178
+ void*
179
+ Ice::InputStream::setClosure(void* p)
180
+ {
181
+ void* prev = _closure;
182
+ _closure = p;
183
+ return prev;
184
+ }
185
+
186
+ void
187
+ Ice::InputStream::swap(InputStream& other) noexcept
188
+ {
189
+ assert(_instance == other._instance);
190
+
191
+ swapBuffer(other);
192
+
193
+ std::swap(_encoding, other._encoding);
194
+ std::swap(_closure, other._closure);
195
+ std::swap(_startSeq, other._startSeq);
196
+ std::swap(_minSeqSize, other._minSeqSize);
197
+
198
+ //
199
+ // Swap is never called for streams that have encapsulations being read. However,
200
+ // encapsulations might still be set in case unmarshaling failed. We just
201
+ // reset the encapsulations if there are still some set.
202
+ //
203
+ resetEncapsulation();
204
+ other.resetEncapsulation();
205
+ }
206
+
207
+ void
208
+ Ice::InputStream::resetEncapsulation()
209
+ {
210
+ while (_currentEncaps && _currentEncaps != &_preAllocatedEncaps)
211
+ {
212
+ Encaps* oldEncaps = _currentEncaps;
213
+ _currentEncaps = _currentEncaps->previous;
214
+ delete oldEncaps;
215
+ }
216
+
217
+ _preAllocatedEncaps.reset();
218
+ }
219
+
220
+ const EncodingVersion&
221
+ Ice::InputStream::startEncapsulation()
222
+ {
223
+ Encaps* oldEncaps = _currentEncaps;
224
+ if (!oldEncaps) // First allocated encaps?
225
+ {
226
+ _currentEncaps = &_preAllocatedEncaps;
227
+ }
228
+ else
229
+ {
230
+ _currentEncaps = new Encaps();
231
+ _currentEncaps->previous = oldEncaps;
232
+ }
233
+ _currentEncaps->start = static_cast<size_t>(i - b.begin());
234
+
235
+ //
236
+ // I don't use readSize() and writeSize() for encapsulations,
237
+ // because when creating an encapsulation, I must know in advance
238
+ // how many bytes the size information will require in the data
239
+ // stream. If I use an Int, it is always 4 bytes. For
240
+ // readSize()/writeSize(), it could be 1 or 5 bytes.
241
+ //
242
+ std::int32_t sz;
243
+ read(sz);
244
+ if (sz < 6)
245
+ {
246
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
247
+ }
248
+ if (i - sizeof(std::int32_t) + sz > b.end())
249
+ {
250
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
251
+ }
252
+ _currentEncaps->sz = sz;
253
+
254
+ read(_currentEncaps->encoding);
255
+ IceInternal::checkSupportedEncoding(_currentEncaps->encoding); // Make sure the encoding is supported
256
+
257
+ return _currentEncaps->encoding;
258
+ }
259
+
260
+ void
261
+ Ice::InputStream::endEncapsulation()
262
+ {
263
+ assert(_currentEncaps);
264
+
265
+ if (_currentEncaps->encoding != Encoding_1_0)
266
+ {
267
+ skipOptionals();
268
+ if (i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
269
+ {
270
+ throw MarshalException{__FILE__, __LINE__, "failed to unmarshal encapsulation"};
271
+ }
272
+ }
273
+ else if (i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
274
+ {
275
+ if (i + 1 != b.begin() + _currentEncaps->start + _currentEncaps->sz)
276
+ {
277
+ throw MarshalException{__FILE__, __LINE__, "failed to unmarshal encapsulation"};
278
+ }
279
+
280
+ //
281
+ // Ice version < 3.3 had a bug where user exceptions with
282
+ // class members could be encoded with a trailing byte
283
+ // when dispatched with AMD. So we tolerate an extra byte
284
+ // in the encapsulation.
285
+ //
286
+ ++i;
287
+ }
288
+
289
+ Encaps* oldEncaps = _currentEncaps;
290
+ _currentEncaps = _currentEncaps->previous;
291
+ if (oldEncaps == &_preAllocatedEncaps)
292
+ {
293
+ oldEncaps->reset();
294
+ }
295
+ else
296
+ {
297
+ delete oldEncaps;
298
+ }
299
+ }
300
+
301
+ EncodingVersion
302
+ Ice::InputStream::skipEmptyEncapsulation()
303
+ {
304
+ std::int32_t sz;
305
+ read(sz);
306
+ if (sz < 6)
307
+ {
308
+ throw MarshalException{__FILE__, __LINE__, to_string(sz) + " is not a valid encapsulation size"};
309
+ }
310
+ if (i - sizeof(std::int32_t) + sz > b.end())
311
+ {
312
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
313
+ }
314
+ Ice::EncodingVersion encoding;
315
+ read(encoding);
316
+ IceInternal::checkSupportedEncoding(encoding); // Make sure the encoding is supported
317
+
318
+ if (encoding == Ice::Encoding_1_0)
319
+ {
320
+ if (sz != static_cast<std::int32_t>(sizeof(std::int32_t)) + 2)
321
+ {
322
+ throw MarshalException{
323
+ __FILE__,
324
+ __LINE__,
325
+ to_string(sz) + " is not a valid encapsulation size for a 1.0 empty encapsulation"};
326
+ }
327
+ }
328
+ else
329
+ {
330
+ // Skip the optional content of the encapsulation if we are expecting an
331
+ // empty encapsulation.
332
+ i += static_cast<size_t>(sz) - sizeof(std::int32_t) - 2;
333
+ }
334
+ return encoding;
335
+ }
336
+
337
+ EncodingVersion
338
+ Ice::InputStream::readEncapsulation(const std::byte*& v, std::int32_t& sz)
339
+ {
340
+ EncodingVersion encoding;
341
+ v = i;
342
+ read(sz);
343
+ if (sz < 6)
344
+ {
345
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
346
+ }
347
+ if (i - sizeof(std::int32_t) + sz > b.end())
348
+ {
349
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
350
+ }
351
+
352
+ read(encoding);
353
+ i += static_cast<size_t>(sz) - sizeof(std::int32_t) - 2;
354
+ return encoding;
355
+ }
356
+
357
+ int32_t
358
+ Ice::InputStream::getEncapsulationSize()
359
+ {
360
+ assert(_currentEncaps);
361
+ return _currentEncaps->sz - static_cast<int32_t>(sizeof(int32_t)) - 2;
362
+ }
363
+
364
+ EncodingVersion
365
+ Ice::InputStream::skipEncapsulation()
366
+ {
367
+ int32_t sz;
368
+ read(sz);
369
+ if (sz < 6)
370
+ {
371
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
372
+ }
373
+ if (i - sizeof(int32_t) + sz > b.end())
374
+ {
375
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
376
+ }
377
+ EncodingVersion encoding;
378
+ read(encoding.major);
379
+ read(encoding.minor);
380
+ i += static_cast<size_t>(sz) - sizeof(int32_t) - 2;
381
+ return encoding;
382
+ }
383
+
384
+ void
385
+ Ice::InputStream::readPendingValues()
386
+ {
387
+ if (_currentEncaps && _currentEncaps->decoder)
388
+ {
389
+ _currentEncaps->decoder->readPendingValues();
390
+ }
391
+ else if (getEncoding() == Ice::Encoding_1_0)
392
+ {
393
+ //
394
+ // If using the 1.0 encoding and no instances were read, we
395
+ // still read an empty sequence of pending instances if
396
+ // requested (i.e.: if this is called).
397
+ //
398
+ // This is required by the 1.0 encoding, even if no instances
399
+ // are written we do marshal an empty sequence if marshaled
400
+ // data types use classes.
401
+ //
402
+ skipSize();
403
+ }
404
+ }
405
+
406
+ int32_t
407
+ Ice::InputStream::readAndCheckSeqSize(int minSize)
408
+ {
409
+ int32_t sz = readSize();
410
+
411
+ if (sz == 0)
412
+ {
413
+ return sz;
414
+ }
415
+
416
+ //
417
+ // The _startSeq variable points to the start of the sequence for which
418
+ // we expect to read at least _minSeqSize bytes from the stream.
419
+ //
420
+ // If not initialized or if we already read more data than _minSeqSize,
421
+ // we reset _startSeq and _minSeqSize for this sequence (possibly a
422
+ // top-level sequence or enclosed sequence it doesn't really matter).
423
+ //
424
+ // Otherwise, we are reading an enclosed sequence and we have to bump
425
+ // _minSeqSize by the minimum size that this sequence will require on
426
+ // the stream.
427
+ //
428
+ // The goal of this check is to ensure that when we start un-marshaling
429
+ // a new sequence, we check the minimal size of this new sequence against
430
+ // the estimated remaining buffer size. This estimation is based on
431
+ // the minimum size of the enclosing sequences, it's _minSeqSize.
432
+ //
433
+ if (_startSeq == -1 || i > (b.begin() + _startSeq + _minSeqSize))
434
+ {
435
+ _startSeq = static_cast<int>(i - b.begin());
436
+ _minSeqSize = sz * minSize;
437
+ }
438
+ else
439
+ {
440
+ _minSeqSize += sz * minSize;
441
+ }
442
+
443
+ //
444
+ // If there isn't enough data to read on the stream for the sequence (and
445
+ // possibly enclosed sequences), something is wrong with the marshaled
446
+ // data: it's claiming having more data that what is possible to read.
447
+ //
448
+ if (_startSeq + _minSeqSize > static_cast<int>(b.size()))
449
+ {
450
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
451
+ }
452
+
453
+ return sz;
454
+ }
455
+
456
+ void
457
+ Ice::InputStream::readBlob(vector<byte>& v, int32_t sz)
458
+ {
459
+ if (sz > 0)
460
+ {
461
+ if (b.end() - i < sz)
462
+ {
463
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
464
+ }
465
+ vector<byte>(i, i + sz).swap(v);
466
+ i += sz;
467
+ }
468
+ else
469
+ {
470
+ v.clear();
471
+ }
472
+ }
473
+
474
+ void
475
+ Ice::InputStream::read(std::vector<byte>& v)
476
+ {
477
+ std::pair<const byte*, const byte*> p;
478
+ read(p);
479
+ if (p.first != p.second)
480
+ {
481
+ v.resize(static_cast<size_t>(p.second - p.first));
482
+ copy(p.first, p.second, v.begin());
483
+ }
484
+ else
485
+ {
486
+ v.clear();
487
+ }
488
+ }
489
+
490
+ void
491
+ Ice::InputStream::read(pair<const byte*, const byte*>& v)
492
+ {
493
+ int32_t sz = readAndCheckSeqSize(1);
494
+ if (sz > 0)
495
+ {
496
+ v.first = i;
497
+ v.second = i + sz;
498
+ i += sz;
499
+ }
500
+ else
501
+ {
502
+ v.first = v.second = i;
503
+ }
504
+ }
505
+
506
+ void
507
+ Ice::InputStream::read(vector<bool>& v)
508
+ {
509
+ int32_t sz = readAndCheckSeqSize(1);
510
+ if (sz > 0)
511
+ {
512
+ v.resize(static_cast<size_t>(sz));
513
+ copy(reinterpret_cast<uint8_t*>(i), reinterpret_cast<uint8_t*>(i) + sz, v.begin());
514
+ i += sz;
515
+ }
516
+ else
517
+ {
518
+ v.clear();
519
+ }
520
+ }
521
+
522
+ namespace
523
+ {
524
+ template<size_t boolSize> struct ReadBoolHelper
525
+ {
526
+ static bool* read(pair<const bool*, const bool*>& v, int32_t sz, InputStream::Container::iterator& i)
527
+ {
528
+ bool* array = new bool[static_cast<size_t>(sz)];
529
+ for (int idx = 0; idx < sz; ++idx)
530
+ {
531
+ array[idx] = static_cast<bool>(*(i + idx));
532
+ }
533
+ v.first = array;
534
+ v.second = array + sz;
535
+ return array;
536
+ }
537
+ };
538
+
539
+ template<> struct ReadBoolHelper<1>
540
+ {
541
+ static bool* read(pair<const bool*, const bool*>& v, int32_t sz, InputStream::Container::iterator& i)
542
+ {
543
+ v.first = reinterpret_cast<bool*>(i);
544
+ v.second = reinterpret_cast<bool*>(i) + sz;
545
+ return nullptr;
546
+ }
547
+ };
548
+ }
549
+
550
+ void
551
+ Ice::InputStream::read(pair<const bool*, const bool*>& v)
552
+ {
553
+ int32_t sz = readAndCheckSeqSize(1);
554
+ if (sz > 0)
555
+ {
556
+ auto boolArray = ReadBoolHelper<sizeof(bool)>::read(v, sz, i);
557
+ if (boolArray)
558
+ {
559
+ _deleters.emplace_back([boolArray] { delete[] boolArray; });
560
+ }
561
+ i += sz;
562
+ }
563
+ else
564
+ {
565
+ v.first = v.second = reinterpret_cast<bool*>(i);
566
+ }
567
+ }
568
+
569
+ void
570
+ Ice::InputStream::read(int16_t& v)
571
+ {
572
+ if (b.end() - i < static_cast<int>(sizeof(int16_t)))
573
+ {
574
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
575
+ }
576
+ const byte* src = &(*i);
577
+ i += sizeof(int16_t);
578
+ if constexpr (endian::native == endian::big)
579
+ {
580
+ byte* dest = reinterpret_cast<byte*>(&v) + sizeof(int16_t) - 1;
581
+ *dest-- = *src++;
582
+ *dest = *src;
583
+ }
584
+ else
585
+ {
586
+ byte* dest = reinterpret_cast<byte*>(&v);
587
+ *dest++ = *src++;
588
+ *dest = *src;
589
+ }
590
+ }
591
+
592
+ void
593
+ Ice::InputStream::read(vector<int16_t>& v)
594
+ {
595
+ int32_t sz = readAndCheckSeqSize(static_cast<int>(sizeof(int16_t)));
596
+ if (sz > 0)
597
+ {
598
+ Container::iterator begin = i;
599
+ i += sz * static_cast<int>(sizeof(int16_t));
600
+ v.resize(static_cast<size_t>(sz));
601
+ if constexpr (endian::native == endian::big)
602
+ {
603
+ const byte* src = &(*begin);
604
+ byte* dest = reinterpret_cast<byte*>(&v[0]) + sizeof(int16_t) - 1;
605
+ for (int j = 0; j < sz; ++j)
606
+ {
607
+ *dest-- = *src++;
608
+ *dest-- = *src++;
609
+ dest += 2 * sizeof(int16_t);
610
+ }
611
+ }
612
+ else
613
+ {
614
+ copy(begin, i, reinterpret_cast<byte*>(&v[0]));
615
+ }
616
+ }
617
+ else
618
+ {
619
+ v.clear();
620
+ }
621
+ }
622
+
623
+ void
624
+ Ice::InputStream::read(int32_t& v)
625
+ {
626
+ if (b.end() - i < static_cast<int>(sizeof(int32_t)))
627
+ {
628
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
629
+ }
630
+ const byte* src = &(*i);
631
+ i += sizeof(int32_t);
632
+ if constexpr (endian::native == endian::big)
633
+ {
634
+ byte* dest = reinterpret_cast<byte*>(&v) + sizeof(int32_t) - 1;
635
+ *dest-- = *src++;
636
+ *dest-- = *src++;
637
+ *dest-- = *src++;
638
+ *dest = *src;
639
+ }
640
+ else
641
+ {
642
+ byte* dest = reinterpret_cast<byte*>(&v);
643
+ *dest++ = *src++;
644
+ *dest++ = *src++;
645
+ *dest++ = *src++;
646
+ *dest = *src;
647
+ }
648
+ }
649
+
650
+ void
651
+ Ice::InputStream::read(vector<int32_t>& v)
652
+ {
653
+ int32_t sz = readAndCheckSeqSize(static_cast<int>(sizeof(int32_t)));
654
+ if (sz > 0)
655
+ {
656
+ Container::iterator begin = i;
657
+ i += sz * static_cast<int>(sizeof(int32_t));
658
+ v.resize(static_cast<size_t>(sz));
659
+ if constexpr (endian::native == endian::big)
660
+ {
661
+ const byte* src = &(*begin);
662
+ byte* dest = reinterpret_cast<byte*>(&v[0]) + sizeof(int32_t) - 1;
663
+ for (int j = 0; j < sz; ++j)
664
+ {
665
+ *dest-- = *src++;
666
+ *dest-- = *src++;
667
+ *dest-- = *src++;
668
+ *dest-- = *src++;
669
+ dest += 2 * sizeof(int32_t);
670
+ }
671
+ }
672
+ else
673
+ {
674
+ copy(begin, i, reinterpret_cast<byte*>(&v[0]));
675
+ }
676
+ }
677
+ else
678
+ {
679
+ v.clear();
680
+ }
681
+ }
682
+
683
+ void
684
+ Ice::InputStream::read(int64_t& v)
685
+ {
686
+ if (b.end() - i < static_cast<int>(sizeof(int64_t)))
687
+ {
688
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
689
+ }
690
+ const byte* src = &(*i);
691
+ i += sizeof(int64_t);
692
+ if constexpr (endian::native == endian::big)
693
+ {
694
+ byte* dest = reinterpret_cast<byte*>(&v) + sizeof(int64_t) - 1;
695
+ *dest-- = *src++;
696
+ *dest-- = *src++;
697
+ *dest-- = *src++;
698
+ *dest-- = *src++;
699
+ *dest-- = *src++;
700
+ *dest-- = *src++;
701
+ *dest-- = *src++;
702
+ *dest = *src;
703
+ }
704
+ else
705
+ {
706
+ byte* dest = reinterpret_cast<byte*>(&v);
707
+ *dest++ = *src++;
708
+ *dest++ = *src++;
709
+ *dest++ = *src++;
710
+ *dest++ = *src++;
711
+ *dest++ = *src++;
712
+ *dest++ = *src++;
713
+ *dest++ = *src++;
714
+ *dest = *src;
715
+ }
716
+ }
717
+
718
+ void
719
+ Ice::InputStream::read(vector<int64_t>& v)
720
+ {
721
+ int32_t sz = readAndCheckSeqSize(static_cast<int>(sizeof(int64_t)));
722
+ if (sz > 0)
723
+ {
724
+ Container::iterator begin = i;
725
+ i += sz * static_cast<int>(sizeof(int64_t));
726
+ v.resize(static_cast<size_t>(sz));
727
+ if constexpr (endian::native == endian::big)
728
+ {
729
+ const byte* src = &(*begin);
730
+ byte* dest = reinterpret_cast<byte*>(&v[0]) + sizeof(int64_t) - 1;
731
+ for (int j = 0; j < sz; ++j)
732
+ {
733
+ *dest-- = *src++;
734
+ *dest-- = *src++;
735
+ *dest-- = *src++;
736
+ *dest-- = *src++;
737
+ *dest-- = *src++;
738
+ *dest-- = *src++;
739
+ *dest-- = *src++;
740
+ *dest-- = *src++;
741
+ dest += 2 * sizeof(int64_t);
742
+ }
743
+ }
744
+ else
745
+ {
746
+ copy(begin, i, reinterpret_cast<byte*>(&v[0]));
747
+ }
748
+ }
749
+ else
750
+ {
751
+ v.clear();
752
+ }
753
+ }
754
+
755
+ void
756
+ Ice::InputStream::read(float& v)
757
+ {
758
+ if (b.end() - i < static_cast<int>(sizeof(float)))
759
+ {
760
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
761
+ }
762
+ const byte* src = &(*i);
763
+ i += sizeof(float);
764
+ if constexpr (endian::native == endian::big)
765
+ {
766
+ byte* dest = reinterpret_cast<byte*>(&v) + sizeof(float) - 1;
767
+ *dest-- = *src++;
768
+ *dest-- = *src++;
769
+ *dest-- = *src++;
770
+ *dest = *src;
771
+ }
772
+ else
773
+ {
774
+ byte* dest = reinterpret_cast<byte*>(&v);
775
+ *dest++ = *src++;
776
+ *dest++ = *src++;
777
+ *dest++ = *src++;
778
+ *dest = *src;
779
+ }
780
+ }
781
+
782
+ void
783
+ Ice::InputStream::read(vector<float>& v)
784
+ {
785
+ int32_t sz = readAndCheckSeqSize(static_cast<int>(sizeof(float)));
786
+ if (sz > 0)
787
+ {
788
+ Container::iterator begin = i;
789
+ i += sz * static_cast<int>(sizeof(float));
790
+ v.resize(static_cast<size_t>(sz));
791
+ if constexpr (endian::native == endian::big)
792
+ {
793
+ const byte* src = &(*begin);
794
+ byte* dest = reinterpret_cast<byte*>(&v[0]) + sizeof(float) - 1;
795
+ for (int j = 0; j < sz; ++j)
796
+ {
797
+ *dest-- = *src++;
798
+ *dest-- = *src++;
799
+ *dest-- = *src++;
800
+ *dest-- = *src++;
801
+ dest += 2 * sizeof(float);
802
+ }
803
+ }
804
+ else
805
+ {
806
+ copy(begin, i, reinterpret_cast<byte*>(&v[0]));
807
+ }
808
+ }
809
+ else
810
+ {
811
+ v.clear();
812
+ }
813
+ }
814
+
815
+ void
816
+ Ice::InputStream::read(double& v)
817
+ {
818
+ if (b.end() - i < static_cast<int>(sizeof(double)))
819
+ {
820
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
821
+ }
822
+ const byte* src = &(*i);
823
+ i += sizeof(double);
824
+ if constexpr (endian::native == endian::big)
825
+ {
826
+ byte* dest = reinterpret_cast<byte*>(&v) + sizeof(double) - 1;
827
+ *dest-- = *src++;
828
+ *dest-- = *src++;
829
+ *dest-- = *src++;
830
+ *dest-- = *src++;
831
+ *dest-- = *src++;
832
+ *dest-- = *src++;
833
+ *dest-- = *src++;
834
+ *dest = *src;
835
+ }
836
+ else
837
+ {
838
+ byte* dest = reinterpret_cast<byte*>(&v);
839
+ *dest++ = *src++;
840
+ *dest++ = *src++;
841
+ *dest++ = *src++;
842
+ *dest++ = *src++;
843
+ *dest++ = *src++;
844
+ *dest++ = *src++;
845
+ *dest++ = *src++;
846
+ *dest = *src;
847
+ }
848
+ }
849
+
850
+ void
851
+ Ice::InputStream::read(vector<double>& v)
852
+ {
853
+ int32_t sz = readAndCheckSeqSize(static_cast<int>(sizeof(double)));
854
+ if (sz > 0)
855
+ {
856
+ Container::iterator begin = i;
857
+ i += sz * static_cast<int>(sizeof(double));
858
+ v.resize(static_cast<size_t>(sz));
859
+ if constexpr (endian::native == endian::big)
860
+ {
861
+ const byte* src = &(*begin);
862
+ byte* dest = reinterpret_cast<byte*>(&v[0]) + sizeof(double) - 1;
863
+ for (int j = 0; j < sz; ++j)
864
+ {
865
+ *dest-- = *src++;
866
+ *dest-- = *src++;
867
+ *dest-- = *src++;
868
+ *dest-- = *src++;
869
+ *dest-- = *src++;
870
+ *dest-- = *src++;
871
+ *dest-- = *src++;
872
+ *dest-- = *src++;
873
+ dest += 2 * sizeof(double);
874
+ }
875
+ }
876
+ else
877
+ {
878
+ copy(begin, i, reinterpret_cast<byte*>(&v[0]));
879
+ }
880
+ }
881
+ else
882
+ {
883
+ v.clear();
884
+ }
885
+ }
886
+
887
+ void
888
+ Ice::InputStream::read(std::string& v, bool convert)
889
+ {
890
+ int32_t sz = readSize();
891
+ if (sz > 0)
892
+ {
893
+ if (b.end() - i < sz)
894
+ {
895
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
896
+ }
897
+
898
+ if (!convert || !readConverted(v, sz))
899
+ {
900
+ string(reinterpret_cast<const char*>(&*i), reinterpret_cast<const char*>(&*i) + sz).swap(v);
901
+ }
902
+ i += sz;
903
+ }
904
+ else
905
+ {
906
+ v.clear();
907
+ }
908
+ }
909
+
910
+ void
911
+ Ice::InputStream::read(const char*& vdata, size_t& vsize, bool convert)
912
+ {
913
+ int sz = readSize();
914
+ if (sz > 0)
915
+ {
916
+ if (b.end() - i < sz)
917
+ {
918
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
919
+ }
920
+
921
+ if (convert == false)
922
+ {
923
+ vdata = reinterpret_cast<const char*>(&*i);
924
+ vsize = static_cast<size_t>(sz);
925
+ i += sz;
926
+ }
927
+ else
928
+ {
929
+ string converted;
930
+ if (readConverted(converted, sz))
931
+ {
932
+ if (converted.size() <= static_cast<size_t>(sz))
933
+ {
934
+ //
935
+ // Write converted string directly into buffer
936
+ //
937
+ std::memcpy(i, converted.data(), converted.size());
938
+ vdata = reinterpret_cast<const char*>(&*i);
939
+ vsize = converted.size();
940
+ }
941
+ else
942
+ {
943
+ auto holder = new string(std::move(converted));
944
+ _deleters.emplace_back([holder] { delete holder; });
945
+ vdata = holder->data();
946
+ vsize = holder->size();
947
+ }
948
+ }
949
+ else
950
+ {
951
+ vdata = reinterpret_cast<const char*>(&*i);
952
+ vsize = static_cast<size_t>(sz);
953
+ }
954
+ i += sz;
955
+ }
956
+ }
957
+ else
958
+ {
959
+ vdata = nullptr;
960
+ vsize = 0;
961
+ }
962
+ }
963
+
964
+ bool
965
+ Ice::InputStream::readConverted(string& v, int sz)
966
+ {
967
+ try
968
+ {
969
+ bool converted = false;
970
+ const StringConverterPtr& stringConverter = _instance->getStringConverter();
971
+ if (stringConverter)
972
+ {
973
+ stringConverter->fromUTF8(i, i + sz, v);
974
+ converted = true;
975
+ }
976
+
977
+ return converted;
978
+ }
979
+ catch (const IllegalConversionException& ex)
980
+ {
981
+ throw MarshalException{__FILE__, __LINE__, string{"failed to unmarshal a string:\n"} + ex.what()};
982
+ }
983
+ }
984
+
985
+ void
986
+ Ice::InputStream::read(vector<string>& v, bool convert)
987
+ {
988
+ int32_t sz = readAndCheckSeqSize(1);
989
+ if (sz > 0)
990
+ {
991
+ v.resize(static_cast<size_t>(sz));
992
+ for (size_t j = 0; j < static_cast<size_t>(sz); ++j)
993
+ {
994
+ read(v[j], convert);
995
+ }
996
+ }
997
+ else
998
+ {
999
+ v.clear();
1000
+ }
1001
+ }
1002
+
1003
+ void
1004
+ Ice::InputStream::read(wstring& v)
1005
+ {
1006
+ int32_t sz = readSize();
1007
+ if (sz > 0)
1008
+ {
1009
+ if (b.end() - i < sz)
1010
+ {
1011
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
1012
+ }
1013
+
1014
+ try
1015
+ {
1016
+ const WstringConverterPtr& wstringConverter = _instance->getWstringConverter();
1017
+ wstringConverter->fromUTF8(i, i + sz, v);
1018
+ i += sz;
1019
+ }
1020
+ catch (const IllegalConversionException& ex)
1021
+ {
1022
+ throw MarshalException{__FILE__, __LINE__, string{"failed to unmarshal a string:\n"} + ex.what()};
1023
+ }
1024
+ }
1025
+ else
1026
+ {
1027
+ v.clear();
1028
+ }
1029
+ }
1030
+
1031
+ void
1032
+ Ice::InputStream::read(vector<wstring>& v)
1033
+ {
1034
+ auto sz = static_cast<size_t>(readAndCheckSeqSize(1));
1035
+ if (sz > 0)
1036
+ {
1037
+ v.resize(sz);
1038
+ for (size_t j = 0; j < sz; ++j)
1039
+ {
1040
+ read(v[j]);
1041
+ }
1042
+ }
1043
+ else
1044
+ {
1045
+ v.clear();
1046
+ }
1047
+ }
1048
+
1049
+ namespace
1050
+ {
1051
+ inline Ice::SliceLoaderPtr getSliceLoader(SliceLoaderPtr sliceLoader, Instance* instance)
1052
+ {
1053
+ if (!sliceLoader)
1054
+ {
1055
+ sliceLoader = instance->sliceLoader();
1056
+ }
1057
+ return sliceLoader;
1058
+ }
1059
+ }
1060
+
1061
+ Ice::InputStream::InputStream(Instance* instance, EncodingVersion encoding, Buffer&& buf, SliceLoaderPtr sliceLoader)
1062
+ : Buffer(std::move(buf)),
1063
+ _instance(instance),
1064
+ _encoding(encoding),
1065
+ _classGraphDepthMax(instance->classGraphDepthMax()),
1066
+ _sliceLoader{getSliceLoader(std::move(sliceLoader), instance)}
1067
+ {
1068
+ }
1069
+
1070
+ ReferencePtr
1071
+ Ice::InputStream::readReference()
1072
+ {
1073
+ Identity ident;
1074
+ read(ident);
1075
+ if (ident.name.empty())
1076
+ {
1077
+ return nullptr;
1078
+ }
1079
+ else
1080
+ {
1081
+ return _instance->referenceFactory()->create(std::move(ident), this);
1082
+ }
1083
+ }
1084
+
1085
+ int32_t
1086
+ Ice::InputStream::readEnum(int32_t maxValue)
1087
+ {
1088
+ if (getEncoding() == Encoding_1_0)
1089
+ {
1090
+ if (maxValue < 127)
1091
+ {
1092
+ uint8_t value;
1093
+ read(value);
1094
+ return value;
1095
+ }
1096
+ else if (maxValue < 32767)
1097
+ {
1098
+ int16_t value;
1099
+ read(value);
1100
+ return value;
1101
+ }
1102
+ else
1103
+ {
1104
+ int32_t value;
1105
+ read(value);
1106
+ return value;
1107
+ }
1108
+ }
1109
+ else
1110
+ {
1111
+ return readSize();
1112
+ }
1113
+ }
1114
+
1115
+ void
1116
+ Ice::InputStream::throwException(UserExceptionFactory factory)
1117
+ {
1118
+ initEncaps();
1119
+ _currentEncaps->decoder->throwException(std::move(factory));
1120
+ }
1121
+
1122
+ bool
1123
+ Ice::InputStream::readOptImpl(int32_t readTag, OptionalFormat expectedFormat)
1124
+ {
1125
+ if (getEncoding() == Encoding_1_0)
1126
+ {
1127
+ return false; // Optional members aren't supported with the 1.0 encoding.
1128
+ }
1129
+
1130
+ while (true)
1131
+ {
1132
+ if (i >= b.begin() + _currentEncaps->start + _currentEncaps->sz)
1133
+ {
1134
+ return false; // End of encapsulation also indicates end of optionals.
1135
+ }
1136
+
1137
+ uint8_t v;
1138
+ read(v);
1139
+ if (v == OPTIONAL_END_MARKER)
1140
+ {
1141
+ --i; // Rewind
1142
+ return false;
1143
+ }
1144
+
1145
+ auto format = static_cast<OptionalFormat>(v & 0x07); // First 3 bits.
1146
+ auto tag = static_cast<int32_t>(v >> 3);
1147
+ if (tag == 30)
1148
+ {
1149
+ tag = readSize();
1150
+ }
1151
+
1152
+ if (tag > readTag)
1153
+ {
1154
+ i -= tag < 30 ? 1 : (tag < 255 ? 2 : 6); // Rewind
1155
+ return false; // No optional data members with the requested tag.
1156
+ }
1157
+ else if (tag < readTag)
1158
+ {
1159
+ skipOptional(format); // Skip optional data members
1160
+ }
1161
+ else
1162
+ {
1163
+ if (format != expectedFormat)
1164
+ {
1165
+ ostringstream os;
1166
+ os << "invalid optional data member '" << tag << "': unexpected format";
1167
+ throw MarshalException(__FILE__, __LINE__, os.str());
1168
+ }
1169
+ return true;
1170
+ }
1171
+ }
1172
+ return true; // Keep the compiler happy.
1173
+ }
1174
+
1175
+ void
1176
+ Ice::InputStream::skipOptional(OptionalFormat type)
1177
+ {
1178
+ switch (type)
1179
+ {
1180
+ case OptionalFormat::F1:
1181
+ {
1182
+ skip(1);
1183
+ break;
1184
+ }
1185
+ case OptionalFormat::F2:
1186
+ {
1187
+ skip(2);
1188
+ break;
1189
+ }
1190
+ case OptionalFormat::F4:
1191
+ {
1192
+ skip(4);
1193
+ break;
1194
+ }
1195
+ case OptionalFormat::F8:
1196
+ {
1197
+ skip(8);
1198
+ break;
1199
+ }
1200
+ case OptionalFormat::Size:
1201
+ {
1202
+ skipSize();
1203
+ break;
1204
+ }
1205
+ case OptionalFormat::VSize:
1206
+ {
1207
+ skip(static_cast<size_t>(readSize()));
1208
+ break;
1209
+ }
1210
+ case OptionalFormat::FSize:
1211
+ {
1212
+ int32_t sz;
1213
+ read(sz);
1214
+ if (sz < 0)
1215
+ {
1216
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
1217
+ }
1218
+ skip(static_cast<size_t>(sz));
1219
+ break;
1220
+ }
1221
+ case OptionalFormat::Class:
1222
+ {
1223
+ throw MarshalException{__FILE__, __LINE__, "cannot skip optional class"};
1224
+ }
1225
+ }
1226
+ }
1227
+
1228
+ void
1229
+ Ice::InputStream::skipOptionals()
1230
+ {
1231
+ //
1232
+ // Skip remaining un-read optional members.
1233
+ //
1234
+ while (true)
1235
+ {
1236
+ if (i >= b.begin() + _currentEncaps->start + _currentEncaps->sz)
1237
+ {
1238
+ return; // End of encapsulation also indicates end of optionals.
1239
+ }
1240
+
1241
+ uint8_t v;
1242
+ read(v);
1243
+ if (v == OPTIONAL_END_MARKER)
1244
+ {
1245
+ return;
1246
+ }
1247
+
1248
+ auto format = static_cast<OptionalFormat>(v & 0x07); // Read first 3 bits.
1249
+ if (static_cast<int32_t>(v >> 3) == 30)
1250
+ {
1251
+ skipSize();
1252
+ }
1253
+ skipOptional(format);
1254
+ }
1255
+ }
1256
+
1257
+ void
1258
+ Ice::InputStream::throwUnmarshalOutOfBoundsException(const char* file, int line)
1259
+ {
1260
+ throw MarshalException{file, line, endOfBufferMessage};
1261
+ }
1262
+
1263
+ void
1264
+ Ice::InputStream::traceSkipSlice(string_view typeId, SliceType sliceType) const
1265
+ {
1266
+ assert(_instance->initializationData().logger); // not null once the communicator is initialized
1267
+ if (_instance->traceLevels()->slicing > 0)
1268
+ {
1269
+ traceSlicing(
1270
+ sliceType == ExceptionSlice ? "exception" : "object",
1271
+ typeId,
1272
+ "Slicing",
1273
+ _instance->initializationData().logger);
1274
+ }
1275
+ }
1276
+
1277
+ void
1278
+ Ice::InputStream::initEncaps()
1279
+ {
1280
+ if (!_currentEncaps) // Lazy initialization.
1281
+ {
1282
+ _currentEncaps = &_preAllocatedEncaps;
1283
+ _currentEncaps->encoding = _encoding;
1284
+ _currentEncaps->sz = static_cast<int32_t>(b.size());
1285
+ }
1286
+
1287
+ if (!_currentEncaps->decoder) // Lazy initialization.
1288
+ {
1289
+ if (_currentEncaps->encoding == Encoding_1_0)
1290
+ {
1291
+ _currentEncaps->decoder = new EncapsDecoder10(this, _currentEncaps, _classGraphDepthMax);
1292
+ }
1293
+ else
1294
+ {
1295
+ _currentEncaps->decoder = new EncapsDecoder11(this, _currentEncaps, _classGraphDepthMax);
1296
+ }
1297
+ }
1298
+ }
1299
+
1300
+ // Out of line to avoid weak vtable
1301
+ Ice::InputStream::EncapsDecoder::~EncapsDecoder() = default;
1302
+
1303
+ string
1304
+ Ice::InputStream::EncapsDecoder::readTypeId(bool isIndex)
1305
+ {
1306
+ if (isIndex)
1307
+ {
1308
+ int32_t index = _stream->readSize();
1309
+ auto k = _typeIdMap.find(index);
1310
+ if (k == _typeIdMap.end())
1311
+ {
1312
+ throw MarshalException{__FILE__, __LINE__, endOfBufferMessage};
1313
+ }
1314
+ return k->second;
1315
+ }
1316
+ else
1317
+ {
1318
+ string typeId;
1319
+ _stream->read(typeId, false);
1320
+ _typeIdMap.insert(make_pair(++_typeIdIndex, typeId));
1321
+ return typeId;
1322
+ }
1323
+ }
1324
+
1325
+ ValuePtr
1326
+ Ice::InputStream::EncapsDecoder::newInstance(string_view typeId)
1327
+ {
1328
+ return _stream->_sliceLoader->newClassInstance(typeId);
1329
+ }
1330
+
1331
+ void
1332
+ Ice::InputStream::EncapsDecoder::addPatchEntry(int32_t index, const PatchFunc& patchFunc, void* patchAddr)
1333
+ {
1334
+ assert(index > 0);
1335
+
1336
+ //
1337
+ // Check if we already unmarshaled the object. If that's the case, just patch the object smart
1338
+ // pointer and we're done. A null value indicates we've encountered a cycle and Ice.AllowClassCycles
1339
+ // is false.
1340
+ //
1341
+ auto p = _unmarshaledMap.find(index);
1342
+ if (p != _unmarshaledMap.end())
1343
+ {
1344
+ if (p->second == nullptr)
1345
+ {
1346
+ assert(!_stream->_instance->acceptClassCycles());
1347
+ throw MarshalException(__FILE__, __LINE__, "cycle detected during Value unmarshaling");
1348
+ }
1349
+ patchFunc(patchAddr, p->second);
1350
+ return;
1351
+ }
1352
+
1353
+ //
1354
+ // Add a patch entry if the object isn't unmarshaled yet, the
1355
+ // smart pointer will be patched when the instance is
1356
+ // unmarshaled.
1357
+ //
1358
+
1359
+ auto q = _patchMap.find(index);
1360
+ if (q == _patchMap.end())
1361
+ {
1362
+ //
1363
+ // We have no outstanding instances to be patched for this
1364
+ // index, so make a new entry in the patch map.
1365
+ //
1366
+ q = _patchMap.insert(make_pair(index, PatchList())).first;
1367
+ }
1368
+
1369
+ //
1370
+ // Append a patch entry for this instance.
1371
+ //
1372
+ PatchEntry e;
1373
+ e.patchFunc = patchFunc;
1374
+ e.patchAddr = patchAddr;
1375
+ e.classGraphDepth = _classGraphDepth;
1376
+ q->second.push_back(e);
1377
+ }
1378
+
1379
+ void
1380
+ Ice::InputStream::EncapsDecoder::unmarshal(int32_t index, const ValuePtr& v)
1381
+ {
1382
+ //
1383
+ // Add the object to the map of unmarshaled instances, this must
1384
+ // be done before reading the instances (for circular references).
1385
+ //
1386
+ // If circular references are not allowed we insert null (for cycle detection) and add
1387
+ // the object to the map once it has been fully unmarshaled.
1388
+ //
1389
+ _unmarshaledMap.insert(make_pair(index, _stream->_instance->acceptClassCycles() ? v : nullptr));
1390
+
1391
+ //
1392
+ // Read the object.
1393
+ //
1394
+ v->_iceRead(_stream);
1395
+
1396
+ //
1397
+ // Patch all instances now that the object is unmarshaled.
1398
+ //
1399
+ auto patchPos = _patchMap.find(index);
1400
+ if (patchPos != _patchMap.end())
1401
+ {
1402
+ assert(patchPos->second.size() > 0);
1403
+
1404
+ //
1405
+ // Patch all pointers that refer to the instance.
1406
+ //
1407
+ for (const auto& k : patchPos->second)
1408
+ {
1409
+ k.patchFunc(k.patchAddr, v);
1410
+ }
1411
+
1412
+ //
1413
+ // Clear out the patch map for that index -- there is nothing left
1414
+ // to patch for that index for the time being.
1415
+ //
1416
+ _patchMap.erase(patchPos);
1417
+ }
1418
+
1419
+ if (_valueList.empty() && _patchMap.empty())
1420
+ {
1421
+ v->ice_postUnmarshal();
1422
+ }
1423
+ else
1424
+ {
1425
+ _valueList.push_back(v);
1426
+
1427
+ if (_patchMap.empty())
1428
+ {
1429
+ // Iterate over the value list and invoke ice_postUnmarshal on
1430
+ // each value. We must do this after all values have been
1431
+ // unmarshaled in order to ensure that any value data members
1432
+ // have been properly patched.
1433
+ for (const auto& value : _valueList)
1434
+ {
1435
+ value->ice_postUnmarshal();
1436
+ }
1437
+ _valueList.clear();
1438
+ }
1439
+ }
1440
+
1441
+ if (!_stream->_instance->acceptClassCycles())
1442
+ {
1443
+ // This class has been fully unmarshaled without creating any cycles
1444
+ // It can be added to the map now.
1445
+ _unmarshaledMap[index] = v;
1446
+ }
1447
+ }
1448
+
1449
+ void
1450
+ Ice::InputStream::EncapsDecoder10::read(PatchFunc patchFunc, void* patchAddr)
1451
+ {
1452
+ assert(patchFunc && patchAddr);
1453
+
1454
+ //
1455
+ // Object references are encoded as a negative integer in 1.0.
1456
+ //
1457
+ int32_t index;
1458
+ _stream->read(index);
1459
+ if (index > 0)
1460
+ {
1461
+ throw MarshalException(__FILE__, __LINE__, "invalid object id");
1462
+ }
1463
+ index = -index;
1464
+
1465
+ if (index == 0)
1466
+ {
1467
+ //
1468
+ // Calling the patch function for null instances is necessary for correct functioning of Ice for
1469
+ // Python and Ruby.
1470
+ //
1471
+ patchFunc(patchAddr, nullptr);
1472
+ }
1473
+ else
1474
+ {
1475
+ addPatchEntry(index, patchFunc, patchAddr);
1476
+ }
1477
+ }
1478
+
1479
+ void
1480
+ Ice::InputStream::EncapsDecoder10::throwException(UserExceptionFactory exceptionFactory)
1481
+ {
1482
+ assert(_sliceType == NoSlice);
1483
+
1484
+ //
1485
+ // User exception with the 1.0 encoding start with a boolean flag
1486
+ // that indicates whether or not the exception has classes.
1487
+ //
1488
+ // This allows reading the pending values even if some part of
1489
+ // the exception was sliced.
1490
+ //
1491
+ bool usesClasses;
1492
+ _stream->read(usesClasses);
1493
+
1494
+ _sliceType = ExceptionSlice;
1495
+ _skipFirstSlice = false;
1496
+
1497
+ //
1498
+ // Read the first slice header.
1499
+ //
1500
+ startSlice();
1501
+ const string mostDerivedId = _typeId;
1502
+ while (true)
1503
+ {
1504
+ //
1505
+ // Look for a statically-generated factory for this ID.
1506
+ //
1507
+ if (!exceptionFactory)
1508
+ {
1509
+ std::exception_ptr exceptionPtr = _stream->_sliceLoader->newExceptionInstance(_typeId);
1510
+
1511
+ if (exceptionPtr)
1512
+ {
1513
+ exceptionFactory = [exceptionPtr](string_view) { std::rethrow_exception(exceptionPtr); };
1514
+ }
1515
+ }
1516
+
1517
+ //
1518
+ // We found a factory, we get out of this loop.
1519
+ // A factory that doesn't throw is equivalent to a null factory.
1520
+ //
1521
+ if (exceptionFactory)
1522
+ {
1523
+ //
1524
+ // Got factory -- ask the factory to instantiate the
1525
+ // exception, initialize the exception members, and throw
1526
+ // the exception.
1527
+ //
1528
+ try
1529
+ {
1530
+ exceptionFactory(_typeId);
1531
+ }
1532
+ catch (UserException& ex)
1533
+ {
1534
+ ex._read(_stream);
1535
+ if (usesClasses)
1536
+ {
1537
+ readPendingValues();
1538
+ }
1539
+ throw;
1540
+ }
1541
+ }
1542
+
1543
+ //
1544
+ // Slice off what we don't understand.
1545
+ //
1546
+ skipSlice();
1547
+ try
1548
+ {
1549
+ startSlice();
1550
+ }
1551
+ catch (const MarshalException&)
1552
+ {
1553
+ //
1554
+ // An oversight in the 1.0 encoding means there is no marker to indicate
1555
+ // the last slice of an exception. As a result, we just try to read the
1556
+ // next type ID, which raises MarshalException when the
1557
+ // input buffer underflows.
1558
+ throw MarshalException{__FILE__, __LINE__, "unknown exception type '" + mostDerivedId + "'"};
1559
+ }
1560
+ }
1561
+ }
1562
+
1563
+ void
1564
+ Ice::InputStream::EncapsDecoder10::startInstance([[maybe_unused]] SliceType sliceType)
1565
+ {
1566
+ assert(_sliceType == sliceType);
1567
+ _skipFirstSlice = true;
1568
+ }
1569
+
1570
+ SlicedDataPtr
1571
+ Ice::InputStream::EncapsDecoder10::endInstance()
1572
+ {
1573
+ //
1574
+ // Read the Ice::Value slice.
1575
+ //
1576
+ if (_sliceType == ValueSlice)
1577
+ {
1578
+ startSlice();
1579
+ int32_t sz = _stream->readSize(); // For compatibility with the old AFM.
1580
+ if (sz != 0)
1581
+ {
1582
+ throw MarshalException(__FILE__, __LINE__, "invalid Object slice");
1583
+ }
1584
+ endSlice();
1585
+ }
1586
+ _sliceType = NoSlice;
1587
+ return nullptr;
1588
+ }
1589
+
1590
+ void
1591
+ Ice::InputStream::EncapsDecoder10::startSlice()
1592
+ {
1593
+ //
1594
+ // If first slice, don't read the header, it was already read in
1595
+ // readInstance or throwException to find the factory.
1596
+ //
1597
+ if (_skipFirstSlice)
1598
+ {
1599
+ _skipFirstSlice = false;
1600
+ return;
1601
+ }
1602
+
1603
+ //
1604
+ // For values, first read the type ID boolean which indicates
1605
+ // whether or not the type ID is encoded as a string or as an
1606
+ // index. For exceptions, the type ID is always encoded as a
1607
+ // string.
1608
+ //
1609
+ if (_sliceType == ValueSlice)
1610
+ {
1611
+ bool isIndex;
1612
+ _stream->read(isIndex);
1613
+ _typeId = readTypeId(isIndex);
1614
+ }
1615
+ else
1616
+ {
1617
+ _stream->read(_typeId, false);
1618
+ }
1619
+
1620
+ _stream->read(_sliceSize);
1621
+ if (_sliceSize < 4)
1622
+ {
1623
+ throw MarshalException{__FILE__, __LINE__, endOfBufferMessage};
1624
+ }
1625
+ }
1626
+
1627
+ void
1628
+ Ice::InputStream::EncapsDecoder10::endSlice()
1629
+ {
1630
+ }
1631
+
1632
+ void
1633
+ Ice::InputStream::EncapsDecoder10::skipSlice()
1634
+ {
1635
+ _stream->traceSkipSlice(_typeId, _sliceType);
1636
+ assert(_sliceSize >= 4);
1637
+ _stream->skip(static_cast<size_t>(_sliceSize) - sizeof(int32_t));
1638
+ }
1639
+
1640
+ void
1641
+ Ice::InputStream::EncapsDecoder10::readPendingValues()
1642
+ {
1643
+ int32_t num;
1644
+ do
1645
+ {
1646
+ num = _stream->readSize();
1647
+ for (int32_t k = num; k > 0; --k)
1648
+ {
1649
+ readInstance();
1650
+ }
1651
+ } while (num);
1652
+
1653
+ if (!_patchMap.empty())
1654
+ {
1655
+ //
1656
+ // If any entries remain in the patch map, the sender has sent an index for an object, but
1657
+ // failed to supply the object.
1658
+ //
1659
+ throw MarshalException(__FILE__, __LINE__, "index for class received, but no instance");
1660
+ }
1661
+ }
1662
+
1663
+ void
1664
+ Ice::InputStream::EncapsDecoder10::readInstance()
1665
+ {
1666
+ int32_t index;
1667
+ _stream->read(index);
1668
+
1669
+ if (index <= 0)
1670
+ {
1671
+ throw MarshalException(__FILE__, __LINE__, "invalid object id");
1672
+ }
1673
+
1674
+ _sliceType = ValueSlice;
1675
+ _skipFirstSlice = false;
1676
+
1677
+ //
1678
+ // Read the first slice header.
1679
+ //
1680
+ startSlice();
1681
+ const string mostDerivedId = _typeId;
1682
+ shared_ptr<Value> v;
1683
+ while (true)
1684
+ {
1685
+ // For the 1.0 encoding, the type ID for the base Object class marks the last slice.
1686
+ if (_typeId == Value::ice_staticId())
1687
+ {
1688
+ throw MarshalException{
1689
+ __FILE__,
1690
+ __LINE__,
1691
+ "the Slice loader did not find a class for type ID '" + mostDerivedId + "'"};
1692
+ }
1693
+
1694
+ v = newInstance(_typeId);
1695
+
1696
+ //
1697
+ // We found a factory, we get out of this loop.
1698
+ //
1699
+ if (v)
1700
+ {
1701
+ break;
1702
+ }
1703
+
1704
+ //
1705
+ // Slice off what we don't understand.
1706
+ //
1707
+ skipSlice();
1708
+ startSlice(); // Read next Slice header for next iteration.
1709
+ }
1710
+
1711
+ //
1712
+ // Compute the biggest class graph depth of this object. To compute this,
1713
+ // we get the class graph depth of each ancestor from the patch map and
1714
+ // keep the biggest one.
1715
+ //
1716
+ _classGraphDepth = 0;
1717
+ auto patchPos = _patchMap.find(index);
1718
+ if (patchPos != _patchMap.end())
1719
+ {
1720
+ assert(patchPos->second.size() > 0);
1721
+ for (const auto& k : patchPos->second)
1722
+ {
1723
+ if (k.classGraphDepth > _classGraphDepth)
1724
+ {
1725
+ _classGraphDepth = k.classGraphDepth;
1726
+ }
1727
+ }
1728
+ }
1729
+
1730
+ if (++_classGraphDepth > _classGraphDepthMax)
1731
+ {
1732
+ throw MarshalException(__FILE__, __LINE__, "maximum class graph depth reached");
1733
+ }
1734
+
1735
+ //
1736
+ // Unmarshal the instance and add it to the map of unmarshaled instances.
1737
+ //
1738
+ unmarshal(index, v);
1739
+ }
1740
+
1741
+ void
1742
+ Ice::InputStream::EncapsDecoder11::read(PatchFunc patchFunc, void* patchAddr)
1743
+ {
1744
+ assert(patchFunc && patchAddr); // we used to support null for optional classes
1745
+
1746
+ int32_t index = _stream->readSize();
1747
+ if (index < 0)
1748
+ {
1749
+ throw MarshalException(__FILE__, __LINE__, "invalid object id");
1750
+ }
1751
+ else if (index == 0)
1752
+ {
1753
+ //
1754
+ // Calling the patch function for null instances is necessary for correct functioning of Ice for
1755
+ // Python and Ruby.
1756
+ //
1757
+ patchFunc(patchAddr, nullptr);
1758
+ }
1759
+ else if (_current && _current->sliceFlags & FLAG_HAS_INDIRECTION_TABLE)
1760
+ {
1761
+ //
1762
+ // When reading an object within a slice and there's an
1763
+ // indirect object table, always read an indirect reference
1764
+ // that points to an object from the indirect object table
1765
+ // marshaled at the end of the Slice.
1766
+ //
1767
+ // Maintain a list of indirect references. Note that the
1768
+ // indirect index starts at 1, so we decrement it by one to
1769
+ // derive an index into the indirection table that we'll read
1770
+ // at the end of the slice.
1771
+ //
1772
+ IndirectPatchEntry e;
1773
+ e.index = index - 1;
1774
+ e.patchFunc = patchFunc;
1775
+ e.patchAddr = patchAddr;
1776
+ _current->indirectPatchList.push_back(e);
1777
+ }
1778
+ else
1779
+ {
1780
+ readInstance(index, patchFunc, patchAddr);
1781
+ }
1782
+ }
1783
+
1784
+ void
1785
+ Ice::InputStream::EncapsDecoder11::throwException(UserExceptionFactory exceptionFactory)
1786
+ {
1787
+ assert(!_current);
1788
+
1789
+ push(ExceptionSlice);
1790
+
1791
+ //
1792
+ // Read the first slice header.
1793
+ //
1794
+ startSlice();
1795
+ const string mostDerivedId = _current->typeId;
1796
+ while (true)
1797
+ {
1798
+ //
1799
+ // Look for a statically-generated factory for this ID.
1800
+ //
1801
+ if (!exceptionFactory)
1802
+ {
1803
+ std::exception_ptr exceptionPtr = _stream->_sliceLoader->newExceptionInstance(_current->typeId);
1804
+
1805
+ if (exceptionPtr)
1806
+ {
1807
+ exceptionFactory = [exceptionPtr](string_view) { std::rethrow_exception(exceptionPtr); };
1808
+ }
1809
+ }
1810
+
1811
+ //
1812
+ // We found a factory, we get out of this loop.
1813
+ // A factory that doesn't throw is equivalent to a null factory.
1814
+ //
1815
+ if (exceptionFactory)
1816
+ {
1817
+ //
1818
+ // Got factory -- ask the factory to instantiate the
1819
+ // exception, initialize the exception members, and throw
1820
+ // the exception.
1821
+ //
1822
+ try
1823
+ {
1824
+ exceptionFactory(_current->typeId);
1825
+ }
1826
+ catch (UserException& ex)
1827
+ {
1828
+ ex._read(_stream);
1829
+ throw;
1830
+ }
1831
+ }
1832
+
1833
+ //
1834
+ // Slice off what we don't understand.
1835
+ //
1836
+ skipSlice();
1837
+
1838
+ //
1839
+ // If this is the last slice, raise an exception and stop un-marshaling.
1840
+ //
1841
+ if (_current->sliceFlags & FLAG_IS_LAST_SLICE)
1842
+ {
1843
+ throw MarshalException{
1844
+ __FILE__,
1845
+ __LINE__,
1846
+ "cannot unmarshal exception with type ID '" + mostDerivedId + "'"};
1847
+ }
1848
+
1849
+ startSlice();
1850
+ }
1851
+ }
1852
+
1853
+ void
1854
+ Ice::InputStream::EncapsDecoder11::startInstance([[maybe_unused]] SliceType sliceType)
1855
+ {
1856
+ assert(_current->sliceType == sliceType);
1857
+ _current->skipFirstSlice = true;
1858
+ }
1859
+
1860
+ SlicedDataPtr
1861
+ Ice::InputStream::EncapsDecoder11::endInstance()
1862
+ {
1863
+ SlicedDataPtr slicedData = readSlicedData();
1864
+ _current->indirectionTables.clear();
1865
+ _current->slices.clear();
1866
+ _current = _current->previous;
1867
+ return slicedData;
1868
+ }
1869
+
1870
+ void
1871
+ Ice::InputStream::EncapsDecoder11::startSlice()
1872
+ {
1873
+ //
1874
+ // If first slice, don't read the header, it was already read in
1875
+ // readInstance or throwException to find the factory.
1876
+ //
1877
+ if (_current->skipFirstSlice)
1878
+ {
1879
+ _current->skipFirstSlice = false;
1880
+ return;
1881
+ }
1882
+
1883
+ _stream->read(_current->sliceFlags);
1884
+
1885
+ //
1886
+ // Read the type ID, for value slices the type ID is encoded as a
1887
+ // string or as an index, for exceptions it's always encoded as a
1888
+ // string.
1889
+ //
1890
+ if (_current->sliceType == ValueSlice)
1891
+ {
1892
+ if ((_current->sliceFlags & FLAG_HAS_TYPE_ID_COMPACT) == FLAG_HAS_TYPE_ID_COMPACT) // Must be checked first!
1893
+ {
1894
+ _current->compactId = _stream->readSize();
1895
+ _current->typeId = std::to_string(_current->compactId);
1896
+ }
1897
+ else if (_current->sliceFlags & (FLAG_HAS_TYPE_ID_STRING | FLAG_HAS_TYPE_ID_INDEX))
1898
+ {
1899
+ _current->typeId = readTypeId(_current->sliceFlags & FLAG_HAS_TYPE_ID_INDEX);
1900
+ _current->compactId = -1;
1901
+ }
1902
+ else
1903
+ {
1904
+ // Only the most derived slice encodes the type ID for the compact format.
1905
+ _current->typeId.clear();
1906
+ _current->compactId = -1;
1907
+ }
1908
+ }
1909
+ else
1910
+ {
1911
+ _stream->read(_current->typeId, false);
1912
+ _current->compactId = -1;
1913
+ }
1914
+
1915
+ //
1916
+ // Read the slice size if necessary.
1917
+ //
1918
+ if (_current->sliceFlags & FLAG_HAS_SLICE_SIZE)
1919
+ {
1920
+ _stream->read(_current->sliceSize);
1921
+ if (_current->sliceSize < 4)
1922
+ {
1923
+ throw MarshalException{__FILE__, __LINE__, endOfBufferMessage};
1924
+ }
1925
+ }
1926
+ else
1927
+ {
1928
+ _current->sliceSize = 0;
1929
+ }
1930
+ }
1931
+
1932
+ void
1933
+ Ice::InputStream::EncapsDecoder11::endSlice()
1934
+ {
1935
+ if (_current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS)
1936
+ {
1937
+ _stream->skipOptionals();
1938
+ }
1939
+
1940
+ //
1941
+ // Read the indirect object table if one is present.
1942
+ //
1943
+ if (_current->sliceFlags & FLAG_HAS_INDIRECTION_TABLE)
1944
+ {
1945
+ IndexList indirectionTable(static_cast<size_t>(_stream->readAndCheckSeqSize(1)));
1946
+ for (auto& p : indirectionTable)
1947
+ {
1948
+ p = readInstance(_stream->readSize(), nullptr, nullptr);
1949
+ }
1950
+
1951
+ //
1952
+ // Sanity checks. If there are optional members, it's possible
1953
+ // that not all object references were read if they are from
1954
+ // unknown optional data members.
1955
+ //
1956
+ if (indirectionTable.empty())
1957
+ {
1958
+ throw MarshalException(__FILE__, __LINE__, "empty indirection table");
1959
+ }
1960
+ if (_current->indirectPatchList.empty() && !(_current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS))
1961
+ {
1962
+ throw MarshalException(__FILE__, __LINE__, "no references to indirection table");
1963
+ }
1964
+
1965
+ //
1966
+ // Convert indirect references into direct references.
1967
+ //
1968
+ IndirectPatchList::iterator p;
1969
+ for (p = _current->indirectPatchList.begin(); p != _current->indirectPatchList.end(); ++p)
1970
+ {
1971
+ assert(p->index >= 0);
1972
+ if (p->index >= static_cast<int32_t>(indirectionTable.size()))
1973
+ {
1974
+ throw MarshalException(__FILE__, __LINE__, "indirection out of range");
1975
+ }
1976
+ addPatchEntry(indirectionTable[static_cast<size_t>(p->index)], p->patchFunc, p->patchAddr);
1977
+ }
1978
+ _current->indirectPatchList.clear();
1979
+ }
1980
+ }
1981
+
1982
+ void
1983
+ Ice::InputStream::EncapsDecoder11::skipSlice()
1984
+ {
1985
+ _stream->traceSkipSlice(_current->typeId, _current->sliceType);
1986
+
1987
+ Container::iterator start = _stream->i;
1988
+
1989
+ if (_current->sliceFlags & FLAG_HAS_SLICE_SIZE)
1990
+ {
1991
+ assert(_current->sliceSize >= 4);
1992
+ _stream->skip(static_cast<size_t>(_current->sliceSize) - sizeof(int32_t));
1993
+ }
1994
+ else
1995
+ {
1996
+ if (_current->sliceType == ValueSlice)
1997
+ {
1998
+ throw MarshalException{
1999
+ __FILE__,
2000
+ __LINE__,
2001
+ "the Slice loader did not find a class for type ID '" + _current->typeId +
2002
+ "' and compact format prevents slicing"};
2003
+ }
2004
+ else
2005
+ {
2006
+ throw MarshalException{
2007
+ __FILE__,
2008
+ __LINE__,
2009
+ "the Slice loader did not find a user exception class for type ID '" + _current->typeId +
2010
+ "' and compact format prevents slicing"};
2011
+ }
2012
+ }
2013
+
2014
+ //
2015
+ // Preserve this slice if unmarshaling a value in Slice format. Exception slices are not preserved.
2016
+ //
2017
+ if (_current->sliceType == ValueSlice)
2018
+ {
2019
+ bool hasOptionalMembers = _current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS;
2020
+ vector<byte> bytes;
2021
+ if (hasOptionalMembers)
2022
+ {
2023
+ //
2024
+ // Don't include the optional member end marker. It will be re-written by
2025
+ // endSlice when the sliced data is re-written.
2026
+ //
2027
+ bytes = vector<byte>(start, _stream->i - 1);
2028
+ }
2029
+ else
2030
+ {
2031
+ bytes = vector<byte>(start, _stream->i);
2032
+ }
2033
+
2034
+ SliceInfoPtr info = make_shared<SliceInfo>(
2035
+ _current->compactId == -1 ? _current->typeId : "",
2036
+ _current->compactId,
2037
+ std::move(bytes),
2038
+ hasOptionalMembers,
2039
+ _current->sliceFlags & FLAG_IS_LAST_SLICE);
2040
+
2041
+ _current->slices.push_back(info);
2042
+ }
2043
+
2044
+ _current->indirectionTables.emplace_back();
2045
+
2046
+ //
2047
+ // Read the indirect object table. We read the instances or their
2048
+ // IDs if the instance is a reference to an already un-marshaled
2049
+ // object.
2050
+ //
2051
+ if (_current->sliceFlags & FLAG_HAS_INDIRECTION_TABLE)
2052
+ {
2053
+ IndexList& table = _current->indirectionTables.back();
2054
+ table.resize(static_cast<size_t>(_stream->readAndCheckSeqSize(1)));
2055
+ for (auto& entry : table)
2056
+ {
2057
+ entry = readInstance(_stream->readSize(), nullptr, nullptr);
2058
+ }
2059
+ }
2060
+ }
2061
+
2062
+ bool
2063
+ Ice::InputStream::EncapsDecoder11::readOptional(int32_t readTag, Ice::OptionalFormat expectedFormat)
2064
+ {
2065
+ if (!_current)
2066
+ {
2067
+ return _stream->readOptImpl(readTag, expectedFormat);
2068
+ }
2069
+ else if (_current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS)
2070
+ {
2071
+ return _stream->readOptImpl(readTag, expectedFormat);
2072
+ }
2073
+ return false;
2074
+ }
2075
+
2076
+ int32_t
2077
+ Ice::InputStream::EncapsDecoder11::readInstance(int32_t index, const PatchFunc& patchFunc, void* patchAddr)
2078
+ {
2079
+ assert(index > 0);
2080
+
2081
+ if (index > 1)
2082
+ {
2083
+ if (patchFunc)
2084
+ {
2085
+ addPatchEntry(index, patchFunc, patchAddr);
2086
+ }
2087
+ return index;
2088
+ }
2089
+
2090
+ push(ValueSlice);
2091
+
2092
+ //
2093
+ // Get the object ID before we start reading slices. If some
2094
+ // slices are skiped, the indirect object table are still read and
2095
+ // might read other instances.
2096
+ //
2097
+ index = ++_valueIdIndex;
2098
+
2099
+ //
2100
+ // Read the first slice header.
2101
+ //
2102
+ startSlice();
2103
+ const string mostDerivedId = _current->typeId;
2104
+ shared_ptr<Value> v;
2105
+ while (true)
2106
+ {
2107
+ if (!_current->typeId.empty())
2108
+ {
2109
+ v = newInstance(_current->typeId);
2110
+
2111
+ //
2112
+ // We found a factory, we get out of this loop.
2113
+ //
2114
+ if (v)
2115
+ {
2116
+ break;
2117
+ }
2118
+ }
2119
+
2120
+ //
2121
+ // Slice off what we don't understand.
2122
+ //
2123
+ skipSlice();
2124
+
2125
+ //
2126
+ // If this is the last slice, keep the object as an opaque UnknownSlicedValue.
2127
+ //
2128
+ if (_current->sliceFlags & FLAG_IS_LAST_SLICE)
2129
+ {
2130
+ //
2131
+ // Provide a factory with an opportunity to supply the object.
2132
+ // We pass the "::Ice::Object" ID to indicate that this is the
2133
+ // last chance to preserve the object.
2134
+ //
2135
+ v = newInstance(Value::ice_staticId());
2136
+ if (!v)
2137
+ {
2138
+ v = make_shared<UnknownSlicedValue>(mostDerivedId);
2139
+ }
2140
+
2141
+ break;
2142
+ }
2143
+
2144
+ startSlice(); // Read next Slice header for next iteration.
2145
+ }
2146
+
2147
+ if (++_classGraphDepth > _classGraphDepthMax)
2148
+ {
2149
+ throw MarshalException(__FILE__, __LINE__, "maximum class graph depth reached");
2150
+ }
2151
+
2152
+ //
2153
+ // Unmarshal the object.
2154
+ //
2155
+ unmarshal(index, v);
2156
+
2157
+ --_classGraphDepth;
2158
+
2159
+ if (!_current && !_patchMap.empty())
2160
+ {
2161
+ //
2162
+ // If any entries remain in the patch map, the sender has sent an index for an object, but
2163
+ // failed to supply the object.
2164
+ //
2165
+ throw MarshalException(__FILE__, __LINE__, "index for class received, but no instance");
2166
+ }
2167
+
2168
+ if (patchFunc)
2169
+ {
2170
+ patchFunc(patchAddr, v);
2171
+ }
2172
+ return index;
2173
+ }
2174
+
2175
+ SlicedDataPtr
2176
+ Ice::InputStream::EncapsDecoder11::readSlicedData()
2177
+ {
2178
+ if (_current->slices.empty()) // No preserved slices.
2179
+ {
2180
+ return nullptr;
2181
+ }
2182
+
2183
+ //
2184
+ // The indirectionTables member holds the indirection table for
2185
+ // each slice in slices.
2186
+ //
2187
+ assert(_current->slices.size() == _current->indirectionTables.size());
2188
+ for (SliceInfoSeq::size_type n = 0; n < _current->slices.size(); ++n)
2189
+ {
2190
+ //
2191
+ // We use the "instances" list in SliceInfo to hold references
2192
+ // to the target instances. Note that the instances might not have
2193
+ // been read yet in the case of a circular reference to an
2194
+ // enclosing instance.
2195
+ //
2196
+ const IndexList& table = _current->indirectionTables[n];
2197
+ vector<shared_ptr<Value>>& instances = _current->slices[n]->instances;
2198
+ instances.resize(table.size());
2199
+ IndexList::size_type j = 0;
2200
+ for (const auto& p : table)
2201
+ {
2202
+ addPatchEntry(p, patchValue<Value>, &instances[j++]);
2203
+ }
2204
+ }
2205
+ return make_shared<SlicedData>(_current->slices);
2206
+ }