zeroc-ice 3.7.11 → 3.8.1

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 (895) hide show
  1. checksums.yaml +4 -4
  2. data/dist/IceRuby/Communicator.cpp +159 -376
  3. data/dist/IceRuby/Communicator.h +8 -9
  4. data/dist/IceRuby/Config.h +23 -89
  5. data/dist/IceRuby/Connection.cpp +111 -219
  6. data/dist/IceRuby/Connection.h +8 -12
  7. data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
  8. data/dist/IceRuby/DefaultSliceLoader.h +25 -0
  9. data/dist/IceRuby/Endpoint.cpp +63 -65
  10. data/dist/IceRuby/Endpoint.h +7 -11
  11. data/dist/IceRuby/ImplicitContext.cpp +26 -31
  12. data/dist/IceRuby/ImplicitContext.h +6 -10
  13. data/dist/IceRuby/Init.cpp +27 -40
  14. data/dist/IceRuby/Logger.cpp +23 -28
  15. data/dist/IceRuby/Logger.h +8 -12
  16. data/dist/IceRuby/Operation.cpp +177 -219
  17. data/dist/IceRuby/Operation.h +15 -18
  18. data/dist/IceRuby/Properties.cpp +133 -89
  19. data/dist/IceRuby/Properties.h +6 -10
  20. data/dist/IceRuby/Proxy.cpp +179 -649
  21. data/dist/IceRuby/Proxy.h +11 -12
  22. data/dist/IceRuby/RubySliceLoader.cpp +39 -0
  23. data/dist/IceRuby/RubySliceLoader.h +27 -0
  24. data/dist/IceRuby/Slice.cpp +88 -94
  25. data/dist/IceRuby/Slice.h +3 -7
  26. data/dist/IceRuby/Types.cpp +987 -1190
  27. data/dist/IceRuby/Types.h +390 -461
  28. data/dist/IceRuby/Util.cpp +214 -473
  29. data/dist/IceRuby/Util.h +378 -479
  30. data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
  31. data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
  32. data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +4 -10
  33. data/dist/ice/cpp/include/Ice/Buffer.h +116 -111
  34. data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
  35. data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
  36. data/dist/ice/cpp/include/Ice/Config.h +46 -62
  37. data/dist/ice/cpp/include/Ice/Connection.h +410 -0
  38. data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
  39. data/dist/ice/cpp/include/Ice/ConnectionIF.h +6 -28
  40. data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
  41. data/dist/ice/cpp/include/Ice/Current.h +60 -0
  42. data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
  43. data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
  44. data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
  45. data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
  46. data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
  47. data/dist/ice/cpp/include/Ice/Exception.h +46 -151
  48. data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
  49. data/dist/ice/cpp/include/Ice/Format.h +11 -27
  50. data/dist/ice/cpp/include/Ice/Ice.h +53 -48
  51. data/dist/ice/cpp/include/Ice/IconvStringConverter.h +165 -326
  52. data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
  53. data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
  54. data/dist/ice/cpp/include/Ice/Initialize.h +113 -927
  55. data/dist/ice/cpp/include/Ice/InputStream.h +748 -1320
  56. data/dist/ice/cpp/include/Ice/InstanceF.h +4 -10
  57. data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
  58. data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
  59. data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
  60. data/dist/ice/cpp/include/Ice/Logger.h +62 -0
  61. data/dist/ice/cpp/include/Ice/LoggerUtil.h +124 -147
  62. data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
  63. data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +41 -71
  64. data/dist/ice/cpp/include/Ice/Object.h +151 -490
  65. data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
  66. data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
  67. data/dist/ice/cpp/include/Ice/ObjectF.h +5 -19
  68. data/dist/ice/cpp/include/Ice/ObserverHelper.h +115 -132
  69. data/dist/ice/cpp/include/Ice/OutgoingAsync.h +392 -748
  70. data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
  71. data/dist/ice/cpp/include/Ice/OutputStream.h +756 -956
  72. data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
  73. data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
  74. data/dist/ice/cpp/include/{IceUtil → Ice}/PopDisableWarnings.h +8 -6
  75. data/dist/ice/cpp/include/Ice/Properties.h +307 -0
  76. data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
  77. data/dist/ice/cpp/include/Ice/Proxy.h +665 -5094
  78. data/dist/ice/cpp/include/Ice/ProxyF.h +2 -44
  79. data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
  80. data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
  81. data/dist/ice/cpp/include/Ice/ReferenceF.h +4 -19
  82. data/dist/ice/cpp/include/Ice/RequestHandlerF.h +8 -18
  83. data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +276 -0
  84. data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
  85. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
  86. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
  87. data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
  88. data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
  89. data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +286 -0
  90. data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
  91. data/dist/ice/cpp/include/Ice/Service.h +182 -342
  92. data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
  93. data/dist/ice/cpp/include/Ice/SlicedData.h +113 -160
  94. data/dist/ice/cpp/include/Ice/SlicedDataF.h +17 -27
  95. data/dist/ice/cpp/include/Ice/StreamHelpers.h +532 -1070
  96. data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
  97. data/dist/ice/cpp/include/Ice/StringConverter.h +152 -63
  98. data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
  99. data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
  100. data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
  101. data/dist/ice/cpp/include/Ice/UUID.h +6 -9
  102. data/dist/ice/cpp/include/Ice/UserException.h +46 -0
  103. data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +4 -79
  104. data/dist/ice/cpp/include/Ice/Value.h +103 -115
  105. data/dist/ice/cpp/include/Ice/ValueF.h +6 -11
  106. data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +16 -1877
  107. data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +16 -1185
  108. data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +46 -146
  109. data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
  110. data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +49 -93
  111. data/dist/ice/cpp/include/generated/Ice/Identity.h +70 -226
  112. data/dist/ice/cpp/include/generated/Ice/Locator.h +494 -3850
  113. data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
  114. data/dist/ice/cpp/include/generated/Ice/Metrics.h +937 -4603
  115. data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
  116. data/dist/ice/cpp/include/generated/Ice/Process.h +197 -929
  117. data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +249 -1301
  118. data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
  119. data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +637 -2620
  120. data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
  121. data/dist/ice/cpp/include/generated/Ice/Router.h +429 -1783
  122. data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +18 -65
  123. data/dist/ice/cpp/include/generated/Ice/Version.h +73 -318
  124. data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
  125. data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
  126. data/dist/ice/cpp/src/Ice/Acceptor.h +28 -24
  127. data/dist/ice/cpp/src/Ice/AcceptorF.h +6 -14
  128. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
  129. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
  130. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
  131. data/dist/ice/cpp/src/Ice/ArgVector.cpp +17 -18
  132. data/dist/ice/cpp/src/Ice/ArgVector.h +19 -25
  133. data/dist/ice/cpp/src/Ice/Base64.cpp +66 -66
  134. data/dist/ice/cpp/src/Ice/Base64.h +14 -19
  135. data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +70 -121
  136. data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +37 -47
  137. data/dist/ice/cpp/src/Ice/Buffer.cpp +73 -41
  138. data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
  139. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +215 -249
  140. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +38 -60
  141. data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
  142. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
  143. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
  144. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +63 -184
  145. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +30 -51
  146. data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +4 -14
  147. data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
  148. data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +578 -792
  149. data/dist/ice/cpp/src/Ice/ConnectionFactory.h +200 -200
  150. data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +6 -19
  151. data/dist/ice/cpp/src/Ice/ConnectionI.cpp +1674 -1782
  152. data/dist/ice/cpp/src/Ice/ConnectionI.h +333 -293
  153. data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
  154. data/dist/ice/cpp/src/Ice/Connector.h +25 -19
  155. data/dist/ice/cpp/src/Ice/ConnectorF.h +4 -11
  156. data/dist/ice/cpp/src/{IceUtil → Ice}/ConsoleUtil.cpp +32 -53
  157. data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
  158. data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
  159. data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
  160. data/dist/ice/cpp/src/Ice/DLLMain.cpp +25 -35
  161. data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
  162. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +41 -119
  163. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +27 -41
  164. data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +4 -11
  165. data/dist/ice/cpp/src/Ice/Demangle.cpp +26 -0
  166. data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
  167. data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +44 -112
  168. data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
  169. data/dist/ice/cpp/src/Ice/Endian.h +40 -0
  170. data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +35 -59
  171. data/dist/ice/cpp/src/Ice/EndpointFactory.h +82 -103
  172. data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +4 -11
  173. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +54 -87
  174. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +28 -33
  175. data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +4 -11
  176. data/dist/ice/cpp/src/Ice/EndpointI.cpp +53 -23
  177. data/dist/ice/cpp/src/Ice/EndpointI.h +132 -200
  178. data/dist/ice/cpp/src/Ice/EndpointIF.h +11 -39
  179. data/dist/ice/cpp/src/Ice/EventHandler.cpp +3 -26
  180. data/dist/ice/cpp/src/Ice/EventHandler.h +46 -56
  181. data/dist/ice/cpp/src/Ice/EventHandlerF.h +4 -14
  182. data/dist/ice/cpp/src/Ice/Exception.cpp +3 -816
  183. data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
  184. data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
  185. data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
  186. data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
  187. data/dist/ice/cpp/src/Ice/HashUtil.h +46 -32
  188. data/dist/ice/cpp/src/Ice/HttpParser.cpp +431 -431
  189. data/dist/ice/cpp/src/Ice/HttpParser.h +95 -100
  190. data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +207 -324
  191. data/dist/ice/cpp/src/Ice/IPEndpointI.h +80 -126
  192. data/dist/ice/cpp/src/Ice/IPEndpointIF.h +6 -17
  193. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
  194. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
  195. data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
  196. data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
  197. data/dist/ice/cpp/src/Ice/Initialize.cpp +48 -542
  198. data/dist/ice/cpp/src/Ice/InputStream.cpp +848 -1385
  199. data/dist/ice/cpp/src/Ice/Instance.cpp +816 -827
  200. data/dist/ice/cpp/src/Ice/Instance.h +202 -212
  201. data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +526 -661
  202. data/dist/ice/cpp/src/Ice/InstrumentationI.h +171 -192
  203. data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
  204. data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
  205. data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +291 -329
  206. data/dist/ice/cpp/src/Ice/LocatorInfo.h +144 -157
  207. data/dist/ice/cpp/src/Ice/LocatorInfoF.h +8 -17
  208. data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +561 -743
  209. data/dist/ice/cpp/src/Ice/LoggerAdminI.h +18 -28
  210. data/dist/ice/cpp/src/Ice/LoggerI.cpp +66 -91
  211. data/dist/ice/cpp/src/Ice/LoggerI.h +36 -41
  212. data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
  213. data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
  214. data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +14 -38
  215. data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
  216. data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +194 -280
  217. data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
  218. data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
  219. data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
  220. data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
  221. data/dist/ice/cpp/src/Ice/Network.cpp +595 -917
  222. data/dist/ice/cpp/src/Ice/Network.h +189 -213
  223. data/dist/ice/cpp/src/Ice/NetworkF.h +2 -10
  224. data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +99 -104
  225. data/dist/ice/cpp/src/Ice/NetworkProxy.h +49 -54
  226. data/dist/ice/cpp/src/Ice/NetworkProxyF.h +4 -11
  227. data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +16 -18
  228. data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +22 -27
  229. data/dist/ice/cpp/src/Ice/Object.cpp +152 -338
  230. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +170 -113
  231. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +41 -41
  232. data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +4 -15
  233. data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +580 -727
  234. data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +149 -145
  235. data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +36 -17
  236. data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
  237. data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
  238. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +147 -187
  239. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +56 -64
  240. data/dist/ice/cpp/src/{IceUtil → Ice}/Options.cpp +187 -258
  241. data/dist/ice/cpp/src/Ice/Options.h +119 -0
  242. data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +516 -732
  243. data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
  244. data/dist/ice/cpp/src/Ice/OutputStream.cpp +610 -543
  245. data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
  246. data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
  247. data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +118 -277
  248. data/dist/ice/cpp/src/Ice/PluginManagerI.h +41 -48
  249. data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
  250. data/dist/ice/cpp/src/Ice/PropertyNames.cpp +519 -1341
  251. data/dist/ice/cpp/src/Ice/PropertyNames.h +49 -64
  252. data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
  253. data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
  254. data/dist/ice/cpp/src/Ice/Protocol.cpp +129 -94
  255. data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
  256. data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +117 -62
  257. data/dist/ice/cpp/src/Ice/ProtocolInstance.h +63 -82
  258. data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +4 -11
  259. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +10 -32
  260. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +25 -54
  261. data/dist/ice/cpp/src/Ice/Proxy.cpp +294 -1357
  262. data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
  263. data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
  264. data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
  265. data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
  266. data/dist/ice/cpp/src/Ice/Random.h +23 -0
  267. data/dist/ice/cpp/src/Ice/Reference.cpp +635 -1097
  268. data/dist/ice/cpp/src/Ice/Reference.h +314 -298
  269. data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +320 -378
  270. data/dist/ice/cpp/src/Ice/ReferenceFactory.h +48 -66
  271. data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +4 -9
  272. data/dist/ice/cpp/src/Ice/RequestHandler.cpp +15 -24
  273. data/dist/ice/cpp/src/Ice/RequestHandler.h +43 -68
  274. data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
  275. data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
  276. data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
  277. data/dist/ice/cpp/src/Ice/RetryQueue.cpp +51 -57
  278. data/dist/ice/cpp/src/Ice/RetryQueue.h +39 -46
  279. data/dist/ice/cpp/src/Ice/RetryQueueF.h +4 -9
  280. data/dist/ice/cpp/src/Ice/RouterInfo.cpp +97 -201
  281. data/dist/ice/cpp/src/Ice/RouterInfo.h +61 -118
  282. data/dist/ice/cpp/src/Ice/RouterInfoF.h +6 -14
  283. data/dist/ice/cpp/src/Ice/SHA1.cpp +86 -60
  284. data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
  285. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
  286. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
  287. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +521 -0
  288. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
  289. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
  290. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +646 -0
  291. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
  292. data/dist/ice/cpp/src/{IceSSL → Ice/SSL}/RFC2253.cpp +85 -88
  293. data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
  294. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
  295. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
  296. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
  297. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
  298. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
  299. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
  300. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
  301. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +69 -0
  302. data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
  303. data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
  304. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
  305. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
  306. data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
  307. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +673 -0
  308. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +118 -0
  309. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1449 -0
  310. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
  311. data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
  312. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1088 -0
  313. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
  314. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +825 -0
  315. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
  316. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
  317. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
  318. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
  319. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1048 -0
  320. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
  321. data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +233 -0
  322. data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
  323. data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
  324. data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
  325. data/dist/ice/cpp/src/Ice/Selector.cpp +341 -606
  326. data/dist/ice/cpp/src/Ice/Selector.h +167 -224
  327. data/dist/ice/cpp/src/Ice/ServantManager.cpp +195 -128
  328. data/dist/ice/cpp/src/Ice/ServantManager.h +52 -55
  329. data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
  330. data/dist/ice/cpp/src/Ice/Service.cpp +548 -641
  331. data/dist/ice/cpp/src/Ice/SharedContext.h +13 -26
  332. data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
  333. data/dist/ice/cpp/src/Ice/SlicedData.cpp +17 -96
  334. data/dist/ice/cpp/src/Ice/StreamSocket.cpp +104 -151
  335. data/dist/ice/cpp/src/Ice/StreamSocket.h +48 -60
  336. data/dist/ice/cpp/src/Ice/StringConverter.cpp +586 -0
  337. data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
  338. data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +41 -47
  339. data/dist/ice/cpp/src/Ice/SysLoggerI.h +24 -27
  340. data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +16 -17
  341. data/dist/ice/cpp/src/Ice/SystemdJournalI.h +19 -25
  342. data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
  343. data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +67 -88
  344. data/dist/ice/cpp/src/Ice/TcpAcceptor.h +34 -40
  345. data/dist/ice/cpp/src/Ice/TcpConnector.cpp +42 -41
  346. data/dist/ice/cpp/src/Ice/TcpConnector.h +26 -35
  347. data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +172 -146
  348. data/dist/ice/cpp/src/Ice/TcpEndpointI.h +76 -80
  349. data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +38 -26
  350. data/dist/ice/cpp/src/Ice/TcpTransceiver.h +40 -45
  351. data/dist/ice/cpp/src/Ice/ThreadPool.cpp +333 -515
  352. data/dist/ice/cpp/src/Ice/ThreadPool.h +202 -290
  353. data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
  354. data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
  355. data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
  356. data/dist/ice/cpp/src/Ice/Timer.cpp +73 -167
  357. data/dist/ice/cpp/src/Ice/Timer.h +212 -0
  358. data/dist/ice/cpp/src/Ice/TraceLevels.cpp +11 -29
  359. data/dist/ice/cpp/src/Ice/TraceLevels.h +22 -28
  360. data/dist/ice/cpp/src/Ice/TraceLevelsF.h +4 -11
  361. data/dist/ice/cpp/src/Ice/TraceUtil.cpp +136 -215
  362. data/dist/ice/cpp/src/Ice/TraceUtil.h +27 -16
  363. data/dist/ice/cpp/src/Ice/Transceiver.cpp +3 -7
  364. data/dist/ice/cpp/src/Ice/Transceiver.h +35 -32
  365. data/dist/ice/cpp/src/Ice/TransceiverF.h +10 -20
  366. data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
  367. data/dist/ice/cpp/src/Ice/UdpConnector.cpp +39 -39
  368. data/dist/ice/cpp/src/Ice/UdpConnector.h +27 -36
  369. data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +178 -213
  370. data/dist/ice/cpp/src/Ice/UdpEndpointI.h +82 -85
  371. data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +201 -221
  372. data/dist/ice/cpp/src/Ice/UdpTransceiver.h +68 -74
  373. data/dist/ice/cpp/{include/IceUtil → src/Ice}/UndefSysMacros.h +12 -12
  374. data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
  375. data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
  376. data/dist/ice/cpp/src/Ice/Value.cpp +107 -38
  377. data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +10 -15
  378. data/dist/ice/cpp/src/Ice/WSAcceptor.h +31 -37
  379. data/dist/ice/cpp/src/Ice/WSConnector.cpp +25 -40
  380. data/dist/ice/cpp/src/Ice/WSConnector.h +26 -33
  381. data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +164 -217
  382. data/dist/ice/cpp/src/Ice/WSEndpoint.h +72 -83
  383. data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +469 -458
  384. data/dist/ice/cpp/src/Ice/WSTransceiver.h +117 -123
  385. data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +20 -29
  386. data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
  387. data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +20 -31
  388. data/dist/ice/cpp/src/Ice/generated/Identity.cpp +24 -34
  389. data/dist/ice/cpp/src/Ice/generated/Locator.cpp +454 -1744
  390. data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
  391. data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +824 -1971
  392. data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
  393. data/dist/ice/cpp/src/Ice/generated/Process.cpp +190 -331
  394. data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +289 -449
  395. data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
  396. data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +547 -867
  397. data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
  398. data/dist/ice/cpp/src/Ice/generated/Router.cpp +406 -723
  399. data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +19 -29
  400. data/dist/ice/cpp/src/Ice/generated/Version.cpp +28 -31
  401. data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +76 -139
  402. data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +55 -96
  403. data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +190 -303
  404. data/dist/ice/cpp/src/IceDiscovery/LookupI.h +126 -185
  405. data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +56 -77
  406. data/dist/ice/cpp/src/IceDiscovery/PluginI.h +20 -25
  407. data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
  408. data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +14 -37
  409. data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +411 -649
  410. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
  411. data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
  412. data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
  413. data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
  414. data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
  415. data/dist/ice/cpp/src/Slice/FileTracker.cpp +25 -75
  416. data/dist/ice/cpp/src/Slice/FileTracker.h +35 -56
  417. data/dist/ice/cpp/src/Slice/Grammar.cpp +2711 -3382
  418. data/dist/ice/cpp/src/Slice/Grammar.h +95 -75
  419. data/dist/ice/cpp/src/Slice/GrammarUtil.h +117 -217
  420. data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +486 -0
  421. data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
  422. data/dist/ice/cpp/src/Slice/Parser.cpp +3068 -5223
  423. data/dist/ice/cpp/src/Slice/Parser.h +1086 -1065
  424. data/dist/ice/cpp/src/Slice/Preprocessor.cpp +97 -599
  425. data/dist/ice/cpp/src/Slice/Preprocessor.h +26 -42
  426. data/dist/ice/cpp/src/Slice/Scanner.cpp +1562 -924
  427. data/dist/ice/cpp/src/Slice/SliceUtil.cpp +517 -113
  428. data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +254 -269
  429. data/dist/ice/cpp/src/Slice/Util.h +126 -35
  430. data/dist/ice/cpp/src/slice2rb/Main.cpp +13 -15
  431. data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
  432. data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
  433. data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
  434. data/dist/ice/slice/Glacier2/Metrics.ice +34 -75
  435. data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +42 -98
  436. data/dist/ice/slice/Glacier2/Router.ice +80 -173
  437. data/dist/ice/slice/Glacier2/SSLInfo.ice +23 -40
  438. data/dist/ice/slice/Glacier2/Session.ice +120 -261
  439. data/dist/ice/slice/Ice/BuiltinSequences.ice +33 -38
  440. data/dist/ice/slice/Ice/Context.ice +24 -0
  441. data/dist/ice/slice/Ice/EndpointTypes.ice +35 -33
  442. data/dist/ice/slice/Ice/Identity.ice +24 -63
  443. data/dist/ice/slice/Ice/Locator.ice +61 -226
  444. data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
  445. data/dist/ice/slice/Ice/Metrics.ice +189 -424
  446. data/dist/ice/slice/Ice/OperationMode.ice +38 -0
  447. data/dist/ice/slice/Ice/Process.ice +16 -52
  448. data/dist/ice/slice/Ice/PropertiesAdmin.ice +25 -75
  449. data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
  450. data/dist/ice/slice/Ice/RemoteLogger.ice +113 -213
  451. data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
  452. data/dist/ice/slice/Ice/Router.ice +42 -91
  453. data/dist/ice/slice/Ice/SliceChecksumDict.ice +7 -25
  454. data/dist/ice/slice/Ice/Version.ice +31 -39
  455. data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
  456. data/dist/ice/slice/IceGrid/Admin.ice +942 -1918
  457. data/dist/ice/slice/IceGrid/Descriptor.ice +476 -1051
  458. data/dist/ice/slice/IceGrid/Exception.ice +86 -384
  459. data/dist/ice/slice/IceGrid/FileParser.ice +23 -59
  460. data/dist/ice/slice/IceGrid/Registry.ice +117 -256
  461. data/dist/ice/slice/IceGrid/Session.ice +46 -110
  462. data/dist/ice/slice/IceGrid/UserAccountMapper.ice +22 -57
  463. data/dist/ice/slice/IceStorm/IceStorm.ice +173 -401
  464. data/dist/ice/slice/IceStorm/Metrics.ice +28 -70
  465. data/dist/lib/Glacier2/Metrics.rb +16 -31
  466. data/dist/lib/Glacier2/PermissionsVerifier.rb +18 -50
  467. data/dist/lib/Glacier2/Router.rb +20 -42
  468. data/dist/lib/Glacier2/SSLInfo.rb +14 -22
  469. data/dist/lib/Glacier2/Session.rb +53 -113
  470. data/dist/lib/Glacier2.rb +6 -6
  471. data/dist/lib/Ice/BuiltinSequences.rb +14 -26
  472. data/dist/lib/Ice/CompressBatch.rb +50 -0
  473. data/dist/lib/Ice/Context.rb +12 -0
  474. data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
  475. data/dist/lib/Ice/EndpointTypes.rb +14 -55
  476. data/dist/lib/Ice/Exception.rb +20 -0
  477. data/dist/lib/Ice/Identity.rb +10 -26
  478. data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
  479. data/dist/lib/Ice/InitializationData.rb +12 -0
  480. data/dist/lib/Ice/LocalExceptions.rb +168 -0
  481. data/dist/lib/Ice/Locator.rb +21 -134
  482. data/dist/lib/Ice/LocatorRegistry.rb +73 -0
  483. data/dist/lib/Ice/Metrics.rb +85 -132
  484. data/dist/lib/Ice/OperationMode.rb +58 -0
  485. data/dist/lib/Ice/Process.rb +12 -31
  486. data/dist/lib/Ice/PropertiesAdmin.rb +12 -36
  487. data/dist/lib/Ice/PropertyDict.rb +12 -0
  488. data/dist/lib/Ice/Proxy.rb +85 -0
  489. data/dist/lib/Ice/ProxyFunctions.rb +69 -0
  490. data/dist/lib/Ice/RemoteLogger.rb +29 -60
  491. data/dist/lib/Ice/ReplyStatus.rb +65 -0
  492. data/dist/lib/Ice/Router.rb +19 -47
  493. data/dist/lib/Ice/SliceChecksumDict.rb +5 -17
  494. data/dist/lib/Ice/SliceUtil.rb +41 -0
  495. data/dist/lib/Ice/Struct.rb +11 -0
  496. data/dist/lib/Ice/ToStringMode.rb +50 -0
  497. data/dist/lib/Ice/Value.rb +93 -0
  498. data/dist/lib/Ice/Version.rb +12 -24
  499. data/dist/lib/Ice.rb +29 -665
  500. data/dist/lib/IceBox/ServiceManager.rb +104 -0
  501. data/dist/lib/IceBox.rb +2 -4
  502. data/dist/lib/IceGrid/Admin.rb +303 -291
  503. data/dist/lib/IceGrid/Descriptor.rb +147 -192
  504. data/dist/lib/IceGrid/Exception.rb +26 -257
  505. data/dist/lib/IceGrid/FileParser.rb +12 -36
  506. data/dist/lib/IceGrid/Registry.rb +35 -76
  507. data/dist/lib/IceGrid/Session.rb +19 -34
  508. data/dist/lib/IceGrid/UserAccountMapper.rb +11 -34
  509. data/dist/lib/IceGrid.rb +3 -3
  510. data/dist/lib/IceStorm/IceStorm.rb +51 -132
  511. data/dist/lib/IceStorm/Metrics.rb +19 -37
  512. data/dist/lib/IceStorm.rb +3 -5
  513. data/extconf.rb +6 -8
  514. data/ice.gemspec +3 -3
  515. data/scripts/slice2rb +1 -3
  516. metadata +206 -386
  517. data/dist/IceRuby/ValueFactoryManager.cpp +0 -445
  518. data/dist/IceRuby/ValueFactoryManager.h +0 -95
  519. data/dist/ice/cpp/include/Ice/Application.h +0 -326
  520. data/dist/ice/cpp/include/Ice/AsyncResult.h +0 -155
  521. data/dist/ice/cpp/include/Ice/AsyncResultF.h +0 -23
  522. data/dist/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
  523. data/dist/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
  524. data/dist/ice/cpp/include/Ice/Comparable.h +0 -205
  525. data/dist/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
  526. data/dist/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
  527. data/dist/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
  528. data/dist/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
  529. data/dist/ice/cpp/include/Ice/Dispatcher.h +0 -67
  530. data/dist/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
  531. data/dist/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
  532. data/dist/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
  533. data/dist/ice/cpp/include/Ice/FactoryTable.h +0 -73
  534. data/dist/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
  535. data/dist/ice/cpp/include/Ice/Functional.h +0 -140
  536. data/dist/ice/cpp/include/Ice/GCObject.h +0 -76
  537. data/dist/ice/cpp/include/Ice/Handle.h +0 -182
  538. data/dist/ice/cpp/include/Ice/Incoming.h +0 -225
  539. data/dist/ice/cpp/include/Ice/IncomingAsync.h +0 -186
  540. data/dist/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
  541. data/dist/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
  542. data/dist/ice/cpp/include/Ice/LocalObject.h +0 -35
  543. data/dist/ice/cpp/include/Ice/LocalObjectF.h +0 -21
  544. data/dist/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
  545. data/dist/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
  546. data/dist/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
  547. data/dist/ice/cpp/include/Ice/Optional.h +0 -1114
  548. data/dist/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
  549. data/dist/ice/cpp/include/Ice/Protocol.h +0 -274
  550. data/dist/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
  551. data/dist/ice/cpp/include/Ice/ProxyHandle.h +0 -318
  552. data/dist/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
  553. data/dist/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
  554. data/dist/ice/cpp/include/Ice/SHA1.h +0 -40
  555. data/dist/ice/cpp/include/Ice/ServantManagerF.h +0 -21
  556. data/dist/ice/cpp/include/Ice/SliceChecksums.h +0 -33
  557. data/dist/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
  558. data/dist/ice/cpp/include/Ice/UniquePtr.h +0 -95
  559. data/dist/ice/cpp/include/Ice/UniqueRef.h +0 -97
  560. data/dist/ice/cpp/include/IceSSL/Config.h +0 -21
  561. data/dist/ice/cpp/include/IceSSL/IceSSL.h +0 -24
  562. data/dist/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
  563. data/dist/ice/cpp/include/IceSSL/Plugin.h +0 -712
  564. data/dist/ice/cpp/include/IceSSL/SChannel.h +0 -72
  565. data/dist/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
  566. data/dist/ice/cpp/include/IceUtil/Atomic.h +0 -179
  567. data/dist/ice/cpp/include/IceUtil/Cond.h +0 -317
  568. data/dist/ice/cpp/include/IceUtil/Config.h +0 -392
  569. data/dist/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
  570. data/dist/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
  571. data/dist/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -96
  572. data/dist/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
  573. data/dist/ice/cpp/include/IceUtil/Exception.h +0 -394
  574. data/dist/ice/cpp/include/IceUtil/FileUtil.h +0 -140
  575. data/dist/ice/cpp/include/IceUtil/Functional.h +0 -389
  576. data/dist/ice/cpp/include/IceUtil/Handle.h +0 -261
  577. data/dist/ice/cpp/include/IceUtil/IceUtil.h +0 -40
  578. data/dist/ice/cpp/include/IceUtil/InputUtil.h +0 -42
  579. data/dist/ice/cpp/include/IceUtil/Iterator.h +0 -31
  580. data/dist/ice/cpp/include/IceUtil/Lock.h +0 -128
  581. data/dist/ice/cpp/include/IceUtil/Monitor.h +0 -243
  582. data/dist/ice/cpp/include/IceUtil/Mutex.h +0 -349
  583. data/dist/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
  584. data/dist/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
  585. data/dist/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
  586. data/dist/ice/cpp/include/IceUtil/Optional.h +0 -433
  587. data/dist/ice/cpp/include/IceUtil/Options.h +0 -135
  588. data/dist/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
  589. data/dist/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
  590. data/dist/ice/cpp/include/IceUtil/Random.h +0 -55
  591. data/dist/ice/cpp/include/IceUtil/RecMutex.h +0 -107
  592. data/dist/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
  593. data/dist/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
  594. data/dist/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
  595. data/dist/ice/cpp/include/IceUtil/Shared.h +0 -127
  596. data/dist/ice/cpp/include/IceUtil/StopWatch.h +0 -49
  597. data/dist/ice/cpp/include/IceUtil/StringConverter.h +0 -195
  598. data/dist/ice/cpp/include/IceUtil/StringUtil.h +0 -97
  599. data/dist/ice/cpp/include/IceUtil/Thread.h +0 -160
  600. data/dist/ice/cpp/include/IceUtil/ThreadException.h +0 -94
  601. data/dist/ice/cpp/include/IceUtil/Time.h +0 -205
  602. data/dist/ice/cpp/include/IceUtil/Timer.h +0 -153
  603. data/dist/ice/cpp/include/IceUtil/UUID.h +0 -21
  604. data/dist/ice/cpp/include/generated/Glacier2/Metrics.h +0 -475
  605. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifier.h +0 -1430
  606. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifierF.h +0 -147
  607. data/dist/ice/cpp/include/generated/Glacier2/Router.h +0 -3260
  608. data/dist/ice/cpp/include/generated/Glacier2/RouterF.h +0 -125
  609. data/dist/ice/cpp/include/generated/Glacier2/SSLInfo.h +0 -223
  610. data/dist/ice/cpp/include/generated/Glacier2/Session.h +0 -5894
  611. data/dist/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
  612. data/dist/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
  613. data/dist/ice/cpp/include/generated/Ice/Connection.h +0 -1703
  614. data/dist/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
  615. data/dist/ice/cpp/include/generated/Ice/Current.h +0 -322
  616. data/dist/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
  617. data/dist/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
  618. data/dist/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
  619. data/dist/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
  620. data/dist/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
  621. data/dist/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
  622. data/dist/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
  623. data/dist/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
  624. data/dist/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
  625. data/dist/ice/cpp/include/generated/Ice/Logger.h +0 -237
  626. data/dist/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
  627. data/dist/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
  628. data/dist/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
  629. data/dist/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
  630. data/dist/ice/cpp/include/generated/Ice/Plugin.h +0 -318
  631. data/dist/ice/cpp/include/generated/Ice/PluginF.h +0 -110
  632. data/dist/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
  633. data/dist/ice/cpp/include/generated/Ice/Properties.h +0 -452
  634. data/dist/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
  635. data/dist/ice/cpp/include/generated/Ice/RouterF.h +0 -125
  636. data/dist/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
  637. data/dist/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
  638. data/dist/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
  639. data/dist/ice/cpp/include/generated/IceBox/IceBox.h +0 -3269
  640. data/dist/ice/cpp/include/generated/IceGrid/Admin.h +0 -33773
  641. data/dist/ice/cpp/include/generated/IceGrid/Descriptor.h +0 -5254
  642. data/dist/ice/cpp/include/generated/IceGrid/Exception.h +0 -2834
  643. data/dist/ice/cpp/include/generated/IceGrid/FileParser.h +0 -824
  644. data/dist/ice/cpp/include/generated/IceGrid/PluginFacade.h +0 -635
  645. data/dist/ice/cpp/include/generated/IceGrid/Registry.h +0 -5089
  646. data/dist/ice/cpp/include/generated/IceGrid/Session.h +0 -2240
  647. data/dist/ice/cpp/include/generated/IceGrid/UserAccountMapper.h +0 -800
  648. data/dist/ice/cpp/include/generated/IcePatch2/FileInfo.h +0 -325
  649. data/dist/ice/cpp/include/generated/IcePatch2/FileServer.h +0 -2891
  650. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
  651. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
  652. data/dist/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
  653. data/dist/ice/cpp/include/generated/IceStorm/IceStorm.h +0 -6627
  654. data/dist/ice/cpp/include/generated/IceStorm/Metrics.h +0 -665
  655. data/dist/ice/cpp/src/Ice/ACM.cpp +0 -380
  656. data/dist/ice/cpp/src/Ice/ACM.h +0 -119
  657. data/dist/ice/cpp/src/Ice/ACMF.h +0 -30
  658. data/dist/ice/cpp/src/Ice/Acceptor.cpp +0 -16
  659. data/dist/ice/cpp/src/Ice/Application.cpp +0 -661
  660. data/dist/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
  661. data/dist/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
  662. data/dist/ice/cpp/src/Ice/CommunicatorI.h +0 -167
  663. data/dist/ice/cpp/src/Ice/Cond.cpp +0 -381
  664. data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
  665. data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
  666. data/dist/ice/cpp/src/Ice/Connector.cpp +0 -16
  667. data/dist/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
  668. data/dist/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
  669. data/dist/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
  670. data/dist/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
  671. data/dist/ice/cpp/src/Ice/GCObject.cpp +0 -442
  672. data/dist/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
  673. data/dist/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
  674. data/dist/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
  675. data/dist/ice/cpp/src/Ice/Incoming.cpp +0 -795
  676. data/dist/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
  677. data/dist/ice/cpp/src/Ice/IncomingRequest.h +0 -33
  678. data/dist/ice/cpp/src/Ice/LocalObject.cpp +0 -23
  679. data/dist/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
  680. data/dist/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
  681. data/dist/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
  682. data/dist/ice/cpp/src/Ice/PropertiesI.cpp +0 -739
  683. data/dist/ice/cpp/src/Ice/PropertiesI.h +0 -70
  684. data/dist/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
  685. data/dist/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
  686. data/dist/ice/cpp/src/Ice/ProxyFactory.h +0 -57
  687. data/dist/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
  688. data/dist/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
  689. data/dist/ice/cpp/src/Ice/ReplyStatus.h +0 -24
  690. data/dist/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
  691. data/dist/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
  692. data/dist/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
  693. data/dist/ice/cpp/src/Ice/ResponseHandler.h +0 -43
  694. data/dist/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
  695. data/dist/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
  696. data/dist/ice/cpp/src/Ice/StringUtil.h +0 -30
  697. data/dist/ice/cpp/src/Ice/Thread.cpp +0 -569
  698. data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
  699. data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
  700. data/dist/ice/cpp/src/Ice/VirtualShared.h +0 -38
  701. data/dist/ice/cpp/src/Ice/generated/Communicator.cpp +0 -79
  702. data/dist/ice/cpp/src/Ice/generated/CommunicatorF.cpp +0 -61
  703. data/dist/ice/cpp/src/Ice/generated/Connection.cpp +0 -155
  704. data/dist/ice/cpp/src/Ice/generated/ConnectionF.cpp +0 -61
  705. data/dist/ice/cpp/src/Ice/generated/Current.cpp +0 -62
  706. data/dist/ice/cpp/src/Ice/generated/Endpoint.cpp +0 -147
  707. data/dist/ice/cpp/src/Ice/generated/EndpointF.cpp +0 -61
  708. data/dist/ice/cpp/src/Ice/generated/FacetMap.cpp +0 -49
  709. data/dist/ice/cpp/src/Ice/generated/ImplicitContext.cpp +0 -75
  710. data/dist/ice/cpp/src/Ice/generated/ImplicitContextF.cpp +0 -61
  711. data/dist/ice/cpp/src/Ice/generated/Instrumentation.cpp +0 -188
  712. data/dist/ice/cpp/src/Ice/generated/InstrumentationF.cpp +0 -66
  713. data/dist/ice/cpp/src/Ice/generated/LocalException.cpp +0 -3262
  714. data/dist/ice/cpp/src/Ice/generated/LocatorF.cpp +0 -63
  715. data/dist/ice/cpp/src/Ice/generated/Logger.cpp +0 -73
  716. data/dist/ice/cpp/src/Ice/generated/LoggerF.cpp +0 -61
  717. data/dist/ice/cpp/src/Ice/generated/ObjectAdapter.cpp +0 -79
  718. data/dist/ice/cpp/src/Ice/generated/ObjectAdapterF.cpp +0 -61
  719. data/dist/ice/cpp/src/Ice/generated/ObjectFactory.cpp +0 -75
  720. data/dist/ice/cpp/src/Ice/generated/Plugin.cpp +0 -87
  721. data/dist/ice/cpp/src/Ice/generated/PluginF.cpp +0 -61
  722. data/dist/ice/cpp/src/Ice/generated/ProcessF.cpp +0 -63
  723. data/dist/ice/cpp/src/Ice/generated/Properties.cpp +0 -78
  724. data/dist/ice/cpp/src/Ice/generated/PropertiesF.cpp +0 -63
  725. data/dist/ice/cpp/src/Ice/generated/RouterF.cpp +0 -63
  726. data/dist/ice/cpp/src/Ice/generated/ServantLocator.cpp +0 -75
  727. data/dist/ice/cpp/src/Ice/generated/ServantLocatorF.cpp +0 -61
  728. data/dist/ice/cpp/src/Ice/generated/ValueFactory.cpp +0 -83
  729. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.cpp +0 -154
  730. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.h +0 -49
  731. data/dist/ice/cpp/src/Ice/ios/StreamConnector.cpp +0 -146
  732. data/dist/ice/cpp/src/Ice/ios/StreamConnector.h +0 -52
  733. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.cpp +0 -477
  734. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.h +0 -156
  735. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.cpp +0 -570
  736. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.h +0 -93
  737. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery/IceDiscovery.h +0 -1889
  738. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery.cpp +0 -915
  739. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
  740. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery.cpp +0 -730
  741. data/dist/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
  742. data/dist/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
  743. data/dist/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
  744. data/dist/ice/cpp/src/IceSSL/CertificateI.h +0 -64
  745. data/dist/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
  746. data/dist/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
  747. data/dist/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
  748. data/dist/ice/cpp/src/IceSSL/EndpointI.h +0 -100
  749. data/dist/ice/cpp/src/IceSSL/Instance.cpp +0 -28
  750. data/dist/ice/cpp/src/IceSSL/Instance.h +0 -37
  751. data/dist/ice/cpp/src/IceSSL/InstanceF.h +0 -33
  752. data/dist/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
  753. data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
  754. data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
  755. data/dist/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
  756. data/dist/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
  757. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
  758. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
  759. data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
  760. data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
  761. data/dist/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
  762. data/dist/ice/cpp/src/IceSSL/PluginI.h +0 -67
  763. data/dist/ice/cpp/src/IceSSL/RFC2253.h +0 -62
  764. data/dist/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
  765. data/dist/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
  766. data/dist/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
  767. data/dist/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
  768. data/dist/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
  769. data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
  770. data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
  771. data/dist/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
  772. data/dist/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
  773. data/dist/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
  774. data/dist/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
  775. data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
  776. data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
  777. data/dist/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
  778. data/dist/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
  779. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
  780. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
  781. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
  782. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
  783. data/dist/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
  784. data/dist/ice/cpp/src/IceSSL/TrustManager.h +0 -46
  785. data/dist/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
  786. data/dist/ice/cpp/src/IceSSL/Util.cpp +0 -192
  787. data/dist/ice/cpp/src/IceSSL/Util.h +0 -99
  788. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfo.cpp +0 -75
  789. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfoF.cpp +0 -61
  790. data/dist/ice/cpp/src/IceSSL/generated/EndpointInfo.cpp +0 -75
  791. data/dist/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
  792. data/dist/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
  793. data/dist/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
  794. data/dist/ice/cpp/src/IceUtil/FileUtil.cpp +0 -471
  795. data/dist/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
  796. data/dist/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
  797. data/dist/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
  798. data/dist/ice/cpp/src/IceUtil/Random.cpp +0 -180
  799. data/dist/ice/cpp/src/IceUtil/RecMutex.cpp +0 -238
  800. data/dist/ice/cpp/src/IceUtil/Shared.cpp +0 -71
  801. data/dist/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
  802. data/dist/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1135
  803. data/dist/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
  804. data/dist/ice/cpp/src/IceUtil/Time.cpp +0 -307
  805. data/dist/ice/cpp/src/IceUtil/UUID.cpp +0 -165
  806. data/dist/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
  807. data/dist/ice/cpp/src/IceUtil/Unicode.h +0 -43
  808. data/dist/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
  809. data/dist/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
  810. data/dist/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
  811. data/dist/ice/cpp/src/Slice/Checksum.cpp +0 -447
  812. data/dist/ice/cpp/src/Slice/Checksum.h +0 -21
  813. data/dist/ice/cpp/src/Slice/JavaUtil.cpp +0 -5183
  814. data/dist/ice/cpp/src/Slice/JavaUtil.h +0 -407
  815. data/dist/ice/cpp/src/Slice/MD5.cpp +0 -52
  816. data/dist/ice/cpp/src/Slice/MD5.h +0 -39
  817. data/dist/ice/cpp/src/Slice/MD5I.cpp +0 -393
  818. data/dist/ice/cpp/src/Slice/MD5I.h +0 -91
  819. data/dist/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
  820. data/dist/ice/cpp/src/Slice/PHPUtil.h +0 -36
  821. data/dist/ice/cpp/src/Slice/Python.cpp +0 -830
  822. data/dist/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
  823. data/dist/ice/cpp/src/Slice/PythonUtil.h +0 -70
  824. data/dist/ice/cpp/src/Slice/Ruby.cpp +0 -350
  825. data/dist/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
  826. data/dist/ice/cpp/src/Slice/RubyUtil.h +0 -49
  827. data/dist/ice/slice/Glacier2/PermissionsVerifierF.ice +0 -30
  828. data/dist/ice/slice/Glacier2/RouterF.ice +0 -29
  829. data/dist/ice/slice/Ice/Communicator.ice +0 -676
  830. data/dist/ice/slice/Ice/CommunicatorF.ice +0 -31
  831. data/dist/ice/slice/Ice/Connection.ice +0 -516
  832. data/dist/ice/slice/Ice/ConnectionF.ice +0 -33
  833. data/dist/ice/slice/Ice/Current.ice +0 -170
  834. data/dist/ice/slice/Ice/Endpoint.ice +0 -291
  835. data/dist/ice/slice/Ice/EndpointF.ice +0 -43
  836. data/dist/ice/slice/Ice/FacetMap.ice +0 -36
  837. data/dist/ice/slice/Ice/ImplicitContext.ice +0 -119
  838. data/dist/ice/slice/Ice/ImplicitContextF.ice +0 -30
  839. data/dist/ice/slice/Ice/Instrumentation.ice +0 -509
  840. data/dist/ice/slice/Ice/InstrumentationF.ice +0 -38
  841. data/dist/ice/slice/Ice/LocalException.ice +0 -1040
  842. data/dist/ice/slice/Ice/LocatorF.ice +0 -32
  843. data/dist/ice/slice/Ice/Logger.ice +0 -99
  844. data/dist/ice/slice/Ice/LoggerF.ice +0 -31
  845. data/dist/ice/slice/Ice/ObjectAdapter.ice +0 -710
  846. data/dist/ice/slice/Ice/ObjectAdapterF.ice +0 -31
  847. data/dist/ice/slice/Ice/ObjectFactory.ice +0 -71
  848. data/dist/ice/slice/Ice/Plugin.ice +0 -131
  849. data/dist/ice/slice/Ice/PluginF.ice +0 -36
  850. data/dist/ice/slice/Ice/ProcessF.ice +0 -31
  851. data/dist/ice/slice/Ice/Properties.ice +0 -244
  852. data/dist/ice/slice/Ice/PropertiesF.ice +0 -32
  853. data/dist/ice/slice/Ice/RouterF.ice +0 -31
  854. data/dist/ice/slice/Ice/ServantLocator.ice +0 -136
  855. data/dist/ice/slice/Ice/ServantLocatorF.ice +0 -31
  856. data/dist/ice/slice/Ice/ValueFactory.ice +0 -133
  857. data/dist/ice/slice/IceBox/IceBox.ice +0 -216
  858. data/dist/ice/slice/IceGrid/PluginFacade.ice +0 -329
  859. data/dist/ice/slice/IcePatch2/FileInfo.ice +0 -85
  860. data/dist/ice/slice/IcePatch2/FileServer.ice +0 -191
  861. data/dist/lib/Glacier2/PermissionsVerifierF.rb +0 -30
  862. data/dist/lib/Glacier2/RouterF.rb +0 -25
  863. data/dist/lib/Ice/Communicator.rb +0 -87
  864. data/dist/lib/Ice/CommunicatorF.rb +0 -24
  865. data/dist/lib/Ice/Connection.rb +0 -413
  866. data/dist/lib/Ice/ConnectionF.rb +0 -32
  867. data/dist/lib/Ice/Current.rb +0 -141
  868. data/dist/lib/Ice/Endpoint.rb +0 -187
  869. data/dist/lib/Ice/EndpointF.rb +0 -48
  870. data/dist/lib/Ice/FacetMap.rb +0 -24
  871. data/dist/lib/Ice/ImplicitContext.rb +0 -26
  872. data/dist/lib/Ice/ImplicitContextF.rb +0 -24
  873. data/dist/lib/Ice/Instrumentation.rb +0 -169
  874. data/dist/lib/Ice/InstrumentationF.rb +0 -31
  875. data/dist/lib/Ice/LocalException.rb +0 -1031
  876. data/dist/lib/Ice/LocatorF.rb +0 -30
  877. data/dist/lib/Ice/Logger.rb +0 -24
  878. data/dist/lib/Ice/LoggerF.rb +0 -24
  879. data/dist/lib/Ice/ObjectAdapter.rb +0 -29
  880. data/dist/lib/Ice/ObjectAdapterF.rb +0 -24
  881. data/dist/lib/Ice/ObjectFactory.rb +0 -24
  882. data/dist/lib/Ice/Plugin.rb +0 -30
  883. data/dist/lib/Ice/PluginF.rb +0 -28
  884. data/dist/lib/Ice/ProcessF.rb +0 -25
  885. data/dist/lib/Ice/Properties.rb +0 -25
  886. data/dist/lib/Ice/PropertiesF.rb +0 -29
  887. data/dist/lib/Ice/RouterF.rb +0 -25
  888. data/dist/lib/Ice/ServantLocator.rb +0 -26
  889. data/dist/lib/Ice/ServantLocatorF.rb +0 -24
  890. data/dist/lib/Ice/ValueFactory.rb +0 -28
  891. data/dist/lib/IceBox/IceBox.rb +0 -164
  892. data/dist/lib/IceGrid/PluginFacade.rb +0 -35
  893. data/dist/lib/IcePatch2/FileInfo.rb +0 -115
  894. data/dist/lib/IcePatch2/FileServer.rb +0 -123
  895. data/dist/lib/IcePatch2.rb +0 -5
