zeroc-ice 3.6.5 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (752) hide show
  1. checksums.yaml +4 -4
  2. data/BZIP2_LICENSE +42 -0
  3. data/ICE_LICENSE +17 -17
  4. data/LICENSE +12 -12
  5. data/bin/slice2rb +1 -1
  6. data/ext/Communicator.cpp +150 -53
  7. data/ext/Communicator.h +1 -1
  8. data/ext/Config.h +2 -12
  9. data/ext/Connection.cpp +89 -68
  10. data/ext/Connection.h +1 -1
  11. data/ext/Endpoint.cpp +16 -45
  12. data/ext/Endpoint.h +1 -1
  13. data/ext/ImplicitContext.cpp +1 -5
  14. data/ext/ImplicitContext.h +1 -1
  15. data/ext/Init.cpp +4 -1
  16. data/ext/Logger.cpp +1 -1
  17. data/ext/Logger.h +1 -1
  18. data/ext/Operation.cpp +33 -44
  19. data/ext/Operation.h +1 -1
  20. data/ext/Properties.cpp +1 -1
  21. data/ext/Properties.h +1 -1
  22. data/ext/Proxy.cpp +22 -57
  23. data/ext/Proxy.h +1 -1
  24. data/ext/Slice.cpp +5 -5
  25. data/ext/Slice.h +1 -1
  26. data/ext/Types.cpp +244 -171
  27. data/ext/Types.h +118 -66
  28. data/ext/Util.cpp +13 -9
  29. data/ext/Util.h +10 -10
  30. data/ext/ValueFactoryManager.cpp +445 -0
  31. data/ext/ValueFactoryManager.h +100 -0
  32. data/ext/extconf.rb +47 -45
  33. data/ext/ice/bzip2/blocksort.c +1094 -0
  34. data/ext/ice/bzip2/bzlib.c +1572 -0
  35. data/ext/ice/bzip2/bzlib.h +282 -0
  36. data/ext/ice/bzip2/bzlib_private.h +509 -0
  37. data/ext/ice/bzip2/compress.c +672 -0
  38. data/ext/ice/bzip2/crctable.c +104 -0
  39. data/ext/ice/bzip2/decompress.c +646 -0
  40. data/ext/ice/bzip2/huffman.c +205 -0
  41. data/ext/ice/bzip2/randtable.c +84 -0
  42. data/ext/ice/cpp/include/Ice/Application.h +77 -60
  43. data/ext/ice/cpp/include/Ice/AsyncResult.h +34 -318
  44. data/ext/ice/cpp/include/Ice/AsyncResultF.h +4 -2
  45. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +5 -10
  46. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
  47. data/ext/ice/cpp/include/Ice/Buffer.h +10 -10
  48. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +14 -12
  49. data/ext/ice/cpp/include/Ice/Comparable.h +130 -0
  50. data/ext/ice/cpp/include/Ice/Config.h +7 -36
  51. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +107 -11
  52. data/ext/ice/cpp/include/Ice/ConnectionIF.h +5 -1
  53. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +28 -0
  54. data/ext/ice/cpp/include/Ice/{DefaultObjectFactory.h → DefaultValueFactory.h} +28 -14
  55. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +4 -6
  56. data/ext/ice/cpp/include/Ice/Dispatcher.h +14 -13
  57. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +7 -5
  58. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
  59. data/ext/ice/cpp/include/Ice/Exception.h +66 -56
  60. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +69 -0
  61. data/ext/ice/cpp/include/Ice/FactoryTable.h +11 -12
  62. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +27 -25
  63. data/ext/ice/cpp/include/Ice/Format.h +6 -1
  64. data/ext/ice/cpp/include/Ice/Functional.h +33 -33
  65. data/ext/ice/cpp/include/Ice/GCObject.h +9 -5
  66. data/ext/ice/cpp/include/Ice/Handle.h +6 -11
  67. data/ext/ice/cpp/include/Ice/Ice.h +9 -5
  68. data/ext/ice/cpp/include/{IceUtil → Ice}/IconvStringConverter.h +108 -62
  69. data/ext/ice/cpp/include/Ice/Incoming.h +109 -33
  70. data/ext/ice/cpp/include/Ice/IncomingAsync.h +63 -23
  71. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +7 -1
  72. data/ext/ice/cpp/include/Ice/Initialize.h +178 -38
  73. data/ext/ice/cpp/include/Ice/InputStream.h +994 -0
  74. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -2
  75. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +46 -0
  76. data/ext/ice/cpp/include/Ice/LocalObject.h +9 -9
  77. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
  78. data/ext/ice/cpp/include/Ice/LoggerUtil.h +20 -14
  79. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +114 -65
  80. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +23 -5
  81. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +99 -26
  82. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +17 -4
  83. data/ext/ice/cpp/include/Ice/Object.h +105 -56
  84. data/ext/ice/cpp/include/Ice/ObjectF.h +8 -3
  85. data/ext/ice/cpp/include/Ice/ObserverHelper.h +18 -8
  86. data/ext/ice/cpp/include/Ice/Optional.h +1084 -0
  87. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +655 -84
  88. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +12 -6
  89. data/ext/ice/cpp/include/Ice/OutputStream.h +753 -0
  90. data/ext/ice/cpp/include/Ice/Protocol.h +19 -12
  91. data/ext/ice/cpp/include/Ice/Proxy.h +1329 -717
  92. data/ext/ice/cpp/include/Ice/ProxyF.h +11 -33
  93. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
  94. data/ext/ice/cpp/include/Ice/ProxyHandle.h +34 -50
  95. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
  96. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +22 -3
  97. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +10 -4
  98. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +6 -1
  99. data/ext/ice/cpp/include/{IceUtil → Ice}/SHA1.h +16 -16
  100. data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
  101. data/ext/ice/cpp/include/Ice/Service.h +13 -18
  102. data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
  103. data/ext/ice/cpp/include/Ice/SlicedData.h +46 -20
  104. data/ext/ice/cpp/include/Ice/SlicedDataF.h +14 -6
  105. data/ext/ice/cpp/include/Ice/StreamHelpers.h +159 -49
  106. data/ext/ice/cpp/include/Ice/StringConverter.h +52 -0
  107. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
  108. data/{slice/Ice/ObjectFactoryF.ice → ext/ice/cpp/include/Ice/UUID.h} +9 -7
  109. data/ext/ice/cpp/include/{IceUtil → Ice}/UniquePtr.h +21 -22
  110. data/ext/ice/cpp/include/Ice/UniqueRef.h +98 -0
  111. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +40 -8
  112. data/ext/ice/cpp/include/Ice/Value.h +104 -0
  113. data/{slice/Freeze/ConnectionF.ice → ext/ice/cpp/include/Ice/ValueF.h} +11 -7
  114. data/ext/ice/cpp/include/IceSSL/Config.h +8 -23
  115. data/ext/ice/cpp/include/IceSSL/IceSSL.h +17 -6
  116. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +130 -0
  117. data/ext/ice/cpp/include/IceSSL/Plugin.h +172 -259
  118. data/ext/ice/cpp/include/IceSSL/SChannel.h +66 -0
  119. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +66 -0
  120. data/ext/ice/cpp/include/IceSSL/UWP.h +58 -0
  121. data/ext/ice/cpp/include/IceUtil/Atomic.h +8 -10
  122. data/ext/ice/cpp/include/IceUtil/Cond.h +17 -18
  123. data/ext/ice/cpp/include/IceUtil/Config.h +138 -39
  124. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +97 -0
  125. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +5 -5
  126. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +23 -17
  127. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -3
  128. data/ext/ice/cpp/include/IceUtil/Exception.h +157 -67
  129. data/ext/ice/cpp/include/IceUtil/FileUtil.h +148 -0
  130. data/ext/ice/cpp/include/IceUtil/Functional.h +1 -2
  131. data/ext/ice/cpp/include/IceUtil/Handle.h +11 -11
  132. data/ext/ice/cpp/include/IceUtil/IceUtil.h +4 -10
  133. data/ext/ice/cpp/include/IceUtil/InputUtil.h +3 -3
  134. data/ext/ice/cpp/include/IceUtil/Iterator.h +2 -2
  135. data/ext/ice/cpp/include/IceUtil/Lock.h +8 -10
  136. data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -2
  137. data/ext/ice/cpp/include/IceUtil/Mutex.h +17 -11
  138. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +2 -2
  139. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
  140. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +4 -4
  141. data/ext/ice/cpp/include/IceUtil/Optional.h +32 -18
  142. data/ext/ice/cpp/include/IceUtil/Options.h +17 -18
  143. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +55 -29
  144. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +6 -6
  145. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +11 -10
  146. data/ext/ice/cpp/include/IceUtil/Random.h +3 -3
  147. data/ext/ice/cpp/include/IceUtil/RecMutex.h +7 -8
  148. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +58 -0
  149. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +1 -9
  150. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +8 -2
  151. data/ext/ice/cpp/include/IceUtil/Shared.h +5 -7
  152. data/ext/ice/cpp/{src → include}/IceUtil/StopWatch.h +2 -2
  153. data/ext/ice/cpp/include/IceUtil/StringConverter.h +77 -72
  154. data/ext/ice/cpp/include/IceUtil/StringUtil.h +32 -21
  155. data/ext/ice/cpp/include/IceUtil/Thread.h +10 -12
  156. data/ext/ice/cpp/include/IceUtil/ThreadException.h +33 -42
  157. data/ext/ice/cpp/include/IceUtil/Time.h +3 -3
  158. data/ext/ice/cpp/include/IceUtil/Timer.h +14 -13
  159. data/ext/ice/cpp/include/IceUtil/UUID.h +2 -2
  160. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
  161. data/ext/ice/cpp/include/{Ice → generated/Ice}/BuiltinSequences.h +41 -8
  162. data/ext/ice/cpp/include/generated/Ice/Communicator.h +364 -0
  163. data/ext/ice/cpp/include/{Ice → generated/Ice}/CommunicatorF.h +40 -8
  164. data/ext/ice/cpp/include/generated/Ice/Connection.h +872 -0
  165. data/ext/ice/cpp/include/{Ice → generated/Ice}/ConnectionF.h +46 -8
  166. data/ext/ice/cpp/include/{Ice → generated/Ice}/Current.h +71 -8
  167. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +582 -0
  168. data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointF.h +62 -8
  169. data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointTypes.h +31 -16
  170. data/ext/ice/cpp/include/{Ice → generated/Ice}/FacetMap.h +23 -8
  171. data/ext/ice/cpp/include/generated/Ice/Identity.h +221 -0
  172. data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContext.h +72 -13
  173. data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContextF.h +40 -8
  174. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +602 -0
  175. data/ext/ice/cpp/include/{Ice → generated/Ice}/InstrumentationF.h +54 -8
  176. data/ext/ice/cpp/include/generated/Ice/LocalException.h +2802 -0
  177. data/ext/ice/cpp/include/generated/Ice/Locator.h +2036 -0
  178. data/ext/ice/cpp/include/{Ice → generated/Ice}/LocatorF.h +53 -12
  179. data/ext/ice/cpp/include/{Ice → generated/Ice}/Logger.h +71 -13
  180. data/ext/ice/cpp/include/{Ice → generated/Ice}/LoggerF.h +40 -8
  181. data/ext/ice/cpp/include/generated/Ice/Metrics.h +2649 -0
  182. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +302 -0
  183. data/ext/ice/cpp/include/{Ice → generated/Ice}/ObjectAdapterF.h +40 -8
  184. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +142 -0
  185. data/ext/ice/cpp/include/generated/Ice/Plugin.h +197 -0
  186. data/ext/ice/cpp/include/{Ice → generated/Ice}/PluginF.h +43 -8
  187. data/ext/ice/cpp/include/generated/Ice/Process.h +536 -0
  188. data/ext/ice/cpp/include/{Ice → generated/Ice}/ProcessF.h +45 -10
  189. data/ext/ice/cpp/include/{Ice → generated/Ice}/Properties.h +88 -21
  190. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +749 -0
  191. data/ext/ice/cpp/include/{Ice → generated/Ice}/PropertiesF.h +48 -10
  192. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1449 -0
  193. data/ext/ice/cpp/include/generated/Ice/Router.h +1032 -0
  194. data/ext/ice/cpp/include/{Ice → generated/Ice}/RouterF.h +45 -10
  195. data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocator.h +65 -13
  196. data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocatorF.h +40 -8
  197. data/ext/ice/cpp/include/{Ice → generated/Ice}/SliceChecksumDict.h +23 -8
  198. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +169 -0
  199. data/ext/ice/cpp/include/generated/Ice/Version.h +334 -0
  200. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +172 -0
  201. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +98 -0
  202. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +156 -0
  203. data/ext/ice/cpp/src/Ice/ACM.cpp +18 -14
  204. data/ext/ice/cpp/src/Ice/ACM.h +9 -2
  205. data/ext/ice/cpp/{include → src}/Ice/ACMF.h +10 -5
  206. data/ext/ice/cpp/src/Ice/Acceptor.cpp +6 -1
  207. data/ext/ice/cpp/src/Ice/Acceptor.h +4 -3
  208. data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
  209. data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.cpp +9 -9
  210. data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.h +7 -7
  211. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +15 -538
  212. data/ext/ice/cpp/src/Ice/Base64.cpp +11 -11
  213. data/ext/ice/cpp/src/Ice/Base64.h +1 -1
  214. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +40 -12
  215. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +15 -10
  216. data/ext/ice/cpp/src/Ice/Buffer.cpp +74 -12
  217. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +20 -6
  218. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +85 -190
  219. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +17 -18
  220. data/ext/ice/cpp/src/Ice/Communicator.cpp +39 -8
  221. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +27 -5
  222. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +271 -104
  223. data/ext/ice/cpp/src/Ice/CommunicatorI.h +84 -28
  224. data/ext/ice/cpp/src/{IceUtil → Ice}/Cond.cpp +3 -3
  225. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +58 -125
  226. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +11 -22
  227. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +6 -2
  228. data/ext/ice/cpp/src/Ice/Connection.cpp +88 -8
  229. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +27 -5
  230. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +158 -80
  231. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +41 -23
  232. data/ext/ice/cpp/{include → src}/Ice/ConnectionFactoryF.h +8 -3
  233. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +707 -653
  234. data/ext/ice/cpp/src/Ice/ConnectionI.h +97 -69
  235. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +2 -15
  236. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +4 -3
  237. data/ext/ice/cpp/src/Ice/Connector.cpp +6 -1
  238. data/ext/ice/cpp/src/Ice/Connector.h +4 -3
  239. data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
  240. data/ext/ice/cpp/src/{IceUtil → Ice}/CountDownLatch.cpp +4 -4
  241. data/ext/ice/cpp/src/Ice/Current.cpp +29 -6
  242. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +6 -5
  243. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
  244. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
  245. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +5 -25
  246. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +29 -19
  247. data/ext/ice/cpp/src/Ice/Endpoint.cpp +85 -6
  248. data/ext/ice/cpp/src/Ice/EndpointF.cpp +27 -5
  249. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +152 -1
  250. data/ext/ice/cpp/src/Ice/EndpointFactory.h +72 -6
  251. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
  252. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +35 -19
  253. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +10 -4
  254. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
  255. data/ext/ice/cpp/src/Ice/EndpointI.cpp +17 -1
  256. data/ext/ice/cpp/src/Ice/EndpointI.h +35 -9
  257. data/ext/ice/cpp/src/Ice/EndpointIF.h +18 -5
  258. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +18 -6
  259. data/ext/ice/cpp/src/Ice/EventHandler.cpp +6 -4
  260. data/ext/ice/cpp/src/Ice/EventHandler.h +13 -8
  261. data/ext/ice/cpp/src/Ice/EventHandlerF.h +5 -2
  262. data/ext/ice/cpp/src/Ice/Exception.cpp +95 -86
  263. data/ext/ice/cpp/src/Ice/FacetMap.cpp +20 -6
  264. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +37 -28
  265. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -4
  266. data/ext/ice/cpp/src/Ice/GCObject.cpp +28 -25
  267. data/ext/ice/cpp/src/Ice/HashUtil.h +2 -3
  268. data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -2
  269. data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
  270. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +92 -53
  271. data/ext/ice/cpp/src/Ice/IPEndpointI.h +19 -10
  272. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +6 -2
  273. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +56 -0
  274. data/ext/ice/cpp/src/Ice/Identity.cpp +24 -10
  275. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +37 -6
  276. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +27 -5
  277. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +14 -14
  278. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +7 -5
  279. data/ext/ice/cpp/src/Ice/Incoming.cpp +276 -245
  280. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +104 -209
  281. data/ext/ice/cpp/src/Ice/IncomingRequest.h +5 -4
  282. data/ext/ice/cpp/src/Ice/Initialize.cpp +299 -172
  283. data/ext/ice/cpp/src/Ice/InputStream.cpp +2773 -0
  284. data/ext/ice/cpp/src/Ice/Instance.cpp +191 -231
  285. data/ext/ice/cpp/src/Ice/Instance.h +30 -18
  286. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +106 -7
  287. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +27 -5
  288. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +117 -99
  289. data/ext/ice/cpp/src/Ice/InstrumentationI.h +30 -31
  290. data/ext/ice/cpp/src/Ice/LocalException.cpp +1190 -416
  291. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -2
  292. data/ext/ice/cpp/src/Ice/Locator.cpp +1167 -1215
  293. data/ext/ice/cpp/src/Ice/LocatorF.cpp +29 -6
  294. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +129 -163
  295. data/ext/ice/cpp/src/Ice/LocatorInfo.h +29 -29
  296. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
  297. data/ext/ice/cpp/src/Ice/Logger.cpp +35 -5
  298. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +178 -73
  299. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +4 -4
  300. data/ext/ice/cpp/src/Ice/LoggerF.cpp +27 -5
  301. data/ext/ice/cpp/src/Ice/LoggerI.cpp +14 -44
  302. data/ext/ice/cpp/src/Ice/LoggerI.h +7 -13
  303. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +10 -12
  304. data/ext/ice/cpp/src/Ice/Metrics.cpp +1059 -1069
  305. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +49 -19
  306. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -2
  307. data/ext/ice/cpp/src/Ice/Network.cpp +534 -170
  308. data/ext/ice/cpp/src/Ice/Network.h +100 -23
  309. data/ext/ice/cpp/src/Ice/NetworkF.h +2 -2
  310. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +21 -14
  311. data/ext/ice/cpp/src/Ice/NetworkProxy.h +5 -2
  312. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
  313. data/ext/ice/cpp/src/Ice/Object.cpp +217 -221
  314. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -6
  315. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +27 -5
  316. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +35 -14
  317. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +13 -7
  318. data/ext/ice/cpp/{include → src}/Ice/ObjectAdapterFactoryF.h +5 -1
  319. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +184 -58
  320. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +32 -26
  321. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +37 -6
  322. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +9 -32
  323. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +40 -18
  324. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +14 -5
  325. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +803 -365
  326. data/ext/ice/cpp/src/Ice/OutputStream.cpp +1399 -0
  327. data/ext/ice/cpp/src/Ice/Plugin.cpp +45 -6
  328. data/ext/ice/cpp/src/Ice/PluginF.cpp +27 -5
  329. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +13 -13
  330. data/ext/ice/cpp/src/Ice/PluginManagerI.h +5 -6
  331. data/ext/ice/cpp/src/Ice/Process.cpp +256 -114
  332. data/ext/ice/cpp/src/Ice/ProcessF.cpp +29 -6
  333. data/ext/ice/cpp/src/Ice/Properties.cpp +38 -8
  334. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +340 -328
  335. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +81 -17
  336. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +29 -5
  337. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +29 -6
  338. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +25 -26
  339. data/ext/ice/cpp/src/Ice/PropertiesI.h +8 -11
  340. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +107 -50
  341. data/ext/ice/cpp/src/Ice/PropertyNames.h +4 -2
  342. data/ext/ice/cpp/src/Ice/Protocol.cpp +2 -2
  343. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +37 -2
  344. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +9 -20
  345. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
  346. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +6 -1
  347. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +3 -1
  348. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
  349. data/ext/ice/cpp/src/Ice/Proxy.cpp +690 -964
  350. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +23 -32
  351. data/ext/ice/cpp/src/Ice/ProxyFactory.h +16 -11
  352. data/ext/ice/cpp/src/Ice/Reference.cpp +75 -69
  353. data/ext/ice/cpp/src/Ice/Reference.h +27 -22
  354. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +18 -21
  355. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +12 -12
  356. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
  357. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +18 -4
  358. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
  359. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +672 -552
  360. data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
  361. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +5 -3
  362. data/ext/ice/cpp/src/Ice/RequestHandler.h +10 -13
  363. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +10 -6
  364. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +2 -2
  365. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +3 -6
  366. data/ext/ice/cpp/src/Ice/ResponseHandler.h +16 -7
  367. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +6 -12
  368. data/ext/ice/cpp/src/Ice/RetryQueue.h +7 -6
  369. data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
  370. data/ext/ice/cpp/src/Ice/Router.cpp +523 -474
  371. data/ext/ice/cpp/src/Ice/RouterF.cpp +29 -6
  372. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +91 -70
  373. data/ext/ice/cpp/src/Ice/RouterInfo.h +43 -32
  374. data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
  375. data/ext/ice/cpp/src/{IceUtil → Ice}/SHA1.cpp +21 -21
  376. data/ext/ice/cpp/src/Ice/Selector.cpp +989 -923
  377. data/ext/ice/cpp/src/Ice/Selector.h +100 -147
  378. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +37 -6
  379. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +27 -5
  380. data/ext/ice/cpp/src/Ice/ServantManager.cpp +9 -9
  381. data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
  382. data/ext/ice/cpp/src/Ice/SharedContext.h +2 -2
  383. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +20 -6
  384. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +2 -2
  385. data/ext/ice/cpp/src/Ice/SlicedData.cpp +72 -20
  386. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +173 -18
  387. data/ext/ice/cpp/src/Ice/StreamSocket.h +13 -4
  388. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +48 -17
  389. data/ext/ice/cpp/src/Ice/StringUtil.h +35 -0
  390. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +8 -4
  391. data/ext/ice/cpp/src/Ice/SysLoggerI.h +2 -3
  392. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +158 -32
  393. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +12 -5
  394. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -7
  395. data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -2
  396. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +40 -32
  397. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +11 -8
  398. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +12 -27
  399. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -10
  400. data/ext/ice/cpp/src/{IceUtil → Ice}/Thread.cpp +24 -41
  401. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +175 -267
  402. data/ext/ice/cpp/src/Ice/ThreadPool.h +38 -43
  403. data/ext/ice/cpp/src/{IceUtil → Ice}/Timer.cpp +28 -21
  404. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
  405. data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
  406. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +2 -2
  407. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +53 -31
  408. data/ext/ice/cpp/src/Ice/TraceUtil.h +13 -6
  409. data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -2
  410. data/ext/ice/cpp/src/Ice/Transceiver.h +8 -7
  411. data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
  412. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +2 -8
  413. data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -2
  414. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +92 -31
  415. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +12 -4
  416. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +150 -179
  417. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +15 -17
  418. data/ext/ice/cpp/src/Ice/Value.cpp +81 -0
  419. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +84 -0
  420. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +70 -0
  421. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +42 -0
  422. data/ext/ice/cpp/src/Ice/Version.cpp +24 -14
  423. data/ext/ice/cpp/src/Ice/VirtualShared.h +43 -0
  424. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +3 -9
  425. data/ext/ice/cpp/src/Ice/WSAcceptor.h +3 -7
  426. data/ext/ice/cpp/src/Ice/WSConnector.cpp +5 -11
  427. data/ext/ice/cpp/src/Ice/WSConnector.h +3 -6
  428. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +185 -80
  429. data/ext/ice/cpp/src/Ice/WSEndpoint.h +21 -31
  430. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +41 -37
  431. data/ext/ice/cpp/src/Ice/WSTransceiver.h +7 -21
  432. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +526 -264
  433. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +341 -455
  434. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +86 -26
  435. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +59 -23
  436. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +315 -61
  437. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +83 -36
  438. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +57 -59
  439. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +3 -3
  440. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +396 -159
  441. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +251 -355
  442. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +52 -0
  443. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +526 -131
  444. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +19 -165
  445. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +8 -17
  446. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +284 -0
  447. data/ext/ice/cpp/src/IceSSL/CertificateI.h +69 -0
  448. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +39 -11
  449. data/ext/ice/cpp/src/{Ice/ObjectFactoryF.cpp → IceSSL/ConnectionInfoF.cpp} +31 -9
  450. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +14 -56
  451. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +6 -13
  452. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +205 -197
  453. data/ext/ice/cpp/src/IceSSL/EndpointI.h +41 -33
  454. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +39 -10
  455. data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
  456. data/ext/ice/cpp/src/IceSSL/Instance.h +7 -7
  457. data/ext/ice/cpp/src/IceSSL/InstanceF.h +11 -7
  458. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +588 -0
  459. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +117 -152
  460. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +64 -0
  461. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +32 -0
  462. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +132 -0
  463. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +400 -89
  464. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +36 -21
  465. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +291 -0
  466. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +63 -0
  467. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +71 -41
  468. data/ext/ice/cpp/src/IceSSL/PluginI.h +13 -18
  469. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +9 -54
  470. data/ext/ice/cpp/src/IceSSL/RFC2253.h +7 -7
  471. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +585 -0
  472. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +491 -75
  473. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +126 -0
  474. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +32 -0
  475. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +78 -0
  476. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +126 -169
  477. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +19 -22
  478. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +79 -74
  479. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +24 -187
  480. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +4 -19
  481. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +862 -0
  482. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +56 -214
  483. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +60 -0
  484. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +31 -0
  485. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +80 -0
  486. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +137 -144
  487. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +25 -28
  488. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +857 -0
  489. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +46 -0
  490. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +9 -13
  491. data/ext/ice/cpp/src/IceSSL/TrustManager.h +4 -4
  492. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +3 -3
  493. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +271 -0
  494. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +343 -0
  495. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +46 -0
  496. data/ext/ice/cpp/{include/Ice/ObjectFactoryManagerF.h → src/IceSSL/UWPEngineF.h} +13 -8
  497. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +94 -0
  498. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +388 -0
  499. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +76 -0
  500. data/ext/ice/cpp/src/IceSSL/Util.cpp +66 -1256
  501. data/ext/ice/cpp/src/IceSSL/Util.h +48 -137
  502. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +162 -0
  503. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +22 -22
  504. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +34 -26
  505. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +20 -31
  506. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +25 -116
  507. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
  508. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
  509. data/ext/ice/cpp/src/IceUtil/Options.cpp +23 -46
  510. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +7 -6
  511. data/ext/ice/cpp/src/IceUtil/Random.cpp +13 -13
  512. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +3 -9
  513. data/ext/ice/cpp/src/IceUtil/Shared.cpp +8 -3
  514. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +501 -264
  515. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +540 -235
  516. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +37 -74
  517. data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
  518. data/ext/ice/cpp/src/IceUtil/UUID.cpp +10 -10
  519. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +98 -97
  520. data/ext/ice/cpp/src/IceUtil/Unicode.h +21 -35
  521. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +838 -0
  522. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +815 -163
  523. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +76 -0
  524. data/ext/ice/cpp/src/Slice/Checksum.cpp +2 -2
  525. data/ext/ice/cpp/{include → src}/Slice/Checksum.h +2 -2
  526. data/ext/ice/cpp/src/Slice/FileTracker.cpp +25 -78
  527. data/ext/ice/cpp/{include → src}/Slice/FileTracker.h +9 -9
  528. data/ext/ice/cpp/src/Slice/Grammar.cpp +1994 -1943
  529. data/ext/ice/cpp/src/Slice/Grammar.h +44 -24
  530. data/ext/ice/cpp/src/Slice/GrammarUtil.h +14 -14
  531. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +2658 -1927
  532. data/ext/ice/cpp/{include → src}/Slice/JavaUtil.h +178 -59
  533. data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
  534. data/ext/ice/cpp/src/Slice/MD5.h +1 -1
  535. data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -1
  536. data/ext/ice/cpp/src/Slice/MD5I.h +1 -1
  537. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +12 -15
  538. data/ext/ice/cpp/{include → src}/Slice/PHPUtil.h +6 -15
  539. data/ext/ice/cpp/src/Slice/Parser.cpp +802 -307
  540. data/ext/ice/cpp/{include → src}/Slice/Parser.h +76 -84
  541. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +43 -21
  542. data/ext/ice/cpp/{include → src}/Slice/Preprocessor.h +7 -12
  543. data/ext/ice/cpp/src/Slice/Python.cpp +207 -86
  544. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +683 -679
  545. data/ext/ice/cpp/{include → src}/Slice/PythonUtil.h +19 -8
  546. data/ext/ice/cpp/src/Slice/Ruby.cpp +38 -34
  547. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +177 -445
  548. data/ext/ice/cpp/{include → src}/Slice/RubyUtil.h +6 -6
  549. data/ext/ice/cpp/src/Slice/Scanner.cpp +218 -306
  550. data/ext/ice/cpp/src/Slice/{Util.cpp → SliceUtil.cpp} +37 -64
  551. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +374 -0
  552. data/ext/ice/cpp/src/Slice/Util.h +54 -0
  553. data/ext/ice/mcpp/Makefile +5 -2
  554. data/ice.gemspec +2 -7
  555. data/lib/Glacier2.rb +1 -1
  556. data/lib/Glacier2/Metrics.rb +7 -46
  557. data/lib/Glacier2/PermissionsVerifier.rb +24 -95
  558. data/lib/Glacier2/PermissionsVerifierF.rb +3 -3
  559. data/lib/Glacier2/Router.rb +32 -74
  560. data/lib/Glacier2/RouterF.rb +3 -3
  561. data/lib/Glacier2/SSLInfo.rb +4 -7
  562. data/lib/Glacier2/Session.rb +88 -307
  563. data/lib/Ice.rb +83 -52
  564. data/lib/Ice/BuiltinSequences.rb +4 -4
  565. data/lib/Ice/Communicator.rb +56 -58
  566. data/lib/Ice/CommunicatorF.rb +3 -3
  567. data/lib/Ice/Connection.rb +153 -162
  568. data/lib/Ice/ConnectionF.rb +3 -3
  569. data/lib/Ice/Current.rb +4 -11
  570. data/lib/Ice/Endpoint.rb +57 -133
  571. data/lib/Ice/EndpointF.rb +3 -3
  572. data/lib/Ice/EndpointTypes.rb +3 -7
  573. data/lib/Ice/FacetMap.rb +4 -4
  574. data/lib/Ice/Identity.rb +5 -8
  575. data/lib/Ice/ImplicitContext.rb +5 -34
  576. data/lib/Ice/ImplicitContextF.rb +3 -3
  577. data/lib/Ice/Instrumentation.rb +23 -275
  578. data/lib/Ice/InstrumentationF.rb +3 -3
  579. data/lib/Ice/LocalException.rb +95 -141
  580. data/lib/Ice/Locator.rb +51 -165
  581. data/lib/Ice/LocatorF.rb +3 -3
  582. data/lib/Ice/Logger.rb +5 -34
  583. data/lib/Ice/LoggerF.rb +3 -3
  584. data/lib/Ice/Metrics.rb +61 -416
  585. data/lib/Ice/ObjectAdapter.rb +34 -0
  586. data/lib/Ice/ObjectAdapterF.rb +3 -3
  587. data/lib/Ice/ObjectFactory.rb +5 -30
  588. data/lib/Ice/Plugin.rb +7 -60
  589. data/lib/Ice/PluginF.rb +3 -3
  590. data/lib/Ice/Process.rb +16 -52
  591. data/lib/Ice/ProcessF.rb +3 -3
  592. data/lib/Ice/Properties.rb +5 -41
  593. data/lib/Ice/PropertiesAdmin.rb +19 -56
  594. data/lib/Ice/PropertiesF.rb +3 -3
  595. data/lib/Ice/RemoteLogger.rb +34 -115
  596. data/lib/Ice/Router.rb +29 -101
  597. data/lib/Ice/RouterF.rb +3 -3
  598. data/lib/Ice/ServantLocator.rb +31 -0
  599. data/lib/Ice/{ObjectFactoryF.rb → ServantLocatorF.rb} +6 -6
  600. data/lib/Ice/SliceChecksumDict.rb +3 -3
  601. data/lib/Ice/ValueFactory.rb +33 -0
  602. data/lib/Ice/Version.rb +5 -11
  603. data/lib/IceBox.rb +1 -1
  604. data/lib/IceBox/IceBox.rb +44 -148
  605. data/lib/IceGrid.rb +1 -4
  606. data/lib/IceGrid/Admin.rb +551 -427
  607. data/lib/IceGrid/Descriptor.rb +62 -529
  608. data/lib/IceGrid/Exception.rb +24 -45
  609. data/lib/IceGrid/FileParser.rb +14 -50
  610. data/lib/IceGrid/PluginFacade.rb +40 -0
  611. data/lib/IceGrid/Registry.rb +151 -58
  612. data/lib/IceGrid/Session.rb +25 -64
  613. data/lib/IceGrid/UserAccountMapper.rb +14 -50
  614. data/lib/IcePatch2.rb +1 -1
  615. data/lib/IcePatch2/FileInfo.rb +5 -11
  616. data/lib/IcePatch2/FileServer.rb +33 -76
  617. data/lib/IceStorm.rb +1 -1
  618. data/lib/IceStorm/IceStorm.rb +79 -206
  619. data/lib/IceStorm/Metrics.rb +11 -89
  620. data/slice/Glacier2/Metrics.ice +8 -4
  621. data/slice/Glacier2/PermissionsVerifier.ice +10 -7
  622. data/slice/Glacier2/PermissionsVerifierF.ice +7 -4
  623. data/slice/Glacier2/Router.ice +10 -8
  624. data/slice/Glacier2/RouterF.ice +7 -4
  625. data/slice/Glacier2/SSLInfo.ice +8 -5
  626. data/slice/Glacier2/Session.ice +15 -13
  627. data/slice/Ice/BuiltinSequences.ice +7 -4
  628. data/slice/Ice/Communicator.ice +141 -66
  629. data/slice/Ice/CommunicatorF.ice +7 -4
  630. data/slice/Ice/Connection.ice +183 -86
  631. data/slice/Ice/ConnectionF.ice +7 -4
  632. data/slice/Ice/Current.ice +13 -9
  633. data/slice/Ice/Endpoint.ice +63 -14
  634. data/slice/Ice/EndpointF.ice +7 -4
  635. data/slice/Ice/EndpointTypes.ice +8 -6
  636. data/slice/Ice/FacetMap.ice +7 -4
  637. data/slice/Ice/Identity.ice +13 -5
  638. data/slice/Ice/ImplicitContext.ice +20 -18
  639. data/slice/Ice/ImplicitContextF.ice +7 -4
  640. data/slice/Ice/Instrumentation.ice +20 -19
  641. data/slice/Ice/InstrumentationF.ice +8 -5
  642. data/slice/Ice/LocalException.ice +87 -87
  643. data/slice/Ice/Locator.ice +19 -18
  644. data/slice/Ice/LocatorF.ice +7 -4
  645. data/slice/Ice/Logger.ice +9 -7
  646. data/slice/Ice/LoggerF.ice +7 -4
  647. data/slice/Ice/Metrics.ice +18 -14
  648. data/slice/Ice/ObjectAdapter.ice +30 -13
  649. data/slice/Ice/ObjectAdapterF.ice +7 -4
  650. data/slice/Ice/ObjectFactory.ice +15 -12
  651. data/slice/Ice/Plugin.ice +9 -6
  652. data/slice/Ice/PluginF.ice +8 -5
  653. data/slice/Ice/Process.ice +9 -6
  654. data/slice/Ice/ProcessF.ice +7 -4
  655. data/slice/Ice/Properties.ice +15 -12
  656. data/slice/Ice/PropertiesAdmin.ice +9 -5
  657. data/slice/Ice/PropertiesF.ice +7 -4
  658. data/slice/Ice/RemoteLogger.ice +33 -24
  659. data/slice/Ice/Router.ice +16 -7
  660. data/slice/Ice/RouterF.ice +7 -4
  661. data/slice/Ice/ServantLocator.ice +13 -10
  662. data/slice/Ice/ServantLocatorF.ice +7 -4
  663. data/slice/Ice/SliceChecksumDict.ice +7 -4
  664. data/slice/Ice/ValueFactory.ice +127 -0
  665. data/slice/Ice/Version.ice +9 -5
  666. data/slice/IceBT/ConnectionInfo.ice +53 -0
  667. data/slice/IceBT/EndpointInfo.ice +51 -0
  668. data/slice/IceBT/Types.ice +39 -0
  669. data/slice/IceBox/IceBox.ice +20 -21
  670. data/slice/IceDiscovery/IceDiscovery.ice +9 -5
  671. data/slice/IceGrid/Admin.ice +390 -30
  672. data/slice/IceGrid/Descriptor.ice +37 -29
  673. data/slice/IceGrid/Exception.ice +33 -27
  674. data/slice/IceGrid/FileParser.ice +9 -6
  675. data/slice/IceGrid/PluginFacade.ice +11 -9
  676. data/slice/IceGrid/Registry.ice +139 -16
  677. data/slice/IceGrid/Session.ice +10 -8
  678. data/slice/IceGrid/UserAccountMapper.ice +9 -6
  679. data/slice/IceIAP/ConnectionInfo.ice +70 -0
  680. data/slice/IceIAP/EndpointInfo.ice +64 -0
  681. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +9 -7
  682. data/slice/IcePatch2/FileInfo.ice +9 -8
  683. data/slice/IcePatch2/FileServer.ice +17 -13
  684. data/slice/IceSSL/ConnectionInfo.ice +14 -17
  685. data/slice/IceSSL/ConnectionInfoF.ice +24 -0
  686. data/slice/IceSSL/EndpointInfo.ice +9 -30
  687. data/slice/IceStorm/IceStorm.ice +22 -18
  688. data/slice/IceStorm/Metrics.ice +9 -5
  689. metadata +154 -120
  690. data/ext/ObjectFactory.cpp +0 -140
  691. data/ext/ObjectFactory.h +0 -50
  692. data/ext/ice/cpp/include/Ice/BasicStream.h +0 -1335
  693. data/ext/ice/cpp/include/Ice/Communicator.h +0 -200
  694. data/ext/ice/cpp/include/Ice/Connection.h +0 -497
  695. data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +0 -62
  696. data/ext/ice/cpp/include/Ice/Endpoint.h +0 -341
  697. data/ext/ice/cpp/include/Ice/Identity.h +0 -168
  698. data/ext/ice/cpp/include/Ice/Instrumentation.h +0 -365
  699. data/ext/ice/cpp/include/Ice/LocalException.h +0 -1030
  700. data/ext/ice/cpp/include/Ice/Locator.h +0 -2193
  701. data/ext/ice/cpp/include/Ice/Metrics.h +0 -2974
  702. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +0 -168
  703. data/ext/ice/cpp/include/Ice/ObjectFactory.h +0 -92
  704. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +0 -66
  705. data/ext/ice/cpp/include/Ice/Outgoing.h +0 -225
  706. data/ext/ice/cpp/include/Ice/Plugin.h +0 -125
  707. data/ext/ice/cpp/include/Ice/Process.h +0 -574
  708. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +0 -830
  709. data/ext/ice/cpp/include/Ice/RemoteLogger.h +0 -1500
  710. data/ext/ice/cpp/include/Ice/Router.h +0 -1159
  711. data/ext/ice/cpp/include/Ice/Stream.h +0 -447
  712. data/ext/ice/cpp/include/Ice/StreamF.h +0 -30
  713. data/ext/ice/cpp/include/Ice/Version.h +0 -262
  714. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +0 -158
  715. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +0 -142
  716. data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +0 -119
  717. data/ext/ice/cpp/include/IceUtil/Cache.h +0 -362
  718. data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +0 -65
  719. data/ext/ice/cpp/include/Slice/CsUtil.h +0 -92
  720. data/ext/ice/cpp/include/Slice/DotNetNames.h +0 -34
  721. data/ext/ice/cpp/include/Slice/ObjCUtil.h +0 -127
  722. data/ext/ice/cpp/include/Slice/Util.h +0 -56
  723. data/ext/ice/cpp/src/Ice/BasicStream.cpp +0 -3428
  724. data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +0 -62
  725. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +0 -139
  726. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +0 -43
  727. data/ext/ice/cpp/src/Ice/Outgoing.cpp +0 -694
  728. data/ext/ice/cpp/src/Ice/Stream.cpp +0 -53
  729. data/ext/ice/cpp/src/Ice/StreamI.cpp +0 -832
  730. data/ext/ice/cpp/src/Ice/StreamI.h +0 -198
  731. data/ext/ice/cpp/src/IceSSL/Certificate.cpp +0 -1336
  732. data/ext/ice/cpp/src/IceUtil/Exception.cpp +0 -792
  733. data/ext/ice/cpp/src/IceUtil/FileUtil.h +0 -185
  734. data/ext/ice/cpp/src/Slice/CsUtil.cpp +0 -2660
  735. data/ext/ice/cpp/src/Slice/DotNetNames.cpp +0 -146
  736. data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +0 -1310
  737. data/lib/IceGrid/Locator.rb +0 -106
  738. data/lib/IceGrid/Observer.rb +0 -572
  739. data/lib/IceGrid/Query.rb +0 -169
  740. data/slice/Freeze/BackgroundSaveEvictor.ice +0 -111
  741. data/slice/Freeze/CatalogData.ice +0 -49
  742. data/slice/Freeze/Connection.ice +0 -121
  743. data/slice/Freeze/DB.ice +0 -37
  744. data/slice/Freeze/Evictor.ice +0 -346
  745. data/slice/Freeze/EvictorF.ice +0 -22
  746. data/slice/Freeze/EvictorStorage.ice +0 -72
  747. data/slice/Freeze/Exception.ice +0 -100
  748. data/slice/Freeze/Transaction.ice +0 -58
  749. data/slice/Freeze/TransactionalEvictor.ice +0 -50
  750. data/slice/IceGrid/Locator.ice +0 -57
  751. data/slice/IceGrid/Observer.ice +0 -395
  752. data/slice/IceGrid/Query.ice +0 -131
