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.
@@ -11,11 +11,24 @@
11
11
  #define ICE_OUTGOING_ASYNC_H
12
12
 
13
13
  #include <IceUtil/Timer.h>
14
+ #include <IceUtil/Monitor.h>
14
15
  #include <Ice/OutgoingAsyncF.h>
15
- #include <Ice/AsyncResult.h>
16
16
  #include <Ice/CommunicatorF.h>
17
17
  #include <Ice/ConnectionIF.h>
18
18
  #include <Ice/ObjectAdapterF.h>
19
+ #include <Ice/RequestHandlerF.h>
20
+ #include <Ice/ConnectionF.h>
21
+ #include <Ice/OutputStream.h>
22
+ #include <Ice/InputStream.h>
23
+ #include <Ice/ObserverHelper.h>
24
+ #include <Ice/LocalException.h>
25
+ #include <Ice/UniquePtr.h>
26
+
27
+ #ifndef ICE_CPP11_MAPPING
28
+ # include <Ice/AsyncResult.h>
29
+ #endif
30
+
31
+ #include <exception>
19
32
 
20
33
  namespace IceInternal
21
34
  {
@@ -23,25 +36,80 @@ namespace IceInternal
23
36
  class RetryException;
24
37
  class CollocatedRequestHandler;
25
38
 
39
+ class ICE_API OutgoingAsyncCompletionCallback
40
+ {
41
+ public:
42
+ virtual ~OutgoingAsyncCompletionCallback();
43
+
44
+ protected:
45
+
46
+ virtual bool handleSent(bool, bool) = 0;
47
+ virtual bool handleException(const Ice::Exception&) = 0;
48
+ virtual bool handleResponse(bool) = 0;
49
+
50
+ virtual void handleInvokeSent(bool, OutgoingAsyncBase*) const = 0;
51
+ virtual void handleInvokeException(const Ice::Exception&, OutgoingAsyncBase*) const = 0;
52
+ virtual void handleInvokeResponse(bool, OutgoingAsyncBase*) const = 0;
53
+ };
54
+
26
55
  //
27
56
  // Base class for handling asynchronous invocations. This class is
28
57
  // responsible for the handling of the output stream and the child
29
58
  // invocation observer.
30
59
  //
31
- class ICE_API OutgoingAsyncBase : public Ice::AsyncResult
60
+ class ICE_API OutgoingAsyncBase : public virtual OutgoingAsyncCompletionCallback,
61
+ #ifdef ICE_CPP11_MAPPING
62
+ public std::enable_shared_from_this<OutgoingAsyncBase>
63
+ #else
64
+ public Ice::AsyncResult
65
+ #endif
32
66
  {
33
67
  public:
34
68
 
35
69
  virtual bool sent();
36
- virtual bool completed(const Ice::Exception&);
37
- virtual bool completed();
70
+ virtual bool exception(const Ice::Exception&);
71
+ virtual bool response();
72
+
73
+ void invokeSentAsync();
74
+ void invokeExceptionAsync();
75
+ void invokeResponseAsync();
76
+
77
+ void invokeSent();
78
+ void invokeException();
79
+ void invokeResponse();
38
80
 
39
- // Those methods are public when called from an OutgoingAsyncBase reference.
40
- using Ice::AsyncResult::cancelable;
41
- using Ice::AsyncResult::invokeSent;
42
- using Ice::AsyncResult::invokeSentAsync;
43
- using Ice::AsyncResult::invokeCompleted;
44
- using Ice::AsyncResult::invokeCompletedAsync;
81
+ virtual void cancelable(const IceInternal::CancellationHandlerPtr&);
82
+ void cancel();
83
+
84
+ #ifndef ICE_CPP11_MAPPING
85
+ virtual Ice::Int getHash() const;
86
+
87
+ virtual Ice::CommunicatorPtr getCommunicator() const;
88
+ virtual Ice::ConnectionPtr getConnection() const;
89
+ virtual Ice::ObjectPrx getProxy() const;
90
+
91
+ virtual Ice::LocalObjectPtr getCookie() const;
92
+ virtual const std::string& getOperation() const;
93
+
94
+ virtual bool isCompleted() const;
95
+ virtual void waitForCompleted();
96
+
97
+ virtual bool isSent() const;
98
+ virtual void waitForSent();
99
+
100
+ virtual bool sentSynchronously() const;
101
+
102
+ virtual void throwLocalException() const;
103
+
104
+ virtual bool _waitForResponse();
105
+ virtual Ice::InputStream* _startReadParams();
106
+ virtual void _endReadParams();
107
+ virtual void _readEmptyParams();
108
+ virtual void _readParamEncaps(const ::Ice::Byte*&, ::Ice::Int&);
109
+ virtual void _throwUserException();
110
+
111
+ virtual void _scheduleCallback(const CallbackPtr&);
112
+ #endif
45
113
 
46
114
  void attachRemoteObserver(const Ice::ConnectionInfoPtr& c, const Ice::EndpointPtr& endpt, Ice::Int requestId)
47
115
  {
@@ -55,24 +123,71 @@ public:
55
123
  _childObserver.attach(getObserver().getCollocatedObserver(adapter, requestId, size));
56
124
  }
57
125
 
58
- BasicStream* getOs()
126
+ Ice::OutputStream* getOs()
59
127
  {
60
128
  return &_os;
61
129
  }
62
130
 
63
- virtual BasicStream* getIs();
131
+ Ice::InputStream* getIs()
132
+ {
133
+ return &_is;
134
+ }
64
135
 
65
136
  protected:
66
137
 
67
- OutgoingAsyncBase(const Ice::CommunicatorPtr&, const InstancePtr&, const std::string&, const CallbackBasePtr&,
68
- const Ice::LocalObjectPtr&);
138
+ OutgoingAsyncBase(const InstancePtr&);
139
+
140
+ bool sentImpl(bool);
141
+ bool exceptionImpl(const Ice::Exception&);
142
+ bool responseImpl(bool, bool);
69
143
 
70
- bool sent(bool);
71
- bool finished(const Ice::Exception&);
144
+ void cancel(const Ice::LocalException&);
145
+ void checkCanceled();
146
+
147
+ void warning(const std::exception&) const;
148
+ void warning() const;
149
+
150
+ //
151
+ // This virtual method is necessary for the communicator flush
152
+ // batch requests implementation.
153
+ //
154
+ virtual IceInternal::InvocationObserver& getObserver()
155
+ {
156
+ return _observer;
157
+ }
72
158
 
159
+ const InstancePtr _instance;
160
+ Ice::ConnectionPtr _cachedConnection;
161
+ bool _sentSynchronously;
162
+ bool _doneInSent;
163
+ unsigned char _state;
164
+
165
+ #ifdef ICE_CPP11_MAPPING
166
+ std::mutex _m;
167
+ using Lock = std::lock_guard<std::mutex>;
168
+ #else
169
+ IceUtil::Monitor<IceUtil::Mutex> _m;
170
+ typedef IceUtil::Monitor<IceUtil::Mutex>::Lock Lock;
171
+ Ice::LocalObjectPtr _cookie;
172
+ #endif
173
+
174
+ IceInternal::UniquePtr<Ice::Exception> _ex;
175
+ IceInternal::UniquePtr<Ice::LocalException> _cancellationException;
176
+
177
+ InvocationObserver _observer;
73
178
  ObserverHelperT<Ice::Instrumentation::ChildInvocationObserver> _childObserver;
74
179
 
75
- BasicStream _os;
180
+ Ice::OutputStream _os;
181
+ Ice::InputStream _is;
182
+
183
+ CancellationHandlerPtr _cancellationHandler;
184
+
185
+ static const unsigned char OK;
186
+ static const unsigned char Sent;
187
+ #ifndef ICE_CPP11_MAPPING
188
+ static const unsigned char Done;
189
+ static const unsigned char EndCalled;
190
+ #endif
76
191
  };
77
192
 
78
193
  //
@@ -81,38 +196,44 @@ protected:
81
196
  // correct notified of failures and make sure the retry task is
82
197
  // correctly canceled when the invocation completes.
83
198
  //
84
- class ICE_API ProxyOutgoingAsyncBase : public OutgoingAsyncBase, protected IceUtil::TimerTask
199
+ class ICE_API ProxyOutgoingAsyncBase : public OutgoingAsyncBase,
200
+ public IceUtil::TimerTask
85
201
  {
86
202
  public:
87
203
 
88
204
  virtual AsyncStatus invokeRemote(const Ice::ConnectionIPtr&, bool, bool) = 0;
89
205
  virtual AsyncStatus invokeCollocated(CollocatedRequestHandler*) = 0;
90
206
 
91
- virtual Ice::ObjectPrx getProxy() const;
92
-
93
- using OutgoingAsyncBase::sent;
94
- virtual bool completed(const Ice::Exception&);
95
- void retryException(const Ice::Exception&);
207
+ virtual bool exception(const Ice::Exception&);
96
208
  virtual void cancelable(const CancellationHandlerPtr&);
97
209
 
210
+ void retryException(const Ice::Exception&);
98
211
  void retry();
99
212
  void abort(const Ice::Exception&);
100
213
 
214
+ #ifdef ICE_CPP11_MAPPING
215
+ std::shared_ptr<ProxyOutgoingAsyncBase> shared_from_this()
216
+ {
217
+ return std::static_pointer_cast<ProxyOutgoingAsyncBase>(OutgoingAsyncBase::shared_from_this());
218
+ }
219
+ #else
220
+ virtual Ice::ObjectPrx getProxy() const;
221
+ virtual Ice::CommunicatorPtr getCommunicator() const;
222
+ #endif
223
+
101
224
  protected:
102
225
 
103
- ProxyOutgoingAsyncBase(const Ice::ObjectPrx&, const std::string&, const CallbackBasePtr&,
104
- const Ice::LocalObjectPtr&);
226
+ ProxyOutgoingAsyncBase(const Ice::ObjectPrxPtr&);
227
+ ~ProxyOutgoingAsyncBase();
105
228
 
106
229
  void invokeImpl(bool);
230
+ bool sentImpl(bool);
231
+ bool exceptionImpl(const Ice::Exception&);
232
+ bool responseImpl(bool, bool);
107
233
 
108
- bool sent(bool);
109
- bool finished(const Ice::Exception&);
110
- bool finished(bool);
111
-
112
- int handleException(const Ice::Exception&);
113
234
  virtual void runTimerTask();
114
235
 
115
- const Ice::ObjectPrx _proxy;
236
+ const Ice::ObjectPrxPtr _proxy;
116
237
  RequestHandlerPtr _handler;
117
238
  Ice::OperationMode _mode;
118
239
 
@@ -129,133 +250,583 @@ class ICE_API OutgoingAsync : public ProxyOutgoingAsyncBase
129
250
  {
130
251
  public:
131
252
 
132
- OutgoingAsync(const Ice::ObjectPrx&, const std::string&, const CallbackBasePtr&, const Ice::LocalObjectPtr&);
253
+ OutgoingAsync(const Ice::ObjectPrxPtr&, bool);
133
254
 
134
- void prepare(const std::string&, Ice::OperationMode, const Ice::Context*);
255
+ void prepare(const std::string&, Ice::OperationMode, const Ice::Context&);
135
256
 
136
257
  virtual bool sent();
258
+ virtual bool response();
137
259
 
138
260
  virtual AsyncStatus invokeRemote(const Ice::ConnectionIPtr&, bool, bool);
139
261
  virtual AsyncStatus invokeCollocated(CollocatedRequestHandler*);
140
262
 
141
- using ProxyOutgoingAsyncBase::completed;
142
- virtual bool completed();
143
-
144
263
  void abort(const Ice::Exception&);
264
+ void invoke(const std::string&);
265
+ #ifdef ICE_CPP11_MAPPING
266
+ void invoke(const std::string&, Ice::OperationMode, Ice::FormatType, const Ice::Context&,
267
+ std::function<void(Ice::OutputStream*)>);
268
+ void throwUserException();
269
+ #endif
145
270
 
146
- void invoke();
147
-
148
- BasicStream* startWriteParams(Ice::FormatType format)
271
+ Ice::OutputStream* startWriteParams(Ice::FormatType format)
149
272
  {
150
- _os.startWriteEncaps(_encoding, format);
273
+ _os.startEncapsulation(_encoding, format);
151
274
  return &_os;
152
275
  }
153
276
  void endWriteParams()
154
277
  {
155
- _os.endWriteEncaps();
278
+ _os.endEncapsulation();
156
279
  }
157
280
  void writeEmptyParams()
158
281
  {
159
- _os.writeEmptyEncaps(_encoding);
282
+ _os.writeEmptyEncapsulation(_encoding);
160
283
  }
161
284
  void writeParamEncaps(const ::Ice::Byte* encaps, ::Ice::Int size)
162
285
  {
163
286
  if(size == 0)
164
287
  {
165
- _os.writeEmptyEncaps(_encoding);
288
+ _os.writeEmptyEncapsulation(_encoding);
166
289
  }
167
290
  else
168
291
  {
169
- _os.writeEncaps(encaps, size);
292
+ _os.writeEncapsulation(encaps, size);
170
293
  }
171
294
  }
172
295
 
173
- virtual BasicStream* getIs()
296
+ protected:
297
+
298
+ const Ice::EncodingVersion _encoding;
299
+
300
+ #ifdef ICE_CPP11_MAPPING
301
+ std::function<void(const ::Ice::UserException&)> _userException;
302
+ #endif
303
+
304
+ bool _synchronous;
305
+ };
306
+
307
+ }
308
+
309
+ namespace IceInternal
310
+ {
311
+
312
+ #ifdef ICE_CPP11_MAPPING
313
+
314
+ class ICE_API LambdaInvoke : public virtual OutgoingAsyncCompletionCallback
315
+ {
316
+ public:
317
+
318
+ LambdaInvoke(std::function<void(::std::exception_ptr)> exception, std::function<void(bool)> sent) :
319
+ _exception(std::move(exception)), _sent(std::move(sent))
174
320
  {
175
- return &_is;
176
321
  }
177
322
 
178
- private:
323
+ protected:
179
324
 
180
- const Ice::EncodingVersion _encoding;
325
+ virtual bool handleSent(bool, bool) override;
326
+ virtual bool handleException(const Ice::Exception&) override;
327
+ virtual bool handleResponse(bool) override;
328
+
329
+ virtual void handleInvokeSent(bool, OutgoingAsyncBase*) const override;
330
+ virtual void handleInvokeException(const Ice::Exception&, OutgoingAsyncBase*) const override;
331
+ virtual void handleInvokeResponse(bool, OutgoingAsyncBase*) const override;
332
+
333
+ std::function<void(::std::exception_ptr)> _exception;
334
+ std::function<void(bool)> _sent;
335
+ std::function<void(bool)> _response;
181
336
  };
182
337
 
183
- //
184
- // Class for handling the proxy's begin_ice_flushBatchRequest request.
185
- //
186
- class ICE_API ProxyFlushBatchAsync : public ProxyOutgoingAsyncBase
338
+ template<typename Promise>
339
+ class PromiseInvoke : public virtual OutgoingAsyncCompletionCallback
187
340
  {
188
341
  public:
189
342
 
190
- ProxyFlushBatchAsync(const Ice::ObjectPrx&, const std::string&, const CallbackBasePtr&, const Ice::LocalObjectPtr&);
343
+ auto
344
+ getFuture() -> decltype(std::declval<Promise>().get_future())
345
+ {
346
+ return _promise.get_future();
347
+ }
191
348
 
192
- virtual AsyncStatus invokeRemote(const Ice::ConnectionIPtr&, bool, bool);
193
- virtual AsyncStatus invokeCollocated(CollocatedRequestHandler*);
349
+ protected:
194
350
 
195
- void invoke();
351
+ Promise _promise;
352
+ std::function<void(bool)> _response;
196
353
 
197
354
  private:
198
355
 
199
- int _batchRequestNum;
356
+ virtual bool handleSent(bool, bool) override
357
+ {
358
+ return false;
359
+ }
360
+
361
+ virtual bool handleException(const Ice::Exception& ex) override
362
+ {
363
+ try
364
+ {
365
+ ex.ice_throw();
366
+ }
367
+ catch(const Ice::Exception&)
368
+ {
369
+ _promise.set_exception(std::current_exception());
370
+ }
371
+ return false;
372
+ }
373
+
374
+ virtual bool handleResponse(bool ok) override
375
+ {
376
+ _response(ok);
377
+ return false;
378
+ }
379
+
380
+ virtual void handleInvokeSent(bool, OutgoingAsyncBase*) const override
381
+ {
382
+ assert(false);
383
+ }
384
+
385
+ virtual void handleInvokeException(const Ice::Exception&, OutgoingAsyncBase*) const override
386
+ {
387
+ assert(false);
388
+ }
389
+
390
+ virtual void handleInvokeResponse(bool, OutgoingAsyncBase*) const override
391
+ {
392
+ assert(false);
393
+ }
394
+ };
395
+
396
+ template<typename T>
397
+ class OutgoingAsyncT : public OutgoingAsync
398
+ {
399
+ public:
400
+
401
+ using OutgoingAsync::OutgoingAsync;
402
+
403
+ void
404
+ invoke(const std::string& operation,
405
+ Ice::OperationMode mode,
406
+ Ice::FormatType format,
407
+ const Ice::Context& ctx,
408
+ std::function<void(Ice::OutputStream*)> write,
409
+ std::function<void(const Ice::UserException&)> userException)
410
+ {
411
+ _read = [](Ice::InputStream* stream)
412
+ {
413
+ T v;
414
+ stream->read(v);
415
+ return v;
416
+ };
417
+ _userException = std::move(userException);
418
+ OutgoingAsync::invoke(operation, mode, format, ctx, std::move(write));
419
+ }
420
+
421
+ void
422
+ invoke(const std::string& operation,
423
+ Ice::OperationMode mode,
424
+ Ice::FormatType format,
425
+ const Ice::Context& ctx,
426
+ std::function<void(Ice::OutputStream*)> write,
427
+ std::function<void(const Ice::UserException&)> userException,
428
+ std::function<T(Ice::InputStream*)> read)
429
+ {
430
+ _read = std::move(read);
431
+ _userException = std::move(userException);
432
+ OutgoingAsync::invoke(operation, mode, format, ctx, std::move(write));
433
+ }
434
+
435
+ protected:
436
+
437
+ std::function<T(Ice::InputStream*)> _read;
438
+ };
439
+
440
+ template<>
441
+ class OutgoingAsyncT<void> : public OutgoingAsync
442
+ {
443
+ public:
444
+
445
+ using OutgoingAsync::OutgoingAsync;
446
+
447
+ void
448
+ invoke(const std::string& operation,
449
+ Ice::OperationMode mode,
450
+ Ice::FormatType format,
451
+ const Ice::Context& ctx,
452
+ std::function<void(Ice::OutputStream*)> write,
453
+ std::function<void(const Ice::UserException&)> userException)
454
+ {
455
+ _userException = std::move(userException);
456
+ OutgoingAsync::invoke(operation, mode, format, ctx, std::move(write));
457
+ }
458
+ };
459
+
460
+ template<typename R>
461
+ class LambdaOutgoing : public OutgoingAsyncT<R>, public LambdaInvoke
462
+ {
463
+ public:
464
+
465
+ LambdaOutgoing(const std::shared_ptr<Ice::ObjectPrx>& proxy,
466
+ std::function<void(R)> response,
467
+ std::function<void(::std::exception_ptr)> ex,
468
+ std::function<void(bool)> sent) :
469
+ OutgoingAsyncT<R>(proxy, false), LambdaInvoke(std::move(ex), std::move(sent))
470
+ {
471
+ _response = [this, response](bool ok)
472
+ {
473
+ if(!ok)
474
+ {
475
+ this->throwUserException();
476
+ }
477
+ else if(response)
478
+ {
479
+ assert(this->_read);
480
+ this->_is.startEncapsulation();
481
+ R v = this->_read(&this->_is);
482
+ this->_is.endEncapsulation();
483
+ try
484
+ {
485
+ response(std::move(v));
486
+ }
487
+ catch(...)
488
+ {
489
+ throw std::current_exception();
490
+ }
491
+ }
492
+ };
493
+ }
200
494
  };
201
- typedef IceUtil::Handle<ProxyFlushBatchAsync> ProxyFlushBatchAsyncPtr;
495
+
496
+ template<>
497
+ class LambdaOutgoing<void> : public OutgoingAsyncT<void>, public LambdaInvoke
498
+ {
499
+ public:
500
+
501
+ LambdaOutgoing(const std::shared_ptr<Ice::ObjectPrx>& proxy,
502
+ std::function<void()> response,
503
+ std::function<void(::std::exception_ptr)> ex,
504
+ std::function<void(bool)> sent) :
505
+ OutgoingAsyncT<void>(proxy, false), LambdaInvoke(std::move(ex), std::move(sent))
506
+ {
507
+ _response = [this, response](bool ok)
508
+ {
509
+ if(!ok)
510
+ {
511
+ this->throwUserException();
512
+ }
513
+ else if(response)
514
+ {
515
+ if(!this->_is.b.empty())
516
+ {
517
+ this->_is.skipEmptyEncapsulation();
518
+ }
519
+
520
+ try
521
+ {
522
+ response();
523
+ }
524
+ catch(...)
525
+ {
526
+ throw std::current_exception();
527
+ }
528
+ }
529
+ };
530
+ }
531
+ };
532
+
533
+ class CustomLambdaOutgoing : public OutgoingAsync, public LambdaInvoke
534
+ {
535
+ public:
536
+
537
+ CustomLambdaOutgoing(const std::shared_ptr<Ice::ObjectPrx>& proxy,
538
+ std::function<void(Ice::InputStream*)> read,
539
+ std::function<void(::std::exception_ptr)> ex,
540
+ std::function<void(bool)> sent) :
541
+ OutgoingAsync(proxy, false), LambdaInvoke(std::move(ex), std::move(sent))
542
+ {
543
+ _response = [this, read](bool ok)
544
+ {
545
+ if(!ok)
546
+ {
547
+ this->throwUserException();
548
+ }
549
+ else if(read)
550
+ {
551
+ //
552
+ // Read and respond
553
+ //
554
+ read(&this->_is);
555
+ }
556
+ };
557
+ }
558
+
559
+ void
560
+ invoke(const std::string& operation,
561
+ Ice::OperationMode mode,
562
+ Ice::FormatType format,
563
+ const Ice::Context& ctx,
564
+ std::function<void(Ice::OutputStream*)> write,
565
+ std::function<void(const Ice::UserException&)> userException)
566
+ {
567
+ _userException = std::move(userException);
568
+ OutgoingAsync::invoke(operation, mode, format, ctx, std::move(write));
569
+ }
570
+ };
571
+
572
+ template<typename P, typename R>
573
+ class PromiseOutgoing : public OutgoingAsyncT<R>, public PromiseInvoke<P>
574
+ {
575
+ public:
576
+
577
+ PromiseOutgoing(const std::shared_ptr<Ice::ObjectPrx>& proxy, bool sync) :
578
+ OutgoingAsyncT<R>(proxy, sync)
579
+ {
580
+ this->_response = [this](bool ok)
581
+ {
582
+ if(ok)
583
+ {
584
+ assert(this->_read);
585
+ this->_is.startEncapsulation();
586
+ R v = this->_read(&this->_is);
587
+ this->_is.endEncapsulation();
588
+ this->_promise.set_value(v);
589
+ }
590
+ else
591
+ {
592
+ this->throwUserException();
593
+ }
594
+ };
595
+ }
596
+ };
597
+
598
+ template<typename P>
599
+ class PromiseOutgoing<P, void> : public OutgoingAsyncT<void>, public PromiseInvoke<P>
600
+ {
601
+ public:
602
+
603
+ PromiseOutgoing(const std::shared_ptr<Ice::ObjectPrx>& proxy, bool sync) :
604
+ OutgoingAsyncT<void>(proxy, sync)
605
+ {
606
+ this->_response = [&](bool ok)
607
+ {
608
+ if(this->_is.b.empty())
609
+ {
610
+ //
611
+ // If there's no response (oneway, batch-oneway proxies), we just set the promise
612
+ // on completion without reading anything from the input stream. This is required for
613
+ // batch invocations.
614
+ //
615
+ this->_promise.set_value();
616
+ }
617
+ else if(ok)
618
+ {
619
+ this->_is.skipEmptyEncapsulation();
620
+ this->_promise.set_value();
621
+ }
622
+ else
623
+ {
624
+ this->throwUserException();
625
+ }
626
+ };
627
+ }
628
+
629
+ virtual bool handleSent(bool done, bool) override
630
+ {
631
+ if(done)
632
+ {
633
+ PromiseInvoke<P>::_promise.set_value();
634
+ }
635
+ return false;
636
+ }
637
+ };
638
+
639
+ #else
202
640
 
203
641
  //
204
- // Class for handling the proxy's begin_ice_getConnection request.
642
+ // Base class for all callbacks.
205
643
  //
206
- class ICE_API ProxyGetConnection : public ProxyOutgoingAsyncBase
644
+ class ICE_API CallbackBase : public IceUtil::Shared
207
645
  {
208
646
  public:
209
647
 
210
- ProxyGetConnection(const Ice::ObjectPrx&, const std::string&, const CallbackBasePtr&, const Ice::LocalObjectPtr&);
648
+ virtual ~CallbackBase();
211
649
 
212
- virtual AsyncStatus invokeRemote(const Ice::ConnectionIPtr&, bool, bool);
213
- virtual AsyncStatus invokeCollocated(CollocatedRequestHandler*);
650
+ void checkCallback(bool, bool);
651
+
652
+ virtual void completed(const ::Ice::AsyncResultPtr&) const = 0;
653
+ virtual IceUtil::Handle<CallbackBase> verify(const ::Ice::LocalObjectPtr&) = 0;
654
+ virtual void sent(const ::Ice::AsyncResultPtr&) const = 0;
655
+ virtual bool hasSentCallback() const = 0;
656
+ };
657
+ typedef IceUtil::Handle<CallbackBase> CallbackBasePtr;
658
+
659
+ //
660
+ // Base class for generic callbacks.
661
+ //
662
+ class ICE_API GenericCallbackBase : public virtual CallbackBase
663
+ {
664
+ public:
214
665
 
215
- void invoke();
666
+ virtual ~GenericCallbackBase();
216
667
  };
217
- typedef IceUtil::Handle<ProxyGetConnection> ProxyGetConnectionPtr;
218
668
 
219
669
  //
220
- // Class for handling Ice::Connection::begin_flushBatchRequests
670
+ // See comments in OutgoingAsync.cpp
671
+ //
672
+ extern ICE_API CallbackBasePtr dummyCallback;
673
+
674
+ //
675
+ // Generic callback template that requires the caller to down-cast the
676
+ // proxy and the cookie that are obtained from the AsyncResult.
221
677
  //
222
- class ICE_API ConnectionFlushBatchAsync : public OutgoingAsyncBase
678
+ template<class T>
679
+ class AsyncCallback : public GenericCallbackBase
223
680
  {
224
681
  public:
225
682
 
226
- ConnectionFlushBatchAsync(const Ice::ConnectionIPtr&, const Ice::CommunicatorPtr&, const InstancePtr&,
227
- const std::string&, const CallbackBasePtr&, const Ice::LocalObjectPtr&);
683
+ typedef T callback_type;
684
+ typedef IceUtil::Handle<T> TPtr;
228
685
 
229
- virtual Ice::ConnectionPtr getConnection() const;
686
+ typedef void (T::*Callback)(const ::Ice::AsyncResultPtr&);
687
+
688
+ AsyncCallback(const TPtr& instance, Callback cb, Callback sentcb = 0) :
689
+ _callback(instance), _completed(cb), _sent(sentcb)
690
+ {
691
+ checkCallback(instance, cb != 0);
692
+ }
230
693
 
231
- void invoke();
694
+ virtual void completed(const ::Ice::AsyncResultPtr& result) const
695
+ {
696
+ (_callback.get()->*_completed)(result);
697
+ }
698
+
699
+ virtual CallbackBasePtr verify(const ::Ice::LocalObjectPtr&)
700
+ {
701
+ return this; // Nothing to do, the cookie is not type-safe.
702
+ }
703
+
704
+ virtual void sent(const ::Ice::AsyncResultPtr& result) const
705
+ {
706
+ if(_sent)
707
+ {
708
+ (_callback.get()->*_sent)(result);
709
+ }
710
+ }
711
+
712
+ virtual bool hasSentCallback() const
713
+ {
714
+ return _sent != 0;
715
+ }
232
716
 
233
717
  private:
234
718
 
235
- const Ice::ConnectionIPtr _connection;
719
+ TPtr _callback;
720
+ Callback _completed;
721
+ Callback _sent;
236
722
  };
237
- typedef IceUtil::Handle<ConnectionFlushBatchAsync> ConnectionFlushBatchAsyncPtr;
238
723
 
239
- //
240
- // Class for handling Ice::Communicator::begin_flushBatchRequests
241
- //
242
- class ICE_API CommunicatorFlushBatchAsync : public Ice::AsyncResult
724
+ class CallbackCompletion : public virtual OutgoingAsyncCompletionCallback
243
725
  {
244
726
  public:
245
727
 
246
- CommunicatorFlushBatchAsync(const Ice::CommunicatorPtr&, const InstancePtr&, const std::string&,
247
- const CallbackBasePtr&, const Ice::LocalObjectPtr&);
728
+ CallbackCompletion(const CallbackBasePtr& cb, const Ice::LocalObjectPtr& cookie) : _callback(cb)
729
+ {
730
+ if(!_callback)
731
+ {
732
+ throw IceUtil::IllegalArgumentException(__FILE__, __LINE__);
733
+ }
734
+ const_cast<CallbackBasePtr&>(_callback) = _callback->verify(cookie);
735
+ }
736
+
737
+ virtual bool handleSent(bool, bool alreadySent)
738
+ {
739
+ return _callback && _callback->hasSentCallback() && !alreadySent;
740
+ }
741
+
742
+ virtual bool handleException(const Ice::Exception&)
743
+ {
744
+ return _callback;
745
+ }
746
+
747
+ virtual bool handleResponse(bool)
748
+ {
749
+ return _callback;
750
+ }
751
+
752
+ virtual void handleInvokeSent(bool, OutgoingAsyncBase* outAsync) const
753
+ {
754
+ _callback->sent(outAsync);
755
+ }
756
+
757
+ virtual void handleInvokeException(const Ice::Exception&, OutgoingAsyncBase* outAsync) const
758
+ {
759
+ _callback->completed(outAsync);
760
+ }
248
761
 
249
- void flushConnection(const Ice::ConnectionIPtr&);
250
- void ready();
762
+ virtual void handleInvokeResponse(bool, OutgoingAsyncBase* outAsync) const
763
+ {
764
+ _callback->completed(outAsync);
765
+ }
251
766
 
252
767
  private:
253
768
 
254
- void check(bool);
769
+ const CallbackBasePtr _callback;
770
+ };
771
+
772
+ class CallbackOutgoing : public OutgoingAsync, public CallbackCompletion
773
+ {
774
+ public:
775
+
776
+ CallbackOutgoing(const Ice::ObjectPrx& proxy,
777
+ const std::string& operation,
778
+ const CallbackBasePtr& cb,
779
+ const Ice::LocalObjectPtr& cookie,
780
+ bool sync) :
781
+ OutgoingAsync(proxy, sync), CallbackCompletion(cb, cookie), _operation(operation)
782
+ {
783
+ _cookie = cookie;
784
+ }
785
+
786
+ virtual const std::string&
787
+ getOperation() const
788
+ {
789
+ return _operation;
790
+ }
791
+
792
+ private:
255
793
 
256
- int _useCount;
794
+ const std::string& _operation;
257
795
  };
258
796
 
797
+ #endif
798
+
799
+ }
800
+
801
+ #ifndef ICE_CPP11_MAPPING
802
+
803
+ namespace Ice
804
+ {
805
+
806
+ typedef IceUtil::Handle< ::IceInternal::GenericCallbackBase> CallbackPtr;
807
+
808
+ template<class T> CallbackPtr
809
+ newCallback(const IceUtil::Handle<T>& instance,
810
+ void (T::*cb)(const AsyncResultPtr&),
811
+ void (T::*sentcb)(const AsyncResultPtr&) = 0)
812
+ {
813
+ return new ::IceInternal::AsyncCallback<T>(instance, cb, sentcb);
814
+ }
815
+
816
+ template<class T> CallbackPtr
817
+ newCallback(T* instance,
818
+ void (T::*cb)(const AsyncResultPtr&),
819
+ void (T::*sentcb)(const AsyncResultPtr&) = 0)
820
+ {
821
+ return new ::IceInternal::AsyncCallback<T>(instance, cb, sentcb);
822
+ }
823
+
259
824
  }
260
825
 
826
+ //
827
+ // Operation callbacks are specified in Proxy.h
828
+ //
829
+
830
+ #endif
831
+
261
832
  #endif