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
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -187,22 +187,22 @@ IceRuby_compile(int argc, VALUE* argv, VALUE self)
187
187
  }
188
188
  catch(const std::exception& ex)
189
189
  {
190
- getErrorStream() << argSeq[0] << ": error:" << ex.what() << endl;
190
+ cerr << argSeq[0] << ": error:" << ex.what() << endl;
191
191
  rc = EXIT_FAILURE;
192
192
  }
193
193
  catch(const std::string& msg)
194
194
  {
195
- getErrorStream() << argSeq[0] << ": error:" << msg << endl;
195
+ cerr << argSeq[0] << ": error:" << msg << endl;
196
196
  rc = EXIT_FAILURE;
197
197
  }
198
198
  catch(const char* msg)
199
199
  {
200
- getErrorStream() << argSeq[0] << ": error:" << msg << endl;
200
+ cerr << argSeq[0] << ": error:" << msg << endl;
201
201
  rc = EXIT_FAILURE;
202
202
  }
203
203
  catch(...)
204
204
  {
205
- getErrorStream() << argSeq[0] << ": error:" << "unknown exception" << endl;
205
+ cerr << argSeq[0] << ": error:" << "unknown exception" << endl;
206
206
  rc = EXIT_FAILURE;
207
207
  }
208
208
  return INT2FIX(rc);
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -13,7 +13,9 @@
13
13
  #include <IceUtil/InputUtil.h>
14
14
  #include <IceUtil/OutputUtil.h>
15
15
  #include <IceUtil/ScopedArray.h>
16
+ #include <Ice/InputStream.h>
16
17
  #include <Ice/LocalException.h>
18
+ #include <Ice/OutputStream.h>
17
19
  #include <Ice/SlicedData.h>
18
20
  #include <list>
19
21
  #include <limits>
@@ -63,22 +65,6 @@ public:
63
65
  };
64
66
  static InfoMapDestroyer infoMapDestroyer;
65
67
 
66
- class ReadObjectCallback : public Ice::ReadObjectCallback
67
- {
68
- public:
69
-
70
- ReadObjectCallback(const ClassInfoPtr&, const UnmarshalCallbackPtr&, VALUE, void*);
71
-
72
- virtual void invoke(const Ice::ObjectPtr&);
73
-
74
- private:
75
-
76
- ClassInfoPtr _info;
77
- UnmarshalCallbackPtr _cb;
78
- VALUE _target;
79
- void* _closure;
80
- };
81
-
82
68
  string
83
69
  escapeString(const string& str)
84
70
  {
@@ -184,16 +170,16 @@ addExceptionInfo(const string& id, const ExceptionInfoPtr& info)
184
170
  }
185
171
 
186
172
  //
187
- // SlicedDataUtil implementation
173
+ // StreamUtil implementation
188
174
  //
189
- VALUE IceRuby::SlicedDataUtil::_slicedDataType = Qnil;
190
- VALUE IceRuby::SlicedDataUtil::_sliceInfoType = Qnil;
175
+ VALUE IceRuby::StreamUtil::_slicedDataType = Qnil;
176
+ VALUE IceRuby::StreamUtil::_sliceInfoType = Qnil;
191
177
 
192
- IceRuby::SlicedDataUtil::SlicedDataUtil()
178
+ IceRuby::StreamUtil::StreamUtil()
193
179
  {
194
180
  }
195
181
 
196
- IceRuby::SlicedDataUtil::~SlicedDataUtil()
182
+ IceRuby::StreamUtil::~StreamUtil()
197
183
  {
198
184
  //
199
185
  // Make sure we break any cycles among the ObjectReaders in preserved slices.
@@ -204,35 +190,41 @@ IceRuby::SlicedDataUtil::~SlicedDataUtil()
204
190
  for(Ice::SliceInfoSeq::const_iterator q = slicedData->slices.begin(); q != slicedData->slices.end(); ++q)
205
191
  {
206
192
  //
207
- // Don't just call (*q)->objects.clear(), as releasing references
208
- // to the objects could have unexpected side effects. We exchange
193
+ // Don't just call (*q)->instances.clear(), as releasing references
194
+ // to the instances could have unexpected side effects. We exchange
209
195
  // the vector into a temporary and then let the temporary fall out
210
196
  // of scope.
211
197
  //
212
198
  vector<Ice::ObjectPtr> tmp;
213
- tmp.swap((*q)->objects);
199
+ tmp.swap((*q)->instances);
214
200
  }
215
201
  }
216
202
  }
217
203
 
218
204
  void
219
- IceRuby::SlicedDataUtil::add(const ObjectReaderPtr& reader)
205
+ IceRuby::StreamUtil::add(const ReadObjectCallbackPtr& callback)
206
+ {
207
+ _callbacks.push_back(callback);
208
+ }
209
+
210
+ void
211
+ IceRuby::StreamUtil::add(const ObjectReaderPtr& reader)
220
212
  {
221
213
  assert(reader->getSlicedData());
222
214
  _readers.insert(reader);
223
215
  }
224
216
 
225
217
  void
226
- IceRuby::SlicedDataUtil::update()
218
+ IceRuby::StreamUtil::updateSlicedData()
227
219
  {
228
220
  for(set<ObjectReaderPtr>::iterator p = _readers.begin(); p != _readers.end(); ++p)
229
221
  {
230
- setMember((*p)->getObject(), (*p)->getSlicedData());
222
+ setSlicedDataMember((*p)->getObject(), (*p)->getSlicedData());
231
223
  }
232
224
  }
233
225
 
234
226
  void
