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.
@@ -24,8 +24,8 @@
24
24
  #include <Ice/ProtocolInstanceF.h>
25
25
  #include <Ice/EndpointTypes.h>
26
26
 
27
- #ifdef ICE_OS_WINRT
28
- # include <Ice/EventHandlerF.h>
27
+ #if defined(ICE_OS_UWP)
28
+ # include <ppltasks.h>
29
29
  #elif defined(_WIN32)
30
30
  # include <winsock2.h>
31
31
  # include <ws2tcpip.h>
@@ -43,14 +43,14 @@ typedef int ssize_t;
43
43
  # include <netdb.h>
44
44
  #endif
45
45
 
46
- #if defined(__linux__) && !defined(ICE_NO_EPOLL)
46
+ #if defined(__linux) && !defined(ICE_NO_EPOLL)
47
47
  # define ICE_USE_EPOLL 1
48
48
  #elif (defined(__APPLE__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && TARGET_OS_IPHONE == 0 && !defined(ICE_NO_KQUEUE)
49
49
  # define ICE_USE_KQUEUE 1
50
50
  #elif defined(__APPLE__) && !defined(ICE_NO_CFSTREAM)
51
51
  # define ICE_USE_CFSTREAM 1
52
52
  #elif defined(_WIN32)
53
- # if defined(ICE_OS_WINRT)
53
+ # if defined(ICE_OS_UWP)
54
54
  # elif !defined(ICE_NO_IOCP)
55
55
  # define ICE_USE_IOCP 1
56
56
  # else
@@ -68,7 +68,7 @@ typedef int socklen_t;
68
68
  # define SOCKET int
69
69
  # define INVALID_SOCKET -1
70
70
  # define SOCKET_ERROR -1
71
- #elif defined(ICE_OS_WINRT)
71
+ #elif defined(ICE_OS_UWP)
72
72
  typedef Platform::Object^ SOCKET;
73
73
  # define INVALID_SOCKET nullptr
74
74
  # define SOCKET_ERROR -1
@@ -115,7 +115,7 @@ namespace IceInternal
115
115
  //
116
116
  // Use Address struct or union depending on the platform
117
117
  //
118
- #ifdef ICE_OS_WINRT
118
+ #ifdef ICE_OS_UWP
119
119
  struct ICE_API Address
120
120
  {
121
121
  Windows::Networking::HostName^ host;
@@ -152,17 +152,17 @@ enum SocketOperation
152
152
  };
153
153
 
154
154
  //
155
- // On WinRT, wait only for read to return, on IOCP/Win32 wait for
155
+ // On UWP, wait only for read to return, on IOCP/Win32 wait for
156
156
  // both pending read and write operations to complete (#ICE-6695).
157
157
  //
158
- #if defined(ICE_OS_WINRT)
158
+ #if defined(ICE_OS_UWP)
159
159
  const int SocketOperationWaitForClose = 1;
160
160
  #elif defined(ICE_USE_IOCP)
161
161
  const int SocketOperationWaitForClose = 3;
162
162
  #endif
163
163
 
164
164
  //
165
- // AsyncInfo struct for Windows IOCP or WinRT holds the result of
165
+ // AsyncInfo struct for Windows IOCP or UWP holds the result of
166
166
  // asynchronous operations after it completed.
167
167
  //
168
168
  #if defined(ICE_USE_IOCP)
@@ -176,9 +176,10 @@ struct ICE_API AsyncInfo : WSAOVERLAPPED
176
176
  DWORD count;
177
177
  int error;
178
178
  };
179
- #elif defined(ICE_OS_WINRT)
179
+ #elif defined(ICE_OS_UWP)
180
180
  struct ICE_API AsyncInfo
181
181
  {
182
+ Windows::Foundation::AsyncOperationCompletedHandler<unsigned int>^ completedHandler;
182
183
  int count;
183
184
  int error;
184
185
  };
@@ -186,11 +187,26 @@ struct ICE_API AsyncInfo
186
187
  delegate void SocketOperationCompletedHandler(int);
187
188
  #endif
188
189
 
189
- class ICE_API NativeInfo : virtual public IceUtil::Shared
190
+ class ICE_API ReadyCallback : public virtual ::IceUtil::Shared
190
191
  {
191
192
  public:
192
193
 
194
+ virtual ~ReadyCallback();
195
+
196
+ virtual void ready(SocketOperation, bool) = 0;
197
+ };
198
+ typedef IceUtil::Handle<ReadyCallback> ReadyCallbackPtr;
199
+
200
+ class ICE_API NativeInfo : public virtual IceUtil::Shared
201
+ {
202
+ public:
203
+
204
+ virtual ~NativeInfo();
205
+
193
206
  NativeInfo(SOCKET socketFd = INVALID_SOCKET) : _fd(socketFd)
207
+ #if !defined(ICE_USE_IOCP) && !defined(ICE_OS_UWP)
208
+ , _newFd(INVALID_SOCKET)
209
+ #endif
194
210
  {
195
211
  }
196
212
 
@@ -199,27 +215,55 @@ public:
199
215
  return _fd;
200
216
  }
201
217
 
218
+ void setReadyCallback(const ReadyCallbackPtr& callback);
219
+
220
+ void ready(SocketOperation operation, bool value)
221
+ {
222
+ assert(_readyCallback);
223
+ _readyCallback->ready(operation, value);
224
+ }
225
+
202
226
  //
