zeroc-ice 3.7.10 → 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 (1216) 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/mcpp/system.c +2741 -0
  436. data/dist/ice/slice/Glacier2/Metrics.ice +47 -0
  437. data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +55 -0
  438. data/dist/ice/slice/Glacier2/Router.ice +93 -0
  439. data/dist/ice/slice/Glacier2/SSLInfo.ice +42 -0
  440. data/dist/ice/slice/Glacier2/Session.ice +133 -0
  441. data/dist/ice/slice/Ice/BuiltinSequences.ice +54 -0
  442. data/dist/ice/slice/Ice/Context.ice +24 -0
  443. data/dist/ice/slice/Ice/EndpointTypes.ice +50 -0
  444. data/dist/ice/slice/Ice/Identity.ice +36 -0
  445. data/dist/ice/slice/Ice/Locator.ice +74 -0
  446. data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
  447. data/dist/ice/slice/Ice/Metrics.ice +201 -0
  448. data/dist/ice/slice/Ice/OperationMode.ice +38 -0
  449. data/dist/ice/slice/Ice/Process.ice +28 -0
  450. data/dist/ice/slice/Ice/PropertiesAdmin.ice +37 -0
  451. data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
  452. data/dist/ice/slice/Ice/RemoteLogger.ice +126 -0
  453. data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
  454. data/dist/ice/slice/Ice/Router.ice +54 -0
  455. data/dist/ice/slice/Ice/SliceChecksumDict.ice +18 -0
  456. data/dist/ice/slice/Ice/Version.ice +43 -0
  457. data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
  458. data/dist/ice/slice/IceGrid/Admin.ice +981 -0
  459. data/dist/ice/slice/IceGrid/Descriptor.ice +519 -0
  460. data/dist/ice/slice/IceGrid/Exception.ice +98 -0
  461. data/dist/ice/slice/IceGrid/FileParser.ice +36 -0
  462. data/dist/ice/slice/IceGrid/Registry.ice +130 -0
  463. data/dist/ice/slice/IceGrid/Session.ice +64 -0
  464. data/dist/ice/slice/IceGrid/UserAccountMapper.ice +34 -0
  465. data/dist/ice/slice/IceStorm/IceStorm.ice +186 -0
  466. data/dist/ice/slice/IceStorm/Metrics.ice +41 -0
  467. data/dist/lib/Glacier2/Metrics.rb +41 -0
  468. data/dist/lib/Glacier2/PermissionsVerifier.rb +61 -0
  469. data/dist/lib/Glacier2/Router.rb +73 -0
  470. data/dist/lib/Glacier2/SSLInfo.rb +64 -0
  471. data/dist/lib/Glacier2/Session.rb +187 -0
  472. data/dist/lib/Glacier2.rb +7 -0
  473. data/dist/lib/Ice/BuiltinSequences.rb +48 -0
  474. data/dist/lib/Ice/CompressBatch.rb +50 -0
  475. data/dist/lib/Ice/Context.rb +12 -0
  476. data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
  477. data/dist/lib/Ice/EndpointTypes.rb +28 -0
  478. data/dist/lib/Ice/Exception.rb +20 -0
  479. data/dist/lib/Ice/Identity.rb +47 -0
  480. data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
  481. data/dist/lib/Ice/InitializationData.rb +12 -0
  482. data/dist/lib/Ice/LocalExceptions.rb +168 -0
  483. data/dist/lib/Ice/Locator.rb +83 -0
  484. data/dist/lib/Ice/LocatorRegistry.rb +73 -0
  485. data/dist/lib/Ice/Metrics.rb +290 -0
  486. data/dist/lib/Ice/OperationMode.rb +58 -0
  487. data/dist/lib/Ice/Process.rb +34 -0
  488. data/dist/lib/Ice/PropertiesAdmin.rb +39 -0
  489. data/dist/lib/Ice/PropertyDict.rb +12 -0
  490. data/dist/lib/Ice/Proxy.rb +85 -0
  491. data/dist/lib/Ice/ProxyFunctions.rb +69 -0
  492. data/dist/lib/Ice/RemoteLogger.rb +176 -0
  493. data/dist/lib/Ice/ReplyStatus.rb +65 -0
  494. data/dist/lib/Ice/Router.rb +59 -0
  495. data/dist/lib/Ice/SliceChecksumDict.rb +12 -0
  496. data/dist/lib/Ice/SliceUtil.rb +41 -0
  497. data/dist/lib/Ice/Struct.rb +11 -0
  498. data/dist/lib/Ice/ToStringMode.rb +50 -0
  499. data/dist/lib/Ice/Value.rb +93 -0
  500. data/dist/lib/Ice/Version.rb +78 -0
  501. data/dist/lib/Ice.rb +37 -0
  502. data/dist/lib/IceBox/ServiceManager.rb +104 -0
  503. data/dist/lib/IceBox.rb +3 -0
  504. data/dist/lib/IceGrid/Admin.rb +1208 -0
  505. data/dist/lib/IceGrid/Descriptor.rb +989 -0
  506. data/dist/lib/IceGrid/Exception.rb +145 -0
  507. data/dist/lib/IceGrid/FileParser.rb +41 -0
  508. data/dist/lib/IceGrid/Registry.rb +168 -0
  509. data/dist/lib/IceGrid/Session.rb +56 -0
  510. data/dist/lib/IceGrid/UserAccountMapper.rb +38 -0
  511. data/dist/lib/IceGrid.rb +9 -0
  512. data/dist/lib/IceStorm/IceStorm.rb +251 -0
  513. data/dist/lib/IceStorm/Metrics.rb +55 -0
  514. data/dist/lib/IceStorm.rb +4 -0
  515. data/extconf.rb +89 -0
  516. data/ice.gemspec +22 -17
  517. data/scripts/slice2rb +10 -0
  518. metadata +536 -712
  519. data/ICE_LICENSE +0 -48
  520. data/LICENSE +0 -340
  521. data/MCPP_LICENSE +0 -29
  522. data/bin/slice2rb +0 -12
  523. data/ext/Communicator.cpp +0 -792
  524. data/ext/Communicator.h +0 -20
  525. data/ext/Config.h +0 -143
  526. data/ext/Connection.cpp +0 -532
  527. data/ext/Connection.h +0 -24
  528. data/ext/Endpoint.cpp +0 -340
  529. data/ext/Endpoint.h +0 -22
  530. data/ext/ImplicitContext.cpp +0 -144
  531. data/ext/ImplicitContext.h +0 -20
  532. data/ext/Init.cpp +0 -49
  533. data/ext/Logger.cpp +0 -147
  534. data/ext/Logger.h +0 -23
  535. data/ext/Operation.cpp +0 -661
  536. data/ext/Operation.h +0 -31
  537. data/ext/Properties.cpp +0 -365
  538. data/ext/Properties.h +0 -20
  539. data/ext/Proxy.cpp +0 -1396
  540. data/ext/Proxy.h +0 -22
  541. data/ext/Slice.cpp +0 -205
  542. data/ext/Slice.h +0 -17
  543. data/ext/Types.cpp +0 -3325
  544. data/ext/Types.h +0 -595
  545. data/ext/Util.cpp +0 -812
  546. data/ext/Util.h +0 -586
  547. data/ext/ValueFactoryManager.cpp +0 -441
  548. data/ext/ValueFactoryManager.h +0 -95
  549. data/ext/extconf.rb +0 -97
  550. data/ext/ice/cpp/include/Ice/Application.h +0 -326
  551. data/ext/ice/cpp/include/Ice/AsyncResult.h +0 -155
  552. data/ext/ice/cpp/include/Ice/AsyncResultF.h +0 -23
  553. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
  554. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +0 -20
  555. data/ext/ice/cpp/include/Ice/Buffer.h +0 -154
  556. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
  557. data/ext/ice/cpp/include/Ice/Comparable.h +0 -205
  558. data/ext/ice/cpp/include/Ice/Config.h +0 -76
  559. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
  560. data/ext/ice/cpp/include/Ice/ConnectionIF.h +0 -38
  561. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
  562. data/ext/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
  563. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
  564. data/ext/ice/cpp/include/Ice/Dispatcher.h +0 -67
  565. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
  566. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
  567. data/ext/ice/cpp/include/Ice/Exception.h +0 -161
  568. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
  569. data/ext/ice/cpp/include/Ice/FactoryTable.h +0 -73
  570. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
  571. data/ext/ice/cpp/include/Ice/Format.h +0 -38
  572. data/ext/ice/cpp/include/Ice/Functional.h +0 -140
  573. data/ext/ice/cpp/include/Ice/GCObject.h +0 -76
  574. data/ext/ice/cpp/include/Ice/Handle.h +0 -182
  575. data/ext/ice/cpp/include/Ice/Ice.h +0 -55
  576. data/ext/ice/cpp/include/Ice/IconvStringConverter.h +0 -377
  577. data/ext/ice/cpp/include/Ice/Incoming.h +0 -225
  578. data/ext/ice/cpp/include/Ice/IncomingAsync.h +0 -186
  579. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
  580. data/ext/ice/cpp/include/Ice/Initialize.h +0 -957
  581. data/ext/ice/cpp/include/Ice/InputStream.h +0 -1514
  582. data/ext/ice/cpp/include/Ice/InstanceF.h +0 -20
  583. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
  584. data/ext/ice/cpp/include/Ice/LocalObject.h +0 -35
  585. data/ext/ice/cpp/include/Ice/LocalObjectF.h +0 -21
  586. data/ext/ice/cpp/include/Ice/LoggerUtil.h +0 -185
  587. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
  588. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
  589. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
  590. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +0 -86
  591. data/ext/ice/cpp/include/Ice/Object.h +0 -507
  592. data/ext/ice/cpp/include/Ice/ObjectF.h +0 -30
  593. data/ext/ice/cpp/include/Ice/ObserverHelper.h +0 -182
  594. data/ext/ice/cpp/include/Ice/Optional.h +0 -1114
  595. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +0 -856
  596. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
  597. data/ext/ice/cpp/include/Ice/OutputStream.h +0 -1092
  598. data/ext/ice/cpp/include/Ice/Protocol.h +0 -274
  599. data/ext/ice/cpp/include/Ice/Proxy.h +0 -5154
  600. data/ext/ice/cpp/include/Ice/ProxyF.h +0 -53
  601. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
  602. data/ext/ice/cpp/include/Ice/ProxyHandle.h +0 -318
  603. data/ext/ice/cpp/include/Ice/ReferenceF.h +0 -29
  604. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
  605. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +0 -30
  606. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
  607. data/ext/ice/cpp/include/Ice/SHA1.h +0 -40
  608. data/ext/ice/cpp/include/Ice/ServantManagerF.h +0 -21
  609. data/ext/ice/cpp/include/Ice/Service.h +0 -379
  610. data/ext/ice/cpp/include/Ice/SliceChecksums.h +0 -33
  611. data/ext/ice/cpp/include/Ice/SlicedData.h +0 -172
  612. data/ext/ice/cpp/include/Ice/SlicedDataF.h +0 -40
  613. data/ext/ice/cpp/include/Ice/StreamHelpers.h +0 -1190
  614. data/ext/ice/cpp/include/Ice/StringConverter.h +0 -78
  615. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
  616. data/ext/ice/cpp/include/Ice/UUID.h +0 -19
  617. data/ext/ice/cpp/include/Ice/UniquePtr.h +0 -95
  618. data/ext/ice/cpp/include/Ice/UniqueRef.h +0 -97
  619. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +0 -88
  620. data/ext/ice/cpp/include/Ice/Value.h +0 -139
  621. data/ext/ice/cpp/include/Ice/ValueF.h +0 -21
  622. data/ext/ice/cpp/include/IceSSL/Config.h +0 -21
  623. data/ext/ice/cpp/include/IceSSL/IceSSL.h +0 -24
  624. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
  625. data/ext/ice/cpp/include/IceSSL/Plugin.h +0 -712
  626. data/ext/ice/cpp/include/IceSSL/SChannel.h +0 -72
  627. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
  628. data/ext/ice/cpp/include/IceSSL/UWP.h +0 -62
  629. data/ext/ice/cpp/include/IceUtil/Atomic.h +0 -179
  630. data/ext/ice/cpp/include/IceUtil/Cond.h +0 -317
  631. data/ext/ice/cpp/include/IceUtil/Config.h +0 -392
  632. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
  633. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
  634. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -92
  635. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
  636. data/ext/ice/cpp/include/IceUtil/Exception.h +0 -394
  637. data/ext/ice/cpp/include/IceUtil/FileUtil.h +0 -140
  638. data/ext/ice/cpp/include/IceUtil/Functional.h +0 -389
  639. data/ext/ice/cpp/include/IceUtil/Handle.h +0 -261
  640. data/ext/ice/cpp/include/IceUtil/IceUtil.h +0 -40
  641. data/ext/ice/cpp/include/IceUtil/InputUtil.h +0 -42
  642. data/ext/ice/cpp/include/IceUtil/Iterator.h +0 -31
  643. data/ext/ice/cpp/include/IceUtil/Lock.h +0 -128
  644. data/ext/ice/cpp/include/IceUtil/Monitor.h +0 -243
  645. data/ext/ice/cpp/include/IceUtil/Mutex.h +0 -349
  646. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
  647. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
  648. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
  649. data/ext/ice/cpp/include/IceUtil/Optional.h +0 -433
  650. data/ext/ice/cpp/include/IceUtil/Options.h +0 -135
  651. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
  652. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +0 -14
  653. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
  654. data/ext/ice/cpp/include/IceUtil/Random.h +0 -55
  655. data/ext/ice/cpp/include/IceUtil/RecMutex.h +0 -107
  656. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
  657. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
  658. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
  659. data/ext/ice/cpp/include/IceUtil/Shared.h +0 -127
  660. data/ext/ice/cpp/include/IceUtil/StopWatch.h +0 -49
  661. data/ext/ice/cpp/include/IceUtil/StringConverter.h +0 -195
  662. data/ext/ice/cpp/include/IceUtil/StringUtil.h +0 -97
  663. data/ext/ice/cpp/include/IceUtil/Thread.h +0 -160
  664. data/ext/ice/cpp/include/IceUtil/ThreadException.h +0 -94
  665. data/ext/ice/cpp/include/IceUtil/Time.h +0 -205
  666. data/ext/ice/cpp/include/IceUtil/Timer.h +0 -144
  667. data/ext/ice/cpp/include/IceUtil/UUID.h +0 -21
  668. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +0 -37
  669. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +0 -170
  670. data/ext/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
  671. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
  672. data/ext/ice/cpp/include/generated/Ice/Connection.h +0 -1703
  673. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
  674. data/ext/ice/cpp/include/generated/Ice/Current.h +0 -322
  675. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
  676. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
  677. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +0 -118
  678. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
  679. data/ext/ice/cpp/include/generated/Ice/Identity.h +0 -264
  680. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
  681. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
  682. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
  683. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
  684. data/ext/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
  685. data/ext/ice/cpp/include/generated/Ice/Locator.h +0 -3898
  686. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
  687. data/ext/ice/cpp/include/generated/Ice/Logger.h +0 -237
  688. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
  689. data/ext/ice/cpp/include/generated/Ice/Metrics.h +0 -4769
  690. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
  691. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
  692. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
  693. data/ext/ice/cpp/include/generated/Ice/Plugin.h +0 -318
  694. data/ext/ice/cpp/include/generated/Ice/PluginF.h +0 -110
  695. data/ext/ice/cpp/include/generated/Ice/Process.h +0 -977
  696. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
  697. data/ext/ice/cpp/include/generated/Ice/Properties.h +0 -452
  698. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +0 -1366
  699. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
  700. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +0 -2707
  701. data/ext/ice/cpp/include/generated/Ice/Router.h +0 -1850
  702. data/ext/ice/cpp/include/generated/Ice/RouterF.h +0 -125
  703. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
  704. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
  705. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +0 -84
  706. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
  707. data/ext/ice/cpp/include/generated/Ice/Version.h +0 -357
  708. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
  709. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
  710. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
  711. data/ext/ice/cpp/src/Ice/ACM.cpp +0 -380
  712. data/ext/ice/cpp/src/Ice/ACM.h +0 -119
  713. data/ext/ice/cpp/src/Ice/ACMF.h +0 -30
  714. data/ext/ice/cpp/src/Ice/Acceptor.cpp +0 -16
  715. data/ext/ice/cpp/src/Ice/Acceptor.h +0 -37
  716. data/ext/ice/cpp/src/Ice/AcceptorF.h +0 -25
  717. data/ext/ice/cpp/src/Ice/ArgVector.cpp +0 -59
  718. data/ext/ice/cpp/src/Ice/ArgVector.h +0 -36
  719. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
  720. data/ext/ice/cpp/src/Ice/Base64.cpp +0 -263
  721. data/ext/ice/cpp/src/Ice/Base64.h +0 -31
  722. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +0 -250
  723. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +0 -59
  724. data/ext/ice/cpp/src/Ice/Buffer.cpp +0 -155
  725. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +0 -49
  726. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +0 -407
  727. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +0 -87
  728. data/ext/ice/cpp/src/Ice/Communicator.cpp +0 -79
  729. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +0 -61
  730. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
  731. data/ext/ice/cpp/src/Ice/CommunicatorI.h +0 -167
  732. data/ext/ice/cpp/src/Ice/Cond.cpp +0 -381
  733. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +0 -348
  734. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +0 -72
  735. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +0 -24
  736. data/ext/ice/cpp/src/Ice/Connection.cpp +0 -155
  737. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +0 -61
  738. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +0 -1972
  739. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +0 -264
  740. data/ext/ice/cpp/src/Ice/ConnectionFactoryF.h +0 -30
  741. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +0 -3670
  742. data/ext/ice/cpp/src/Ice/ConnectionI.h +0 -389
  743. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
  744. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
  745. data/ext/ice/cpp/src/Ice/Connector.cpp +0 -16
  746. data/ext/ice/cpp/src/Ice/Connector.h +0 -32
  747. data/ext/ice/cpp/src/Ice/ConnectorF.h +0 -21
  748. data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
  749. data/ext/ice/cpp/src/Ice/Current.cpp +0 -62
  750. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +0 -159
  751. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +0 -52
  752. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +0 -21
  753. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
  754. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +0 -284
  755. data/ext/ice/cpp/src/Ice/Endpoint.cpp +0 -147
  756. data/ext/ice/cpp/src/Ice/EndpointF.cpp +0 -61
  757. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +0 -189
  758. data/ext/ice/cpp/src/Ice/EndpointFactory.h +0 -117
  759. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +0 -21
  760. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +0 -213
  761. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +0 -47
  762. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +0 -21
  763. data/ext/ice/cpp/src/Ice/EndpointI.cpp +0 -98
  764. data/ext/ice/cpp/src/Ice/EndpointI.h +0 -218
  765. data/ext/ice/cpp/src/Ice/EndpointIF.h +0 -49
  766. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +0 -51
  767. data/ext/ice/cpp/src/Ice/EventHandler.cpp +0 -32
  768. data/ext/ice/cpp/src/Ice/EventHandler.h +0 -81
  769. data/ext/ice/cpp/src/Ice/EventHandlerF.h +0 -24
  770. data/ext/ice/cpp/src/Ice/Exception.cpp +0 -818
  771. data/ext/ice/cpp/src/Ice/FacetMap.cpp +0 -49
  772. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
  773. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
  774. data/ext/ice/cpp/src/Ice/GCObject.cpp +0 -442
  775. data/ext/ice/cpp/src/Ice/HashUtil.h +0 -53
  776. data/ext/ice/cpp/src/Ice/HttpParser.cpp +0 -684
  777. data/ext/ice/cpp/src/Ice/HttpParser.h +0 -117
  778. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +0 -710
  779. data/ext/ice/cpp/src/Ice/IPEndpointI.h +0 -152
  780. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +0 -28
  781. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
  782. data/ext/ice/cpp/src/Ice/Identity.cpp +0 -57
  783. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +0 -75
  784. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +0 -61
  785. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
  786. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
  787. data/ext/ice/cpp/src/Ice/Incoming.cpp +0 -795
  788. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
  789. data/ext/ice/cpp/src/Ice/IncomingRequest.h +0 -33
  790. data/ext/ice/cpp/src/Ice/Initialize.cpp +0 -654
  791. data/ext/ice/cpp/src/Ice/InputStream.cpp +0 -2741
  792. data/ext/ice/cpp/src/Ice/Instance.cpp +0 -1967
  793. data/ext/ice/cpp/src/Ice/Instance.h +0 -235
  794. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +0 -188
  795. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +0 -66
  796. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +0 -1094
  797. data/ext/ice/cpp/src/Ice/InstrumentationI.h +0 -256
  798. data/ext/ice/cpp/src/Ice/LocalException.cpp +0 -3262
  799. data/ext/ice/cpp/src/Ice/LocalObject.cpp +0 -23
  800. data/ext/ice/cpp/src/Ice/Locator.cpp +0 -2042
  801. data/ext/ice/cpp/src/Ice/LocatorF.cpp +0 -63
  802. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +0 -889
  803. data/ext/ice/cpp/src/Ice/LocatorInfo.h +0 -189
  804. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +0 -29
  805. data/ext/ice/cpp/src/Ice/Logger.cpp +0 -73
  806. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +0 -956
  807. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +0 -41
  808. data/ext/ice/cpp/src/Ice/LoggerF.cpp +0 -61
  809. data/ext/ice/cpp/src/Ice/LoggerI.cpp +0 -259
  810. data/ext/ice/cpp/src/Ice/LoggerI.h +0 -52
  811. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +0 -100
  812. data/ext/ice/cpp/src/Ice/Metrics.cpp +0 -2352
  813. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +0 -694
  814. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
  815. data/ext/ice/cpp/src/Ice/Network.cpp +0 -2249
  816. data/ext/ice/cpp/src/Ice/Network.h +0 -289
  817. data/ext/ice/cpp/src/Ice/NetworkF.h +0 -19
  818. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +0 -311
  819. data/ext/ice/cpp/src/Ice/NetworkProxy.h +0 -72
  820. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +0 -21
  821. data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +0 -57
  822. data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +0 -40
  823. data/ext/ice/cpp/src/Ice/Object.cpp +0 -435
  824. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +0 -79
  825. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +0 -61
  826. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +0 -291
  827. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +0 -53
  828. data/ext/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +0 -25
  829. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +0 -1530
  830. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +0 -159
  831. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +0 -75
  832. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +0 -56
  833. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +0 -408
  834. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +0 -74
  835. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +0 -1322
  836. data/ext/ice/cpp/src/Ice/OutputStream.cpp +0 -1367
  837. data/ext/ice/cpp/src/Ice/Plugin.cpp +0 -87
  838. data/ext/ice/cpp/src/Ice/PluginF.cpp +0 -61
  839. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +0 -503
  840. data/ext/ice/cpp/src/Ice/PluginManagerI.h +0 -61
  841. data/ext/ice/cpp/src/Ice/Process.cpp +0 -471
  842. data/ext/ice/cpp/src/Ice/ProcessF.cpp +0 -63
  843. data/ext/ice/cpp/src/Ice/Properties.cpp +0 -78
  844. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +0 -603
  845. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
  846. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
  847. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +0 -63
  848. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +0 -739
  849. data/ext/ice/cpp/src/Ice/PropertiesI.h +0 -70
  850. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +0 -1429
  851. data/ext/ice/cpp/src/Ice/PropertyNames.h +0 -78
  852. data/ext/ice/cpp/src/Ice/Protocol.cpp +0 -124
  853. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +0 -131
  854. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +0 -93
  855. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +0 -21
  856. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +0 -51
  857. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +0 -64
  858. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
  859. data/ext/ice/cpp/src/Ice/Proxy.cpp +0 -1601
  860. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
  861. data/ext/ice/cpp/src/Ice/ProxyFactory.h +0 -57
  862. data/ext/ice/cpp/src/Ice/Reference.cpp +0 -2046
  863. data/ext/ice/cpp/src/Ice/Reference.h +0 -323
  864. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +0 -888
  865. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +0 -76
  866. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +0 -19
  867. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
  868. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
  869. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +0 -1171
  870. data/ext/ice/cpp/src/Ice/ReplyStatus.h +0 -24
  871. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +0 -37
  872. data/ext/ice/cpp/src/Ice/RequestHandler.h +0 -78
  873. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
  874. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
  875. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
  876. data/ext/ice/cpp/src/Ice/ResponseHandler.h +0 -43
  877. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +0 -157
  878. data/ext/ice/cpp/src/Ice/RetryQueue.h +0 -66
  879. data/ext/ice/cpp/src/Ice/RetryQueueF.h +0 -19
  880. data/ext/ice/cpp/src/Ice/Router.cpp +0 -977
  881. data/ext/ice/cpp/src/Ice/RouterF.cpp +0 -63
  882. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +0 -379
  883. data/ext/ice/cpp/src/Ice/RouterInfo.h +0 -152
  884. data/ext/ice/cpp/src/Ice/RouterInfoF.h +0 -25
  885. data/ext/ice/cpp/src/Ice/SHA1.cpp +0 -169
  886. data/ext/ice/cpp/src/Ice/Selector.cpp +0 -1525
  887. data/ext/ice/cpp/src/Ice/Selector.h +0 -292
  888. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +0 -75
  889. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +0 -61
  890. data/ext/ice/cpp/src/Ice/ServantManager.cpp +0 -480
  891. data/ext/ice/cpp/src/Ice/ServantManager.h +0 -69
  892. data/ext/ice/cpp/src/Ice/SharedContext.h +0 -46
  893. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +0 -49
  894. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
  895. data/ext/ice/cpp/src/Ice/SlicedData.cpp +0 -127
  896. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +0 -519
  897. data/ext/ice/cpp/src/Ice/StreamSocket.h +0 -85
  898. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
  899. data/ext/ice/cpp/src/Ice/StringUtil.h +0 -30
  900. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +0 -166
  901. data/ext/ice/cpp/src/Ice/SysLoggerI.h +0 -37
  902. data/ext/ice/cpp/src/Ice/SystemdJournalI.cpp +0 -66
  903. data/ext/ice/cpp/src/Ice/SystemdJournalI.h +0 -39
  904. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +0 -234
  905. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +0 -61
  906. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +0 -127
  907. data/ext/ice/cpp/src/Ice/TcpConnector.h +0 -45
  908. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +0 -385
  909. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +0 -90
  910. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +0 -135
  911. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +0 -58
  912. data/ext/ice/cpp/src/Ice/Thread.cpp +0 -569
  913. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +0 -1292
  914. data/ext/ice/cpp/src/Ice/ThreadPool.h +0 -393
  915. data/ext/ice/cpp/src/Ice/Timer.cpp +0 -263
  916. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +0 -38
  917. data/ext/ice/cpp/src/Ice/TraceLevels.h +0 -45
  918. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +0 -21
  919. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +0 -478
  920. data/ext/ice/cpp/src/Ice/TraceUtil.h +0 -30
  921. data/ext/ice/cpp/src/Ice/Transceiver.cpp +0 -18
  922. data/ext/ice/cpp/src/Ice/Transceiver.h +0 -49
  923. data/ext/ice/cpp/src/Ice/TransceiverF.h +0 -33
  924. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +0 -131
  925. data/ext/ice/cpp/src/Ice/UdpConnector.h +0 -45
  926. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +0 -515
  927. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +0 -95
  928. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +0 -806
  929. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +0 -96
  930. data/ext/ice/cpp/src/Ice/Value.cpp +0 -76
  931. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +0 -83
  932. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
  933. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
  934. data/ext/ice/cpp/src/Ice/Version.cpp +0 -57
  935. data/ext/ice/cpp/src/Ice/VirtualShared.h +0 -38
  936. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +0 -92
  937. data/ext/ice/cpp/src/Ice/WSAcceptor.h +0 -52
  938. data/ext/ice/cpp/src/Ice/WSConnector.cpp +0 -102
  939. data/ext/ice/cpp/src/Ice/WSConnector.h +0 -43
  940. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +0 -508
  941. data/ext/ice/cpp/src/Ice/WSEndpoint.h +0 -93
  942. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +0 -1704
  943. data/ext/ice/cpp/src/Ice/WSTransceiver.h +0 -141
  944. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +0 -915
  945. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +0 -1889
  946. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +0 -265
  947. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +0 -109
  948. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +0 -608
  949. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +0 -228
  950. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +0 -176
  951. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +0 -36
  952. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +0 -730
  953. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
  954. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +0 -47
  955. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +0 -1048
  956. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
  957. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
  958. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
  959. data/ext/ice/cpp/src/IceSSL/CertificateI.h +0 -64
  960. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +0 -75
  961. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +0 -61
  962. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
  963. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
  964. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
  965. data/ext/ice/cpp/src/IceSSL/EndpointI.h +0 -100
  966. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +0 -75
  967. data/ext/ice/cpp/src/IceSSL/Instance.cpp +0 -28
  968. data/ext/ice/cpp/src/IceSSL/Instance.h +0 -37
  969. data/ext/ice/cpp/src/IceSSL/InstanceF.h +0 -33
  970. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
  971. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
  972. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
  973. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
  974. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
  975. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
  976. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
  977. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
  978. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
  979. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
  980. data/ext/ice/cpp/src/IceSSL/PluginI.h +0 -67
  981. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +0 -490
  982. data/ext/ice/cpp/src/IceSSL/RFC2253.h +0 -62
  983. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
  984. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
  985. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
  986. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
  987. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
  988. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
  989. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
  990. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
  991. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
  992. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
  993. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
  994. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
  995. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
  996. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
  997. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
  998. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
  999. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
  1000. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
  1001. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
  1002. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
  1003. data/ext/ice/cpp/src/IceSSL/TrustManager.h +0 -46
  1004. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
  1005. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +0 -266
  1006. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +0 -338
  1007. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +0 -41
  1008. data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +0 -26
  1009. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +0 -89
  1010. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +0 -383
  1011. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +0 -71
  1012. data/ext/ice/cpp/src/IceSSL/Util.cpp +0 -192
  1013. data/ext/ice/cpp/src/IceSSL/Util.h +0 -99
  1014. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +0 -157
  1015. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
  1016. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
  1017. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
  1018. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +0 -471
  1019. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
  1020. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
  1021. data/ext/ice/cpp/src/IceUtil/Options.cpp +0 -1051
  1022. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
  1023. data/ext/ice/cpp/src/IceUtil/Random.cpp +0 -180
  1024. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +0 -238
  1025. data/ext/ice/cpp/src/IceUtil/Shared.cpp +0 -71
  1026. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
  1027. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1135
  1028. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
  1029. data/ext/ice/cpp/src/IceUtil/Time.cpp +0 -307
  1030. data/ext/ice/cpp/src/IceUtil/UUID.cpp +0 -165
  1031. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
  1032. data/ext/ice/cpp/src/IceUtil/Unicode.h +0 -43
  1033. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
  1034. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
  1035. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
  1036. data/ext/ice/cpp/src/Slice/Checksum.cpp +0 -447
  1037. data/ext/ice/cpp/src/Slice/Checksum.h +0 -21
  1038. data/ext/ice/cpp/src/Slice/FileTracker.cpp +0 -146
  1039. data/ext/ice/cpp/src/Slice/FileTracker.h +0 -66
  1040. data/ext/ice/cpp/src/Slice/Grammar.cpp +0 -4793
  1041. data/ext/ice/cpp/src/Slice/Grammar.h +0 -118
  1042. data/ext/ice/cpp/src/Slice/GrammarUtil.h +0 -228
  1043. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +0 -5176
  1044. data/ext/ice/cpp/src/Slice/JavaUtil.h +0 -407
  1045. data/ext/ice/cpp/src/Slice/MD5.cpp +0 -52
  1046. data/ext/ice/cpp/src/Slice/MD5.h +0 -39
  1047. data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -393
  1048. data/ext/ice/cpp/src/Slice/MD5I.h +0 -91
  1049. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
  1050. data/ext/ice/cpp/src/Slice/PHPUtil.h +0 -36
  1051. data/ext/ice/cpp/src/Slice/Parser.cpp +0 -7058
  1052. data/ext/ice/cpp/src/Slice/Parser.h +0 -1174
  1053. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +0 -797
  1054. data/ext/ice/cpp/src/Slice/Preprocessor.h +0 -60
  1055. data/ext/ice/cpp/src/Slice/Python.cpp +0 -830
  1056. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
  1057. data/ext/ice/cpp/src/Slice/PythonUtil.h +0 -70
  1058. data/ext/ice/cpp/src/Slice/Ruby.cpp +0 -350
  1059. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
  1060. data/ext/ice/cpp/src/Slice/RubyUtil.h +0 -49
  1061. data/ext/ice/cpp/src/Slice/Scanner.cpp +0 -2807
  1062. data/ext/ice/cpp/src/Slice/SliceUtil.cpp +0 -424
  1063. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +0 -456
  1064. data/ext/ice/cpp/src/Slice/Util.h +0 -50
  1065. data/ext/ice/mcpp/CMakeLists.txt +0 -80
  1066. data/ext/ice/mcpp/LICENSE +0 -29
  1067. data/ext/ice/mcpp/Makefile +0 -63
  1068. data/ext/ice/mcpp/README.md +0 -32
  1069. data/ext/ice/mcpp/internal.H +0 -530
  1070. data/ext/ice/mcpp/mcpp.gyp +0 -88
  1071. data/ext/ice/mcpp/system.c +0 -2737
  1072. data/lib/Glacier2/Metrics.rb +0 -56
  1073. data/lib/Glacier2/PermissionsVerifier.rb +0 -93
  1074. data/lib/Glacier2/PermissionsVerifierF.rb +0 -30
  1075. data/lib/Glacier2/Router.rb +0 -95
  1076. data/lib/Glacier2/RouterF.rb +0 -25
  1077. data/lib/Glacier2/SSLInfo.rb +0 -72
  1078. data/lib/Glacier2/Session.rb +0 -247
  1079. data/lib/Glacier2.rb +0 -7
  1080. data/lib/Ice/BuiltinSequences.rb +0 -60
  1081. data/lib/Ice/Communicator.rb +0 -87
  1082. data/lib/Ice/CommunicatorF.rb +0 -24
  1083. data/lib/Ice/Connection.rb +0 -413
  1084. data/lib/Ice/ConnectionF.rb +0 -32
  1085. data/lib/Ice/Current.rb +0 -141
  1086. data/lib/Ice/Endpoint.rb +0 -187
  1087. data/lib/Ice/EndpointF.rb +0 -48
  1088. data/lib/Ice/EndpointTypes.rb +0 -69
  1089. data/lib/Ice/FacetMap.rb +0 -24
  1090. data/lib/Ice/Identity.rb +0 -63
  1091. data/lib/Ice/ImplicitContext.rb +0 -26
  1092. data/lib/Ice/ImplicitContextF.rb +0 -24
  1093. data/lib/Ice/Instrumentation.rb +0 -169
  1094. data/lib/Ice/InstrumentationF.rb +0 -31
  1095. data/lib/Ice/LocalException.rb +0 -1031
  1096. data/lib/Ice/Locator.rb +0 -196
  1097. data/lib/Ice/LocatorF.rb +0 -30
  1098. data/lib/Ice/Logger.rb +0 -24
  1099. data/lib/Ice/LoggerF.rb +0 -24
  1100. data/lib/Ice/Metrics.rb +0 -337
  1101. data/lib/Ice/ObjectAdapter.rb +0 -29
  1102. data/lib/Ice/ObjectAdapterF.rb +0 -24
  1103. data/lib/Ice/ObjectFactory.rb +0 -24
  1104. data/lib/Ice/Plugin.rb +0 -30
  1105. data/lib/Ice/PluginF.rb +0 -28
  1106. data/lib/Ice/Process.rb +0 -53
  1107. data/lib/Ice/ProcessF.rb +0 -25
  1108. data/lib/Ice/Properties.rb +0 -25
  1109. data/lib/Ice/PropertiesAdmin.rb +0 -63
  1110. data/lib/Ice/PropertiesF.rb +0 -29
  1111. data/lib/Ice/RemoteLogger.rb +0 -207
  1112. data/lib/Ice/Router.rb +0 -87
  1113. data/lib/Ice/RouterF.rb +0 -25
  1114. data/lib/Ice/ServantLocator.rb +0 -26
  1115. data/lib/Ice/ServantLocatorF.rb +0 -24
  1116. data/lib/Ice/SliceChecksumDict.rb +0 -24
  1117. data/lib/Ice/ValueFactory.rb +0 -28
  1118. data/lib/Ice/Version.rb +0 -90
  1119. data/lib/Ice.rb +0 -673
  1120. data/lib/IceBox/IceBox.rb +0 -164
  1121. data/lib/IceBox.rb +0 -5
  1122. data/lib/IceGrid/Admin.rb +0 -1196
  1123. data/lib/IceGrid/Descriptor.rb +0 -1034
  1124. data/lib/IceGrid/Exception.rb +0 -376
  1125. data/lib/IceGrid/FileParser.rb +0 -65
  1126. data/lib/IceGrid/PluginFacade.rb +0 -35
  1127. data/lib/IceGrid/Registry.rb +0 -209
  1128. data/lib/IceGrid/Session.rb +0 -71
  1129. data/lib/IceGrid/UserAccountMapper.rb +0 -61
  1130. data/lib/IceGrid.rb +0 -9
  1131. data/lib/IcePatch2/FileInfo.rb +0 -115
  1132. data/lib/IcePatch2/FileServer.rb +0 -123
  1133. data/lib/IcePatch2.rb +0 -5
  1134. data/lib/IceStorm/IceStorm.rb +0 -332
  1135. data/lib/IceStorm/Metrics.rb +0 -73
  1136. data/lib/IceStorm.rb +0 -6
  1137. data/slice/Glacier2/Metrics.ice +0 -88
  1138. data/slice/Glacier2/PermissionsVerifier.ice +0 -111
  1139. data/slice/Glacier2/PermissionsVerifierF.ice +0 -30
  1140. data/slice/Glacier2/Router.ice +0 -186
  1141. data/slice/Glacier2/RouterF.ice +0 -29
  1142. data/slice/Glacier2/SSLInfo.ice +0 -59
  1143. data/slice/Glacier2/Session.ice +0 -274
  1144. data/slice/Ice/BuiltinSequences.ice +0 -59
  1145. data/slice/Ice/Communicator.ice +0 -676
  1146. data/slice/Ice/CommunicatorF.ice +0 -31
  1147. data/slice/Ice/Connection.ice +0 -516
  1148. data/slice/Ice/ConnectionF.ice +0 -33
  1149. data/slice/Ice/Current.ice +0 -170
  1150. data/slice/Ice/Endpoint.ice +0 -291
  1151. data/slice/Ice/EndpointF.ice +0 -43
  1152. data/slice/Ice/EndpointTypes.ice +0 -48
  1153. data/slice/Ice/FacetMap.ice +0 -36
  1154. data/slice/Ice/Identity.ice +0 -75
  1155. data/slice/Ice/ImplicitContext.ice +0 -119
  1156. data/slice/Ice/ImplicitContextF.ice +0 -30
  1157. data/slice/Ice/Instrumentation.ice +0 -509
  1158. data/slice/Ice/InstrumentationF.ice +0 -38
  1159. data/slice/Ice/LocalException.ice +0 -1040
  1160. data/slice/Ice/Locator.ice +0 -239
  1161. data/slice/Ice/LocatorF.ice +0 -32
  1162. data/slice/Ice/Logger.ice +0 -99
  1163. data/slice/Ice/LoggerF.ice +0 -31
  1164. data/slice/Ice/Metrics.ice +0 -436
  1165. data/slice/Ice/ObjectAdapter.ice +0 -710
  1166. data/slice/Ice/ObjectAdapterF.ice +0 -31
  1167. data/slice/Ice/ObjectFactory.ice +0 -71
  1168. data/slice/Ice/Plugin.ice +0 -131
  1169. data/slice/Ice/PluginF.ice +0 -36
  1170. data/slice/Ice/Process.ice +0 -64
  1171. data/slice/Ice/ProcessF.ice +0 -31
  1172. data/slice/Ice/Properties.ice +0 -244
  1173. data/slice/Ice/PropertiesAdmin.ice +0 -87
  1174. data/slice/Ice/PropertiesF.ice +0 -32
  1175. data/slice/Ice/RemoteLogger.ice +0 -226
  1176. data/slice/Ice/Router.ice +0 -103
  1177. data/slice/Ice/RouterF.ice +0 -31
  1178. data/slice/Ice/ServantLocator.ice +0 -136
  1179. data/slice/Ice/ServantLocatorF.ice +0 -31
  1180. data/slice/Ice/SliceChecksumDict.ice +0 -36
  1181. data/slice/Ice/ValueFactory.ice +0 -133
  1182. data/slice/Ice/Version.ice +0 -51
  1183. data/slice/IceBT/ConnectionInfo.ice +0 -59
  1184. data/slice/IceBT/EndpointInfo.ice +0 -57
  1185. data/slice/IceBT/Types.ice +0 -45
  1186. data/slice/IceBox/IceBox.ice +0 -216
  1187. data/slice/IceDiscovery/IceDiscovery.ice +0 -98
  1188. data/slice/IceGrid/Admin.ice +0 -1957
  1189. data/slice/IceGrid/Descriptor.ice +0 -1094
  1190. data/slice/IceGrid/Exception.ice +0 -396
  1191. data/slice/IceGrid/FileParser.ice +0 -72
  1192. data/slice/IceGrid/PluginFacade.ice +0 -329
  1193. data/slice/IceGrid/Registry.ice +0 -269
  1194. data/slice/IceGrid/Session.ice +0 -128
  1195. data/slice/IceGrid/UserAccountMapper.ice +0 -69
  1196. data/slice/IceIAP/ConnectionInfo.ice +0 -74
  1197. data/slice/IceIAP/EndpointInfo.ice +0 -68
  1198. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +0 -83
  1199. data/slice/IcePatch2/FileInfo.ice +0 -85
  1200. data/slice/IcePatch2/FileServer.ice +0 -191
  1201. data/slice/IceSSL/ConnectionInfo.ice +0 -54
  1202. data/slice/IceSSL/ConnectionInfoF.ice +0 -31
  1203. data/slice/IceSSL/EndpointInfo.ice +0 -45
  1204. data/slice/IceStorm/IceStorm.ice +0 -414
  1205. data/slice/IceStorm/Metrics.ice +0 -83
  1206. /data/{ext → dist}/ice/mcpp/config.h +0 -0
  1207. /data/{ext → dist}/ice/mcpp/configed.H +0 -0
  1208. /data/{ext → dist}/ice/mcpp/directive.c +0 -0
  1209. /data/{ext → dist}/ice/mcpp/eval.c +0 -0
  1210. /data/{ext → dist}/ice/mcpp/expand.c +0 -0
  1211. /data/{ext → dist}/ice/mcpp/mbchar.c +0 -0
  1212. /data/{ext → dist}/ice/mcpp/mcpp_lib.h +0 -0
  1213. /data/{ext/ice/mcpp/main.c → dist/ice/mcpp/mcpp_main.c} +0 -0
  1214. /data/{ext → dist}/ice/mcpp/mcpp_out.h +0 -0
  1215. /data/{ext → dist}/ice/mcpp/support.c +0 -0
  1216. /data/{ext → dist}/ice/mcpp/system.H +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
+ }