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,1190 +1,652 @@
1
- //
2
- // Copyright (c) ZeroC, Inc. All rights reserved.
3
- //
1
+ // Copyright (c) ZeroC, Inc.
4
2
 
5
3
  #ifndef ICE_STREAM_HELPERS_H
6
4
  #define ICE_STREAM_HELPERS_H
7
5
 
8
- #include <Ice/ObjectF.h>
9
-
10
- #ifndef ICE_CPP11_MAPPING
11
- # include <IceUtil/ScopedArray.h>
12
- # include <IceUtil/Iterator.h>
6
+ #include "InputStream.h"
7
+ #include "OutputStream.h"
8
+ #include "StringConverter.h"
9
+
10
+ #include <iterator>
11
+ #include <ostream>
12
+
13
+ #if defined(_MSC_VER)
14
+ // With MSVC, __has_include(<span>) evaluates to 1 in c++17 mode and the <span> header then issues a warning that can't
15
+ // be disabled. This is a permissible but impractical behavior. See https://github.com/microsoft/STL/issues/4010.
16
+ # if _MSVC_LANG >= 202002L
17
+ # include <span>
18
+ # endif
19
+ #elif __has_include(<span>)
20
+ # include <span>
13
21
  #endif
14
22
 
15
23
  namespace Ice