235
- IceRuby::SlicedDataUtil::setMember(VALUE obj, const Ice::SlicedDataPtr& slicedData)
227
+ IceRuby::StreamUtil::setSlicedDataMember(VALUE obj, const Ice::SlicedDataPtr& slicedData)
236
228
  {
237
229
  //
238
230
  // Create a Ruby equivalent of the SlicedData object.
@@ -288,23 +280,23 @@ IceRuby::SlicedDataUtil::setMember(VALUE obj, const Ice::SlicedDataPtr& slicedDa
288
280
  callRuby(rb_iv_set, slice, "@bytes", bytes);
289
281
 
290
282
  //
291
- // objects
283
+ // instances
292
284
  //
293
- volatile VALUE objects = createArray((*p)->objects.size());
294
- callRuby(rb_iv_set, slice, "@objects", objects);
285
+ volatile VALUE instances = createArray((*p)->instances.size());
286
+ callRuby(rb_iv_set, slice, "@instances", instances);
295
287
 
296
288
  int j = 0;
297
- for(vector<Ice::ObjectPtr>::iterator q = (*p)->objects.begin(); q != (*p)->objects.end(); ++q)
289
+ for(vector<Ice::ObjectPtr>::iterator q = (*p)->instances.begin(); q != (*p)->instances.end(); ++q)
298
290
  {
299
291
  //
300
- // Each element in the objects list is an instance of ObjectReader that wraps a Ruby object.
292
+ // Each element in the instances list is an instance of ObjectReader that wraps a Ruby object.
301
293
  //
302
294
  assert(*q);
303
295
  ObjectReaderPtr r = ObjectReaderPtr::dynamicCast(*q);
304
296
  assert(r);
305
297
  VALUE o = r->getObject();
306
298
  assert(o != Qnil); // Should be non-nil.
307
- RARRAY_ASET(objects, j, o);
299
+ RARRAY_ASET(instances, j, o);
308
300
  j++;
309
301
  }
310
302
 
@@ -327,7 +319,7 @@ IceRuby::SlicedDataUtil::setMember(VALUE obj, const Ice::SlicedDataPtr& slicedDa
327
319
  // named _ice_slicedData which is an instance of the Ruby class Ice::SlicedData.
328
320
  //
329
321
  Ice::SlicedDataPtr
330
- IceRuby::SlicedDataUtil::getMember(VALUE obj, ObjectMap* objectMap)
322
+ IceRuby::StreamUtil::getSlicedDataMember(VALUE obj, ObjectMap* objectMap)
331
323
  {
332
324
  Ice::SlicedDataPtr slicedData;
333
325
 
@@ -369,19 +361,19 @@ IceRuby::SlicedDataUtil::getMember(VALUE obj, ObjectMap* objectMap)
369
361
  info->bytes.swap(vtmp);
370
362
  }
371
363
 
372
- volatile VALUE objects = callRuby(rb_iv_get, s, "@objects");
373
- assert(TYPE(objects) == T_ARRAY);
374
- long osz = RARRAY_LEN(objects);
364
+ volatile VALUE instances = callRuby(rb_iv_get, s, "@instances");
365
+ assert(TYPE(instances) == T_ARRAY);
366
+ long osz = RARRAY_LEN(instances);
375
367
  for(long j = 0; j < osz; ++j)
376
368
  {
377
- VALUE o = RARRAY_AREF(objects, j);
369
+ VALUE o = RARRAY_AREF(instances, j);
378
370
 
379
371
  Ice::ObjectPtr writer;
380
372
 
381
373
  ObjectMap::iterator i = objectMap->find(o);
382
374
  if(i == objectMap->end())
383
375
  {
384
- writer = new ObjectWriter(o, objectMap);
376
+ writer = new ObjectWriter(o, objectMap, 0);
385
377
  objectMap->insert(ObjectMap::value_type(o, writer));
386
378
  }
387
379
  else
@@ -389,7 +381,7 @@ IceRuby::SlicedDataUtil::getMember(VALUE obj, ObjectMap* objectMap)
389
381
  writer = i->second;
390
382
  }
391
383
 
392
- info->objects.push_back(writer);
384
+ info->instances.push_back(writer);
393
385
  }
394
386
 
395
387
  volatile VALUE hasOptionalMembers = callRuby(rb_iv_get, s, "@hasOptionalMembers");
@@ -546,7 +538,7 @@ IceRuby::PrimitiveInfo::optionalFormat() const
546
538
  }
547
539
 
548
540
  void
549
- IceRuby::PrimitiveInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*, bool)
541
+ IceRuby::PrimitiveInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap*, bool)
550
542
  {
551
543
  switch(kind)
552
544
  {
@@ -603,8 +595,8 @@ IceRuby::PrimitiveInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectM
603
595
  #if defined(_MSC_VER) && (_MSC_VER <= 1700)
604
596
  _finite(val) &&
605
597
  #else
606
- isfinite(d) &&
607
- #endif
598
+ isfinite(d) &&
599
+ #endif
608
600
  (d > numeric_limits<float>::max() || d < -numeric_limits<float>::max()))
609
601
  {
610
602
  throw RubyException(rb_eTypeError, "value is out of range for a float");
@@ -633,7 +625,7 @@ IceRuby::PrimitiveInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectM
633
625
  }
634
626
 
635
627
  void
636
- IceRuby::PrimitiveInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
628
+ IceRuby::PrimitiveInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target,
637
629
  void* closure, bool)
638
630
  {
639
631
  volatile VALUE val = Qnil;
@@ -822,7 +814,7 @@ IceRuby::EnumInfo::optionalFormat() const
822
814
  }
823
815
 
824
816
  void