@@ -0,0 +1,994 @@
1
+ // **********************************************************************
2
+ //
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
+ //
5
+ // This copy of Ice is licensed to you under the terms described in the
6
+ // ICE_LICENSE file included in this distribution.
7
+ //
8
+ // **********************************************************************
9
+
10
+ #ifndef ICE_INPUT_STREAM_H
11
+ #define ICE_INPUT_STREAM_H
12
+
13
+ #include <Ice/CommunicatorF.h>
14
+ #include <Ice/InstanceF.h>
15
+ #include <Ice/Object.h>
16
+ #include <Ice/ValueF.h>
17
+ #include <Ice/ProxyF.h>
18
+ #include <Ice/LoggerF.h>
19
+ #include <Ice/ValueFactory.h>
20
+ #include <Ice/Buffer.h>
21
+ #include <Ice/Protocol.h>
22
+ #include <Ice/SlicedDataF.h>
23
+ #include <Ice/UserExceptionFactory.h>
24
+ #include <Ice/StreamHelpers.h>
25
+ #include <Ice/FactoryTable.h>
26
+
27
+ namespace Ice
28
+ {
29
+
30
+ class UserException;
31
+
32
+ template<typename T> inline void
33
+ patchHandle(void* addr, const ValuePtr& v)
34
+ {
35
+ #ifdef ICE_CPP11_MAPPING
36
+ ::std::shared_ptr<T>* handle = static_cast<::std::shared_ptr<T>*>(addr);
37
+ *handle = ::std::dynamic_pointer_cast<T>(v);
38
+ if(v && !(*handle))
39
+ {
40
+ IceInternal::Ex::throwUOE(T::ice_staticId(), v);
41
+ }
42
+ #else
43
+ IceInternal::Handle<T>* p = static_cast<IceInternal::Handle<T>*>(addr);
44
+ _icePatchObjectPtr(*p, v); // Generated _icePatchObjectPtr function, necessary for forward declarations.
45
+ #endif
46
+ }
47
+
48
+ class ICE_API InputStream : public IceInternal::Buffer
49
+ {
50
+ public:
51
+
52
+ typedef size_t size_type;
53
+ typedef void (*PatchFunc)(void*, const ValuePtr&);
54
+
55
+ //
56
+ // These constructors use the latest encoding version. Without a communicator, the stream
57
+ // will not be able to unmarshal a proxy. For other unmarshaling tasks, you can provide
58
+ // Helpers for objects that are normally provided by a communicator.
59
+ //
60
+ InputStream();
61
+ InputStream(const std::vector<Byte>&);
62
+ InputStream(const std::pair<const Byte*, const Byte*>&);
63
+ InputStream(IceInternal::Buffer&, bool = false);
64
+
65
+ //
66
+ // These constructors use the communicator's default encoding version.
67
+ //
68
+ InputStream(const CommunicatorPtr&);
69
+ InputStream(const CommunicatorPtr&, const std::vector<Byte>&);
70
+ InputStream(const CommunicatorPtr&, const std::pair<const Byte*, const Byte*>&);
71
+ InputStream(const CommunicatorPtr&, IceInternal::Buffer&, bool = false);
72
+
73
+ //
74
+ // These constructors use the given encoding version. Without a communicator, the stream
75
+ // will not be able to unmarshal a proxy. For other unmarshaling tasks, you can provide
76
+ // Helpers for objects that are normally provided by a communicator.
77
+ //
78
+ InputStream(const EncodingVersion&);
79
+ InputStream(const EncodingVersion&, const std::vector<Byte>&);
80
+ InputStream(const EncodingVersion&, const std::pair<const Byte*, const Byte*>&);
81
+ InputStream(const EncodingVersion&, IceInternal::Buffer&, bool = false);
82
+
83
+ //
84
+ // These constructors use the given communicator and encoding version.
85
+ //
86
+ InputStream(const CommunicatorPtr&, const EncodingVersion&);
87
+ InputStream(const CommunicatorPtr&, const EncodingVersion&, const std::vector<Byte>&);
88
+ InputStream(const CommunicatorPtr&, const EncodingVersion&, const std::pair<const Byte*, const Byte*>&);
89
+ InputStream(const CommunicatorPtr&, const EncodingVersion&, IceInternal::Buffer&, bool = false);
90
+
91
+ ~InputStream()
92
+ {
93
+ // Inlined for performance reasons.
94
+
95
+ if(_currentEncaps != &_preAllocatedEncaps)
96
+ {
97
+ clear(); // Not inlined.
98
+ }
99
+
100
+ #ifdef ICE_CPP11_MAPPING
101
+
102
+ for(auto d: _deleters)
103
+ {
104
+ d();
105
+ }
106
+ #endif
107
+ }
108
+
109
+ //
110
+ // Use initialize() if you originally constructed the stream without a communicator.
111
+ //
112
+ void initialize(const CommunicatorPtr&);
113
+ void initialize(const CommunicatorPtr&, const EncodingVersion&);
114
+
115
+ void clear();
116
+
117
+ //
118
+ // Must return Instance*, because we don't hold an InstancePtr for
119
+ // optimization reasons (see comments below).
120
+ //
121
+ IceInternal::Instance* instance() const { return _instance; } // Inlined for performance reasons.
122
+
123
+ void setValueFactoryManager(const ValueFactoryManagerPtr&);
124
+
125
+ void setLogger(const LoggerPtr&);
126
+
127
+ #ifdef ICE_CPP11_MAPPING
128
+ void setCompactIdResolver(std::function<std::string(int)>);
129
+ #else
130
+ void setCompactIdResolver(const CompactIdResolverPtr&);
131
+ #endif
132
+
133
+ #ifndef ICE_CPP11_MAPPING
134
+ void setCollectObjects(bool);
135
+ #endif
136
+
137
+ void setSliceValues(bool);
138
+
139
+ void setTraceSlicing(bool);
140
+
141
+ void setClassGraphDepthMax(size_t);
142
+
143
+ void* getClosure() const;
144
+ void* setClosure(void*);
145
+
146
+ void swap(InputStream&);
147
+
148
+ void resetEncapsulation();
149
+
150
+ void resize(Container::size_type sz)
151
+ {
152
+ b.resize(sz);
153
+ i = b.end();
154
+ }
155
+
156
+ void startValue()
157
+ {
158
+ assert(_currentEncaps && _currentEncaps->decoder);
159
+ _currentEncaps->decoder->startInstance(ValueSlice);
160
+ }
161
+ SlicedDataPtr endValue(bool preserve)
162
+ {
163
+ assert(_currentEncaps && _currentEncaps->decoder);
164
+ return _currentEncaps->decoder->endInstance(preserve);
165
+ }
166
+
167
+ void startException()
168
+ {
169
+ assert(_currentEncaps && _currentEncaps->decoder);
170
+ _currentEncaps->decoder->startInstance(ExceptionSlice);
171
+ }
172
+ SlicedDataPtr endException(bool preserve)
173
+ {
174
+ assert(_currentEncaps && _currentEncaps->decoder);
175
+ return _currentEncaps->decoder->endInstance(preserve);
176
+ }
177
+
178
+ const EncodingVersion& startEncapsulation()
179
+ {
180
+ Encaps* oldEncaps = _currentEncaps;
181
+ if(!oldEncaps) // First allocated encaps?
182
+ {
183
+ _currentEncaps = &_preAllocatedEncaps;
184
+ }
185
+ else
186
+ {
187
+ _currentEncaps = new Encaps();
188
+ _currentEncaps->previous = oldEncaps;
189
+ }
190
+ _currentEncaps->start = i - b.begin();
191
+
192
+ //
193
+ // I don't use readSize() and writeSize() for encapsulations,
194
+ // because when creating an encapsulation, I must know in advance
195
+ // how many bytes the size information will require in the data
196
+ // stream. If I use an Int, it is always 4 bytes. For
197
+ // readSize()/writeSize(), it could be 1 or 5 bytes.
198
+ //
199
+ Int sz;
200
+ read(sz);
201
+ if(sz < 6)
202
+ {
203
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
204
+ }
205
+ if(i - sizeof(Int) + sz > b.end())
206
+ {
207
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
208
+ }
209
+ _currentEncaps->sz = sz;
210
+
211
+ read(_currentEncaps->encoding);
212
+ IceInternal::checkSupportedEncoding(_currentEncaps->encoding); // Make sure the encoding is supported
213
+
214
+ return _currentEncaps->encoding;
215
+ }
216
+
217
+ void endEncapsulation()
218
+ {
219
+ assert(_currentEncaps);
220
+
221
+ if(_currentEncaps->encoding != Encoding_1_0)
222
+ {
223
+ skipOptionals();
224
+ if(i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
225
+ {
226
+ throwEncapsulationException(__FILE__, __LINE__);
227
+ }
228
+ }
229
+ else if(i != b.begin() + _currentEncaps->start + _currentEncaps->sz)
230
+ {
231
+ if(i + 1 != b.begin() + _currentEncaps->start + _currentEncaps->sz)
232
+ {
233
+ throwEncapsulationException(__FILE__, __LINE__);
234
+ }
235
+
236
+ //
237
+ // Ice version < 3.3 had a bug where user exceptions with
238
+ // class members could be encoded with a trailing byte
239
+ // when dispatched with AMD. So we tolerate an extra byte
240
+ // in the encapsulation.
241
+ //
242
+ ++i;
243
+ }
244
+
245
+ Encaps* oldEncaps = _currentEncaps;
246
+ _currentEncaps = _currentEncaps->previous;
247
+ if(oldEncaps == &_preAllocatedEncaps)
248
+ {
249
+ oldEncaps->reset();
250
+ }
251
+ else
252
+ {
253
+ delete oldEncaps;
254
+ }
255
+ }
256
+
257
+ EncodingVersion skipEmptyEncapsulation()
258
+ {
259
+ Ice::Int sz;
260
+ read(sz);
261
+ if(sz < 6)
262
+ {
263
+ throwEncapsulationException(__FILE__, __LINE__);
264
+ }
265
+ if(i - sizeof(Ice::Int) + sz > b.end())
266
+ {
267
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
268
+ }
269
+ Ice::EncodingVersion encoding;
270
+ read(encoding);
271
+ IceInternal::checkSupportedEncoding(encoding); // Make sure the encoding is supported
272
+
273
+ if(encoding == Ice::Encoding_1_0)
274
+ {
275
+ if(sz != static_cast<Ice::Int>(sizeof(Ice::Int)) + 2)
276
+ {
277
+ throwEncapsulationException(__FILE__, __LINE__);
278
+ }
279
+ }
280
+ else
281
+ {
282
+ // Skip the optional content of the encapsulation if we are expecting an
283
+ // empty encapsulation.
284
+ i += sz - sizeof(Ice::Int) - 2;
285
+ }
286
+ return encoding;
287
+ }
288
+
289
+ EncodingVersion readEncapsulation(const Byte*& v, Int& sz)
290
+ {
291
+ EncodingVersion encoding;
292
+ v = i;
293
+ read(sz);
294
+ if(sz < 6)
295
+ {
296
+ throwEncapsulationException(__FILE__, __LINE__);
297
+ }
298
+ if(i - sizeof(Int) + sz > b.end())
299
+ {
300
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
301
+ }
302
+
303
+ read(encoding);
304
+ i += sz - sizeof(Int) - 2;
305
+ return encoding;
306
+ }
307
+
308
+ const EncodingVersion& getEncoding() const
309
+ {
310
+ return _currentEncaps ? _currentEncaps->encoding : _encoding;
311
+ }
312
+
313
+ Int getEncapsulationSize();
314
+ EncodingVersion skipEncapsulation();
315
+
316
+ std::string startSlice()
317
+ {
318
+ assert(_currentEncaps && _currentEncaps->decoder);
319
+ return _currentEncaps->decoder->startSlice();
320
+ }
321
+ void endSlice()
322
+ {
323
+ assert(_currentEncaps && _currentEncaps->decoder);
324
+ _currentEncaps->decoder->endSlice();
325
+ }
326
+ void skipSlice()
327
+ {
328
+ assert(_currentEncaps && _currentEncaps->decoder);
329
+ _currentEncaps->decoder->skipSlice();
330
+ }
331
+
332
+ void readPendingValues();
333
+
334
+ Int readSize() // Inlined for performance reasons.
335
+ {
336
+ Byte byte;
337
+ read(byte);
338
+ unsigned char val = static_cast<unsigned char>(byte);
339
+ if(val == 255)
340
+ {
341
+ Int v;
342
+ read(v);
343
+ if(v < 0)
344
+ {
345
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
346
+ }
347
+ return v;
348
+ }
349
+ else
350
+ {
351
+ return static_cast<Int>(static_cast<unsigned char>(byte));
352
+ }
353
+ }
354
+
355
+ Int readAndCheckSeqSize(int);
356
+
357
+ void readBlob(std::vector<Byte>&, Int);
358
+
359
+ void readBlob(const Byte*& v, Container::size_type sz)
360
+ {
361
+ if(sz > 0)
362
+ {
363
+ v = i;
364
+ if(static_cast<Container::size_type>(b.end() - i) < sz)
365
+ {
366
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
367
+ }
368
+ i += sz;
369
+ }
370
+ else
371
+ {
372
+ v = i;
373
+ }
374
+ }
375
+
376
+ template<typename T> void read(T& v)
377
+ {
378
+ StreamHelper<T, StreamableTraits<T>::helper>::read(this, v);
379
+ }
380
+
381
+ template<typename T> void read(Int tag, IceUtil::Optional<T>& v)
382
+ {
383
+ if(readOptional(tag, StreamOptionalHelper<T,
384
+ StreamableTraits<T>::helper,
385
+ StreamableTraits<T>::fixedLength>::optionalFormat))
386
+ {
387
+ #ifdef ICE_CPP11_MAPPING
388
+ v.emplace();
389
+ #else
390
+ v.__setIsSet();
391
+ #endif
392
+ StreamOptionalHelper<T,
393
+ StreamableTraits<T>::helper,
394
+ StreamableTraits<T>::fixedLength>::read(this, *v);
395
+ }
396
+ else
397
+ {
398
+ v = IceUtil::None;
399
+ }
400
+ }
401
+
402
+ #ifdef ICE_CPP11_MAPPING
403
+
404
+ template<typename T> void read(std::pair<const T*, const T*>& v)
405
+ {
406
+ auto holder = new std::vector<T>;
407
+ _deleters.push_back([holder] { delete holder; });
408
+ read(*holder);
409
+ if(holder->size() > 0)
410
+ {
411
+ v.first = holder->data();
412
+ v.second = holder->data() + holder->size();
413
+ }
414
+ else
415
+ {
416
+ v.first = 0;
417
+ v.second = 0;
418
+ }
419
+ }
420
+
421
+ template<typename T> void readAll(T& v)
422
+ {
423
+ read(v);
424
+ }
425
+
426
+ template<typename T, typename... Te> void readAll(T& v, Te&... ve)
427
+ {
428
+ read(v);
429
+ readAll(ve...);
430
+ }
431
+
432
+ template<typename T>
433
+ void readAll(std::initializer_list<int> tags, IceUtil::Optional<T>& v)
434
+ {
435
+ read(*(tags.begin() + tags.size() - 1), v);
436
+ }
437
+
438
+ template<typename T, typename... Te>
439
+ void readAll(std::initializer_list<int> tags, IceUtil::Optional<T>& v, IceUtil::Optional<Te>&... ve)
440
+ {
441
+ size_t index = tags.size() - sizeof...(ve) - 1;
442
+ read(*(tags.begin() + index), v);
443
+ readAll(tags, ve...);
444
+ }
445
+
446
+ #endif
447
+
448
+ // Read type and tag for optionals
449
+ bool readOptional(Int tag, OptionalFormat expectedFormat)
450
+ {
451
+ assert(_currentEncaps);
452
+ if(_currentEncaps->decoder)
453
+ {
454
+ return _currentEncaps->decoder->readOptional(tag, expectedFormat);
455
+ }
456
+ else
457
+ {
458
+ return readOptImpl(tag, expectedFormat);
459
+ }
460
+ }
461
+
462
+ // Byte
463
+ void read(Byte& v)
464
+ {
465
+ if(i >= b.end())
466
+ {
467
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
468
+ }
469
+ v = *i++;
470
+ }
471
+ void read(std::vector<Byte>&);
472
+ void read(std::pair<const Byte*, const Byte*>&);
473
+
474
+ #ifndef ICE_CPP11_MAPPING
475
+ // This method is useful for generic stream helpers
476
+ void read(std::pair<const Byte*, const Byte*>& p, ::IceUtil::ScopedArray<Byte>& result)
477
+ {
478
+ result.reset();
479
+ read(p);
480
+ }
481
+ #endif
482
+
483
+ // Bool
484
+ void read(bool& v)
485
+ {
486
+ if(i >= b.end())
487
+ {
488
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
489
+ }
490
+ v = (0 != *i++);
491
+ }
492
+ void read(std::vector<bool>&);
493
+
494
+ #ifdef ICE_CPP11_MAPPING
495
+ void read(std::pair<const bool*, const bool*>&);
496
+ #else
497
+ void read(std::pair<const bool*, const bool*>&, ::IceUtil::ScopedArray<bool>&);
498
+ #endif
499
+
500
+ // Short
501
+ void read(Short&);
502
+ void read(std::vector<Short>&);
503
+ #ifdef ICE_CPP11_MAPPING
504
+ void read(std::pair<const short*, const short*>&);
505
+ #else
506
+ void read(std::pair<const Short*, const Short*>&, ::IceUtil::ScopedArray<Short>&);
507
+ #endif
508
+
509
+ // Int
510
+ void read(Int& v) // Inlined for performance reasons.
511
+ {
512
+ if(b.end() - i < static_cast<int>(sizeof(Int)))
513
+ {
514
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
515
+ }
516
+ const Byte* src = &(*i);
517
+ i += sizeof(Int);
518
+ #ifdef ICE_BIG_ENDIAN
519
+ Byte* dest = reinterpret_cast<Byte*>(&v) + sizeof(Int) - 1;
520
+ *dest-- = *src++;
521
+ *dest-- = *src++;
522
+ *dest-- = *src++;
523
+ *dest = *src;
524
+ #else
525
+ Byte* dest = reinterpret_cast<Byte*>(&v);
526
+ *dest++ = *src++;
527
+ *dest++ = *src++;
528
+ *dest++ = *src++;
529
+ *dest = *src;
530
+ #endif
531
+ }
532
+
533
+ void read(std::vector<Int>&);
534
+ #ifdef ICE_CPP11_MAPPING
535
+ void read(std::pair<const int*, const int*>&);
536
+ #else
537
+ void read(std::pair<const Int*, const Int*>&, ::IceUtil::ScopedArray<Int>&);
538
+ #endif
539
+
540
+ // Long
541
+
542
+ void read(Long&);
543
+ void read(std::vector<Long>&);
544
+ #ifdef ICE_CPP11_MAPPING
545
+ void read(std::pair<const long long*, const long long*>&);
546
+ #else
547
+ void read(std::pair<const Long*, const Long*>&, ::IceUtil::ScopedArray<Long>&);
548
+ #endif
549
+
550
+ // Float
551
+ void read(Float&);
552
+ void read(std::vector<Float>&);
553
+ #ifdef ICE_CPP11_MAPPING
554
+ void read(std::pair<const float*, const float*>&);
555
+ #else
556
+ void read(std::pair<const Float*, const Float*>&, ::IceUtil::ScopedArray<Float>&);
557
+ #endif
558
+
559
+ // Double
560
+ void read(Double&);
561
+ void read(std::vector<Double>&);
562
+ #ifdef ICE_CPP11_MAPPING
563
+ void read(std::pair<const double*, const double*>&);
564
+ #else
565
+ void read(std::pair<const Double*, const Double*>&, ::IceUtil::ScopedArray<Double>&);
566
+ #endif
567
+
568
+ // String
569
+ void read(std::string& v, bool convert = true);
570
+
571
+ #ifdef ICE_CPP11_MAPPING
572
+ void read(const char*& vdata, size_t& vsize, bool convert = true);
573
+ #else
574
+ // For custom strings, convert = false
575
+ void read(const char*& vdata, size_t& vsize);
576
+
577
+ // For custom strings, convert = true
578
+ void read(const char*& vdata, size_t& vsize, std::string& holder);
579
+ #endif
580
+
581
+ void read(std::vector<std::string>&, bool = true);
582
+
583
+ void read(std::wstring&);
584
+ void read(std::vector<std::wstring>&);
585
+
586
+ // Proxy
587
+ #ifdef ICE_CPP11_MAPPING
588
+ std::shared_ptr<ObjectPrx> readProxy();
589
+
590
+ template<typename T, typename ::std::enable_if<::std::is_base_of<ObjectPrx, T>::value>::type* = nullptr>
591
+ void read(::std::shared_ptr<T>& v)
592
+ {
593
+ ::std::shared_ptr<ObjectPrx> proxy(readProxy());
594
+ if(!proxy)
595
+ {
596
+ v = 0;
597
+ }
598
+ else
599
+ {
600
+ v = ::IceInternal::createProxy<T>();
601
+ v->_copyFrom(proxy);
602
+ }
603
+ }
604
+ #else
605
+ void read(ObjectPrx&);
606
+ template<typename T> void read(IceInternal::ProxyHandle<T>& v)
607
+ {
608
+ _readProxy(this, v); // Generated _readProxy method, necessary for forward declarations.
609
+ }
610
+ #endif
611
+
612
+ // Class
613
+ #ifdef ICE_CPP11_MAPPING // C++11 mapping
614
+ template<typename T, typename ::std::enable_if<::std::is_base_of<Value, T>::value>::type* = nullptr>
615
+ void read(::std::shared_ptr<T>& v)
616
+ {
617
+ read(&patchHandle<T>, &v);
618
+ }
619
+ #else // C++98 mapping
620
+ template<typename T> void read(IceInternal::Handle<T>& v)
621
+ {
622
+ read(&patchHandle<T>, &v);
623
+ }
624
+ #endif
625
+
626
+ void read(PatchFunc patchFunc, void* patchAddr)
627
+ {
628
+ initEncaps();
629
+ _currentEncaps->decoder->read(patchFunc, patchAddr);
630
+ }
631
+
632
+ // Enum
633
+ Int readEnum(Int);
634
+
635
+ // Exception
636
+ void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)) = ICE_NULLPTR);
637
+
638
+ // Read/write/skip optionals
639
+ void skipOptional(OptionalFormat);
640
+ void skipOptionals();
641
+
642
+ // Skip bytes from the stream
643
+ void skip(size_type size)
644
+ {
645
+ if(i + size > b.end())
646
+ {
647
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
648
+ }
649
+ i += size;
650
+ }
651
+ void skipSize()
652
+ {
653
+ Byte bt;
654
+ read(bt);
655
+ if(static_cast<unsigned char>(bt) == 255)
656
+ {
657
+ skip(4);
658
+ }
659
+ }
660
+
661
+ size_type pos()
662
+ {
663
+ return i - b.begin();
664
+ }
665
+
666
+ void pos(size_type p)
667
+ {
668
+ i = b.begin() + p;
669
+ }
670
+
671
+ InputStream(IceInternal::Instance*, const EncodingVersion&);
672
+ InputStream(IceInternal::Instance*, const EncodingVersion&, IceInternal::Buffer&, bool = false);
673
+
674
+ void initialize(IceInternal::Instance*, const EncodingVersion&);
675
+
676
+ bool readOptImpl(Int, OptionalFormat);
677
+
678
+ private:
679
+
680
+ void initialize(const EncodingVersion&);
681
+
682
+ //
683
+ // String
684
+ //
685
+ bool readConverted(std::string&, Int);
686
+
687
+ //
688
+ // We can't throw these exception from inline functions from within
689
+ // this file, because we cannot include the header with the
690
+ // exceptions. Doing so would screw up the whole include file
691
+ // ordering.
692
+ //
693
+ void throwUnmarshalOutOfBoundsException(const char*, int);
694
+ void throwEncapsulationException(const char*, int);
695
+
696
+ std::string resolveCompactId(int) const;
697
+
698
+ void postUnmarshal(const ValuePtr&) const;
699
+
700
+ class Encaps;
701
+ enum SliceType { NoSlice, ValueSlice, ExceptionSlice };
702
+
703
+ void traceSkipSlice(const std::string&, SliceType) const;
704
+
705
+ ValueFactoryManagerPtr valueFactoryManager() const;
706
+
707
+ LoggerPtr logger() const;
708
+
709
+ #ifdef ICE_CPP11_MAPPING
710
+ std::function<std::string(int)> compactIdResolver() const;
711
+ #else
712
+ CompactIdResolverPtr compactIdResolver() const;
713
+ #endif
714
+
715
+ typedef std::vector<ValuePtr> ValueList;
716
+
717
+ class ICE_API EncapsDecoder : private ::IceUtil::noncopyable
718
+ {
719
+ public:
720
+
721
+ virtual ~EncapsDecoder();
722
+
723
+ virtual void read(PatchFunc, void*) = 0;
724
+ virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory))) = 0;
725
+
726
+ virtual void startInstance(SliceType) = 0;
727
+ virtual SlicedDataPtr endInstance(bool) = 0;
728
+ virtual const std::string& startSlice() = 0;
729
+ virtual void endSlice() = 0;
730
+ virtual void skipSlice() = 0;
731
+
732
+ virtual bool readOptional(Int, OptionalFormat)
733
+ {
734
+ return false;
735
+ }
736
+
737
+ virtual void readPendingValues()
738
+ {
739
+ }
740
+
741
+ protected:
742
+
743
+ EncapsDecoder(InputStream* stream, Encaps* encaps, bool sliceValues, size_t classGraphDepthMax,
744
+ const Ice::ValueFactoryManagerPtr& f) :
745
+ _stream(stream), _encaps(encaps), _sliceValues(sliceValues), _classGraphDepthMax(classGraphDepthMax),
746
+ _classGraphDepth(0), _valueFactoryManager(f), _typeIdIndex(0)
747
+ {
748
+ }
749
+
750
+ std::string readTypeId(bool);
751
+ ValuePtr newInstance(const std::string&);
752
+
753
+ void addPatchEntry(Int, PatchFunc, void*);
754
+ void unmarshal(Int, const ValuePtr&);
755
+
756
+ typedef std::map<Int, ValuePtr> IndexToPtrMap;
757
+ typedef std::map<Int, std::string> TypeIdMap;
758
+
759
+ struct PatchEntry
760
+ {
761
+ PatchFunc patchFunc;
762
+ void* patchAddr;
763
+ size_t classGraphDepth;
764
+ };
765
+ typedef std::vector<PatchEntry> PatchList;
766
+ typedef std::map<Int, PatchList> PatchMap;
767
+
768
+ InputStream* _stream;
769
+ Encaps* _encaps;
770
+ const bool _sliceValues;
771
+ const size_t _classGraphDepthMax;
772
+ size_t _classGraphDepth;
773
+ Ice::ValueFactoryManagerPtr _valueFactoryManager;
774
+
775
+ // Encapsulation attributes for object un-marshalling
776
+ PatchMap _patchMap;
777
+
778
+ private:
779
+
780
+ // Encapsulation attributes for object un-marshalling
781
+ IndexToPtrMap _unmarshaledMap;
782
+ TypeIdMap _typeIdMap;
783
+ Int _typeIdIndex;
784
+ ValueList _valueList;
785
+ };
786
+
787
+ class ICE_API EncapsDecoder10 : public EncapsDecoder
788
+ {
789
+ public:
790
+
791
+ EncapsDecoder10(InputStream* stream, Encaps* encaps, bool sliceValues, size_t classGraphDepthMax,
792
+ const Ice::ValueFactoryManagerPtr& f) :
793
+ EncapsDecoder(stream, encaps, sliceValues, classGraphDepthMax, f),
794
+ _sliceType(NoSlice)
795
+ {
796
+ }
797
+
798
+ virtual void read(PatchFunc, void*);
799
+ virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)));
800
+
801
+ virtual void startInstance(SliceType);
802
+ virtual SlicedDataPtr endInstance(bool);
803
+ virtual const std::string& startSlice();
804
+ virtual void endSlice();
805
+ virtual void skipSlice();
806
+
807
+ virtual void readPendingValues();
808
+
809
+ private:
810
+
811
+ void readInstance();
812
+
813
+ // Instance attributes
814
+ SliceType _sliceType;
815
+ bool _skipFirstSlice;
816
+
817
+ // Slice attributes
818
+ Int _sliceSize;
819
+ std::string _typeId;
820
+ };
821
+
822
+ class ICE_API EncapsDecoder11 : public EncapsDecoder
823
+ {
824
+ public:
825
+
826
+ EncapsDecoder11(InputStream* stream, Encaps* encaps, bool sliceValues, size_t classGraphDepthMax,
827
+ const Ice::ValueFactoryManagerPtr& f) :
828
+ EncapsDecoder(stream, encaps, sliceValues, classGraphDepthMax, f),
829
+ _preAllocatedInstanceData(0), _current(0), _valueIdIndex(1)
830
+ {
831
+ }
832
+
833
+ virtual void read(PatchFunc, void*);
834
+ virtual void throwException(ICE_IN(ICE_DELEGATE(UserExceptionFactory)));
835
+
836
+ virtual void startInstance(SliceType);
837
+ virtual SlicedDataPtr endInstance(bool);
838
+ virtual const std::string& startSlice();
839
+ virtual void endSlice();
840
+ virtual void skipSlice();
841
+
842
+ virtual bool readOptional(Int, OptionalFormat);
843
+
844
+ private:
845
+
846
+ Int readInstance(Int, PatchFunc, void*);
847
+ SlicedDataPtr readSlicedData();
848
+
849
+ struct IndirectPatchEntry
850
+ {
851
+ Int index;
852
+ PatchFunc patchFunc;
853
+ void* patchAddr;
854
+ };
855
+ typedef std::vector<IndirectPatchEntry> IndirectPatchList;
856
+
857
+ typedef std::vector<Int> IndexList;
858
+ typedef std::vector<IndexList> IndexListList;
859
+
860
+ struct InstanceData
861
+ {
862
+ InstanceData(InstanceData* p) : previous(p), next(0)
863
+ {
864
+ if(previous)
865
+ {
866
+ previous->next = this;
867
+ }
868
+ }
869
+
870
+ ~InstanceData()
871
+ {
872
+ if(next)
873
+ {
874
+ delete next;
875
+ }
876
+ }
877
+
878
+ // Instance attributes
879
+ SliceType sliceType;
880
+ bool skipFirstSlice;
881
+ SliceInfoSeq slices; // Preserved slices.
882
+ IndexListList indirectionTables;
883
+
884
+ // Slice attributes
885
+ Byte sliceFlags;
886
+ Int sliceSize;
887
+ std::string typeId;
888
+ int compactId;
889
+ IndirectPatchList indirectPatchList;
890
+
891
+ InstanceData* previous;
892
+ InstanceData* next;
893
+ };
894
+ InstanceData _preAllocatedInstanceData;
895
+ InstanceData* _current;
896
+
897
+ void push(SliceType sliceType)
898
+ {
899
+ if(!_current)
900
+ {
901
+ _current = &_preAllocatedInstanceData;
902
+ }
903
+ else
904
+ {
905
+ _current = _current->next ? _current->next : new InstanceData(_current);
906
+ }
907
+ _current->sliceType = sliceType;
908
+ _current->skipFirstSlice = false;
909
+ }
910
+
911
+ Int _valueIdIndex; // The ID of the next value to unmarshal.
912
+ };
913
+
914
+ class Encaps : private ::IceUtil::noncopyable
915
+ {
916
+ public:
917
+
918
+ Encaps() : start(0), decoder(0), previous(0)
919
+ {
920
+ // Inlined for performance reasons.
921
+ }
922
+ ~Encaps()
923
+ {
924
+ // Inlined for performance reasons.
925
+ delete decoder;
926
+ }
927
+ void reset()
928
+ {
929
+ // Inlined for performance reasons.
930
+ delete decoder;
931
+ decoder = 0;
932
+
933
+ previous = 0;
934
+ }
935
+
936
+ Container::size_type start;
937
+ Int sz;
938
+ EncodingVersion encoding;
939
+
940
+ EncapsDecoder* decoder;
941
+
942
+ Encaps* previous;
943
+ };
944
+
945
+ //
946
+ // Optimization. The instance may not be deleted while a
947
+ // stack-allocated stream still holds it.
948
+ //
949
+ IceInternal::Instance* _instance;
950
+
951
+ //
952
+ // The encoding version to use when there's no encapsulation to
953
+ // read from. This is for example used to read message headers.
954
+ //
955
+ EncodingVersion _encoding;
956
+
957
+ Encaps* _currentEncaps;
958
+
959
+ void initEncaps();
960
+
961
+ Encaps _preAllocatedEncaps;
962
+
963
+ #ifndef ICE_CPP11_MAPPING
964
+ bool _collectObjects;
965
+ #endif
966
+
967
+ bool _traceSlicing;
968
+
969
+ size_t _classGraphDepthMax;
970
+
971
+ void* _closure;
972
+
973
+ bool _sliceValues;
974
+
975
+ int _startSeq;
976
+ int _minSeqSize;
977
+
978
+ ValueFactoryManagerPtr _valueFactoryManager;
979
+ LoggerPtr _logger;
980
+ #ifdef ICE_CPP11_MAPPING
981
+ std::function<std::string(int)> _compactIdResolver;
982
+ #else
983
+ CompactIdResolverPtr _compactIdResolver;
984
+ #endif
985
+
986
+ #ifdef ICE_CPP11_MAPPING
987
+ std::vector<std::function<void()>> _deleters;
988
+ #endif
989
+
990
+ };
991
+
992
+ } // End namespace Ice
993
+
994
+ #endif