16
24
  {
17
-
18
- /// \cond STREAM
19
-
20
- /**
21
- * The stream helper category allows streams to select the desired StreamHelper for a given streamable object.
22
- */
23
- typedef int StreamHelperCategory;
24
-
25
- /** For types with no specialized trait. */
26
- const StreamHelperCategory StreamHelperCategoryUnknown = 0;
27
- /** For built-in types. */
28
- const StreamHelperCategory StreamHelperCategoryBuiltin = 1;
29
- /** For struct types. */
30
- const StreamHelperCategory StreamHelperCategoryStruct = 2;
31
- /** For struct types with cpp:class metadata. */
32
- const StreamHelperCategory StreamHelperCategoryStructClass = 3;
33
- /** For enum types. */
34
- const StreamHelperCategory StreamHelperCategoryEnum = 4;
35
- /** For sequence types. */
36
- const StreamHelperCategory StreamHelperCategorySequence = 5;
37
- /** For dictionary types. */
38
- const StreamHelperCategory StreamHelperCategoryDictionary = 6;
39
- /** For proxy types. */
40
- const StreamHelperCategory StreamHelperCategoryProxy = 7;
41
- /** For class types. */
42
- const StreamHelperCategory StreamHelperCategoryClass = 8;
43
- /** For exception types. */
44
- const StreamHelperCategory StreamHelperCategoryUserException = 9;
45
-
46
- /**
47
- * The optional format.
48
- *
49
- * Optional data members and parameters are encoded with a specific
50
- * optional format. This optional format describes how the data is encoded
51
- * and how it can be skipped by the unmarshaling code if the optional ID
52
- * isn't known to the receiver.
53
- */
54
- #ifdef ICE_CPP11_MAPPING
55
- enum class OptionalFormat : unsigned char
56
- {
57
- /** Fixed 1-byte encoding. */
58
- F1 = 0,
59
- /** Fixed 2-byte encoding. */
60
- F2 = 1,
61
- /** Fixed 4-byte encoding. */
62
- F4 = 2,
63
- /** Fixed 8-byte encoding. */
64
- F8 = 3,
65
- /** "Size encoding" using 1 to 5 bytes, e.g., enum, class identifier. */
66
- Size = 4,
67
- /**
68
- * "Size encoding" using 1 to 5 bytes followed by data, e.g., string, fixed size
69
- * struct, or containers whose size can be computed prior to marshaling.
70
- */
71
- VSize = 5,
72
- /** Fixed size using 4 bytes followed by data, e.g., variable-size struct, container. */
73
- FSize = 6,
74
- /** Class instance. */
75
- Class = 7
76
- };
77
- #else
78
- enum OptionalFormat
79
- {
80
- /** Fixed 1-byte encoding. */
81
- OptionalFormatF1 = 0,
82
- /** Fixed 2-byte encoding. */
83
- OptionalFormatF2 = 1,
84
- /** Fixed 4-byte encoding. */
85
- OptionalFormatF4 = 2,
86
- /** Fixed 8-byte encoding. */
87
- OptionalFormatF8 = 3,
88
- /** "Size encoding" using 1 to 5 bytes, e.g., enum, class identifier. */
89
- OptionalFormatSize = 4,
90
- /**
91
- * "Size encoding" using 1 to 5 bytes followed by data, e.g., string, fixed size
92
- * struct, or containers whose size can be computed prior to marshaling.
93
- */
94
- OptionalFormatVSize = 5,
95
- /** Fixed size using 4 bytes followed by data, e.g., variable-size struct, container. */
96
- OptionalFormatFSize = 6,
97
- /** Class instance. */
98
- OptionalFormatClass = 7
99
- };
25
+ // StreamHelper templates used by streams to read, write and print data.
26
+
27
+ #ifdef ICE_DOXYGEN
28
+ /// Prints a value to a stream.
29
+ /// @tparam T The type of the value. It's either built-in Slice type or a type generated by the Slice compiler.
30
+ /// @param stream The stream.
31
+ /// @param v The value to print.
32
+ /// @remarks Depending on the type, @p v is passed by value or by const reference.
33
+ template<typename T> void print(std::ostream& stream, T v);
34
+
35
+ // We only provide this declaration for Doxygen. This template is specialized for all types that we support, and
36
+ // we want the compilation (not linking) to fail if a specialization is missing.
37
+
38
+ /// A helper template class for writing (marshaling) and reading (unmarshaling) values to and from a stream of
39
+ /// Slice-encoded bytes. This helper also prints Slice-defined types.
40
+ /// @tparam T The type of the value.
41
+ /// @tparam st The stream helper category.
42
+ /// @headerfile Ice/Ice.h
43
+ template<typename T, StreamHelperCategory st> struct StreamHelper
44
+ {
45
+ /// Writes a value to the stream.
46
+ /// @param stream The stream.
47
+ /// @param v The value to write.
48
+ /// @remark Each specialization chooses whether @p v is passed by value or by const reference.
49
+ static void write(OutputStream* stream, T v);
50
+
51
+ /// Reads a value from the stream.
52
+ /// @param stream The stream.
53
+ /// @param[out] v A reference to the value to read into.
54
+ static void read(InputStream* stream, T& v);
55
+
56
+ /// Prints a value to the stream.
57
+ /// @param stream The stream.
58
+ /// @param v The value to print.
59
+ /// @remark Each specialization chooses whether @p v is passed by value or by const reference.
60
+ static void print(std::ostream& stream, T v);
61
+ };
100
62
  #endif
101
63
 
102
- /**
103
- * Determines whether the provided type is a container. For now, the implementation only checks
104
- * if there is a T::iterator typedef using SFINAE.
105
- * \headerfile Ice/Ice.h
106
- */
107
- template<typename T>
108
- struct IsContainer
109
- {
110
- template<typename C>
111
- static char test(typename C::iterator*);
112
-
113
- template<typename C>
114
- static long test(...);
115
-
116
- static const bool value = sizeof(test<T>(0)) == sizeof(char);
117
- };
118
-
119
- /**
120
- * Determines whether the provided type is a map. For now, the implementation only checks if there
121
- * is a T::mapped_type typedef using SFINAE.
122
- * \headerfile Ice/Ice.h
123
- */
124
- template<typename T>
125
- struct IsMap
126
- {
127
- template<typename C>
128
- static char test(typename C::mapped_type*);
129
-
130
- template<typename C>
131
- static long test(...);
64
+ /// @cond INTERNAL
65
+
66
+ /// Prints a value with a pass-by-value type (such as `bool`, `int32`, or an enumeration) to a stream.
67
+ /// @tparam T The type of the value.
68
+ /// @param stream The stream.
69
+ /// @param v The value to print.
70
+ template<
71
+ typename T,
72
+ std::enable_if_t<
73
+ StreamableTraits<T>::helper == StreamHelperCategoryBuiltinValue ||
74
+ StreamableTraits<T>::helper == StreamHelperCategoryEnum,
75
+ bool> = true>
76
+ inline void print(std::ostream& stream, T v)
77
+ {
78
+ StreamHelper<T, StreamHelperCategoryBuiltinValue>::print(stream, v);
79
+ }
80
+
81
+ /// Prints an optional value with a pass-by-value type (such as `bool`, `int32`, or an enumeration) to a stream.
82
+ /// @tparam T The type of the value.
83
+ /// @param stream The stream.
84
+ /// @param v The value to print. nullopt is printed as "nullopt".
85
+ template<
86
+ typename T,
87
+ std::enable_if_t<
88
+ StreamableTraits<T>::helper == StreamHelperCategoryBuiltinValue ||
89
+ StreamableTraits<T>::helper == StreamHelperCategoryEnum,
90
+ bool> = true>
91
+ inline void print(std::ostream& stream, std::optional<T> v)
92
+ {
93
+ if (v)
94
+ {
95
+ Ice::print(stream, *v);
96
+ }
97
+ else
98
+ {
99
+ stream << "nullopt";
100
+ }
101
+ }
132
102
 
133
- static const bool value = IsContainer<T>::value && sizeof(test<T>(0)) == sizeof(char);
134
- };
103
+ /// Prints a value with a pass-by-const-reference type to the stream.
104
+ /// @tparam T The type of the value.
105
+ /// @param stream The stream.
106
+ /// @param v The value to print.
107
+ template<
108
+ typename T,
109
+ std::enable_if_t<
110
+ StreamableTraits<T>::helper != StreamHelperCategoryBuiltinValue &&
111
+ StreamableTraits<T>::helper != StreamHelperCategoryEnum,
112
+ bool> = true>
113
+ inline void print(std::ostream& stream, const T& v)
114
+ {
115
+ StreamHelper<T, StreamableTraits<T>::helper>::print(stream, v);
116
+ }
117
+
118
+ /// Prints an optional value with a pass-by-const-reference type to the stream.
119
+ /// @tparam T The type of the value.
120
+ /// @param stream The stream.
121
+ /// @param v The value to print. nullopt is printed as "nullopt".
122
+ template<
123
+ typename T,
124
+ std::enable_if_t<
125
+ StreamableTraits<T>::helper != StreamHelperCategoryBuiltinValue &&
126
+ StreamableTraits<T>::helper != StreamHelperCategoryEnum &&
127
+ StreamableTraits<std::optional<T>>::helper != StreamHelperCategoryProxy,
128
+ bool> = true>
129
+ inline void print(std::ostream& stream, const std::optional<T>& v)
130
+ {
131
+ if (v)
132
+ {
133
+ Ice::print(stream, *v);
134
+ }
135
+ else
136
+ {
137
+ stream << "nullopt";
138
+ }
139
+ }
135
140
 
136
- #ifdef ICE_CPP11_MAPPING
141
+ template<typename T> struct StreamHelper<T, StreamHelperCategoryBuiltinValue>
142
+ {
143
+ static void write(OutputStream* stream, T v) { stream->write(v); }
137
144
 
138
- /**
139
- * Base traits template. Types with no specialized trait use this trait.
140
- * \headerfile Ice/Ice.h
141
- */
142
- template<typename T, typename Enabler = void>
143
- struct StreamableTraits
144
- {
145
- static const StreamHelperCategory helper = StreamHelperCategoryUnknown;
145
+ static void read(InputStream* stream, T& v) { stream->read(v); }
146
146
 
147
- //
148
- // When extracting a sequence<T> from a stream, we can ensure the
149
- // stream has at least StreamableTraits<T>::minWireSize * size bytes
150
- // For containers, the minWireSize is 1 (just 1 byte for an empty container).
151
- //
152
- //static const int minWireSize = 1;
147
+ static void print(std::ostream& stream, T v) { stream << v; }
148
+ };
153
149
 
154
- //
155
- // Is this type encoded on a fixed number of bytes?
156
- // Used only for marshaling/unmarshaling optional data members and parameters.
157
- //
158
- //static const bool fixedLength = false;
159
- };
160
-
161
- /**
162
- * Specialization for sequence and dictionary types.
163
- * \headerfile Ice/Ice.h
164
- */
165
- template<typename T>
166
- struct StreamableTraits<T, typename ::std::enable_if<IsMap<T>::value || IsContainer<T>::value>::type>
167
- {
168
- static const StreamHelperCategory helper = IsMap<T>::value ? StreamHelperCategoryDictionary : StreamHelperCategorySequence;
169
- static const int minWireSize = 1;
170
- static const bool fixedLength = false;
171
- };
172
-
173
- /**
174
- * Specialization for exceptions.
175
- * \headerfile Ice/Ice.h
176
- */
177
- template<typename T>
178
- struct StreamableTraits<T, typename ::std::enable_if<::std::is_base_of<::Ice::UserException, T>::value>::type>
179
- {
180
- static const StreamHelperCategory helper = StreamHelperCategoryUserException;
150
+ template<> struct StreamHelper<bool, StreamHelperCategoryBuiltinValue>
151
+ {
152
+ static void print(std::ostream& stream, bool v) { stream << (v ? "true" : "false"); }
153
+ };
181
154
 
182
- //
183
- // There is no sequence/dictionary of UserException (so no need for minWireSize)
184
- // and no optional UserException (so no need for fixedLength)
185
- //
186
- };
187
-
188
- /**
189
- * Specialization for arrays (std::pair<const T*, const T*>).
190
- * \headerfile Ice/Ice.h
191
- */
192
- template<typename T>
193
- struct StreamableTraits<std::pair<T*, T*>>
194
- {
195
- static const StreamHelperCategory helper = StreamHelperCategorySequence;
196
- static const int minWireSize = 1;
197
- static const bool fixedLength = false;
198
- };
199
-
200
- #else
201
-
202
- /**
203
- * Base traits template. Types with no specialized trait use this trait, including sequence and
204
- * dictionary types.
205
- * \headerfile Ice/Ice.h
206
- */
207
- template<typename T, typename Enabler = void>
208
- struct StreamableTraits
209
- {
210
- static const StreamHelperCategory helper = IsMap<T>::value ? StreamHelperCategoryDictionary :
211
- (IsContainer<T>::value ? StreamHelperCategorySequence : StreamHelperCategoryUnknown);
212
-
213
- /**
214
- * When extracting a sequence<T> from a stream, we can ensure the
215
- * stream has at least StreamableTraits<T>::minWireSize * size bytes.
216
- * For containers, the minWireSize is 1 (just 1 byte for an empty container).
217
- */
218
- static const int minWireSize = 1;
219
-
220
- /**
221
- * Is this type encoded on a fixed number of bytes?
222
- * Used only for marshaling/unmarshaling optional data members and parameters.
223
- */
224
- static const bool fixedLength = false;
225
- };
226
-
227
- /**
228
- * Specialization for exceptions.
229
- * \headerfile Ice/Ice.h
230
- */
231
- template<>
232
- struct StreamableTraits<UserException>
233
- {
234
- static const StreamHelperCategory helper = StreamHelperCategoryUserException;
155
+ template<> struct StreamHelper<std::uint8_t, StreamHelperCategoryBuiltinValue>
156
+ {
157
+ static void print(std::ostream& stream, std::uint8_t v) { stream << static_cast<int>(v); }
158
+ };
235
159
 
236
- //
237
- // There is no sequence/dictionary of UserException (so no need for minWireSize)
238
- // and no optional UserException (so no need for fixedLength)
239
- //
240
- };
241
-
242
- /**
243
- * Specialization for array / range mapped sequences. The type can be a std::pair<T, T> or a
244
- * std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> >.
245
- * \headerfile Ice/Ice.h
246
- */
247
- template<typename T, typename U>
248
- struct StreamableTraits< ::std::pair<T, U> >
249
- {
250
- static const StreamHelperCategory helper = StreamHelperCategorySequence;
251
- static const int minWireSize = 1;
252
- static const bool fixedLength = false;
253
- };
254
- #endif
160
+ template<> struct StreamHelper<std::byte, StreamHelperCategoryBuiltinValue>
161
+ {
162
+ static void print(std::ostream& stream, std::byte v) { stream << static_cast<int>(v); }
163
+ };
255
164
 
256
- /**
257
- * Specialization for built-in type (this is needed for sequence
258
- * marshaling to figure out the minWireSize of each type).
259
- * \headerfile Ice/Ice.h
260
- */
261
- template<>
262
- struct StreamableTraits<bool>
263
- {
264
- static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
265
- static const int minWireSize = 1;
266
- static const bool fixedLength = true;
267
- };
268
-
269
- /**
270
- * Specialization for built-in type (this is needed for sequence
271
- * marshaling to figure out the minWireSize of each type).
272
- * \headerfile Ice/Ice.h
273
- */
274
- template<>
275
- struct StreamableTraits<Byte>
276
- {
277
- static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
278
- static const int minWireSize = 1;
279
- static const bool fixedLength = true;
280
- };
281
-
282
- /**
283
- * Specialization for built-in type (this is needed for sequence
284
- * marshaling to figure out the minWireSize of each type).
285
- * \headerfile Ice/Ice.h
286
- */
287
- template<>
288
- struct StreamableTraits<Short>
289
- {
290
- static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
291
- static const int minWireSize = 2;
292
- static const bool fixedLength = true;
293
- };
294
-
295
- /**
296
- * Specialization for built-in type (this is needed for sequence
297
- * marshaling to figure out the minWireSize of each type).
298
- * \headerfile Ice/Ice.h
299
- */
300
- template<>
301
- struct StreamableTraits<Int>
302
- {
303
- static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
304
- static const int minWireSize = 4;
305
- static const bool fixedLength = true;
306
- };
307
-
308
- /**
309
- * Specialization for built-in type (this is needed for sequence
310
- * marshaling to figure out the minWireSize of each type).
311
- * \headerfile Ice/Ice.h
312
- */
313
- template<>
314
- struct StreamableTraits<Long>
315
- {
316
- static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
317
- static const int minWireSize = 8;
318
- static const bool fixedLength = true;
319
- };
320
-
321
- /**
322
- * Specialization for built-in type (this is needed for sequence
323
- * marshaling to figure out the minWireSize of each type).
324
- * \headerfile Ice/Ice.h
325
- */
326
- template<>
327
- struct StreamableTraits<Float>
328
- {
329
- static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
330
- static const int minWireSize = 4;
331
- static const bool fixedLength = true;
332
- };
333
-
334
- /**
335
- * Specialization for built-in type (this is needed for sequence
336
- * marshaling to figure out the minWireSize of each type).
337
- * \headerfile Ice/Ice.h
338
- */
339
- template<>
340
- struct StreamableTraits<Double>
341
- {
342
- static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
343
- static const int minWireSize = 8;
344
- static const bool fixedLength = true;
345
- };
346
-
347
- /**
348
- * Specialization for built-in type (this is needed for sequence
349
- * marshaling to figure out the minWireSize of each type).
350
- * \headerfile Ice/Ice.h
351
- */
352
- template<>
353
- struct StreamableTraits< ::std::string>
354
- {
355
- static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
356
- static const int minWireSize = 1;
357
- static const bool fixedLength = false;
358
- };
359
-
360
- /**
361
- * Specialization for built-in type (this is needed for sequence
362
- * marshaling to figure out the minWireSize of each type).
363
- * \headerfile Ice/Ice.h
364
- */
365
- template<>
366
- struct StreamableTraits< ::std::wstring>
367
- {
368
- static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
369
- static const int minWireSize = 1;
370
- static const bool fixedLength = false;
371
- };
372
-
373
- /**
374
- * vector<bool> is a special type in C++: the streams handle it like a built-in type.
375
- * \headerfile Ice/Ice.h
376
- */
377
- template<>
378
- struct StreamableTraits< ::std::vector<bool> >
379
- {
380
- static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
381
- static const int minWireSize = 1;
382
- static const bool fixedLength = false;
383
- };
384
-
385
- /**
386
- * Specialization for proxy types.
387
- * \headerfile Ice/Ice.h
388
- */
389
- #ifdef ICE_CPP11_MAPPING
390
- template<typename T>
391
- struct StreamableTraits<::std::shared_ptr<T>, typename ::std::enable_if<::std::is_base_of<::Ice::ObjectPrx, T>::value>::type>
392
- {
393
- static const StreamHelperCategory helper = StreamHelperCategoryProxy;
394
- static const int minWireSize = 2;
395
- static const bool fixedLength = false;
396
- };
397
- #else
398
- template<typename T>
399
- struct StreamableTraits< ::IceInternal::ProxyHandle<T> >
400
- {
401
- static const StreamHelperCategory helper = StreamHelperCategoryProxy;
402
- static const int minWireSize = 2;
403
- static const bool fixedLength = false;
404
- };
405
- #endif
165
+ template<> struct StreamHelper<std::string_view, StreamHelperCategoryBuiltinValue>
166
+ {
167
+ static void write(OutputStream* stream, std::string_view v) { stream->write(v); }
406
168
 
407
- /**
408
- * Specialization for class types.
409
- * \headerfile Ice/Ice.h
410
- */
411
- #ifdef ICE_CPP11_MAPPING
412
- template<typename T>
413
- struct StreamableTraits<::std::shared_ptr<T>, typename ::std::enable_if<::std::is_base_of<::Ice::Value, T>::value>::type>
414
- {
415
- static const StreamHelperCategory helper = StreamHelperCategoryClass;
416
- static const int minWireSize = 1;
417
- static const bool fixedLength = false;
418
- };
419
- #else
420
- template<typename T>
421
- struct StreamableTraits< ::IceInternal::Handle<T> >
422
- {
423
- static const StreamHelperCategory helper = StreamHelperCategoryClass;
424
- static const int minWireSize = 1;
425
- static const bool fixedLength = false;
426
- };
427
- #endif
169
+ // No read: we marshal string views but unmarshal strings.
170
+ // No print: we only print fields.
171
+ };
428
172
 
429
- //
430
- // StreamHelper templates used by streams to read and write data.
431
- //
173
+ template<> struct StreamHelper<std::wstring_view, StreamHelperCategoryBuiltinValue>
174
+ {
175
+ static void write(OutputStream* stream, std::wstring_view v) { stream->write(v); }
432
176
 
433
- /** Base StreamHelper template; it must be specialized for each type. */
434
- template<typename T, StreamHelperCategory st>
435
- struct StreamHelper;
177
+ // No read: we marshal wstring views but don't unmarshal wstrings.
178
+ // No print: we only print fields.
179
+ };
436
180
 
437
- /**
438
- * Helper for built-ins, delegates read/write to the stream.
439
- * \headerfile Ice/Ice.h
440
- */
441
- template<typename T>
442
- struct StreamHelper<T, StreamHelperCategoryBuiltin>
443
- {
444
- template<class S> static inline void
445
- write(S* stream, const T& v)
181
+ /// Helper for built-in types that are not passed by value.
182
+ template<typename T> struct StreamHelper<T, StreamHelperCategoryBuiltin>
446
183
  {
447
- stream->write(v);
448
- }
184
+ static void write(OutputStream* stream, const T& v) { stream->write(v); }
449
185
 
450
- template<class S> static inline void
451
- read(S* stream, T& v)
452
- {
453
- stream->read(v);
454
- }
455
- };
456
-
457
- //
458
- // "helpers" for the StreamHelper<T, StreamHelperCategoryStruct[Class]> below
459
- // slice2cpp generates specializations as needed
460
- //
461
-
462
- /**
463
- * General writer. slice2cpp generates specializations as needed.
464
- * \headerfile Ice/Ice.h
465
- */
466
- template<typename T, typename S>
467
- struct StreamWriter
468
- {
469
- #ifdef ICE_CPP11_MAPPING
470
- static inline void write(S* stream, const T& v)
471
- {
472
- stream->writeAll(v.ice_tuple());
473
- }
474
- #else
475
- static inline void write(S*, const T&)
476
- {
477
- // Default is to write nothing for C++98
478
- }
479
- #endif
480
- };
481
-
482
- /**
483
- * General reader. slice2cpp generates specializations as needed.
484
- * \headerfile Ice/Ice.h
485
- */
486
- template<typename T, typename S>
487
- struct StreamReader
488
- {
489
- static inline void read(S*, T&)
490
- {
491
- // Default is to read nothing
492
- }
493
- };
494
-
495
- /**
496
- * Helper for structs.
497
- * \headerfile Ice/Ice.h
498
- */
499
- template<typename T>
500
- struct StreamHelper<T, StreamHelperCategoryStruct>
501
- {
502
- template<class S> static inline void
503
- write(S* stream, const T& v)
504
- {
505
- StreamWriter<T, S>::write(stream, v);
506
- }
186
+ static void read(InputStream* stream, T& v) { stream->read(v); }
507
187
 
508
- template<class S> static inline void
509
- read(S* stream, T& v)
510
- {
511
- StreamReader<T, S>::read(stream, v);
512
- }
513
- };
514
-
515
- /**
516
- * Helper for class structs.
517
- * \headerfile Ice/Ice.h
518
- */
519
- template<typename T>
520
- struct StreamHelper<T, StreamHelperCategoryStructClass>
521
- {
522
- template<class S> static inline void
523
- write(S* stream, const T& v)
524
- {
525
- StreamWriter<T, S>::write(stream, v);
526
- }
188
+ static void print(std::ostream& stream, const T& v) { stream << v; }
189
+ };
527
190
 
528
- template<class S> static inline void
529
- read(S* stream, T& v)
191
+ template<> struct StreamHelper<std::wstring, StreamHelperCategoryBuiltin>
530
192
  {
531
- v = new typename T::element_type;
532
- StreamReader<T, S>::read(stream, v);
533
- }
534
- };
535
-
536
- /**
537
- * Helper for enums.
538
- * \headerfile Ice/Ice.h
539
- */
540
- template<typename T>
541
- struct StreamHelper<T, StreamHelperCategoryEnum>
542
- {
543
- template<class S> static inline void
544
- write(S* stream, const T& v)
193
+ static void print(std::ostream& stream, const std::wstring& v) { stream << Ice::wstringToString(v); }
194
+ };
195
+
196
+ template<> struct StreamHelper<std::vector<bool>, StreamHelperCategoryBuiltin>
545
197
  {
546
- if(static_cast<Int>(v) < StreamableTraits<T>::minValue || static_cast<Int>(v) > StreamableTraits<T>::maxValue)
198
+ static void print(std::ostream& stream, const std::vector<bool>& v)
547
199
  {
548
- IceInternal::Ex::throwMarshalException(__FILE__, __LINE__, "enumerator out of range");
200
+ stream << '[';
201
+ bool firstElement = true;
202
+ for (bool element : v)
203
+ {
204
+ if (!firstElement)
205
+ {
206
+ stream << ", ";
207
+ }
208
+ firstElement = false;
209
+ Ice::print(stream, element);
210
+ }
211
+ stream << ']';
549
212
  }
550
- stream->writeEnum(static_cast<Int>(v), StreamableTraits<T>::maxValue);
551
- }
213
+ };
552
214
 
