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.
@@ -13,14 +13,21 @@
13
13
  #include <Ice/LoggerF.h>
14
14
  #include <Ice/TraceLevelsF.h>
15
15
 
16
- namespace IceInternal
16
+ namespace Ice
17
17
  {
18
18
 
19
- class BasicStream;
19
+ class OutputStream;
20
+ class InputStream;
21
+
22
+ }
23
+
24
+ namespace IceInternal
25
+ {
20
26
 
21
- void traceSend(const BasicStream&, const ::Ice::LoggerPtr&, const TraceLevelsPtr&);
22
- void traceRecv(const BasicStream&, const ::Ice::LoggerPtr&, const TraceLevelsPtr&);
23
- void trace(const char*, const BasicStream&, const ::Ice::LoggerPtr&, const TraceLevelsPtr&);
27
+ void traceSend(const ::Ice::OutputStream&, const ::Ice::LoggerPtr&, const TraceLevelsPtr&);
28
+ void traceRecv(const ::Ice::InputStream&, const ::Ice::LoggerPtr&, const TraceLevelsPtr&);
29
+ void trace(const char*, const ::Ice::OutputStream&, const ::Ice::LoggerPtr&, const TraceLevelsPtr&);
30
+ void trace(const char*, const ::Ice::InputStream&, const ::Ice::LoggerPtr&, const TraceLevelsPtr&);
24
31
  void traceSlicing(const char*, const ::std::string&, const char *, const ::Ice::LoggerPtr&);
25
32
 
26
33
  }
@@ -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.
@@ -21,4 +21,3 @@ IceInternal::Transceiver::bind()
21
21
  assert(false);
22
22
  return 0;
23
23
  }
24
-
@@ -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.
@@ -21,23 +21,24 @@ namespace IceInternal
21
21
 
22
22
  class Buffer;
23
23
 
24
- class ICE_API Transceiver : virtual public ::IceUtil::Shared
24
+ class ICE_API Transceiver : public virtual ::IceUtil::Shared
25
25
  {
26
26
  public:
27
27
 
28
28
  virtual NativeInfoPtr getNativeInfo() = 0;
29
29
 
30
- virtual SocketOperation initialize(Buffer&, Buffer&, bool&) = 0;
30
+ virtual SocketOperation initialize(Buffer&, Buffer&) = 0;
31
31
  virtual SocketOperation closing(bool, const Ice::LocalException&) = 0;
32
+
32
33
  virtual void close() = 0;
33
34
  virtual EndpointIPtr bind();
34
35
  virtual SocketOperation write(Buffer&) = 0;
35
- virtual SocketOperation read(Buffer&, bool&) = 0;
36
- #if defined(ICE_USE_IOCP) || defined(ICE_OS_WINRT)
36
+ virtual SocketOperation read(Buffer&) = 0;
37
+ #if defined(ICE_USE_IOCP) || defined(ICE_OS_UWP)
37
38
  virtual bool startWrite(Buffer&) = 0;
38
39
  virtual void finishWrite(Buffer&) = 0;
39
40
  virtual void startRead(Buffer&) = 0;
40
- virtual void finishRead(Buffer&, bool&) = 0;
41
+ virtual void finishRead(Buffer&) = 0;
41
42
  #endif
42
43
 
43
44
  virtual std::string protocol() const = 0;
@@ -45,7 +46,7 @@ public:
45
46
  virtual std::string toDetailedString() const = 0;
46
47
  virtual Ice::ConnectionInfoPtr getInfo() const = 0;
47
48
  virtual void checkSendSize(const Buffer&) = 0;
48
- virtual void setBufferSize(int rcvSize, int sndSize) = 0;
49
+ virtual void setBufferSize(int, int) = 0;
49
50
  };
50
51
 
51
52
  }
@@ -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.
@@ -71,12 +71,6 @@ IceInternal::UdpConnector::operator==(const Connector& r) const
71
71
  return true;
72
72
  }
73
73
 
74
- bool
75
- IceInternal::UdpConnector::operator!=(const Connector& r) const
76
- {
77
- return !operator==(r);
78
- }
79
-
80
74
  bool
81
75
  IceInternal::UdpConnector::operator<(const Connector& r) const