@@ -1,1513 +1,941 @@
1
- //
2
- // Copyright (c) ZeroC, Inc. All rights reserved.
3
- //
1
+ // Copyright (c) ZeroC, Inc.
4
2
 
5
3
  #ifndef ICE_INPUT_STREAM_H
6
4
  #define ICE_INPUT_STREAM_H
7
5
 
8
- #include <Ice/CommunicatorF.h>
9
- #include <Ice/InstanceF.h>
10
- #include <Ice/Object.h>
11
- #include <Ice/ValueF.h>
12
- #include <Ice/ProxyF.h>
13
- #include <Ice/LoggerF.h>
14
- #include <Ice/ValueFactory.h>
15
- #include <Ice/Buffer.h>
16
- #include <Ice/Protocol.h>
17
- #include <Ice/SlicedDataF.h>
18
- #include <Ice/UserExceptionFactory.h>
19
- #include <Ice/StreamHelpers.h>
20
- #include <Ice/FactoryTable.h>
6
+ #include "Buffer.h"
7
+ #include "CommunicatorF.h"
8
+ #include "Ice/Version.h"
9
+ #include "InstanceF.h"
10
+ #include "LocalException.h"
11
+ #include "Logger.h"
12
+ #include "ReferenceF.h"
13
+ #include "SliceLoader.h"
14
+ #include "SlicedDataF.h"
15
+ #include "StreamableTraits.h"
16
+ #include "UserExceptionFactory.h"
17
+ #include "ValueF.h"
18
+
19
+ #include <cassert>
20
+ #include <cstdint>
21
+ #include <map>
22
+ #include <string>
23
+ #include <string_view>
24
+
25
+ namespace IceInternal::Ex
26
+ {
27
+ ICE_API void throwUOE(const char* file, int line, const std::string&, const Ice::ValuePtr&);
28
+ ICE_API void throwMemoryLimitException(const char* file, int line, size_t, std::int32_t);
29
+ ICE_API void throwMarshalException(const char* file, int line, std::string);
30
+ }
21
31
 