553
- template<class S> static inline void
554
- read(S* stream, T& v)
215
+ //
216
+ // "helpers" for the StreamHelper<T, StreamHelperCategoryStruct>. slice2cpp generates specializations as needed.
217
+ //
218
+
219
+ /// Reader used/generated for structs. Always specialized.
220
+ template<typename T> struct StreamReader;
221
+
222
+ template<typename T> struct StreamHelper<T, StreamHelperCategoryStruct>
555
223
  {
556
- Int value = stream->readEnum(StreamableTraits<T>::maxValue);
557
- if(value < StreamableTraits<T>::minValue || value > StreamableTraits<T>::maxValue)
558
- {
559
- IceInternal::Ex::throwMarshalException(__FILE__, __LINE__, "enumerator out of range");
560
- }
561
- v = static_cast<T>(value);
562
- }
563
- };
564
-
565
- /**
566
- * Helper for sequences.
567
- * \headerfile Ice/Ice.h
568
- */
569
- template<typename T>
570
- struct StreamHelper<T, StreamHelperCategorySequence>
571
- {
572
- template<class S> static inline void
573
- write(S* stream, const T& v)
224
+ static void write(OutputStream* stream, const T& v) { stream->writeAll(v.ice_tuple()); }
225
+
226
+ static void read(InputStream* stream, T& v) { StreamReader<T>::read(stream, v); }
227
+
228
+ static void print(std::ostream& stream, const T& v) { stream << v; }
229
+ };
230
+
231
+ template<typename T> struct StreamHelper<T, StreamHelperCategoryEnum>
574
232
  {
575
- stream->writeSize(static_cast<Int>(v.size()));
576
- for(typename T::const_iterator p = v.begin(); p != v.end(); ++p)
233
+ static void write(OutputStream* stream, T v)
577
234
  {
578
- stream->write(*p);
235
+ if (static_cast<std::int32_t>(v) < StreamableTraits<T>::minValue ||
236
+ static_cast<std::int32_t>(v) > StreamableTraits<T>::maxValue)
237
+ {
238
+ IceInternal::Ex::throwMarshalException(__FILE__, __LINE__, "enumerator out of range");
239
+ }
240
+ stream->writeEnum(static_cast<std::int32_t>(v), StreamableTraits<T>::maxValue);
579
241
  }
580
- }
581
242
 