825
- IceRuby::EnumInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*, bool)
817
+ IceRuby::EnumInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap*, bool)
826
818
  {
827
819
  assert(callRuby(rb_obj_is_instance_of, p, rubyClass) == Qtrue); // validate() should have caught this.
828
820
 
@@ -840,7 +832,7 @@ IceRuby::EnumInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*,
840
832
  }
841
833
 
842
834
  void
843
- IceRuby::EnumInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target, void* closure,
835
+ IceRuby::EnumInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target, void* closure,
844
836
  bool)
845
837
  {
846
838
  Ice::Int val = is->readEnum(maxValue);
@@ -888,7 +880,7 @@ convertDataMembers(VALUE members, DataMemberList& reqMembers, DataMemberList& op
888
880
  {
889
881
  volatile VALUE m = callRuby(rb_check_array_type, RARRAY_AREF(arr, i));
890
882
  assert(!NIL_P(m));
891
- assert(RARRAY_LEN(m) == (allowOptional ? 4 : 2));
883
+ assert(RARRAY_LEN(m) == allowOptional ? 4 : 2);
892
884
 
893
885
  DataMemberPtr member = new DataMember;
894
886
 
@@ -1003,7 +995,7 @@ IceRuby::StructInfo::usesClasses() const
1003
995
  }
1004
996
 
1005
997
  void
1006
- IceRuby::StructInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool optional)
998
+ IceRuby::StructInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap* objectMap, bool optional)
1007
999
  {
1008
1000
  assert(NIL_P(p) || callRuby(rb_obj_is_kind_of, p, rubyClass) == Qtrue); // validate() should have caught this.
1009
1001
 
@@ -1049,7 +1041,7 @@ IceRuby::StructInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*
1049
1041
  }
1050
1042
 
1051
1043
  void
1052
- IceRuby::StructInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
1044
+ IceRuby::StructInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target,
1053
1045
  void* closure, bool optional)
1054
1046
  {
1055
1047
  volatile VALUE obj = callRuby(rb_class_new_instance, 0, static_cast<VALUE*>(0), rubyClass);
@@ -1186,7 +1178,7 @@ IceRuby::SequenceInfo::usesClasses() const
1186
1178
  }
1187
1179
 
1188
1180
  void
1189
- IceRuby::SequenceInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool optional)
1181
+ IceRuby::SequenceInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap* objectMap, bool optional)
1190
1182
  {
1191
1183
  PrimitiveInfoPtr pi = PrimitiveInfoPtr::dynamicCast(elementType);
1192
1184
 
@@ -1264,7 +1256,7 @@ IceRuby::SequenceInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMa
1264
1256
  }
1265
1257
 
1266
1258
  void
1267
- IceRuby::SequenceInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
1259
+ IceRuby::SequenceInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target,
1268
1260
  void* closure, bool optional)
1269
1261
  {
1270
1262
  if(optional)
@@ -1363,7 +1355,7 @@ IceRuby::SequenceInfo::destroy()
1363
1355
  }
1364
1356
 
1365
1357
  void
1366
- IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALUE p, const Ice::OutputStreamPtr& os)
1358
+ IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALUE p, Ice::OutputStream* os)
1367
1359
  {
1368
1360
  volatile VALUE arr = Qnil;
1369
1361
  volatile VALUE str = Qnil;
@@ -1525,14 +1517,14 @@ IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALU
1525
1517
  {
1526
1518
  seq[i] = getString(RARRAY_AREF(arr, i));
1527
1519
  }
1528
- os->write(seq, true);
1520
+ os->write(&seq[0], &seq[0] + seq.size());
1529
1521
  break;
1530
1522
  }
1531
1523
  }
1532
1524
  }
1533
1525
 
1534
1526
  void
1535
- IceRuby::SequenceInfo::unmarshalPrimitiveSequence(const PrimitiveInfoPtr& pi, const Ice::InputStreamPtr& is,
1527
+ IceRuby::SequenceInfo::unmarshalPrimitiveSequence(const PrimitiveInfoPtr& pi, Ice::InputStream* is,
1536
1528
  const UnmarshalCallbackPtr& cb, VALUE target, void* closure)
1537
1529
  {
1538
1530
  volatile VALUE result = Qnil;
@@ -1729,7 +1721,7 @@ namespace
1729
1721
  {
1730
1722
  struct DictionaryMarshalIterator : public IceRuby::HashIterator
1731
1723
  {
1732
- DictionaryMarshalIterator(const IceRuby::DictionaryInfoPtr& d, const Ice::OutputStreamPtr o, IceRuby::ObjectMap* m)
1724
+ DictionaryMarshalIterator(const IceRuby::DictionaryInfoPtr& d, Ice::OutputStream* o, IceRuby::ObjectMap* m)
1733
1725
  : dict(d), os(o), objectMap(m)
1734
1726
  {
1735
1727
  }
@@ -1740,13 +1732,13 @@ struct DictionaryMarshalIterator : public IceRuby::HashIterator
1740
1732
  }
1741
1733
 
1742
1734
  IceRuby::DictionaryInfoPtr dict;
1743
- Ice::OutputStreamPtr os;
1735
+ Ice::OutputStream* os;
1744
1736
  IceRuby::ObjectMap* objectMap;
1745
1737
  };
1746
1738
  }
1747
1739
 
1748
1740
  void
1749
- IceRuby::DictionaryInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool optional)
1741
+ IceRuby::DictionaryInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap* objectMap, bool optional)
1750
1742
  {
1751
1743
  volatile VALUE hash = Qnil;
1752
1744
 
@@ -1799,7 +1791,7 @@ IceRuby::DictionaryInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, Object
1799
1791
  }