82
76
  {
@@ -130,7 +124,7 @@ IceInternal::UdpConnector::UdpConnector(const ProtocolInstancePtr& instance, con
130
124
  const std::string& connectionId) :
131
125
  _instance(instance),
132
126
  _addr(addr),
133
- #ifndef ICE_OS_WINRT
127
+ #ifndef ICE_OS_UWP
134
128
  _sourceAddr(sourceAddr),
135
129
  #endif
136
130
  _mcastInterface(mcastInterface),
@@ -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.
@@ -28,7 +28,6 @@ public:
28
28
  virtual std::string toString() const;
29
29
 
30
30
  virtual bool operator==(const Connector&) const;
31
- virtual bool operator!=(const Connector&) const;
32
31
  virtual bool operator<(const Connector&) const;
33
32
 
34
33
  private:
@@ -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,7 +11,8 @@
11
11
  #include <Ice/Network.h>
12
12
  #include <Ice/UdpConnector.h>
13
13
  #include <Ice/UdpTransceiver.h>
14
- #include <Ice/BasicStream.h>
14
+ #include <Ice/OutputStream.h>
15
+ #include <Ice/InputStream.h>
15
16
  #include <Ice/LocalException.h>
16
17
  #include <Ice/Protocol.h>
17
18
  #include <Ice/ProtocolInstance.h>
@@ -22,7 +23,9 @@ using namespace std;
22
23
  using namespace Ice;
23
24
  using namespace IceInternal;
24
25
 
26
+ #ifndef ICE_CPP11_MAPPING
25
27
  IceUtil::Shared* IceInternal::upCast(UdpEndpointI* p) { return p; }
28
+ #endif
26
29
 
27
30
  extern "C"
28
31
  {
@@ -35,6 +38,26 @@ createIceUDP(const CommunicatorPtr& c, const string&, const StringSeq&)
35
38
 
36
39
  }
37
40
 
41
+ namespace Ice
42
+ {
43
+
44
+ ICE_API void
45
+ registerIceUDP(bool loadOnInitialize)
46
+ {
47
+ Ice::registerPluginFactory("IceUDP", createIceUDP, loadOnInitialize);
48
+ }
49
+
50
+ }
51
+
52
+ //
53
+ // Objective-C function to allow Objective-C programs to register plugin.
54
+ //
55
+ extern "C" ICE_API void
56
+ ICEregisterIceUDP(bool loadOnInitialize)
57
+ {
58
+ Ice::registerIceUDP(loadOnInitialize);
59
+ }
60
+
38
61
  IceInternal::UdpEndpointI::UdpEndpointI(const ProtocolInstancePtr& instance, const string& host, Int port,
39
62
  const Address& sourceAddr, const string& mcastInterface, Int mttl, bool conn,
40
63
  const string& conId, bool co) :
@@ -54,13 +77,13 @@ IceInternal::UdpEndpointI::UdpEndpointI(const ProtocolInstancePtr& instance) :
54
77
  {
55
78
  }
56
79
 
57
- IceInternal::UdpEndpointI::UdpEndpointI(const ProtocolInstancePtr& instance, BasicStream* s) :
80
+ IceInternal::UdpEndpointI::UdpEndpointI(const ProtocolInstancePtr& instance, InputStream* s) :
58
81
  IPEndpointI(instance, s),
59
82
  _mcastTtl(-1),
60
83
  _connect(false),
61
84
  _compress(false)
62
85
  {
63
- if(s->getReadEncoding() == Ice::Encoding_1_0)
86
+ if(s->getEncoding() == Ice::Encoding_1_0)
64
87
  {
65
88
  Ice::Byte b;
66
89
  s->read(b);
@@ -73,10 +96,25 @@ IceInternal::UdpEndpointI::UdpEndpointI(const ProtocolInstancePtr& instance, Bas
73
96
  s->read(const_cast<bool&>(_compress));
74
97
  }
75
98
 
99
+ void
100
+ IceInternal::UdpEndpointI::streamWriteImpl(OutputStream* s) const
101
+ {
102
+ IPEndpointI::streamWriteImpl(s);
103
+ if(s->getEncoding() == Ice::Encoding_1_0)
104
+ {
105
+ s->write(Ice::Protocol_1_0);
106
+ s->write(Ice::Encoding_1_0);
107
+ }
108
+ // Not transmitted.
109
+ //s->write(_connect);
110
+ s->write(_compress);
111
+ }
112
+
76
113
  EndpointInfoPtr
77
114
  IceInternal::UdpEndpointI::getInfo() const
78
115
  {
79
- Ice::UDPEndpointInfoPtr info = new InfoI<Ice::UDPEndpointInfo>(const_cast<UdpEndpointI*>(this));
116
+ Ice::UDPEndpointInfoPtr info = ICE_MAKE_SHARED(InfoI<Ice::UDPEndpointInfo>,
117
+ ICE_DYNAMIC_CAST(UdpEndpointI, ICE_SHARED_FROM_CONST_THIS(UdpEndpointI)));
80
118
  fillEndpointInfo(info.get());
81
119
  return info;
82
120
  }
@@ -90,7 +128,7 @@ IceInternal::UdpEndpointI::timeout() const
90
128
  EndpointIPtr
91
129
  IceInternal::UdpEndpointI::timeout(Int) const
92
130
  {
93
- return const_cast<UdpEndpointI*>(this);
131
+ return ICE_SHARED_FROM_CONST_THIS(UdpEndpointI);
94
132
  }
95
133
 
96
134
  bool
@@ -104,12 +142,12 @@ IceInternal::UdpEndpointI::compress(bool compress) const
104
142
  {
105
143
  if(compress == _compress)
106
144
  {
107
- return const_cast<UdpEndpointI*>(this);
145
+ return ICE_SHARED_FROM_CONST_THIS(UdpEndpointI);
108
146
  }
109
147
  else
110
148
  {
111
- return new UdpEndpointI(_instance, _host, _port, _sourceAddr, _mcastInterface, _mcastTtl, _connect,
112
- _connectionId, compress);
149
+ return ICE_MAKE_SHARED(UdpEndpointI, _instance, _host, _port, _sourceAddr, _mcastInterface, _mcastTtl,
150
+ _connect, _connectionId, compress);
113
151
  }
114
152
  }
115
153
 
@@ -122,7 +160,8 @@ IceInternal::UdpEndpointI::datagram() const
122
160
  TransceiverPtr
123
161
  IceInternal::UdpEndpointI::transceiver() const
124
162
  {
125
- return new UdpTransceiver(const_cast<UdpEndpointI*>(this), _instance, _host, _port, _mcastInterface, _connect);
163
+ return new UdpTransceiver(ICE_DYNAMIC_CAST(UdpEndpointI, ICE_SHARED_FROM_CONST_THIS(UdpEndpointI)), _instance,
164
+ _host, _port, _mcastInterface, _connect);
126
165
  }
127
166
 
128
167
  AcceptorPtr
@@ -134,8 +173,36 @@ IceInternal::UdpEndpointI::acceptor(const string&) const
134
173
  UdpEndpointIPtr
135
174
  IceInternal::UdpEndpointI::endpoint(const UdpTransceiverPtr& transceiver) const
136
175
  {
137
- return new UdpEndpointI(_instance, _host, transceiver->effectivePort(), _sourceAddr, _mcastInterface, _mcastTtl,
138
- _connect, _connectionId, _compress);
176
+ int port = transceiver->effectivePort();
177
+ if(port == _port)
178
+ {
179
+ return ICE_DYNAMIC_CAST(UdpEndpointI, ICE_SHARED_FROM_CONST_THIS(UdpEndpointI));
180
+ }
181
+ else
182
+ {
183
+ return ICE_MAKE_SHARED(UdpEndpointI, _instance, _host, port, _sourceAddr, _mcastInterface,_mcastTtl, _connect,
184
+ _connectionId, _compress);
185
+ }
186
+ }
187
+
188
+ void
189
+ IceInternal::UdpEndpointI::initWithOptions(vector<string>& args, bool oaEndpoint)
190
+ {
191
+ IPEndpointI::initWithOptions(args, oaEndpoint);
192
+
193
+ if(_mcastInterface == "*")
194
+ {
195
+ if(oaEndpoint)
196
+ {
197
+ const_cast<string&>(_mcastInterface) = string();
198
+ }
199
+ else
200
+ {
201
+ Ice::EndpointParseException ex(__FILE__, __LINE__);
202
+ ex.str = "`--interface *' not valid for proxy endpoint `" + toString() + "'";
203
+ throw ex;
204
+ }
205
+ }
139
206
  }
140
207
 
141
208
  string
@@ -175,7 +242,11 @@ IceInternal::UdpEndpointI::options() const
175
242
  }
176
243
 
177
244
  bool
245
+ #ifdef ICE_CPP11_MAPPING
246
+ IceInternal::UdpEndpointI::operator==(const Endpoint& r) const
247
+ #else
178
248
  IceInternal::UdpEndpointI::operator==(const LocalObject& r) const
249
+ #endif
179
250
  {
180
251
  if(!IPEndpointI::operator==(r))
181
252
  {
@@ -217,7 +288,11 @@ IceInternal::UdpEndpointI::operator==(const LocalObject& r) const
217
288
  }
218
289
 
219
290
  bool
291
+ #ifdef ICE_CPP11_MAPPING
292
+ IceInternal::UdpEndpointI::operator<(const Endpoint& r) const
293
+ #else
220
294
  IceInternal::UdpEndpointI::operator<(const LocalObject& r) const
295
+ #endif
221
296
  {
222
297
  const UdpEndpointI* p = dynamic_cast<const UdpEndpointI*>(&r);
223
298
  if(!p)
@@ -274,20 +349,6 @@ IceInternal::UdpEndpointI::operator<(const LocalObject& r) const
274
349
  return IPEndpointI::operator<(r);
275
350
  }
276
351
 
277
- void
278
- IceInternal::UdpEndpointI::streamWriteImpl(BasicStream* s) const
279
- {
280
- IPEndpointI::streamWriteImpl(s);
281
- if(s->getWriteEncoding() == Ice::Encoding_1_0)
282
- {
283
- s->write(Ice::Protocol_1_0);
284
- s->write(Ice::Encoding_1_0);
285
- }
286
- // Not transmitted.
287
- //s->write(_connect);
288
- s->write(_compress);
289
- }
290
-
291
352
  void
292
353
  IceInternal::UdpEndpointI::hashInit(Ice::Int& h) const
293
354
  {
@@ -406,8 +467,8 @@ IceInternal::UdpEndpointI::createConnector(const Address& address, const Network
406
467
  IPEndpointIPtr
407
468
  IceInternal::UdpEndpointI::createEndpoint(const string& host, int port, const string& connectionId) const
408
469
  {
409
- return new UdpEndpointI(_instance, host, port, _sourceAddr, _mcastInterface, _mcastTtl, _connect, connectionId,
410
- _compress);
470
+ return ICE_MAKE_SHARED(UdpEndpointI, _instance, host, port, _sourceAddr, _mcastInterface, _mcastTtl, _connect,
471
+ connectionId, _compress);
411
472
  }
412
473
 
413
474
  IceInternal::UdpEndpointFactory::UdpEndpointFactory(const ProtocolInstancePtr& instance) : _instance(instance)
@@ -433,15 +494,15 @@ IceInternal::UdpEndpointFactory::protocol() const
433
494
  EndpointIPtr
434
495
  IceInternal::UdpEndpointFactory::create(vector<string>& args, bool oaEndpoint) const
435
496
  {
436
- IPEndpointIPtr endpt = new UdpEndpointI(_instance);
497
+ IPEndpointIPtr endpt = ICE_MAKE_SHARED(UdpEndpointI, _instance);
437
498
  endpt->initWithOptions(args, oaEndpoint);
438
499
  return endpt;
439
500
  }
440
501
 
441
502
  EndpointIPtr
442
- IceInternal::UdpEndpointFactory::read(BasicStream* s) const
503
+ IceInternal::UdpEndpointFactory::read(InputStream* s) const
443
504
  {
444
- return new UdpEndpointI(_instance, s);
505
+ return ICE_MAKE_SHARED(UdpEndpointI, _instance, s);
445
506
  }
446
507
 
447
508
  void
@@ -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.
@@ -25,7 +25,9 @@ public:
25
25
  UdpEndpointI(const ProtocolInstancePtr&, const std::string&, Ice::Int, const Address&, const std::string&,
26
26
  Ice::Int, bool, const std::string&, bool);
27
27
  UdpEndpointI(const ProtocolInstancePtr&);
28
- UdpEndpointI(const ProtocolInstancePtr&, BasicStream*);
28
+ UdpEndpointI(const ProtocolInstancePtr&, Ice::InputStream*);
29
+
30
+ virtual void streamWriteImpl(Ice::OutputStream*) const;
29
31
 
30
32
  virtual Ice::EndpointInfoPtr getInfo() const;
31
33
 
@@ -39,16 +41,22 @@ public:
39
41
  virtual AcceptorPtr acceptor(const std::string&) const;
40
42
  virtual std::string options() const;
41
43
 
44
+ #ifdef ICE_CPP11_MAPPING
45
+ virtual bool operator==(const Ice::Endpoint&) const;
46
+ virtual bool operator<(const Ice::Endpoint&) const;
47
+ #else
42
48
  virtual bool operator==(const Ice::LocalObject&) const;
43
49
  virtual bool operator<(const Ice::LocalObject&) const;
50
+ #endif
44
51
 
45
52
  UdpEndpointIPtr endpoint(const UdpTransceiverPtr&) const;
46
53
 
47
54
  using IPEndpointI::connectionId;
48
55
 
56
+ virtual void initWithOptions(std::vector<std::string>&, bool);
57
+
49
58
  protected:
50
59
 
51
- virtual void streamWriteImpl(BasicStream*) const;
52
60
  virtual void hashInit(Ice::Int&) const;
53
61
  virtual void fillEndpointInfo(Ice::IPEndpointInfo*) const;
54
62
  virtual bool checkOption(const std::string&, const std::string&, const std::string&);
@@ -77,7 +85,7 @@ public:
77
85
  virtual Ice::Short type() const;
78
86
  virtual std::string protocol() const;
79
87
  virtual EndpointIPtr create(std::vector<std::string>&, bool) const;
80
- virtual EndpointIPtr read(BasicStream*) const;
88
+ virtual EndpointIPtr read(Ice::InputStream*) const;
81
89
  virtual void destroy();
82
90
 
83
91
  virtual EndpointFactoryPtr clone(const ProtocolInstancePtr&) const;
@@ -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,14 +17,14 @@
17
17
  #include <Ice/Properties.h>
18
18
  #include <IceUtil/StringUtil.h>
19
19
 
20
- #ifdef ICE_OS_WINRT
20
+ #ifdef ICE_OS_UWP
21
21
  # include <ppltasks.h> // For Concurrency::task
22
22
  #endif
23
23
 
24
24
  using namespace std;
25
25
  using namespace Ice;
26
26
  using namespace IceInternal;
27
- #ifdef ICE_OS_WINRT
27
+ #ifdef ICE_OS_UWP
28
28
  using namespace Platform;
29
29
  using namespace Windows::Foundation;
30
30
  using namespace Windows::Storage::Streams;
@@ -40,11 +40,11 @@ IceInternal::UdpTransceiver::getNativeInfo()
40
40
  return this;
41
41
  }
42
42
 
43
-
44
- #if defined(ICE_USE_IOCP)
43
+ #if defined(ICE_USE_IOCP) || defined(ICE_OS_UWP)
45
44
  AsyncInfo*
46
45
  IceInternal::UdpTransceiver::getAsyncInfo(SocketOperation status)
47
46
  {
47
+ #if defined(ICE_USE_IOCP)
48
48
  switch(status)
49
49
  {
50
50
  case SocketOperationRead:
@@ -55,31 +55,14 @@ IceInternal::UdpTransceiver::getAsyncInfo(SocketOperation status)
55
55
  assert(false);
56
56
  return 0;
57
57
  }
58
- }
59
- #elif defined(ICE_OS_WINRT)
60
- void
61
- IceInternal::UdpTransceiver::setCompletedHandler(SocketOperationCompletedHandler^ handler)
62
- {
63
- _completedHandler = handler;
64
- _writeOperationCompletedHandler = ref new AsyncOperationCompletedHandler<unsigned int>(
65
- [=] (IAsyncOperation<unsigned int>^ operation, Windows::Foundation::AsyncStatus status)
66
- {
67
- if(status != Windows::Foundation::AsyncStatus::Completed)
68
- {
69
- _write.count = SOCKET_ERROR;
70
- _write.error = operation->ErrorCode.Value;
71
- }
72
- else
73
- {
74
- _write.count = static_cast<int>(operation->GetResults());
75
- }
76
- _completedHandler(SocketOperationWrite);
77
- });
58
+ #elif defined(ICE_OS_UWP)
59
+ return &_write;
60
+ #endif
78
61
  }
79
62
  #endif
80
63
 
81
64
  SocketOperation
82
- IceInternal::UdpTransceiver::initialize(Buffer& /*readBuffer*/, Buffer& /*writeBuffer*/, bool& /*hasMoreData*/)
65
+ IceInternal::UdpTransceiver::initialize(Buffer& /*readBuffer*/, Buffer& /*writeBuffer*/)
83
66
  {
84
67
  if(_state == StateNeedConnect)
85
68
  {
@@ -90,10 +73,18 @@ IceInternal::UdpTransceiver::initialize(Buffer& /*readBuffer*/, Buffer& /*writeB
90
73
  {
91
74
  #if defined(ICE_USE_IOCP)
92
75
  doFinishConnectAsync(_fd, _write);
93
- #elif defined(ICE_OS_WINRT)
76
+ #elif defined(ICE_OS_UWP)
94
77
  if(_write.count == SOCKET_ERROR)
95
78
  {
96
- checkConnectErrorCode(__FILE__, __LINE__, _write.error, _addr.host);
79
+ try
80
+ {
81
+ checkConnectErrorCode(__FILE__, __LINE__, _write.error);
82
+ }
83
+ catch(Ice::DNSException& ex)
84
+ {
85
+ ex.host = wstringToString(_addr.host->RawName->Data(), Ice::getProcessStringConverter());
86
+ throw;
87
+ }
97
88
  }
98
89
  #else
99
90
  doFinishConnect(_fd);
@@ -115,16 +106,15 @@ IceInternal::UdpTransceiver::closing(bool, const Ice::LocalException&)
115
106
  void
116
107
  IceInternal::UdpTransceiver::close()
117
108
  {
118
- #ifdef ICE_OS_WINRT
109
+ #ifdef ICE_OS_UWP
119
110
  IceUtil::Mutex::Lock lock(_mutex);
120
111
  if(_readPending)
121
112
  {
122
113
  assert(_received.empty());
123
- _completedHandler(SocketOperationRead);
114
+ completed(SocketOperationRead);
124
115
  _readPending = false;
125
116
  }
126
117
  _received.clear();
127
- _completedHandler = nullptr;
128
118
  #endif
129
119
 
130
120
  assert(_fd != INVALID_SOCKET);
@@ -149,10 +139,10 @@ IceInternal::UdpTransceiver::bind()
149
139
  // address won't be the multicast address and the client will
150
140
  // therefore reject the datagram.
151
141
  //
152
- const_cast<Address&>(_addr) = getAddressForServer("", _port, getProtocolSupport(_addr), false);
142
+ const_cast<Address&>(_addr) = getAddressForServer("", _port, getProtocolSupport(_addr), false, false);
153
143
  #endif
154
144
 
155
- const_cast<Address&>(_addr) = doBind(_fd, _addr);
145
+ const_cast<Address&>(_addr) = doBind(_fd, _addr, _mcastInterface);
156
146
  if(getPort(_mcastAddr) == 0)
157
147
  {
158
148
  setPort(_mcastAddr, getPort(_addr));
@@ -192,7 +182,7 @@ IceInternal::UdpTransceiver::write(Buffer& buf)
192
182
  {
193
183
  return SocketOperationNone;
194
184
  }
195
- #ifdef ICE_OS_WINRT
185
+ #ifdef ICE_OS_UWP
196
186
  return SocketOperationWrite;
197
187
  #else
198
188
  assert(buf.i == buf.b.begin());
@@ -264,13 +254,13 @@ repeat:
264
254
  }
265
255
 
266
256
  SocketOperation
267
- IceInternal::UdpTransceiver::read(Buffer& buf, bool&)
257
+ IceInternal::UdpTransceiver::read(Buffer& buf)
268
258
  {
269
259
  if(buf.i == buf.b.end())
270
260
  {
271
261
  return SocketOperationNone;
272
262
  }
273
- #ifdef ICE_OS_WINRT
263
+ #ifdef ICE_OS_UWP
274
264
  return SocketOperationRead;
275
265
  #else
276
266
 
@@ -369,7 +359,7 @@ repeat:
369
359
  #endif
370
360
  }
371
361
 
372
- #if defined(ICE_USE_IOCP) || defined(ICE_OS_WINRT)
362
+ #if defined(ICE_USE_IOCP) || defined(ICE_OS_UWP)
373
363
  bool
374
364
  IceInternal::UdpTransceiver::startWrite(Buffer& buf)
375
365
  {
@@ -379,7 +369,7 @@ IceInternal::UdpTransceiver::startWrite(Buffer& buf)
379
369
  assert(min(_maxPacketSize, _sndSize - _udpOverhead) >= static_cast<int>(buf.b.size()));
380
370
  assert(_fd != INVALID_SOCKET);
381
371
 
382
- #ifdef ICE_OS_WINRT
372
+ #ifdef ICE_OS_UWP
383
373
  if(_state < StateConnected)
384
374
  {
385
375
  try
@@ -390,21 +380,15 @@ IceInternal::UdpTransceiver::startWrite(Buffer& buf)
390
380
  auto operation = safe_cast<DatagramSocket^>(_fd)->ConnectAsync(_addr.host, _addr.port);
391
381
  if(!checkIfErrorOrCompleted(SocketOperationConnect, operation))
392
382
  {
393
- SocketOperationCompletedHandler^ completed = _completedHandler;
394
383
  operation->Completed = ref new AsyncActionCompletedHandler(
395
- [=] (IAsyncAction^ info, Windows::Foundation::AsyncStatus status)
384
+ [this] (IAsyncAction^ info, Windows::Foundation::AsyncStatus status)
396
385
  {
397
- if(status != Windows::Foundation::AsyncStatus::Completed)
398
- {
399
- _write.count = SOCKET_ERROR;
400
- _write.error = info->ErrorCode.Value;
401
- }
402
- else
403
- {
404
- _write.count = 0;
405
- _writer = ref new DataWriter(safe_cast<DatagramSocket^>(_fd)->OutputStream);
406
- }
407
- completed(SocketOperationConnect);
386
+ //
387
+ // COMPILERFIX with VC141 using operator!= and operator== inside
388
+ // a lambda callback triggers a compiler bug, we move the code to
389
+ // a seperate private method to workaround the issue.
390
+ //
391
+ connectCompleted(info, status);
408
392
  });
409
393
  }
410
394
  else
@@ -418,25 +402,15 @@ IceInternal::UdpTransceiver::startWrite(Buffer& buf)
418
402
  auto operation = safe_cast<DatagramSocket^>(_fd)->GetOutputStreamAsync(_addr.host, _addr.port);
419
403
  if(!checkIfErrorOrCompleted(SocketOperationConnect, operation))
420
404
  {
421
- SocketOperationCompletedHandler^ completed = _completedHandler;
422
405
  operation->Completed = ref new AsyncOperationCompletedHandler<IOutputStream^>(
423
- [=] (IAsyncOperation<IOutputStream^>^ info, Windows::Foundation::AsyncStatus status)
406
+ [=](IAsyncOperation<IOutputStream^>^ info, Windows::Foundation::AsyncStatus status)
424
407
  {
425
- if(status != Windows::Foundation::AsyncStatus::Completed)
426
- {
427
- _write.count = SOCKET_ERROR;
428
- _write.error = info->ErrorCode.Value;
429
- }
430
- else
431
- {
432
- _write.count = 0;
433
- _writer = ref new DataWriter(info->GetResults());
434
- }
435
- if(_mcastAddr.host != nullptr)
436
- {
437
- setMcastGroup(_fd, _mcastAddr, "");
438
- }
439
- completed(SocketOperationConnect);
408
+ //
409
+ // COMPILERFIX with VC141 using operator!= and operator== inside
410
+ // a lambda callback triggers a compiler bug, we move the code to
411
+ // a seperate private method to workaround the issue.
412
+ //
413
+ getOutputStreamMcastCompleted(info, status);
440
414
  });
441
415
  }
442
416
  else
@@ -452,7 +426,7 @@ IceInternal::UdpTransceiver::startWrite(Buffer& buf)
452
426
  }
453
427
  catch(Platform::Exception^ ex)
454
428
  {
455
- checkConnectErrorCode(__FILE__, __LINE__, ex->HResult, _addr.host);
429
+ checkConnectErrorCode(__FILE__, __LINE__, ex->HResult);
456
430
  }
457
431
  return false;
458
432
  }
@@ -460,52 +434,16 @@ IceInternal::UdpTransceiver::startWrite(Buffer& buf)
460
434
  {
461
435
  try
462
436
  {
463
- SocketOperationCompletedHandler^ completed = _completedHandler;
464
437
  DatagramSocket^ fd = safe_cast<DatagramSocket^>(_fd);
465
438
  concurrency::create_task(fd->GetOutputStreamAsync(_peerAddr.host, _peerAddr.port)).then(
466
- [=,&buf](concurrency::task<IOutputStream^> task)
439
+ [=, &buf](concurrency::task<IOutputStream^> task)
467
440
  {
468
- try
469
- {
470
- DataWriter^ writer = ref new DataWriter(task.get());
471
- writer->WriteBytes(ref new Array<unsigned char>(&*buf.i, static_cast<int>(buf.b.size())));
472
- DataWriterStoreOperation^ operation = writer->StoreAsync();
473
-
474
- Windows::Foundation::AsyncStatus status = operation->Status;
475
- if(status == Windows::Foundation::AsyncStatus::Completed)
476
- {
477
- //
478
- // NOTE: unlike other methods, it's important to modify _write.count
479
- // _before_ calling checkIfErrorOrCompleted since this isn't called
480
- // with the connection mutex but from a Windows thread pool thread.
481
- // So we can't modify the _write structure after calling the
482
- // completed callback.
483
- //
484
- _write.count = operation->GetResults();
485
- completed(SocketOperationWrite);
486
- }
487
- else if(status == Windows::Foundation::AsyncStatus::Started)
488
- {
489
- operation->Completed = _writeOperationCompletedHandler;
490
- }
491
- else
492
- {
493
- if(_state < StateConnected)
494
- {
495
- checkConnectErrorCode(__FILE__, __LINE__, operation->ErrorCode.Value, _addr.host);
496
- }
497
- else
498
- {
499
- checkErrorCode(__FILE__, __LINE__, operation->ErrorCode.Value);
500
- }
501
- }
502
- }
503
- catch(Platform::Exception^ pex)
504
- {
505
- _write.count = SOCKET_ERROR;
506
- _write.error = pex->HResult;
507
- completed(SocketOperationWrite);
508
- }
441
+ //
442
+ // COMPILERFIX with VC141 using operator!= and operator== inside
443
+ // a lambda callback triggers a compiler bug, we move the code to
444
+ // a seperate private method to workaround the issue.
445
+ //
446
+ getOutputStreamCompleted(task, buf);
509
447
  });
510
448
  }
511
449
  catch(Platform::Exception^ ex)
@@ -519,15 +457,7 @@ IceInternal::UdpTransceiver::startWrite(Buffer& buf)
519
457
  try
520
458
  {
521
459
  _writer->WriteBytes(ref new Array<unsigned char>(&*buf.i, static_cast<int>(buf.b.size())));
522
- DataWriterStoreOperation^ operation = _writer->StoreAsync();
523
- if(checkIfErrorOrCompleted(SocketOperationWrite, operation))
524
- {
525
- _write.count = operation->GetResults();
526
- }
527
- else
528
- {
529
- operation->Completed = _writeOperationCompletedHandler;
530
- }
460
+ queueOperation(SocketOperationWrite, _writer->StoreAsync());
531
461
  }
532
462
  catch(Platform::Exception^ ex)
533
463
  {
@@ -541,7 +471,7 @@ IceInternal::UdpTransceiver::startWrite(Buffer& buf)
541
471
  int err;
542
472
  if(_state == StateConnected)
543
473
  {
544
- err = WSASend(_fd, &_write.buf, 1, &_write.count, 0, &_write, NULL);
474
+ err = WSASend(_fd, &_write.buf, 1, &_write.count, 0, &_write, ICE_NULLPTR);
545
475
  }
546
476
  else
547
477
  {
@@ -562,7 +492,7 @@ IceInternal::UdpTransceiver::startWrite(Buffer& buf)
562
492
  throw ex;
563
493
  }
564
494
  err = WSASendTo(_fd, &_write.buf, 1, &_write.count, 0, &_peerAddr.sa,
565
- len, &_write, NULL);
495
+ len, &_write, ICE_NULLPTR);
566
496
  }
567
497
 
568
498
  if(err == SOCKET_ERROR)
@@ -587,6 +517,76 @@ IceInternal::UdpTransceiver::startWrite(Buffer& buf)
587
517
  return true;
588
518
  }
589
519
 
520
+ #ifdef ICE_OS_UWP
521
+ void
522
+ IceInternal::UdpTransceiver::connectCompleted(Windows::Foundation::IAsyncAction^ action,
523
+ Windows::Foundation::AsyncStatus status)
524
+ {
525
+ if(status != Windows::Foundation::AsyncStatus::Completed)
526
+ {
527
+ _write.count = SOCKET_ERROR;
528
+ _write.error = action->ErrorCode.Value;
529
+ }
530
+ else
531
+ {
532
+ _write.count = 0;
533
+ _writer = ref new DataWriter(safe_cast<DatagramSocket^>(_fd)->OutputStream);
534
+ }
535
+ completed(SocketOperationConnect);
536
+ }
537
+
538
+ void
539
+ IceInternal::UdpTransceiver::getOutputStreamMcastCompleted(IAsyncOperation<IOutputStream^>^ operation,
540
+ Windows::Foundation::AsyncStatus status)
541
+ {
542
+ if(status != Windows::Foundation::AsyncStatus::Completed)
543
+ {
544
+ _write.count = SOCKET_ERROR;
545
+ _write.error = operation->ErrorCode.Value;
546
+ }
547
+ else
548
+ {
549
+ _write.count = 0;
550
+ _writer = ref new DataWriter(operation->GetResults());
551
+ }
552
+ if(_mcastAddr.host != nullptr)
553
+ {
554
+ setMcastGroup(_fd, _mcastAddr, "");
555
+ }
556
+ completed(SocketOperationConnect);
557
+ }
558
+
559
+ void
560
+ IceInternal::UdpTransceiver::getOutputStreamCompleted(concurrency::task<IOutputStream^> task, Buffer& buf)
561
+ {
562
+ try
563
+ {
564
+ DataWriter^ writer = ref new DataWriter(task.get());
565
+ writer->WriteBytes(ref new Array<unsigned char>(&*buf.i, static_cast<int>(buf.b.size())));
566
+ DataWriterStoreOperation^ operation = writer->StoreAsync();
567
+ if(operation->Status == Windows::Foundation::AsyncStatus::Completed)
568
+ {
569
+ //
570
+ // NOTE: unlike other methods, it's important to modify _write.count
571
+ // _before_ calling checkIfErrorOrCompleted since this isn't called
572
+ // with the connection mutex but from a Windows thread pool thread.
573
+ // So we can't modify the _write structure after calling the
574
+ // completed callback.
575
+ //
576
+ _write.count = operation->GetResults();
577
+ }
578
+ queueOperation(SocketOperationWrite, operation);
579
+ }
580
+ catch(Platform::Exception^ pex)
581
+ {
582
+ _write.count = SOCKET_ERROR;
583
+ _write.error = pex->HResult;
584
+ completed(SocketOperationWrite);
585
+ }
586
+ }
587
+
588
+ #endif
589
+
590
590
  void
591
591
  IceInternal::UdpTransceiver::finishWrite(Buffer& buf)
592
592
  {
@@ -597,7 +597,7 @@ IceInternal::UdpTransceiver::finishWrite(Buffer& buf)
597
597
 
598
598
  if(static_cast<int>(_write.count) == SOCKET_ERROR)
599
599
  {
600
- #ifndef ICE_OS_WINRT
600
+ #ifndef ICE_OS_UWP
601
601
  WSASetLastError(_write.error);
602
602
  if(connectionLost())
603
603
  {
@@ -627,13 +627,13 @@ IceInternal::UdpTransceiver::startRead(Buffer& buf)
627
627
  buf.b.resize(packetSize);
628
628
  buf.i = buf.b.begin();
629
629
  assert(!buf.b.empty() && buf.i != buf.b.end());
630
- #ifndef ICE_OS_WINRT
630
+ #ifndef ICE_OS_UWP
631
631
  _read.buf.len = packetSize;
632
632
  _read.buf.buf = reinterpret_cast<char*>(&*buf.i);
633
633
  int err;
634
634
  if(_state == StateConnected)
635
635
  {
636
- err = WSARecv(_fd, &_read.buf, 1, &_read.count, &_read.flags, &_read, NULL);
636
+ err = WSARecv(_fd, &_read.buf, 1, &_read.count, &_read.flags, &_read, ICE_NULLPTR);
637
637
  }
638
638
  else
639
639
  {
@@ -641,7 +641,7 @@ IceInternal::UdpTransceiver::startRead(Buffer& buf)
641
641
  _readAddrLen = static_cast<socklen_t>(sizeof(sockaddr_storage));
642
642
 
643
643
  err = WSARecvFrom(_fd, &_read.buf, 1, &_read.count, &_read.flags,
644
- &_readAddr.sa, &_readAddrLen, &_read, NULL);
644
+ &_readAddr.sa, &_readAddrLen, &_read, ICE_NULLPTR);
645
645
  }
646
646
 
647
647
  if(err == SOCKET_ERROR)
@@ -671,7 +671,7 @@ IceInternal::UdpTransceiver::startRead(Buffer& buf)
671
671
  assert(!_readPending);
672
672
  if(!_received.empty())
673
673
  {
674
- _completedHandler(SocketOperationRead);
674
+ completed(SocketOperationRead);
675
675
  }
676
676
  else
677
677
  {
@@ -681,9 +681,9 @@ IceInternal::UdpTransceiver::startRead(Buffer& buf)
681
681
  }
682
682
 
683
683
  void
684
- IceInternal::UdpTransceiver::finishRead(Buffer& buf, bool&)
684
+ IceInternal::UdpTransceiver::finishRead(Buffer& buf)
685
685
  {
686
- #ifdef ICE_OS_WINRT
686
+ #ifdef ICE_OS_UWP
687
687
  IceUtil::Mutex::Lock lock(_mutex);
688
688
  assert(!_readPending && (!_received.empty() || _fd == INVALID_SOCKET));
689
689
  if(_fd == INVALID_SOCKET)
@@ -787,7 +787,7 @@ IceInternal::UdpTransceiver::toString() const
787
787
  }
788
788
  else
789
789
  {
790
- #ifndef ICE_OS_WINRT
790
+ #ifndef ICE_OS_UWP
791
791
  s << fdToString(_fd);
792
792
  #else
793
793
  Address localAddr;
@@ -809,7 +809,15 @@ IceInternal::UdpTransceiver::toDetailedString() const
809
809
  {
810
810
  ostringstream os;
811
811
  os << toString();
812
- vector<string> intfs = getHostsForEndpointExpand(inetAddrToString(_addr), _instance->protocolSupport(), true);
812
+ vector<string> intfs;
813
+ if(isAddressValid(_mcastAddr))
814
+ {
815
+ intfs = getInterfacesForMulticast(_mcastInterface, getProtocolSupport(_mcastAddr));
816
+ }
817
+ else
818
+ {
819
+ intfs = getHostsForEndpointExpand(inetAddrToString(_addr), _instance->protocolSupport(), true);
820
+ }
813
821
  if(!intfs.empty())
814
822
  {
815
823
  os << "\nlocal interfaces = ";
@@ -821,8 +829,8 @@ IceInternal::UdpTransceiver::toDetailedString() const
821
829
  Ice::ConnectionInfoPtr
822
830
  IceInternal::UdpTransceiver::getInfo() const
823
831
  {
824
- Ice::UDPConnectionInfoPtr info = new Ice::UDPConnectionInfo();
825
- #if defined(ICE_OS_WINRT)
832
+ Ice::UDPConnectionInfoPtr info = ICE_MAKE_SHARED(Ice::UDPConnectionInfo);
833
+ #if defined(ICE_OS_UWP)
826
834
  if(isMulticast(_addr) || isAddressValid(_mcastAddr))
827
835
  {
828
836
  info->remotePort = 0;
@@ -897,7 +905,7 @@ IceInternal::UdpTransceiver::effectivePort() const
897
905
 
898
906
  IceInternal::UdpTransceiver::UdpTransceiver(const ProtocolInstancePtr& instance,
899
907
  const Address& addr,
900
- #ifdef ICE_OS_WINRT
908
+ #ifdef ICE_OS_UWP
901
909
  const Address&,
902
910
  const string&,
903
911
  int
@@ -915,7 +923,7 @@ IceInternal::UdpTransceiver::UdpTransceiver(const ProtocolInstancePtr& instance,
915
923
  #if defined(ICE_USE_IOCP)
916
924
  , _read(SocketOperationRead),
917
925
  _write(SocketOperationWrite)
918
- #elif defined(ICE_OS_WINRT)
926
+ #elif defined(ICE_OS_UWP)
919
927
  , _readPending(false)
920
928
  #endif
921
929
  {
@@ -923,7 +931,7 @@ IceInternal::UdpTransceiver::UdpTransceiver(const ProtocolInstancePtr& instance,
923
931
  setBufSize(-1, -1);
924
932
  setBlock(_fd, false);
925
933
 
926
- #ifndef ICE_OS_WINRT
934
+ #ifndef ICE_OS_UWP
927
935
  _mcastAddr.saStorage.ss_family = AF_UNSPEC;
928
936
  _peerAddr.saStorage.ss_family = AF_UNSPEC; // Not initialized yet.
929
937
 
@@ -972,7 +980,6 @@ IceInternal::UdpTransceiver::UdpTransceiver(const ProtocolInstancePtr& instance,
972
980
  });
973
981
  #endif
974
982
 
975
-
976
983
  #ifdef ICE_USE_IOCP
977
984
  //
978
985
  // On Windows when using IOCP, we must make sure that the socket is connected without
@@ -990,11 +997,11 @@ IceInternal::UdpTransceiver::UdpTransceiver(const UdpEndpointIPtr& endpoint, con
990
997
  _instance(instance),
991
998
  _incoming(true),
992
999
  _bound(false),
993
- _addr(getAddressForServer(host, port, instance->protocolSupport(), instance->preferIPv6())),
1000
+ _addr(getAddressForServer(host, port, instance->protocolSupport(), instance->preferIPv6(), true)),
994
1001
  _mcastInterface(mcastInterface),
995
1002
  _port(port),
996
1003
  _state(connect ? StateNeedConnect : StateNotConnected)
997
- #ifdef ICE_OS_WINRT
1004
+ #ifdef ICE_OS_UWP
998
1005
  , _readPending(false)
999
1006
  #elif defined(ICE_USE_IOCP)
1000
1007
  , _read(SocketOperationRead),
@@ -1005,7 +1012,7 @@ IceInternal::UdpTransceiver::UdpTransceiver(const UdpEndpointIPtr& endpoint, con
1005
1012
  setBufSize(-1, -1);
1006
1013
  setBlock(_fd, false);
1007
1014
 
1008
- #ifndef ICE_OS_WINRT
1015
+ #ifndef ICE_OS_UWP
1009
1016
  memset(&_mcastAddr.saStorage, 0, sizeof(sockaddr_storage));
1010
1017
  memset(&_peerAddr.saStorage, 0, sizeof(sockaddr_storage));
1011
1018
  _peerAddr.saStorage.ss_family = AF_UNSPEC;
@@ -1142,43 +1149,7 @@ IceInternal::UdpTransceiver::setBufSize(int rcvSize, int sndSize)
1142
1149
  }
1143
1150
  }
1144
1151
 
1145
- #ifdef ICE_OS_WINRT
1146
- bool
1147
- IceInternal::UdpTransceiver::checkIfErrorOrCompleted(SocketOperation op, IAsyncInfo^ info)
1148
- {
1149
- //
1150
- // NOTE: It's important to only check for info->Status once as it
1151
- // might change during the checks below (the Status can be changed
1152
- // by the Windows thread pool concurrently).
1153
- //
1154
- // We consider that a canceled async status is the same as an
1155
- // error. A canceled async status can occur if there's a timeout
1156
- // and the socket is closed.
1157
- //
1158
- Windows::Foundation::AsyncStatus status = info->Status;
1159
- if(status == Windows::Foundation::AsyncStatus::Completed)
1160
- {
1161
- _completedHandler(op);
1162
- return true;
1163
- }
1164
- else if(status == Windows::Foundation::AsyncStatus::Started)
1165
- {
1166
- return false;
1167
- }
1168
- else
1169
- {
1170
- if(_state < StateConnected)
1171
- {
1172
- checkConnectErrorCode(__FILE__, __LINE__, info->ErrorCode.Value, _addr.host);
1173
- }
1174
- else
1175
- {
1176
- checkErrorCode(__FILE__, __LINE__, info->ErrorCode.Value);
1177
- }
1178
- return true; // Prevent compiler warning.
1179
- }
1180
- }
1181
-
1152
+ #ifdef ICE_OS_UWP
1182
1153
  void
1183
1154
  IceInternal::UdpTransceiver::appendMessage(DatagramSocketMessageReceivedEventArgs^ args)
1184
1155
  {
@@ -1198,7 +1169,7 @@ IceInternal::UdpTransceiver::appendMessage(DatagramSocketMessageReceivedEventArg
1198
1169
  //
1199
1170
  if(_readPending)
1200
1171
  {
1201
- _completedHandler(SocketOperationRead);
1172
+ completed(SocketOperationRead);
1202
1173
  _readPending = false;
1203
1174
  }
1204
1175
  }