22
32
  namespace Ice
23
33
  {
34
+ class ObjectPrx;
24
35
 
25
- class UserException;
26
-
27
- /// \cond INTERNAL
28
- template<typename T> inline void
29
- patchHandle(void* addr, const ValuePtr& v)
30
- {
31
- #ifdef ICE_CPP11_MAPPING
32
- ::std::shared_ptr<T>* handle = static_cast<::std::shared_ptr<T>*>(addr);
33
- *handle = ::std::dynamic_pointer_cast<T>(v);
34
- if(v && !(*handle))
36
+ /// @private
37
+ template<typename T> inline void patchValue(void* addr, const ValuePtr& v)
35
38
  {
36
- IceInternal::Ex::throwUOE(T::ice_staticId(), v);
39
+ auto* ptr = static_cast<std::shared_ptr<T>*>(addr);
40
+ *ptr = std::dynamic_pointer_cast<T>(v);
41
+ if (v && !(*ptr))
42
+ {
43
+ IceInternal::Ex::throwUOE(__FILE__, __LINE__, std::string{T::ice_staticId()}, v);
44
+ }
37
45
  }
38
- #else
39
- IceInternal::Handle<T>* p = static_cast<IceInternal::Handle<T>*>(addr);
40
- _icePatchObjectPtr(*p, v); // Generated _icePatchObjectPtr function, necessary for forward declarations.
41
- #endif
42
- }
43
- /// \endcond
44
46
 
45
- /**
46
- * Interface for input streams used to extract Slice types from a sequence of bytes.
47
- * \headerfile Ice/Ice.h
48
- */
49
- class ICE_API InputStream : public IceInternal::Buffer
50
- {
51
- public:
52
-
53
- typedef size_t size_type;
54
-
55
- /**
56
- * Signature for a patch function, used to receive an unmarshaled value.
57
- * @param addr The target address.
58
- * @param v The unmarshaled value.
59
- */
60
- typedef void (*PatchFunc)(void* addr, const ValuePtr& v);
61
-
62
- /**
63
- * Constructs a stream using the latest encoding version but without a communicator.
64
- * This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
65
- * you can provide Helpers for objects that are normally provided by a communicator.
66
- * You can supply a communicator later by calling initialize().
67
- */
68
- InputStream();
69
-
70
- /**
71
- * Constructs a stream using the latest encoding version but without a communicator.
72
- * This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
73
- * you can provide Helpers for objects that are normally provided by a communicator.
74
- * You can supply a communicator later by calling initialize().
75
- * @param bytes The encoded data.
76
- */
77
- InputStream(const std::vector<Byte>& bytes);
78
-
79
- /**
80
- * Constructs a stream using the latest encoding version but without a communicator.
81
- * This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
82
- * you can provide Helpers for objects that are normally provided by a communicator.
83
- * You can supply a communicator later by calling initialize().
84
- * @param bytes The encoded data.
85
- */
86
- InputStream(const std::pair<const Byte*, const Byte*>& bytes);
87
-
88
- /// \cond INTERNAL
89
- InputStream(IceInternal::Buffer&, bool = false);
90
- /// \endcond
91
-
92
- /**
93
- * Constructs a stream using the communicator's default encoding version.
94
- * @param communicator The communicator to use for unmarshaling tasks.
95
- */
96
- InputStream(const CommunicatorPtr& communicator);
97
-
98
- /**
99
- * Constructs a stream using the communicator's default encoding version.
100
- * @param communicator The communicator to use for unmarshaling tasks.
101
- * @param bytes The encoded data.
102
- */
103
- InputStream(const CommunicatorPtr& communicator, const std::vector<Byte>& bytes);
104
-
105
- /**
106
- * Constructs a stream using the communicator's default encoding version.
107
- * @param communicator The communicator to use for unmarshaling tasks.
108
- * @param bytes The encoded data.
109
- */
110
- InputStream(const CommunicatorPtr& communicator, const std::pair<const Byte*, const Byte*>& bytes);
111
-
112
- /// \cond INTERNAL
113
- InputStream(const CommunicatorPtr& communicator, IceInternal::Buffer&, bool = false);
114
- /// \endcond
115
-
116
- /**
117
- * Constructs a stream using the given encoding version but without a communicator.
118
- * This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
119
- * you can provide Helpers for objects that are normally provided by a communicator.
120
- * You can supply a communicator later by calling initialize().
121
- * @param version The encoding version used to encode the data to be unmarshaled.
122
- */
123
- InputStream(const EncodingVersion& version);
124
-
125
- /**
126
- * Constructs a stream using the given encoding version but without a communicator.
127
- * This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
128
- * you can provide Helpers for objects that are normally provided by a communicator.
129
- * You can supply a communicator later by calling initialize().
130
- * @param version The encoding version used to encode the data to be unmarshaled.
131
- * @param bytes The encoded data.
132
- */
133
- InputStream(const EncodingVersion& version, const std::vector<Byte>& bytes);
134
-
135
- /**
136
- * Constructs a stream using the given encoding version but without a communicator.
137
- * This stream will not be able to unmarshal a proxy. For other unmarshaling tasks,
138
- * you can provide Helpers for objects that are normally provided by a communicator.
139
- * You can supply a communicator later by calling initialize().
140
- * @param version The encoding version used to encode the data to be unmarshaled.
141
- * @param bytes The encoded data.
142
- */
143
- InputStream(const EncodingVersion& version, const std::pair<const Byte*, const Byte*>& bytes);
144
-
145
- /// \cond INTERNAL
146
- InputStream(const EncodingVersion&, IceInternal::Buffer&, bool = false);
147
- /// \endcond
148
-
149
- /**
150
- * Constructs a stream using the given communicator and encoding version.
151
- * @param communicator The communicator to use for unmarshaling tasks.
152
- * @param version The encoding version used to encode the data to be unmarshaled.
153
- */
154
- InputStream(const CommunicatorPtr& communicator, const EncodingVersion& version);
155
-
156
- /**
157
- * Constructs a stream using the given communicator and encoding version.
158
- * @param communicator The communicator to use for unmarshaling tasks.
159
- * @param version The encoding version used to encode the data to be unmarshaled.
160
- * @param bytes The encoded data.
161
- */
162
- InputStream(const CommunicatorPtr& communicator, const EncodingVersion& version, const std::vector<Byte>& bytes);
163
-
164
- /**
165
- * Constructs a stream using the given communicator and encoding version.
166
- * @param communicator The communicator to use for unmarshaling tasks.
167
- * @param version The encoding version used to encode the data to be unmarshaled.
168
- * @param bytes The encoded data.
169
- */
170
- InputStream(const CommunicatorPtr& communicator, const EncodingVersion& version,
171
- const std::pair<const Byte*, const Byte*>& bytes);
172
-
173
- /// \cond INTERNAL
174
- InputStream(const CommunicatorPtr&, const EncodingVersion&, IceInternal::Buffer&, bool = false);
175
- /// \endcond
176
-
177
- ~InputStream()
47
+ /// Represents a byte buffer used for unmarshaling data encoded using the Slice encoding.
48
+ /// @headerfile Ice/Ice.h
49
+ class ICE_API InputStream final : public IceInternal::Buffer
178
50
  {
179
- // Inlined for performance reasons.
180
-
181
- if(_currentEncaps != &_preAllocatedEncaps)
51
+ public:
52
+ /// The size type for this byte buffer.
53
+ using size_type = std::size_t;
54
+
55
+ /// @private
56
+ using PatchFunc = std::function<void(void* addr, const ValuePtr& v)>;
57
+
58
+ /// Constructs an InputStream using a communicator and this communicator's default encoding version.
59
+ /// @param communicator The communicator to use for unmarshaling tasks.
60
+ /// @param bytes The encoded data.
61
+ /// @param sliceLoader The Slice loader. When nullptr, use the communicator's Slice loader.
62
+ InputStream(
63
+ const CommunicatorPtr& communicator,
64
+ const std::vector<std::byte>& bytes,
65
+ SliceLoaderPtr sliceLoader = nullptr);
66
+
67
+ /// @copydoc InputStream(const CommunicatorPtr&, const std::vector<std::byte>&, SliceLoaderPtr)
68
+ InputStream(
69
+ const CommunicatorPtr& communicator,
70
+ std::pair<const std::byte*, const std::byte*> bytes,
71
+ SliceLoaderPtr sliceLoader = nullptr);
72
+
73
+ /// Constructs an InputStream using a communicator and encoding version.
74
+ /// @param communicator The communicator to use for unmarshaling tasks.
75
+ /// @param encoding The encoding version used to encode the data to be unmarshaled.
76
+ /// @param bytes The encoded data.
77
+ /// @param sliceLoader The Slice loader. When nullptr, use the communicator's Slice loader.
78
+ InputStream(
79
+ const CommunicatorPtr& communicator,
80
+ EncodingVersion encoding,
81
+ const std::vector<std::byte>& bytes,
82
+ SliceLoaderPtr sliceLoader = nullptr);
83
+
84
+ /// @copydoc InputStream(const CommunicatorPtr&, EncodingVersion, const std::vector<std::byte>&, SliceLoaderPtr)
85
+ InputStream(
86
+ const CommunicatorPtr& communicator,
87
+ EncodingVersion encoding,
88
+ std::pair<const std::byte*, const std::byte*> bytes,
89
+ SliceLoaderPtr sliceLoader = nullptr);
90
+
91
+ /// @private
92
+ /// Constructs a stream with an empty buffer.
93
+ InputStream(IceInternal::Instance* instance, EncodingVersion encoding, SliceLoaderPtr sliceLoader = nullptr);
94
+
95
+ /// @private
96
+ /// Constructs a stream with the specified encoding and buffer.
97
+ InputStream(
98
+ IceInternal::Instance* instance,
99
+ EncodingVersion encoding,
100
+ IceInternal::Buffer& buf,
101
+ bool adopt,
102
+ SliceLoaderPtr sliceLoader = nullptr);
103
+
104
+ /// Move constructor.
105
+ /// @param other The input stream to move into this input stream.
106
+ InputStream(InputStream&& other) noexcept;
107
+
108
+ /// Move assignment operator.
109
+ /// @param other The input stream to move into this input stream.
110
+ /// @return A reference to this input stream.
111
+ InputStream& operator=(InputStream&& other) noexcept;
112
+
113
+ ~InputStream()
182
114
  {
183
- clear(); // Not inlined.
184
- }
115
+ // Inlined for performance reasons.
185
116
 
186
- #ifdef ICE_CPP11_MAPPING
117
+ if (_currentEncaps != &_preAllocatedEncaps)
118
+ {
119
+ clear(); // Not inlined.
120
+ }
187
121
 
188
- for(auto d: _deleters)
189
- {
190
- d();
122
+ for (const auto& d : _deleters)
123
+ {
124
+ d();
125
+ }
191
126
  }
192
- #endif
193
- }
194
127
 
195
- /**
196
- * Initializes the stream to use the communicator's default encoding version.
197
- * Use initialize() if you originally constructed the stream without a communicator.
198
- * @param communicator The communicator to use for unmarshaling tasks.
199
- */
200
- void initialize(const CommunicatorPtr& communicator);
201
-
202
- /**
203
- * Initializes the stream to use the given communicator and encoding version.
204
- * Use initialize() if you originally constructed the stream without a communicator.
205
- * @param communicator The communicator to use for unmarshaling tasks.
206
- * @param version The encoding version used to encode the data to be unmarshaled.
207
- */
208
- void initialize(const CommunicatorPtr& communicator, const EncodingVersion& version);
209
-
210
- /**
211
- * Releases any data retained by encapsulations.
212
- */
213
- void clear();
214
-
215
- /// \cond INTERNAL
216
- //
217
- // Must return Instance*, because we don't hold an InstancePtr for
218
- // optimization reasons (see comments below).
219
- //
220
- IceInternal::Instance* instance() const { return _instance; } // Inlined for performance reasons.
221
- /// \endcond
222
-
223
- /**
224
- * Sets the value factory manager to use when unmarshaling value instances. If the stream
225
- * was initialized with a communicator, the communicator's value factory manager will
226
- * be used by default.
227
- *
228
- * @param vfm The value factory manager.
229
- */
230
- void setValueFactoryManager(const ValueFactoryManagerPtr& vfm);
231
-
232
- /**
233
- * Sets the logger to use when logging trace messages. If the stream
234
- * was initialized with a communicator, the communicator's logger will
235
- * be used by default.
236
- *
237
- * @param logger The logger to use for logging trace messages.
238
- */
239
- void setLogger(const LoggerPtr& logger);
240
-
241
- /**
242
- * Sets the compact ID resolver to use when unmarshaling value and exception
243
- * instances. If the stream was initialized with a communicator, the communicator's
244
- * resolver will be used by default.
245
- *
246
- * @param r The compact ID resolver.
247
- */
248
- #ifdef ICE_CPP11_MAPPING
249
- void setCompactIdResolver(std::function<std::string(int)> r);
250
- #else
251
- void setCompactIdResolver(const CompactIdResolverPtr& r);
252
- #endif
128
+ /// Releases any data retained by encapsulations.
129
+ void clear();
253
130
 
254
- #ifndef ICE_CPP11_MAPPING
255
- /**
256
- * Indicates whether to mark instances of Slice classes as collectable. If the stream is
257
- * initialized with a communicator, this setting defaults to the value of the
258
- * Ice.CollectObjects property, otherwise the setting defaults to false.
259
- * @param b True to mark instances as collectable, false otherwise.
260
- */
261
- void setCollectObjects(bool b);
262
- #endif
131
+ /// @private
132
+ // Must return Instance*, because we don't hold an InstancePtr for optimization reasons (see comments below).
133
+ [[nodiscard]] IceInternal::Instance* instance() const { return _instance; } // Inlined for performance reasons.
263
134
 
264
- /**
265
- * Indicates whether to slice instances of Slice classes to a known Slice type when a more
266
- * derived type is unknown. An instance is "sliced" when no static information is available
267
- * for a Slice type ID and no factory can be found for that type, resulting in the creation
268
- * of an instance of a less-derived type. If slicing is disabled in this situation, the
269
- * stream raises the exception NoValueFactoryException. The default behavior is to allow slicing.
270
- * @param b True to enable slicing, false otherwise.
271
- */
272
- void setSliceValues(bool b);
273
-
274
- /**
275
- * Indicates whether to log messages when instances of Slice classes are sliced. If the stream
276
- * is initialized with a communicator, this setting defaults to the value of the Ice.Trace.Slicing
277
- * property, otherwise the setting defaults to false.
278
- * @param b True to enable logging, false otherwise.
279
- */
280
- void setTraceSlicing(bool b);
281
-
282
- /**
283
- * Sets an upper limit on the depth of a class graph. If this limit is exceeded during
284
- * unmarshaling, the stream raises MarshalException.
285
- * @param n The maximum depth.
286
- */
287
- void setClassGraphDepthMax(size_t n);
288
-
289
- /**
290
- * Obtains the closure data associated with this stream.
291
- * @return The data as a void pointer.
292
- */
293
- void* getClosure() const;
294
-
295
- /**
296
- * Associates closure data with this stream.
297
- * @param p The data as a void pointer.
298
- * @return The previous closure data, or nil.
299
- */
300
- void* setClosure(void* p);
301
-
302
- /**
303
- * Swaps the contents of one stream with another.
304
- *
305
- * @param other The other stream.
306
- */
307
- void swap(InputStream& other);
308
-
309
- /// \cond INTERNAL
310
- void resetEncapsulation();
311
- /// \endcond
312
-
313
- /**
314
- * Resizes the stream to a new size.
315
- *
316
- * @param sz The new size.
317
- */
318
- void resize(Container::size_type sz)
319
- {
320
- b.resize(sz);
321
- i = b.end();
322
- }
135
+ /// Swaps the contents of one stream with another.
136
+ /// @param other The other stream.
137
+ void swap(InputStream& other) noexcept;
323
138
 
324
- /**
325
- * Marks the start of a class instance.
326
- */
327
- void startValue()
328
- {
329
- assert(_currentEncaps && _currentEncaps->decoder);
330
- _currentEncaps->decoder->startInstance(ValueSlice);
331
- }
139
+ /// @cond INTERNAL
332
140
 
333
- /**
334
- * Marks the end of a class instance.
335
- *
336
- * @param preserve Pass true and the stream will preserve the unknown slices of the instance, or false
337
- * to discard the unknown slices.
338
- * @return An object that encapsulates the unknown slice data.
339
- */
340
- SlicedDataPtr endValue(bool preserve)
341
- {
342
- assert(_currentEncaps && _currentEncaps->decoder);
343
- return _currentEncaps->decoder->endInstance(preserve);
344
- }
141
+ /// Gets the closure associated with this stream.
142
+ /// @return The closure.
143
+ [[nodiscard]] void* getClosure() const;
345
144
 
346
- /**
347
- * Marks the start of a user exception.
348
- */
349
- void startException()
350
- {
351
- assert(_currentEncaps && _currentEncaps->decoder);
352
- _currentEncaps->decoder->startInstance(ExceptionSlice);
353
- }
145
+ /// Associates a closure with this stream.
146
+ /// @param p The closure.
147
+ /// @return The previous closure, or nullptr.
148
+ void* setClosure(void* p);
354
149
 
355
- /**
356
- * Marks the end of a user exception.
357
- *
358
- * @param preserve Pass true and the stream will preserve the unknown slices of the exception, or false
359
- * to discard the unknown slices.
360
- * @return An object that encapsulates the unknown slice data.
361
- */
362
- SlicedDataPtr endException(bool preserve)
363
- {
364
- assert(_currentEncaps && _currentEncaps->decoder);
365
- return _currentEncaps->decoder->endInstance(preserve);
366
- }
150
+ void resetEncapsulation();
367
151
 
368
- /**
369
- * Reads the start of an encapsulation.
370
- *
371
- * @return The encoding version used by the encapsulation.
372
- */
373
- const EncodingVersion& startEncapsulation()
374
- {
375
- Encaps* oldEncaps = _currentEncaps;
376
- if(!oldEncaps) // First allocated encaps?
152
+ /// Resizes the stream to a new size.
153
+ /// @param sz The new size.
154
+ void resize(Container::size_type sz)
377
155
  {
378
- _currentEncaps = &_preAllocatedEncaps;
156
+ b.resize(sz);
157
+ i = b.end();
379
158
  }
380
- else
159
+ /// @endcond
160
+
161
+ /// Marks the start of a class instance.
162
+ void startValue()
381
163
  {
382
- _currentEncaps = new Encaps();
383
- _currentEncaps->previous = oldEncaps;
164
+ assert(_currentEncaps && _currentEncaps->decoder);
165
+ _currentEncaps->decoder->startInstance(ValueSlice);
384
166
  }
385
- _currentEncaps->start = static_cast<size_t>(i - b.begin());
386
167
 
387
- //
388
- // I don't use readSize() and writeSize() for encapsulations,
389
- // because when creating an encapsulation, I must know in advance
390
- // how many bytes the size information will require in the data
391
- // stream. If I use an Int, it is always 4 bytes. For
392
- // readSize()/writeSize(), it could be 1 or 5 bytes.
393
- //
394
- Int sz;
395
- read(sz);
396
- if(sz < 6)
168
+ /// Marks the end of a class instance.
169
+ /// @return An object that encapsulates the unknown slice data.
170
+ SlicedDataPtr endValue()
171
+ {
172
+ assert(_currentEncaps && _currentEncaps->decoder);
173
+ return _currentEncaps->decoder->endInstance();
174
+ }
175
+
176
+ /// Marks the start of a user exception.
177
+ void startException()
397
178
  {
398
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
179
+ assert(_currentEncaps && _currentEncaps->decoder);
180
+ _currentEncaps->decoder->startInstance(ExceptionSlice);
399
181
  }
400
- if(i - sizeof(Int) + sz > b.end())
182
+
183
+ /// Marks the end of a user exception.
184
+ void endException()
401
185
  {
402
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
186
+ assert(_currentEncaps && _currentEncaps->decoder);
187
+ _currentEncaps->decoder->endInstance();
403
188
  }
404
- _currentEncaps->sz = sz;
405
189
 
406
- read(_currentEncaps->encoding);
407
- IceInternal::checkSupportedEncoding(_currentEncaps->encoding); // Make sure the encoding is supported
190
+ /// Reads the start of an encapsulation.
191
+ /// @return The encoding version used by the encapsulation.
192
+ const EncodingVersion& startEncapsulation();
408
193
 
409
- return _currentEncaps->encoding;
410
- }
194
+ /// Ends the current encapsulation.
195
+ void endEncapsulation();
411
196
 
412
- /**
413
- * Ends the current encapsulation.
414
- */
415
- void endEncapsulation()
416
- {
417
- assert(_currentEncaps);
197
+ /// Skips an empty encapsulation.
198
+ /// @return The encapsulation's encoding version.
199
+ EncodingVersion skipEmptyEncapsulation();
418
200
 
419
- if(_currentEncaps->encoding != Encoding_1_0)
201
+ /// Returns a blob of bytes representing an encapsulation.
202
+ /// @param[out] v A pointer into the internal marshaling buffer representing the start of the encoded
203
+ /// encapsulation.
204
+ /// @param[out] sz The number of bytes in the encapsulation.
205
+ /// @return encoding The encapsulation's encoding version.
206
+ EncodingVersion readEncapsulation(const std::byte*& v, std::int32_t& sz);
207
+
208
+ /// Gets the current encoding version.
209
+ /// @return The encoding version.
210
+ [[nodiscard]] const EncodingVersion& getEncoding() const
420
211
  {
421
- skipOptionals();
422
- if(i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
423
- {
424
- throwEncapsulationException(__FILE__, __LINE__);
425
- }
212
+ return _currentEncaps ? _currentEncaps->encoding : _encoding;
426
213
  }
427
- else if(i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
428
- {
429
- if(i + 1 != b.begin() + _currentEncaps->start + _currentEncaps->sz)
430
- {
431
- throwEncapsulationException(__FILE__, __LINE__);
432
- }
433
214
 
434
- //
435
- // Ice version < 3.3 had a bug where user exceptions with
436
- // class members could be encoded with a trailing byte
437
- // when dispatched with AMD. So we tolerate an extra byte
438
- // in the encapsulation.
439
- //
440
- ++i;
441
- }
215
+ /// Gets the size of the current encapsulation, excluding the encapsulation header.
216
+ /// @return The size of the encapsulated data.
217
+ std::int32_t getEncapsulationSize();
442
218
 
443
- Encaps* oldEncaps = _currentEncaps;
444
- _currentEncaps = _currentEncaps->previous;
445
- if(oldEncaps == &_preAllocatedEncaps)
446
- {
447
- oldEncaps->reset();
448
- }
449
- else
219
+ /// Skips over an encapsulation.
220
+ /// @return The encoding version of the skipped encapsulation.
221
+ EncodingVersion skipEncapsulation();
222
+
223
+ /// Reads the start of a value or exception slice.
224
+ void startSlice()
450
225
  {
451
- delete oldEncaps;
226
+ assert(_currentEncaps && _currentEncaps->decoder);
227
+ _currentEncaps->decoder->startSlice();
452
228
  }
453
- }
454
229
 
455
- /**
456
- * Skips an empty encapsulation.
457
- *
458
- * @return The encapsulation's encoding version.
459
- */
460
- EncodingVersion skipEmptyEncapsulation()
461
- {
462
- Ice::Int sz;
463
- read(sz);
464
- if(sz < 6)
230
+ /// Indicates that the end of a value or exception slice has been reached.
231
+ void endSlice()
465
232
  {
466
- throwEncapsulationException(__FILE__, __LINE__);
233
+ assert(_currentEncaps && _currentEncaps->decoder);
234
+ _currentEncaps->decoder->endSlice();
467
235
  }
468
- if(i - sizeof(Ice::Int) + sz > b.end())
236
+
237
+ /// Skips over a value or exception slice.
238
+ void skipSlice()
469
239
  {
470
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
240
+ assert(_currentEncaps && _currentEncaps->decoder);
241
+ _currentEncaps->decoder->skipSlice();
471
242
  }
472
- Ice::EncodingVersion encoding;
473
- read(encoding);
474
- IceInternal::checkSupportedEncoding(encoding); // Make sure the encoding is supported
475
243
 
476
- if(encoding == Ice::Encoding_1_0)
244
+ /// Indicates that unmarshaling is complete, except for any class instances. The application must call this
245
+ /// function only when the stream actually contains class instances. Calling `readPendingValues` triggers the
246
+ /// patch callbacks to inform the application that unmarshaling of an instance is complete.
247
+ void readPendingValues();
248
+
249
+ /// Reads a size from the stream.
250
+ /// @return The unmarshaled size.
251
+ std::int32_t readSize() // Inlined for performance reasons.
477
252
  {
478
- if(sz != static_cast<Ice::Int>(sizeof(Ice::Int)) + 2)
253
+ std::uint8_t byte;
254
+ read(byte);
255
+ auto val = static_cast<unsigned char>(byte);
256
+ if (val == 255)
479
257
  {
480
- throwEncapsulationException(__FILE__, __LINE__);
258
+ std::int32_t v;
259
+ read(v);
260
+ if (v < 0)
261
+ {
262
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
263
+ }
264
+ return v;
265
+ }
266
+ else
267
+ {
268
+ return static_cast<std::int32_t>(static_cast<unsigned char>(byte));
481
269
  }
482
- }
483
- else
484
- {
485
- // Skip the optional content of the encapsulation if we are expecting an
486
- // empty encapsulation.
487
- i += static_cast<size_t>(sz) - sizeof(Ice::Int) - 2;
488
- }
489
- return encoding;
490
- }
491
-
492
- /**
493
- * Returns a blob of bytes representing an encapsulation.
494
- *
495
- * @param v A pointer into the internal marshaling buffer representing the start of the encoded encapsulation.
496
- * @param sz The number of bytes in the encapsulation.
497
- * @return encoding The encapsulation's encoding version.
498
- */
499
- EncodingVersion readEncapsulation(const Byte*& v, Int& sz)
500
- {
501
- EncodingVersion encoding;
502
- v = i;
503
- read(sz);
504
- if(sz < 6)
505
- {
506
- throwEncapsulationException(__FILE__, __LINE__);
507
- }
508
- if(i - sizeof(Int) + sz > b.end())
509
- {
510
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
511
270
  }
512
271
 
513
- read(encoding);
514
- i += static_cast<size_t>(sz) - sizeof(Int) - 2;
515
- return encoding;
516
- }
272
+ /// Reads and validates a sequence size.
273
+ /// @param minSize The minimum size required by the sequence type.
274
+ /// @return The extracted size.
275
+ std::int32_t readAndCheckSeqSize(int minSize);
517
276
 
518
- /**
519
- * Determines the current encoding version.
520
- *
521
- * @return The encoding version.
522
- */
523
- const EncodingVersion& getEncoding() const
524
- {
525
- return _currentEncaps ? _currentEncaps->encoding : _encoding;
526
- }
277
+ /// Reads a blob of bytes from the stream.
278
+ /// @param[out] bytes The vector to hold a copy of the bytes from the marshaling buffer.
279
+ /// @param sz The number of bytes to read.
280
+ void readBlob(std::vector<std::byte>& bytes, std::int32_t sz);
527
281
 
528
- /**
529
- * Determines the size of the current encapsulation, excluding the encapsulation header.
530
- *
531
- * @return The size of the encapsulated data.
532
- */
533
- Int getEncapsulationSize();
534
-
535
- /**
536
- * Skips over an encapsulation.
537
- *
538
- * @return The encoding version of the skipped encapsulation.
539
- */
540
- EncodingVersion skipEncapsulation();
541
-
542
- /**
543
- * Reads the start of a value or exception slice.
544
- *
545
- * @return The Slice type ID for this slice.
546
- */
547
- std::string startSlice()
548
- {
549
- assert(_currentEncaps && _currentEncaps->decoder);
550
- return _currentEncaps->decoder->startSlice();
551
- }
552
-
553
- /**
554
- * Indicates that the end of a value or exception slice has been reached.
555
- */
556
- void endSlice()
557
- {
558
- assert(_currentEncaps && _currentEncaps->decoder);
559
- _currentEncaps->decoder->endSlice();
560
- }
561
-
562
- /**
563
- * Skips over a value or exception slice.
564
- */
565
- void skipSlice()
566
- {
567
- assert(_currentEncaps && _currentEncaps->decoder);
568
- _currentEncaps->decoder->skipSlice();
569
- }
570
-
571
- /**
572
- * Indicates that unmarshaling is complete, except for any class instances. The application must call this method
573
- * only if the stream actually contains class instances. Calling readPendingValues triggers the
574
- * patch callbacks to inform the application that unmarshaling of an instance is complete.
575
- */
576
- void readPendingValues();
577
-
578
- /**
579
- * Extracts a size from the stream.
580
- *
581
- * @return The extracted size.
582
- */
583
- Int readSize() // Inlined for performance reasons.
584
- {
585
- Byte byte;
586
- read(byte);
587
- unsigned char val = static_cast<unsigned char>(byte);
588
- if(val == 255)
282
+ /// Reads a blob of bytes from the stream.
283
+ /// @param[out] v A pointer into the internal marshaling buffer representing the start of the blob.
284
+ /// @param sz The number of bytes to read.
285
+ void readBlob(const std::byte*& v, Container::size_type sz)
589
286
  {
590
- Int v;
591
- read(v);
592
- if(v < 0)
287
+ if (sz > 0)
593
288
  {
594
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
289
+ v = i;
290
+ if (static_cast<Container::size_type>(b.end() - i) < sz)
291
+ {
292
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
293
+ }
294
+ i += sz;
595
295
  }
596
- return v;
597
- }
598
- else
599
- {
600
- return static_cast<Int>(static_cast<unsigned char>(byte));
601
- }
602
- }
603
-
604
- /**
605
- * Reads and validates a sequence size.
606
- *
607
- * @param minSize The minimum size required by the sequence type.
608
- * @return The extracted size.
609
- */
610
- Int readAndCheckSeqSize(int minSize);
611
-
612
- /**
613
- * Reads a blob of bytes from the stream.
614
- *
615
- * @param bytes The vector to hold a copy of the bytes from the marshaling buffer.
616
- * @param sz The number of bytes to read.
617
- */
618
- void readBlob(std::vector<Byte>& bytes, Int sz);
619
-
620
- /**
621
- * Reads a blob of bytes from the stream.
622
- *
623
- * @param v A pointer into the internal marshaling buffer representing the start of the blob.
624
- * @param sz The number of bytes to read.
625
- */
626
- void readBlob(const Byte*& v, Container::size_type sz)
627
- {
628
- if(sz > 0)
629
- {
630
- v = i;
631
- if(static_cast<Container::size_type>(b.end() - i) < sz)
296
+ else
632
297
  {
633
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
298
+ v = i;
634
299
  }
635
- i += sz;
636
- }
637
- else
638
- {
639
- v = i;
640
300
  }
641
- }
642
301
 
643
- /**
644
- * Reads a data value from the stream.
645
- * @param v Holds the extracted data.
646
- */
647
- template<typename T> void read(T& v)
648
- {
649
- StreamHelper<T, StreamableTraits<T>::helper>::read(this, v);
650
- }
302
+ /// Reads a value from the stream.
303
+ /// @tparam T The type of the value to read.
304
+ /// @param[out] v The unmarshaled value.
305
+ template<typename T> void read(T& v) { StreamHelper<T, StreamableTraits<T>::helper>::read(this, v); }
651
306
 
652
- /**
653
- * Reads an optional data value from the stream.
654
- * @param tag The tag ID.
655
- * @param v Holds the extracted data (if any).
656
- */
657
- template<typename T> void read(Int tag, IceUtil::Optional<T>& v)
658
- {
659
- if(readOptional(tag, StreamOptionalHelper<T,
660
- StreamableTraits<T>::helper,
661
- StreamableTraits<T>::fixedLength>::optionalFormat))
662
- {
663
- #ifdef ICE_CPP11_MAPPING
664
- v.emplace();
665
- #else
666
- v.__setIsSet();
307
+ #ifdef ICE_DOXYGEN
308
+ /// Reads an optional value from the stream.
309
+ /// @tparam T The type of the value to read.
310
+ /// @param tag The tag.
311
+ /// @param[out] v The unmarshaled value.
312
+ template<typename T> void read(std::int32_t tag, T& v);
667
313
  #endif
668
- StreamOptionalHelper<T,
669
- StreamableTraits<T>::helper,
670
- StreamableTraits<T>::fixedLength>::read(this, *v);
671
- }
672
- else
673
- {
674
- v = IceUtil::None;
675
- }
676
- }
677
314
 
678
- #ifdef ICE_CPP11_MAPPING
315
+ /// Reads a value (single element list) from the stream.
316
+ /// @tparam T The type of value.
317
+ /// @param[out] v The unmarshaled value
318
+ template<typename T> void readAll(T& v) { read(v); }
679
319
 
680
- /**
681
- * Extracts a sequence of data values from the stream.
682
- * @param v A pair of pointers representing the beginning and end of the sequence elements.
683
- */
684
- template<typename T> void read(std::pair<const T*, const T*>& v)
685
- {
686
- auto holder = new std::vector<T>;
687
- _deleters.push_back([holder] { delete holder; });
688
- read(*holder);
689
- if(holder->size() > 0)
320
+ /// Reads a list of values from the stream.
321
+ /// @tparam T The type of the first value.
322
+ /// @tparam Te The types of the remaining values.
323
+ /// @param[out] v The first unmarshaled value
324
+ /// @param[out] ve The remaining unmarshaled values.
325
+ template<typename T, typename... Te> void readAll(T& v, Te&... ve)
690
326
  {
691
- v.first = holder->data();
692
- v.second = holder->data() + holder->size();
693
- }
694
- else
695
- {
696
- v.first = 0;
697
- v.second = 0;
327
+ read(v);
328
+ readAll(ve...);
698
329
  }
699
- }
700
330
 
701
- /**
702
- * Reads a list of mandatory data values.
703
- */
704
- template<typename T> void readAll(T& v)
705
- {
706
- read(v);
707
- }
708
-
709
- /**
710
- * Reads a list of mandatory data values.
711
- */
712
- template<typename T, typename... Te> void readAll(T& v, Te&... ve)
713
- {
714
- read(v);
715
- readAll(ve...);
716
- }
717
-
718
- /**
719
- * Reads a list of optional data values.
720
- */
721
- template<typename T>
722
- void readAll(std::initializer_list<int> tags, IceUtil::Optional<T>& v)
723
- {
724
- read(*(tags.begin() + tags.size() - 1), v);
725
- }
726
-
727
- /**
728
- * Reads a list of optional data values.
729
- */
730
- template<typename T, typename... Te>
731
- void readAll(std::initializer_list<int> tags, IceUtil::Optional<T>& v, IceUtil::Optional<Te>&... ve)
732
- {
733
- size_t index = tags.size() - sizeof...(ve) - 1;
734
- read(*(tags.begin() + index), v);
735
- readAll(tags, ve...);
736
- }
737
-
738
- #endif
739
-
740
- /**
741
- * Determine if an optional value is available for reading.
742
- *
743
- * @param tag The tag associated with the value.
744
- * @param expectedFormat The optional format for the value.
745
- * @return True if the value is present, false otherwise.
746
- */
747
- bool readOptional(Int tag, OptionalFormat expectedFormat)
748
- {
749
- assert(_currentEncaps);
750
- if(_currentEncaps->decoder)
331
+ /// Reads an optional value (single element list) from the stream.
332
+ /// @tparam T The type of the value.
333
+ /// @param tags The tag list.
334
+ /// @param[out] v The unmarshaled value.
335
+ template<typename T> void readAll(std::initializer_list<std::int32_t> tags, std::optional<T>& v)
751
336
  {
752
- return _currentEncaps->decoder->readOptional(tag, expectedFormat);
337
+ read(*(tags.begin() + tags.size() - 1), v);
753
338
  }
754
- else
755
- {
756
- return readOptImpl(tag, expectedFormat);
757
- }
758
- }
759
339
 
760
- /**
761
- * Reads a byte from the stream.
762
- * @param v The extracted byte.
763
- */
764
- void read(Byte& v)
765
- {
766
- if(i >= b.end())
340
+ /// Reads a list of optional values from the stream.
341
+ /// @tparam T The type of the first value.
342
+ /// @tparam Te The types of the remaining values.
343
+ /// @param tags The tag list.
344
+ /// @param[out] v The first unmarshaled value.
345
+ /// @param[out] ve The remaining unmarshaled values.
346
+ template<typename T, typename... Te>
347
+ void readAll(std::initializer_list<std::int32_t> tags, std::optional<T>& v, std::optional<Te>&... ve)
767
348
  {
768
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
349
+ size_t index = tags.size() - sizeof...(ve) - 1;
350
+ read(*(tags.begin() + index), v);
351
+ readAll(tags, ve...);
769
352
  }
770
- v = *i++;
771
- }
772
-
773
- /**
774
- * Reads a sequence of bytes from the stream.
775
- * @param v A vector to hold a copy of the bytes.
776
- */
777
- void read(std::vector<Byte>& v);
778
-
779
- /**
780
- * Reads a sequence of bytes from the stream.
781
- * @param v A pair of pointers into the internal marshaling buffer representing the start and end of the
782
- * sequence elements.
783
- */
784
- void read(std::pair<const Byte*, const Byte*>& v);
785
-
786
- #ifndef ICE_CPP11_MAPPING
787
- /**
788
- * Reads a sequence of bytes from the stream.
789
- * @param v A pair of pointers into the internal marshaling buffer representing the start and end of the
790
- * sequence elements.
791
- * @param arr A scoped array.
792
- */
793
- void read(std::pair<const Byte*, const Byte*>& v, ::IceUtil::ScopedArray<Byte>& arr)
794
- {
795
- arr.reset();
796
- read(v);
797
- }
798
- #endif
799
353
 
800
- /**
801
- * Reads a bool from the stream.
802
- * @param v The extracted bool.
803
- */
804
- void read(bool& v)
805
- {
806
- if(i >= b.end())
354
+ /// Checks if an optional value is available for reading.
355
+ /// @param tag The tag associated with the value.
356
+ /// @param expectedFormat The optional format for the value.
357
+ /// @return `true` if the value is present, `false` otherwise.
358
+ bool readOptional(std::int32_t tag, OptionalFormat expectedFormat)
807
359
  {
808
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
360
+ assert(_currentEncaps);
361
+ if (_currentEncaps->decoder)
362
+ {
363
+ return _currentEncaps->decoder->readOptional(tag, expectedFormat);
364
+ }
365
+ else
366
+ {
367
+ return readOptImpl(tag, expectedFormat);
368
+ }
809
369
  }
810
- v = (0 != *i++);
811
- }
812
370
 
813
- /**
814
- * Reads a sequence of boolean values from the stream.
815
- * @param v A vector to hold a copy of the boolean values.
816
- */
817
- void read(std::vector<bool>& v);
818
-
819
- #ifdef ICE_CPP11_MAPPING
820
- /**
821
- * Reads a sequence of boolean values from the stream.
822
- * @param v A pair of pointers into the internal marshaling buffer representing the start and end of the
823
- * sequence elements.
824
- */
825
- void read(std::pair<const bool*, const bool*>& v);
826
- #else
827
- /**
828
- * Reads a sequence of boolean values from the stream.
829
- * @param v A pair of pointers into the internal marshaling buffer representing the start and end of the
830
- * sequence elements.
831
- * @param arr A scoped array.
832
- */
833
- void read(std::pair<const bool*, const bool*>& v, ::IceUtil::ScopedArray<bool>& arr);
834
- #endif
371
+ /// @cond INTERNAL
835
372
 
836
- /**
837
- * Reads a short from the stream.
838
- * @param v The extracted short.
839
- */
840
- void read(Short& v);
841
-
842
- /**
843
- * Reads a sequence of shorts from the stream.
844
- * @param v A vector to hold a copy of the short values.
845
- */
846
- void read(std::vector<Short>& v);
847
-
848
- #ifdef ICE_CPP11_MAPPING
849
- /**
850
- * Reads a sequence of boolean values from the stream.
851
- * @param v A pair of pointers representing the start and end of the sequence elements.
852
- */
853
- void read(std::pair<const short*, const short*>& v);
854
- #else
855
- /**
856
- * Reads a sequence of shorts from the stream.
857
- * @param v A pair of pointers representing the start and end of the sequence elements.
858
- * @param arr A scoped array.
859
- */
860
- void read(std::pair<const Short*, const Short*>& v, ::IceUtil::ScopedArray<Short>& arr);
861
- #endif
373
+ // We don't document all the read "specializations" in Doxygen. But we do keep them mostly documented for
374
+ // tool-tips.
862
375
 
863
- /**
864
- * Reads an int from the stream.
865
- * @param v The extracted int.
866
- */
867
- void read(Int& v) // Inlined for performance reasons.
868
- {
869
- if(b.end() - i < static_cast<int>(sizeof(Int)))
376
+ /// Reads an optional value from the stream.
377
+ /// @tparam T The type of the value to read.
378
+ /// @param tag The tag.
379
+ /// @param[out] v The unmarshaled value.
380
+ template<typename T, std::enable_if_t<!std::is_base_of_v<ObjectPrx, T>, bool> = true>
381
+ void read(std::int32_t tag, std::optional<T>& v)
870
382
  {
871
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
383
+ if (readOptional(
384
+ tag,
385
+ StreamOptionalHelper<T, StreamableTraits<T>::helper, StreamableTraits<T>::fixedLength>::
386
+ optionalFormat))
387
+ {
388
+ v.emplace();
389
+ StreamOptionalHelper<T, StreamableTraits<T>::helper, StreamableTraits<T>::fixedLength>::read(this, *v);
390
+ }
391
+ else
392
+ {
393
+ v = std::nullopt;
394
+ }
872
395
  }
873
- const Byte* src = &(*i);
874
- i += sizeof(Int);
875
- #ifdef ICE_BIG_ENDIAN
876
- Byte* dest = reinterpret_cast<Byte*>(&v) + sizeof(Int) - 1;
877
- *dest-- = *src++;
878
- *dest-- = *src++;
879
- *dest-- = *src++;
880
- *dest = *src;
881
- #else
882
- Byte* dest = reinterpret_cast<Byte*>(&v);
883
- *dest++ = *src++;
884
- *dest++ = *src++;
885
- *dest++ = *src++;
886
- *dest = *src;
887
- #endif
888
- }
889
-
890
- /**
891
- * Reads a sequence of ints from the stream.
892
- * @param v A vector to hold a copy of the int values.
893
- */
894
- void read(std::vector<Int>& v);
895
-
896
- #ifdef ICE_CPP11_MAPPING
897
- /**
898
- * Reads a sequence of ints from the stream.
899
- * @param v A pair of pointers representing the start and end of the sequence elements.
900
- */
901
- void read(std::pair<const int*, const int*>& v);
902
- #else
903
- /**
904
- * Reads a sequence of ints from the stream.
905
- * @param v A pair of pointers representing the start and end of the sequence elements.
906
- * @param arr A scoped array.
907
- */
908
- void read(std::pair<const Int*, const Int*>& v, ::IceUtil::ScopedArray<Int>& arr);
909
- #endif
910
396
 
911
- /**
912
- * Reads a long from the stream.
913
- * @param v The extracted long.
914
- */
915
- void read(Long& v);
916
-
917
- /**
918
- * Reads a sequence of longs from the stream.
919
- * @param v A vector to hold a copy of the long values.
920
- */
921
- void read(std::vector<Long>& v);
922
-
923
- #ifdef ICE_CPP11_MAPPING
924
- /**
925
- * Reads a sequence of longs from the stream.
926
- * @param v A pair of pointers representing the start and end of the sequence elements.
927
- */
928
- void read(std::pair<const long long*, const long long*>& v);
929
- #else
930
- /**
931
- * Reads a sequence of longs from the stream.
932
- * @param v A pair of pointers representing the start and end of the sequence elements.
933
- * @param arr A scoped array.
934
- */
935
- void read(std::pair<const Long*, const Long*>& v, ::IceUtil::ScopedArray<Long>& arr);
936
- #endif
937
-
938
- /**
939
- * Reads a float from the stream.
940
- * @param v The extracted float.
941
- */
942
- void read(Float& v);
943
-
944
- /**
945
- * Reads a sequence of floats from the stream.
946
- * @param v A vector to hold a copy of the float values.
947
- */
948
- void read(std::vector<Float>& v);
949
-
950
- #ifdef ICE_CPP11_MAPPING
951
- /**
952
- * Reads a sequence of floats from the stream.
953
- * @param v A pair of pointers representing the start and end of the sequence elements.
954
- */
955
- void read(std::pair<const float*, const float*>& v);
956
- #else
957
- /**
958
- * Reads a sequence of floats from the stream.
959
- * @param v A pair of pointers representing the start and end of the sequence elements.
960
- * @param arr A scoped array.
961
- */
962
- void read(std::pair<const Float*, const Float*>& v, ::IceUtil::ScopedArray<Float>& arr);
963
- #endif
964
-
965
- /**
966
- * Reads a double from the stream.
967
- * @param v The extracted double.
968
- */
969
- void read(Double& v);
970
-
971
- /**
972
- * Reads a sequence of doubles from the stream.
973
- * @param v A vector to hold a copy of the double values.
974
- */
975
- void read(std::vector<Double>& v);
976
-
977
- #ifdef ICE_CPP11_MAPPING
978
- /**
979
- * Reads a sequence of doubles from the stream.
980
- * @param v A pair of pointers representing the start and end of the sequence elements.
981
- */
982
- void read(std::pair<const double*, const double*>& v);
983
- #else
984
- /**
985
- * Reads a sequence of doubles from the stream.
986
- * @param v A pair of pointers representing the start and end of the sequence elements.
987
- * @param arr A scoped array.
988
- */
989
- void read(std::pair<const Double*, const Double*>& v, ::IceUtil::ScopedArray<Double>& arr);
990
- #endif
991
-
992
- /**
993
- * Reads a string from the stream.
994
- * @param v The extracted string.
995
- * @param convert Determines whether the string is processed by the string converter, if one
996
- * is installed. The default behavior is to convert strings.
997
- */
998
- void read(std::string& v, bool convert = true);
999
-
1000
- #ifdef ICE_CPP11_MAPPING
1001
- /**
1002
- * Reads a string from the stream.
1003
- * @param vdata A pointer to the beginning of the string.
1004
- * @param vsize The number of bytes in the string.
1005
- * @param convert Determines whether the string is processed by the string converter, if one
1006
- * is installed. The default behavior is to convert strings.
1007
- */
1008
- void read(const char*& vdata, size_t& vsize, bool convert = true);
1009
- #else
1010
- // For custom strings, convert = false
1011
- /**
1012
- * Reads a string from the stream. String conversion is disabled.
1013
- * @param vdata A pointer to the beginning of the string.
1014
- * @param vsize The number of bytes in the string.
1015
- */
1016
- void read(const char*& vdata, size_t& vsize);
1017
-
1018
- // For custom strings, convert = true
1019
- /**
1020
- * Reads a string from the stream. String conversion is enabled.
1021
- * @param vdata A pointer to the beginning of the string.
1022
- * @param vsize The number of bytes in the string.
1023
- * @param holder Holds the string contents.
1024
- */
1025
- void read(const char*& vdata, size_t& vsize, std::string& holder);
1026
- #endif
1027
-
1028
- /**
1029
- * Reads a sequence of strings from the stream.
1030
- * @param v The extracted string sequence.
1031
- * @param convert Determines whether strings are processed by the string converter, if one
1032
- * is installed. The default behavior is to convert the strings.
1033
- */
1034
- void read(std::vector<std::string>& v, bool convert = true);
1035
-
1036
- /**
1037
- * Reads a wide string from the stream.
1038
- * @param v The extracted string.
1039
- */
1040
- void read(std::wstring& v);
1041
-
1042
- /**
1043
- * Reads a sequence of wide strings from the stream.
1044
- * @param v The extracted sequence.
1045
- */
1046
- void read(std::vector<std::wstring>& v);
1047
-
1048
- #ifdef ICE_CPP11_MAPPING
1049
- /**
1050
- * Reads a proxy from the stream.
1051
- * @return The proxy as the base ObjectPrx type.
1052
- */
1053
- std::shared_ptr<ObjectPrx> readProxy();
1054
-
1055
- /**
1056
- * Reads a typed proxy from the stream.
1057
- * @param v The proxy as a user-defined type.
1058
- */
1059
- template<typename T, typename ::std::enable_if<::std::is_base_of<ObjectPrx, T>::value>::type* = nullptr>
1060
- void read(::std::shared_ptr<T>& v)
1061
- {
1062
- ::std::shared_ptr<ObjectPrx> proxy(readProxy());
1063
- if(!proxy)
397
+ /// Reads an optional proxy from the stream.
398
+ /// @tparam T The type of the value to read.
399
+ /// @param tag The tag.
400
+ /// @param[out] v The proxy unmarshaled by this function. If nullopt, the proxy was not present in the stream or
401
+ /// was set to nullopt (set to nullopt is supported for backward compatibility with Ice 3.7 and earlier
402
+ /// releases).
403
+ template<typename T, std::enable_if_t<std::is_base_of_v<ObjectPrx, T>, bool> = true>
404
+ void read(std::int32_t tag, std::optional<T>& v)
1064
405
  {
1065
- v = 0;
406
+ if (readOptional(tag, OptionalFormat::FSize))
407
+ {
408
+ skip(4); // the fixed-length size on 4 bytes
409
+ read(v); // can be nullopt
410
+ }
411
+ else
412
+ {
413
+ v = std::nullopt;
414
+ }
1066
415
  }
1067
- else
416
+
417
+ /// Reads a sequence from the stream.
418
+ /// @param[out] v A pair of pointers representing the beginning and end of the sequence elements.
419
+ template<typename T> void read(std::pair<const T*, const T*>& v)
1068
420
  {
1069
- v = ::IceInternal::createProxy<T>();
1070
- v->_copyFrom(proxy);
421
+ auto holder = new std::vector<T>;
422
+ _deleters.push_back([holder] { delete holder; });
423
+ read(*holder);
424
+ if (holder->size() > 0)
425
+ {
426
+ v.first = holder->data();
427
+ v.second = holder->data() + holder->size();
428
+ }
429
+ else
430
+ {
431
+ v.first = 0;
432
+ v.second = 0;
433
+ }
1071
434
  }
1072
- }
1073
- #else
1074
- /**
1075
- * Reads a proxy from the stream.
1076
- * @param v The proxy as the base ObjectPrx type.
1077
- */
1078
- void read(ObjectPrx& v);
1079
-
1080
- /**
1081
- * Reads a typed proxy from the stream.
1082
- * @param v The proxy as a user-defined type.
1083
- */
1084
- template<typename T> void read(IceInternal::ProxyHandle<T>& v)
1085
- {
1086
- _readProxy(this, v); // Generated _readProxy method, necessary for forward declarations.
1087
- }
1088
- #endif
1089
435
 
1090
- /**
1091
- * Reads a value (instance of a Slice class) from the stream.
1092
- * @param v The instance.
1093
- */
1094
- #ifdef ICE_CPP11_MAPPING // C++11 mapping
1095
- template<typename T, typename ::std::enable_if<::std::is_base_of<Value, T>::value>::type* = nullptr>
1096
- void read(::std::shared_ptr<T>& v)
1097
- {
1098
- read(&patchHandle<T>, &v);
1099
- }
1100
- #else // C++98 mapping
1101
- template<typename T> void read(IceInternal::Handle<T>& v)
1102
- {
1103
- read(&patchHandle<T>, &v);
1104
- }
436
+ #if defined(ICE_UNALIGNED) || (defined(_WIN32) && defined(ICE_API_EXPORTS))
437
+ // Optimization with unaligned reads
438
+ void read(std::pair<const std::int16_t*, const std::int16_t*>& v) { unalignedRead(v); }
439
+ void read(std::pair<const std::int32_t*, const std::int32_t*>& v) { unalignedRead(v); }
440
+ void read(std::pair<const std::int64_t*, const std::int64_t*>& v) { unalignedRead(v); }
441
+ void read(std::pair<const float*, const float*>& v) { unalignedRead(v); }
442
+ void read(std::pair<const double*, const double*>& v) { unalignedRead(v); }
1105
443
  #endif
1106
444
 
1107
- /**
1108
- * Reads a value (instance of a Slice class) from the stream.
1109
- * @param patchFunc The patch callback function.
1110
- * @param patchAddr Closure data passed to the callback.
1111
- */
1112
- void read(PatchFunc patchFunc, void* patchAddr)
1113
- {
1114
- initEncaps();
1115
- _currentEncaps->decoder->read(patchFunc, patchAddr);
1116
- }
1117
-
1118
- /**
1119
- * Reads an enumerator from the stream.
1120
- * @param maxValue The maximum enumerator value in the definition.
1121
- * @return The enumerator value.
1122
- */
1123
- Int readEnum(Int maxValue);
1124
-
1125
- /**
1126
- * Extracts a user exception from the stream and throws it.
1127
- * @param factory If provided, this factory is given the first opportunity to instantiate
1128
- * the exception. If not provided, or if the factory does not throw an exception when invoked,
1129
- * the stream will attempt to instantiate the exception using static type information.
1130
- * @throws UserException The user exception that was unmarshaled.
1131
- */
1132
- void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)) factory = ICE_NULLPTR);
1133
-
1134
- /**
1135
- * Skips one optional value with the given format.
1136
- * @param format The expected format of the optional, if present.
1137
- */
1138
- void skipOptional(OptionalFormat format);
1139
-
1140
- /**
1141
- * Skips all remaining optional values.
1142
- */
1143
- void skipOptionals();
1144
-
1145
- /**
1146
- * Advances the current stream position by the given number of bytes.
1147
- * @param size The number of bytes to skip.
1148
- */
1149
- void skip(size_type size)
1150
- {
1151
- if(i + size > b.end())
445
+ /// Reads a byte from the stream.
446
+ /// @param[out] v The extracted byte.
447
+ void read(std::byte& v)
1152
448
  {
1153
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
449
+ if (i >= b.end())
450
+ {
451
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
452
+ }
453
+ v = *i++;
1154
454
  }
1155
- i += size;
1156
- }
1157
455
 
1158
- /**
1159
- * Reads a size at the current position and skips that number of bytes.
1160
- */
1161
- void skipSize()
1162
- {
1163
- Byte bt;
1164
- read(bt);
1165
- if(static_cast<unsigned char>(bt) == 255)
456
+ /// Reads a byte from the stream.
457
+ /// @param[out] v The extracted byte.
458
+ void read(std::uint8_t& v)
1166
459
  {
1167
- skip(4);
460
+ if (i >= b.end())
461
+ {
462
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
463
+ }
464
+ v = static_cast<std::uint8_t>(*i++);
1168
465
  }
1169
- }
1170
466
 
1171
- /**
1172
- * Obtains the current position of the stream.
1173
- * @return The current position.
1174
- */
1175
- size_type pos()
1176
- {
1177
- return static_cast<size_t>(i - b.begin());
1178
- }
467
+ /// Reads a sequence of bytes from the stream.
468
+ /// @param[out] v A vector to hold a copy of the bytes.
469
+ void read(std::vector<std::byte>& v);
1179
470
 
1180
- /**
1181
- * Sets a new position for the stream.
1182
- * @param p The new position.
1183
- */
1184
- void pos(size_type p)
1185
- {
1186
- i = b.begin() + p;
1187
- }
471
+ /// Reads a sequence of bytes from the stream.
472
+ /// @param[out] v A pair of pointers into the internal marshaling buffer representing the start and end of the
473
+ /// sequence elements.
474
+ void read(std::pair<const std::byte*, const std::byte*>& v);
475
+
476
+ /// Reads a bool from the stream.
477
+ /// @param[out] v The extracted bool.
478
+ void read(bool& v)
479
+ {
480
+ if (i >= b.end())
481
+ {
482
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
483
+ }
484
+ v = (std::byte{0} != *i++);
485
+ }
1188
486
 
1189
- /// \cond INTERNAL
1190
- InputStream(IceInternal::Instance*, const EncodingVersion&);
1191
- InputStream(IceInternal::Instance*, const EncodingVersion&, IceInternal::Buffer&, bool = false);
487
+ /// Reads a sequence of boolean values from the stream.
488
+ /// @param[out] v A vector to hold a copy of the boolean values.
489
+ void read(std::vector<bool>& v);
1192
490
 
1193
- void initialize(IceInternal::Instance*, const EncodingVersion&);
491
+ /// Reads a sequence of boolean values from the stream.
492
+ /// @param[out] v A pair of pointers into the internal marshaling buffer representing the start and end of the
493
+ /// sequence elements.
494
+ void read(std::pair<const bool*, const bool*>& v);
1194
495
 
1195
- bool readOptImpl(Int, OptionalFormat);
1196
- /// \endcond
496
+ /// Reads a short into an int16_t.
497
+ /// @param[out] v The extracted int16_t.
498
+ void read(std::int16_t& v);
1197
499
 
1198
- private:
500
+ /// Reads a sequence of Slice shorts into a vector of int16_t.
501
+ /// @param[out] v A vector to hold a copy of the int16_t values.
502
+ void read(std::vector<std::int16_t>& v);
1199
503
 
1200
- void initialize(const EncodingVersion&);
504
+ /// Reads an int from the stream.
505
+ /// @param[out] v The extracted int.
506
+ void read(std::int32_t& v);
1201
507
 
1202
- //
1203
- // String
1204
- //
1205
- bool readConverted(std::string&, Int);
508
+ /// Reads a sequence of ints from the stream.
509
+ /// @param[out] v A vector to hold a copy of the int values.
510
+ void read(std::vector<std::int32_t>& v);
1206
511
 
1207
- //
1208
- // We can't throw these exception from inline functions from within
1209
- // this file, because we cannot include the header with the
1210
- // exceptions. Doing so would screw up the whole include file
1211
- // ordering.
1212
- //
1213
- void throwUnmarshalOutOfBoundsException(const char*, int);
1214
- void throwEncapsulationException(const char*, int);
512
+ /// Reads a long from the stream.
513
+ /// @param[out]v The extracted long.
514
+ void read(std::int64_t& v);
1215
515
 
1216
- std::string resolveCompactId(int) const;
516
+ /// Reads a sequence of longs from the stream.
517
+ /// @param[out] v A vector to hold a copy of the long values.
518
+ void read(std::vector<std::int64_t>& v);
1217
519
 
1218
- void postUnmarshal(const ValuePtr&) const;
520
+ /// Read a float into a float.
521
+ /// @param[out] v The extracted float.
522
+ void read(float& v);
1219
523
 
1220
- class Encaps;
1221
- enum SliceType { NoSlice, ValueSlice, ExceptionSlice };
524
+ /// Reads a sequence of floats into a vector of float.
525
+ /// @param[out] v An output vector filled by this function.
526
+ void read(std::vector<float>& v);
1222
527
 
1223
- void traceSkipSlice(const std::string&, SliceType) const;
528
+ /// Reads a double into a double.
529
+ /// @param[out] v The extracted double.
530
+ void read(double& v);
1224
531
 
1225
- ValueFactoryManagerPtr valueFactoryManager() const;
532
+ /// Reads a sequence of doubles into a vector of double.
533
+ /// @param[out] v An output vector filled by this function.
534
+ void read(std::vector<double>& v);
1226
535
 
1227
- LoggerPtr logger() const;
536
+ /// @endcond
1228
537
 
1229
- #ifdef ICE_CPP11_MAPPING
1230
- std::function<std::string(int)> compactIdResolver() const;
1231
- #else
1232
- CompactIdResolverPtr compactIdResolver() const;
1233
- #endif
538
+ // We document read functions with an extra parameter.
1234
539
 
1235
- typedef std::vector<ValuePtr> ValueList;
540
+ /// Reads a string from the stream.
541
+ /// @param[out] v The unmarshaled string.
542
+ /// @param convert `true` to process the unmarshaled string through the string converter (if installed on the
543
+ /// communicator), `false` otherwise.
544
+ void read(std::string& v, bool convert = true);
1236
545
 
1237
- class ICE_API EncapsDecoder : private ::IceUtil::noncopyable
1238
- {
1239
- public:
546
+ /// Reads a string from the stream.
547
+ /// @param[out] vdata A pointer to the beginning of the string.
548
+ /// @param[out] vsize The number of bytes in the string.
549
+ /// @param convert `true` to process the unmarshaled string through the string converter (if installed on the
550
+ /// communicator), `false` otherwise.
551
+ void read(const char*& vdata, size_t& vsize, bool convert = true);
1240
552
 
1241
- virtual ~EncapsDecoder();
553
+ /// Reads a sequence of strings from the stream.
554
+ /// @param[out] v The unmarshaled string sequence.
555
+ /// @param convert `true` to process the unmarshaled string through the string converter (if installed on the
556
+ /// communicator), `false` otherwise.
557
+ void read(std::vector<std::string>& v, bool convert = true);
1242
558
 
1243
- virtual void read(PatchFunc, void*) = 0;
1244
- virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory))) = 0;
559
+ /// @cond INTERNAL
1245
560
 