1800
1792
 
1801
1793
  void
1802
- IceRuby::DictionaryInfo::marshalElement(VALUE key, VALUE value, const Ice::OutputStreamPtr& os, ObjectMap* objectMap)
1794
+ IceRuby::DictionaryInfo::marshalElement(VALUE key, VALUE value, Ice::OutputStream* os, ObjectMap* objectMap)
1803
1795
  {
1804
1796
  if(!keyType->validate(key))
1805
1797
  {
@@ -1816,7 +1808,7 @@ IceRuby::DictionaryInfo::marshalElement(VALUE key, VALUE value, const Ice::Outpu
1816
1808
  }
1817
1809
 
1818
1810
  void
1819
- IceRuby::DictionaryInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
1811
+ IceRuby::DictionaryInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target,
1820
1812
  void* closure, bool optional)
1821
1813
  {
1822
1814
  if(optional)
@@ -1952,7 +1944,7 @@ IceRuby::DictionaryInfo::destroy()
1952
1944
  // ClassInfo implementation.
1953
1945
  //
1954
1946
  IceRuby::ClassInfo::ClassInfo(VALUE ident, bool loc) :
1955
- compactId(-1), isBase(false), isLocal(loc), isAbstract(false), preserve(false), rubyClass(Qnil), typeObj(Qnil),
1947
+ compactId(-1), isBase(false), isLocal(loc), preserve(false), interface(false), rubyClass(Qnil), typeObj(Qnil),
1956
1948
  defined(false)
1957
1949
  {
1958
1950
  const_cast<string&>(id) = getString(ident);
@@ -1968,7 +1960,7 @@ IceRuby::ClassInfo::ClassInfo(VALUE ident, bool loc) :
1968
1960
  }
1969
1961
 
1970
1962
  void
1971
- IceRuby::ClassInfo::define(VALUE t, VALUE compact, VALUE abstr, VALUE pres, VALUE b, VALUE i, VALUE m)
1963
+ IceRuby::ClassInfo::define(VALUE t, VALUE compact, VALUE pres, VALUE intf, VALUE b, VALUE m)
1972
1964
  {
1973
1965
  if(!NIL_P(b))
1974
1966
  {
@@ -1977,23 +1969,9 @@ IceRuby::ClassInfo::define(VALUE t, VALUE compact, VALUE abstr, VALUE pres, VALU
1977
1969
  }
1978
1970
 
1979
1971
  const_cast<Ice::Int&>(compactId) = static_cast<Ice::Int>(getInteger(compact));
1980
- const_cast<bool&>(isAbstract) = RTEST(abstr);
1981
1972
  const_cast<bool&>(preserve) = RTEST(pres);
1982
-
1983
- long n;
1984
- volatile VALUE arr;
1985
-
1986
- arr = callRuby(rb_check_array_type, i);
1987
- assert(!NIL_P(arr));
1988
- for(n = 0; n < RARRAY_LEN(arr); ++n)
1989
- {
1990
- ClassInfoPtr iface = ClassInfoPtr::dynamicCast(getType(RARRAY_AREF(arr, n)));
1991
- assert(iface);
1992
- const_cast<ClassInfoList&>(interfaces).push_back(iface);
1993
- }
1994
-
1973
+ const_cast<bool&>(interface) = RTEST(intf);
1995
1974
  convertDataMembers(m, const_cast<DataMemberList&>(members), const_cast<DataMemberList&>(optionalMembers), true);
1996
-
1997
1975
  const_cast<VALUE&>(rubyClass) = t;
1998
1976
  const_cast<bool&>(defined) = true;
1999
1977
  }
@@ -2042,7 +2020,7 @@ IceRuby::ClassInfo::validate(VALUE val)
2042
2020
  assert(!NIL_P(type));
2043
2021
  ClassInfoPtr info = ClassInfoPtr::dynamicCast(getType(type));
2044
2022
  assert(info);
2045
- return info->isA(this);
2023
+ return this->interface || info->isA(this);
2046
2024
  }
2047
2025
 
2048
2026
  bool
@@ -2070,7 +2048,7 @@ IceRuby::ClassInfo::usesClasses() const
2070
2048
  }
2071
2049
 
2072
2050
  void
2073
- IceRuby::ClassInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool)
2051
+ IceRuby::ClassInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap* objectMap, bool)
2074
2052
  {
2075
2053
  if(!defined)
2076
2054
  {
@@ -2079,7 +2057,8 @@ IceRuby::ClassInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*
2079
2057
 
2080
2058
  if(NIL_P(p))
2081
2059
  {
2082
- os->writeObject(0);
2060
+ Ice::ObjectPtr nil;
2061
+ os->write(nil);
2083
2062
  return;
2084
2063
  }
2085
2064
 
@@ -2094,7 +2073,7 @@ IceRuby::ClassInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*
2094
2073
  ObjectMap::iterator q = objectMap->find(p);
2095
2074
  if(q == objectMap->end())
2096
2075
  {
2097
- writer = new ObjectWriter(p, objectMap);
2076
+ writer = new ObjectWriter(p, objectMap, this);
2098
2077
  objectMap->insert(ObjectMap::value_type(p, writer));
2099
2078
  }
2100
2079
  else
@@ -2105,19 +2084,40 @@ IceRuby::ClassInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*
2105
2084
  //
2106
2085
  // Give the writer to the stream. The stream will eventually call write() on it.
2107
2086
  //
2108
- os->writeObject(writer);
2087
+ os->write(writer);
2109
2088
  }
2110
2089
 
2090
+ namespace
2091
+ {
2092
+
2111
2093
  void
2112
- IceRuby::ClassInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
2113
- void* closure, bool)
2094
+ patchObject(void* addr, const Ice::ObjectPtr& v)
2095
+ {
2096
+ ReadObjectCallback* cb = static_cast<ReadObjectCallback*>(addr);
2097
+ assert(cb);
2098
+ cb->invoke(v);
2099
+ }
2100
+
2101
+ }
2102
+
2103
+ void
2104
+ IceRuby::ClassInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target, void* closure, bool)
2114
2105
  {
2115
2106
  if(!defined)
2116
2107
  {
2117
2108
  throw RubyException(rb_eRuntimeError, "class %s is declared but not defined", id.c_str());
2118
2109
  }
2119
2110
 
2120
- is->readObject(new ReadObjectCallback(this, cb, target, closure));
2111
+ //
2112
+ // This callback is notified when the Slice value is actually read. The StreamUtil object
2113
+ // attached to the stream keeps a reference to the callback object to ensure it lives
2114
+ // long enough.
2115
+ //
2116
+ ReadObjectCallbackPtr rocb = new ReadObjectCallback(this, cb, target, closure);
2117
+ StreamUtil* util = reinterpret_cast<StreamUtil*>(is->getClosure());
2118
+ assert(util);
2119
+ util->add(rocb);
2120
+ is->read(patchObject, rocb.get());
2121
2121
  }
