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,1091 +1,891 @@
1
- //
2
- // Copyright (c) ZeroC, Inc. All rights reserved.
3
- //
1
+ // Copyright (c) ZeroC, Inc.
4
2
 
5
3
  #ifndef ICE_OUTPUT_STREAM_H
6
4
  #define ICE_OUTPUT_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/Buffer.h>
14
- #include <Ice/Protocol.h>
15
- #include <Ice/SlicedDataF.h>
16
- #include <Ice/StreamHelpers.h>
6
+ #include "Buffer.h"
7
+ #include "CommunicatorF.h"
8
+ #include "Ice/Format.h"
9
+ #include "Ice/StringConverter.h"
10
+ #include "Ice/Version.h"
11
+ #include "InstanceF.h"
12
+ #include "SlicedDataF.h"
13
+ #include "StreamableTraits.h"
14
+ #include "ValueF.h"
15
+
16
+ #include <cassert>
17
+ #include <cstdint>
18
+ #include <cstring>
19
+ #include <map>
20
+ #include <string>
21
+ #include <string_view>
22
+ #include <vector>
17
23
 
18
24
  namespace Ice
19
25
  {
26
+ class ObjectPrx;
20
27
 
21
- class UserException;
28
+ /// Identifies Slice encoding version 1.0.
29
+ constexpr EncodingVersion Encoding_1_0{1, 0};
22
30
 
23
- /**
24
- * Interface for output streams used to create a sequence of bytes from Slice types.
25
- * \headerfile Ice/Ice.h
26
- */
27
- class ICE_API OutputStream : public IceInternal::Buffer
28
- {
29
- public:
30
-
31
- typedef size_t size_type;
32
-
33
- /**
34
- * Constructs an OutputStream using the latest encoding version, the default format for
35
- * class encoding, and the process string converters. You can supply a communicator later
36
- * by calling initialize().
37
- */
38
- OutputStream();
39
-
40
- /**
41
- * Constructs a stream using the communicator's default encoding version.
42
- * @param communicator The communicator to use for marshaling tasks.
43
- */
44
- OutputStream(const CommunicatorPtr& communicator);
45
-
46
- /**
47
- * Constructs a stream using the given communicator and encoding version.
48
- * @param communicator The communicator to use for marshaling tasks.
49
- * @param version The encoding version used to encode the data.
50
- */
51
- OutputStream(const CommunicatorPtr& communicator, const EncodingVersion& version);
52
-
53
- /**
54
- * Constructs a stream using the given communicator and encoding version.
55
- * @param communicator The communicator to use for marshaling tasks.
56
- * @param version The encoding version used to encode the data.
57
- * @param bytes Application-supplied memory that the stream uses as its initial marshaling buffer. The
58
- * stream will reallocate if the size of the marshaled data exceeds the application's buffer.
59
- */
60
- OutputStream(const CommunicatorPtr& communicator, const EncodingVersion& version,
61
- const std::pair<const Byte*, const Byte*>& bytes);
62
-
63
- ~OutputStream()
64
- {
65
- // Inlined for performance reasons.
31
+ /// Identifies Slice encoding version 1.1.
32
+ constexpr EncodingVersion Encoding_1_1{1, 1};
66
33
 
67
- if(_currentEncaps != &_preAllocatedEncaps)
34
+ /// Represents a byte buffer used for marshaling data using the Slice encoding.
35
+ /// @headerfile Ice/Ice.h
36
+ class ICE_API OutputStream : public IceInternal::Buffer
37
+ {
38
+ public:
39
+ /// The size type for this byte buffer.
40
+ using size_type = std::size_t;
41
+
42
+ /// Constructs an OutputStream.
43
+ /// @param encoding The encoding version to use.
44
+ /// @param format The class format to use.
45
+ /// @param stringConverter The narrow string converter to use.
46
+ /// @param wstringConverter The wide string converter to use.
47
+ OutputStream(
48
+ EncodingVersion encoding = Encoding_1_1,
49
+ FormatType format = FormatType::CompactFormat,
50
+ StringConverterPtr stringConverter = nullptr,
51
+ WstringConverterPtr wstringConverter = nullptr);
52
+
53
+ /// Constructs an OutputStream using the format, string converter and wstring converter provided by the
54
+ /// communicator, and the specified encoding.
55
+ /// @param communicator The communicator.
56
+ /// @param encoding The encoding version to use.
57
+ OutputStream(const CommunicatorPtr& communicator, EncodingVersion encoding);
58
+
59
+ /// Constructs an OutputStream using the encoding, format, string converter and wstring converter provided by
60
+ /// the communicator.
61
+ /// @param communicator The communicator.
62
+ OutputStream(const CommunicatorPtr& communicator);
63
+
64
+ /// Constructs an OutputStream over an application-supplied buffer.
65
+ /// @param bytes Application-supplied memory that the OutputStream uses as its initial marshaling buffer. The
66
+ /// stream will reallocate if the size of the marshaled data exceeds the application's buffer.
67
+ /// @param encoding The encoding version to use.
68
+ /// @param format The class format to use.
69
+ /// @param stringConverter The narrow string converter to use.
70
+ /// @param wstringConverter The wide string converter to use.
71
+ OutputStream(
72
+ std::pair<const std::byte*, const std::byte*> bytes,
73
+ EncodingVersion encoding = Encoding_1_1,
74
+ FormatType format = FormatType::CompactFormat,
75
+ StringConverterPtr stringConverter = nullptr,
76
+ WstringConverterPtr wstringConverter = nullptr);
77
+
78
+ /// Move constructor.
79
+ /// @param other The output stream to move into this output stream.
80
+ OutputStream(OutputStream&& other) noexcept;
81
+
82
+ /// Move assignment operator.
83
+ /// @param other The output stream to move into this output stream.
84
+ /// @return A reference to this output stream.
85
+ OutputStream& operator=(OutputStream&& other) noexcept;
86
+
87
+ ~OutputStream()
68
88
  {
69
- clear(); // Not inlined.
89
+ // Inlined for performance reasons.
90
+
91
+ if (_currentEncaps != &_preAllocatedEncaps)
92
+ {
93
+ clear(); // Not inlined.
94
+ }
70
95
  }
71
- }
72
-
73
- /**
74
- * Initializes the stream to use the communicator's default encoding version, class
75
- * encoding format and string converters. Use this method if you originally constructed
76
- * the stream without a communicator.
77
- * @param communicator The communicator to use for marshaling tasks.
78
- */
79
- void initialize(const CommunicatorPtr& communicator);
80
-
81
- /**
82
- * Initializes the stream to use the given encoding version and the communicator's
83
- * default class encoding format and string converters. Use this method if you
84
- * originally constructed the stream without a communicator.
85
- * @param communicator The communicator to use for marshaling tasks.
86
- * @param version The encoding version used to encode the data.
87
- */
88
- void initialize(const CommunicatorPtr& communicator, const EncodingVersion& version);
89
-
90
- /**
91
- * Releases any data retained by encapsulations.
92
- */
93
- void clear();
94
-
95
- /// \cond INTERNAL
96
- //
97
- // Must return Instance*, because we don't hold an InstancePtr for
98
- // optimization reasons (see comments below).
99
- //
100
- IceInternal::Instance* instance() const { return _instance; } // Inlined for performance reasons.
101
- /// \endcond
102
-
103
- /**
104
- * Sets the class encoding format.
105
- * @param format The encoding format.
106
- */
107
- void setFormat(FormatType format);
108
-
109
- /**
110
- * Obtains the closure data associated with this stream.
111
- * @return The data as a void pointer.
112
- */
113
- void* getClosure() const;
114
-
115
- /**
116
- * Associates closure data with this stream.
117
- * @param p The data as a void pointer.
118
- * @return The previous closure data, or nil.
119
- */
120
- void* setClosure(void* p);
121
-
122
- /**
123
- * Swaps the contents of one stream with another.
124
- *
125
- * @param other The other stream.
126
- */
127
- void swap(OutputStream& other);
128
-
129
- /// \cond INTERNAL
130
- void resetEncapsulation();
131
- /// \endcond
132
-
133
- /**
134
- * Resizes the stream to a new size.
135
- *
136
- * @param sz The new size.
137
- */
138
- void resize(Container::size_type sz)
139
- {
140
- b.resize(sz);
141
- }
142
-
143
- /**
144
- * Marks the start of a class instance.
145
- * @param data Contains the marshaled form of unknown slices from this instance. If not nil,
146
- * these slices will be marshaled with the instance.
147
- */
148
- void startValue(const SlicedDataPtr& data)
149
- {
150
- assert(_currentEncaps && _currentEncaps->encoder);
151
- _currentEncaps->encoder->startInstance(ValueSlice, data);
152
- }
153
-
154
- /**
155
- * Marks the end of a class instance.
156
- */
157
- void endValue()
158
- {
159
- assert(_currentEncaps && _currentEncaps->encoder);
160
- _currentEncaps->encoder->endInstance();
161
- }
162
-
163
- /**
164
- * Marks the start of an exception instance.
165
- * @param data Contains the marshaled form of unknown slices from this instance. If not nil,
166
- * these slices will be marshaled with the instance.
167
- */
168
- void startException(const SlicedDataPtr& data)
169
- {
170
- assert(_currentEncaps && _currentEncaps->encoder);
171
- _currentEncaps->encoder->startInstance(ExceptionSlice, data);
172
- }
173
-
174
- /**
175
- * Marks the end of an exception instance.
176
- */
177
- void endException()
178
- {
179
- assert(_currentEncaps && _currentEncaps->encoder);
180
- _currentEncaps->encoder->endInstance();
181
- }
182
-
183
- /**
184
- * Writes the start of an encapsulation using the default encoding version and
185
- * class encoding format.
186
- */
187
- void startEncapsulation();
188
-
189
- /**
190
- * Writes the start of an encapsulation using the given encoding version and
191
- * class encoding format.
192
- * @param encoding The encoding version to use for the encapsulation.
193
- * @param format The class format to use for the encapsulation.
194
- */
195
- void startEncapsulation(const EncodingVersion& encoding, FormatType format)
196
- {
197
- IceInternal::checkSupportedEncoding(encoding);
198
96
 
199
- Encaps* oldEncaps = _currentEncaps;
200
- if(!oldEncaps) // First allocated encaps?
97
+ /// Releases any data retained by encapsulations.
98
+ void clear();
99
+
100
+ /// Swaps the contents of one stream with another.
101
+ /// @param other The other stream.
102
+ void swap(OutputStream& other) noexcept;
103
+
104
+ /// @cond INTERNAL
105
+
106
+ /// Gets the closure associated with this stream.
107
+ /// @return The closure.
108
+ [[nodiscard]] void* getClosure() const;
109
+
110
+ /// Associates a closure with this stream.
111
+ /// @param p The closure
112
+ /// @return The previous closure, or nullptr.
113
+ void* setClosure(void* p);
114
+
115
+ void resetEncapsulation();
116
+ /// @endcond
117
+
118
+ /// Resizes the stream to a new size.
119
+ /// @param sz The new size.
120
+ void resize(Container::size_type sz) { b.resize(sz); }
121
+
122
+ /// Marks the start of a class instance.
123
+ /// @param data Contains the marshaled form of unknown slices from the class instance. If not nullptr, these
124
+ /// slices will be marshaled with the instance.
125
+ void startValue(const SlicedDataPtr& data)
201
126
  {
202
- _currentEncaps = &_preAllocatedEncaps;
127
+ assert(_currentEncaps && _currentEncaps->encoder);
128
+ _currentEncaps->encoder->startInstance(ValueSlice, data);
203
129
  }
204
- else
130
+
131
+ /// Marks the end of a class instance.
132
+ void endValue()
205
133
  {
206
- _currentEncaps = new Encaps();
207
- _currentEncaps->previous = oldEncaps;
134
+ assert(_currentEncaps && _currentEncaps->encoder);
135
+ _currentEncaps->encoder->endInstance();
208
136
  }
209
- _currentEncaps->format = format;
210
- _currentEncaps->encoding = encoding;
211
- _currentEncaps->start = b.size();
212
-
213
- write(Int(0)); // Placeholder for the encapsulation length.
214
- write(_currentEncaps->encoding);
215
- }
216
-
217
- /**
218
- * Ends the current encapsulation.
219
- */
220
- void endEncapsulation()
221
- {
222
- assert(_currentEncaps);
223
137
 
224
- // Size includes size and version.
225
- const Int sz = static_cast<Int>(b.size() - _currentEncaps->start);
226
- write(sz, &(*(b.begin() + _currentEncaps->start)));
227
-
228
- Encaps* oldEncaps = _currentEncaps;
229
- _currentEncaps = _currentEncaps->previous;
230
- if(oldEncaps == &_preAllocatedEncaps)
138
+ /// Marks the start of an exception instance.
139
+ void startException()
231
140
  {
232
- oldEncaps->reset();
141
+ assert(_currentEncaps && _currentEncaps->encoder);
142
+ _currentEncaps->encoder->startInstance(ExceptionSlice, nullptr);
233
143
  }
234
- else
144
+
145
+ /// Marks the end of an exception instance.
146
+ void endException()
235
147
  {
236
- delete oldEncaps;
148
+ assert(_currentEncaps && _currentEncaps->encoder);
149
+ _currentEncaps->encoder->endInstance();
237
150
  }
238
- }
239
151
 
240
- /**
241
- * Writes an empty encapsulation using the given encoding version.
242
- * @param encoding The encoding version to use for the encapsulation.
243
- */
244
- void writeEmptyEncapsulation(const EncodingVersion& encoding)
245
- {
246
- IceInternal::checkSupportedEncoding(encoding);
247
- write(Int(6)); // Size
248
- write(encoding);
249
- }
250
-
251
- /**
252
- * Copies the marshaled form of an encapsulation to the buffer.
253
- * @param v The start of the buffer.
254
- * @param sz The number of bytes to copy.
255
- */
256
- void writeEncapsulation(const Byte* v, Int sz)
257
- {
258
- if(sz < 6)
152
+ /// Writes the start of an encapsulation using the default encoding version and class encoding format.
153
+ void startEncapsulation();
154
+
155
+ /// Writes the start of an encapsulation using the specified encoding version and class encoding format.
156
+ /// @param encoding The encoding version to use for the encapsulation.
157
+ /// @param format The class format to use for the encapsulation. nullopt is equivalent to the OutputStream's
158
+ /// class format.
159
+ void startEncapsulation(const EncodingVersion& encoding, std::optional<FormatType> format);
160
+
161
+ /// Ends the current encapsulation.
162
+ void endEncapsulation();
163
+
164
+ /// Writes an empty encapsulation using the specified encoding version.
165
+ /// @param encoding The encoding version to use for the encapsulation.
166
+ void writeEmptyEncapsulation(const EncodingVersion& encoding);
167
+
168
+ /// Copies the marshaled form of an encapsulation to the buffer.
169
+ /// @param v The start of the buffer.
170
+ /// @param sz The number of bytes to copy.
171
+ void writeEncapsulation(const std::byte* v, std::int32_t sz);
172
+
173
+ /// Gets the current encoding version.
174
+ /// @return The encoding version.
175
+ [[nodiscard]] const EncodingVersion& getEncoding() const
259
176
  {
260
- throwEncapsulationException(__FILE__, __LINE__);
177
+ return _currentEncaps ? _currentEncaps->encoding : _encoding;
261
178
  }
262
179
 
263
- Container::size_type position = b.size();
264
- resize(position + static_cast<size_t>(sz));
265
- memcpy(&b[position], &v[0], static_cast<size_t>(sz));
266
- }
267
-
268
- /**
269
- * Determines the current encoding version.
270
- *
271
- * @return The encoding version.
272
- */
273
- const EncodingVersion& getEncoding() const
274
- {
275
- return _currentEncaps ? _currentEncaps->encoding : _encoding;
276
- }
277
-
278
- /**
279
- * Writes the start of a value or exception slice.
280
- *
281
- * @param typeId The Slice type ID for this slice.
282
- * @param compactId The compact ID corresponding to the type, or -1 if no compact ID is used.
283
- * @param last True if this is the last slice, false otherwise.
284
- */
285
- void startSlice(const std::string& typeId, int compactId, bool last)
286
- {
287
- assert(_currentEncaps && _currentEncaps->encoder);
288
- _currentEncaps->encoder->startSlice(typeId, compactId, last);
289
- }
290
-
291
- /**
292
- * Marks the end of a value or exception slice.
293
- */
294
- void endSlice()
295
- {
296
- assert(_currentEncaps && _currentEncaps->encoder);
297
- _currentEncaps->encoder->endSlice();
298
- }
299
-
300
- /**
301
- * Encodes the state of class instances whose insertion was delayed during a previous
302
- * call to write. This member function must only be called once. For backward
303
- * compatibility with encoding version 1.0, this function must only be called when
304
- * non-optional data members or parameters use class types.
305
- */
306
- void writePendingValues();
307
-
308
- /**
309
- * Writes a size value.
310
- * @param v A non-negative integer.
311
- */
312
- void writeSize(Int v) // Inlined for performance reasons.
313
- {
314
- assert(v >= 0);
315
- if(v > 254)
180
+ /// Writes the start of a class instance or exception slice.
181
+ /// @param typeId The Slice type ID for this slice.
182
+ /// @param compactId The compact ID corresponding to the type, or -1 if no compact ID is used.
183
+ /// @param last `true` if this is the last slice, `false` otherwise.
184
+ void startSlice(std::string_view typeId, int compactId, bool last)
316
185
  {
317
- write(Byte(255));
318
- write(v);
186
+ assert(_currentEncaps && _currentEncaps->encoder);
187
+ _currentEncaps->encoder->startSlice(typeId, compactId, last);
319
188
  }
320
- else
189
+
190
+ /// Marks the end of a class instance or exception slice.
191
+ void endSlice()
321
192
  {
322
- write(static_cast<Byte>(v));
193
+ assert(_currentEncaps && _currentEncaps->encoder);
194
+ _currentEncaps->encoder->endSlice();
323
195
  }
324
- }
325
-
326
- /**
327
- * Replaces a size value at the given destination in the stream. This function
328
- * does not change the stream's current position.
329
- * @param v A non-negative integer representing the size.
330
- * @param dest The buffer destination for the size.
331
- */
332
- void rewriteSize(Int v, Container::iterator dest)
333
- {
334
- assert(v >= 0);
335
- if(v > 254)
196
+
197
+ /// Encodes the state of class instances whose insertion was delayed during a previous call `write`. This
198
+ /// function must be called only once. For backward compatibility with encoding version 1.0, this function must
199
+ /// be called only when non-optional fields or parameters use class types.
200
+ void writePendingValues();
201
+
202
+ /// Writes a size value.
203
+ /// @param v A non-negative integer.
204
+ void writeSize(std::int32_t v) // Inlined for performance reasons.
336
205
  {
337
- *dest++ = Byte(255);
338
- write(v, dest);
206
+ assert(v >= 0);
207
+ if (v > 254)
208
+ {
209
+ write(std::uint8_t(255));
210
+ write(v);
211
+ }
212
+ else
213
+ {
214
+ write(static_cast<std::uint8_t>(v));
215
+ }
339
216
  }
340
- else
217
+
218
+ /// Replaces a size value at the specified position in the stream. This function does not change the stream's
219
+ /// current position.
220
+ /// @param v A non-negative integer representing the size.
221
+ /// @param dest The buffer destination for the size.
222
+ void rewriteSize(std::int32_t v, Container::iterator dest)
341
223
  {
342
- *dest = static_cast<Byte>(v);
224
+ assert(v >= 0);
225
+ if (v > 254)
226
+ {
227
+ *dest++ = std::byte{255};
228
+ write(v, dest);
229
+ }
230
+ else
231
+ {
232
+ *dest = static_cast<std::byte>(v);
233
+ }
343
234
  }
344
- }
345
-
346
- /**
347
- * Writes a placeholder value for the size and returns the starting position of the
348
- * size value; after writing the data, call endSize to patch the placeholder with
349
- * the actual size at the given position.
350
- * @return The starting position of the size value.
351
- */
352
- size_type startSize()
353
- {
354
- size_type position = b.size();
355
- write(Int(0));
356
- return position;
357
- }
358
-
359
- /**
360
- * Updates the size value at the given position to contain a size based on the
361
- * stream's current position.
362
- * @param position The starting position of the size value as returned by startSize.
363
- */
364
- void endSize(size_type position)
365
- {
366
- rewrite(static_cast<Int>(b.size() - position) - 4, position);
367
- }
368
-
369
- /**
370
- * Copies the specified blob of bytes to the stream without modification.
371
- * @param v The bytes to be copied.
372
- */
373
- void writeBlob(const std::vector<Byte>& v);
374
-
375
- /**
376
- * Copies the specified blob of bytes to the stream without modification.
377
- * @param v The start of the buffer to be copied.
378
- * @param sz The number of bytes to be copied.
379
- */
380
- void writeBlob(const Byte* v, Container::size_type sz)
381
- {
382
- if(sz > 0)
235
+
236
+ /// Writes a placeholder value for the size and returns the starting position of the size value; after writing
237
+ /// the data, call #endSize to patch the placeholder with the actual size at the given position.
238
+ /// @return The starting position of the size value.
239
+ size_type startSize()
383
240
  {
384
- Container::size_type position = b.size();
385
- resize(position + sz);
386
- memcpy(&b[position], &v[0], sz);
241
+ size_type position = b.size();
242
+ write(std::int32_t(0));
243
+ return position;
387
244
  }
388
- }
389
245
 
390
- /**
391
- * Writes a data value to the stream.
392
- * @param v The data value to be written.
393
- */
394
- template<typename T> void write(const T& v)
395
- {
396
- StreamHelper<T, StreamableTraits<T>::helper>::write(this, v);
397
- }
398
-
399
- /**
400
- * Writes an optional data value to the stream.
401
- * @param tag The tag ID.
402
- * @param v The data value to be written (if any).
403
- */
404
- template<typename T> void write(Int tag, const IceUtil::Optional<T>& v)
405
- {
406
- if(!v)
246
+ /// Updates the size value at the given position. The new size is computed from stream's current position.
247
+ /// @param position The starting position of the size value as returned by #startSize.
248
+ void endSize(size_type position) { rewrite(static_cast<std::int32_t>(b.size() - position) - 4, position); }
249
+
250
+ /// Copies the specified blob of bytes to the stream without modification.
251
+ /// @param v The bytes to copy.
252
+ void writeBlob(const std::vector<std::byte>& v);
253
+
254
+ /// Copies the specified blob of bytes to the stream without modification.
255
+ /// @param v The start of the buffer to copy.
256
+ /// @param sz The number of bytes to copy.
257
+ void writeBlob(const std::byte* v, Container::size_type sz)
407
258
  {
408
- return; // Optional not set
259
+ if (sz > 0)
260
+ {
261
+ Container::size_type position = b.size();
262
+ resize(position + sz);
263
+ memcpy(&b[position], &v[0], sz);
264
+ }
409
265
  }
410
266
 
411
- if(writeOptional(tag, StreamOptionalHelper<T,
412
- StreamableTraits<T>::helper,
413
- StreamableTraits<T>::fixedLength>::optionalFormat))
267
+ /// Writes a value to the stream.
268
+ /// @tparam T The type of the value to marshal.
269
+ /// @param v The value to marshal.
270
+ template<typename T> void write(const T& v) { StreamHelper<T, StreamableTraits<T>::helper>::write(this, v); }
271
+
272
+ #ifdef ICE_DOXYGEN
273
+ /// Writes an optional value to the stream.
274
+ /// @tparam T The type of the value to marshal.
275
+ /// @param tag The tag.
276
+ /// @param v The value to marshal.
277
+ template<typename T> void write(std::int32_t tag, const std::optional<T>& v);
278
+
279
+ /// Writes a tuple to the stream.
280
+ /// @tparam I The index of the first element to marshal.
281
+ /// @tparam Te The types of the values in the tuple, starting at index @p I.
282
+ /// @param tuple The tuple to marshal.
283
+ // Declared here because the actual definition below breaks doxygen 1.13.2.
284
+ template<size_t I = 0, typename... Te >> writeAll(std::tuple<Te...> tuple);
285
+ #endif
286
+
287
+ /// Writes a value (single element list) to the stream.
288
+ /// @tparam T The type of the value.
289
+ /// @param v The value to marshal.
290
+ template<typename T> void writeAll(const T& v) { write(v); }
291
+
292
+ /// Writes a list of values to the stream.
293
+ /// @tparam T The type of the first value.
294
+ /// @tparam Te The types of the remaining values.
295
+ /// @param v The first value to marshal.
296
+ /// @param ve The remaining values.
297
+ template<typename T, typename... Te> void writeAll(const T& v, const Te&... ve)
414
298
  {
415
- StreamOptionalHelper<T,
416
- StreamableTraits<T>::helper,
417
- StreamableTraits<T>::fixedLength>::write(this, *v);
299
+ write(v);
300
+ writeAll(ve...);
418
301
  }
419
- }
420
302
 
421
- /**
422
- * Writes a sequence of data values to the stream.
423
- * @param v The sequence to be written.
424
- */
425
- template<typename T> void write(const std::vector<T>& v)
426
- {
427
- if(v.empty())
303
+ /// Writes an optional value (single element list) to the stream.
304
+ /// @tparam T The type of the value.
305
+ /// @param tags The tag list. The last tag is used to marshal the value.
306
+ /// @param v The value to marshal.
307
+ template<typename T> void writeAll(std::initializer_list<std::int32_t> tags, const std::optional<T>& v)
428
308
  {
429
- writeSize(0);
309
+ write(*(tags.begin() + tags.size() - 1), v);
430
310
  }
431
- else
311
+
312
+ /// Writes a list of optional values to the stream.
313
+ /// @tparam T The type of the first value.
314
+ /// @tparam Te The types of the remaining values.
315
+ /// @param tags The tag list.
316
+ /// @param v The first value to marshal.
317
+ /// @param ve The remaining values.
318
+ template<typename T, typename... Te>
319
+ void
320
+ writeAll(std::initializer_list<std::int32_t> tags, const std::optional<T>& v, const std::optional<Te>&... ve)
432
321
  {
433
- write(&v[0], &v[0] + v.size());
322
+ size_t index = tags.size() - sizeof...(ve) - 1;
323
+ write(*(tags.begin() + index), v);
324
+ writeAll(tags, ve...);
434
325
  }
435
- }
436
-
437
- /**
438
- * Writes a sequence of data values to the stream.
439
- * @param begin The beginning of the sequence.
440
- * @param end The end of the sequence.
441
- */
442
- template<typename T> void write(const T* begin, const T* end)
443
- {
444
- writeSize(static_cast<Int>(end - begin));
445
- for(const T* p = begin; p != end; ++p)
326
+
327
+ /// Writes the tag and format of an optional value.
328
+ /// @param tag The tag.
329
+ /// @param format The optional format.
330
+ /// @return `true` if the current encoding version supports optional values, `false` otherwise.
331
+ /// If `true`, the data associated with the optional value must be written next.
332
+ bool writeOptional(std::int32_t tag, OptionalFormat format)
446
333
  {
447
- write(*p);
334
+ assert(_currentEncaps);
335
+ if (_currentEncaps->encoder)
336
+ {
337
+ return _currentEncaps->encoder->writeOptional(tag, format);
338
+ }
339
+ else
340
+ {
341
+ return writeOptImpl(tag, format);
342
+ }
448
343
  }
449
- }
450
-
451
- #ifdef ICE_CPP11_MAPPING
452
-
453
- /**
454
- * Writes a list of mandatory data values.
455
- */
456
- template<typename T> void writeAll(const T& v)
457
- {
458
- write(v);
459
- }
460
344
 
461
- /**
462
- * Writes a list of mandatory data values.
463
- */
464
- template<typename T, typename... Te> void writeAll(const T& v, const Te&... ve)
465
- {
466
- write(v);
467
- writeAll(ve...);
468
- }
469
-
470
- /**
471
- * Writes a list of mandatory data values.
472
- */
473
- template<size_t I = 0, typename... Te>
474
- typename std::enable_if<I == sizeof...(Te), void>::type
475
- writeAll(std::tuple<Te...>)
476
- {
477
- // Do nothing. Either tuple is empty or we are at the end.
478
- }
479
-
480
- /**
481
- * Writes a list of mandatory data values.
482
- */
483
- template<size_t I = 0, typename... Te>
484
- typename std::enable_if<I < sizeof...(Te), void>::type
485
- writeAll(std::tuple<Te...> tuple)
486
- {
487
- write(std::get<I>(tuple));
488
- writeAll<I + 1, Te...>(tuple);
489
- }
490
-
491
- /**
492
- * Writes a list of optional data values.
493
- */
494
- template<typename T>
495
- void writeAll(std::initializer_list<int> tags, const IceUtil::Optional<T>& v)
496
- {
497
- write(*(tags.begin() + tags.size() - 1), v);
498
- }
499
-
500
- /**
501
- * Writes a list of optional data values.
502
- */
503
- template<typename T, typename... Te>
504
- void writeAll(std::initializer_list<int> tags, const IceUtil::Optional<T>& v, const IceUtil::Optional<Te>&... ve)
505
- {
506
- size_t index = tags.size() - sizeof...(ve) - 1;
507
- write(*(tags.begin() + index), v);
508
- writeAll(tags, ve...);
509
- }
345
+ /// @cond INTERNAL
510
346
 
511
- #endif
347
+ // We don't document all the write "specializations" in Doxygen. But we do keep them mostly documented for
348
+ // tool-tips.
512
349
 
513
- /**
514
- * Writes the tag and format of an optional value.
515
- * @param tag The optional tag ID.
516
- * @param format The optional format.
517
- * @return True if the current encoding version supports optional values, false otherwise.
518
- * If true, the data associated with the optional value must be written next.
519
- */
520
- bool writeOptional(Int tag, OptionalFormat format)
521
- {
522
- assert(_currentEncaps);
523
- if(_currentEncaps->encoder)
350
+ /// Writes an optional value to the stream.
351
+ /// @tparam T The type of the value to marshal. Not for proxy types.
352
+ /// @param tag The tag.
353
+ /// @param v The value to marshal.
354
+ template<typename T, std::enable_if_t<!std::is_base_of_v<ObjectPrx, T>, bool> = true>
355
+ void write(std::int32_t tag, const std::optional<T>& v)
524
356
  {
525
- return _currentEncaps->encoder->writeOptional(tag, format);
357
+ if (!v)
358
+ {
359
+ return; // Optional not set
360
+ }
361
+
362
+ if (writeOptional(
363
+ tag,
364
+ StreamOptionalHelper<T, StreamableTraits<T>::helper, StreamableTraits<T>::fixedLength>::
365
+ optionalFormat))
366
+ {
367
+ StreamOptionalHelper<T, StreamableTraits<T>::helper, StreamableTraits<T>::fixedLength>::write(this, *v);
368
+ }
526
369
  }
527
- else
370
+
371
+ /// Writes an optional value to the stream.
372
+ /// @tparam T The proxy type.
373
+ /// @param tag The tag.
374
+ /// @param v The value to marshal.
375
+ template<typename T, std::enable_if_t<std::is_base_of_v<ObjectPrx, T>, bool> = true>
376
+ void write(std::int32_t tag, const std::optional<T>& v)
528
377
  {
529
- return writeOptImpl(tag, format);
378
+ if (!v)
379
+ {
380
+ return; // Optional not set
381
+ }
382
+
383
+ if (writeOptional(tag, OptionalFormat::FSize))
384
+ {
385
+ size_type pos = startSize();
386
+ writeProxy(*v);
387
+ endSize(pos);
388
+ }
530
389
  }
531
- }
532
390
 
533
- /**
534
- * Writes a byte to the stream.
535
- * @param v The byte to write.
536
- */
537
- void write(Byte v)
538
- {
539
- b.push_back(v);
540
- }
541
-
542
- /**
543
- * Writes a byte sequence to the stream.
544
- * @param start The beginning of the sequence.
545
- * @param end The end of the sequence.
546
- */
547
- void write(const Byte* start, const Byte* end);
548
-
549
- /**
550
- * Writes a boolean to the stream.
551
- * @param v The boolean to write.
552
- */
553
- void write(bool v)
554
- {
555
- b.push_back(static_cast<Byte>(v));
556
- }
557
-
558
- /**
559
- * Writes a byte sequence to the stream.
560
- * @param v The sequence to be written.
561
- */
562
- void write(const std::vector<bool>& v);
563
-
564
- /**
565
- * Writes a byte sequence to the stream.
566
- * @param begin The beginning of the sequence.
567
- * @param end The end of the sequence.
568
- */
569
- void write(const bool* begin, const bool* end);
570
-
571
- /**
572
- * Writes a short to the stream.
573
- * @param v The short to write.
574
- */
575
- void write(Short v);
576
-
577
- /**
578
- * Writes a short sequence to the stream.
579
- * @param begin The beginning of the sequence.
580
- * @param end The end of the sequence.
581
- */
582
- void write(const Short* begin, const Short* end);
583
-
584
- /**
585
- * Writes an int to the stream.
586
- * @param v The int to write.
587
- */
588
- void write(Int v) // Inlined for performance reasons.
589
- {
590
- Container::size_type position = b.size();
591
- resize(position + sizeof(Int));
592
- write(v, &b[position]);
593
- }
594
-
595
- /**
596
- * Overwrites a 32-bit integer value at the given destination in the stream.
597
- * This function does not change the stream's current position.
598
- * @param v The integer value to be written.
599
- * @param dest The buffer destination for the integer value.
600
- */
601
- void write(Int v, Container::iterator dest)
602
- {
603
- #ifdef ICE_BIG_ENDIAN
604
- const Byte* src = reinterpret_cast<const Byte*>(&v) + sizeof(Int) - 1;
605
- *dest++ = *src--;
606
- *dest++ = *src--;
607
- *dest++ = *src--;
608
- *dest = *src;
609
- #else
610
- const Byte* src = reinterpret_cast<const Byte*>(&v);
611
- *dest++ = *src++;
612
- *dest++ = *src++;
613
- *dest++ = *src++;
614
- *dest = *src;
615
- #endif
616
- }
617
-
618
- /**
619
- * Writes an int sequence to the stream.
620
- * @param begin The beginning of the sequence.
621
- * @param end The end of the sequence.
622
- */
623
- void write(const Int* begin, const Int* end);
624
-
625
- /**
626
- * Writes a long to the stream.
627
- * @param v The long to write.
628
- */
629
- void write(Long v);
630
-
631
- /**
632
- * Writes a long sequence to the stream.
633
- * @param begin The beginning of the sequence.
634
- * @param end The end of the sequence.
635
- */
636
- void write(const Long* begin, const Long* end);
637
-
638
- /**
639
- * Writes a float to the stream.
640
- * @param v The float to write.
641
- */
642
- void write(Float v);
643
-
644
- /**
645
- * Writes a float sequence to the stream.
646
- * @param begin The beginning of the sequence.
647
- * @param end The end of the sequence.
648
- */
649
- void write(const Float* begin, const Float* end);
650
-
651
- /**
652
- * Writes a double to the stream.
653
- * @param v The double to write.
654
- */
655
- void write(Double v);
656
-
657
- /**
658
- * Writes a double sequence to the stream.
659
- * @param begin The beginning of the sequence.
660
- * @param end The end of the sequence.
661
- */
662
- void write(const Double* begin, const Double* end);
663
-
664
- /**
665
- * Writes a string to the stream.
666
- * @param v The string to write.
667
- * @param convert Determines whether the string is processed by the narrow string converter,
668
- * if one has been configured. The default behavior is to convert the strings.
669
- */
670
- void write(const std::string& v, bool convert = true)
671
- {
672
- Int sz = static_cast<Int>(v.size());
673
- if(convert && sz > 0)
391
+ /// Writes a sequence to the stream.
392
+ /// @tparam T The type of the elements in the sequence.
393
+ /// @param v The sequence to marshal.
394
+ template<typename T> void write(const std::vector<T>& v)
674
395
  {
675
- writeConverted(v.data(), static_cast<size_t>(sz));
396
+ if (v.empty())
397
+ {
398
+ writeSize(0);
399
+ }
400
+ else
401
+ {
402
+ write(&v[0], &v[0] + v.size());
403
+ }
676
404
  }
677
- else
405
+
406
+ /// Writes a sequence to the stream.
407
+ /// @tparam T The type of the elements in the sequence.
408
+ /// @param begin The beginning of the sequence.
409
+ /// @param end The end of the sequence.
410
+ template<typename T> void write(const T* begin, const T* end)
678
411
  {
679
- writeSize(sz);
680
- if(sz > 0)
412
+ writeSize(static_cast<std::int32_t>(end - begin));
413
+ for (const T* p = begin; p != end; ++p)
681
414
  {
682
- Container::size_type position = b.size();
683
- resize(position + static_cast<size_t>(sz));
684
- memcpy(&b[position], v.data(), static_cast<size_t>(sz));
415
+ write(*p);
685
416
  }
686
417
  }
687
- }
688
-
689
- /**
690
- * Writes a string to the stream.
691
- * @param vdata The string to write.
692
- * @param vsize The size of the string.
693
- * @param convert Determines whether the string is processed by the narrow string converter,
694
- * if one has been configured. The default behavior is to convert the strings.
695
- */
696
- void write(const char* vdata, size_t vsize, bool convert = true)
697
- {
698
- Int sz = static_cast<Int>(vsize);
699
- if(convert && sz > 0)
418
+
419
+ // Helper function for the next writeAll.
420
+ template<size_t I = 0, typename... Te> std::enable_if_t<I == sizeof...(Te), void> writeAll(std::tuple<Te...>)
700
421
  {
701
- writeConverted(vdata, vsize);
422
+ // Do nothing. Either tuple is empty or we are at the end.
702
423
  }
703
- else
424
+
425
+ /// Writes a tuple to the stream.
426
+ /// @tparam I The index of the first element to marshal.
427
+ /// @tparam Te The types of the values in the tuple, starting at index @p I.
428
+ /// @param tuple The tuple to marshal.
429
+ template<size_t I = 0, typename... Te>
430
+ std::enable_if_t < I<sizeof...(Te), void> writeAll(std::tuple<Te...> tuple)
704
431
  {
705
- writeSize(sz);
706
- if(sz > 0)
707
- {
708
- Container::size_type position = b.size();
709
- resize(position + static_cast<size_t>(sz));
710
- memcpy(&b[position], vdata, vsize);
711
- }
432
+ write(std::get<I>(tuple));
433
+ writeAll<I + 1, Te...>(tuple);
712
434
  }
713
- }
714
-
715
- /**
716
- * Writes a string to the stream.
717
- * @param vdata The null-terminated string to write.
718
- * @param convert Determines whether the string is processed by the narrow string converter,
719
- * if one has been configured. The default behavior is to convert the strings.
720
- */
721
- void write(const char* vdata, bool convert = true)
722
- {
723
- write(vdata, strlen(vdata), convert);
724
- }
725
-
726
- /**
727
- * Writes a string sequence to the stream.
728
- * @param begin The beginning of the sequence.
729
- * @param end The end of the sequence.
730
- * @param convert Determines whether the string is processed by the narrow string converter,
731
- * if one has been configured. The default behavior is to convert the strings.
732
- */
733
- void write(const std::string* begin, const std::string* end, bool convert = true);
734
-
735
- /**
736
- * Writes a wide string to the stream.
737
- * @param v The wide string to write.
738
- */
739
- void write(const std::wstring& v);
740
-
741
- /**
742
- * Writes a wide string sequence to the stream.
743
- * @param begin The beginning of the sequence.
744
- * @param end The end of the sequence.
745
- */
746
- void write(const std::wstring* begin, const std::wstring* end);
747
-
748
- #ifdef ICE_CPP11_MAPPING
749
- /**
750
- * Writes a proxy to the stream.
751
- * @param v The proxy to be written.
752
- */
753
- void writeProxy(const ::std::shared_ptr<ObjectPrx>& v);
754
-
755
- /**
756
- * Writes a proxy to the stream.
757
- * @param v The proxy to be written.
758
- */
759
- template<typename T, typename ::std::enable_if<::std::is_base_of<ObjectPrx, T>::value>::type* = nullptr>
760
- void write(const ::std::shared_ptr<T>& v)
761
- {
762
- writeProxy(::std::static_pointer_cast<ObjectPrx>(v));
763
- }
764
- #else
765
- /**
766
- * Writes a proxy to the stream.
767
- * @param v The proxy to be written.
768
- */
769
- void write(const ObjectPrx& v);
770
-
771
- /**
772
- * Writes a proxy to the stream.
773
- * @param v The proxy to be written.
774
- */
775
- template<typename T> void write(const IceInternal::ProxyHandle<T>& v)
776
- {
777
- write(ObjectPrx(upCast(v.get())));
778
- }
779
- #endif
780
435
 
781
- #ifdef ICE_CPP11_MAPPING // C++11 mapping
782
- /**
783
- * Writes a value instance to the stream.
784
- * @param v The value to be written.
785
- */
786
- template<typename T, typename ::std::enable_if<::std::is_base_of<Value, T>::value>::type* = nullptr>
787
- void write(const ::std::shared_ptr<T>& v)
788
- {
789
- initEncaps();
790
- _currentEncaps->encoder->write(v);
791
- }
792
- #else // C++98 mapping
793
- /**
794
- * Writes a value instance to the stream.
795
- * @param v The value to be written.
796
- */
797
- void write(const ObjectPtr& v)
798
- {
799
- initEncaps();
800
- _currentEncaps->encoder->write(v);
801
- }
802
-
803
- /**
804
- * Writes a value instance to the stream.
805
- * @param v The value to be written.
806
- */
807
- template<typename T> void write(const IceInternal::Handle<T>& v)
808
- {
809
- write(ObjectPtr(upCast(v.get())));
810
- }
811
- #endif
436
+ /// Writes a byte to the stream.
437
+ /// @param v The byte to marshal.
438
+ void write(std::byte v) { b.push_back(v); }
812
439
 
813
- /**
814
- * Writes an enumerator to the stream.
815
- * @param v The enumerator to be written.
816
- * @param maxValue The maximum value of all enumerators in this enumeration.
817
- */
818
- void writeEnum(Int v, Int maxValue);
819
-
820
- /**
821
- * Writes an exception to the stream.
822
- * @param v The exception to be written.
823
- */
824
- void writeException(const UserException& v);
825
-
826
- /**
827
- * Obtains the current position of the stream.
828
- * @return The current position.
829
- */
830
- size_type pos()
831
- {
832
- return b.size();
833
- }
834
-
835
- /**
836
- * Overwrite a 32-bit integer value at the given position in the stream.
837
- * This function does not change the stream's current position.
838
- * @param v The value to be written.
839
- * @param pos The buffer position for the value.
840
- */
841
- void rewrite(Int v, size_type pos)
842
- {
843
- write(v, b.begin() + pos);
844
- }
845
-
846
- /**
847
- * Indicates that marshaling is complete. This function must only be called once.
848
- * @param v Filled with a copy of the encoded data.
849
- */
850
- void finished(std::vector<Byte>& v);
851
-
852
- /**
853
- * Indicates that marshaling is complete. This function must only be called once.
854
- * @return A pair of pointers into the internal marshaling buffer. These pointers are
855
- * valid for the lifetime of the stream.
856
- */
857
- std::pair<const Byte*, const Byte*> finished();
858
-
859
- /// \cond INTERNAL
860
- OutputStream(IceInternal::Instance*, const EncodingVersion&);
861
- void initialize(IceInternal::Instance*, const EncodingVersion&);
862
-
863
- // Optionals
864
- bool writeOptImpl(Int, OptionalFormat);
865
- /// \endcond
866
-
867
- private:
868
-
869
- //
870
- // String
871
- //
872
- void writeConverted(const char*, size_t);
873
-
874
- //
875
- // We can't throw this exception from inline functions from within
876
- // this file, because we cannot include the header with the
877
- // exceptions. Doing so would screw up the whole include file
878
- // ordering.
879
- //
880
- void throwEncapsulationException(const char*, int);
881
-
882
- //
883
- // Optimization. The instance may not be deleted while a
884
- // stack-allocated stream still holds it.
885
- //
886
- IceInternal::Instance* _instance;
887
-
888
- //
889
- // The public stream API needs to attach data to a stream.
890
- //
891
- void* _closure;
892
-
893
- class Encaps;
894
- enum SliceType { NoSlice, ValueSlice, ExceptionSlice };
895
-
896
- typedef std::vector<ValuePtr> ValueList;
897
-
898
- class ICE_API EncapsEncoder : private ::IceUtil::noncopyable
899
- {
900
- public:
440
+ /// Writes a byte to the stream.
441
+ /// @param v The byte to marshal.
442
+ void write(std::uint8_t v) { b.push_back(std::byte{v}); }
901
443
 
902
- virtual ~EncapsEncoder();
444
+ /// Writes a boolean to the stream.
445
+ /// @param v The boolean to marshal.
446
+ void write(bool v) { b.push_back(static_cast<std::byte>(v)); }
903
447
 
904
- virtual void write(const ValuePtr&) = 0;
905
- virtual void write(const UserException&) = 0;
448
+ /// Writes a boolean sequence to the stream.
449
+ /// @param v The sequence to be written.
450
+ void write(const std::vector<bool>& v);
906
451
 
907
- virtual void startInstance(SliceType, const SlicedDataPtr&) = 0;
908
- virtual void endInstance() = 0;
909
- virtual void startSlice(const std::string&, int, bool) = 0;
910
- virtual void endSlice() = 0;
452
+ /// Writes an int16_t as a Slice short.
453
+ /// @param v The int16_t to marshal.
454
+ void write(std::int16_t v);
911
455
 
912
- virtual bool writeOptional(Int, OptionalFormat)
456
+ /// Writes an int to the stream.
457
+ /// @param v The int to marshal.
458
+ void write(std::int32_t v) // Inlined for performance reasons.
913
459
  {
914
- return false;
460
+ Container::size_type position = b.size();
461
+ resize(position + sizeof(std::int32_t));
462
+ write(v, &b[position]);
463
+ }
464
+
465
+ /// Writes a long to the stream.
466
+ /// @param v The long to marshal.
467
+ void write(std::int64_t v);
468
+
469
+ /// Writes a float as a Slice float.
470
+ /// @param v The float to marshal.
471
+ void write(float v);
472
+
473
+ /// Writes a double as a Slice double.
474
+ /// @param v The double to marshal.
475
+ void write(double v);
476
+
477
+ /// Writes a wide string to the stream.
478
+ /// @param v The wide string to marshal.
479
+ void write(const std::wstring& v) { write(std::wstring_view(v)); }
480
+
481
+ /// Writes a wide string view to the stream.
482
+ /// @param v The wide string view to marshal.
483
+ void write(std::wstring_view v);
484
+
485
+ /// @endcond
486
+
487
+ /// Overwrites a 32-bit integer value at the given position in the stream.
488
+ /// This function does not change the stream's current position.
489
+ /// @param v The integer value to marshal.
490
+ /// @param dest The buffer destination for the integer value.
491
+ void write(std::int32_t v, Container::iterator dest);
492
+
493
+ /// Writes a byte sequence to the stream.
494
+ /// @param start The beginning of the sequence.
495
+ /// @param end The end of the sequence.
496
+ void write(const std::byte* start, const std::byte* end);
497
+
498
+ /// Writes a byte sequence to the stream.
499
+ /// @param start The beginning of the sequence.
500
+ /// @param end The end of the sequence.
501
+ void write(const std::uint8_t* start, const std::uint8_t* end);
502
+
503
+ /// Writes a boolean sequence to the stream.
504
+ /// @param begin The beginning of the sequence.
505
+ /// @param end The end of the sequence.
506
+ void write(const bool* begin, const bool* end);
507
+
508
+ /// Writes an int16_t sequence as a Slice short sequence.
509
+ /// @param begin The beginning of the sequence.
510
+ /// @param end The end of the sequence.
511
+ void write(const std::int16_t* begin, const std::int16_t* end);
512
+
513
+ /// Writes an int sequence to the stream.
514
+ /// @param begin The beginning of the sequence.
515
+ /// @param end The end of the sequence.
516
+ void write(const std::int32_t* begin, const std::int32_t* end);
517
+
518
+ /// Writes a long sequence to the stream.
519
+ /// @param begin The beginning of the sequence.
520
+ /// @param end The end of the sequence.
521
+ void write(const std::int64_t* begin, const std::int64_t* end);
522
+
523
+ /// Writes a float sequence as a Slice float sequence.
524
+ /// @param begin The beginning of the sequence.
525
+ /// @param end The end of the sequence.
526
+ void write(const float* begin, const float* end);
527
+
528
+ /// Writes a double sequence as a Slice double sequence.
529
+ /// @param begin The beginning of the sequence.
530
+ /// @param end The end of the sequence.
531
+ void write(const double* begin, const double* end);
532
+
533
+ /// Writes a string to the stream.
534
+ /// @param v The string to marshal.
535
+ /// @param convert `true` to process @p v through the narrow string converter (if not null), `false` to write
536
+ /// @p v as-is.
537
+ void write(const std::string& v, bool convert = true) { write(std::string_view(v), convert); }
538
+
539
+ /// Writes a string view to the stream.
540
+ /// @param v The string view to marshal.
541
+ /// @param convert `true` to process @p v through the narrow string converter (if not null), `false` to write
542
+ /// @p v as-is.
543
+ void write(std::string_view v, bool convert = true)
544
+ {
545
+ auto sz = static_cast<std::int32_t>(v.size());
546
+ if (convert && sz > 0)
547
+ {
548
+ writeConverted(v.data(), static_cast<size_t>(sz));
549
+ }
550
+ else
551
+ {
552
+ writeSize(sz);
553
+ if (sz > 0)
554
+ {
555
+ Container::size_type position = b.size();
556
+ resize(position + static_cast<size_t>(sz));
557
+ memcpy(&b[position], v.data(), static_cast<size_t>(sz));
558
+ }
559
+ }
915
560
  }
916
561
 
917
- virtual void writePendingValues()
562
+ /// Writes a string to the stream.
563
+ /// @param vdata The string to marshal.
564
+ /// @param vsize The size of the string.
565
+ /// @param convert `true` to process @p vdata through the narrow string converter (if not null), `false` to
566
+ /// write @p vdata as-is.
567
+ void write(const char* vdata, size_t vsize, bool convert = true)
918
568
  {
569
+ auto sz = static_cast<std::int32_t>(vsize);
570
+ if (convert && sz > 0)
571
+ {
572
+ writeConverted(vdata, vsize);
573
+ }
574
+ else
575
+ {
576
+ writeSize(sz);
577
+ if (sz > 0)
578
+ {
579
+ Container::size_type position = b.size();
580
+ resize(position + static_cast<size_t>(sz));
581
+ memcpy(&b[position], vdata, vsize);
582
+ }
583
+ }
919
584
  }
920
585
 
921
- protected:
586
+ /// Writes a string to the stream.
587
+ /// @param vdata The null-terminated string to marshal.
588
+ /// @param convert `true` to process @p vdata through the narrow string converter (if not null), `false` to
589
+ /// write @p vdata as-is.
590
+ void write(const char* vdata, bool convert = true) { write(vdata, strlen(vdata), convert); }
591
+
592
+ /// Writes a string sequence to the stream.
593
+ /// @param begin The beginning of the sequence.
594
+ /// @param end The end of the sequence.
595
+ /// @param convert `true` to process the strings through the narrow string converter (if not null), `false` to
596
+ /// write the strings as-is.
597
+ void write(const std::string* begin, const std::string* end, bool convert = true);
598
+
599
+ /// Writes a wide string sequence to the stream.
600
+ /// @param begin The beginning of the sequence.
601
+ /// @param end The end of the sequence.
602
+ void write(const std::wstring* begin, const std::wstring* end);
603
+
604
+ /// Writes a proxy to the stream.
605
+ /// @param v The proxy to be written.
606
+ void writeProxy(const ObjectPrx& v);
607
+
608
+ /// Writes a null proxy to the stream.
609
+ void writeNullProxy();
610
+
611
+ /// @cond INTERNAL
612
+
613
+ /// Writes a proxy to the stream.
614
+ /// @param v The proxy to marshal.
615
+ template<typename Prx, std::enable_if_t<std::is_base_of_v<ObjectPrx, Prx>, bool> = true>
616
+ void write(const std::optional<Prx>& v)
617
+ {
618
+ if (v)
619
+ {
620
+ writeProxy(v.value());
621
+ }
622
+ else
623
+ {
624
+ writeNullProxy();
625
+ }
626
+ }
922
627
 
923
- EncapsEncoder(OutputStream* stream, Encaps* encaps) : _stream(stream), _encaps(encaps), _typeIdIndex(0)
628
+ /// Writes a value instance to the stream.
629
+ /// @param v The value to marshal.
630
+ template<typename T, std::enable_if_t<std::is_base_of_v<Value, T>>* = nullptr>
631
+ void write(const std::shared_ptr<T>& v)
924
632
  {
633
+ initEncaps();
634
+ _currentEncaps->encoder->write(v);
925
635
  }
926
636
 
927
- Int registerTypeId(const std::string&);
637
+ /// @endcond
928
638
 
929
- OutputStream* _stream;
930
- Encaps* _encaps;
639
+ /// Writes an enumerator to the stream.
640
+ /// @param v The enumerator to marshal.
641
+ /// @param maxValue The maximum value of all enumerators in this enumeration.
642
+ void writeEnum(std::int32_t v, std::int32_t maxValue);
931
643
 
932
- typedef std::map<ValuePtr, Int> PtrToIndexMap;
933
- typedef std::map<std::string, Int> TypeIdMap;
644
+ /// Writes a user exception to the stream.
645
+ /// @param v The exception to marshal.
646
+ void writeException(const UserException& v);
934
647
 
935
- // Encapsulation attributes for value marshaling.
936
- PtrToIndexMap _marshaledMap;
648
+ /// Gets the current position of the stream.
649
+ /// @return The current position.
650
+ size_type pos() { return b.size(); }
937
651
 
938
- private:
652
+ /// Overwrites a 32-bit integer value at the specified position in the stream. This function does not change the
653
+ /// stream's current position.
654
+ /// @param v The value to marshal.
655
+ /// @param pos The buffer position for the value.
656
+ void rewrite(std::int32_t v, size_type pos) { write(v, b.begin() + pos); }
939
657
 
940
- // Encapsulation attributes for value marshaling.
941
- TypeIdMap _typeIdMap;
942
- Int _typeIdIndex;
943
- };
658
+ /// Indicates that marshaling is complete. This function must only be called once.
659
+ /// @param[out] v Filled with a copy of the encoded data.
660
+ void finished(std::vector<std::byte>& v);
944
661
 
945
- class ICE_API EncapsEncoder10 : public EncapsEncoder
946
- {
947
- public:
662
+ /// Indicates that marshaling is complete. This function must only be called once.
663
+ /// @return A pair of pointers into the internal marshaling buffer. These pointers are valid for the lifetime
664
+ /// of the stream.
665
+ std::pair<const std::byte*, const std::byte*> finished();
948
666
 
949
- EncapsEncoder10(OutputStream* stream, Encaps* encaps) :
950
- EncapsEncoder(stream, encaps), _sliceType(NoSlice), _valueIdIndex(0)
667
+ /// @private
668
+ OutputStream(IceInternal::Instance*, EncodingVersion encoding);
669
+
670
+ private:
671
+ // Optionals
672
+ bool writeOptImpl(std::int32_t, OptionalFormat);
673
+
674
+ //
675
+ // String
676
+ //
677
+ void writeConverted(const char*, size_t);
678
+
679
+ /// Writes a 1-byte size placeholder and returns its position; after writing the data, call
680
+ /// #endOneByteSize to patch the placeholder with the actual size at the given position.
681
+ /// @return The position of the 1-byte size placeholder.
682
+ size_type startOneByteSize()
951
683
  {
684
+ size_type position = b.size();
685
+ write(std::uint8_t(0)); // placeholder
686
+ return position;
952
687
  }
953
688
 
954
- virtual void write(const ValuePtr&);
955
- virtual void write(const UserException&);
689
+ /// Updates the 1-byte size value at the given position. The new size is computed from the stream's current
690
+ /// position. The size must be <= 254.
691
+ /// @param position The position of the 1-byte size placeholder as returned by #startOneByteSize.
692
+ void endOneByteSize(size_type position)
693
+ {
694
+ auto size = static_cast<std::int32_t>(b.size() - position - 1);
695
+ assert(size >= 0 && size <= 254);
696
+ rewriteSize(size, b.begin() + position);
697
+ }
956
698
 
957
- virtual void startInstance(SliceType, const SlicedDataPtr&);
958
- virtual void endInstance();
959
- virtual void startSlice(const std::string&, int, bool);
960
- virtual void endSlice();
699
+ StringConverterPtr _stringConverter;
700
+ WstringConverterPtr _wstringConverter;
961
701
 
962
- virtual void writePendingValues();
702
+ //
703
+ // The public stream API needs to attach data to a stream.
704
+ //
705
+ void* _closure;
963
706
 
964
- private:
707
+ class Encaps;
708
+ enum SliceType
709
+ {
710
+ NoSlice,
711
+ ValueSlice,
712
+ ExceptionSlice
713
+ };
965
714
 
966
- Int registerValue(const ValuePtr&);
715
+ using ValueList = std::vector<ValuePtr>;
967
716
 
968
- // Instance attributes
969
- SliceType _sliceType;
717
+ class ICE_API EncapsEncoder
718
+ {
719
+ public:
720
+ EncapsEncoder(const EncapsEncoder&) = delete;
721
+ virtual ~EncapsEncoder();
970
722
 
971
- // Slice attributes
972
- Container::size_type _writeSlice; // Position of the slice data members
723
+ EncapsEncoder& operator=(const EncapsEncoder&) = delete;
973
724
 
974
- // Encapsulation attributes for value marshaling.
975
- Int _valueIdIndex;
976
- PtrToIndexMap _toBeMarshaledMap;
977
- };
725
+ virtual void write(const ValuePtr&) = 0;
726
+ virtual void write(const UserException&) = 0;
978
727
 
979
- class ICE_API EncapsEncoder11 : public EncapsEncoder
980
- {
981
- public:
728
+ virtual void startInstance(SliceType, const SlicedDataPtr&) = 0;
729
+ virtual void endInstance() = 0;
730
+ virtual void startSlice(std::string_view, int, bool) = 0;
731
+ virtual void endSlice() = 0;
732
+
733
+ virtual bool writeOptional(std::int32_t, OptionalFormat) { return false; }
734
+
735
+ virtual void writePendingValues() {}
736
+
737
+ protected:
738
+ EncapsEncoder(OutputStream* stream, Encaps* encaps) : _stream(stream), _encaps(encaps) {}
739
+
740
+ std::int32_t registerTypeId(std::string_view);
741
+
742
+ OutputStream* _stream;
743
+ Encaps* _encaps;
744
+
745
+ using PtrToIndexMap = std::map<ValuePtr, std::int32_t>;
746
+ using TypeIdMap = std::map<std::string, std::int32_t, std::less<>>;
747
+
748
+ // Encapsulation attributes for value marshaling.
749
+ PtrToIndexMap _marshaledMap;
750
+
751
+ private:
752
+ // Encapsulation attributes for value marshaling.
753
+ TypeIdMap _typeIdMap;
754
+ std::int32_t _typeIdIndex{0};
755
+ };
982
756
 
983
- EncapsEncoder11(OutputStream* stream, Encaps* encaps) :
984
- EncapsEncoder(stream, encaps), _preAllocatedInstanceData(0), _current(0), _valueIdIndex(1)
757
+ class ICE_API EncapsEncoder10 : public EncapsEncoder
985
758
  {
986
- }
759
+ public:
760
+ EncapsEncoder10(OutputStream* stream, Encaps* encaps) : EncapsEncoder(stream, encaps) {}
987
761
 
988
- virtual void write(const ValuePtr&);
989
- virtual void write(const UserException&);
762
+ void write(const ValuePtr&) override;
763
+ void write(const UserException&) override;
990
764
 
991
- virtual void startInstance(SliceType, const SlicedDataPtr&);
992
- virtual void endInstance();
993
- virtual void startSlice(const std::string&, int, bool);
994
- virtual void endSlice();
765
+ void startInstance(SliceType, const SlicedDataPtr&) override;
766
+ void endInstance() override;
767
+ void startSlice(std::string_view, int, bool) override;
768
+ void endSlice() override;
995
769
 
996
- virtual bool writeOptional(Int, OptionalFormat);
770
+ void writePendingValues() override;
997
771
 
998
- private:
772
+ private:
773
+ std::int32_t registerValue(const ValuePtr&);
999
774
 
1000
- void writeSlicedData(const SlicedDataPtr&);
1001
- void writeInstance(const ValuePtr&);
775
+ // Instance attributes
776
+ SliceType _sliceType{NoSlice};
1002
777
 
1003
- struct InstanceData
778
+ // Slice attributes
779
+ Container::size_type _writeSlice{0}; // Position of the slice data members
780
+
781
+ // Encapsulation attributes for value marshaling.
782
+ std::int32_t _valueIdIndex{0};
783
+ PtrToIndexMap _toBeMarshaledMap;
784
+ };
785
+
786
+ class ICE_API EncapsEncoder11 : public EncapsEncoder
1004
787
  {
1005
- InstanceData(InstanceData* p) : previous(p), next(0)
788
+ public:
789
+ EncapsEncoder11(OutputStream* stream, Encaps* encaps)
790
+ : EncapsEncoder(stream, encaps),
791
+ _preAllocatedInstanceData(nullptr)
1006
792
  {
1007
- if(previous)
1008
- {
1009
- previous->next = this;
1010
- }
1011
793
  }
1012
794
 
1013
- ~InstanceData()
795
+ void write(const ValuePtr&) override;
796
+ void write(const UserException&) override;
797
+
798
+ void startInstance(SliceType, const SlicedDataPtr&) override;
799
+ void endInstance() override;
800
+ void startSlice(std::string_view, int, bool) override;
801
+ void endSlice() override;
802
+
803
+ bool writeOptional(std::int32_t, OptionalFormat) override;
804
+
805
+ private:
806
+ void writeSlicedData(const SlicedDataPtr&);
807
+ void writeInstance(const ValuePtr&);
808
+
809
+ struct InstanceData
1014
810
  {
1015
- if(next)
811
+ InstanceData(InstanceData* p) : previous(p)
1016
812
  {
1017
- delete next;
813
+ if (previous)
814
+ {
815
+ previous->next = this;
816
+ }
1018
817
  }
1019
- }
1020
818
 
1021
- // Instance attributes
1022
- SliceType sliceType;
1023
- bool firstSlice;
819
+ ~InstanceData()
820
+ {
821
+ if (next)
822
+ {
823
+ delete next;
824
+ }
825
+ }
1024
826
 
1025
- // Slice attributes
1026
- Byte sliceFlags;
1027
- Container::size_type writeSlice; // Position of the slice data members
1028
- Container::size_type sliceFlagsPos; // Position of the slice flags
1029
- PtrToIndexMap indirectionMap;
1030
- ValueList indirectionTable;
1031
-
1032
- InstanceData* previous;
1033
- InstanceData* next;
1034
- };
1035
- InstanceData _preAllocatedInstanceData;
1036
- InstanceData* _current;
827
+ // Instance attributes
828
+ SliceType sliceType{NoSlice};
829
+ bool firstSlice{false};
1037
830
 
1038
- Int _valueIdIndex; // The ID of the next value to marhsal
1039
- };
831
+ // Slice attributes
832
+ std::uint8_t sliceFlags{0};
833
+ Container::size_type writeSlice{0}; // Position of the slice data members
834
+ Container::size_type sliceFlagsPos{0}; // Position of the slice flags
835
+ PtrToIndexMap indirectionMap;
836
+ ValueList indirectionTable;
1040
837
 
1041
- class Encaps : private ::IceUtil::noncopyable
1042
- {
838
+ InstanceData* previous{nullptr};
839
+ InstanceData* next{nullptr};
840
+ };
841
+ InstanceData _preAllocatedInstanceData;
842
+ InstanceData* _current{nullptr};
1043
843
 
1044
- public:
844
+ std::int32_t _valueIdIndex{1}; // The ID of the next value to marshal
845
+ };
1045
846
 
1046
- Encaps() : format(ICE_ENUM(FormatType, DefaultFormat)), encoder(0), previous(0)
847
+ class Encaps
1047
848
  {
1048
- // Inlined for performance reasons.
1049
- }
1050
- ~Encaps()
1051
- {
1052
- // Inlined for performance reasons.
1053
- delete encoder;
1054
- }
1055
- void reset()
1056
- {
1057
- // Inlined for performance reasons.
1058
- delete encoder;
1059
- encoder = 0;
849
+ public:
850
+ Encaps() = default;
851
+ Encaps(const Encaps&) = delete;
852
+ ~Encaps() { delete encoder; }
853
+ Encaps& operator=(const Encaps&) = delete;
1060
854
 
1061
- previous = 0;
1062
- }
855
+ void reset()
856
+ {
857
+ // Inlined for performance reasons.
858
+ delete encoder;
859
+ encoder = nullptr;
1063
860
 
1064
- Container::size_type start;
1065
- EncodingVersion encoding;
1066
- FormatType format;
861
+ previous = nullptr;
862
+ }
1067
863
 
1068
- EncapsEncoder* encoder;
864
+ Container::size_type start;
865
+ EncodingVersion encoding;
866
+ FormatType format{FormatType::CompactFormat};
1069
867
 
1070
- Encaps* previous;
1071
- };
868
+ EncapsEncoder* encoder{nullptr};
1072
869
 
1073
- //
1074
- // The encoding version to use when there's no encapsulation to
1075
- // read from or write to. This is for example used to read message
1076
- // headers or when the user is using the streaming API with no
1077
- // encapsulation.
1078
- //
1079
- EncodingVersion _encoding;
870
+ Encaps* previous{nullptr};
871
+ };
872
+
873
+ //
874
+ // The encoding version to use when there's no encapsulation to
875
+ // read from or write to. This is for example used to read message
876
+ // headers or when the user is using the streaming API with no
877
+ // encapsulation.
878
+ //
879
+ EncodingVersion _encoding;
1080
880
 
1081
- FormatType _format;
881
+ FormatType _format; // TODO: make it const
1082
882
 
1083
- Encaps* _currentEncaps;
883
+ Encaps* _currentEncaps;
1084
884
 
1085
- void initEncaps();
885
+ void initEncaps();
1086
886
 
1087
- Encaps _preAllocatedEncaps;
1088
- };
887
+ Encaps _preAllocatedEncaps;
888
+ };
1089
889
 
1090
890
  } // End namespace Ice
1091
891