582
- template<class S> static inline void
583
- read(S* stream, T& v)
584
- {
585
- Int sz = stream->readAndCheckSeqSize(StreamableTraits<typename T::value_type>::minWireSize);
586
- T(static_cast<size_t>(sz)).swap(v);
587
- for(typename T::iterator p = v.begin(); p != v.end(); ++p)
243
+ static void read(InputStream* stream, T& v)
588
244
  {
589
- stream->read(*p);
245
+ std::int32_t value = stream->readEnum(StreamableTraits<T>::maxValue);
246
+ if (value < StreamableTraits<T>::minValue || value > StreamableTraits<T>::maxValue)
247
+ {
248
+ IceInternal::Ex::throwMarshalException(__FILE__, __LINE__, "enumerator out of range");
249
+ }
250
+ v = static_cast<T>(value); // NOLINT
590
251
  }
591
- }
592
- };
593
-
594
- /**
595
- * Helper for array custom sequence parameters.
596
- * \headerfile Ice/Ice.h
597
- */
598
- template<typename T>
599
- struct StreamHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence>
600
- {
601
- template<class S> static inline void
602
- write(S* stream, const std::pair<const T*, const T*>& v)
603
- {
604
- stream->write(v.first, v.second);
605
- }
606
252
 
607
- template<class S> static inline void
608
- read(S* stream, std::pair<const T*, const T*>& v)
609
- {
610
- stream->read(v);
611
- }
612
- };
613
-
614
- #ifndef ICE_CPP11_MAPPING
253
+ static void print(std::ostream& stream, T v) { stream << v; }
254
+ };
615
255
 
616
- /**
617
- * Helper for range custom sequence parameters.
618
- * \headerfile Ice/Ice.h
619
- */
620
- template<typename T>
621
- struct StreamHelper<std::pair<T, T>, StreamHelperCategorySequence>
622
- {
623
- template<class S> static inline void
624
- write(S* stream, const std::pair<T, T>& v)
256
+ template<typename T> struct StreamHelper<T, StreamHelperCategorySequence>
625
257
  {
626
- stream->writeSize(static_cast<Int>(IceUtilInternal::distance(v.first, v.second)));
627
- for(T p = v.first; p != v.second; ++p)
258
+ static void write(OutputStream* stream, const T& v)
628
259
  {
629
- stream->write(*p);
260
+ stream->writeSize(static_cast<std::int32_t>(v.size()));
261
+ for (const auto& element : v)
262
+ {
263
+ stream->write(element);
264
+ }
630
265
  }
631
- }
632
266
 
633
- template<class S> static inline void
634
- read(S* stream, std::pair<T, T>& v)
635
- {
636
- stream->read(v);
637
- }
638
- };
639
-
640
- /**
641
- * Specialization for sequence<bool>.
642
- * \headerfile Ice/Ice.h
643
- */
644
- template<>
645
- struct StreamHelper<std::pair< ::std::vector<bool>::const_iterator,
646
- ::std::vector<bool>::const_iterator>, StreamHelperCategorySequence>
647
- {
648
- template<class S> static inline void
649
- write(S* stream, const std::pair< ::std::vector<bool>::const_iterator,
650
- ::std::vector<bool>::const_iterator>& v)
651
- {
652
- stream->writeSize(static_cast<Int>(IceUtilInternal::distance(v.first, v.second)));
653
- for(::std::vector<bool>::const_iterator p = v.first; p != v.second; ++p)
267
+ static void read(InputStream* stream, T& v)
654
268
  {
655
- stream->write(static_cast<bool>(*p));
269
+ std::int32_t sz = stream->readAndCheckSeqSize(StreamableTraits<typename T::value_type>::minWireSize);
270
+ T(static_cast<size_t>(sz)).swap(v);
271
+ for (auto& element : v)
272
+ {
273
+ stream->read(element);
274
+ }
656
275
  }
657
- }
658
- };
659
-
660
- /**
661
- * Helper for zero-copy array sequence parameters.
662
- * \headerfile Ice/Ice.h
663
- */
664
- template<typename T>
665
- struct StreamHelper<std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> >, StreamHelperCategorySequence>
666
- {
667
- template<class S> static inline void
668
- read(S* stream, std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> >& v)
276
+
277
+ static void print(std::ostream& stream, const T& v)
278
+ {
279
+ stream << '[';
280
+ bool firstElement = true;
281
+ for (const auto& element : v)
282
+ {
283
+ if (!firstElement)
284
+ {
285
+ stream << ", ";
286
+ }
287
+ firstElement = false;
288
+ Ice::print(stream, element);
289
+ }
290
+ stream << ']';
291
+ }
292
+ };
293
+
294
+ /// Helper the array custom sequence mapping.
295
+ template<typename T> struct StreamHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence>
669
296
  {
670
- stream->read(v.second, v.first);
671
- }
297
+ static void write(OutputStream* stream, std::pair<const T*, const T*> v) { stream->write(v.first, v.second); }
298
+
299
+ static void read(InputStream* stream, std::pair<const T*, const T*>& v) { stream->read(v); }
300
+
301
+ // No print: we only print fields.
302
+ };
672
303
 