1246
- virtual void startInstance(SliceType) = 0;
1247
- virtual SlicedDataPtr endInstance(bool) = 0;
1248
- virtual const std::string& startSlice() = 0;
1249
- virtual void endSlice() = 0;
1250
- virtual void skipSlice() = 0;
561
+ /// Reads a wide string from the stream.
562
+ /// @param[out] v The extracted string.
563
+ void read(std::wstring& v);
1251
564
 
1252
- virtual bool readOptional(Int, OptionalFormat)
565
+ /// Reads a sequence of wide strings from the stream.
566
+ /// @param[out] v The extracted sequence.
567
+ void read(std::vector<std::wstring>& v);
568
+
569
+ /// Reads a typed proxy from the stream.
570
+ /// @tparam Prx The type of the value to read.
571
+ /// @param[out] v The unmarshaled proxy.
572
+ template<typename Prx, std::enable_if_t<std::is_base_of_v<ObjectPrx, Prx>, bool> = true>
573
+ void read(std::optional<Prx>& v)
1253
574
  {
1254
- return false;
575
+ IceInternal::ReferencePtr ref = readReference();
576
+ if (ref)
577
+ {
578
+ v = Prx::_fromReference(ref);
579
+ }
580
+ else
581
+ {
582
+ v = std::nullopt;
583
+ }
1255
584
  }