2122
2122
 
2123
2123
  void
@@ -2190,7 +2190,6 @@ void
2190
2190
  IceRuby::ClassInfo::destroy()
2191
2191
  {
2192
2192
  const_cast<ClassInfoPtr&>(base) = 0;
2193
- const_cast<ClassInfoList&>(interfaces).clear();
2194
2193
  if(!members.empty())
2195
2194
  {
2196
2195
  DataMemberList ml = members;
@@ -2264,40 +2263,40 @@ IceRuby::ClassInfo::isA(const ClassInfoPtr& info)
2264
2263
  {
2265
2264
  return true;
2266
2265
  }
2267
- else if(base && base->isA(info))
2268
- {
2269
- return true;
2270
- }
2271
- else if(!interfaces.empty())
2272
- {
2273
- for(ClassInfoList::const_iterator p = interfaces.begin(); p != interfaces.end(); ++p)
2274
- {
2275
- if((*p)->isA(info))
2276
- {
2277
- return true;
2278
- }
2279
- }
2280
- }
2281
2266
 
2282
- return false;
2267
+ return base && base->isA(info);
2283
2268
  }
2284
2269
 
2285
2270
  //
2286
2271
  // ProxyInfo implementation.
2287
2272
  //
2288
2273
  IceRuby::ProxyInfo::ProxyInfo(VALUE ident) :
2289
- rubyClass(Qnil), typeObj(Qnil)
2274
+ isBase(false), rubyClass(Qnil), typeObj(Qnil)
2290
2275
  {
2291
2276
  const_cast<string&>(id) = getString(ident);
2277
+ const_cast<bool&>(isBase) = id == "::Ice::Object";
2292
2278
  const_cast<VALUE&>(typeObj) = createType(this);
2293
2279
  }
2294
2280
 
2295
2281
  void
2296
- IceRuby::ProxyInfo::define(VALUE t, VALUE i)
2282
+ IceRuby::ProxyInfo::define(VALUE t, VALUE b, VALUE i)
2297
2283
  {
2284
+ if(!NIL_P(b))
2285
+ {
2286
+ const_cast<ProxyInfoPtr&>(base) = ProxyInfoPtr::dynamicCast(getType(b));
2287
+ assert(base);
2288
+ }
2289
+
2290
+ volatile VALUE arr = callRuby(rb_check_array_type, i);
2291
+ assert(!NIL_P(arr));
2292
+ for(int n = 0; n < RARRAY_LEN(arr); ++n)
2293
+ {
2294
+ ProxyInfoPtr iface = ProxyInfoPtr::dynamicCast(getType(RARRAY_AREF(arr, n)));
2295
+ assert(iface);
2296
+ const_cast<ProxyInfoList&>(interfaces).push_back(iface);
2297
+ }
2298
+
2298
2299
  const_cast<VALUE&>(rubyClass) = t;
2299
- const_cast<ClassInfoPtr&>(classInfo) = ClassInfoPtr::dynamicCast(getType(i));
2300
- assert(classInfo);
2301
2300
  }
2302
2301
 
2303
2302
  string
@@ -2320,7 +2319,7 @@ IceRuby::ProxyInfo::validate(VALUE val)
2320
2319
  assert(!NIL_P(type));
2321
2320
  ProxyInfoPtr info = ProxyInfoPtr::dynamicCast(getType(type));
2322
2321
  assert(info);
2323
- return info->classInfo->isA(classInfo);
2322
+ return info->isA(this);
2324
2323
  }
2325
2324
  return true;
2326
2325
  }
@@ -2344,7 +2343,7 @@ IceRuby::ProxyInfo::optionalFormat() const
2344
2343
  }
2345
2344
 
2346
2345
  void
2347
- IceRuby::ProxyInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*, bool optional)
2346
+ IceRuby::ProxyInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap*, bool optional)
2348
2347
  {
2349
2348
  Ice::OutputStream::size_type sizePos = -1;
2350
2349
  if(optional)
@@ -2369,7 +2368,7 @@ IceRuby::ProxyInfo::marshal(VALUE p, const Ice::OutputStreamPtr& os, ObjectMap*,
2369
2368
  }
2370
2369
 
2371
2370
  void
2372
- IceRuby::ProxyInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb, VALUE target,
2371
+ IceRuby::ProxyInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb, VALUE target,
2373
2372
  void* closure, bool optional)