203
227
  // This is implemented by transceiver and acceptor implementations.
204
228
  //
205
229
  #if defined(ICE_USE_IOCP)
206
230
  virtual AsyncInfo* getAsyncInfo(SocketOperation) = 0;
207
231
  void initialize(HANDLE, ULONG_PTR);
208
- void completed(SocketOperation operation);
209
- #elif defined(ICE_OS_WINRT)
210
- virtual void setCompletedHandler(SocketOperationCompletedHandler^) = 0;
211
- void completed(SocketOperation operation);
232
+ void completed(SocketOperation);
233
+ #elif defined(ICE_OS_UWP)
234
+ virtual AsyncInfo* getAsyncInfo(SocketOperation) = 0;
235
+ void queueAction(SocketOperation, Windows::Foundation::IAsyncAction^, bool = false);
236
+ void queueOperation(SocketOperation, Windows::Foundation::IAsyncOperation<unsigned int>^);
237
+ void setCompletedHandler(SocketOperationCompletedHandler^);
238
+ void completed(SocketOperation);
239
+ #else
240
+ bool newFd();
241
+ void setNewFd(SOCKET);
212
242
  #endif
213
243
 
214
244
  protected:
215
245
 
216
246
  SOCKET _fd;
247
+ ReadyCallbackPtr _readyCallback;
217
248
 
218
249
  #if defined(ICE_USE_IOCP)
219
250
  HANDLE _handle;
220
251
  ULONG_PTR _key;
221
- #elif defined(ICE_OS_WINRT)
252
+ #elif defined(ICE_OS_UWP)
253
+ bool checkIfErrorOrCompleted(SocketOperation, Windows::Foundation::IAsyncInfo^, bool = false);
222
254
  SocketOperationCompletedHandler^ _completedHandler;
255
+ #else
256
+ SOCKET _newFd;
257
+ #endif
258
+
259
+ private:
260
+
261
+ #if defined(ICE_OS_UWP)
262
+ void queueActionCompleted(SocketOperation, AsyncInfo* asyncInfo, Windows::Foundation::IAsyncAction^,
263
+ Windows::Foundation::AsyncStatus);
264
+ void queueOperationCompleted(SocketOperation, AsyncInfo* asyncInfo,
265
+ Windows::Foundation::IAsyncOperation<unsigned int>^,
266
+ Windows::Foundation::AsyncStatus);
223
267
  #endif
224
268
  };
225
269
  typedef IceUtil::Handle<NativeInfo> NativeInfoPtr;
@@ -229,7 +273,7 @@ ICE_API std::string errorToStringDNS(int);
229
273
  ICE_API std::vector<Address> getAddresses(const std::string&, int, ProtocolSupport, Ice::EndpointSelectionType, bool,
230
274
  bool);
231
275
  ICE_API ProtocolSupport getProtocolSupport(const Address&);
232
- ICE_API Address getAddressForServer(const std::string&, int, ProtocolSupport, bool);
276
+ ICE_API Address getAddressForServer(const std::string&, int, ProtocolSupport, bool, bool);
233
277
  ICE_API int compareAddress(const Address&, const Address&);
234
278
 
235
279
  ICE_API bool isIPv6Supported();
@@ -249,6 +293,7 @@ ICE_API std::string addressesToString(const Address&, const Address&, bool);
249
293
  ICE_API bool isAddressValid(const Address&);
250
294
 
251
295
  ICE_API std::vector<std::string> getHostsForEndpointExpand(const std::string&, ProtocolSupport, bool);
296
+ ICE_API std::vector<std::string> getInterfacesForMulticast(const std::string&, ProtocolSupport);
252
297
 
253
298
  ICE_API std::string inetAddrToString(const Address&);
254
299
  ICE_API int getPort(const Address&);
@@ -268,10 +313,10 @@ ICE_API void setMcastGroup(SOCKET, const Address&, const std::string&);
268
313
  ICE_API void setMcastInterface(SOCKET, const std::string&, const Address&);
269
314
  ICE_API void setMcastTtl(SOCKET, int, const Address&);
270
315
  ICE_API void setReuseAddress(SOCKET, bool);
316
+ ICE_API Address doBind(SOCKET, const Address&, const std::string& intf = "");
317
+ ICE_API void doListen(SOCKET, int);
271
318
 
272
- ICE_API Address doBind(SOCKET, const Address&);
273
-
274
- #ifndef ICE_OS_WINRT
319
+ #ifndef ICE_OS_UWP
275
320
  ICE_API bool interrupted();
276
321
  ICE_API bool acceptInterrupted();
277
322
  ICE_API bool noBuffers();
@@ -284,7 +329,6 @@ ICE_API bool connectionRefused();
284
329
  ICE_API bool connectInProgress();
285
330
  ICE_API bool connectionLost();
286
331
 
287
- ICE_API void doListen(SOCKET, int);
288
332
  ICE_API bool doConnect(SOCKET, const Address&, const Address&);
289
333
  ICE_API void doFinishConnect(SOCKET);
290
334
  ICE_API SOCKET doAccept(SOCKET);
@@ -295,14 +339,47 @@ ICE_API int getSocketErrno();
295
339
 