1256
585
 
1257
- virtual void readPendingValues()
586
+ /// Reads an instance of a Slice class from the stream.
587
+ /// @tparam T The type of the value to read.
588
+ /// @param[out] v The unmarshaled instance.
589
+ template<typename T, std::enable_if_t<std::is_base_of_v<Value, T>>* = nullptr> void read(std::shared_ptr<T>& v)
1258
590
  {
591
+ read(patchValue<T>, &v);
1259
592
  }
1260
593
 
1261
- protected:
1262
-
1263
- EncapsDecoder(InputStream* stream, Encaps* encaps, bool sliceValues, size_t classGraphDepthMax,
1264
- const Ice::ValueFactoryManagerPtr& f) :
1265
- _stream(stream), _encaps(encaps), _sliceValues(sliceValues), _classGraphDepthMax(classGraphDepthMax),
1266
- _classGraphDepth(0), _valueFactoryManager(f), _typeIdIndex(0)
594
+ /// @private
595
+ /// Reads a value (instance of a Slice class) from the stream.
596
+ /// @param patchFunc The patch callback function.
597
+ /// @param patchAddr Closure data passed to the callback.
598
+ void read(PatchFunc patchFunc, void* patchAddr)
1267
599
  {
600
+ initEncaps();
601
+ _currentEncaps->decoder->read(std::move(patchFunc), patchAddr);
1268
602
  }