673
- // no write: only used for unmarshaling
674
- };
304
+ #ifdef __cpp_lib_span
305
+ /// Helper for span (C++20 or later).
306
+ template<typename T> struct StreamHelper<std::span<T>, StreamHelperCategorySequence>
307
+ {
308
+ static void write(OutputStream* stream, const std::span<T>& v) { stream->write(v.data(), v.data() + v.size()); }
309
+
310
+ // No read. span are only for view types.
311
+ // No print: we only print fields.
312
+ };
675
313
  #endif
676
314
 
677
- /**
678
- * Helper for dictionaries.
679
- * \headerfile Ice/Ice.h
680
- */
681
- template<typename T>
682
- struct StreamHelper<T, StreamHelperCategoryDictionary>
683
- {
684
- template<class S> static inline void
685
- write(S* stream, const T& v)
315
+ template<typename T> struct StreamHelper<T, StreamHelperCategoryDictionary>
686
316
  {
687
- stream->writeSize(static_cast<Int>(v.size()));
688
- for(typename T::const_iterator p = v.begin(); p != v.end(); ++p)
317
+ static void write(OutputStream* stream, const T& v)
689
318
  {
690
- stream->write(p->first);
691
- stream->write(p->second);
319
+ stream->writeSize(static_cast<std::int32_t>(v.size()));
320
+ for (const auto& entry : v)
321
+ {
322
+ stream->write(entry.first);
323
+ stream->write(entry.second);
324
+ }
692
325
  }
693
- }
694
326
 
695
- template<class S> static inline void
696
- read(S* stream, T& v)
697
- {
698
- Int sz = stream->readSize();
699
- v.clear();
700
- while(sz--)
327
+ static void read(InputStream* stream, T& v)
701
328
  {
702
- typename T::value_type p;
703
- stream->read(const_cast<typename T::key_type&>(p.first));
704
- typename T::iterator i = v.insert(v.end(), p);
705
- stream->read(i->second);
329
+ std::int32_t sz = stream->readSize();
330
+ v.clear();
331
+ while (sz--)
332
+ {
333
+ typename T::value_type p;
334
+ stream->read(const_cast<typename T::key_type&>(p.first));
335
+ auto i = v.insert(v.end(), p);
336
+ stream->read(i->second);
337
+ }
706
338
  }
707
- }
708
- };
709
-
710
- /**
711
- * Helper for user exceptions.
712
- * \headerfile Ice/Ice.h
713
- */
714
- template<typename T>
715
- struct StreamHelper<T, StreamHelperCategoryUserException>
716
- {
717
- template<class S> static inline void
718
- write(S* stream, const T& v)
719
- {
720
- stream->writeException(v);
721
- }
722
339
 
723
- // no read: only used for marshaling
724
- };
340
+ static void print(std::ostream& stream, const T& v)
341
+ {
342
+ stream << '[';
343
+ bool firstEntry = true;
344
+ for (const auto& entry : v)
345
+ {
346
+ if (!firstEntry)
347
+ {
348
+ stream << ", ";
349
+ }
350
+ firstEntry = false;
351
+ stream << '{';
352
+ Ice::print(stream, entry.first);
353
+ stream << " : ";
354
+ Ice::print(stream, entry.second);
355
+ stream << '}';
356
+ }
357
+ stream << ']';
358
+ }
359
+ };
725
360
 
726
- /**
727
- * Helper for proxies.
728
- * \headerfile Ice/Ice.h
729
- */
730
- template<typename T>
731
- struct StreamHelper<T, StreamHelperCategoryProxy>
732
- {
733
- template<class S> static inline void
734
- write(S* stream, const T& v)
361
+ template<typename T> struct StreamHelper<T, StreamHelperCategoryUserException>
735
362
  {
736
- stream->write(v);
737
- }
363
+ static void write(OutputStream* stream, const T& v) { stream->writeException(v); }
738
364
 
739
- template<class S> static inline void
740
- read(S* stream, T& v)
741
- {
742
- stream->read(v);
743
- }
744
- };
745
-
746
- /**
747
- * Helper for classes.
748
- * \headerfile Ice/Ice.h
749
- */
750
- template<typename T>
751
- struct StreamHelper<T, StreamHelperCategoryClass>
752
- {
753
- template<class S> static inline void
754
- write(S* stream, const T& v)
365
+ // no read: we don't use this helper for unmarshaling.
366
+
367
+ // We provide print for consistency even though user exceptions cannot appear in fields.
368
+ static void print(std::ostream& stream, const T& v) { stream << v; }
369
+ };
370
+
371
+ template<typename T> struct StreamHelper<T, StreamHelperCategoryProxy>
755
372
  {
756
- stream->write(v);
757
- }
373
+ static void write(OutputStream* stream, const T& v) { stream->write(v); }
758
374
 
759
- template<class S> static inline void
760
- read(S* stream, T& v)
375
+ static void read(InputStream* stream, T& v) { stream->read(v); }
376
+
377
+ static void print(std::ostream& stream, const T& v) { stream << v; }
378
+ };
379
+
380
+ template<typename T> struct StreamHelper<T, StreamHelperCategoryClass>
761
381
  {
762
- stream->read(v);
763
- }
764
- };
765
-
766
- //
767
- // Helpers to read/write optional attributes or members.
768
- //
769
-
770
- //
771
- // Extract / compute the optionalFormat
772
- // This is used _only_ for the base StreamOptionalHelper below
773
- // /!\ Do not use in StreamOptionalHelper specializations, and do
774
- // not provide specialization not handled by the base StreamOptionalHelper
775
- //
776
- /**
777
- * Extract / compute the optionalFormat.
778
- * \headerfile Ice/Ice.h
779
- */
780
- template<StreamHelperCategory st, int minWireSize, bool fixedLength>
781
- struct GetOptionalFormat;
782
-
783
- /**
784
- * Specialization for 1-byte built-in fixed-length types.
785
- * \headerfile Ice/Ice.h
786
- */
787
- template<>
788
- struct GetOptionalFormat<StreamHelperCategoryBuiltin, 1, true>
789
- {
790
- static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, F1);
791
- };
792
-
793
- /**
794
- * Specialization for 2-byte built-in fixed-length types.
795
- * \headerfile Ice/Ice.h
796
- */
797
- template<>
798
- struct GetOptionalFormat<StreamHelperCategoryBuiltin, 2, true>
799
- {
800
- static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, F2);
801
- };
802
-
803
- /**
804
- * Specialization for 4-byte built-in fixed-length types.
805
- * \headerfile Ice/Ice.h
806
- */
807
- template<>
808
- struct GetOptionalFormat<StreamHelperCategoryBuiltin, 4, true>
809
- {
810
- static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, F4);
811
- };
812
-
813
- /**
814
- * Specialization for 8-byte built-in fixed-length types.
815
- * \headerfile Ice/Ice.h
816
- */
817
- template<>
818
- struct GetOptionalFormat<StreamHelperCategoryBuiltin, 8, true>
819
- {
820
- static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, F8);
821
- };
822
-
823
- /**
824
- * Specialization for built-in variable-length types.
825
- * \headerfile Ice/Ice.h
826
- */
827
- template<>
828
- struct GetOptionalFormat<StreamHelperCategoryBuiltin, 1, false>
829
- {
830
- static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, VSize);
831
- };
832
-
833
- /**
834
- * Specialization for class types.
835
- * \headerfile Ice/Ice.h
836
- */
837
- template<>
838
- struct GetOptionalFormat<StreamHelperCategoryClass, 1, false>
839
- {
840
- static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, Class);
841
- };
842
-
843
- /**
844
- * Specialization for enum types.
845
- * \headerfile Ice/Ice.h
846
- */
847
- template<int minWireSize>
848
- struct GetOptionalFormat<StreamHelperCategoryEnum, minWireSize, false>
849
- {
850
- static const OptionalFormat value = ICE_SCOPED_ENUM(OptionalFormat, Size);
851
- };
852
-
853
- /**
854
- * Base helper for optional values: simply read/write the data.
855
- * \headerfile Ice/Ice.h
856
- */
857
- template<typename T, StreamHelperCategory st, bool fixedLength>
858
- struct StreamOptionalHelper
859
- {
860
- typedef StreamableTraits<T> Traits;
382
+ static void write(OutputStream* stream, const T& v) { stream->write(v); }
383
+
384
+ static void read(InputStream* stream, T& v) { stream->read(v); }
861
385
 
862
- // If this optionalFormat fails to compile, you must either define your specialization
863
- // for GetOptionalFormat (in which case the optional data will be marshaled/unmarshaled
864
- // with straight calls to write/read on the stream), or define your own
865
- // StreamOptionalHelper specialization (which gives you more control over marshaling)
386
+ static void print(std::ostream& stream, const T& v) { stream << v; }
387
+ };
388
+
389
+ //
390
+ // Helpers to read/write optional fields and arguments.
866
391
  //