2374
2373
  {
2375
2374
  if(optional)
@@ -2414,28 +2413,63 @@ IceRuby::ProxyInfo::print(VALUE value, IceUtilInternal::Output& out, PrintObject
2414
2413
  }
2415
2414
  }
2416
2415
 
2416
+ bool
2417
+ IceRuby::ProxyInfo::isA(const ProxyInfoPtr& info)
2418
+ {
2419
+ //
2420
+ // Return true if this class has an is-a relationship with info.
2421
+ //
2422
+ if(info->isBase)
2423
+ {
2424
+ return true;
2425
+ }
2426
+ else if(this == info.get())
2427
+ {
2428
+ return true;
2429
+ }
2430
+ else if(base && base->isA(info))
2431
+ {
2432
+ return true;
2433
+ }
2434
+ else if(!interfaces.empty())
2435
+ {
2436
+ for(ProxyInfoList::const_iterator p = interfaces.begin(); p != interfaces.end(); ++p)
2437
+ {
2438
+ if((*p)->isA(info))
2439
+ {
2440
+ return true;
2441
+ }
2442
+ }
2443
+ }
2444
+
2445
+ return false;
2446
+ }
2447
+
2417
2448
  void
2418
2449
  IceRuby::ProxyInfo::destroy()
2419
2450
  {
2420
- const_cast<ClassInfoPtr&>(classInfo) = 0;
2451
+ const_cast<ProxyInfoPtr&>(base) = 0;
2452
+ const_cast<ProxyInfoList&>(interfaces).clear();
2421
2453
  }
2422
2454
 
2423
2455
  //
2424
2456
  // ObjectWriter implementation.
2425
2457
  //
2426
- IceRuby::ObjectWriter::ObjectWriter(VALUE object, ObjectMap* objectMap) :
2427
- _object(object), _map(objectMap)
2458
+ IceRuby::ObjectWriter::ObjectWriter(VALUE object, ObjectMap* objectMap, const ClassInfoPtr& formal) :
2459
+ _object(object), _map(objectMap), _formal(formal)
2428
2460
  {
2429
2461
  //
2430
2462
  // Mark the object as in use for the lifetime of this wrapper.
2431
2463
  //
2432
2464
  rb_gc_register_address(&_object);
2433
-
2434
- volatile VALUE cls = CLASS_OF(object);
2435
- volatile VALUE type = callRuby(rb_const_get, cls, rb_intern("ICE_TYPE"));
2436
- assert(!NIL_P(type));
2437
- _info = ClassInfoPtr::dynamicCast(getType(type));
2438
- assert(_info);
2465
+ if(!_formal || !_formal->interface)
2466
+ {
2467
+ volatile VALUE cls = CLASS_OF(object);
2468
+ volatile VALUE type = callRuby(rb_const_get, cls, rb_intern("ICE_TYPE"));
2469
+ assert(!NIL_P(type));
2470
+ _info = ClassInfoPtr::dynamicCast(getType(type));
2471
+ assert(_info);
2472
+ }
2439
2473
  }
2440
2474
 
2441
2475
  IceRuby::ObjectWriter::~ObjectWriter()
@@ -2454,41 +2488,55 @@ IceRuby::ObjectWriter::ice_preMarshal()
2454
2488
  }
2455
2489
 
2456
2490
  void
2457
- IceRuby::ObjectWriter::write(const Ice::OutputStreamPtr& os) const
2491
+ IceRuby::ObjectWriter::_iceWrite(Ice::OutputStream* os) const
2458
2492
  {
2459
2493
  Ice::SlicedDataPtr slicedData;
2460
2494
 
2461
- if(_info->preserve)
2495
+ if(_info && _info->preserve)
2462
2496
  {
2463
2497
  //
2464
2498
  // Retrieve the SlicedData object that we stored as a hidden member of the Ruby object.
2465
2499
  //
2466
- slicedData = SlicedDataUtil::getMember(_object, const_cast<ObjectMap*>(_map));
2500
+ slicedData = StreamUtil::getSlicedDataMember(_object, const_cast<ObjectMap*>(_map));
2467
2501
  }
2468
2502
 
2469
- os->startObject(slicedData);
2470
-
2471
- if(_info->id != "::Ice::UnknownSlicedObject")
2503
+ os->startValue(slicedData);
2504
+ if(_formal && _formal->interface)
2472
2505
  {
2473
- ClassInfoPtr info = _info;
2474
- while(info)
2506
+ ID op = rb_intern("ice_id");
2507
+ string id = getString(callRuby(rb_funcall, _object, op, 0));
2508
+ os->startSlice(id, -1, true);
2509
+ os->endSlice();
2510
+ }
2511
+ else
2512
+ {
2513
+ if(_info->id != "::Ice::UnknownSlicedValue")
2475
2514
  {
2476
- os->startSlice(info->id, info->compactId, !info->base);
2515
+ ClassInfoPtr info = _info;
2516
+ while(info)
2517
+ {
2518
+ os->startSlice(info->id, info->compactId, !info->base);
2477
2519
 
2478
- writeMembers(os, info->members);
2479
- writeMembers(os, info->optionalMembers); // The optional members have already been sorted by tag.
2520
+ writeMembers(os, info->members);
2521
+ writeMembers(os, info->optionalMembers); // The optional members have already been sorted by tag.
2480
2522
 
2481
- os->endSlice();
2523
+ os->endSlice();
2482
2524
 
2483
- info = info->base;
2525
+ info = info->base;
2526
+ }
2484
2527
  }
2485
2528
  }
2529
+ os->endValue();
2530
+ }
2486
2531
 