296
340
  ICE_API Address getNumericAddress(const std::string&);
297
341
  #else
298
- ICE_API void checkConnectErrorCode(const char*, int, HRESULT, Windows::Networking::HostName^);
342
+ ICE_API void checkConnectErrorCode(const char*, int, HRESULT);
299
343
  ICE_API void checkErrorCode(const char*, int, HRESULT);
344
+
345
+ //
346
+ // UWP impose some restriction on operations that block when run from
347
+ // STA thread and throws concurrency::invalid_operation. We cannot
348
+ // directly call task::get or task::way, this helper method is used to
349
+ // workaround this limitation.
350
+ //
351
+ template<typename T>
352
+ T runSync(Windows::Foundation::IAsyncOperation<T>^ operation)
353
+ {
354
+ std::promise<T> p;
355
+ concurrency::create_task(operation).then(
356
+ [&p](concurrency::task<T> t)
357
+ {
358
+ try
359
+ {
360
+ p.set_value(t.get());
361
+ }
362
+ catch(...)
363
+ {
364
+ p.set_exception(std::current_exception());
365
+ }
366
+ },
367
+ concurrency::task_continuation_context::use_arbitrary());
368
+
369
+ return p.get_future().get();
370
+ }
371
+
372
+ ICE_API void runSync(Windows::Foundation::IAsyncAction^ action);
373
+
300
374
  #endif
301
375
 
302
376
  #if defined(ICE_USE_IOCP)
303
377
  ICE_API void doConnectAsync(SOCKET, const Address&, const Address&, AsyncInfo&);
304
378
  ICE_API void doFinishConnectAsync(SOCKET, AsyncInfo&);
305
379
  #endif
380
+
381
+ ICE_API bool isIpAddress(const std::string&);
382
+
306
383
  }
307
384
 
308
385
  #endif
@@ -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.
@@ -17,7 +17,7 @@
17
17
  namespace IceInternal
