zeroc-ice 3.6.5 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
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
  }