1269
603
 
1270
- std::string readTypeId(bool);
1271
- ValuePtr newInstance(const std::string&);
1272
-
1273
- void addPatchEntry(Int, PatchFunc, void*);
1274
- void unmarshal(Int, const ValuePtr&);
1275
-
1276
- typedef std::map<Int, ValuePtr> IndexToPtrMap;
1277
- typedef std::map<Int, std::string> TypeIdMap;
1278
-
1279
- struct PatchEntry
1280
- {
1281
- PatchFunc patchFunc;
1282
- void* patchAddr;
1283
- size_t classGraphDepth;
1284
- };
1285
- typedef std::vector<PatchEntry> PatchList;
1286
- typedef std::map<Int, PatchList> PatchMap;
604
+ /// @endcond
1287
605
 
1288
- InputStream* _stream;
1289
- Encaps* _encaps;
1290
- const bool _sliceValues;
1291
- const size_t _classGraphDepthMax;
1292
- size_t _classGraphDepth;
1293
- Ice::ValueFactoryManagerPtr _valueFactoryManager;
606
+ /// Reads an enumerator from the stream.
607
+ /// @param maxValue The maximum enumerator value in the definition.
608
+ /// @return The enumerator value.
609
+ std::int32_t readEnum(std::int32_t maxValue);
1294
610
 
