zeroc-ice 3.7.10 → 3.7.11

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 (936) hide show
  1. checksums.yaml +4 -4
  2. data/dist/IceRuby/Connection.cpp +536 -0
  3. data/dist/IceRuby/Endpoint.cpp +344 -0
  4. data/dist/IceRuby/ImplicitContext.cpp +148 -0
  5. data/dist/IceRuby/Logger.cpp +151 -0
  6. data/dist/IceRuby/Operation.cpp +665 -0
  7. data/dist/IceRuby/Properties.cpp +369 -0
  8. data/dist/IceRuby/Types.cpp +3336 -0
  9. data/dist/IceRuby/Types.h +604 -0
  10. data/dist/IceRuby/ValueFactoryManager.cpp +445 -0
  11. data/dist/ice/cpp/include/Ice/ExceptionHelpers.h +74 -0
  12. data/dist/ice/cpp/include/Ice/Initialize.h +957 -0
  13. data/dist/ice/cpp/include/Ice/MetricsObserverI.h +669 -0
  14. data/dist/ice/cpp/include/Ice/OutgoingAsync.h +868 -0
  15. data/dist/ice/cpp/include/Ice/Proxy.h +5171 -0
  16. data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +90 -0
  17. data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +1889 -0
  18. data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +1197 -0
  19. data/dist/ice/cpp/include/IceUtil/Cond.h +317 -0
  20. data/dist/ice/cpp/include/IceUtil/Config.h +392 -0
  21. data/dist/ice/cpp/include/IceUtil/CtrlCHandler.h +96 -0
  22. data/dist/ice/cpp/include/IceUtil/InputUtil.h +42 -0
  23. data/dist/ice/cpp/include/IceUtil/ResourceConfig.h +37 -0
  24. data/dist/ice/cpp/include/IceUtil/Timer.h +153 -0
  25. data/dist/ice/cpp/include/generated/Glacier2/Metrics.h +475 -0
  26. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifier.h +1430 -0
  27. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifierF.h +147 -0
  28. data/dist/ice/cpp/include/generated/Glacier2/Router.h +3260 -0
  29. data/dist/ice/cpp/include/generated/Glacier2/RouterF.h +125 -0
  30. data/dist/ice/cpp/include/generated/Glacier2/SSLInfo.h +223 -0
  31. data/dist/ice/cpp/include/generated/Glacier2/Session.h +5894 -0
  32. data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +170 -0
  33. data/dist/ice/cpp/include/generated/Ice/Communicator.h +1162 -0
  34. data/dist/ice/cpp/include/generated/Ice/CommunicatorF.h +101 -0
  35. data/dist/ice/cpp/include/generated/Ice/Connection.h +1703 -0
  36. data/dist/ice/cpp/include/generated/Ice/ConnectionF.h +119 -0
  37. data/dist/ice/cpp/include/generated/Ice/Current.h +322 -0
  38. data/dist/ice/cpp/include/generated/Ice/Endpoint.h +979 -0
  39. data/dist/ice/cpp/include/generated/Ice/EndpointF.h +166 -0
  40. data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +118 -0
  41. data/dist/ice/cpp/include/generated/Ice/FacetMap.h +80 -0
  42. data/dist/ice/cpp/include/generated/Ice/Identity.h +264 -0
  43. data/dist/ice/cpp/include/generated/Ice/ImplicitContext.h +284 -0
  44. data/dist/ice/cpp/include/generated/Ice/ImplicitContextF.h +101 -0
  45. data/dist/ice/cpp/include/generated/Ice/Instrumentation.h +1203 -0
  46. data/dist/ice/cpp/include/generated/Ice/InstrumentationF.h +128 -0
  47. data/dist/ice/cpp/include/generated/Ice/LocalException.h +7437 -0
  48. data/dist/ice/cpp/include/generated/Ice/Locator.h +3898 -0
  49. data/dist/ice/cpp/include/generated/Ice/LocatorF.h +147 -0
  50. data/dist/ice/cpp/include/generated/Ice/Logger.h +237 -0
  51. data/dist/ice/cpp/include/generated/Ice/LoggerF.h +101 -0
  52. data/dist/ice/cpp/include/generated/Ice/Metrics.h +4769 -0
  53. data/dist/ice/cpp/include/generated/Ice/ObjectAdapter.h +1181 -0
  54. data/dist/ice/cpp/include/generated/Ice/ObjectAdapterF.h +101 -0
  55. data/dist/ice/cpp/include/generated/Ice/ObjectFactory.h +203 -0
  56. data/dist/ice/cpp/include/generated/Ice/Plugin.h +318 -0
  57. data/dist/ice/cpp/include/generated/Ice/PluginF.h +110 -0
  58. data/dist/ice/cpp/include/generated/Ice/Process.h +977 -0
  59. data/dist/ice/cpp/include/generated/Ice/ProcessF.h +125 -0
  60. data/dist/ice/cpp/include/generated/Ice/Properties.h +452 -0
  61. data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +1366 -0
  62. data/dist/ice/cpp/include/generated/Ice/PropertiesF.h +134 -0
  63. data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +2707 -0
  64. data/dist/ice/cpp/include/generated/Ice/Router.h +1850 -0
  65. data/dist/ice/cpp/include/generated/Ice/RouterF.h +125 -0
  66. data/dist/ice/cpp/include/generated/Ice/ServantLocator.h +305 -0
  67. data/dist/ice/cpp/include/generated/Ice/ServantLocatorF.h +101 -0
  68. data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +84 -0
  69. data/dist/ice/cpp/include/generated/Ice/ValueFactory.h +330 -0
  70. data/dist/ice/cpp/include/generated/Ice/Version.h +357 -0
  71. data/dist/ice/cpp/include/generated/IceBox/IceBox.h +3269 -0
  72. data/dist/ice/cpp/include/generated/IceGrid/Admin.h +33773 -0
  73. data/dist/ice/cpp/include/generated/IceGrid/Descriptor.h +5254 -0
  74. data/dist/ice/cpp/include/generated/IceGrid/Exception.h +2834 -0
  75. data/dist/ice/cpp/include/generated/IceGrid/FileParser.h +824 -0
  76. data/dist/ice/cpp/include/generated/IceGrid/PluginFacade.h +635 -0
  77. data/dist/ice/cpp/include/generated/IceGrid/Registry.h +5089 -0
  78. data/dist/ice/cpp/include/generated/IceGrid/Session.h +2240 -0
  79. data/dist/ice/cpp/include/generated/IceGrid/UserAccountMapper.h +800 -0
  80. data/dist/ice/cpp/include/generated/IcePatch2/FileInfo.h +325 -0
  81. data/dist/ice/cpp/include/generated/IcePatch2/FileServer.h +2891 -0
  82. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +228 -0
  83. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +101 -0
  84. data/dist/ice/cpp/include/generated/IceSSL/EndpointInfo.h +186 -0
  85. data/dist/ice/cpp/include/generated/IceStorm/IceStorm.h +6627 -0
  86. data/dist/ice/cpp/include/generated/IceStorm/Metrics.h +665 -0
  87. data/dist/ice/cpp/src/Ice/Application.cpp +661 -0
  88. data/dist/ice/cpp/src/Ice/CountDownLatch.cpp +171 -0
  89. data/dist/ice/cpp/src/Ice/DLLMain.cpp +50 -0
  90. data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +189 -0
  91. data/dist/ice/cpp/src/Ice/EndpointI.cpp +98 -0
  92. data/dist/ice/cpp/src/Ice/InputStream.cpp +2741 -0
  93. data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +694 -0
  94. data/dist/ice/cpp/src/Ice/Network.cpp +2249 -0
  95. data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +1530 -0
  96. data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +1322 -0
  97. data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +503 -0
  98. data/dist/ice/cpp/src/Ice/PropertyNames.cpp +1428 -0
  99. data/dist/ice/cpp/src/Ice/PropertyNames.h +78 -0
  100. data/dist/ice/cpp/src/Ice/Proxy.cpp +1604 -0
  101. data/dist/ice/cpp/src/Ice/Selector.cpp +1535 -0
  102. data/dist/ice/cpp/src/Ice/Service.cpp +1883 -0
  103. data/dist/ice/cpp/src/Ice/ThreadPool.cpp +1292 -0
  104. data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +49 -0
  105. data/dist/ice/cpp/src/Ice/generated/Communicator.cpp +79 -0
  106. data/dist/ice/cpp/src/Ice/generated/CommunicatorF.cpp +61 -0
  107. data/dist/ice/cpp/src/Ice/generated/Connection.cpp +155 -0
  108. data/dist/ice/cpp/src/Ice/generated/ConnectionF.cpp +61 -0
  109. data/dist/ice/cpp/src/Ice/generated/Current.cpp +62 -0
  110. data/dist/ice/cpp/src/Ice/generated/Endpoint.cpp +147 -0
  111. data/dist/ice/cpp/src/Ice/generated/EndpointF.cpp +61 -0
  112. data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +51 -0
  113. data/dist/ice/cpp/src/Ice/generated/FacetMap.cpp +49 -0
  114. data/dist/ice/cpp/src/Ice/generated/Identity.cpp +57 -0
  115. data/dist/ice/cpp/src/Ice/generated/ImplicitContext.cpp +75 -0
  116. data/dist/ice/cpp/src/Ice/generated/ImplicitContextF.cpp +61 -0
  117. data/dist/ice/cpp/src/Ice/generated/Instrumentation.cpp +188 -0
  118. data/dist/ice/cpp/src/Ice/generated/InstrumentationF.cpp +66 -0
  119. data/dist/ice/cpp/src/Ice/generated/LocalException.cpp +3262 -0
  120. data/dist/ice/cpp/src/Ice/generated/Locator.cpp +2042 -0
  121. data/dist/ice/cpp/src/Ice/generated/LocatorF.cpp +63 -0
  122. data/dist/ice/cpp/src/Ice/generated/Logger.cpp +73 -0
  123. data/dist/ice/cpp/src/Ice/generated/LoggerF.cpp +61 -0
  124. data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +2352 -0
  125. data/dist/ice/cpp/src/Ice/generated/ObjectAdapter.cpp +79 -0
  126. data/dist/ice/cpp/src/Ice/generated/ObjectAdapterF.cpp +61 -0
  127. data/dist/ice/cpp/src/Ice/generated/ObjectFactory.cpp +75 -0
  128. data/dist/ice/cpp/src/Ice/generated/Plugin.cpp +87 -0
  129. data/dist/ice/cpp/src/Ice/generated/PluginF.cpp +61 -0
  130. data/dist/ice/cpp/src/Ice/generated/Process.cpp +471 -0
  131. data/dist/ice/cpp/src/Ice/generated/ProcessF.cpp +63 -0
  132. data/dist/ice/cpp/src/Ice/generated/Properties.cpp +78 -0
  133. data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +603 -0
  134. data/dist/ice/cpp/src/Ice/generated/PropertiesF.cpp +63 -0
  135. data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +1171 -0
  136. data/dist/ice/cpp/src/Ice/generated/Router.cpp +977 -0
  137. data/dist/ice/cpp/src/Ice/generated/RouterF.cpp +63 -0
  138. data/dist/ice/cpp/src/Ice/generated/ServantLocator.cpp +75 -0
  139. data/dist/ice/cpp/src/Ice/generated/ServantLocatorF.cpp +61 -0
  140. data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +49 -0
  141. data/dist/ice/cpp/src/Ice/generated/ValueFactory.cpp +83 -0
  142. data/dist/ice/cpp/src/Ice/generated/Version.cpp +57 -0
  143. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.cpp +154 -0
  144. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.h +49 -0
  145. data/dist/ice/cpp/src/Ice/ios/StreamConnector.cpp +146 -0
  146. data/dist/ice/cpp/src/Ice/ios/StreamConnector.h +52 -0
  147. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.cpp +477 -0
  148. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.h +156 -0
  149. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.cpp +570 -0
  150. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.h +93 -0
  151. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery/IceDiscovery.h +1889 -0
  152. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery.cpp +915 -0
  153. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery/IceLocatorDiscovery.h +1197 -0
  154. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery.cpp +730 -0
  155. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +1092 -0
  156. data/dist/ice/cpp/src/IceSSL/PluginI.cpp +246 -0
  157. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +719 -0
  158. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +868 -0
  159. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfo.cpp +75 -0
  160. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfoF.cpp +61 -0
  161. data/dist/ice/cpp/src/IceSSL/generated/EndpointInfo.cpp +75 -0
  162. data/dist/ice/cpp/src/IceUtil/StringConverter.cpp +690 -0
  163. data/dist/ice/cpp/src/Slice/JavaUtil.cpp +5183 -0
  164. data/dist/ice/cpp/src/slice2rb/Main.cpp +35 -0
  165. data/dist/ice/mcpp/directive.c +1407 -0
  166. data/dist/ice/mcpp/internal.H +530 -0
  167. data/dist/ice/mcpp/mcpp_main.c +792 -0
  168. data/dist/ice/mcpp/support.c +1985 -0
  169. data/dist/ice/mcpp/system.c +2741 -0
  170. data/dist/ice/slice/Ice/Connection.ice +516 -0
  171. data/dist/ice/slice/Ice/Locator.ice +239 -0
  172. data/dist/ice/slice/Ice/Metrics.ice +436 -0
  173. data/dist/ice/slice/Ice/ObjectAdapter.ice +710 -0
  174. data/dist/ice/slice/Ice/Router.ice +103 -0
  175. data/dist/ice/slice/IceGrid/PluginFacade.ice +329 -0
  176. data/dist/ice/slice/IceStorm/IceStorm.ice +414 -0
  177. data/dist/lib/Glacier2/Metrics.rb +56 -0
  178. data/dist/lib/Glacier2/PermissionsVerifier.rb +93 -0
  179. data/dist/lib/Glacier2/PermissionsVerifierF.rb +30 -0
  180. data/dist/lib/Glacier2/Router.rb +95 -0
  181. data/dist/lib/Glacier2/RouterF.rb +25 -0
  182. data/dist/lib/Glacier2/SSLInfo.rb +72 -0
  183. data/dist/lib/Glacier2/Session.rb +247 -0
  184. data/dist/lib/Ice/BuiltinSequences.rb +60 -0
  185. data/dist/lib/Ice/Communicator.rb +87 -0
  186. data/dist/lib/Ice/CommunicatorF.rb +24 -0
  187. data/dist/lib/Ice/Connection.rb +413 -0
  188. data/dist/lib/Ice/ConnectionF.rb +32 -0
  189. data/dist/lib/Ice/Current.rb +141 -0
  190. data/dist/lib/Ice/Endpoint.rb +187 -0
  191. data/dist/lib/Ice/EndpointF.rb +48 -0
  192. data/dist/lib/Ice/EndpointTypes.rb +69 -0
  193. data/dist/lib/Ice/FacetMap.rb +24 -0
  194. data/dist/lib/Ice/Identity.rb +63 -0
  195. data/dist/lib/Ice/ImplicitContext.rb +26 -0
  196. data/dist/lib/Ice/ImplicitContextF.rb +24 -0
  197. data/dist/lib/Ice/Instrumentation.rb +169 -0
  198. data/dist/lib/Ice/InstrumentationF.rb +31 -0
  199. data/dist/lib/Ice/LocalException.rb +1031 -0
  200. data/dist/lib/Ice/Locator.rb +196 -0
  201. data/dist/lib/Ice/LocatorF.rb +30 -0
  202. data/dist/lib/Ice/Logger.rb +24 -0
  203. data/dist/lib/Ice/LoggerF.rb +24 -0
  204. data/dist/lib/Ice/Metrics.rb +337 -0
  205. data/dist/lib/Ice/ObjectAdapter.rb +29 -0
  206. data/dist/lib/Ice/ObjectAdapterF.rb +24 -0
  207. data/dist/lib/Ice/ObjectFactory.rb +24 -0
  208. data/dist/lib/Ice/Plugin.rb +30 -0
  209. data/dist/lib/Ice/PluginF.rb +28 -0
  210. data/dist/lib/Ice/Process.rb +53 -0
  211. data/dist/lib/Ice/ProcessF.rb +25 -0
  212. data/dist/lib/Ice/Properties.rb +25 -0
  213. data/dist/lib/Ice/PropertiesAdmin.rb +63 -0
  214. data/dist/lib/Ice/PropertiesF.rb +29 -0
  215. data/dist/lib/Ice/RemoteLogger.rb +207 -0
  216. data/dist/lib/Ice/Router.rb +87 -0
  217. data/dist/lib/Ice/RouterF.rb +25 -0
  218. data/dist/lib/Ice/ServantLocator.rb +26 -0
  219. data/dist/lib/Ice/ServantLocatorF.rb +24 -0
  220. data/dist/lib/Ice/SliceChecksumDict.rb +24 -0
  221. data/dist/lib/Ice/ValueFactory.rb +28 -0
  222. data/dist/lib/Ice/Version.rb +90 -0
  223. data/dist/lib/IceBox/IceBox.rb +164 -0
  224. data/dist/lib/IceGrid/Admin.rb +1196 -0
  225. data/dist/lib/IceGrid/Descriptor.rb +1034 -0
  226. data/dist/lib/IceGrid/Exception.rb +376 -0
  227. data/dist/lib/IceGrid/FileParser.rb +65 -0
  228. data/dist/lib/IceGrid/PluginFacade.rb +35 -0
  229. data/dist/lib/IceGrid/Registry.rb +209 -0
  230. data/dist/lib/IceGrid/Session.rb +71 -0
  231. data/dist/lib/IceGrid/UserAccountMapper.rb +61 -0
  232. data/dist/lib/IcePatch2/FileInfo.rb +115 -0
  233. data/dist/lib/IcePatch2/FileServer.rb +123 -0
  234. data/dist/lib/IceStorm/IceStorm.rb +332 -0
  235. data/dist/lib/IceStorm/Metrics.rb +73 -0
  236. data/extconf.rb +91 -0
  237. data/ice.gemspec +21 -16
  238. metadata +715 -711
  239. data/ICE_LICENSE +0 -48
  240. data/LICENSE +0 -340
  241. data/MCPP_LICENSE +0 -29
  242. data/ext/Connection.cpp +0 -532
  243. data/ext/Endpoint.cpp +0 -340
  244. data/ext/ImplicitContext.cpp +0 -144
  245. data/ext/Logger.cpp +0 -147
  246. data/ext/Operation.cpp +0 -661
  247. data/ext/Properties.cpp +0 -365
  248. data/ext/Types.cpp +0 -3325
  249. data/ext/Types.h +0 -595
  250. data/ext/ValueFactoryManager.cpp +0 -441
  251. data/ext/extconf.rb +0 -97
  252. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
  253. data/ext/ice/cpp/include/Ice/Initialize.h +0 -957
  254. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
  255. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +0 -856
  256. data/ext/ice/cpp/include/Ice/Proxy.h +0 -5154
  257. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +0 -88
  258. data/ext/ice/cpp/include/IceSSL/UWP.h +0 -62
  259. data/ext/ice/cpp/include/IceUtil/Cond.h +0 -317
  260. data/ext/ice/cpp/include/IceUtil/Config.h +0 -392
  261. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -92
  262. data/ext/ice/cpp/include/IceUtil/InputUtil.h +0 -42
  263. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
  264. data/ext/ice/cpp/include/IceUtil/Timer.h +0 -144
  265. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +0 -170
  266. data/ext/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
  267. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
  268. data/ext/ice/cpp/include/generated/Ice/Connection.h +0 -1703
  269. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
  270. data/ext/ice/cpp/include/generated/Ice/Current.h +0 -322
  271. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
  272. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
  273. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +0 -118
  274. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
  275. data/ext/ice/cpp/include/generated/Ice/Identity.h +0 -264
  276. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
  277. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
  278. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
  279. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
  280. data/ext/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
  281. data/ext/ice/cpp/include/generated/Ice/Locator.h +0 -3898
  282. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
  283. data/ext/ice/cpp/include/generated/Ice/Logger.h +0 -237
  284. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
  285. data/ext/ice/cpp/include/generated/Ice/Metrics.h +0 -4769
  286. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
  287. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
  288. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
  289. data/ext/ice/cpp/include/generated/Ice/Plugin.h +0 -318
  290. data/ext/ice/cpp/include/generated/Ice/PluginF.h +0 -110
  291. data/ext/ice/cpp/include/generated/Ice/Process.h +0 -977
  292. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
  293. data/ext/ice/cpp/include/generated/Ice/Properties.h +0 -452
  294. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +0 -1366
  295. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
  296. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +0 -2707
  297. data/ext/ice/cpp/include/generated/Ice/Router.h +0 -1850
  298. data/ext/ice/cpp/include/generated/Ice/RouterF.h +0 -125
  299. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
  300. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
  301. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +0 -84
  302. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
  303. data/ext/ice/cpp/include/generated/Ice/Version.h +0 -357
  304. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
  305. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
  306. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
  307. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +0 -49
  308. data/ext/ice/cpp/src/Ice/Communicator.cpp +0 -79
  309. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +0 -61
  310. data/ext/ice/cpp/src/Ice/Connection.cpp +0 -155
  311. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +0 -61
  312. data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
  313. data/ext/ice/cpp/src/Ice/Current.cpp +0 -62
  314. data/ext/ice/cpp/src/Ice/Endpoint.cpp +0 -147
  315. data/ext/ice/cpp/src/Ice/EndpointF.cpp +0 -61
  316. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +0 -189
  317. data/ext/ice/cpp/src/Ice/EndpointI.cpp +0 -98
  318. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +0 -51
  319. data/ext/ice/cpp/src/Ice/FacetMap.cpp +0 -49
  320. data/ext/ice/cpp/src/Ice/Identity.cpp +0 -57
  321. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +0 -75
  322. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +0 -61
  323. data/ext/ice/cpp/src/Ice/InputStream.cpp +0 -2741
  324. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +0 -188
  325. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +0 -66
  326. data/ext/ice/cpp/src/Ice/LocalException.cpp +0 -3262
  327. data/ext/ice/cpp/src/Ice/Locator.cpp +0 -2042
  328. data/ext/ice/cpp/src/Ice/LocatorF.cpp +0 -63
  329. data/ext/ice/cpp/src/Ice/Logger.cpp +0 -73
  330. data/ext/ice/cpp/src/Ice/LoggerF.cpp +0 -61
  331. data/ext/ice/cpp/src/Ice/Metrics.cpp +0 -2352
  332. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +0 -694
  333. data/ext/ice/cpp/src/Ice/Network.cpp +0 -2249
  334. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +0 -79
  335. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +0 -61
  336. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +0 -1530
  337. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +0 -75
  338. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +0 -1322
  339. data/ext/ice/cpp/src/Ice/Plugin.cpp +0 -87
  340. data/ext/ice/cpp/src/Ice/PluginF.cpp +0 -61
  341. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +0 -503
  342. data/ext/ice/cpp/src/Ice/Process.cpp +0 -471
  343. data/ext/ice/cpp/src/Ice/ProcessF.cpp +0 -63
  344. data/ext/ice/cpp/src/Ice/Properties.cpp +0 -78
  345. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +0 -603
  346. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +0 -63
  347. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +0 -1429
  348. data/ext/ice/cpp/src/Ice/PropertyNames.h +0 -78
  349. data/ext/ice/cpp/src/Ice/Proxy.cpp +0 -1601
  350. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +0 -1171
  351. data/ext/ice/cpp/src/Ice/Router.cpp +0 -977
  352. data/ext/ice/cpp/src/Ice/RouterF.cpp +0 -63
  353. data/ext/ice/cpp/src/Ice/Selector.cpp +0 -1525
  354. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +0 -75
  355. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +0 -61
  356. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +0 -49
  357. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +0 -1292
  358. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +0 -83
  359. data/ext/ice/cpp/src/Ice/Version.cpp +0 -57
  360. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +0 -915
  361. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +0 -1889
  362. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +0 -730
  363. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
  364. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +0 -75
  365. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +0 -61
  366. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +0 -75
  367. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
  368. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
  369. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
  370. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
  371. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +0 -266
  372. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +0 -338
  373. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +0 -41
  374. data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +0 -26
  375. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +0 -89
  376. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +0 -383
  377. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +0 -71
  378. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
  379. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +0 -5176
  380. data/ext/ice/mcpp/CMakeLists.txt +0 -80
  381. data/ext/ice/mcpp/LICENSE +0 -29
  382. data/ext/ice/mcpp/Makefile +0 -63
  383. data/ext/ice/mcpp/README.md +0 -32
  384. data/ext/ice/mcpp/directive.c +0 -1404
  385. data/ext/ice/mcpp/internal.H +0 -530
  386. data/ext/ice/mcpp/main.c +0 -792
  387. data/ext/ice/mcpp/mcpp.gyp +0 -88
  388. data/ext/ice/mcpp/support.c +0 -1985
  389. data/ext/ice/mcpp/system.c +0 -2737
  390. data/lib/Glacier2/Metrics.rb +0 -56
  391. data/lib/Glacier2/PermissionsVerifier.rb +0 -93
  392. data/lib/Glacier2/PermissionsVerifierF.rb +0 -30
  393. data/lib/Glacier2/Router.rb +0 -95
  394. data/lib/Glacier2/RouterF.rb +0 -25
  395. data/lib/Glacier2/SSLInfo.rb +0 -72
  396. data/lib/Glacier2/Session.rb +0 -247
  397. data/lib/Ice/BuiltinSequences.rb +0 -60
  398. data/lib/Ice/Communicator.rb +0 -87
  399. data/lib/Ice/CommunicatorF.rb +0 -24
  400. data/lib/Ice/Connection.rb +0 -413
  401. data/lib/Ice/ConnectionF.rb +0 -32
  402. data/lib/Ice/Current.rb +0 -141
  403. data/lib/Ice/Endpoint.rb +0 -187
  404. data/lib/Ice/EndpointF.rb +0 -48
  405. data/lib/Ice/EndpointTypes.rb +0 -69
  406. data/lib/Ice/FacetMap.rb +0 -24
  407. data/lib/Ice/Identity.rb +0 -63
  408. data/lib/Ice/ImplicitContext.rb +0 -26
  409. data/lib/Ice/ImplicitContextF.rb +0 -24
  410. data/lib/Ice/Instrumentation.rb +0 -169
  411. data/lib/Ice/InstrumentationF.rb +0 -31
  412. data/lib/Ice/LocalException.rb +0 -1031
  413. data/lib/Ice/Locator.rb +0 -196
  414. data/lib/Ice/LocatorF.rb +0 -30
  415. data/lib/Ice/Logger.rb +0 -24
  416. data/lib/Ice/LoggerF.rb +0 -24
  417. data/lib/Ice/Metrics.rb +0 -337
  418. data/lib/Ice/ObjectAdapter.rb +0 -29
  419. data/lib/Ice/ObjectAdapterF.rb +0 -24
  420. data/lib/Ice/ObjectFactory.rb +0 -24
  421. data/lib/Ice/Plugin.rb +0 -30
  422. data/lib/Ice/PluginF.rb +0 -28
  423. data/lib/Ice/Process.rb +0 -53
  424. data/lib/Ice/ProcessF.rb +0 -25
  425. data/lib/Ice/Properties.rb +0 -25
  426. data/lib/Ice/PropertiesAdmin.rb +0 -63
  427. data/lib/Ice/PropertiesF.rb +0 -29
  428. data/lib/Ice/RemoteLogger.rb +0 -207
  429. data/lib/Ice/Router.rb +0 -87
  430. data/lib/Ice/RouterF.rb +0 -25
  431. data/lib/Ice/ServantLocator.rb +0 -26
  432. data/lib/Ice/ServantLocatorF.rb +0 -24
  433. data/lib/Ice/SliceChecksumDict.rb +0 -24
  434. data/lib/Ice/ValueFactory.rb +0 -28
  435. data/lib/Ice/Version.rb +0 -90
  436. data/lib/IceBox/IceBox.rb +0 -164
  437. data/lib/IceGrid/Admin.rb +0 -1196
  438. data/lib/IceGrid/Descriptor.rb +0 -1034
  439. data/lib/IceGrid/Exception.rb +0 -376
  440. data/lib/IceGrid/FileParser.rb +0 -65
  441. data/lib/IceGrid/PluginFacade.rb +0 -35
  442. data/lib/IceGrid/Registry.rb +0 -209
  443. data/lib/IceGrid/Session.rb +0 -71
  444. data/lib/IceGrid/UserAccountMapper.rb +0 -61
  445. data/lib/IcePatch2/FileInfo.rb +0 -115
  446. data/lib/IcePatch2/FileServer.rb +0 -123
  447. data/lib/IceStorm/IceStorm.rb +0 -332
  448. data/lib/IceStorm/Metrics.rb +0 -73
  449. data/slice/Ice/Connection.ice +0 -516
  450. data/slice/Ice/Locator.ice +0 -239
  451. data/slice/Ice/Metrics.ice +0 -436
  452. data/slice/Ice/ObjectAdapter.ice +0 -710
  453. data/slice/Ice/Router.ice +0 -103
  454. data/slice/IceBT/ConnectionInfo.ice +0 -59
  455. data/slice/IceBT/EndpointInfo.ice +0 -57
  456. data/slice/IceBT/Types.ice +0 -45
  457. data/slice/IceDiscovery/IceDiscovery.ice +0 -98
  458. data/slice/IceGrid/PluginFacade.ice +0 -329
  459. data/slice/IceIAP/ConnectionInfo.ice +0 -74
  460. data/slice/IceIAP/EndpointInfo.ice +0 -68
  461. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +0 -83
  462. data/slice/IceSSL/ConnectionInfo.ice +0 -54
  463. data/slice/IceSSL/ConnectionInfoF.ice +0 -31
  464. data/slice/IceSSL/EndpointInfo.ice +0 -45
  465. data/slice/IceStorm/IceStorm.ice +0 -414
  466. /data/{ext → dist/IceRuby}/Communicator.cpp +0 -0
  467. /data/{ext → dist/IceRuby}/Communicator.h +0 -0
  468. /data/{ext → dist/IceRuby}/Config.h +0 -0
  469. /data/{ext → dist/IceRuby}/Connection.h +0 -0
  470. /data/{ext → dist/IceRuby}/Endpoint.h +0 -0
  471. /data/{ext → dist/IceRuby}/ImplicitContext.h +0 -0
  472. /data/{ext → dist/IceRuby}/Init.cpp +0 -0
  473. /data/{ext → dist/IceRuby}/Logger.h +0 -0
  474. /data/{ext → dist/IceRuby}/Operation.h +0 -0
  475. /data/{ext → dist/IceRuby}/Properties.h +0 -0
  476. /data/{ext → dist/IceRuby}/Proxy.cpp +0 -0
  477. /data/{ext → dist/IceRuby}/Proxy.h +0 -0
  478. /data/{ext → dist/IceRuby}/Slice.cpp +0 -0
  479. /data/{ext → dist/IceRuby}/Slice.h +0 -0
  480. /data/{ext → dist/IceRuby}/Util.cpp +0 -0
  481. /data/{ext → dist/IceRuby}/Util.h +0 -0
  482. /data/{ext → dist/IceRuby}/ValueFactoryManager.h +0 -0
  483. /data/{ext → dist}/ice/cpp/include/Ice/Application.h +0 -0
  484. /data/{ext → dist}/ice/cpp/include/Ice/AsyncResult.h +0 -0
  485. /data/{ext → dist}/ice/cpp/include/Ice/AsyncResultF.h +0 -0
  486. /data/{ext → dist}/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -0
  487. /data/{ext → dist}/ice/cpp/include/Ice/BatchRequestQueueF.h +0 -0
  488. /data/{ext → dist}/ice/cpp/include/Ice/Buffer.h +0 -0
  489. /data/{ext → dist}/ice/cpp/include/Ice/CommunicatorAsync.h +0 -0
  490. /data/{ext → dist}/ice/cpp/include/Ice/Comparable.h +0 -0
  491. /data/{ext → dist}/ice/cpp/include/Ice/Config.h +0 -0
  492. /data/{ext → dist}/ice/cpp/include/Ice/ConnectionAsync.h +0 -0
  493. /data/{ext → dist}/ice/cpp/include/Ice/ConnectionIF.h +0 -0
  494. /data/{ext → dist}/ice/cpp/include/Ice/ConsoleUtil.h +0 -0
  495. /data/{ext → dist}/ice/cpp/include/Ice/DefaultValueFactory.h +0 -0
  496. /data/{ext → dist}/ice/cpp/include/Ice/DispatchInterceptor.h +0 -0
  497. /data/{ext → dist}/ice/cpp/include/Ice/Dispatcher.h +0 -0
  498. /data/{ext → dist}/ice/cpp/include/Ice/DynamicLibrary.h +0 -0
  499. /data/{ext → dist}/ice/cpp/include/Ice/DynamicLibraryF.h +0 -0
  500. /data/{ext → dist}/ice/cpp/include/Ice/Exception.h +0 -0
  501. /data/{ext → dist}/ice/cpp/include/Ice/FactoryTable.h +0 -0
  502. /data/{ext → dist}/ice/cpp/include/Ice/FactoryTableInit.h +0 -0
  503. /data/{ext → dist}/ice/cpp/include/Ice/Format.h +0 -0
  504. /data/{ext → dist}/ice/cpp/include/Ice/Functional.h +0 -0
  505. /data/{ext → dist}/ice/cpp/include/Ice/GCObject.h +0 -0
  506. /data/{ext → dist}/ice/cpp/include/Ice/Handle.h +0 -0
  507. /data/{ext → dist}/ice/cpp/include/Ice/Ice.h +0 -0
  508. /data/{ext → dist}/ice/cpp/include/Ice/IconvStringConverter.h +0 -0
  509. /data/{ext → dist}/ice/cpp/include/Ice/Incoming.h +0 -0
  510. /data/{ext → dist}/ice/cpp/include/Ice/IncomingAsync.h +0 -0
  511. /data/{ext → dist}/ice/cpp/include/Ice/IncomingAsyncF.h +0 -0
  512. /data/{ext → dist}/ice/cpp/include/Ice/InputStream.h +0 -0
  513. /data/{ext → dist}/ice/cpp/include/Ice/InstanceF.h +0 -0
  514. /data/{ext → dist}/ice/cpp/include/Ice/InterfaceByValue.h +0 -0
  515. /data/{ext → dist}/ice/cpp/include/Ice/LocalObject.h +0 -0
  516. /data/{ext → dist}/ice/cpp/include/Ice/LocalObjectF.h +0 -0
  517. /data/{ext → dist}/ice/cpp/include/Ice/LoggerUtil.h +0 -0
  518. /data/{ext → dist}/ice/cpp/include/Ice/MetricsAdminI.h +0 -0
  519. /data/{ext → dist}/ice/cpp/include/Ice/MetricsFunctional.h +0 -0
  520. /data/{ext → dist}/ice/cpp/include/Ice/NativePropertiesAdmin.h +0 -0
  521. /data/{ext → dist}/ice/cpp/include/Ice/Object.h +0 -0
  522. /data/{ext → dist}/ice/cpp/include/Ice/ObjectF.h +0 -0
  523. /data/{ext → dist}/ice/cpp/include/Ice/ObserverHelper.h +0 -0
  524. /data/{ext → dist}/ice/cpp/include/Ice/Optional.h +0 -0
  525. /data/{ext → dist}/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -0
  526. /data/{ext → dist}/ice/cpp/include/Ice/OutputStream.h +0 -0
  527. /data/{ext → dist}/ice/cpp/include/Ice/Protocol.h +0 -0
  528. /data/{ext → dist}/ice/cpp/include/Ice/ProxyF.h +0 -0
  529. /data/{ext → dist}/ice/cpp/include/Ice/ProxyFactoryF.h +0 -0
  530. /data/{ext → dist}/ice/cpp/include/Ice/ProxyHandle.h +0 -0
  531. /data/{ext → dist}/ice/cpp/include/Ice/ReferenceF.h +0 -0
  532. /data/{ext → dist}/ice/cpp/include/Ice/RegisterPlugins.h +0 -0
  533. /data/{ext → dist}/ice/cpp/include/Ice/RequestHandlerF.h +0 -0
  534. /data/{ext → dist}/ice/cpp/include/Ice/ResponseHandlerF.h +0 -0
  535. /data/{ext → dist}/ice/cpp/include/Ice/SHA1.h +0 -0
  536. /data/{ext → dist}/ice/cpp/include/Ice/ServantManagerF.h +0 -0
  537. /data/{ext → dist}/ice/cpp/include/Ice/Service.h +0 -0
  538. /data/{ext → dist}/ice/cpp/include/Ice/SliceChecksums.h +0 -0
  539. /data/{ext → dist}/ice/cpp/include/Ice/SlicedData.h +0 -0
  540. /data/{ext → dist}/ice/cpp/include/Ice/SlicedDataF.h +0 -0
  541. /data/{ext → dist}/ice/cpp/include/Ice/StreamHelpers.h +0 -0
  542. /data/{ext → dist}/ice/cpp/include/Ice/StringConverter.h +0 -0
  543. /data/{ext → dist}/ice/cpp/include/Ice/ThreadPoolF.h +0 -0
  544. /data/{ext → dist}/ice/cpp/include/Ice/UUID.h +0 -0
  545. /data/{ext → dist}/ice/cpp/include/Ice/UniquePtr.h +0 -0
  546. /data/{ext → dist}/ice/cpp/include/Ice/UniqueRef.h +0 -0
  547. /data/{ext → dist}/ice/cpp/include/Ice/Value.h +0 -0
  548. /data/{ext → dist}/ice/cpp/include/Ice/ValueF.h +0 -0
  549. /data/{ext → dist}/ice/cpp/include/IceSSL/Config.h +0 -0
  550. /data/{ext → dist}/ice/cpp/include/IceSSL/IceSSL.h +0 -0
  551. /data/{ext → dist}/ice/cpp/include/IceSSL/OpenSSL.h +0 -0
  552. /data/{ext → dist}/ice/cpp/include/IceSSL/Plugin.h +0 -0
  553. /data/{ext → dist}/ice/cpp/include/IceSSL/SChannel.h +0 -0
  554. /data/{ext → dist}/ice/cpp/include/IceSSL/SecureTransport.h +0 -0
  555. /data/{ext → dist}/ice/cpp/include/IceUtil/Atomic.h +0 -0
  556. /data/{ext → dist}/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -0
  557. /data/{ext → dist}/ice/cpp/include/IceUtil/CountDownLatch.h +0 -0
  558. /data/{ext → dist}/ice/cpp/include/IceUtil/DisableWarnings.h +0 -0
  559. /data/{ext → dist}/ice/cpp/include/IceUtil/Exception.h +0 -0
  560. /data/{ext → dist}/ice/cpp/include/IceUtil/FileUtil.h +0 -0
  561. /data/{ext → dist}/ice/cpp/include/IceUtil/Functional.h +0 -0
  562. /data/{ext → dist}/ice/cpp/include/IceUtil/Handle.h +0 -0
  563. /data/{ext → dist}/ice/cpp/include/IceUtil/IceUtil.h +0 -0
  564. /data/{ext → dist}/ice/cpp/include/IceUtil/Iterator.h +0 -0
  565. /data/{ext → dist}/ice/cpp/include/IceUtil/Lock.h +0 -0
  566. /data/{ext → dist}/ice/cpp/include/IceUtil/Monitor.h +0 -0
  567. /data/{ext → dist}/ice/cpp/include/IceUtil/Mutex.h +0 -0
  568. /data/{ext → dist}/ice/cpp/include/IceUtil/MutexProtocol.h +0 -0
  569. /data/{ext → dist}/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -0
  570. /data/{ext → dist}/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -0
  571. /data/{ext → dist}/ice/cpp/include/IceUtil/Optional.h +0 -0
  572. /data/{ext → dist}/ice/cpp/include/IceUtil/Options.h +0 -0
  573. /data/{ext → dist}/ice/cpp/include/IceUtil/OutputUtil.h +0 -0
  574. /data/{ext → dist}/ice/cpp/include/IceUtil/PopDisableWarnings.h +0 -0
  575. /data/{ext → dist}/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -0
  576. /data/{ext → dist}/ice/cpp/include/IceUtil/Random.h +0 -0
  577. /data/{ext → dist}/ice/cpp/include/IceUtil/RecMutex.h +0 -0
  578. /data/{ext → dist}/ice/cpp/include/IceUtil/ScannerConfig.h +0 -0
  579. /data/{ext → dist}/ice/cpp/include/IceUtil/ScopedArray.h +0 -0
  580. /data/{ext → dist}/ice/cpp/include/IceUtil/Shared.h +0 -0
  581. /data/{ext → dist}/ice/cpp/include/IceUtil/StopWatch.h +0 -0
  582. /data/{ext → dist}/ice/cpp/include/IceUtil/StringConverter.h +0 -0
  583. /data/{ext → dist}/ice/cpp/include/IceUtil/StringUtil.h +0 -0
  584. /data/{ext → dist}/ice/cpp/include/IceUtil/Thread.h +0 -0
  585. /data/{ext → dist}/ice/cpp/include/IceUtil/ThreadException.h +0 -0
  586. /data/{ext → dist}/ice/cpp/include/IceUtil/Time.h +0 -0
  587. /data/{ext → dist}/ice/cpp/include/IceUtil/UUID.h +0 -0
  588. /data/{ext → dist}/ice/cpp/include/IceUtil/UndefSysMacros.h +0 -0
  589. /data/{ext → dist}/ice/cpp/src/Ice/ACM.cpp +0 -0
  590. /data/{ext → dist}/ice/cpp/src/Ice/ACM.h +0 -0
  591. /data/{ext → dist}/ice/cpp/src/Ice/ACMF.h +0 -0
  592. /data/{ext → dist}/ice/cpp/src/Ice/Acceptor.cpp +0 -0
  593. /data/{ext → dist}/ice/cpp/src/Ice/Acceptor.h +0 -0
  594. /data/{ext → dist}/ice/cpp/src/Ice/AcceptorF.h +0 -0
  595. /data/{ext → dist}/ice/cpp/src/Ice/ArgVector.cpp +0 -0
  596. /data/{ext → dist}/ice/cpp/src/Ice/ArgVector.h +0 -0
  597. /data/{ext → dist}/ice/cpp/src/Ice/AsyncResult.cpp +0 -0
  598. /data/{ext → dist}/ice/cpp/src/Ice/Base64.cpp +0 -0
  599. /data/{ext → dist}/ice/cpp/src/Ice/Base64.h +0 -0
  600. /data/{ext → dist}/ice/cpp/src/Ice/BatchRequestQueue.cpp +0 -0
  601. /data/{ext → dist}/ice/cpp/src/Ice/BatchRequestQueue.h +0 -0
  602. /data/{ext → dist}/ice/cpp/src/Ice/Buffer.cpp +0 -0
  603. /data/{ext → dist}/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +0 -0
  604. /data/{ext → dist}/ice/cpp/src/Ice/CollocatedRequestHandler.h +0 -0
  605. /data/{ext → dist}/ice/cpp/src/Ice/CommunicatorI.cpp +0 -0
  606. /data/{ext → dist}/ice/cpp/src/Ice/CommunicatorI.h +0 -0
  607. /data/{ext → dist}/ice/cpp/src/Ice/Cond.cpp +0 -0
  608. /data/{ext → dist}/ice/cpp/src/Ice/ConnectRequestHandler.cpp +0 -0
  609. /data/{ext → dist}/ice/cpp/src/Ice/ConnectRequestHandler.h +0 -0
  610. /data/{ext → dist}/ice/cpp/src/Ice/ConnectRequestHandlerF.h +0 -0
  611. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionFactory.cpp +0 -0
  612. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionFactory.h +0 -0
  613. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionFactoryF.h +0 -0
  614. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionI.cpp +0 -0
  615. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionI.h +0 -0
  616. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -0
  617. /data/{ext → dist}/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -0
  618. /data/{ext → dist}/ice/cpp/src/Ice/Connector.cpp +0 -0
  619. /data/{ext → dist}/ice/cpp/src/Ice/Connector.h +0 -0
  620. /data/{ext → dist}/ice/cpp/src/Ice/ConnectorF.h +0 -0
  621. /data/{ext → dist}/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +0 -0
  622. /data/{ext → dist}/ice/cpp/src/Ice/DefaultsAndOverrides.h +0 -0
  623. /data/{ext → dist}/ice/cpp/src/Ice/DefaultsAndOverridesF.h +0 -0
  624. /data/{ext → dist}/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -0
  625. /data/{ext → dist}/ice/cpp/src/Ice/DynamicLibrary.cpp +0 -0
  626. /data/{ext → dist}/ice/cpp/src/Ice/EndpointFactory.h +0 -0
  627. /data/{ext → dist}/ice/cpp/src/Ice/EndpointFactoryF.h +0 -0
  628. /data/{ext → dist}/ice/cpp/src/Ice/EndpointFactoryManager.cpp +0 -0
  629. /data/{ext → dist}/ice/cpp/src/Ice/EndpointFactoryManager.h +0 -0
  630. /data/{ext → dist}/ice/cpp/src/Ice/EndpointFactoryManagerF.h +0 -0
  631. /data/{ext → dist}/ice/cpp/src/Ice/EndpointI.h +0 -0
  632. /data/{ext → dist}/ice/cpp/src/Ice/EndpointIF.h +0 -0
  633. /data/{ext → dist}/ice/cpp/src/Ice/EventHandler.cpp +0 -0
  634. /data/{ext → dist}/ice/cpp/src/Ice/EventHandler.h +0 -0
  635. /data/{ext → dist}/ice/cpp/src/Ice/EventHandlerF.h +0 -0
  636. /data/{ext → dist}/ice/cpp/src/Ice/Exception.cpp +0 -0
  637. /data/{ext → dist}/ice/cpp/src/Ice/FactoryTable.cpp +0 -0
  638. /data/{ext → dist}/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -0
  639. /data/{ext → dist}/ice/cpp/src/Ice/GCObject.cpp +0 -0
  640. /data/{ext → dist}/ice/cpp/src/Ice/HashUtil.h +0 -0
  641. /data/{ext → dist}/ice/cpp/src/Ice/HttpParser.cpp +0 -0
  642. /data/{ext → dist}/ice/cpp/src/Ice/HttpParser.h +0 -0
  643. /data/{ext → dist}/ice/cpp/src/Ice/IPEndpointI.cpp +0 -0
  644. /data/{ext → dist}/ice/cpp/src/Ice/IPEndpointI.h +0 -0
  645. /data/{ext → dist}/ice/cpp/src/Ice/IPEndpointIF.h +0 -0
  646. /data/{ext → dist}/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -0
  647. /data/{ext → dist}/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -0
  648. /data/{ext → dist}/ice/cpp/src/Ice/ImplicitContextI.h +0 -0
  649. /data/{ext → dist}/ice/cpp/src/Ice/Incoming.cpp +0 -0
  650. /data/{ext → dist}/ice/cpp/src/Ice/IncomingAsync.cpp +0 -0
  651. /data/{ext → dist}/ice/cpp/src/Ice/IncomingRequest.h +0 -0
  652. /data/{ext → dist}/ice/cpp/src/Ice/Initialize.cpp +0 -0
  653. /data/{ext → dist}/ice/cpp/src/Ice/Instance.cpp +0 -0
  654. /data/{ext → dist}/ice/cpp/src/Ice/Instance.h +0 -0
  655. /data/{ext → dist}/ice/cpp/src/Ice/InstrumentationI.cpp +0 -0
  656. /data/{ext → dist}/ice/cpp/src/Ice/InstrumentationI.h +0 -0
  657. /data/{ext → dist}/ice/cpp/src/Ice/LocalObject.cpp +0 -0
  658. /data/{ext → dist}/ice/cpp/src/Ice/LocatorInfo.cpp +0 -0
  659. /data/{ext → dist}/ice/cpp/src/Ice/LocatorInfo.h +0 -0
  660. /data/{ext → dist}/ice/cpp/src/Ice/LocatorInfoF.h +0 -0
  661. /data/{ext → dist}/ice/cpp/src/Ice/LoggerAdminI.cpp +0 -0
  662. /data/{ext → dist}/ice/cpp/src/Ice/LoggerAdminI.h +0 -0
  663. /data/{ext → dist}/ice/cpp/src/Ice/LoggerI.cpp +0 -0
  664. /data/{ext → dist}/ice/cpp/src/Ice/LoggerI.h +0 -0
  665. /data/{ext → dist}/ice/cpp/src/Ice/LoggerUtil.cpp +0 -0
  666. /data/{ext → dist}/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -0
  667. /data/{ext → dist}/ice/cpp/src/Ice/Network.h +0 -0
  668. /data/{ext → dist}/ice/cpp/src/Ice/NetworkF.h +0 -0
  669. /data/{ext → dist}/ice/cpp/src/Ice/NetworkProxy.cpp +0 -0
  670. /data/{ext → dist}/ice/cpp/src/Ice/NetworkProxy.h +0 -0
  671. /data/{ext → dist}/ice/cpp/src/Ice/NetworkProxyF.h +0 -0
  672. /data/{ext → dist}/ice/cpp/src/Ice/OSLogLoggerI.cpp +0 -0
  673. /data/{ext → dist}/ice/cpp/src/Ice/OSLogLoggerI.h +0 -0
  674. /data/{ext → dist}/ice/cpp/src/Ice/Object.cpp +0 -0
  675. /data/{ext → dist}/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +0 -0
  676. /data/{ext → dist}/ice/cpp/src/Ice/ObjectAdapterFactory.h +0 -0
  677. /data/{ext → dist}/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +0 -0
  678. /data/{ext → dist}/ice/cpp/src/Ice/ObjectAdapterI.h +0 -0
  679. /data/{ext → dist}/ice/cpp/src/Ice/ObserverHelper.cpp +0 -0
  680. /data/{ext → dist}/ice/cpp/src/Ice/OpaqueEndpointI.cpp +0 -0
  681. /data/{ext → dist}/ice/cpp/src/Ice/OpaqueEndpointI.h +0 -0
  682. /data/{ext → dist}/ice/cpp/src/Ice/OutputStream.cpp +0 -0
  683. /data/{ext → dist}/ice/cpp/src/Ice/PluginManagerI.h +0 -0
  684. /data/{ext → dist}/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -0
  685. /data/{ext → dist}/ice/cpp/src/Ice/PropertiesAdminI.h +0 -0
  686. /data/{ext → dist}/ice/cpp/src/Ice/PropertiesI.cpp +0 -0
  687. /data/{ext → dist}/ice/cpp/src/Ice/PropertiesI.h +0 -0
  688. /data/{ext → dist}/ice/cpp/src/Ice/Protocol.cpp +0 -0
  689. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolInstance.cpp +0 -0
  690. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolInstance.h +0 -0
  691. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolInstanceF.h +0 -0
  692. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +0 -0
  693. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolPluginFacade.h +0 -0
  694. /data/{ext → dist}/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -0
  695. /data/{ext → dist}/ice/cpp/src/Ice/ProxyFactory.cpp +0 -0
  696. /data/{ext → dist}/ice/cpp/src/Ice/ProxyFactory.h +0 -0
  697. /data/{ext → dist}/ice/cpp/src/Ice/Reference.cpp +0 -0
  698. /data/{ext → dist}/ice/cpp/src/Ice/Reference.h +0 -0
  699. /data/{ext → dist}/ice/cpp/src/Ice/ReferenceFactory.cpp +0 -0
  700. /data/{ext → dist}/ice/cpp/src/Ice/ReferenceFactory.h +0 -0
  701. /data/{ext → dist}/ice/cpp/src/Ice/ReferenceFactoryF.h +0 -0
  702. /data/{ext → dist}/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -0
  703. /data/{ext → dist}/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -0
  704. /data/{ext → dist}/ice/cpp/src/Ice/ReplyStatus.h +0 -0
  705. /data/{ext → dist}/ice/cpp/src/Ice/RequestHandler.cpp +0 -0
  706. /data/{ext → dist}/ice/cpp/src/Ice/RequestHandler.h +0 -0
  707. /data/{ext → dist}/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -0
  708. /data/{ext → dist}/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -0
  709. /data/{ext → dist}/ice/cpp/src/Ice/ResponseHandler.cpp +0 -0
  710. /data/{ext → dist}/ice/cpp/src/Ice/ResponseHandler.h +0 -0
  711. /data/{ext → dist}/ice/cpp/src/Ice/RetryQueue.cpp +0 -0
  712. /data/{ext → dist}/ice/cpp/src/Ice/RetryQueue.h +0 -0
  713. /data/{ext → dist}/ice/cpp/src/Ice/RetryQueueF.h +0 -0
  714. /data/{ext → dist}/ice/cpp/src/Ice/RouterInfo.cpp +0 -0
  715. /data/{ext → dist}/ice/cpp/src/Ice/RouterInfo.h +0 -0
  716. /data/{ext → dist}/ice/cpp/src/Ice/RouterInfoF.h +0 -0
  717. /data/{ext → dist}/ice/cpp/src/Ice/SHA1.cpp +0 -0
  718. /data/{ext → dist}/ice/cpp/src/Ice/Selector.h +0 -0
  719. /data/{ext → dist}/ice/cpp/src/Ice/ServantManager.cpp +0 -0
  720. /data/{ext → dist}/ice/cpp/src/Ice/ServantManager.h +0 -0
  721. /data/{ext → dist}/ice/cpp/src/Ice/SharedContext.h +0 -0
  722. /data/{ext → dist}/ice/cpp/src/Ice/SliceChecksums.cpp +0 -0
  723. /data/{ext → dist}/ice/cpp/src/Ice/SlicedData.cpp +0 -0
  724. /data/{ext → dist}/ice/cpp/src/Ice/StreamSocket.cpp +0 -0
  725. /data/{ext → dist}/ice/cpp/src/Ice/StreamSocket.h +0 -0
  726. /data/{ext → dist}/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -0
  727. /data/{ext → dist}/ice/cpp/src/Ice/StringUtil.h +0 -0
  728. /data/{ext → dist}/ice/cpp/src/Ice/SysLoggerI.cpp +0 -0
  729. /data/{ext → dist}/ice/cpp/src/Ice/SysLoggerI.h +0 -0
  730. /data/{ext → dist}/ice/cpp/src/Ice/SystemdJournalI.cpp +0 -0
  731. /data/{ext → dist}/ice/cpp/src/Ice/SystemdJournalI.h +0 -0
  732. /data/{ext → dist}/ice/cpp/src/Ice/TcpAcceptor.cpp +0 -0
  733. /data/{ext → dist}/ice/cpp/src/Ice/TcpAcceptor.h +0 -0
  734. /data/{ext → dist}/ice/cpp/src/Ice/TcpConnector.cpp +0 -0
  735. /data/{ext → dist}/ice/cpp/src/Ice/TcpConnector.h +0 -0
  736. /data/{ext → dist}/ice/cpp/src/Ice/TcpEndpointI.cpp +0 -0
  737. /data/{ext → dist}/ice/cpp/src/Ice/TcpEndpointI.h +0 -0
  738. /data/{ext → dist}/ice/cpp/src/Ice/TcpTransceiver.cpp +0 -0
  739. /data/{ext → dist}/ice/cpp/src/Ice/TcpTransceiver.h +0 -0
  740. /data/{ext → dist}/ice/cpp/src/Ice/Thread.cpp +0 -0
  741. /data/{ext → dist}/ice/cpp/src/Ice/ThreadPool.h +0 -0
  742. /data/{ext → dist}/ice/cpp/src/Ice/Timer.cpp +0 -0
  743. /data/{ext → dist}/ice/cpp/src/Ice/TraceLevels.cpp +0 -0
  744. /data/{ext → dist}/ice/cpp/src/Ice/TraceLevels.h +0 -0
  745. /data/{ext → dist}/ice/cpp/src/Ice/TraceLevelsF.h +0 -0
  746. /data/{ext → dist}/ice/cpp/src/Ice/TraceUtil.cpp +0 -0
  747. /data/{ext → dist}/ice/cpp/src/Ice/TraceUtil.h +0 -0
  748. /data/{ext → dist}/ice/cpp/src/Ice/Transceiver.cpp +0 -0
  749. /data/{ext → dist}/ice/cpp/src/Ice/Transceiver.h +0 -0
  750. /data/{ext → dist}/ice/cpp/src/Ice/TransceiverF.h +0 -0
  751. /data/{ext → dist}/ice/cpp/src/Ice/UdpConnector.cpp +0 -0
  752. /data/{ext → dist}/ice/cpp/src/Ice/UdpConnector.h +0 -0
  753. /data/{ext → dist}/ice/cpp/src/Ice/UdpEndpointI.cpp +0 -0
  754. /data/{ext → dist}/ice/cpp/src/Ice/UdpEndpointI.h +0 -0
  755. /data/{ext → dist}/ice/cpp/src/Ice/UdpTransceiver.cpp +0 -0
  756. /data/{ext → dist}/ice/cpp/src/Ice/UdpTransceiver.h +0 -0
  757. /data/{ext → dist}/ice/cpp/src/Ice/Value.cpp +0 -0
  758. /data/{ext → dist}/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -0
  759. /data/{ext → dist}/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -0
  760. /data/{ext → dist}/ice/cpp/src/Ice/VirtualShared.h +0 -0
  761. /data/{ext → dist}/ice/cpp/src/Ice/WSAcceptor.cpp +0 -0
  762. /data/{ext → dist}/ice/cpp/src/Ice/WSAcceptor.h +0 -0
  763. /data/{ext → dist}/ice/cpp/src/Ice/WSConnector.cpp +0 -0
  764. /data/{ext → dist}/ice/cpp/src/Ice/WSConnector.h +0 -0
  765. /data/{ext → dist}/ice/cpp/src/Ice/WSEndpoint.cpp +0 -0
  766. /data/{ext → dist}/ice/cpp/src/Ice/WSEndpoint.h +0 -0
  767. /data/{ext → dist}/ice/cpp/src/Ice/WSTransceiver.cpp +0 -0
  768. /data/{ext → dist}/ice/cpp/src/Ice/WSTransceiver.h +0 -0
  769. /data/{ext → dist}/ice/cpp/src/IceDiscovery/LocatorI.cpp +0 -0
  770. /data/{ext → dist}/ice/cpp/src/IceDiscovery/LocatorI.h +0 -0
  771. /data/{ext → dist}/ice/cpp/src/IceDiscovery/LookupI.cpp +0 -0
  772. /data/{ext → dist}/ice/cpp/src/IceDiscovery/LookupI.h +0 -0
  773. /data/{ext → dist}/ice/cpp/src/IceDiscovery/PluginI.cpp +0 -0
  774. /data/{ext → dist}/ice/cpp/src/IceDiscovery/PluginI.h +0 -0
  775. /data/{ext → dist}/ice/cpp/src/IceLocatorDiscovery/Plugin.h +0 -0
  776. /data/{ext → dist}/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +0 -0
  777. /data/{ext → dist}/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -0
  778. /data/{ext → dist}/ice/cpp/src/IceSSL/AcceptorI.h +0 -0
  779. /data/{ext → dist}/ice/cpp/src/IceSSL/CertificateI.cpp +0 -0
  780. /data/{ext → dist}/ice/cpp/src/IceSSL/CertificateI.h +0 -0
  781. /data/{ext → dist}/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -0
  782. /data/{ext → dist}/ice/cpp/src/IceSSL/ConnectorI.h +0 -0
  783. /data/{ext → dist}/ice/cpp/src/IceSSL/EndpointI.cpp +0 -0
  784. /data/{ext → dist}/ice/cpp/src/IceSSL/EndpointI.h +0 -0
  785. /data/{ext → dist}/ice/cpp/src/IceSSL/Instance.cpp +0 -0
  786. /data/{ext → dist}/ice/cpp/src/IceSSL/Instance.h +0 -0
  787. /data/{ext → dist}/ice/cpp/src/IceSSL/InstanceF.h +0 -0
  788. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -0
  789. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -0
  790. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -0
  791. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -0
  792. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -0
  793. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -0
  794. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -0
  795. /data/{ext → dist}/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -0
  796. /data/{ext → dist}/ice/cpp/src/IceSSL/PluginI.h +0 -0
  797. /data/{ext → dist}/ice/cpp/src/IceSSL/RFC2253.cpp +0 -0
  798. /data/{ext → dist}/ice/cpp/src/IceSSL/RFC2253.h +0 -0
  799. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -0
  800. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -0
  801. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelEngine.h +0 -0
  802. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -0
  803. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -0
  804. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -0
  805. /data/{ext → dist}/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -0
  806. /data/{ext → dist}/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -0
  807. /data/{ext → dist}/ice/cpp/src/IceSSL/SSLEngine.h +0 -0
  808. /data/{ext → dist}/ice/cpp/src/IceSSL/SSLEngineF.h +0 -0
  809. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -0
  810. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -0
  811. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -0
  812. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -0
  813. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -0
  814. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -0
  815. /data/{ext → dist}/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -0
  816. /data/{ext → dist}/ice/cpp/src/IceSSL/TrustManager.cpp +0 -0
  817. /data/{ext → dist}/ice/cpp/src/IceSSL/TrustManager.h +0 -0
  818. /data/{ext → dist}/ice/cpp/src/IceSSL/TrustManagerF.h +0 -0
  819. /data/{ext → dist}/ice/cpp/src/IceSSL/Util.cpp +0 -0
  820. /data/{ext → dist}/ice/cpp/src/IceSSL/Util.h +0 -0
  821. /data/{ext → dist}/ice/cpp/src/IceUtil/ConsoleUtil.cpp +0 -0
  822. /data/{ext → dist}/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -0
  823. /data/{ext → dist}/ice/cpp/src/IceUtil/ConvertUTF.h +0 -0
  824. /data/{ext → dist}/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -0
  825. /data/{ext → dist}/ice/cpp/src/IceUtil/FileUtil.cpp +0 -0
  826. /data/{ext → dist}/ice/cpp/src/IceUtil/InputUtil.cpp +0 -0
  827. /data/{ext → dist}/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -0
  828. /data/{ext → dist}/ice/cpp/src/IceUtil/Options.cpp +0 -0
  829. /data/{ext → dist}/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -0
  830. /data/{ext → dist}/ice/cpp/src/IceUtil/Random.cpp +0 -0
  831. /data/{ext → dist}/ice/cpp/src/IceUtil/RecMutex.cpp +0 -0
  832. /data/{ext → dist}/ice/cpp/src/IceUtil/Shared.cpp +0 -0
  833. /data/{ext → dist}/ice/cpp/src/IceUtil/StringUtil.cpp +0 -0
  834. /data/{ext → dist}/ice/cpp/src/IceUtil/ThreadException.cpp +0 -0
  835. /data/{ext → dist}/ice/cpp/src/IceUtil/Time.cpp +0 -0
  836. /data/{ext → dist}/ice/cpp/src/IceUtil/UUID.cpp +0 -0
  837. /data/{ext → dist}/ice/cpp/src/IceUtil/Unicode.cpp +0 -0
  838. /data/{ext → dist}/ice/cpp/src/IceUtil/Unicode.h +0 -0
  839. /data/{ext → dist}/ice/cpp/src/IceUtil/UtilException.cpp +0 -0
  840. /data/{ext → dist}/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -0
  841. /data/{ext → dist}/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -0
  842. /data/{ext → dist}/ice/cpp/src/Slice/Checksum.cpp +0 -0
  843. /data/{ext → dist}/ice/cpp/src/Slice/Checksum.h +0 -0
  844. /data/{ext → dist}/ice/cpp/src/Slice/FileTracker.cpp +0 -0
  845. /data/{ext → dist}/ice/cpp/src/Slice/FileTracker.h +0 -0
  846. /data/{ext → dist}/ice/cpp/src/Slice/Grammar.cpp +0 -0
  847. /data/{ext → dist}/ice/cpp/src/Slice/Grammar.h +0 -0
  848. /data/{ext → dist}/ice/cpp/src/Slice/GrammarUtil.h +0 -0
  849. /data/{ext → dist}/ice/cpp/src/Slice/JavaUtil.h +0 -0
  850. /data/{ext → dist}/ice/cpp/src/Slice/MD5.cpp +0 -0
  851. /data/{ext → dist}/ice/cpp/src/Slice/MD5.h +0 -0
  852. /data/{ext → dist}/ice/cpp/src/Slice/MD5I.cpp +0 -0
  853. /data/{ext → dist}/ice/cpp/src/Slice/MD5I.h +0 -0
  854. /data/{ext → dist}/ice/cpp/src/Slice/PHPUtil.cpp +0 -0
  855. /data/{ext → dist}/ice/cpp/src/Slice/PHPUtil.h +0 -0
  856. /data/{ext → dist}/ice/cpp/src/Slice/Parser.cpp +0 -0
  857. /data/{ext → dist}/ice/cpp/src/Slice/Parser.h +0 -0
  858. /data/{ext → dist}/ice/cpp/src/Slice/Preprocessor.cpp +0 -0
  859. /data/{ext → dist}/ice/cpp/src/Slice/Preprocessor.h +0 -0
  860. /data/{ext → dist}/ice/cpp/src/Slice/Python.cpp +0 -0
  861. /data/{ext → dist}/ice/cpp/src/Slice/PythonUtil.cpp +0 -0
  862. /data/{ext → dist}/ice/cpp/src/Slice/PythonUtil.h +0 -0
  863. /data/{ext → dist}/ice/cpp/src/Slice/Ruby.cpp +0 -0
  864. /data/{ext → dist}/ice/cpp/src/Slice/RubyUtil.cpp +0 -0
  865. /data/{ext → dist}/ice/cpp/src/Slice/RubyUtil.h +0 -0
  866. /data/{ext → dist}/ice/cpp/src/Slice/Scanner.cpp +0 -0
  867. /data/{ext → dist}/ice/cpp/src/Slice/SliceUtil.cpp +0 -0
  868. /data/{ext → dist}/ice/cpp/src/Slice/StringLiteralUtil.cpp +0 -0
  869. /data/{ext → dist}/ice/cpp/src/Slice/Util.h +0 -0
  870. /data/{ext → dist}/ice/mcpp/config.h +0 -0
  871. /data/{ext → dist}/ice/mcpp/configed.H +0 -0
  872. /data/{ext → dist}/ice/mcpp/eval.c +0 -0
  873. /data/{ext → dist}/ice/mcpp/expand.c +0 -0
  874. /data/{ext → dist}/ice/mcpp/mbchar.c +0 -0
  875. /data/{ext → dist}/ice/mcpp/mcpp_lib.h +0 -0
  876. /data/{ext → dist}/ice/mcpp/mcpp_out.h +0 -0
  877. /data/{ext → dist}/ice/mcpp/system.H +0 -0
  878. /data/{slice → dist/ice/slice}/Glacier2/Metrics.ice +0 -0
  879. /data/{slice → dist/ice/slice}/Glacier2/PermissionsVerifier.ice +0 -0
  880. /data/{slice → dist/ice/slice}/Glacier2/PermissionsVerifierF.ice +0 -0
  881. /data/{slice → dist/ice/slice}/Glacier2/Router.ice +0 -0
  882. /data/{slice → dist/ice/slice}/Glacier2/RouterF.ice +0 -0
  883. /data/{slice → dist/ice/slice}/Glacier2/SSLInfo.ice +0 -0
  884. /data/{slice → dist/ice/slice}/Glacier2/Session.ice +0 -0
  885. /data/{slice → dist/ice/slice}/Ice/BuiltinSequences.ice +0 -0
  886. /data/{slice → dist/ice/slice}/Ice/Communicator.ice +0 -0
  887. /data/{slice → dist/ice/slice}/Ice/CommunicatorF.ice +0 -0
  888. /data/{slice → dist/ice/slice}/Ice/ConnectionF.ice +0 -0
  889. /data/{slice → dist/ice/slice}/Ice/Current.ice +0 -0
  890. /data/{slice → dist/ice/slice}/Ice/Endpoint.ice +0 -0
  891. /data/{slice → dist/ice/slice}/Ice/EndpointF.ice +0 -0
  892. /data/{slice → dist/ice/slice}/Ice/EndpointTypes.ice +0 -0
  893. /data/{slice → dist/ice/slice}/Ice/FacetMap.ice +0 -0
  894. /data/{slice → dist/ice/slice}/Ice/Identity.ice +0 -0
  895. /data/{slice → dist/ice/slice}/Ice/ImplicitContext.ice +0 -0
  896. /data/{slice → dist/ice/slice}/Ice/ImplicitContextF.ice +0 -0
  897. /data/{slice → dist/ice/slice}/Ice/Instrumentation.ice +0 -0
  898. /data/{slice → dist/ice/slice}/Ice/InstrumentationF.ice +0 -0
  899. /data/{slice → dist/ice/slice}/Ice/LocalException.ice +0 -0
  900. /data/{slice → dist/ice/slice}/Ice/LocatorF.ice +0 -0
  901. /data/{slice → dist/ice/slice}/Ice/Logger.ice +0 -0
  902. /data/{slice → dist/ice/slice}/Ice/LoggerF.ice +0 -0
  903. /data/{slice → dist/ice/slice}/Ice/ObjectAdapterF.ice +0 -0
  904. /data/{slice → dist/ice/slice}/Ice/ObjectFactory.ice +0 -0
  905. /data/{slice → dist/ice/slice}/Ice/Plugin.ice +0 -0
  906. /data/{slice → dist/ice/slice}/Ice/PluginF.ice +0 -0
  907. /data/{slice → dist/ice/slice}/Ice/Process.ice +0 -0
  908. /data/{slice → dist/ice/slice}/Ice/ProcessF.ice +0 -0
  909. /data/{slice → dist/ice/slice}/Ice/Properties.ice +0 -0
  910. /data/{slice → dist/ice/slice}/Ice/PropertiesAdmin.ice +0 -0
  911. /data/{slice → dist/ice/slice}/Ice/PropertiesF.ice +0 -0
  912. /data/{slice → dist/ice/slice}/Ice/RemoteLogger.ice +0 -0
  913. /data/{slice → dist/ice/slice}/Ice/RouterF.ice +0 -0
  914. /data/{slice → dist/ice/slice}/Ice/ServantLocator.ice +0 -0
  915. /data/{slice → dist/ice/slice}/Ice/ServantLocatorF.ice +0 -0
  916. /data/{slice → dist/ice/slice}/Ice/SliceChecksumDict.ice +0 -0
  917. /data/{slice → dist/ice/slice}/Ice/ValueFactory.ice +0 -0
  918. /data/{slice → dist/ice/slice}/Ice/Version.ice +0 -0
  919. /data/{slice → dist/ice/slice}/IceBox/IceBox.ice +0 -0
  920. /data/{slice → dist/ice/slice}/IceGrid/Admin.ice +0 -0
  921. /data/{slice → dist/ice/slice}/IceGrid/Descriptor.ice +0 -0
  922. /data/{slice → dist/ice/slice}/IceGrid/Exception.ice +0 -0
  923. /data/{slice → dist/ice/slice}/IceGrid/FileParser.ice +0 -0
  924. /data/{slice → dist/ice/slice}/IceGrid/Registry.ice +0 -0
  925. /data/{slice → dist/ice/slice}/IceGrid/Session.ice +0 -0
  926. /data/{slice → dist/ice/slice}/IceGrid/UserAccountMapper.ice +0 -0
  927. /data/{slice → dist/ice/slice}/IcePatch2/FileInfo.ice +0 -0
  928. /data/{slice → dist/ice/slice}/IcePatch2/FileServer.ice +0 -0
  929. /data/{slice → dist/ice/slice}/IceStorm/Metrics.ice +0 -0
  930. /data/{lib → dist/lib}/Glacier2.rb +0 -0
  931. /data/{lib → dist/lib}/Ice.rb +0 -0
  932. /data/{lib → dist/lib}/IceBox.rb +0 -0
  933. /data/{lib → dist/lib}/IceGrid.rb +0 -0
  934. /data/{lib → dist/lib}/IcePatch2.rb +0 -0
  935. /data/{lib → dist/lib}/IceStorm.rb +0 -0
  936. /data/{bin → scripts}/slice2rb +0 -0