867
- static const OptionalFormat optionalFormat = GetOptionalFormat<st, Traits::minWireSize, fixedLength>::value;
868
392
 
869
- template<class S> static inline void
870
- write(S* stream, const T& v)
871
- {
872
- stream->write(v);
873
- }
393
+ /// Extracts / computes the optionalFormat.
394
+ // This is used _only_ for the base StreamOptionalHelper below.
395
+ // /!\ Do not use in StreamOptionalHelper specializations, and do not provide specialization not handled by the
396
+ // base StreamOptionalHelper.
397
+ template<StreamHelperCategory st, int minWireSize, bool fixedLength> struct GetOptionalFormat;
874
398
 
875
- template<class S> static inline void
876
- read(S* stream, T& v)
399
+ /// Specialization for 1-byte built-in fixed-length types.
400
+ template<> struct GetOptionalFormat<StreamHelperCategoryBuiltinValue, 1, true>
877
401
  {
878
- stream->read(v);
879
- }
880
- };
881
-
882
- /**
883
- * Helper to write fixed-size structs.
884
- * \headerfile Ice/Ice.h
885
- */
886
- template<typename T>
887
- struct StreamOptionalHelper<T, StreamHelperCategoryStruct, true>
888
- {
889
- static const OptionalFormat optionalFormat = ICE_SCOPED_ENUM(OptionalFormat, VSize);
402
+ static constexpr OptionalFormat value = OptionalFormat::F1;
403
+ };
890
404
 
891
- template<class S> static inline void
892
- write(S* stream, const T& v)
405
+ /// Specialization for 2-byte built-in fixed-length types.
406
+ template<> struct GetOptionalFormat<StreamHelperCategoryBuiltinValue, 2, true>
893
407
  {
894
- stream->writeSize(StreamableTraits<T>::minWireSize);
895
- stream->write(v);
896
- }
408
+ static constexpr OptionalFormat value = OptionalFormat::F2;
409
+ };
897
410
 
898
- template<class S> static inline void
899
- read(S* stream, T& v)
411
+ /// Specialization for 4-byte built-in fixed-length types.
412
+ template<> struct GetOptionalFormat<StreamHelperCategoryBuiltinValue, 4, true>
900
413
  {
901
- stream->skipSize();
902
- stream->read(v);
903
- }
904
- };
905
-
906
- /**
907
- * Helper to write variable-size structs.
908
- * \headerfile Ice/Ice.h
909
- */
910
- template<typename T>
911
- struct StreamOptionalHelper<T, StreamHelperCategoryStruct, false>
912
- {
913
- static const OptionalFormat optionalFormat = ICE_SCOPED_ENUM(OptionalFormat, FSize);
414
+ static constexpr OptionalFormat value = OptionalFormat::F4;
415
+ };
914
416
 
915
- template<class S> static inline void
916
- write(S* stream, const T& v)
417
+ /// Specialization for 8-byte built-in fixed-length types.
418
+ template<> struct GetOptionalFormat<StreamHelperCategoryBuiltinValue, 8, true>
917
419
  {
918
- typename S::size_type pos = stream->startSize();
919
- stream->write(v);
920
- stream->endSize(pos);
921
- }
420
+ static constexpr OptionalFormat value = OptionalFormat::F8;
421
+ };
922
422
 
923
- template<class S> static inline void
924
- read(S* stream, T& v)
423
+ /// Specialization for built-in variable-length types.
424
+ template<> struct GetOptionalFormat<StreamHelperCategoryBuiltinValue, 1, false>
925
425
  {
926
- stream->skip(4);
927
- stream->read(v);
928
- }
929
- };
930
-
931
- /**
932
- * Class structs are encoded like structs.
933
- * \headerfile Ice/Ice.h
934
- */
935
- template<typename T, bool fixedLength>
936
- struct StreamOptionalHelper<T, StreamHelperCategoryStructClass, fixedLength> : StreamOptionalHelper<T, StreamHelperCategoryStruct, fixedLength>
937
- {
938
- };
939
-
940
- /**
941
- * Optional proxies are encoded like variable size structs, using the FSize encoding.
942
- * \headerfile Ice/Ice.h
943
- */
944
- template<typename T>
945
- struct StreamOptionalHelper<T, StreamHelperCategoryProxy, false> : StreamOptionalHelper<T, StreamHelperCategoryStruct, false>
946
- {
947
- };
948
-
949
- /**
950
- * Helper to read/write optional sequences or dictionaries.
951
- * \headerfile Ice/Ice.h
952
- */
953
- template<typename T, bool fixedLength, int sz>
954
- struct StreamOptionalContainerHelper;
955
-
956
- /**
957
- * Encode containers of variable-size elements with the FSize optional
958
- * type, since we can't easily figure out the size of the container
959
- * before encoding. This is the same encoding as variable size structs
960
- * so we just re-use its implementation.
961
- * \headerfile Ice/Ice.h
962
- */
963
- template<typename T, int sz>
964
- struct StreamOptionalContainerHelper<T, false, sz>
965
- {
966
- static const OptionalFormat optionalFormat = ICE_SCOPED_ENUM(OptionalFormat, FSize);
426
+ static constexpr OptionalFormat value = OptionalFormat::VSize;
427
+ };
967
428
 
968
- template<class S> static inline void
969
- write(S* stream, const T& v, Int)
429
+ /// Specialization for built-in variable-length types.
430
+ template<> struct GetOptionalFormat<StreamHelperCategoryBuiltin, 1, false>
970
431
  {
971
- StreamOptionalHelper<T, StreamHelperCategoryStruct, false>::write(stream, v);
972
- }
432
+ static constexpr OptionalFormat value = OptionalFormat::VSize;
433
+ };
973
434
 
974
- template<class S> static inline void
975
- read(S* stream, T& v)
435
+ /// Specialization for enum types.
436
+ template<int minWireSize> struct GetOptionalFormat<StreamHelperCategoryEnum, minWireSize, false>
976
437
  {
977
- StreamOptionalHelper<T, StreamHelperCategoryStruct, false>::read(stream, v);
978
- }
979
- };
980
-
981
- /**
982
- * Encode containers of fixed-size elements with the VSize optional
983
- * type since we can figure out the size of the container before
984
- * encoding.
985
- * \headerfile Ice/Ice.h
986
- */
987
- template<typename T, int sz>
988
- struct StreamOptionalContainerHelper<T, true, sz>
989
- {
990
- static const OptionalFormat optionalFormat = ICE_SCOPED_ENUM(OptionalFormat, VSize);
438
+ static constexpr OptionalFormat value = OptionalFormat::Size;
439
+ };
991
440
 