1295
- // Encapsulation attributes for object un-marshalling
1296
- PatchMap _patchMap;
611
+ /// Reads a user exception from the stream and throws it.
612
+ /// @param factory The factory function that creates the exception instance. When null, the exception is created
613
+ /// using helper functions generated by the Slice compiler.
614
+ /// @throws UserException The user exception that was unmarshaled.
615
+ void throwException(UserExceptionFactory factory = nullptr);
1297
616
 
1298
- private:
617
+ /// Skips one optional value with the given format.
618
+ /// @param format The expected format of the optional, if present.
619
+ void skipOptional(OptionalFormat format);
1299
620
 
1300
- // Encapsulation attributes for object un-marshalling
1301
- IndexToPtrMap _unmarshaledMap;
1302
- TypeIdMap _typeIdMap;
1303
- Int _typeIdIndex;
1304
- ValueList _valueList;
1305
- };
621
+ /// Skips all remaining optional values.
622
+ void skipOptionals();
1306
623
 
1307
- class ICE_API EncapsDecoder10 : public EncapsDecoder
1308
- {
1309
- public:
624
+ /// Advances the current stream position by the given number of bytes.
625
+ /// @param size The number of bytes to skip.
626
+ void skip(size_type size)
627
+ {
628
+ if (i + size > b.end())
629
+ {
630
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
631
+ }
632
+ i += size;
633
+ }
1310
634
 
1311
- EncapsDecoder10(InputStream* stream, Encaps* encaps, bool sliceValues, size_t classGraphDepthMax,
1312
- const Ice::ValueFactoryManagerPtr& f) :
1313
- EncapsDecoder(stream, encaps, sliceValues, classGraphDepthMax, f),
1314
- _sliceType(NoSlice)
635
+ /// Reads a size at the current position and skips that number of bytes.
636
+ void skipSize()
1315
637
  {
638
+ std::uint8_t bt;
639
+ read(bt);
640
+ if (static_cast<unsigned char>(bt) == 255)
641
+ {
642
+ skip(4);
643
+ }
1316
644
  }
1317
645
 
1318
- virtual void read(PatchFunc, void*);
1319
- virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)));
646
+ /// Gets the current position of the stream.
647
+ /// @return The current position.
648
+ size_type pos() { return static_cast<size_t>(i - b.begin()); }
1320
649
 