@@ -0,0 +1,2741 @@
1
+ //
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
3
+ //
4
+
5
+ #include <IceUtil/DisableWarnings.h>
6
+ #include <Ice/InputStream.h>
7
+ #include <Ice/DefaultsAndOverrides.h>
8
+ #include <Ice/Instance.h>
9
+ #include <Ice/Object.h>
10
+ #include <Ice/Proxy.h>
11
+ #include <Ice/ProxyFactory.h>
12
+ #include <Ice/ValueFactory.h>
13
+ #include <Ice/UserExceptionFactory.h>
14
+ #include <Ice/LocalException.h>
15
+ #include <Ice/Protocol.h>
16
+ #include <Ice/FactoryTableInit.h>
17
+ #include <Ice/TraceUtil.h>
18
+ #include <Ice/TraceLevels.h>
19
+ #include <Ice/LoggerUtil.h>
20
+ #include <Ice/SlicedData.h>
21
+ #include <Ice/StringConverter.h>
22
+ #include <iterator>
23
+
24
+ #ifndef ICE_UNALIGNED
25
+ # if defined(__i386) || defined(_M_IX86) || defined(__x86_64) || defined(_M_X64)
26
+ # define ICE_UNALIGNED
27
+ # endif
28
+ #endif
29
+
30
+ using namespace std;
31
+ using namespace Ice;
32
+ using namespace IceInternal;
33
+
34
+ Ice::InputStream::InputStream()
35
+ {
36
+ initialize(currentEncoding);
37
+ }
38
+
39
+ Ice::InputStream::InputStream(const vector<Byte>& v) :
40
+ Buffer(v)
41
+ {
42
+ initialize(currentEncoding);
43
+ }
44
+
45
+ Ice::InputStream::InputStream(const pair<const Byte*, const Byte*>& p) :
46
+ Buffer(p.first, p.second)
47
+ {
48
+ initialize(currentEncoding);
49
+ }
50
+
51
+ Ice::InputStream::InputStream(Buffer& buf, bool adopt) :
52
+ Buffer(buf, adopt)
53
+ {
54
+ initialize(currentEncoding);
55
+ }
56
+
57
+ Ice::InputStream::InputStream(const CommunicatorPtr& communicator)
58
+ {
59
+ initialize(communicator);
60
+ }
61
+
62
+ Ice::InputStream::InputStream(const CommunicatorPtr& communicator, const vector<Byte>& v) :
63
+ Buffer(v)
64
+ {
65
+ initialize(communicator);
66
+ }
67
+
68
+ Ice::InputStream::InputStream(const CommunicatorPtr& communicator, const pair<const Byte*, const Byte*>& p) :
69
+ Buffer(p.first, p.second)
70
+ {
71
+ initialize(communicator);
72
+ }
73
+
74
+ Ice::InputStream::InputStream(const CommunicatorPtr& communicator, Buffer& buf, bool adopt) :
75
+ Buffer(buf, adopt)
76
+ {
77
+ initialize(communicator);
78
+ }
79
+
80
+ Ice::InputStream::InputStream(const EncodingVersion& encoding)
81
+ {
82
+ initialize(encoding);
83
+ }
84
+
85
+ Ice::InputStream::InputStream(const EncodingVersion& encoding, const vector<Byte>& v) :
86
+ Buffer(v)
87
+ {
88
+ initialize(encoding);
89
+ }
90
+
91
+ Ice::InputStream::InputStream(const EncodingVersion& encoding, const pair<const Byte*, const Byte*>& p) :
92
+ Buffer(p.first, p.second)
93
+ {
94
+ initialize(encoding);
95
+ }
96
+
97
+ Ice::InputStream::InputStream(const EncodingVersion& encoding, Buffer& buf, bool adopt) :
98
+ Buffer(buf, adopt)
99
+ {
100
+ initialize(encoding);
101
+ }
102
+
103
+ Ice::InputStream::InputStream(const CommunicatorPtr& communicator, const EncodingVersion& encoding)
104
+ {
105
+ initialize(communicator, encoding);
106
+ }
107
+
108
+ Ice::InputStream::InputStream(const CommunicatorPtr& communicator, const EncodingVersion& encoding,
109
+ const vector<Byte>& v) :
110
+ Buffer(v)
111
+ {
112
+ initialize(communicator, encoding);
113
+ }
114
+
115
+ Ice::InputStream::InputStream(const CommunicatorPtr& communicator, const EncodingVersion& encoding,
116
+ const pair<const Byte*, const Byte*>& p) :
117
+ Buffer(p.first, p.second)
118
+ {
119
+ initialize(communicator, encoding);
120
+ }
121
+
122
+ Ice::InputStream::InputStream(const CommunicatorPtr& communicator, const EncodingVersion& encoding,
123
+ Buffer& buf, bool adopt) :
124
+ Buffer(buf, adopt)
125
+ {
126
+ initialize(communicator, encoding);
127
+ }
128
+
129
+ Ice::InputStream::InputStream(Instance* instance, const EncodingVersion& encoding)
130
+ {
131
+ initialize(instance, encoding);
132
+ }
133
+
134
+ Ice::InputStream::InputStream(Instance* instance, const EncodingVersion& encoding, Buffer& buf, bool adopt) :
135
+ Buffer(buf, adopt)
136
+ {
137
+ initialize(instance, encoding);
138
+ }
139
+
140
+ void
141
+ Ice::InputStream::initialize(const CommunicatorPtr& communicator)
142
+ {
143
+ Instance* instance = getInstance(communicator).get();
144
+ initialize(instance, instance->defaultsAndOverrides()->defaultEncoding);
145
+ }
146
+
147
+ void
148
+ Ice::InputStream::initialize(const CommunicatorPtr& communicator, const EncodingVersion& encoding)
149
+ {
150
+ initialize(getInstance(communicator).get(), encoding);
151
+ }
152
+
153
+ void
154
+ Ice::InputStream::initialize(Instance* instance, const EncodingVersion& encoding)
155
+ {
156
+ initialize(encoding);
157
+
158
+ _instance = instance;
159
+
160
+ #ifndef ICE_CPP11_MAPPING
161
+ _collectObjects = _instance->collectObjects();
162
+ #endif
163
+ _traceSlicing = _instance->traceLevels()->slicing > 0;
164
+ _classGraphDepthMax = _instance->classGraphDepthMax();
165
+ }
166
+
167
+ void
168
+ Ice::InputStream::initialize(const EncodingVersion& encoding)
169
+ {
170
+ _instance = 0;
171
+ _encoding = encoding;
172
+ _currentEncaps = 0;
173
+ #ifndef ICE_CPP11_MAPPING
174
+ _collectObjects = false;
175
+ #endif
176
+ _traceSlicing = false;
177
+ _classGraphDepthMax = 0x7fffffff;
178
+ _closure = 0;
179
+ _sliceValues = true;
180
+ _startSeq = -1;
181
+ _minSeqSize = 0;
182
+ }
183
+
184
+ void
185
+ Ice::InputStream::clear()
186
+ {
187
+ while(_currentEncaps && _currentEncaps != &_preAllocatedEncaps)
188
+ {
189
+ Encaps* oldEncaps = _currentEncaps;
190
+ _currentEncaps = _currentEncaps->previous;
191
+ delete oldEncaps;
192
+ }
193
+
194
+ _startSeq = -1;
195
+ _sliceValues = true;
196
+ }
197
+
198
+ void
199
+ Ice::InputStream::setValueFactoryManager(const ValueFactoryManagerPtr& vfm)
200
+ {
201
+ _valueFactoryManager = vfm;
202
+ }
203
+
204
+ void
205
+ Ice::InputStream::setLogger(const LoggerPtr& logger)
206
+ {
207
+ _logger = logger;
208
+ }
209
+
210
+ void
211
+ #ifdef ICE_CPP11_MAPPING
212
+ Ice::InputStream::setCompactIdResolver(std::function<std::string(int)> r)
213
+ #else
214
+ Ice::InputStream::setCompactIdResolver(const CompactIdResolverPtr& r)
215
+ #endif
216
+ {
217
+ _compactIdResolver = r;
218
+ }
219
+
220
+ #ifndef ICE_CPP11_MAPPING
221
+ void
222
+ Ice::InputStream::setCollectObjects(bool on)
223
+ {
224
+ _collectObjects = on;
225
+ }
226
+ #endif
227
+
228
+ void
229
+ Ice::InputStream::setSliceValues(bool on)
230
+ {
231
+ _sliceValues = on;
232
+ }
233
+
234
+ void
235
+ Ice::InputStream::setTraceSlicing(bool on)
236
+ {
237
+ _traceSlicing = on;
238
+ }
239
+
240
+ void
241
+ Ice::InputStream::setClassGraphDepthMax(size_t classGraphDepthMax)
242
+ {
243
+ if(classGraphDepthMax < 1)
244
+ {
245
+ _classGraphDepthMax = 0x7fffffff;
246
+ }
247
+ else
248
+ {
249
+ _classGraphDepthMax = classGraphDepthMax;
250
+ }
251
+ }
252
+
253
+ void*
254
+ Ice::InputStream::getClosure() const
255
+ {
256
+ return _closure;
257
+ }
258
+
259
+ void*
260
+ Ice::InputStream::setClosure(void* p)
261
+ {
262
+ void* prev = _closure;
263
+ _closure = p;
264
+ return prev;
265
+ }
266
+
267
+ void
268
+ Ice::InputStream::swap(InputStream& other)
269
+ {
270
+ swapBuffer(other);
271
+
272
+ std::swap(_instance, other._instance);
273
+ std::swap(_encoding, other._encoding);
274
+ #ifndef ICE_CPP11_MAPPING
275
+ std::swap(_collectObjects, other._collectObjects);
276
+ #endif
277
+ std::swap(_traceSlicing, other._traceSlicing);
278
+ std::swap(_classGraphDepthMax, other._classGraphDepthMax);
279
+ std::swap(_closure, other._closure);
280
+ std::swap(_sliceValues, other._sliceValues);
281
+
282
+ //
283
+ // Swap is never called for streams that have encapsulations being read. However,
284
+ // encapsulations might still be set in case unmarshaling failed. We just
285
+ // reset the encapsulations if there are still some set.
286
+ //
287
+ resetEncapsulation();
288
+ other.resetEncapsulation();
289
+
290
+ std::swap(_startSeq, other._startSeq);
291
+ std::swap(_minSeqSize, other._minSeqSize);
292
+
293
+ std::swap(_valueFactoryManager, other._valueFactoryManager);
294
+ std::swap(_logger, other._logger);
295
+ std::swap(_compactIdResolver, other._compactIdResolver);
296
+ }
297
+
298
+ void
299
+ Ice::InputStream::resetEncapsulation()
300
+ {
301
+ while(_currentEncaps && _currentEncaps != &_preAllocatedEncaps)
302
+ {
303
+ Encaps* oldEncaps = _currentEncaps;
304
+ _currentEncaps = _currentEncaps->previous;
305
+ delete oldEncaps;
306
+ }
307
+
308
+ _preAllocatedEncaps.reset();
309
+ }
310
+
311
+ Int
312
+ Ice::InputStream::getEncapsulationSize()
313
+ {
314
+ assert(_currentEncaps);
315
+ return _currentEncaps->sz - static_cast<Int>(sizeof(Int)) - 2;
316
+ }
317
+
318
+ EncodingVersion
319
+ Ice::InputStream::skipEncapsulation()
320
+ {
321
+ Int sz;
322
+ read(sz);
323
+ if(sz < 6)
324
+ {
325
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
326
+ }
327
+ if(i - sizeof(Int) + sz > b.end())
328
+ {
329
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
330
+ }
331
+ EncodingVersion encoding;
332
+ read(encoding.major);
333
+ read(encoding.minor);
334
+ i += static_cast<size_t>(sz) - sizeof(Int) - 2;
335
+ return encoding;
336
+ }
337
+
338
+ void
339
+ Ice::InputStream::readPendingValues()
340
+ {
341
+ if(_currentEncaps && _currentEncaps->decoder)
342
+ {
343
+ _currentEncaps->decoder->readPendingValues();
344
+ }
345
+ else if(getEncoding() == Ice::Encoding_1_0)
346
+ {
347
+ //
348
+ // If using the 1.0 encoding and no instances were read, we
349
+ // still read an empty sequence of pending instances if
350
+ // requested (i.e.: if this is called).
351
+ //
352
+ // This is required by the 1.0 encoding, even if no instances
353
+ // are written we do marshal an empty sequence if marshaled
354
+ // data types use classes.
355
+ //
356
+ skipSize();
357
+ }
358
+ }
359
+
360
+ Int
361
+ Ice::InputStream::readAndCheckSeqSize(int minSize)
362
+ {
363
+ Int sz = readSize();
364
+
365
+ if(sz == 0)
366
+ {
367
+ return sz;
368
+ }
369
+
370
+ //
371
+ // The _startSeq variable points to the start of the sequence for which
372
+ // we expect to read at least _minSeqSize bytes from the stream.
373
+ //
374
+ // If not initialized or if we already read more data than _minSeqSize,
375
+ // we reset _startSeq and _minSeqSize for this sequence (possibly a
376
+ // top-level sequence or enclosed sequence it doesn't really matter).
377
+ //
378
+ // Otherwise, we are reading an enclosed sequence and we have to bump
379
+ // _minSeqSize by the minimum size that this sequence will require on
380
+ // the stream.
381
+ //
382
+ // The goal of this check is to ensure that when we start un-marshalling
383
+ // a new sequence, we check the minimal size of this new sequence against
384
+ // the estimated remaining buffer size. This estimation is based on
385
+ // the minimum size of the enclosing sequences, it's _minSeqSize.
386
+ //
387
+ if(_startSeq == -1 || i > (b.begin() + _startSeq + _minSeqSize))
388
+ {
389
+ _startSeq = static_cast<int>(i - b.begin());
390
+ _minSeqSize = sz * minSize;
391
+ }
392
+ else
393
+ {
394
+ _minSeqSize += sz * minSize;
395
+ }
396
+
397
+ //
398
+ // If there isn't enough data to read on the stream for the sequence (and
399
+ // possibly enclosed sequences), something is wrong with the marshalled
400
+ // data: it's claiming having more data that what is possible to read.
401
+ //
402
+ if(_startSeq + _minSeqSize > static_cast<int>(b.size()))
403
+ {
404
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
405
+ }
406
+
407
+ return sz;
408
+ }
409
+
410
+ void
411
+ Ice::InputStream::readBlob(vector<Byte>& v, Int sz)
412
+ {
413
+ if(sz > 0)
414
+ {
415
+ if(b.end() - i < sz)
416
+ {
417
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
418
+ }
419
+ vector<Byte>(i, i + sz).swap(v);
420
+ i += sz;
421
+ }
422
+ else
423
+ {
424
+ v.clear();
425
+ }
426
+ }
427
+
428
+ void
429
+ Ice::InputStream::read(std::vector<Ice::Byte>& v)
430
+ {
431
+ std::pair<const Ice::Byte*, const Ice::Byte*> p;
432
+ read(p);
433
+ if(p.first != p.second)
434
+ {
435
+ v.resize(static_cast<size_t>(p.second - p.first));
436
+ copy(p.first, p.second, v.begin());
437
+ }
438
+ else
439
+ {
440
+ v.clear();
441
+ }
442
+ }
443
+
444
+ void
445
+ Ice::InputStream::read(pair<const Byte*, const Byte*>& v)
446
+ {
447
+ Int sz = readAndCheckSeqSize(1);
448
+ if(sz > 0)
449
+ {
450
+ v.first = i;
451
+ v.second = i + sz;
452
+ i += sz;
453
+ }
454
+ else
455
+ {
456
+ v.first = v.second = i;
457
+ }
458
+ }
459
+
460
+ void
461
+ Ice::InputStream::read(vector<bool>& v)
462
+ {
463
+ Int sz = readAndCheckSeqSize(1);
464
+ if(sz > 0)
465
+ {
466
+ v.resize(static_cast<size_t>(sz));
467
+ copy(i, i + sz, v.begin());
468
+ i += sz;
469
+ }
470
+ else
471
+ {
472
+ v.clear();
473
+ }
474
+ }
475
+
476
+ namespace
477
+ {
478
+
479
+ template<size_t boolSize>
480
+ struct ReadBoolHelper
481
+ {
482
+ static bool* read(pair<const bool*, const bool*>& v, Int sz, InputStream::Container::iterator& i)
483
+ {
484
+ bool* array = new bool[static_cast<size_t>(sz)];
485
+ for(int idx = 0; idx < sz; ++idx)
486
+ {
487
+ array[idx] = static_cast<bool>(*(i + idx));
488
+ }
489
+ v.first = array;
490
+ v.second = array + sz;
491
+ return array;
492
+ }
493
+ };
494
+
495
+ template<>
496
+ struct ReadBoolHelper<1>
497
+ {
498
+ static bool* read(pair<const bool*, const bool*>& v, Int sz, InputStream::Container::iterator& i)
499
+ {
500
+ v.first = reinterpret_cast<bool*>(i);
501
+ v.second = reinterpret_cast<bool*>(i) + sz;
502
+ return 0;
503
+ }
504
+ };
505
+
506
+ }
507
+
508
+ #ifdef ICE_CPP11_MAPPING
509
+ void
510
+ Ice::InputStream::read(pair<const bool*, const bool*>& v)
511
+ {
512
+ Int sz = readAndCheckSeqSize(1);
513
+ if(sz > 0)
514
+ {
515
+ auto boolArray = ReadBoolHelper<sizeof(bool)>::read(v, sz, i);
516
+ if(boolArray)
517
+ {
518
+ _deleters.push_back([boolArray] { delete[] boolArray; });
519
+ }
520
+ i += sz;
521
+ }
522
+ else
523
+ {
524
+ v.first = v.second = reinterpret_cast<bool*>(i);
525
+ }
526
+ }
527
+
528
+ #else
529
+ void
530
+ Ice::InputStream::read(pair<const bool*, const bool*>& v, IceUtil::ScopedArray<bool>& result)
531
+ {
532
+ Int sz = readAndCheckSeqSize(1);
533
+ if(sz > 0)
534
+ {
535
+ result.reset(ReadBoolHelper<sizeof(bool)>::read(v, sz, i));
536
+ i += sz;
537
+ }
538
+ else
539
+ {
540
+ result.reset();
541
+ v.first = v.second = reinterpret_cast<bool*>(i);
542
+ }
543
+ }
544
+ #endif
545
+
546
+ void
547
+ Ice::InputStream::read(Short& v)
548
+ {
549
+ if(b.end() - i < static_cast<int>(sizeof(Short)))
550
+ {
551
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
552
+ }
553
+ const Byte* src = &(*i);
554
+ i += sizeof(Short);
555
+ #ifdef ICE_BIG_ENDIAN
556
+ Byte* dest = reinterpret_cast<Byte*>(&v) + sizeof(Short) - 1;
557
+ *dest-- = *src++;
558
+ *dest = *src;
559
+ #else
560
+ Byte* dest = reinterpret_cast<Byte*>(&v);
561
+ *dest++ = *src++;
562
+ *dest = *src;
563
+ #endif
564
+ }
565
+
566
+ void
567
+ Ice::InputStream::read(vector<Short>& v)
568
+ {
569
+ Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Short)));
570
+ if(sz > 0)
571
+ {
572
+ Container::iterator begin = i;
573
+ i += sz * static_cast<int>(sizeof(Short));
574
+ v.resize(static_cast<size_t>(sz));
575
+ #ifdef ICE_BIG_ENDIAN
576
+ const Byte* src = &(*begin);
577
+ Byte* dest = reinterpret_cast<Byte*>(&v[0]) + sizeof(Short) - 1;
578
+ for(int j = 0 ; j < sz ; ++j)
579
+ {
580
+ *dest-- = *src++;
581
+ *dest-- = *src++;
582
+ dest += 2 * sizeof(Short);
583
+ }
584
+ #else
585
+ copy(begin, i, reinterpret_cast<Byte*>(&v[0]));
586
+ #endif
587
+ }
588
+ else
589
+ {
590
+ v.clear();
591
+ }
592
+ }
593
+
594
+ #ifdef ICE_CPP11_MAPPING
595
+ void
596
+ Ice::InputStream::read(pair<const short*, const short*>& v)
597
+ #else
598
+ void
599
+ Ice::InputStream::read(pair<const Short*, const Short*>& v, IceUtil::ScopedArray<Short>& result)
600
+ #endif
601
+ {
602
+ Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Short)));
603
+ if(sz > 0)
604
+ {
605
+ #ifdef ICE_UNALIGNED
606
+ v.first = reinterpret_cast<Short*>(i);
607
+ i += sz * static_cast<int>(sizeof(Short));
608
+ v.second = reinterpret_cast<Short*>(i);
609
+ #else
610
+ # ifdef ICE_CPP11_MAPPING
611
+ auto result = new short[static_cast<size_t>(sz)];
612
+ _deleters.push_back([result] { delete[] result; });
613
+ v.first = result;
614
+ v.second = result + sz;
615
+ # else
616
+ result.reset(new Short[static_cast<size_t>(sz)]);
617
+ v.first = result.get();
618
+ v.second = result.get() + sz;
619
+ # endif
620
+
621
+ Container::iterator begin = i;
622
+ i += sz * static_cast<int>(sizeof(Short));
623
+ # ifdef ICE_BIG_ENDIAN
624
+ const Byte* src = &(*begin);
625
+ Byte* dest = reinterpret_cast<Byte*>(&result[0]) + sizeof(Short) - 1;
626
+ for(int j = 0 ; j < sz ; ++j)
627
+ {
628
+ *dest-- = *src++;
629
+ *dest-- = *src++;
630
+ dest += 2 * sizeof(Short);
631
+ }
632
+ # else
633
+ copy(begin, i, reinterpret_cast<Byte*>(&result[0]));
634
+ # endif
635
+ #endif
636
+ }
637
+ else
638
+ {
639
+ #ifndef ICE_CPP11_MAPPING
640
+ result.reset();
641
+ #endif
642
+ v.first = v.second = 0;
643
+ }
644
+ }
645
+
646
+ void
647
+ Ice::InputStream::read(vector<Int>& v)
648
+ {
649
+ Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Int)));
650
+ if(sz > 0)
651
+ {
652
+ Container::iterator begin = i;
653
+ i += sz * static_cast<int>(sizeof(Int));
654
+ v.resize(static_cast<size_t>(sz));
655
+ #ifdef ICE_BIG_ENDIAN
656
+ const Byte* src = &(*begin);
657
+ Byte* dest = reinterpret_cast<Byte*>(&v[0]) + sizeof(Int) - 1;
658
+ for(int j = 0 ; j < sz ; ++j)
659
+ {
660
+ *dest-- = *src++;
661
+ *dest-- = *src++;
662
+ *dest-- = *src++;
663
+ *dest-- = *src++;
664
+ dest += 2 * sizeof(Int);
665
+ }
666
+ #else
667
+ copy(begin, i, reinterpret_cast<Byte*>(&v[0]));
668
+ #endif
669
+ }
670
+ else
671
+ {
672
+ v.clear();
673
+ }
674
+ }
675
+
676
+ #ifdef ICE_CPP11_MAPPING
677
+ void
678
+ Ice::InputStream::read(pair<const Int*, const Int*>& v)
679
+ #else
680
+ void
681
+ Ice::InputStream::read(pair<const Int*, const Int*>& v, ::IceUtil::ScopedArray<Int>& result)
682
+ #endif
683
+ {
684
+ Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Int)));
685
+ if(sz > 0)
686
+ {
687
+ #ifdef ICE_UNALIGNED
688
+ v.first = reinterpret_cast<Int*>(i);
689
+ i += sz * static_cast<int>(sizeof(Int));
690
+ v.second = reinterpret_cast<Int*>(i);
691
+ #else
692
+
693
+ # ifdef ICE_CPP11_MAPPING
694
+ auto result = new int[static_cast<size_t>(sz)];
695
+ _deleters.push_back([result] { delete[] result; });
696
+ v.first = result;
697
+ v.second = result + sz;
698
+ # else
699
+ result.reset(new Int[static_cast<size_t>(sz)]);
700
+ v.first = result.get();
701
+ v.second = result.get() + sz;
702
+ # endif
703
+
704
+ Container::iterator begin = i;
705
+ i += sz * static_cast<int>(sizeof(Int));
706
+ # ifdef ICE_BIG_ENDIAN
707
+ const Byte* src = &(*begin);
708
+ Byte* dest = reinterpret_cast<Byte*>(&result[0]) + sizeof(Int) - 1;
709
+ for(int j = 0 ; j < sz ; ++j)
710
+ {
711
+ *dest-- = *src++;
712
+ *dest-- = *src++;
713
+ *dest-- = *src++;
714
+ *dest-- = *src++;
715
+ dest += 2 * sizeof(Int);
716
+ }
717
+ # else
718
+ copy(begin, i, reinterpret_cast<Byte*>(&result[0]));
719
+ # endif
720
+ #endif
721
+ }
722
+ else
723
+ {
724
+ #ifndef ICE_CPP11_MAPPING
725
+ result.reset();
726
+ #endif
727
+ v.first = v.second = 0;
728
+ }
729
+ }
730
+
731
+ void
732
+ Ice::InputStream::read(Long& v)
733
+ {
734
+ if(b.end() - i < static_cast<int>(sizeof(Long)))
735
+ {
736
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
737
+ }
738
+ const Byte* src = &(*i);
739
+ i += sizeof(Long);
740
+ #ifdef ICE_BIG_ENDIAN
741
+ Byte* dest = reinterpret_cast<Byte*>(&v) + sizeof(Long) - 1;
742
+ *dest-- = *src++;
743
+ *dest-- = *src++;
744
+ *dest-- = *src++;
745
+ *dest-- = *src++;
746
+ *dest-- = *src++;
747
+ *dest-- = *src++;
748
+ *dest-- = *src++;
749
+ *dest = *src;
750
+ #else
751
+ Byte* dest = reinterpret_cast<Byte*>(&v);
752
+ *dest++ = *src++;
753
+ *dest++ = *src++;
754
+ *dest++ = *src++;
755
+ *dest++ = *src++;
756
+ *dest++ = *src++;
757
+ *dest++ = *src++;
758
+ *dest++ = *src++;
759
+ *dest = *src;
760
+ #endif
761
+ }
762
+
763
+ void
764
+ Ice::InputStream::read(vector<Long>& v)
765
+ {
766
+ Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Long)));
767
+ if(sz > 0)
768
+ {
769
+ Container::iterator begin = i;
770
+ i += sz * static_cast<int>(sizeof(Long));
771
+ v.resize(static_cast<size_t>(sz));
772
+ #ifdef ICE_BIG_ENDIAN
773
+ const Byte* src = &(*begin);
774
+ Byte* dest = reinterpret_cast<Byte*>(&v[0]) + sizeof(Long) - 1;
775
+ for(int j = 0 ; j < sz ; ++j)
776
+ {
777
+ *dest-- = *src++;
778
+ *dest-- = *src++;
779
+ *dest-- = *src++;
780
+ *dest-- = *src++;
781
+ *dest-- = *src++;
782
+ *dest-- = *src++;
783
+ *dest-- = *src++;
784
+ *dest-- = *src++;
785
+ dest += 2 * sizeof(Long);
786
+ }
787
+ #else
788
+ copy(begin, i, reinterpret_cast<Byte*>(&v[0]));
789
+ #endif
790
+ }
791
+ else
792
+ {
793
+ v.clear();
794
+ }
795
+ }
796
+
797
+ #ifdef ICE_CPP11_MAPPING
798
+ void
799
+ Ice::InputStream::read(pair<const Long*, const Long*>& v)
800
+ #else
801
+ void
802
+ Ice::InputStream::read(pair<const Long*, const Long*>& v, IceUtil::ScopedArray<Long>& result)
803
+ #endif
804
+ {
805
+ Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Long)));
806
+ if(sz > 0)
807
+ {
808
+ #ifdef ICE_UNALIGNED
809
+ v.first = reinterpret_cast<Long*>(i);
810
+ i += sz * static_cast<int>(sizeof(Long));
811
+ v.second = reinterpret_cast<Long*>(i);
812
+ #else
813
+
814
+ # ifdef ICE_CPP11_MAPPING
815
+ auto result = new long long[static_cast<size_t>(sz)];
816
+ _deleters.push_back([result] { delete[] result; });
817
+ v.first = result;
818
+ v.second = result + sz;
819
+ # else
820
+ result.reset(new Long[static_cast<size_t>(sz)]);
821
+ v.first = result.get();
822
+ v.second = result.get() + sz;
823
+ # endif
824
+
825
+ Container::iterator begin = i;
826
+ i += sz * static_cast<int>(sizeof(Long));
827
+ # ifdef ICE_BIG_ENDIAN
828
+ const Byte* src = &(*begin);
829
+ Byte* dest = reinterpret_cast<Byte*>(&result[0]) + sizeof(Long) - 1;
830
+ for(int j = 0 ; j < sz ; ++j)
831
+ {
832
+ *dest-- = *src++;
833
+ *dest-- = *src++;
834
+ *dest-- = *src++;
835
+ *dest-- = *src++;
836
+ *dest-- = *src++;
837
+ *dest-- = *src++;
838
+ *dest-- = *src++;
839
+ *dest-- = *src++;
840
+ dest += 2 * sizeof(Long);
841
+ }
842
+ # else
843
+ copy(begin, i, reinterpret_cast<Byte*>(&result[0]));
844
+ # endif
845
+ #endif
846
+ }
847
+ else
848
+ {
849
+ #ifndef ICE_CPP11_MAPPING
850
+ result.reset();
851
+ #endif
852
+ v.first = v.second = 0;
853
+ }
854
+ }
855
+
856
+ void
857
+ Ice::InputStream::read(Float& v)
858
+ {
859
+ if(b.end() - i < static_cast<int>(sizeof(Float)))
860
+ {
861
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
862
+ }
863
+ const Byte* src = &(*i);
864
+ i += sizeof(Float);
865
+ #ifdef ICE_BIG_ENDIAN
866
+ Byte* dest = reinterpret_cast<Byte*>(&v) + sizeof(Float) - 1;
867
+ *dest-- = *src++;
868
+ *dest-- = *src++;
869
+ *dest-- = *src++;
870
+ *dest = *src;
871
+ #else
872
+ Byte* dest = reinterpret_cast<Byte*>(&v);
873
+ *dest++ = *src++;
874
+ *dest++ = *src++;
875
+ *dest++ = *src++;
876
+ *dest = *src;
877
+ #endif
878
+ }
879
+
880
+ void
881
+ Ice::InputStream::read(vector<Float>& v)
882
+ {
883
+ Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Float)));
884
+ if(sz > 0)
885
+ {
886
+ Container::iterator begin = i;
887
+ i += sz * static_cast<int>(sizeof(Float));
888
+ v.resize(static_cast<size_t>(sz));
889
+ #ifdef ICE_BIG_ENDIAN
890
+ const Byte* src = &(*begin);
891
+ Byte* dest = reinterpret_cast<Byte*>(&v[0]) + sizeof(Float) - 1;
892
+ for(int j = 0 ; j < sz ; ++j)
893
+ {
894
+ *dest-- = *src++;
895
+ *dest-- = *src++;
896
+ *dest-- = *src++;
897
+ *dest-- = *src++;
898
+ dest += 2 * sizeof(Float);
899
+ }
900
+ #else
901
+ copy(begin, i, reinterpret_cast<Byte*>(&v[0]));
902
+ #endif
903
+ }
904
+ else
905
+ {
906
+ v.clear();
907
+ }
908
+ }
909
+
910
+ #ifdef ICE_CPP11_MAPPING
911
+ void
912
+ Ice::InputStream::read(pair<const Float*, const Float*>& v)
913
+ #else
914
+ void
915
+ Ice::InputStream::read(pair<const Float*, const Float*>& v, IceUtil::ScopedArray<Float>& result)
916
+ #endif
917
+ {
918
+ Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Float)));
919
+ if(sz > 0)
920
+ {
921
+ #ifdef ICE_UNALIGNED
922
+ v.first = reinterpret_cast<Float*>(i);
923
+ i += sz * static_cast<int>(sizeof(Float));
924
+ v.second = reinterpret_cast<Float*>(i);
925
+ #else
926
+
927
+ # ifdef ICE_CPP11_MAPPING
928
+ auto result = new float[static_cast<size_t>(sz)];
929
+ _deleters.push_back([result] { delete[] result; });
930
+ v.first = result;
931
+ v.second = result + sz;
932
+ # else
933
+ result.reset(new Float[static_cast<size_t>(sz)]);
934
+ v.first = result.get();
935
+ v.second = result.get() + sz;
936
+ # endif
937
+
938
+ Container::iterator begin = i;
939
+ i += sz * static_cast<int>(sizeof(Float));
940
+ # ifdef ICE_BIG_ENDIAN
941
+ const Byte* src = &(*begin);
942
+ Byte* dest = reinterpret_cast<Byte*>(&result[0]) + sizeof(Float) - 1;
943
+ for(int j = 0 ; j < sz ; ++j)
944
+ {
945
+ *dest-- = *src++;
946
+ *dest-- = *src++;
947
+ *dest-- = *src++;
948
+ *dest-- = *src++;
949
+ dest += 2 * sizeof(Float);
950
+ }
951
+ # else
952
+ copy(begin, i, reinterpret_cast<Byte*>(&result[0]));
953
+ # endif
954
+ #endif
955
+ }
956
+ else
957
+ {
958
+ #ifndef ICE_CPP11_MAPPING
959
+ result.reset();
960
+ #endif
961
+ v.first = v.second = 0;
962
+ }
963
+ }
964
+
965
+ void
966
+ Ice::InputStream::read(Double& v)
967
+ {
968
+ if(b.end() - i < static_cast<int>(sizeof(Double)))
969
+ {
970
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
971
+ }
972
+ const Byte* src = &(*i);
973
+ i += sizeof(Double);
974
+ #ifdef ICE_BIG_ENDIAN
975
+ Byte* dest = reinterpret_cast<Byte*>(&v) + sizeof(Double) - 1;
976
+ *dest-- = *src++;
977
+ *dest-- = *src++;
978
+ *dest-- = *src++;
979
+ *dest-- = *src++;
980
+ *dest-- = *src++;
981
+ *dest-- = *src++;
982
+ *dest-- = *src++;
983
+ *dest = *src;
984
+ #else
985
+ Byte* dest = reinterpret_cast<Byte*>(&v);
986
+ *dest++ = *src++;
987
+ *dest++ = *src++;
988
+ *dest++ = *src++;
989
+ *dest++ = *src++;
990
+ *dest++ = *src++;
991
+ *dest++ = *src++;
992
+ *dest++ = *src++;
993
+ *dest = *src;
994
+ #endif
995
+ }
996
+
997
+ void
998
+ Ice::InputStream::read(vector<Double>& v)
999
+ {
1000
+ Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Double)));
1001
+ if(sz > 0)
1002
+ {
1003
+ Container::iterator begin = i;
1004
+ i += sz * static_cast<int>(sizeof(Double));
1005
+ v.resize(static_cast<size_t>(sz));
1006
+ #ifdef ICE_BIG_ENDIAN
1007
+ const Byte* src = &(*begin);
1008
+ Byte* dest = reinterpret_cast<Byte*>(&v[0]) + sizeof(Double) - 1;
1009
+ for(int j = 0 ; j < sz ; ++j)
1010
+ {
1011
+ *dest-- = *src++;
1012
+ *dest-- = *src++;
1013
+ *dest-- = *src++;
1014
+ *dest-- = *src++;
1015
+ *dest-- = *src++;
1016
+ *dest-- = *src++;
1017
+ *dest-- = *src++;
1018
+ *dest-- = *src++;
1019
+ dest += 2 * sizeof(Double);
1020
+ }
1021
+ #else
1022
+ copy(begin, i, reinterpret_cast<Byte*>(&v[0]));
1023
+ #endif
1024
+ }
1025
+ else
1026
+ {
1027
+ v.clear();
1028
+ }
1029
+ }
1030
+
1031
+ #ifdef ICE_CPP11_MAPPING
1032
+ void
1033
+ Ice::InputStream::read(pair<const Double*, const Double*>& v)
1034
+ #else
1035
+ void
1036
+ Ice::InputStream::read(pair<const Double*, const Double*>& v, IceUtil::ScopedArray<Double>& result)
1037
+ #endif
1038
+ {
1039
+ Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Double)));
1040
+ if(sz > 0)
1041
+ {
1042
+ #ifdef ICE_UNALIGNED
1043
+ v.first = reinterpret_cast<Double*>(i);
1044
+ i += sz * static_cast<int>(sizeof(Double));
1045
+ v.second = reinterpret_cast<Double*>(i);
1046
+ #else
1047
+
1048
+ # ifdef ICE_CPP11_MAPPING
1049
+ auto result = new double[static_cast<size_t>(sz)];
1050
+ _deleters.push_back([result] { delete[] result; });
1051
+ v.first = result;
1052
+ v.second = result + sz;
1053
+ # else
1054
+ result.reset(new Double[static_cast<size_t>(sz)]);
1055
+ v.first = result.get();
1056
+ v.second = result.get() + sz;
1057
+ # endif
1058
+
1059
+ Container::iterator begin = i;
1060
+ i += sz * static_cast<int>(sizeof(Double));
1061
+ # ifdef ICE_BIG_ENDIAN
1062
+ const Byte* src = &(*begin);
1063
+ Byte* dest = reinterpret_cast<Byte*>(&result[0]) + sizeof(Double) - 1;
1064
+ for(int j = 0 ; j < sz ; ++j)
1065
+ {
1066
+ *dest-- = *src++;
1067
+ *dest-- = *src++;
1068
+ *dest-- = *src++;
1069
+ *dest-- = *src++;
1070
+ *dest-- = *src++;
1071
+ *dest-- = *src++;
1072
+ *dest-- = *src++;
1073
+ *dest-- = *src++;
1074
+ dest += 2 * sizeof(Double);
1075
+ }
1076
+ # else
1077
+ copy(begin, i, reinterpret_cast<Byte*>(&result[0]));
1078
+ # endif
1079
+ #endif
1080
+ }
1081
+ else
1082
+ {
1083
+ #ifndef ICE_CPP11_MAPPING
1084
+ result.reset();
1085
+ #endif
1086
+ v.first = v.second = 0;
1087
+ }
1088
+ }
1089
+
1090
+ void
1091
+ Ice::InputStream::read(std::string& v, bool convert)
1092
+ {
1093
+ Int sz = readSize();
1094
+ if(sz > 0)
1095
+ {
1096
+ if(b.end() - i < sz)
1097
+ {
1098
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
1099
+ }
1100
+
1101
+ if(!convert || !readConverted(v, sz))
1102
+ {
1103
+ string(reinterpret_cast<const char*>(&*i), reinterpret_cast<const char*>(&*i) + sz).swap(v);
1104
+ }
1105
+ i += sz;
1106
+ }
1107
+ else
1108
+ {
1109
+ v.clear();
1110
+ }
1111
+ }
1112
+
1113
+ #ifdef ICE_CPP11_MAPPING
1114
+ void
1115
+ Ice::InputStream::read(const char*& vdata, size_t& vsize, bool convert)
1116
+ {
1117
+ int sz = readSize();
1118
+ if(sz > 0)
1119
+ {
1120
+ if(b.end() - i < sz)
1121
+ {
1122
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
1123
+ }
1124
+
1125
+ if(convert == false)
1126
+ {
1127
+ vdata = reinterpret_cast<const char*>(&*i);
1128
+ vsize = static_cast<size_t>(sz);
1129
+ i += sz;
1130
+ }
1131
+ else
1132
+ {
1133
+ string converted;
1134
+ if(readConverted(converted, sz))
1135
+ {
1136
+ if(converted.size() <= static_cast<size_t>(sz))
1137
+ {
1138
+ //
1139
+ // Write converted string directly into buffer
1140
+ //
1141
+ std::memcpy(i, converted.data(), converted.size());
1142
+ vdata = reinterpret_cast<const char*>(&*i);
1143
+ vsize = converted.size();
1144
+ }
1145
+ else
1146
+ {
1147
+ auto holder = new string(std::move(converted));
1148
+ _deleters.push_back([holder] { delete holder; });
1149
+ vdata = holder->data();
1150
+ vsize = holder->size();
1151
+ }
1152
+ }
1153
+ else
1154
+ {
1155
+ vdata = reinterpret_cast<const char*>(&*i);
1156
+ vsize = static_cast<size_t>(sz);
1157
+ }
1158
+ i += sz;
1159
+ }
1160
+ }
1161
+ else
1162
+ {
1163
+ vdata = 0;
1164
+ vsize = 0;
1165
+ }
1166
+ }
1167
+
1168
+ #else
1169
+
1170
+ void
1171
+ Ice::InputStream::read(const char*& vdata, size_t& vsize)
1172
+ {
1173
+ Int sz = readSize();
1174
+ if(sz > 0)
1175
+ {
1176
+ if(b.end() - i < sz)
1177
+ {
1178
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
1179
+ }
1180
+
1181
+ vdata = reinterpret_cast<const char*>(&*i);
1182
+ vsize = static_cast<size_t>(sz);
1183
+ i += sz;
1184
+ }
1185
+ else
1186
+ {
1187
+ vdata = 0;
1188
+ vsize = 0;
1189
+ }
1190
+ }
1191
+
1192
+ void
1193
+ Ice::InputStream::read(const char*& vdata, size_t& vsize, string& holder)
1194
+ {
1195
+ Int sz = readSize();
1196
+ if(sz > 0)
1197
+ {
1198
+ if(b.end() - i < sz)
1199
+ {
1200
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
1201
+ }
1202
+
1203
+ if(readConverted(holder, sz))
1204
+ {
1205
+ vdata = holder.data();
1206
+ vsize = holder.size();
1207
+ }
1208
+ else
1209
+ {
1210
+ vdata = reinterpret_cast<const char*>(&*i);
1211
+ vsize = static_cast<size_t>(sz);
1212
+ }
1213
+ i += sz;
1214
+ }
1215
+ else
1216
+ {
1217
+ holder.clear();
1218
+ vdata = 0;
1219
+ vsize = 0;
1220
+ }
1221
+ }
1222
+ #endif
1223
+
1224
+ bool
1225
+ Ice::InputStream::readConverted(string& v, int sz)
1226
+ {
1227
+ try
1228
+ {
1229
+ bool converted = false;
1230
+
1231
+ //
1232
+ // NOTE: When using an _instance, we get a const& on the string reference to
1233
+ // not have to increment unecessarily its reference count.
1234
+ //
1235
+
1236
+ if(_instance)
1237
+ {
1238
+ const StringConverterPtr& stringConverter = _instance->getStringConverter();
1239
+ if(stringConverter)
1240
+ {
1241
+ stringConverter->fromUTF8(i, i + sz, v);
1242
+ converted = true;
1243
+ }
1244
+ }
1245
+ else
1246
+ {
1247
+ StringConverterPtr stringConverter = getProcessStringConverter();
1248
+ if(stringConverter)
1249
+ {
1250
+ stringConverter->fromUTF8(i, i + sz, v);
1251
+ converted = true;
1252
+ }
1253
+ }
1254
+
1255
+ return converted;
1256
+ }
1257
+ catch(const IllegalConversionException& ex)
1258
+ {
1259
+ throw StringConversionException(__FILE__, __LINE__, ex.reason());
1260
+ }
1261
+ }
1262
+
1263
+ void
1264
+ Ice::InputStream::read(vector<string>& v, bool convert)
1265
+ {
1266
+ Int sz = readAndCheckSeqSize(1);
1267
+ if(sz > 0)
1268
+ {
1269
+ v.resize(static_cast<size_t>(sz));
1270
+ for(size_t j = 0; j < static_cast<size_t>(sz); ++j)
1271
+ {
1272
+ read(v[j], convert);
1273
+ }
1274
+ }
1275
+ else
1276
+ {
1277
+ v.clear();
1278
+ }
1279
+ }
1280
+
1281
+ void
1282
+ Ice::InputStream::read(wstring& v)
1283
+ {
1284
+ Int sz = readSize();
1285
+ if(sz > 0)
1286
+ {
1287
+ if(b.end() - i < sz)
1288
+ {
1289
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
1290
+ }
1291
+
1292
+ try
1293
+ {
1294
+ if(_instance)
1295
+ {
1296
+ const WstringConverterPtr& wstringConverter = _instance->getWstringConverter();
1297
+ wstringConverter->fromUTF8(i, i + sz, v);
1298
+ }
1299
+ else
1300
+ {
1301
+ WstringConverterPtr wstringConverter = getProcessWstringConverter();
1302
+ wstringConverter->fromUTF8(i, i + sz, v);
1303
+ }
1304
+
1305
+ i += sz;
1306
+ }
1307
+ catch(const IllegalConversionException& ex)
1308
+ {
1309
+ throw StringConversionException(__FILE__, __LINE__, ex.reason());
1310
+ }
1311
+ }
1312
+ else
1313
+ {
1314
+ v.clear();
1315
+ }
1316
+ }
1317
+
1318
+ void
1319
+ Ice::InputStream::read(vector<wstring>& v)
1320
+ {
1321
+ size_t sz = static_cast<size_t>(readAndCheckSeqSize(1));
1322
+ if(sz > 0)
1323
+ {
1324
+ v.resize(sz);
1325
+ for(size_t j = 0; j < sz; ++j)
1326
+ {
1327
+ read(v[j]);
1328
+ }
1329
+ }
1330
+ else
1331
+ {
1332
+ v.clear();
1333
+ }
1334
+ }
1335
+
1336
+ #ifdef ICE_CPP11_MAPPING
1337
+ shared_ptr<ObjectPrx>
1338
+ Ice::InputStream::readProxy()
1339
+ {
1340
+ if(!_instance)
1341
+ {
1342
+ throw MarshalException(__FILE__, __LINE__, "cannot unmarshal a proxy without a communicator");
1343
+ }
1344
+
1345
+ return _instance->proxyFactory()->streamToProxy(this);
1346
+ }
1347
+ #else
1348
+ void
1349
+ Ice::InputStream::read(ObjectPrx& v)
1350
+ {
1351
+ if(!_instance)
1352
+ {
1353
+ throw MarshalException(__FILE__, __LINE__, "cannot unmarshal a proxy without a communicator");
1354
+ }
1355
+
1356
+ v = _instance->proxyFactory()->streamToProxy(this);
1357
+ }
1358
+ #endif
1359
+
1360
+ Int
1361
+ Ice::InputStream::readEnum(Int maxValue)
1362
+ {
1363
+ if(getEncoding() == Encoding_1_0)
1364
+ {
1365
+ if(maxValue < 127)
1366
+ {
1367
+ Byte value;
1368
+ read(value);
1369
+ return value;
1370
+ }
1371
+ else if(maxValue < 32767)
1372
+ {
1373
+ Short value;
1374
+ read(value);
1375
+ return value;
1376
+ }
1377
+ else
1378
+ {
1379
+ Int value;
1380
+ read(value);
1381
+ return value;
1382
+ }
1383
+ }
1384
+ else
1385
+ {
1386
+ return readSize();
1387
+ }
1388
+ }
1389
+
1390
+ void
1391
+ Ice::InputStream::throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)) factory)
1392
+ {
1393
+ initEncaps();
1394
+ _currentEncaps->decoder->throwException(factory);
1395
+ }
1396
+
1397
+ bool
1398
+ Ice::InputStream::readOptImpl(Int readTag, OptionalFormat expectedFormat)
1399
+ {
1400
+ if(getEncoding() == Encoding_1_0)
1401
+ {
1402
+ return false; // Optional members aren't supported with the 1.0 encoding.
1403
+ }
1404
+
1405
+ while(true)
1406
+ {
1407
+ if(i >= b.begin() + _currentEncaps->start + _currentEncaps->sz)
1408
+ {
1409
+ return false; // End of encapsulation also indicates end of optionals.
1410
+ }
1411
+
1412
+ Byte v;
1413
+ read(v);
1414
+ if(v == OPTIONAL_END_MARKER)
1415
+ {
1416
+ --i; // Rewind
1417
+ return false;
1418
+ }
1419
+
1420
+ OptionalFormat format = static_cast<OptionalFormat>(v & 0x07); // First 3 bits.
1421
+ Int tag = static_cast<Int>(v >> 3);
1422
+ if(tag == 30)
1423
+ {
1424
+ tag = readSize();
1425
+ }
1426
+
1427
+ if(tag > readTag)
1428
+ {
1429
+ i -= tag < 30 ? 1 : (tag < 255 ? 2 : 6); // Rewind
1430
+ return false; // No optional data members with the requested tag.
1431
+ }
1432
+ else if(tag < readTag)
1433
+ {
1434
+ skipOptional(format); // Skip optional data members
1435
+ }
1436
+ else
1437
+ {
1438
+ if(format != expectedFormat)
1439
+ {
1440
+ ostringstream os;
1441
+ os << "invalid optional data member `" << tag << "': unexpected format";
1442
+ throw MarshalException(__FILE__, __LINE__, os.str());
1443
+ }
1444
+ return true;
1445
+ }
1446
+ }
1447
+ return true; // Keep the compiler happy.
1448
+ }
1449
+
1450
+ void
1451
+ Ice::InputStream::skipOptional(OptionalFormat type)
1452
+ {
1453
+ switch(type)
1454
+ {
1455
+ case ICE_SCOPED_ENUM(OptionalFormat, F1):
1456
+ {
1457
+ skip(1);
1458
+ break;
1459
+ }
1460
+ case ICE_SCOPED_ENUM(OptionalFormat, F2):
1461
+ {
1462
+ skip(2);
1463
+ break;
1464
+ }
1465
+ case ICE_SCOPED_ENUM(OptionalFormat, F4):
1466
+ {
1467
+ skip(4);
1468
+ break;
1469
+ }
1470
+ case ICE_SCOPED_ENUM(OptionalFormat, F8):
1471
+ {
1472
+ skip(8);
1473
+ break;
1474
+ }
1475
+ case ICE_SCOPED_ENUM(OptionalFormat, Size):
1476
+ {
1477
+ skipSize();
1478
+ break;
1479
+ }
1480
+ case ICE_SCOPED_ENUM(OptionalFormat, VSize):
1481
+ {
1482
+ skip(static_cast<size_t>(readSize()));
1483
+ break;
1484
+ }
1485
+ case ICE_SCOPED_ENUM(OptionalFormat, FSize):
1486
+ {
1487
+ Int sz;
1488
+ read(sz);
1489
+ if(sz < 0)
1490
+ {
1491
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
1492
+ }
1493
+ skip(static_cast<size_t>(sz));
1494
+ break;
1495
+ }
1496
+ case ICE_SCOPED_ENUM(OptionalFormat, Class):
1497
+ {
1498
+ read(0, 0);
1499
+ break;
1500
+ }
1501
+ }
1502
+ }
1503
+
1504
+ void
1505
+ Ice::InputStream::skipOptionals()
1506
+ {
1507
+ //
1508
+ // Skip remaining un-read optional members.
1509
+ //
1510
+ while(true)
1511
+ {
1512
+ if(i >= b.begin() + _currentEncaps->start + _currentEncaps->sz)
1513
+ {
1514
+ return; // End of encapsulation also indicates end of optionals.
1515
+ }
1516
+
1517
+ Byte v;
1518
+ read(v);
1519
+ if(v == OPTIONAL_END_MARKER)
1520
+ {
1521
+ return;
1522
+ }
1523
+
1524
+ OptionalFormat format = static_cast<OptionalFormat>(v & 0x07); // Read first 3 bits.
1525
+ if(static_cast<Int>(v >> 3) == 30)
1526
+ {
1527
+ skipSize();
1528
+ }
1529
+ skipOptional(format);
1530
+ }
1531
+ }
1532
+
1533
+ void
1534
+ Ice::InputStream::throwUnmarshalOutOfBoundsException(const char* file, int line)
1535
+ {
1536
+ throw UnmarshalOutOfBoundsException(file, line);
1537
+ }
1538
+
1539
+ void
1540
+ Ice::InputStream::throwEncapsulationException(const char* file, int line)
1541
+ {
1542
+ throw EncapsulationException(file, line);
1543
+ }
1544
+
1545
+ string
1546
+ Ice::InputStream::resolveCompactId(int id) const
1547
+ {
1548
+ string type;
1549
+
1550
+ #ifdef ICE_CPP11_MAPPING
1551
+ function<string(int)> resolver = compactIdResolver();
1552
+ #else
1553
+ CompactIdResolverPtr resolver = compactIdResolver();
1554
+ #endif
1555
+
1556
+ if(resolver)
1557
+ {
1558
+ try
1559
+ {
1560
+ #ifdef ICE_CPP11_MAPPING
1561
+ type = resolver(id);
1562
+ #else
1563
+ type = resolver->resolve(id);
1564
+ #endif
1565
+ }
1566
+ catch(const LocalException&)
1567
+ {
1568
+ throw;
1569
+ }
1570
+ catch(const std::exception& ex)
1571
+ {
1572
+ ostringstream ostr;
1573
+ ostr << "exception in CompactIdResolver for ID " << id;
1574
+ string msg = ostr.str();
1575
+ string what = ex.what();
1576
+ if(!what.empty())
1577
+ {
1578
+ msg += ":\n" + what;
1579
+ }
1580
+ throw MarshalException(__FILE__, __LINE__, msg);
1581
+ }
1582
+ catch(...)
1583
+ {
1584
+ ostringstream ostr;
1585
+ ostr << "unknown exception in CompactIdResolver for ID " << id;
1586
+ throw MarshalException(__FILE__, __LINE__, ostr.str());
1587
+ }
1588
+ }
1589
+
1590
+ return type;
1591
+ }
1592
+
1593
+ void
1594
+ Ice::InputStream::postUnmarshal(const ValuePtr& v) const
1595
+ {
1596
+ try
1597
+ {
1598
+ #ifndef ICE_CPP11_MAPPING
1599
+ if(_collectObjects)
1600
+ {
1601
+ v->ice_collectable(true);
1602
+ }
1603
+ #endif
1604
+ v->ice_postUnmarshal();
1605
+ }
1606
+ catch(const std::exception& ex)
1607
+ {
1608
+ if(logger())
1609
+ {
1610
+ Warning out(logger());
1611
+ out << "std::exception raised by ice_postUnmarshal:\n" << ex;
1612
+ }
1613
+ }
1614
+ catch(...)
1615
+ {
1616
+ if(logger())
1617
+ {
1618
+ Warning out(logger());
1619
+ out << "unknown exception raised by ice_postUnmarshal";
1620
+ }
1621
+ }
1622
+ }
1623
+
1624
+ void
1625
+ Ice::InputStream::traceSkipSlice(const string& typeId, SliceType sliceType) const
1626
+ {
1627
+ if(_traceSlicing && logger())
1628
+ {
1629
+ traceSlicing(sliceType == ExceptionSlice ? "exception" : "object", typeId, "Slicing", logger());
1630
+ }
1631
+ }
1632
+
1633
+ ValueFactoryManagerPtr
1634
+ Ice::InputStream::valueFactoryManager() const
1635
+ {
1636
+ if(_valueFactoryManager)
1637
+ {
1638
+ return _valueFactoryManager;
1639
+ }
1640
+ else if(_instance)
1641
+ {
1642
+ return _instance->initializationData().valueFactoryManager;
1643
+ }
1644
+
1645
+ return 0;
1646
+ }
1647
+
1648
+ LoggerPtr
1649
+ Ice::InputStream::logger() const
1650
+ {
1651
+ if(_logger)
1652
+ {
1653
+ return _logger;
1654
+ }
1655
+ else if(_instance)
1656
+ {
1657
+ return _instance->initializationData().logger;
1658
+ }
1659
+
1660
+ return 0;
1661
+ }
1662
+
1663
+ #ifdef ICE_CPP11_MAPPING
1664
+ function<string(int)>
1665
+ Ice::InputStream::compactIdResolver() const
1666
+ {
1667
+ if(_compactIdResolver)
1668
+ {
1669
+ return _compactIdResolver;
1670
+ }
1671
+ else if(_instance)
1672
+ {
1673
+ return _instance->initializationData().compactIdResolver;
1674
+ }
1675
+
1676
+ return nullptr;
1677
+ }
1678
+ #else
1679
+ CompactIdResolverPtr
1680
+ Ice::InputStream::compactIdResolver() const
1681
+ {
1682
+ if(_compactIdResolver)
1683
+ {
1684
+ return _compactIdResolver;
1685
+ }
1686
+ else if(_instance)
1687
+ {
1688
+ return _instance->initializationData().compactIdResolver;
1689
+ }
1690
+
1691
+ return 0;
1692
+ }
1693
+ #endif
1694
+
1695
+ void
1696
+ Ice::InputStream::initEncaps()
1697
+ {
1698
+ if(!_currentEncaps) // Lazy initialization.
1699
+ {
1700
+ _currentEncaps = &_preAllocatedEncaps;
1701
+ _currentEncaps->encoding = _encoding;
1702
+ _currentEncaps->sz = static_cast<Ice::Int>(b.size());
1703
+ }
1704
+
1705
+ if(!_currentEncaps->decoder) // Lazy initialization.
1706
+ {
1707
+ ValueFactoryManagerPtr vfm = valueFactoryManager();
1708
+ if(_currentEncaps->encoding == Encoding_1_0)
1709
+ {
1710
+ _currentEncaps->decoder = new EncapsDecoder10(this, _currentEncaps, _sliceValues, _classGraphDepthMax, vfm);
1711
+ }
1712
+ else
1713
+ {
1714
+ _currentEncaps->decoder = new EncapsDecoder11(this, _currentEncaps, _sliceValues, _classGraphDepthMax, vfm);
1715
+ }
1716
+ }
1717
+ }
1718
+
1719
+ Ice::InputStream::EncapsDecoder::~EncapsDecoder()
1720
+ {
1721
+ // Out of line to avoid weak vtable
1722
+ }
1723
+
1724
+ string
1725
+ Ice::InputStream::EncapsDecoder::readTypeId(bool isIndex)
1726
+ {
1727
+ if(isIndex)
1728
+ {
1729
+ Int index = _stream->readSize();
1730
+ TypeIdMap::const_iterator k = _typeIdMap.find(index);
1731
+ if(k == _typeIdMap.end())
1732
+ {
1733
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
1734
+ }
1735
+ return k->second;
1736
+ }
1737
+ else
1738
+ {
1739
+ string typeId;
1740
+ _stream->read(typeId, false);
1741
+ _typeIdMap.insert(make_pair(++_typeIdIndex, typeId));
1742
+ return typeId;
1743
+ }
1744
+ }
1745
+
1746
+ Ice::ValuePtr
1747
+ Ice::InputStream::EncapsDecoder::newInstance(const string& typeId)
1748
+ {
1749
+ Ice::ValuePtr v;
1750
+
1751
+ //
1752
+ // Try to find a factory registered for the specific type.
1753
+ //
1754
+ #ifdef ICE_CPP11_MAPPING
1755
+ function<ValuePtr(const string&)> userFactory;
1756
+ if(_valueFactoryManager)
1757
+ {
1758
+ userFactory = _valueFactoryManager->find(typeId);
1759
+ if(userFactory)
1760
+ {
1761
+ v = userFactory(typeId);
1762
+ }
1763
+ }
1764
+ #else
1765
+ ValueFactoryPtr userFactory;
1766
+ if(_valueFactoryManager)
1767
+ {
1768
+ userFactory = _valueFactoryManager->find(typeId);
1769
+ if(userFactory)
1770
+ {
1771
+ v = userFactory->create(typeId);
1772
+ }
1773
+ }
1774
+ #endif
1775
+ //
1776
+ // If that fails, invoke the default factory if one has been registered.
1777
+ //
1778
+ if(!v && _valueFactoryManager)
1779
+ {
1780
+ userFactory = _valueFactoryManager->find("");
1781
+ if(userFactory)
1782
+ {
1783
+ #ifdef ICE_CPP11_MAPPING
1784
+ v = userFactory(typeId);
1785
+ #else
1786
+ v = userFactory->create(typeId);
1787
+ #endif
1788
+ }
1789
+ }
1790
+
1791
+ //
1792
+ // Last chance: check the table of static factories (i.e.,
1793
+ // automatically generated factories for concrete classes).
1794
+ //
1795
+ if(!v)
1796
+ {
1797
+ #ifdef ICE_CPP11_MAPPING
1798
+ function<ValuePtr(const string&)> of = IceInternal::factoryTable->getValueFactory(typeId);
1799
+ if(of)
1800
+ {
1801
+ v = of(typeId);
1802
+ assert(v);
1803
+ }
1804
+ #else
1805
+ ValueFactoryPtr of = IceInternal::factoryTable->getValueFactory(typeId);
1806
+ if(of)
1807
+ {
1808
+ v = of->create(typeId);
1809
+ assert(v);
1810
+ }
1811
+ #endif
1812
+ }
1813
+ return v;
1814
+ }
1815
+
1816
+ void
1817
+ Ice::InputStream::EncapsDecoder::addPatchEntry(Int index, PatchFunc patchFunc, void* patchAddr)
1818
+ {
1819
+ assert(index > 0);
1820
+
1821
+ //
1822
+ // Check if we already unmarshaled the object. If that's the case, just patch the object smart pointer
1823
+ // and we're done. A null value indicates we've encountered a cycle and Ice.AllowClassCycles is false.
1824
+ //
1825
+ IndexToPtrMap::iterator p = _unmarshaledMap.find(index);
1826
+ if(p != _unmarshaledMap.end())
1827
+ {
1828
+ if (p->second == ICE_NULLPTR)
1829
+ {
1830
+ assert(!_stream->_instance->acceptClassCycles());
1831
+ throw MarshalException(__FILE__, __LINE__, "cycle detected during Value unmarshaling");
1832
+ }
1833
+ (*patchFunc)(patchAddr, p->second);
1834
+ return;
1835
+ }
1836
+
1837
+ //
1838
+ // Add a patch entry if the object isn't unmarshaled yet, the
1839
+ // smart pointer will be patched when the instance is
1840
+ // unmarshaled.
1841
+ //
1842
+
1843
+ PatchMap::iterator q = _patchMap.find(index);
1844
+ if(q == _patchMap.end())
1845
+ {
1846
+ //
1847
+ // We have no outstanding instances to be patched for this
1848
+ // index, so make a new entry in the patch map.
1849
+ //
1850
+ q = _patchMap.insert(make_pair(index, PatchList())).first;
1851
+ }
1852
+
1853
+ //
1854
+ // Append a patch entry for this instance.
1855
+ //
1856
+ PatchEntry e;
1857
+ e.patchFunc = patchFunc;
1858
+ e.patchAddr = patchAddr;
1859
+ e.classGraphDepth = _classGraphDepth;
1860
+ q->second.push_back(e);
1861
+ }
1862
+
1863
+ void
1864
+ Ice::InputStream::EncapsDecoder::unmarshal(Int index, const Ice::ValuePtr& v)
1865
+ {
1866
+ //
1867
+ // Add the object to the map of unmarshaled instances, this must
1868
+ // be done before reading the instances (for circular references).
1869
+ //
1870
+ // If circular references are not allowed we insert null (for cycle detection) and add
1871
+ // the object to the map once it has been fully unmarshaled.
1872
+ //
1873
+ _unmarshaledMap.insert(make_pair(index, _stream->_instance->acceptClassCycles() ? v : Ice::ValuePtr()));
1874
+
1875
+ //
1876
+ // Read the object.
1877
+ //
1878
+ v->_iceRead(_stream);
1879
+
1880
+ //
1881
+ // Patch all instances now that the object is unmarshaled.
1882
+ //
1883
+ PatchMap::iterator patchPos = _patchMap.find(index);
1884
+ if(patchPos != _patchMap.end())
1885
+ {
1886
+ assert(patchPos->second.size() > 0);
1887
+
1888
+ //
1889
+ // Patch all pointers that refer to the instance.
1890
+ //
1891
+ for(PatchList::iterator k = patchPos->second.begin(); k != patchPos->second.end(); ++k)
1892
+ {
1893
+ (*k->patchFunc)(k->patchAddr, v);
1894
+ }
1895
+
1896
+ //
1897
+ // Clear out the patch map for that index -- there is nothing left
1898
+ // to patch for that index for the time being.
1899
+ //
1900
+ _patchMap.erase(patchPos);
1901
+ }
1902
+
1903
+ if(_valueList.empty() && _patchMap.empty())
1904
+ {
1905
+ _stream->postUnmarshal(v);
1906
+ }
1907
+ else
1908
+ {
1909
+ _valueList.push_back(v);
1910
+
1911
+ if(_patchMap.empty())
1912
+ {
1913
+ //
1914
+ // Iterate over the value list and invoke ice_postUnmarshal on
1915
+ // each value. We must do this after all values have been
1916
+ // unmarshaled in order to ensure that any value data members
1917
+ // have been properly patched.
1918
+ //
1919
+ for(ValueList::iterator p = _valueList.begin(); p != _valueList.end(); ++p)
1920
+ {
1921
+ _stream->postUnmarshal(*p);
1922
+ }
1923
+ _valueList.clear();
1924
+ }
1925
+ }
1926
+
1927
+ if(!_stream->_instance->acceptClassCycles())
1928
+ {
1929
+ // This class has been fully unmarshaled without creating any cycles
1930
+ // It can be added to the map now.
1931
+ _unmarshaledMap[index] = v;
1932
+ }
1933
+ }
1934
+
1935
+ void
1936
+ Ice::InputStream::EncapsDecoder10::read(PatchFunc patchFunc, void* patchAddr)
1937
+ {
1938
+ assert(patchFunc && patchAddr);
1939
+
1940
+ //
1941
+ // Object references are encoded as a negative integer in 1.0.
1942
+ //
1943
+ Int index;
1944
+ _stream->read(index);
1945
+ if(index > 0)
1946
+ {
1947
+ throw MarshalException(__FILE__, __LINE__, "invalid object id");
1948
+ }
1949
+ index = -index;
1950
+
1951
+ if(index == 0)
1952
+ {
1953
+ //
1954
+ // Calling the patch function for null instances is necessary for correct functioning of Ice for
1955
+ // Python and Ruby.
1956
+ //
1957
+ ValuePtr nil;
1958
+ patchFunc(patchAddr, nil);
1959
+ }
1960
+ else
1961
+ {
1962
+ addPatchEntry(index, patchFunc, patchAddr);
1963
+ }
1964
+ }
1965
+
1966
+ void
1967
+ Ice::InputStream::EncapsDecoder10::throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)) factory)
1968
+ {
1969
+ assert(_sliceType == NoSlice);
1970
+
1971
+ //
1972
+ // User exception with the 1.0 encoding start with a boolean flag
1973
+ // that indicates whether or not the exception has classes.
1974
+ //
1975
+ // This allows reading the pending values even if some part of
1976
+ // the exception was sliced.
1977
+ //
1978
+ bool usesClasses;
1979
+ _stream->read(usesClasses);
1980
+
1981
+ _sliceType = ExceptionSlice;
1982
+ _skipFirstSlice = false;
1983
+
1984
+ //
1985
+ // Read the first slice header.
1986
+ //
1987
+ startSlice();
1988
+ const string mostDerivedId = _typeId;
1989
+ ICE_DELEGATE(UserExceptionFactory) exceptionFactory = factory;
1990
+ while(true)
1991
+ {
1992
+ //
1993
+ // Look for a statically-generated factory for this ID.
1994
+ //
1995
+ if(!exceptionFactory)
1996
+ {
1997
+ exceptionFactory = factoryTable->getExceptionFactory(_typeId);
1998
+ }
1999
+
2000
+ //
2001
+ // We found a factory, we get out of this loop.
2002
+ //
2003
+ if(exceptionFactory)
2004
+ {
2005
+ //
2006
+ // Got factory -- ask the factory to instantiate the
2007
+ // exception, initialize the exception members, and throw
2008
+ // the exception.
2009
+ //
2010
+ try
2011
+ {
2012
+ #ifdef ICE_CPP11_MAPPING
2013
+ exceptionFactory(_typeId);
2014
+ #else
2015
+ exceptionFactory->createAndThrow(_typeId);
2016
+ #endif
2017
+ }
2018
+ catch(UserException& ex)
2019
+ {
2020
+ ex._read(_stream);
2021
+ if(usesClasses)
2022
+ {
2023
+ readPendingValues();
2024
+ }
2025
+ throw;
2026
+
2027
+ // Never reached.
2028
+ }
2029
+ }
2030
+
2031
+ //
2032
+ // Slice off what we don't understand.
2033
+ //
2034
+ skipSlice();
2035
+ try
2036
+ {
2037
+ startSlice();
2038
+ }
2039
+ catch(UnmarshalOutOfBoundsException& ex)
2040
+ {
2041
+ //
2042
+ // An oversight in the 1.0 encoding means there is no marker to indicate
2043
+ // the last slice of an exception. As a result, we just try to read the
2044
+ // next type ID, which raises UnmarshalOutOfBoundsException when the
2045
+ // input buffer underflows.
2046
+ //
2047
+ // Set the reason member to a more helpful message.
2048
+ //
2049
+ ex.reason = "unknown exception type `" + mostDerivedId + "'";
2050
+ throw;
2051
+ }
2052
+ }
2053
+ }
2054
+
2055
+ void
2056
+ #ifndef NDEBUG
2057
+ Ice::InputStream::EncapsDecoder10::startInstance(SliceType sliceType)
2058
+ #else
2059
+ Ice::InputStream::EncapsDecoder10::startInstance(SliceType)
2060
+ #endif
2061
+ {
2062
+ assert(_sliceType == sliceType);
2063
+ _skipFirstSlice = true;
2064
+ }
2065
+
2066
+ SlicedDataPtr
2067
+ Ice::InputStream::EncapsDecoder10::endInstance(bool)
2068
+ {
2069
+ //
2070
+ // Read the Ice::Value slice.
2071
+ //
2072
+ if(_sliceType == ValueSlice)
2073
+ {
2074
+ startSlice();
2075
+ Int sz = _stream->readSize(); // For compatibility with the old AFM.
2076
+ if(sz != 0)
2077
+ {
2078
+ throw MarshalException(__FILE__, __LINE__, "invalid Object slice");
2079
+ }
2080
+ endSlice();
2081
+ }
2082
+ _sliceType = NoSlice;
2083
+ return 0;
2084
+ }
2085
+
2086
+ const std::string&
2087
+ Ice::InputStream::EncapsDecoder10::startSlice()
2088
+ {
2089
+ //
2090
+ // If first slice, don't read the header, it was already read in
2091
+ // readInstance or throwException to find the factory.
2092
+ //
2093
+ if(_skipFirstSlice)
2094
+ {
2095
+ _skipFirstSlice = false;
2096
+ return _typeId;
2097
+ }
2098
+
2099
+ //
2100
+ // For values, first read the type ID boolean which indicates
2101
+ // whether or not the type ID is encoded as a string or as an
2102
+ // index. For exceptions, the type ID is always encoded as a
2103
+ // string.
2104
+ //
2105
+ if(_sliceType == ValueSlice)
2106
+ {
2107
+ bool isIndex;
2108
+ _stream->read(isIndex);
2109
+ _typeId = readTypeId(isIndex);
2110
+ }
2111
+ else
2112
+ {
2113
+ _stream->read(_typeId, false);
2114
+ }
2115
+
2116
+ _stream->read(_sliceSize);
2117
+ if(_sliceSize < 4)
2118
+ {
2119
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
2120
+ }
2121
+ return _typeId;
2122
+ }
2123
+
2124
+ void
2125
+ Ice::InputStream::EncapsDecoder10::endSlice()
2126
+ {
2127
+ }
2128
+
2129
+ void
2130
+ Ice::InputStream::EncapsDecoder10::skipSlice()
2131
+ {
2132
+ _stream->traceSkipSlice(_typeId, _sliceType);
2133
+ assert(_sliceSize >= 4);
2134
+ _stream->skip(static_cast<size_t>(_sliceSize) - sizeof(Int));
2135
+ }
2136
+
2137
+ void
2138
+ Ice::InputStream::EncapsDecoder10::readPendingValues()
2139
+ {
2140
+ Int num;
2141
+ do
2142
+ {
2143
+ num = _stream->readSize();
2144
+ for(Int k = num; k > 0; --k)
2145
+ {
2146
+ readInstance();
2147
+ }
2148
+ }
2149
+ while(num);
2150
+
2151
+ if(!_patchMap.empty())
2152
+ {
2153
+ //
2154
+ // If any entries remain in the patch map, the sender has sent an index for an object, but failed
2155
+ // to supply the object.
2156
+ //
2157
+ throw MarshalException(__FILE__, __LINE__, "index for class received, but no instance");
2158
+ }
2159
+ }
2160
+
2161
+ void
2162
+ Ice::InputStream::EncapsDecoder10::readInstance()
2163
+ {
2164
+ Int index;
2165
+ _stream->read(index);
2166
+
2167
+ if(index <= 0)
2168
+ {
2169
+ throw MarshalException(__FILE__, __LINE__, "invalid object id");
2170
+ }
2171
+
2172
+ _sliceType = ValueSlice;
2173
+ _skipFirstSlice = false;
2174
+
2175
+ //
2176
+ // Read the first slice header.
2177
+ //
2178
+ startSlice();
2179
+ const string mostDerivedId = _typeId;
2180
+ ValuePtr v;
2181
+ while(true)
2182
+ {
2183
+ //
2184
+ // For the 1.0 encoding, the type ID for the base Object class
2185
+ // marks the last slice.
2186
+ //
2187
+ if(_typeId == Object::ice_staticId())
2188
+ {
2189
+ throw NoValueFactoryException(__FILE__, __LINE__, "", mostDerivedId);
2190
+ }
2191
+
2192
+ v = newInstance(_typeId);
2193
+
2194
+ //
2195
+ // We found a factory, we get out of this loop.
2196
+ //
2197
+ if(v)
2198
+ {
2199
+ break;
2200
+ }
2201
+
2202
+ //
2203
+ // If value slicing is disabled, stop unmarshaling.
2204
+ //
2205
+ if(!_sliceValues)
2206
+ {
2207
+ throw NoValueFactoryException(__FILE__, __LINE__, "no value factory found and value slicing is disabled",
2208
+ _typeId);
2209
+ }
2210
+
2211
+ //
2212
+ // Slice off what we don't understand.
2213
+ //
2214
+ skipSlice();
2215
+ startSlice(); // Read next Slice header for next iteration.
2216
+ }
2217
+
2218
+ //
2219
+ // Compute the biggest class graph depth of this object. To compute this,
2220
+ // we get the class graph depth of each ancestor from the patch map and
2221
+ // keep the biggest one.
2222
+ //
2223
+ _classGraphDepth = 0;
2224
+ PatchMap::iterator patchPos = _patchMap.find(index);
2225
+ if(patchPos != _patchMap.end())
2226
+ {
2227
+ assert(patchPos->second.size() > 0);
2228
+ for(PatchList::iterator k = patchPos->second.begin(); k != patchPos->second.end(); ++k)
2229
+ {
2230
+ if(k->classGraphDepth > _classGraphDepth)
2231
+ {
2232
+ _classGraphDepth = k->classGraphDepth;
2233
+ }
2234
+ }
2235
+ }
2236
+
2237
+ if(++_classGraphDepth > _classGraphDepthMax)
2238
+ {
2239
+ throw MarshalException(__FILE__, __LINE__, "maximum class graph depth reached");
2240
+ }
2241
+
2242
+ //
2243
+ // Unmarshal the instance and add it to the map of unmarshaled instances.
2244
+ //
2245
+ unmarshal(index, v);
2246
+ }
2247
+
2248
+ void
2249
+ Ice::InputStream::EncapsDecoder11::read(PatchFunc patchFunc, void* patchAddr)
2250
+ {
2251
+ Int index = _stream->readSize();
2252
+ if(index < 0)
2253
+ {
2254
+ throw MarshalException(__FILE__, __LINE__, "invalid object id");
2255
+ }
2256
+ else if(index == 0)
2257
+ {
2258
+ //
2259
+ // Calling the patch function for null instances is necessary for correct functioning of Ice for
2260
+ // Python and Ruby.
2261
+ //
2262
+ if(patchFunc)
2263
+ {
2264
+ ValuePtr nil;
2265
+ patchFunc(patchAddr, nil);
2266
+ }
2267
+ }
2268
+ else if(_current && _current->sliceFlags & FLAG_HAS_INDIRECTION_TABLE)
2269
+ {
2270
+ //
2271
+ // When reading an object within a slice and there's an
2272
+ // indirect object table, always read an indirect reference
2273
+ // that points to an object from the indirect object table
2274
+ // marshaled at the end of the Slice.
2275
+ //
2276
+ // Maintain a list of indirect references. Note that the
2277
+ // indirect index starts at 1, so we decrement it by one to
2278
+ // derive an index into the indirection table that we'll read
2279
+ // at the end of the slice.
2280
+ //
2281
+ if(patchFunc)
2282
+ {
2283
+ IndirectPatchEntry e;
2284
+ e.index = index - 1;
2285
+ e.patchFunc = patchFunc;
2286
+ e.patchAddr = patchAddr;
2287
+ _current->indirectPatchList.push_back(e);
2288
+ }
2289
+ }
2290
+ else
2291
+ {
2292
+ readInstance(index, patchFunc, patchAddr);
2293
+ }
2294
+ }
2295
+
2296
+ void
2297
+ Ice::InputStream::EncapsDecoder11::throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)) factory)
2298
+ {
2299
+ assert(!_current);
2300
+
2301
+ push(ExceptionSlice);
2302
+
2303
+ //
2304
+ // Read the first slice header.
2305
+ //
2306
+ startSlice();
2307
+ const string mostDerivedId = _current->typeId;
2308
+ ICE_DELEGATE(UserExceptionFactory) exceptionFactory = factory;
2309
+ while(true)
2310
+ {
2311
+ //
2312
+ // Look for a statically-generated factory for this ID.
2313
+ //
2314
+ if(!exceptionFactory)
2315
+ {
2316
+ exceptionFactory = factoryTable->getExceptionFactory(_current->typeId);
2317
+ }
2318
+
2319
+ //
2320
+ // We found a factory, we get out of this loop.
2321
+ //
2322
+ if(exceptionFactory)
2323
+ {
2324
+ //
2325
+ // Got factory -- ask the factory to instantiate the
2326
+ // exception, initialize the exception members, and throw
2327
+ // the exception.
2328
+ //
2329
+ try
2330
+ {
2331
+ #ifdef ICE_CPP11_MAPPING
2332
+ exceptionFactory(_current->typeId);
2333
+ #else
2334
+ exceptionFactory->createAndThrow(_current->typeId);
2335
+ #endif
2336
+ }
2337
+ catch(UserException& ex)
2338
+ {
2339
+ ex._read(_stream);
2340
+ throw;
2341
+
2342
+ // Never reached.
2343
+ }
2344
+ }
2345
+
2346
+ //
2347
+ // Slice off what we don't understand.
2348
+ //
2349
+ skipSlice();
2350
+
2351
+ //
2352
+ // If this is the last slice, raise an exception and stop un-marshalling.
2353
+ //
2354
+ if(_current->sliceFlags & FLAG_IS_LAST_SLICE)
2355
+ {
2356
+ throw UnknownUserException(__FILE__, __LINE__, mostDerivedId);
2357
+ }
2358
+
2359
+ startSlice();
2360
+ }
2361
+ }
2362
+
2363
+ void
2364
+ #ifndef NDEBUG
2365
+ Ice::InputStream::EncapsDecoder11::startInstance(SliceType sliceType)
2366
+ #else
2367
+ Ice::InputStream::EncapsDecoder11::startInstance(SliceType)
2368
+ #endif
2369
+ {
2370
+ assert(_current->sliceType == sliceType);
2371
+ _current->skipFirstSlice = true;
2372
+ }
2373
+
2374
+ SlicedDataPtr
2375
+ Ice::InputStream::EncapsDecoder11::endInstance(bool preserve)
2376
+ {
2377
+ SlicedDataPtr slicedData;
2378
+ if(preserve)
2379
+ {
2380
+ slicedData = readSlicedData();
2381
+ }
2382
+ _current->slices.clear();
2383
+ _current->indirectionTables.clear();
2384
+ _current = _current->previous;
2385
+ return slicedData;
2386
+ }
2387
+
2388
+ const std::string&
2389
+ Ice::InputStream::EncapsDecoder11::startSlice()
2390
+ {
2391
+ //
2392
+ // If first slice, don't read the header, it was already read in
2393
+ // readInstance or throwException to find the factory.
2394
+ //
2395
+ if(_current->skipFirstSlice)
2396
+ {
2397
+ _current->skipFirstSlice = false;
2398
+ return _current->typeId;
2399
+ }
2400
+
2401
+ _stream->read(_current->sliceFlags);
2402
+
2403
+ //
2404
+ // Read the type ID, for value slices the type ID is encoded as a
2405
+ // string or as an index, for exceptions it's always encoded as a
2406
+ // string.
2407
+ //
2408
+ if(_current->sliceType == ValueSlice)
2409
+ {
2410
+ if((_current->sliceFlags & FLAG_HAS_TYPE_ID_COMPACT) == FLAG_HAS_TYPE_ID_COMPACT) // Must be checked first!
2411
+ {
2412
+ _current->typeId.clear();
2413
+ _current->compactId = _stream->readSize();
2414
+ }
2415
+ else if(_current->sliceFlags & (FLAG_HAS_TYPE_ID_STRING | FLAG_HAS_TYPE_ID_INDEX))
2416
+ {
2417
+ _current->typeId = readTypeId(_current->sliceFlags & FLAG_HAS_TYPE_ID_INDEX);
2418
+ _current->compactId = -1;
2419
+ }
2420
+ else
2421
+ {
2422
+ // Only the most derived slice encodes the type ID for the compact format.
2423
+ _current->typeId.clear();
2424
+ _current->compactId = -1;
2425
+ }
2426
+ }
2427
+ else
2428
+ {
2429
+ _stream->read(_current->typeId, false);
2430
+ }
2431
+
2432
+ //
2433
+ // Read the slice size if necessary.
2434
+ //
2435
+ if(_current->sliceFlags & FLAG_HAS_SLICE_SIZE)
2436
+ {
2437
+ _stream->read(_current->sliceSize);
2438
+ if(_current->sliceSize < 4)
2439
+ {
2440
+ throw UnmarshalOutOfBoundsException(__FILE__, __LINE__);
2441
+ }
2442
+ }
2443
+ else
2444
+ {
2445
+ _current->sliceSize = 0;
2446
+ }
2447
+
2448
+ return _current->typeId;
2449
+ }
2450
+
2451
+ void
2452
+ Ice::InputStream::EncapsDecoder11::endSlice()
2453
+ {
2454
+ if(_current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS)
2455
+ {
2456
+ _stream->skipOptionals();
2457
+ }
2458
+
2459
+ //
2460
+ // Read the indirect object table if one is present.
2461
+ //
2462
+ if(_current->sliceFlags & FLAG_HAS_INDIRECTION_TABLE)
2463
+ {
2464
+ IndexList indirectionTable(static_cast<size_t>(_stream->readAndCheckSeqSize(1)));
2465
+ for(IndexList::iterator p = indirectionTable.begin(); p != indirectionTable.end(); ++p)
2466
+ {
2467
+ *p = readInstance(_stream->readSize(), 0, 0);
2468
+ }
2469
+
2470
+ //
2471
+ // Sanity checks. If there are optional members, it's possible
2472
+ // that not all object references were read if they are from
2473
+ // unknown optional data members.
2474
+ //
2475
+ if(indirectionTable.empty())
2476
+ {
2477
+ throw MarshalException(__FILE__, __LINE__, "empty indirection table");
2478
+ }
2479
+ if(_current->indirectPatchList.empty() && !(_current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS))
2480
+ {
2481
+ throw MarshalException(__FILE__, __LINE__, "no references to indirection table");
2482
+ }
2483
+
2484
+ //
2485
+ // Convert indirect references into direct references.
2486
+ //
2487
+ IndirectPatchList::iterator p;
2488
+ for(p = _current->indirectPatchList.begin(); p != _current->indirectPatchList.end(); ++p)
2489
+ {
2490
+ assert(p->index >= 0);
2491
+ if(p->index >= static_cast<Int>(indirectionTable.size()))
2492
+ {
2493
+ throw MarshalException(__FILE__, __LINE__, "indirection out of range");
2494
+ }
2495
+ addPatchEntry(indirectionTable[static_cast<size_t>(p->index)], p->patchFunc, p->patchAddr);
2496
+ }
2497
+ _current->indirectPatchList.clear();
2498
+ }
2499
+ }
2500
+
2501
+ void
2502
+ Ice::InputStream::EncapsDecoder11::skipSlice()
2503
+ {
2504
+ _stream->traceSkipSlice(_current->typeId, _current->sliceType);
2505
+
2506
+ Container::iterator start = _stream->i;
2507
+
2508
+ if(_current->sliceFlags & FLAG_HAS_SLICE_SIZE)
2509
+ {
2510
+ assert(_current->sliceSize >= 4);
2511
+ _stream->skip(static_cast<size_t>(_current->sliceSize) - sizeof(Int));
2512
+ }
2513
+ else
2514
+ {
2515
+ if(_current->sliceType == ValueSlice)
2516
+ {
2517
+ throw NoValueFactoryException(__FILE__, __LINE__,
2518
+ "no value factory found and compact format prevents "
2519
+ "slicing (the sender should use the sliced format instead)",
2520
+ _current->typeId);
2521
+ }
2522
+ else
2523
+ {
2524
+ throw UnknownUserException(__FILE__, __LINE__, _current->typeId);
2525
+ }
2526
+ }
2527
+
2528
+ //
2529
+ // Preserve this slice.
2530
+ //
2531
+ SliceInfoPtr info = ICE_MAKE_SHARED(SliceInfo);
2532
+ info->typeId = _current->typeId;
2533
+ info->compactId = _current->compactId;
2534
+ info->hasOptionalMembers = _current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS;
2535
+ info->isLastSlice = _current->sliceFlags & FLAG_IS_LAST_SLICE;
2536
+ if(info->hasOptionalMembers)
2537
+ {
2538
+ //
2539
+ // Don't include the optional member end marker. It will be re-written by
2540
+ // endSlice when the sliced data is re-written.
2541
+ //
2542
+ vector<Byte>(start, _stream->i - 1).swap(info->bytes);
2543
+ }
2544
+ else
2545
+ {
2546
+ vector<Byte>(start, _stream->i).swap(info->bytes);
2547
+ }
2548
+
2549
+ _current->indirectionTables.push_back(IndexList());
2550
+
2551
+ //
2552
+ // Read the indirect object table. We read the instances or their
2553
+ // IDs if the instance is a reference to an already un-marhsaled
2554
+ // object.
2555
+ //
2556
+ // The SliceInfo object sequence is initialized only if
2557
+ // readSlicedData is called.
2558
+ //
2559
+ if(_current->sliceFlags & FLAG_HAS_INDIRECTION_TABLE)
2560
+ {
2561
+ IndexList& table = _current->indirectionTables.back();
2562
+ table.resize(static_cast<size_t>(_stream->readAndCheckSeqSize(1)));
2563
+ for(IndexList::iterator p = table.begin(); p != table.end(); ++p)
2564
+ {
2565
+ *p = readInstance(_stream->readSize(), 0, 0);
2566
+ }
2567
+ }
2568
+
2569
+ _current->slices.push_back(info);
2570
+ }
2571
+
2572
+ bool
2573
+ Ice::InputStream::EncapsDecoder11::readOptional(Ice::Int readTag, Ice::OptionalFormat expectedFormat)
2574
+ {
2575
+ if(!_current)
2576
+ {
2577
+ return _stream->readOptImpl(readTag, expectedFormat);
2578
+ }
2579
+ else if(_current->sliceFlags & FLAG_HAS_OPTIONAL_MEMBERS)
2580
+ {
2581
+ return _stream->readOptImpl(readTag, expectedFormat);
2582
+ }
2583
+ return false;
2584
+ }
2585
+
2586
+ Int
2587
+ Ice::InputStream::EncapsDecoder11::readInstance(Int index, PatchFunc patchFunc, void* patchAddr)
2588
+ {
2589
+ assert(index > 0);
2590
+
2591
+ if(index > 1)
2592
+ {
2593
+ if(patchFunc)
2594
+ {
2595
+ addPatchEntry(index, patchFunc, patchAddr);
2596
+ }
2597
+ return index;
2598
+ }
2599
+
2600
+ push(ValueSlice);
2601
+
2602
+ //
2603
+ // Get the object ID before we start reading slices. If some
2604
+ // slices are skiped, the indirect object table are still read and
2605
+ // might read other instances.
2606
+ //
2607
+ index = ++_valueIdIndex;
2608
+
2609
+ //
2610
+ // Read the first slice header.
2611
+ //
2612
+ startSlice();
2613
+ const string mostDerivedId = _current->typeId;
2614
+ Ice::ValuePtr v;
2615
+ while(true)
2616
+ {
2617
+ if(_current->compactId >= 0)
2618
+ {
2619
+ //
2620
+ // Translate a compact (numeric) type ID into a string type ID.
2621
+ //
2622
+ _current->typeId = _stream->resolveCompactId(_current->compactId);
2623
+ if(_current->typeId.empty())
2624
+ {
2625
+ _current->typeId = IceInternal::factoryTable->getTypeId(_current->compactId);
2626
+ }
2627
+ }
2628
+
2629
+ if(!_current->typeId.empty())
2630
+ {
2631
+ v = newInstance(_current->typeId);
2632
+
2633
+ //
2634
+ // We found a factory, we get out of this loop.
2635
+ //
2636
+ if(v)
2637
+ {
2638
+ break;
2639
+ }
2640
+ }
2641
+
2642
+ //
2643
+ // If value slicing is disabled, stop unmarshaling.
2644
+ //
2645
+ if(!_sliceValues)
2646
+ {
2647
+ throw NoValueFactoryException(__FILE__, __LINE__, "no value factory found and value slicing is disabled",
2648
+ _current->typeId);
2649
+ }
2650
+
2651
+ //
2652
+ // Slice off what we don't understand.
2653
+ //
2654
+ skipSlice();
2655
+
2656
+ //
2657
+ // If this is the last slice, keep the object as an opaque UnknownSlicedValue.
2658
+ //
2659
+ if(_current->sliceFlags & FLAG_IS_LAST_SLICE)
2660
+ {
2661
+ //
2662
+ // Provide a factory with an opportunity to supply the object.
2663
+ // We pass the "::Ice::Object" ID to indicate that this is the
2664
+ // last chance to preserve the object.
2665
+ //
2666
+ v = newInstance(Object::ice_staticId());
2667
+ if(!v)
2668
+ {
2669
+ v = ICE_MAKE_SHARED(UnknownSlicedValue, mostDerivedId);
2670
+ }
2671
+
2672
+ break;
2673
+ }
2674
+
2675
+ startSlice(); // Read next Slice header for next iteration.
2676
+ }
2677
+
2678
+ if(++_classGraphDepth > _classGraphDepthMax)
2679
+ {
2680
+ throw MarshalException(__FILE__, __LINE__, "maximum class graph depth reached");
2681
+ }
2682
+
2683
+ //
2684
+ // Unmarshal the object.
2685
+ //
2686
+ unmarshal(index, v);
2687
+
2688
+ --_classGraphDepth;
2689
+
2690
+ if(!_current && !_patchMap.empty())
2691
+ {
2692
+ //
2693
+ // If any entries remain in the patch map, the sender has sent an index for an object, but failed
2694
+ // to supply the object.
2695
+ //
2696
+ throw MarshalException(__FILE__, __LINE__, "index for class received, but no instance");
2697
+ }
2698
+
2699
+ if(patchFunc)
2700
+ {
2701
+ patchFunc(patchAddr, v);
2702
+ }
2703
+ return index;
2704
+ }
2705
+
2706
+ SlicedDataPtr
2707
+ Ice::InputStream::EncapsDecoder11::readSlicedData()
2708
+ {
2709
+ if(_current->slices.empty()) // No preserved slices.
2710
+ {
2711
+ return 0;
2712
+ }
2713
+
2714
+ //
2715
+ // The indirectionTables member holds the indirection table for
2716
+ // each slice in slices.
2717
+ //
2718
+ assert(_current->slices.size() == _current->indirectionTables.size());
2719
+ for(SliceInfoSeq::size_type n = 0; n < _current->slices.size(); ++n)
2720
+ {
2721
+ //
2722
+ // We use the "instances" list in SliceInfo to hold references
2723
+ // to the target instances. Note that the instances might not have
2724
+ // been read yet in the case of a circular reference to an
2725
+ // enclosing instance.
2726
+ //
2727
+ const IndexList& table = _current->indirectionTables[n];
2728
+ vector<ValuePtr>& instances = _current->slices[n]->instances;
2729
+ instances.resize(table.size());
2730
+ IndexList::size_type j = 0;
2731
+ for(IndexList::const_iterator p = table.begin(); p != table.end(); ++p)
2732
+ {
2733
+ #ifdef ICE_CPP11_MAPPING
2734
+ addPatchEntry(*p, &patchHandle<Value>, &instances[j++]);
2735
+ #else
2736
+ addPatchEntry(*p, &patchHandle<Object>, &instances[j++]);
2737
+ #endif
2738
+ }
2739
+ }
2740
+ return ICE_MAKE_SHARED(SlicedData, _current->slices);
2741
+ }