992
- template<class S> static inline void
993
- write(S* stream, const T& v, Int n)
441
+ /// Base helper template for reading and writing optional values. The default implementations reads/writes the
442
+ /// value as-is.
443
+ template<typename T, StreamHelperCategory st, bool fixedLength> struct StreamOptionalHelper
994
444
  {
445
+ using Traits = StreamableTraits<T>;
446
+
447
+ // If this optionalFormat fails to compile, you must either define your specialization
448
+ // for GetOptionalFormat (in which case the optional data will be marshaled/unmarshaled
449
+ // with straight calls to write/read on the stream), or define your own
450
+ // StreamOptionalHelper specialization (which gives you more control over marshaling)
995
451
  //
996
- // The container size is the number of elements * the size of
997
- // an element and the size-encoded number of elements (1 or
998
- // 5 depending on the number of elements).
999
- //
1000
- stream->writeSize(sz * n + (n < 255 ? 1 : 5));
1001
- stream->write(v);
1002
- }
452
+ static constexpr OptionalFormat optionalFormat = GetOptionalFormat<st, Traits::minWireSize, fixedLength>::value;
1003
453
 
1004
- template<class S> static inline void
1005
- read(S* stream, T& v)
1006
- {
1007
- stream->skipSize();
1008
- stream->read(v);
1009
- }
1010
- };
1011
-
1012
- /**
1013
- * Optimization: containers of 1 byte elements are encoded with the
1014
- * VSize optional type. There's no need to encode an additional size
1015
- * for those, the number of elements of the container can be used to
1016
- * skip the optional.
1017
- * \headerfile Ice/Ice.h
1018
- */
1019
- template<typename T>
1020
- struct StreamOptionalContainerHelper<T, true, 1>
1021
- {
1022
- static const OptionalFormat optionalFormat = ICE_SCOPED_ENUM(OptionalFormat, VSize);
454
+ static void write(OutputStream* stream, const T& v) { stream->write(v); }
455
+
456
+ static void read(InputStream* stream, T& v) { stream->read(v); }
457
+ };
1023
458
 
1024
- template<class S> static inline void
1025
- write(S* stream, const T& v, Int)
459
+ /// Helper to write fixed-size structs.
460
+ template<typename T> struct StreamOptionalHelper<T, StreamHelperCategoryStruct, true>
1026
461
  {
1027
- stream->write(v);
1028
- }
462
+ static constexpr OptionalFormat optionalFormat = OptionalFormat::VSize;
1029
463
 
1030
- template<class S> static inline void
1031
- read(S* stream, T& v)
464
+ static void write(OutputStream* stream, const T& v)
465
+ {
466
+ stream->writeSize(StreamableTraits<T>::minWireSize);
467
+ stream->write(v);
468
+ }
469
+
470
+ static void read(InputStream* stream, T& v)
471
+ {
472
+ stream->skipSize();
473
+ stream->read(v);
474
+ }
475
+ };
476
+
477
+ /// Helper to write variable-size structs.
478
+ template<typename T> struct StreamOptionalHelper<T, StreamHelperCategoryStruct, false>
1032
479
  {
1033
- stream->read(v);
1034
- }
1035
- };
1036
-
1037
- /**
1038
- * Helper to write sequences, delegates to the optional container
1039
- * helper template partial specializations.
1040
- * \headerfile Ice/Ice.h
1041
- */
1042
- template<typename T>
1043
- struct StreamOptionalHelper<T, StreamHelperCategorySequence, false>
1044
- {
1045
- typedef typename T::value_type E;
1046
- static const int size = StreamableTraits<E>::minWireSize;
1047
- static const bool fixedLength = StreamableTraits<E>::fixedLength;
480
+ static constexpr OptionalFormat optionalFormat = OptionalFormat::FSize;
1048
481
 
1049
- // The optional type of a sequence depends on whether or not elements are fixed
1050
- // or variable size elements and their size.
1051
- static const OptionalFormat optionalFormat = StreamOptionalContainerHelper<T, fixedLength, size>::optionalFormat;
482
+ static void write(OutputStream* stream, const T& v)
483
+ {
484
+ OutputStream::size_type pos = stream->startSize();
485
+ stream->write(v);
486
+ stream->endSize(pos);
487
+ }
1052
488
 
1053
- template<class S> static inline void
1054
- write(S* stream, const T& v)
489
+ static void read(InputStream* stream, T& v)
490
+ {
491
+ stream->skip(4);
492
+ stream->read(v);
493
+ }
494
+ };
495
+
496
+ // InputStream and OutputStream have special logic for optional proxies that does not rely on the
497
+ // StreamOptional helpers.
498
+
499
+ /// Helper to read/write optional sequences or dictionaries.
500
+ template<typename T, bool fixedLength, int sz> struct StreamOptionalContainerHelper;
501
+
502
+ /// Encodes containers of variable-size elements with the FSize optional type, since we can't easily figure out
503
+ /// total number of bytes we're about to write.
504
+ // This is the same encoding as variable size structs so we just re-use its implementation.
505
+ template<typename T, int sz> struct StreamOptionalContainerHelper<T, false, sz>
1055
506
  {
1056
- StreamOptionalContainerHelper<T, fixedLength, size>::write(stream, v, static_cast<Int>(v.size()));
1057
- }
507
+ static constexpr OptionalFormat optionalFormat = OptionalFormat::FSize;
1058
508
 
1059
- template<class S> static inline void
1060
- read(S* stream, T& v)
509
+ static void write(OutputStream* stream, const T& v, std::int32_t)
510
+ {
511
+ StreamOptionalHelper<T, StreamHelperCategoryStruct, false>::write(stream, v);
512
+ }
513
+
514
+ static void read(InputStream* stream, T& v)
515
+ {
516
+ StreamOptionalHelper<T, StreamHelperCategoryStruct, false>::read(stream, v);
517
+ }
518
+ };
519
+
520
+ /// Encodes containers of fixed-size elements with the VSize optional type since we can figure out the total number
521
+ /// of bytes we're about to write.
522
+ template<typename T, int sz> struct StreamOptionalContainerHelper<T, true, sz>
1061
523
  {
1062
- StreamOptionalContainerHelper<T, fixedLength, size>::read(stream, v);
1063
- }
1064
- };
1065
-
1066
- /**
1067
- * Helper to write sequences, delegates to the optional container
1068
- * helper template partial specializations.
1069
- * \headerfile Ice/Ice.h
1070
- */
1071
- template<typename T>
1072
- struct StreamOptionalHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence, false>
1073
- {
1074
- typedef std::pair<const T*, const T*> P;
1075
- static const int size = StreamableTraits<T>::minWireSize;
1076
- static const bool fixedLength = StreamableTraits<T>::fixedLength;
524
+ static constexpr OptionalFormat optionalFormat = OptionalFormat::VSize;
1077
525
 
1078
- // The optional type of a sequence depends on whether or not elements are fixed
1079
- // or variable size elements and their size.
1080
- static const OptionalFormat optionalFormat = StreamOptionalContainerHelper<P, fixedLength, size>::optionalFormat;
526
+ static void write(OutputStream* stream, const T& v, std::int32_t n)
527
+ {
528
+ // The total number of bytes is the number of elements * the size of an element and the size-encoded number
529
+ // of elements (1 or 5 depending on the number of elements).
530
+ stream->writeSize(sz * n + (n < 255 ? 1 : 5));
531
+ stream->write(v);
532
+ }
1081
533
 
1082
- template<class S> static inline void
1083
- write(S* stream, const P& v)
534
+ static void read(InputStream* stream, T& v)
535
+ {
536
+ stream->skipSize();
537
+ stream->read(v);
538
+ }
539
+ };
540
+
541
+ // Optimization: containers of 1 byte elements are encoded with the VSize optional type. There's no need to encode
542
+ // an additional size for those, the number of elements of the container can be used to skip the optional.
543
+ template<typename T> struct StreamOptionalContainerHelper<T, true, 1>
1084
544
  {
1085
- Int n = static_cast<Int>(v.second - v.first);
1086
- StreamOptionalContainerHelper<P, fixedLength, size>::write(stream, v, n);
1087
- }
545
+ static constexpr OptionalFormat optionalFormat = OptionalFormat::VSize;
546
+
547
+ static void write(OutputStream* stream, const T& v, std::int32_t) { stream->write(v); }
1088
548
 