2487
- os->endObject();
2532
+ void
2533
+ IceRuby::ObjectWriter::_iceRead(Ice::InputStream*)
2534
+ {
2535
+ assert(false);
2488
2536
  }
2489
2537
 
2490
2538
  void
2491
- IceRuby::ObjectWriter::writeMembers(const Ice::OutputStreamPtr& os, const DataMemberList& members) const
2539
+ IceRuby::ObjectWriter::writeMembers(Ice::OutputStream* os, const DataMemberList& members) const
2492
2540
  {
2493
2541
  for(DataMemberList::const_iterator q = members.begin(); q != members.end(); ++q)
2494
2542
  {
@@ -2539,11 +2587,17 @@ IceRuby::ObjectReader::ice_postUnmarshal()
2539
2587
  }
2540
2588
 
2541
2589
  void
2542
- IceRuby::ObjectReader::read(const Ice::InputStreamPtr& is)
2590
+ IceRuby::ObjectReader::_iceWrite(Ice::OutputStream*) const
2543
2591
  {
2544
- is->startObject();
2592
+ assert(false);
2593
+ }
2545
2594
 
2546
- const bool unknown = _info->id == "::Ice::UnknownSlicedObject";
2595
+ void
2596
+ IceRuby::ObjectReader::_iceRead(Ice::InputStream* is)
2597
+ {
2598
+ is->startValue();
2599
+
2600
+ const bool unknown = _info->id == "::Ice::UnknownSlicedValue";
2547
2601
 
2548
2602
  //
2549
2603
  // Unmarshal the slices of a user-defined class.
@@ -2585,16 +2639,16 @@ IceRuby::ObjectReader::read(const Ice::InputStreamPtr& is)
2585
2639
  }
2586
2640
  }
2587
2641
 
2588
- _slicedData = is->endObject(_info->preserve);
2642
+ _slicedData = is->endValue(_info->preserve);
2589
2643
 
2590
2644
  if(_slicedData)