18
18
  {
19
19
 
20
- #ifdef ICE_OS_WINRT
20
+ #ifdef ICE_OS_UWP
21
21
  struct ICE_API Address;
22
22
  #else
23
23
  union Address;
@@ -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.
@@ -17,7 +17,12 @@ using namespace IceInternal;
17
17
 
18
18
  IceUtil::Shared* IceInternal::upCast(NetworkProxy* p) { return p; }
19
19
 
20
- #ifndef ICE_OS_WINRT
20
+ NetworkProxy::~NetworkProxy()
21
+ {
22
+ // Out of line to avoid weak vtable
23
+ }
24
+
25
+ #ifndef ICE_OS_UWP
21
26
 
22
27
  namespace
23
28
  {
@@ -76,6 +81,7 @@ private:
76
81
  SOCKSNetworkProxy::SOCKSNetworkProxy(const string& host, int port) : _host(host), _port(port)
77
82
  {
78
83
  assert(!host.empty());
84
+ memset(&_address, 0, sizeof(_address));
79
85
  }
80
86
 
81
87
  SOCKSNetworkProxy::SOCKSNetworkProxy(const Address& addr) : _port(0), _address(addr)
@@ -118,7 +124,7 @@ SOCKSNetworkProxy::beginWrite(const Address& addr, Buffer& buf)
118
124
  SocketOperation
119
125
  SOCKSNetworkProxy::endWrite(Buffer& buf)
120
126
  {
121
- // Once the request is sent, read the response
127
+ // Once the request is sent, read the response
122
128
  return buf.i != buf.b.end() ? SocketOperationWrite : SocketOperationRead;
123
129
  }
124
130
 
@@ -162,7 +168,7 @@ NetworkProxyPtr
162
168
  SOCKSNetworkProxy::resolveHost(ProtocolSupport protocol) const
163
169
  {
164
170
  assert(!_host.empty());
165
- return new SOCKSNetworkProxy(getAddresses(_host, _port, protocol, Ice::Random, false, true)[0]);
171
+ return new SOCKSNetworkProxy(getAddresses(_host, _port, protocol, Ice::ICE_ENUM(EndpointSelectionType, Random), false, true)[0]);
166
172
  }
167
173
 
168
174
  Address
@@ -184,13 +190,14 @@ SOCKSNetworkProxy::getProtocolSupport() const
184
190
  return EnableIPv4;
185
191
  }
186
192
 
187
- HTTPNetworkProxy::HTTPNetworkProxy(const string& host, int port) :
193
+ HTTPNetworkProxy::HTTPNetworkProxy(const string& host, int port) :
188
194
  _host(host), _port(port), _protocol(EnableBoth)
189
195
  {
190
196
  assert(!host.empty());
197
+ memset(&_address, 0, sizeof(_address));
191
198
  }
192
199
 
193
- HTTPNetworkProxy::HTTPNetworkProxy(const Address& addr, ProtocolSupport protocol) :
200
+ HTTPNetworkProxy::HTTPNetworkProxy(const Address& addr, ProtocolSupport protocol) :
194
201
  _port(0), _address(addr), _protocol(protocol)
195
202
  {
196
203
  }
@@ -212,7 +219,7 @@ HTTPNetworkProxy::beginWrite(const Address& addr, Buffer& buf)
212
219
  SocketOperation
213
220
  HTTPNetworkProxy::endWrite(Buffer& buf)
214
221
  {
215
- // Once the request is sent, read the response
222
+ // Once the request is sent, read the response
216
223
  return buf.i != buf.b.end() ? SocketOperationWrite : SocketOperationRead;
217
224
  }
218
225
 
@@ -240,7 +247,7 @@ HTTPNetworkProxy::endRead(Buffer& buf)
240
247
  // Read one more byte, we can't easily read bytes in advance
241
248
  // since the transport implenentation might be be able to read
242
249
  // the data from the memory instead of the socket. This is for
243
- // instance the case with the OpenSSL transport (or we would
250
+ // instance the case with the OpenSSL transport (or we would
244
251
  // have to use a buffering BIO).
245
252
  //
246
253
  buf.b.resize(buf.b.size() + 1);
@@ -265,7 +272,7 @@ NetworkProxyPtr
265
272
  HTTPNetworkProxy::resolveHost(ProtocolSupport protocol) const
266
273
  {
267
274
  assert(!_host.empty());
268
- return new HTTPNetworkProxy(getAddresses(_host, _port, protocol, Ice::Random, false, true)[0], protocol);
275
+ return new HTTPNetworkProxy(getAddresses(_host, _port, protocol, Ice::ICE_ENUM(EndpointSelectionType, Random), false, true)[0], protocol);
269
276
  }
270
277
 
271
278
  Address
@@ -297,8 +304,8 @@ IceInternal::createNetworkProxy(const Ice::PropertiesPtr& properties, ProtocolSu
297
304
  proxyHost = properties->getProperty("Ice.SOCKSProxyHost");
298
305
  if(!proxyHost.empty())
299
306
  {
300
- #ifdef ICE_OS_WINRT
301
- throw Ice::InitializationException(__FILE__, __LINE__, "SOCKS proxy not supported with WinRT");
307
+ #ifdef ICE_OS_UWP
308
+ throw Ice::InitializationException(__FILE__, __LINE__, "SOCKS proxy not supported with UWP");
302
309
  #else
303
310
  if(protocolSupport == EnableIPv6)
304
311
  {
@@ -312,12 +319,12 @@ IceInternal::createNetworkProxy(const Ice::PropertiesPtr& properties, ProtocolSu
312
319
  proxyHost = properties->getProperty("Ice.HTTPProxyHost");
313
320
  if(!proxyHost.empty())
314
321
  {
315
- #ifdef ICE_OS_WINRT
316
- throw Ice::InitializationException(__FILE__, __LINE__, "HTTP proxy not supported with WinRT");
322
+ #ifdef ICE_OS_UWP
323
+ throw Ice::InitializationException(__FILE__, __LINE__, "HTTP proxy not supported with UWP");
317
324
  #else
318
325
  return new HTTPNetworkProxy(proxyHost, properties->getPropertyAsIntWithDefault("Ice.HTTPProxyPort", 1080));
319
326
  #endif
320
327
  }
321
-
328
+
322
329
  return 0;
323
330
  }
@@ -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,14 +11,17 @@
11
11
  #define ICE_NETWORK_PROXY_H
12
12
 
13
13
  #include <Ice/Network.h>
14
+ #include <Ice/Buffer.h>
14
15
 
15
16
  namespace IceInternal
16
17
  {
17
18
 
18
- class ICE_API NetworkProxy : virtual public IceUtil::Shared
19
+ class ICE_API NetworkProxy : public virtual IceUtil::Shared
19
20
  {
20
21
  public:
21
22
 
23
+ virtual ~NetworkProxy();
24
+
22
25
  //
23
26
  // Write the connection request on the connection established
24
27
  // with the network proxy server. This is called right after
@@ -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.
@@ -12,17 +12,22 @@
12
12
  #include <Ice/IncomingAsync.h>
13
13
  #include <Ice/IncomingRequest.h>
14
14
  #include <Ice/LocalException.h>
15
- #include <Ice/Stream.h>
16
15
  #include <Ice/SlicedData.h>
17
16
 
18
17
  using namespace std;
19
18
  using namespace Ice;
20
19
  using namespace IceInternal;
21
20
 
21
+ namespace Ice
22
+ {
23
+ const Current emptyCurrent = Current();
24
+ }
25
+
26
+ #ifndef ICE_CPP11_MAPPING
22
27
  Object* Ice::upCast(Object* p) { return p; }
23
28
 
24
- void
25
- Ice::__patch(ObjectPtr& obj, const ObjectPtr& v)
29
+ void
30
+ Ice::_icePatchObjectPtr(ObjectPtr& obj, const ObjectPtr& v)
26
31
  {
27
32
  obj = v;
28
33
  }
@@ -38,22 +43,46 @@ Ice::Object::operator<(const Object& r) const
38
43
  {
39
44
  return this < &r;
40
45
  }
41
-
46
+ #endif
42
47
 
43
48
  namespace
44
49
  {
45
50
 
46
- const string __Ice__Object_ids[] =
51
+ const string object_ids[] =
47
52
  {
48
53
  "::Ice::Object"
49
54
  };
50
55
 
56
+ const string object_all[] =
57
+ {
58
+ "ice_id",
59
+ "ice_ids",
60
+ "ice_isA",
61
+ "ice_ping"
62
+ };
63
+
64
+ }
65
+
66
+ #ifndef ICE_CPP11_MAPPING
67
+ Ice::DispatchInterceptorAsyncCallback::~DispatchInterceptorAsyncCallback()
68
+ {
69
+ // Out of line to avoid weak vtable
70
+ }
71
+ #endif
72
+
73
+ Ice::Request::~Request()
74
+ {
75
+ // Out of line to avoid weak vtable
51
76
  }
52
77
 
53
78
  bool
79
+ #ifdef ICE_CPP11_MAPPING
80
+ Ice::Object::ice_isA(string s, const Current&) const
81
+ #else
54
82
  Ice::Object::ice_isA(const string& s, const Current&) const
83
+ #endif
55
84
  {
56
- return s == __Ice__Object_ids[0];
85
+ return s == object_ids[0];
57
86
  }
58
87
 
59
88
  void
@@ -65,21 +94,26 @@ Ice::Object::ice_ping(const Current&) const
65
94
  vector<string>
66
95
  Ice::Object::ice_ids(const Current&) const
67
96
  {
68
- return vector<string>(&__Ice__Object_ids[0], &__Ice__Object_ids[1]);
97
+ return vector<string>(&object_ids[0], &object_ids[1]);
69
98
  }
70
99
 
100
+ #ifdef ICE_CPP11_MAPPING
101
+ string
102
+ #else
71
103
  const string&
104
+ #endif
72
105
  Ice::Object::ice_id(const Current&) const
73
106
  {
74
- return __Ice__Object_ids[0];
107
+ return object_ids[0];
75
108
  }
76
109
 
77
110
  const ::std::string&
78
111
  Ice::Object::ice_staticId()
79
112
  {
80
- return __Ice__Object_ids[0];
113
+ return object_ids[0];
81
114
  }
82
115
 
116
+ #ifndef ICE_CPP11_MAPPING
83
117
  Ice::ObjectPtr
84
118
  Ice::Object::ice_clone() const
85
119
  {
@@ -87,191 +121,167 @@ Ice::Object::ice_clone() const
87
121
  return 0; // avoid warning with some compilers
88
122
  }
89
123
 
90
- void
91
- Ice::Object::ice_preMarshal()
92
- {
93
- }
94
-
95
- void
96
- Ice::Object::ice_postUnmarshal()
97
- {
98
- }
99
-
100
- DispatchStatus
101
- Ice::Object::___ice_isA(Incoming& __inS, const Current& __current)
124
+ Ice::SlicedDataPtr
125
+ Ice::Object::ice_getSlicedData() const
102
126
  {
103
- BasicStream* __is = __inS.startReadParams();
104
- string __id;
105
- __is->read(__id, false);
106
- __inS.endReadParams();
107
- bool __ret = ice_isA(__id, __current);
108
- BasicStream* __os = __inS.__startWriteParams(DefaultFormat);
109
- __os->write(__ret);
110
- __inS.__endWriteParams(true);
111
- return DispatchOK;
127
+ return 0;
112
128
  }
129
+ #endif
113
130
 
114
- DispatchStatus
115
- Ice::Object::___ice_ping(Incoming& __inS, const Current& __current)
116
- {
117
- __inS.readEmptyParams();
118
- ice_ping(__current);
119
- __inS.__writeEmptyParams();
120
- return DispatchOK;
131
+ bool
132
+ Ice::Object::_iceD_ice_isA(Incoming& inS, const Current& current)
133
+ {
134
+ InputStream* istr = inS.startReadParams();
135
+ string iceP_id;
136
+ istr->read(iceP_id, false);
137
+ inS.endReadParams();
138
+ #ifdef ICE_CPP11_MAPPING
139
+ bool ret = ice_isA(move(iceP_id), current);
140
+ #else
141
+ bool ret = ice_isA(iceP_id, current);
142
+ #endif
143
+ OutputStream* ostr = inS.startWriteParams();
144
+ ostr->write(ret);
145
+ inS.endWriteParams();
146
+ return true;
121
147
  }
122
148
 
123
- DispatchStatus
124
- Ice::Object::___ice_ids(Incoming& __inS, const Current& __current)
149
+ bool
150
+ Ice::Object::_iceD_ice_ping(Incoming& inS, const Current& current)
125
151
  {
126
- __inS.readEmptyParams();
127
- vector<string> __ret = ice_ids(__current);
128
- BasicStream* __os = __inS.__startWriteParams(DefaultFormat);
129
- __os->write(&__ret[0], &__ret[0] + __ret.size(), false);
130
- __inS.__endWriteParams(true);
131
- return DispatchOK;
152
+ inS.readEmptyParams();
153
+ ice_ping(current);
154
+ inS.writeEmptyParams();
155
+ return true;
132
156
  }
133
157
 
134
- DispatchStatus
135
- Ice::Object::___ice_id(Incoming& __inS, const Current& __current)
158
+ bool
159
+ Ice::Object::_iceD_ice_ids(Incoming& inS, const Current& current)
136
160
  {
137
- __inS.readEmptyParams();
138
- string __ret = ice_id(__current);
139
- BasicStream* __os = __inS.__startWriteParams(DefaultFormat);
140
- __os->write(__ret, false);
141
- __inS.__endWriteParams(true);
142
- return DispatchOK;
161
+ inS.readEmptyParams();
162
+ vector<string> ret = ice_ids(current);
163
+ OutputStream* ostr = inS.startWriteParams();
164
+ ostr->write(&ret[0], &ret[0] + ret.size(), false);
165
+ inS.endWriteParams();
166
+ return true;
143
167
  }
144
168
 
145
- Ice::Int
146
- Ice::Object::ice_operationAttributes(const string&) const
169
+ bool
170
+ Ice::Object::_iceD_ice_id(Incoming& inS, const Current& current)
147
171
  {
148
- return 0;
172
+ inS.readEmptyParams();
173
+ string ret = ice_id(current);
174
+ OutputStream* ostr = inS.startWriteParams();
175
+ ostr->write(ret, false);
176
+ inS.endWriteParams();
177
+ return true;
149
178
  }
150
179
 
151
-
152
- string Ice::Object::__all[] =
153
- {
154
- "ice_id",
155
- "ice_ids",
156
- "ice_isA",
157
- "ice_ping"
158
- };
159
-
160
-
161
- DispatchStatus
180
+ bool
181
+ #ifdef ICE_CPP11_MAPPING
182
+ Ice::Object::ice_dispatch(Request& request, std::function<bool()> r, std::function<bool(std::exception_ptr)> e)
183
+ #else
162
184
  Ice::Object::ice_dispatch(Request& request, const DispatchInterceptorAsyncCallbackPtr& cb)
185
+ #endif
163
186
  {
164
- class PushCb
187
+ IceInternal::Incoming& in = dynamic_cast<IceInternal::IncomingRequest&>(request)._in;
188
+ in.startOver();
189
+ #ifdef ICE_CPP11_MAPPING
190
+ if(r || e)
191
+ {
192
+ in.push(r, e);
193
+ #else
194
+ if(cb)
165
195
  {
166
- public:
167
- PushCb(IceInternal::Incoming& in, const DispatchInterceptorAsyncCallbackPtr& cb) :
168
- _in(in),
169
- _cb(cb)
196
+ in.push(cb);
197
+ #endif
198
+ try
170
199
  {
171
- if(_cb != 0)
172
- {
173
- _in.push(_cb);
174
- }
200
+ bool sync = _iceDispatch(in, in.getCurrent());
201
+ in.pop();
202
+ return sync;
175
203
  }
176
-
177
- ~PushCb()
204
+ catch(...)
178
205
  {
179
- if(_cb != 0)
180
- {
181
- _in.pop();
182
- }
206
+ in.pop();
207
+ throw;
183
208
  }
184
- private:
185
- IceInternal::Incoming& _in;
186
- const DispatchInterceptorAsyncCallbackPtr& _cb;
187
- };
188
-
189
-
190
- IceInternal::Incoming& in = dynamic_cast<IceInternal::IncomingRequest&>(request)._in;
191
-
192
- PushCb pusbCb(in, cb);
193
- in.startOver(); // may raise ResponseSentException
194
- return __dispatch(in, in.getCurrent());
209
+ }
210
+ else
211
+ {
212
+ return _iceDispatch(in, in.getCurrent());
213
+ }
195
214
  }
196
215
 
197
- DispatchStatus
198
- Ice::Object::__dispatch(Incoming& in, const Current& current)
216
+ bool
217
+ Ice::Object::_iceDispatch(Incoming& in, const Current& current)
199
218
  {
200
- pair<string*, string*> r =
201
- equal_range(__all, __all + sizeof(__all) / sizeof(string), current.operation);
219
+ pair<const string*, const string*> r = equal_range(object_all, object_all + sizeof(object_all) / sizeof(string), current.operation);
202
220
 
203
221
  if(r.first == r.second)
204
222
  {
205
223
  throw OperationNotExistException(__FILE__, __LINE__, current.id, current.facet, current.operation);
206
- }
224
+ }
207
225
 
208
- switch(r.first - __all)
226
+ switch(r.first - object_all)
209
227
  {
210
228
  case 0:
211
229
  {
212
- return ___ice_id(in, current);
230
+ return _iceD_ice_id(in, current);
213
231
  }
214
232
  case 1:
215
233
  {
216
- return ___ice_ids(in, current);
234
+ return _iceD_ice_ids(in, current);
217
235
  }
218
236
  case 2:
219
237
  {
220
- return ___ice_isA(in, current);
238
+ return _iceD_ice_isA(in, current);
221
239
  }
222
240
  case 3:
223
241
  {
224
- return ___ice_ping(in, current);
242
+ return _iceD_ice_ping(in, current);
243
+ }
244
+ default:
245
+ {
246
+ assert(false);
247
+ throw OperationNotExistException(__FILE__, __LINE__, current.id, current.facet, current.operation);
225
248
  }
226
249
  }
227
-
228
- assert(false);
229
- throw OperationNotExistException(__FILE__, __LINE__, current.id, current.facet, current.operation);
230
250
  }
231
251
 
252
+ #ifndef ICE_CPP11_MAPPING
232
253
  void
233
- Ice::Object::__write(IceInternal::BasicStream* os) const
234
- {
235
- os->startWriteObject(0);
236
- __writeImpl(os);
237
- os->endWriteObject();
238
- }
239
-
240
- void
241
- Ice::Object::__read(IceInternal::BasicStream* is)
254
+ Ice::Object::ice_preMarshal()
242
255
  {
243
- is->startReadObject();
244
- __readImpl(is);
245
- is->endReadObject(false);
246
256
  }
247
-
248
- void
249
- Ice::Object::__write(const OutputStreamPtr& os) const
257
+
258
+ void
259
+ Ice::Object::ice_postUnmarshal()
250
260
  {
251
- os->startObject(0);
252
- __writeImpl(os);
253
- os->endObject();
254
261
  }
255
-
256
- void
257
- Ice::Object::__read(const InputStreamPtr& is)
262
+
263
+ void
264
+ Ice::Object::_iceWrite(Ice::OutputStream* os) const
258
265
  {
259
- is->startObject();
260
- __readImpl(is);
261
- is->endObject(false);
266
+ os->startValue(0);
267
+ _iceWriteImpl(os);
268
+ os->endValue();
262
269
  }
263
-
264
- void
265
- Ice::Object::__writeImpl(const OutputStreamPtr&) const
270
+
271
+ void
272
+ Ice::Object::_iceRead(Ice::InputStream* is)
266
273
  {
267
- throw MarshalException(__FILE__, __LINE__, "class was not generated with stream support");
274
+ is->startValue();
275
+ _iceReadImpl(is);
276
+ is->endValue(false);
268
277
  }
269
-
270
- void
271
- Ice::Object::__readImpl(const InputStreamPtr&)
278
+
279
+ Ice::Int
280
+ Ice::Object::ice_operationAttributes(const string&) const
272
281
  {
273
- throw MarshalException(__FILE__, __LINE__, "class was not generated with stream support");
282
+ return 0;
274
283
  }
284
+ #endif
275
285
 
276
286
  namespace
277
287
  {
@@ -281,34 +291,41 @@ operationModeToString(OperationMode mode)
281
291
  {
282
292
  switch(mode)
283
293
  {
284
- case Normal:
294
+ case ICE_ENUM(OperationMode, Normal):
285
295
  return "::Ice::Normal";
286
296
 
287
- case Nonmutating:
297
+ case ICE_ENUM(OperationMode, Nonmutating):
288
298
  return "::Ice::Nonmutating";
289
299
 
290
- case Idempotent:
300
+ case ICE_ENUM(OperationMode, Idempotent):
291
301
  return "::Ice::Idempotent";
292
302
  }
293
-
303
+ //
304
+ // This could not happen with C++11 strong type enums
305
+ //
306
+ #ifdef ICE_CPP11_MAPPING
307
+ assert(false);
308
+ return "";
309
+ #else
294
310
  ostringstream os;
295
311
  os << "unknown value (" << mode << ")";
296
312
  return os.str();
313
+ #endif
297
314
  }
298
315
 
299
316
  }
300
317
 
301
318
  void
302
- Ice::Object::__checkMode(OperationMode expected, OperationMode received)
319
+ Ice::Object::_iceCheckMode(OperationMode expected, OperationMode received)
303
320
  {
304
321
  if(expected != received)
305
322
  {
306
- if(expected == Idempotent && received == Nonmutating)
323
+ if(expected == ICE_ENUM(OperationMode, Idempotent) && received == ICE_ENUM(OperationMode, Nonmutating))
307
324
  {
308
- //
325
+ //
309
326
  // Fine: typically an old client still using the deprecated nonmutating keyword
310
327
  //
311
-
328
+
312
329
  //
313
330
  // Note that expected == Nonmutating and received == Idempotent is not ok:
314
331
  // the server may still use the deprecated nonmutating keyword to detect updates
@@ -318,19 +335,19 @@ Ice::Object::__checkMode(OperationMode expected, OperationMode received)
318
335
  else
319
336
  {
320
337
  Ice::MarshalException ex(__FILE__, __LINE__);
321
- std::ostringstream __reason;
322
- __reason << "unexpected operation mode. expected = "
323
- << operationModeToString(expected)
324
- << " received = "
325
- << operationModeToString(received);
326
- ex.reason = __reason.str();
338
+ std::ostringstream reason;
339
+ reason << "unexpected operation mode. expected = "
340
+ << operationModeToString(expected)
341
+ << " received = "
342
+ << operationModeToString(received);
343
+ ex.reason = reason.str();
327
344
  throw ex;
328
345
  }
329
346
  }
330
347
  }
331
348
 
332
- DispatchStatus
333
- Ice::Blobject::__dispatch(Incoming& in, const Current& current)
349
+ bool
350
+ Ice::Blobject::_iceDispatch(Incoming& in, const Current& current)
334
351
  {
335
352
  const Byte* inEncaps;
336
353
  Int sz;
@@ -339,24 +356,17 @@ Ice::Blobject::__dispatch(Incoming& in, const Current& current)
339
356
  bool ok = ice_invoke(vector<Byte>(inEncaps, inEncaps + sz), outEncaps, current);
340
357
  if(outEncaps.empty())
341
358
  {
342
- in.__writeParamEncaps(0, 0, ok);
343
- }
344
- else
345
- {
346
- in.__writeParamEncaps(&outEncaps[0], static_cast<Ice::Int>(outEncaps.size()), ok);
347
- }
348
- if(ok)
349
- {
350
- return DispatchOK;
359
+ in.writeParamEncaps(0, 0, ok);
351
360
  }
352
361
  else
353
362
  {
354
- return DispatchUserException;
363
+ in.writeParamEncaps(&outEncaps[0], static_cast<Ice::Int>(outEncaps.size()), ok);
355
364
  }
365
+ return true;
356
366
  }
357
367
 
358
- DispatchStatus
359
- Ice::BlobjectArray::__dispatch(Incoming& in, const Current& current)
368
+ bool
369
+ Ice::BlobjectArray::_iceDispatch(Incoming& in, const Current& current)
360
370
  {
361
371
  pair<const Byte*, const Byte*> inEncaps;
362
372
  Int sz;
@@ -366,75 +376,61 @@ Ice::BlobjectArray::__dispatch(Incoming& in, const Current& current)
366
376
  bool ok = ice_invoke(inEncaps, outEncaps, current);
367
377
  if(outEncaps.empty())
368
378
  {
369
- in.__writeParamEncaps(0, 0, ok);
370
- }
371
- else
372
- {
373
- in.__writeParamEncaps(&outEncaps[0], static_cast<Ice::Int>(outEncaps.size()), ok);
374
- }
375
- if(ok)
376
- {
377
- return DispatchOK;
379
+ in.writeParamEncaps(0, 0, ok);
378
380
  }
379
381
  else
380
382
  {
381
- return DispatchUserException;
383
+ in.writeParamEncaps(&outEncaps[0], static_cast<Ice::Int>(outEncaps.size()), ok);
382
384
  }
385
+ return true;
383
386
  }
384
387
 
385
- DispatchStatus
386
- Ice::BlobjectAsync::__dispatch(Incoming& in, const Current& current)
388
+ bool
389
+ Ice::BlobjectAsync::_iceDispatch(Incoming& in, const Current& current)
387
390
  {
388
391
  const Byte* inEncaps;
389
392
  Int sz;
390
393
  in.readParamEncaps(inEncaps, sz);
391
- AMD_Object_ice_invokePtr cb = new ::IceAsync::Ice::AMD_Object_ice_invoke(in);
392
- try
393
- {
394
- ice_invoke_async(cb, vector<Byte>(inEncaps, inEncaps + sz), current);
395
- }
396
- catch(const ::std::exception& ex)
397
- {
398
- cb->ice_exception(ex);
399
- }
400
- catch(...)
401
- {
402
- cb->ice_exception();
403
- }
404
- return DispatchAsync;
394
+ #ifdef ICE_CPP11_MAPPING
395
+ auto async = IncomingAsync::create(in);
396
+ ice_invokeAsync(vector<Byte>(inEncaps, inEncaps + sz),
397
+ [async](bool ok, const vector<Byte>& outEncaps)
398
+ {
399
+ if(outEncaps.empty())
400
+ {
401
+ async->writeParamEncaps(0, 0, ok);
402
+ }
403
+ else
404
+ {
405
+ async->writeParamEncaps(&outEncaps[0], static_cast<Int>(outEncaps.size()), ok);
406
+ }
407
+ async->completed();
408
+ },
409
+ async->exception(), current);
410
+ #else
411
+ ice_invoke_async(new ::IceAsync::Ice::AMD_Object_ice_invoke(in), vector<Byte>(inEncaps, inEncaps + sz), current);
412
+ #endif
413
+ return false;
405
414
  }
406
415
 
407
- DispatchStatus
408
- Ice::BlobjectArrayAsync::__dispatch(Incoming& in, const Current& current)
416
+ bool
417
+ Ice::BlobjectArrayAsync::_iceDispatch(Incoming& in, const Current& current)
409
418
  {
410
419
  pair<const Byte*, const Byte*> inEncaps;
411
420
  Int sz;
412
421
  in.readParamEncaps(inEncaps.first, sz);
413
422
  inEncaps.second = inEncaps.first + sz;
414
- AMD_Object_ice_invokePtr cb = new ::IceAsync::Ice::AMD_Object_ice_invoke(in);
415
- try
416
- {
417
- ice_invoke_async(cb, inEncaps, current);
418
- }
419
- catch(const ::std::exception& ex)
420
- {
421
- cb->ice_exception(ex);
422
- }
423
- catch(...)
424
- {
425
- cb->ice_exception();
426
- }
427
- return DispatchAsync;
428
- }
429
-
430
- void
431
- Ice::ice_writeObject(const OutputStreamPtr& out, const ObjectPtr& p)
432
- {
433
- out->write(p);
434
- }
435
-
436
- void
437
- Ice::ice_readObject(const InputStreamPtr& in, ObjectPtr& p)
438
- {
439
- in->read(p);
423
+ #ifdef ICE_CPP11_MAPPING
424
+ auto async = IncomingAsync::create(in);
425
+ ice_invokeAsync(inEncaps,
426
+ [async](bool ok, const pair<const Byte*, const Byte*>& outE)
427
+ {
428
+ async->writeParamEncaps(outE.first, static_cast<Int>(outE.second - outE.first), ok);
429
+ async->completed();
430
+ },
431
+ async->exception(), current);
432
+ #else
433
+ ice_invoke_async(new ::IceAsync::Ice::AMD_Object_ice_invoke(in), inEncaps, current);
434
+ #endif
435
+ return false;
440
436
  }