1089
- template<class S> static inline void
1090
- read(S* stream, P& v)
549
+ static void read(InputStream* stream, T& v) { stream->read(v); }
550
+ };
551
+
552
+ // Helper to write sequences, delegates to the optional container helper template partial specializations.
553
+ template<typename T> struct StreamOptionalHelper<T, StreamHelperCategorySequence, false>
1091
554
  {
1092
- StreamOptionalContainerHelper<P, fixedLength, size>::read(stream, v);
1093
- }
1094
- };
555
+ using E = typename T::value_type;
556
+ static constexpr int size = StreamableTraits<E>::minWireSize;
557
+ static constexpr bool fixedLength = StreamableTraits<E>::fixedLength;
1095
558
 
1096
- #ifndef ICE_CPP11_MAPPING
559
+ // The optional type of a sequence depends on whether or not elements are fixed
560
+ // or variable size elements and their size.
561
+ static constexpr OptionalFormat optionalFormat =
562
+ StreamOptionalContainerHelper<T, fixedLength, size>::optionalFormat;
1097
563
 
1098
- /**
1099
- * Helper to write sequences, delegates to the optional container
1100
- * helper template partial specializations.
1101
- * \headerfile Ice/Ice.h
1102
- */
1103
- template<typename T>
1104
- struct StreamOptionalHelper<std::pair<T, T>, StreamHelperCategorySequence, false>
1105
- {
1106
- typedef std::pair<T, T> P;
1107
- static const int size = StreamableTraits<typename T::value_type>::minWireSize;
1108
- static const bool fixedLength = StreamableTraits<typename T::value_type>::fixedLength;
564
+ static void write(OutputStream* stream, const T& v)
565
+ {
566
+ StreamOptionalContainerHelper<T, fixedLength, size>::write(stream, v, static_cast<std::int32_t>(v.size()));
567
+ }
1109
568
 
1110
- // The optional type of a sequence depends on whether or not elements are fixed
1111
- // or variable size elements and their size.
1112
- static const OptionalFormat optionalFormat = StreamOptionalContainerHelper<P, fixedLength, size>::optionalFormat;
569
+ static void read(InputStream* stream, T& v)
570
+ {
571
+ StreamOptionalContainerHelper<T, fixedLength, size>::read(stream, v);
572
+ }
573
+ };
1113
574
 
1114
- template<class S> static inline void
1115
- write(S* stream, const P& v)
575
+ // Helper to write sequences, delegates to the optional container helper template partial specializations.
576
+ template<typename T> struct StreamOptionalHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence, false>
1116
577
  {
1117
- Int n = static_cast<Int>(v.second - v.first);
1118
- StreamOptionalContainerHelper<P, fixedLength, size>::write(stream, v, n);
1119
- }
578
+ using P = std::pair<const T*, const T*>;
579
+ static constexpr int size = StreamableTraits<T>::minWireSize;
580
+ static constexpr bool fixedLength = StreamableTraits<T>::fixedLength;
1120
581
 
1121
- template<class S> static inline void
1122
- read(S* stream, P& v)
1123
- {
1124
- StreamOptionalContainerHelper<P, fixedLength, size>::read(stream, v);
1125
- }
1126
- };
1127
-
1128
- /**
1129
- * Helper to write sequences, delegates to the optional container
1130
- * helper template partial specializations.
1131
- * \headerfile Ice/Ice.h
1132
- */
1133
- template<typename T>
1134
- struct StreamOptionalHelper<std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> >,
1135
- StreamHelperCategorySequence, false>
1136
- {
1137
- typedef std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const T*> > P;
1138
- static const int size = StreamableTraits<T>::minWireSize;
1139
- static const bool fixedLength = StreamableTraits<T>::fixedLength;
582
+ // The optional type of a sequence depends on whether or not elements are fixed
583
+ // or variable size elements and their size.
584
+ static constexpr OptionalFormat optionalFormat =
585
+ StreamOptionalContainerHelper<P, fixedLength, size>::optionalFormat;
586
+
587
+ static void write(OutputStream* stream, const P& v)
588
+ {
589
+ auto n = static_cast<std::int32_t>(v.second - v.first);
590
+ StreamOptionalContainerHelper<P, fixedLength, size>::write(stream, v, n);
591
+ }
1140
592
 
1141
- // The optional type of a sequence depends on whether or not elements are fixed
1142
- // or variable size elements and their size.
1143
- static const OptionalFormat optionalFormat = StreamOptionalContainerHelper<P, fixedLength, size>::optionalFormat;
593
+ static void read(InputStream* stream, P& v)
594
+ {
595
+ StreamOptionalContainerHelper<P, fixedLength, size>::read(stream, v);
596
+ }
597
+ };
1144
598
 
1145
- template<class S> static inline void
1146
- read(S* stream, P& v)
599
+ // Helper to write dictionaries, delegates to the optional container helper template partial specializations.
600
+ template<typename T> struct StreamOptionalHelper<T, StreamHelperCategoryDictionary, false>
1147
601
  {
1148
- StreamOptionalContainerHelper<P, fixedLength, size>::read(stream, v);
1149
- }
602
+ using K = typename T::key_type;
603
+ using V = typename T::mapped_type;
1150
604
 
1151
- // no write: only used for unmarshaling
1152
- };
1153
- #endif
605
+ static constexpr int size = StreamableTraits<K>::minWireSize + StreamableTraits<V>::minWireSize;
606
+ static constexpr bool fixedLength = StreamableTraits<K>::fixedLength && StreamableTraits<V>::fixedLength;
1154
607
 
1155
- /**
1156
- * Helper to write dictionaries, delegates to the optional container
1157
- * helper template partial specializations.
1158
- * \headerfile Ice/Ice.h
1159
- */
1160
- template<typename T>
1161
- struct StreamOptionalHelper<T, StreamHelperCategoryDictionary, false>
1162
- {
1163
- typedef typename T::key_type K;
1164
- typedef typename T::mapped_type V;
608
+ // The optional type of a dictionary depends on whether or not elements are fixed
609
+ // or variable size elements.
610
+ static constexpr OptionalFormat optionalFormat =
611
+ StreamOptionalContainerHelper<T, fixedLength, size>::optionalFormat;
612
+
613
+ static void write(OutputStream* stream, const T& v)
614
+ {
615
+ StreamOptionalContainerHelper<T, fixedLength, size>::write(stream, v, static_cast<std::int32_t>(v.size()));
616
+ }
1165
617
 
1166
- static const int size = StreamableTraits<K>::minWireSize + StreamableTraits<V>::minWireSize;
1167
- static const bool fixedLength = StreamableTraits<K>::fixedLength && StreamableTraits<V>::fixedLength;
618
+ static void read(InputStream* stream, T& v)
619
+ {
620
+ StreamOptionalContainerHelper<T, fixedLength, size>::read(stream, v);
621
+ }
622
+ };
1168
623
 
1169
- // The optional type of a dictionary depends on whether or not elements are fixed
1170
- // or variable size elements.
1171
- static const OptionalFormat optionalFormat = StreamOptionalContainerHelper<T, fixedLength, size>::optionalFormat;
624
+ // Specializations for ProtocolVersion and EncodingVersion
625
+ template<> struct StreamableTraits<ProtocolVersion>
626
+ {
627
+ static constexpr StreamHelperCategory helper = StreamHelperCategoryStruct;
628
+ static constexpr int minWireSize = 2;
629
+ static constexpr bool fixedLength = true;
630
+ };
1172
631
 
1173
- template<class S> static inline void
1174
- write(S* stream, const T& v)
632
+ template<> struct StreamReader<ProtocolVersion>
1175
633
  {
1176
- StreamOptionalContainerHelper<T, fixedLength, size>::write(stream, v, static_cast<Int>(v.size()));
1177
- }
634
+ static void read(InputStream* istr, ProtocolVersion& v) { istr->readAll(v.major, v.minor); }
635
+ };
1178
636
 
1179
- template<class S> static inline void
1180
- read(S* stream, T& v)
637
+ template<> struct StreamableTraits<EncodingVersion>
1181
638
  {
1182
- StreamOptionalContainerHelper<T, fixedLength, size>::read(stream, v);
1183
- }
1184
- };
639
+ static constexpr StreamHelperCategory helper = StreamHelperCategoryStruct;
640
+ static constexpr int minWireSize = 2;
641
+ static constexpr bool fixedLength = true;
642
+ };
1185
643
 
1186
- /// \endcond
644
+ template<> struct StreamReader<EncodingVersion>
645
+ {
646
+ static void read(InputStream* istr, EncodingVersion& v) { istr->readAll(v.major, v.minor); }
647
+ };
1187
648
 
649
+ /// @endcond
1188
650
  }
1189
651
 
1190
652
  #endif