1321
- virtual void startInstance(SliceType);
1322
- virtual SlicedDataPtr endInstance(bool);
1323
- virtual const std::string& startSlice();
1324
- virtual void endSlice();
1325
- virtual void skipSlice();
650
+ /// Sets a new position for the stream.
651
+ /// @param p The new position.
652
+ void pos(size_type p) { i = b.begin() + p; }
1326
653
 
1327
- virtual void readPendingValues();
654
+ /// @private
655
+ bool readOptImpl(std::int32_t, OptionalFormat);
1328
656
 
1329
657
  private:
658
+ #if defined(ICE_UNALIGNED) || (defined(_WIN32) && defined(ICE_API_EXPORTS))
659
+ template<typename T> void unalignedRead(std::pair<const T*, const T*>& v)
660
+ {
661
+ int sz = readAndCheckSeqSize(static_cast<int>(sizeof(T)));
1330
662
 
1331
- void readInstance();
663
+ if (sz > 0)
664
+ {
665
+ v.first = reinterpret_cast<T*>(i);
666
+ i += sz * static_cast<int>(sizeof(T));
667
+ v.second = reinterpret_cast<T*>(i);
668
+ }
669
+ else
670
+ {
671
+ v.first = v.second = nullptr;
672
+ }
673
+ }
674
+ #endif
1332
675
 
1333
- // Instance attributes
1334
- SliceType _sliceType;
1335
- bool _skipFirstSlice;
676
+ // The primary constructor, called by all other constructors. It requires a non-null instance.
677
+ InputStream(
678
+ IceInternal::Instance* instance,
679
+ EncodingVersion encoding,
680
+ IceInternal::Buffer&& buf,
681
+ SliceLoaderPtr sliceLoader);
1336
682
 
1337
- // Slice attributes
1338
- Int _sliceSize;
1339
- std::string _typeId;
1340
- };
683
+ // Reads a reference from the stream; the return value can be null.
684
+ IceInternal::ReferencePtr readReference();
1341
685
 
1342
- class ICE_API EncapsDecoder11 : public EncapsDecoder
1343
- {
1344
- public:
686
+ bool readConverted(std::string&, std::int32_t);
1345
687
 
1346
- EncapsDecoder11(InputStream* stream, Encaps* encaps, bool sliceValues, size_t classGraphDepthMax,
1347
- const Ice::ValueFactoryManagerPtr& f) :
1348
- EncapsDecoder(stream, encaps, sliceValues, classGraphDepthMax, f),
1349
- _preAllocatedInstanceData(0), _current(0), _valueIdIndex(1)
688
+ void throwUnmarshalOutOfBoundsException(const char*, int);
689
+
690
+ class Encaps;
691
+ enum SliceType
1350
692
  {
1351
- }
693
+ NoSlice,
694
+ ValueSlice,
695
+ ExceptionSlice
696
+ };
1352
697
 
1353
- virtual void read(PatchFunc, void*);
1354
- virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)));
698
+ void traceSkipSlice(std::string_view, SliceType) const;
1355
699
 
1356
- virtual void startInstance(SliceType);
1357
- virtual SlicedDataPtr endInstance(bool);
1358
- virtual const std::string& startSlice();
1359
- virtual void endSlice();
1360
- virtual void skipSlice();
700
+ using ValueList = std::vector<ValuePtr>;
1361
701
 
1362
- virtual bool readOptional(Int, OptionalFormat);
702
+ class ICE_API EncapsDecoder
703
+ {
704
+ public:
705
+ EncapsDecoder(const EncapsDecoder&) = delete;
706
+ virtual ~EncapsDecoder();
1363
707
 
1364
- private:
708
+ EncapsDecoder& operator=(const EncapsDecoder&) = delete;
1365
709
 
1366
- Int readInstance(Int, PatchFunc, void*);
1367
- SlicedDataPtr readSlicedData();
710
+ virtual void read(PatchFunc, void*) = 0;
711
+ virtual void throwException(UserExceptionFactory) = 0;
1368
712
 
1369
- struct IndirectPatchEntry
1370
- {
1371
- Int index;
1372
- PatchFunc patchFunc;
1373
- void* patchAddr;
1374
- };
1375
- typedef std::vector<IndirectPatchEntry> IndirectPatchList;
713
+ virtual void startInstance(SliceType) = 0;
714
+ virtual SlicedDataPtr endInstance() = 0;
715
+ virtual void startSlice() = 0;
716
+ virtual void endSlice() = 0;
717
+ virtual void skipSlice() = 0;
1376
718
 
1377
- typedef std::vector<Int> IndexList;
1378
- typedef std::vector<IndexList> IndexListList;
719
+ virtual bool readOptional(std::int32_t, OptionalFormat) { return false; }
1379
720
 
1380
- struct InstanceData
1381
- {
1382
- InstanceData(InstanceData* p) : previous(p), next(0)
721
+ virtual void readPendingValues() {}
722
+
723
+ protected:
724
+ EncapsDecoder(InputStream* stream, Encaps* encaps, std::int32_t classGraphDepthMax)
725
+ : _stream(stream),
726
+ _encaps(encaps),
727
+ _classGraphDepthMax(classGraphDepthMax)
1383
728
  {
1384
- if(previous)
1385
- {
1386
- previous->next = this;
1387
- }
1388
729
  }
1389
730
 
1390
- ~InstanceData()
731
+ std::string readTypeId(bool);
732
+ ValuePtr newInstance(std::string_view);
733
+
734
+ void addPatchEntry(std::int32_t, const PatchFunc&, void*);
735
+ void unmarshal(std::int32_t, const ValuePtr&);
736
+
737
+ using IndexToPtrMap = std::map<std::int32_t, ValuePtr>;
738
+ using TypeIdMap = std::map<std::int32_t, std::string>;
739
+
740
+ /// @private
741
+ struct PatchEntry
742
+ {
743
+ PatchFunc patchFunc;
744
+ void* patchAddr;
745
+ std::int32_t classGraphDepth;
746
+ };
747
+ using PatchList = std::vector<PatchEntry>;
748
+ using PatchMap = std::map<std::int32_t, PatchList>;
749
+
750
+ InputStream* _stream;
751
+ Encaps* _encaps;
752
+ const std::int32_t _classGraphDepthMax;
753
+ std::int32_t _classGraphDepth{0};
754
+
755
+ // Encapsulation attributes for object un-marshaling
756
+ PatchMap _patchMap;
757
+
758
+ private:
759
+ // Encapsulation attributes for object un-marshaling
760
+ IndexToPtrMap _unmarshaledMap;
761
+ TypeIdMap _typeIdMap;
762
+ std::int32_t _typeIdIndex{0};
763
+ ValueList _valueList;
764
+ };
765
+
766
+ class ICE_API EncapsDecoder10 : public EncapsDecoder
767
+ {
768
+ public:
769
+ EncapsDecoder10(InputStream* stream, Encaps* encaps, std::int32_t classGraphDepthMax)
770
+ : EncapsDecoder(stream, encaps, classGraphDepthMax)
1391
771
  {
1392
- if(next)
1393
- {
1394
- delete next;
1395
- }
1396
772
  }
1397
773
 
774
+ void read(PatchFunc, void*) override;
775
+ void throwException(UserExceptionFactory) override;
776
+
777
+ void startInstance(SliceType) override;
778
+ SlicedDataPtr endInstance() override;
779
+ void startSlice() override;
780
+ void endSlice() override;
781
+ void skipSlice() override;
782
+
783
+ void readPendingValues() override;
784
+
785
+ private:
786
+ void readInstance();
787
+
1398
788
  // Instance attributes
1399
- SliceType sliceType;
1400
- bool skipFirstSlice;
1401
- SliceInfoSeq slices; // Preserved slices.
1402
- IndexListList indirectionTables;
789
+ SliceType _sliceType{NoSlice};
790
+ bool _skipFirstSlice{false};
1403
791
 
1404
792
  // Slice attributes
1405
- Byte sliceFlags;
1406
- Int sliceSize;
1407
- std::string typeId;
1408
- int compactId;
1409
- IndirectPatchList indirectPatchList;
1410
-
1411
- InstanceData* previous;
1412
- InstanceData* next;
793
+ std::int32_t _sliceSize{0};
794
+ std::string _typeId;
1413
795
  };
1414
- InstanceData _preAllocatedInstanceData;
1415
- InstanceData* _current;
1416
796
 
1417
- void push(SliceType sliceType)
797
+ class ICE_API EncapsDecoder11 : public EncapsDecoder
1418
798
  {
1419
- if(!_current)
799
+ public:
800
+ EncapsDecoder11(InputStream* stream, Encaps* encaps, std::int32_t classGraphDepthMax)
801
+ : EncapsDecoder(stream, encaps, classGraphDepthMax),
802
+ _preAllocatedInstanceData(nullptr)
1420
803
  {
1421
- _current = &_preAllocatedInstanceData;
1422
804
  }
1423
- else
805
+
806
+ void read(PatchFunc, void*) override;
807
+ void throwException(UserExceptionFactory) override;
808
+
809
+ void startInstance(SliceType) override;
810
+ SlicedDataPtr endInstance() override;
811
+ void startSlice() override;
812
+ void endSlice() override;
813
+ void skipSlice() override;
814
+
815
+ bool readOptional(std::int32_t, OptionalFormat) override;
816
+
817
+ private:
818
+ std::int32_t readInstance(std::int32_t, const PatchFunc&, void*);
819
+ SlicedDataPtr readSlicedData();
820
+
821
+ struct IndirectPatchEntry
1424
822
  {
1425
- _current = _current->next ? _current->next : new InstanceData(_current);
1426
- }
1427
- _current->sliceType = sliceType;
1428
- _current->skipFirstSlice = false;
1429
- }
823
+ std::int32_t index;
824
+ PatchFunc patchFunc;
825
+ void* patchAddr;
826
+ };
827
+ using IndirectPatchList = std::vector<IndirectPatchEntry>;
1430
828
 
1431
- Int _valueIdIndex; // The ID of the next value to unmarshal.
1432
- };
829
+ using IndexList = std::vector<std::int32_t>;
830
+ using IndexListList = std::vector<IndexList>;
1433
831
 
1434
- class Encaps : private ::IceUtil::noncopyable
1435
- {
1436
- public:
832
+ struct InstanceData
833
+ {
834
+ InstanceData(InstanceData* p) : previous(p)
835
+ {
836
+ if (previous)
837
+ {
838
+ previous->next = this;
839
+ }
840
+ }
1437
841
 
1438
- Encaps() : start(0), decoder(0), previous(0)
1439
- {
1440
- // Inlined for performance reasons.
1441
- }
1442
- ~Encaps()
1443
- {
1444
- // Inlined for performance reasons.
1445
- delete decoder;
1446
- }
1447
- void reset()
1448
- {
1449
- // Inlined for performance reasons.
1450
- delete decoder;
1451
- decoder = 0;
842
+ ~InstanceData()
843
+ {
844
+ if (next)
845
+ {
846
+ delete next;
847
+ }
848
+ }
1452
849
 
1453
- previous = 0;
1454
- }
850
+ // Instance attributes
851
+ SliceType sliceType{NoSlice};
852
+ bool skipFirstSlice{false};
853
+ SliceInfoSeq slices; // Preserved slices.
854
+ IndexListList indirectionTables;
855
+
856
+ // Slice attributes
857
+ std::uint8_t sliceFlags{0};
858
+ std::int32_t sliceSize{0};
859
+ std::string typeId;
860
+ int compactId{-1};
861
+ IndirectPatchList indirectPatchList;
862
+
863
+ InstanceData* previous{nullptr};
864
+ InstanceData* next{nullptr};
865
+ };
866
+ InstanceData _preAllocatedInstanceData;
867
+ InstanceData* _current{nullptr};
868
+
869
+ void push(SliceType sliceType)
870
+ {
871
+ if (!_current)
872
+ {
873
+ _current = &_preAllocatedInstanceData;
874
+ }
875
+ else
876
+ {
877
+ _current = _current->next ? _current->next : new InstanceData(_current);
878
+ }
879
+ _current->sliceType = sliceType;
880
+ _current->skipFirstSlice = false;
881
+ }
1455
882
 
1456
- Container::size_type start;
1457
- Int sz;
1458
- EncodingVersion encoding;
883
+ std::int32_t _valueIdIndex{1}; // The ID of the next value to unmarshal.
884
+ };
1459
885
 
1460
- EncapsDecoder* decoder;
886
+ class Encaps
887
+ {
888
+ public:
889
+ Encaps() = default;
890
+ Encaps(const Encaps&) = delete;
891
+ ~Encaps() { delete decoder; }
892
+ Encaps& operator=(const Encaps&) = delete;
1461
893
 
1462
- Encaps* previous;
1463
- };
894
+ void reset()
895
+ {
896
+ // Inlined for performance reasons.
897
+ delete decoder;
898
+ decoder = nullptr;
1464
899
 
1465
- //
1466
- // Optimization. The instance may not be deleted while a
1467
- // stack-allocated stream still holds it.
1468
- //
1469
- IceInternal::Instance* _instance;
900
+ previous = nullptr;
901
+ }
1470
902
 
1471
- //
1472
- // The encoding version to use when there's no encapsulation to
1473
- // read from. This is for example used to read message headers.
1474
- //
1475
- EncodingVersion _encoding;
903
+ Container::size_type start{0};
904
+ std::int32_t sz;
905
+ EncodingVersion encoding;
1476
906
 
1477
- Encaps* _currentEncaps;
907
+ EncapsDecoder* decoder{nullptr};
1478
908
 
1479
- void initEncaps();
909
+ Encaps* previous{nullptr};
910
+ };
1480
911
 
1481
- Encaps _preAllocatedEncaps;
912
+ // Optimization. The instance may not be deleted while a stack-allocated stream still holds it.
913
+ IceInternal::Instance* const _instance;
1482
914
 
1483
- #ifndef ICE_CPP11_MAPPING
1484
- bool _collectObjects;
1485
- #endif
915
+ //
916
+ // The encoding version to use when there's no encapsulation to
917
+ // read from. This is for example used to read message headers.
918
+ //
919
+ EncodingVersion _encoding;
1486
920
 
1487
- bool _traceSlicing;
921
+ Encaps* _currentEncaps{nullptr};
1488
922
 
1489
- size_t _classGraphDepthMax;
923
+ void initEncaps();
1490
924
 
1491
- void* _closure;
925
+ Encaps _preAllocatedEncaps;
1492
926
 
1493
- bool _sliceValues;
927
+ // Retrieved during construction and cached.
928
+ const std::int32_t _classGraphDepthMax;
1494
929
 
1495
- int _startSeq;
1496
- int _minSeqSize;
930
+ void* _closure{nullptr};
1497
931
 
1498
- ValueFactoryManagerPtr _valueFactoryManager;
1499
- LoggerPtr _logger;
1500
- #ifdef ICE_CPP11_MAPPING
1501
- std::function<std::string(int)> _compactIdResolver;
1502
- #else
1503
- CompactIdResolverPtr _compactIdResolver;
1504
- #endif
932
+ int _startSeq{-1};
933
+ int _minSeqSize{0};
1505
934
 
1506
- #ifdef ICE_CPP11_MAPPING
1507
- std::vector<std::function<void()>> _deleters;
1508
- #endif
935
+ const SliceLoaderPtr _sliceLoader; // never null
1509
936
 
1510
- };
937
+ std::vector<std::function<void()>> _deleters;
938
+ };
1511
939
 
1512
940
  } // End namespace Ice
1513
941