2591
2645
  {
2592
- SlicedDataUtil* util = reinterpret_cast<SlicedDataUtil*>(is->closure());
2646
+ StreamUtil* util = reinterpret_cast<StreamUtil*>(is->getClosure());
2593
2647
  assert(util);
2594
2648
  util->add(this);
2595
2649
 
2596
2650
  //
2597
- // Define the "unknownTypeId" member for an instance of UnknownSlicedObject.
2651
+ // Define the "unknownTypeId" member for an instance of UnknownSlicedValue.
2598
2652
  //
2599
2653
  if(unknown)
2600
2654
  {
@@ -2666,7 +2720,7 @@ IceRuby::ReadObjectCallback::invoke(const Ice::ObjectPtr& p)
2666
2720
  // Verify that the unmarshaled object is compatible with the formal type.
2667
2721
  //
2668
2722
  volatile VALUE obj = reader->getObject();
2669
- if(!_info->validate(obj))
2723
+ if(!_info->interface && !_info->validate(obj))
2670
2724
  {
2671
2725
  Ice::UnexpectedObjectException ex(__FILE__, __LINE__);
2672
2726
  ex.reason = "unmarshaled object is not an instance of " + _info->id;
@@ -2687,7 +2741,7 @@ IceRuby::ReadObjectCallback::invoke(const Ice::ObjectPtr& p)
2687
2741
  // ExceptionInfo implementation.
2688
2742
  //
2689
2743
  VALUE
2690
- IceRuby::ExceptionInfo::unmarshal(const Ice::InputStreamPtr& is)
2744
+ IceRuby::ExceptionInfo::unmarshal(Ice::InputStream* is)
2691
2745
  {
2692
2746
  volatile VALUE obj = callRuby(rb_class_new_instance, 0, static_cast<VALUE*>(0), rubyClass);
2693
2747
 
@@ -2797,8 +2851,8 @@ IceRuby::ExceptionInfo::printMembers(VALUE value, IceUtilInternal::Output& out,
2797
2851
  //
2798
2852
  // ExceptionReader implementation.
2799
2853
  //
2800
- IceRuby::ExceptionReader::ExceptionReader(const Ice::CommunicatorPtr& communicator, const ExceptionInfoPtr& info) :
2801
- Ice::UserExceptionReader(communicator), _info(info)
2854
+ IceRuby::ExceptionReader::ExceptionReader(const ExceptionInfoPtr& info) :
2855
+ _info(info)
2802
2856
  {
2803
2857
  }
2804
2858
 
@@ -2807,34 +2861,20 @@ IceRuby::ExceptionReader::~ExceptionReader()
2807
2861
  {
2808
2862
  }
2809
2863
 
2810
- void
2811
- IceRuby::ExceptionReader::read(const Ice::InputStreamPtr& is) const
2812
- {
2813
- is->startException();
2814
-
2815
- const_cast<VALUE&>(_ex) = _info->unmarshal(is);
2816
-
2817
- const_cast<Ice::SlicedDataPtr&>(_slicedData) = is->endException(_info->preserve);
2818
- }
2819
-
2820
- bool
2821
- IceRuby::ExceptionReader::usesClasses() const
2822
- {
2823
- return _info->usesClasses;
2824
- }
2825
-
2826
2864
  string
2827
- IceRuby::ExceptionReader::ice_name() const
2865
+ IceRuby::ExceptionReader::ice_id() const
2828
2866
  {
2829
2867
  return _info->id;
2830
2868
  }
2831
2869
 
2870
+ #ifndef ICE_CPP11_MAPPING
2832
2871
  Ice::UserException*
2833
2872
  IceRuby::ExceptionReader::ice_clone() const
2834
2873
  {
2835
2874
  assert(false);
2836
2875
  return 0;
2837
2876
  }
2877
+ #endif
2838
2878
 
2839
2879
  void
2840
2880
  IceRuby::ExceptionReader::ice_throw() const
@@ -2842,6 +2882,28 @@ IceRuby::ExceptionReader::ice_throw() const
2842
2882
  throw *this;
2843
2883
  }
2844
2884
 
2885
+ void
2886
+ IceRuby::ExceptionReader::_write(Ice::OutputStream*) const
2887
+ {
2888
+ assert(false);
2889
+ }
2890
+
2891
+ void
2892
+ IceRuby::ExceptionReader::_read(Ice::InputStream* is)
2893
+ {
2894
+ is->startException();
2895
+
2896
+ const_cast<VALUE&>(_ex) = _info->unmarshal(is);
2897
+
2898
+ const_cast<Ice::SlicedDataPtr&>(_slicedData) = is->endException(_info->preserve);
2899
+ }
2900
+
2901
+ bool
2902
+ IceRuby::ExceptionReader::_usesClasses() const
2903
+ {
2904
+ return _info->usesClasses;
2905
+ }
2906
+
2845
2907
  VALUE
2846
2908
  IceRuby::ExceptionReader::getException() const
2847
2909
  {
@@ -3026,14 +3088,16 @@ IceRuby_defineException(VALUE /*self*/, VALUE id, VALUE type, VALUE preserve, VA
3026
3088
 
3027
3089
  extern "C"
3028
3090
  VALUE
3029
- IceRuby_TypeInfo_defineProxy(VALUE self, VALUE type, VALUE classInfo)
3091
+ IceRuby_TypeInfo_defineProxy(VALUE self, VALUE type, VALUE base, VALUE interfaces)
3030
3092
  {
3031
3093
  ICE_RUBY_TRY
3032
3094
  {
3033
3095
  ProxyInfoPtr info = ProxyInfoPtr::dynamicCast(getType(self));
3034
3096
  assert(info);
3035
3097
 
3036
- info->define(type, classInfo);
3098
+ info->define(type, base, interfaces);
3099
+ rb_define_const(type, "ICE_TYPE", self);
3100
+ rb_define_const(type, "ICE_ID", createString(info->id));
3037
3101
  }
3038
3102
  ICE_RUBY_CATCH
3039
3103
  return Qnil;
@@ -3041,22 +3105,31 @@ IceRuby_TypeInfo_defineProxy(VALUE self, VALUE type, VALUE classInfo)
3041
3105
 
3042
3106
  extern "C"
3043
3107
  VALUE
3044
- IceRuby_TypeInfo_defineClass(VALUE self, VALUE type, VALUE compactId, VALUE isAbstract, VALUE preserve, VALUE base,
3045
- VALUE interfaces, VALUE members)
3108
+ IceRuby_TypeInfo_defineClass(VALUE self, VALUE type, VALUE compactId, VALUE preserve, VALUE interface, VALUE base,
3109
+ VALUE members)
3046
3110
  {
3047
3111
  ICE_RUBY_TRY
3048
3112
  {
3049
3113
  ClassInfoPtr info = ClassInfoPtr::dynamicCast(getType(self));
3050
3114
  assert(info);
3051
3115
 
3052
- info->define(type, compactId, isAbstract, preserve, base, interfaces, members);
3116
+ info->define(type, compactId, preserve, interface, base, members);
3117
+
3118
+ if(info->compactId != -1)
3119
+ {
3120
+ CompactIdMap::iterator q = _compactIdMap.find(info->compactId);
3121
+ if(q != _compactIdMap.end())
3122
+ {
3123
+ _compactIdMap.erase(q);
3124
+ }
3125
+ _compactIdMap.insert(CompactIdMap::value_type(info->compactId, info));
3126
+ }
3053
3127
 
3054
- CompactIdMap::iterator q = _compactIdMap.find(info->compactId);
3055
- if(q != _compactIdMap.end())
3128
+ if(type != Qnil && !info->interface)
3056
3129
  {
3057
- _compactIdMap.erase(q);
3130
+ rb_define_const(type, "ICE_TYPE", self);
3131
+ rb_define_const(type, "ICE_ID", createString(info->id));
3058
3132
  }
3059
- _compactIdMap.insert(CompactIdMap::value_type(info->compactId, info));
3060
3133
  }
3061
3134
  ICE_RUBY_CATCH
3062
3135
  return Qnil;
@@ -3159,8 +3232,8 @@ IceRuby::initTypes(VALUE iceModule)
3159
3232
  rb_define_module_function(iceModule, "__declareLocalClass", CAST_METHOD(IceRuby_declareLocalClass), 1);
3160
3233
  rb_define_module_function(iceModule, "__defineException", CAST_METHOD(IceRuby_defineException), 5);
3161
3234
 
3162
- rb_define_method(_typeInfoClass, "defineClass", CAST_METHOD(IceRuby_TypeInfo_defineClass), 7);
3163
- rb_define_method(_typeInfoClass, "defineProxy", CAST_METHOD(IceRuby_TypeInfo_defineProxy), 2);
3235
+ rb_define_method(_typeInfoClass, "defineClass", CAST_METHOD(IceRuby_TypeInfo_defineClass), 6);
3236
+ rb_define_method(_typeInfoClass, "defineProxy", CAST_METHOD(IceRuby_TypeInfo_defineProxy), 3);
3164
3237
 
3165
3238
  rb_define_module_function(iceModule, "__stringify", CAST_METHOD(IceRuby_stringify), 2);
3166
3239
  rb_define_module_function(iceModule, "__stringifyException", CAST_METHOD(IceRuby_stringifyException), 1);