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.
@@ -23,9 +23,21 @@ using namespace std;
23
23
  using namespace Ice;
24
24
  using namespace IceInternal;
25
25
 
26
+ #ifndef ICE_CPP11_MAPPING
26
27
  IceUtil::Shared* IceInternal::upCast(IncomingAsync* p) { return p; }
27
28
  IceUtil::Shared* Ice::upCast(AMD_Object_ice_invoke* p) { return p; }
28
29
 
30
+ Ice::AMDCallback::~AMDCallback()
31
+ {
32
+ // Out of line to avoid weak vtable
33
+ }
34
+
35
+ Ice::AMD_Object_ice_invoke::~AMD_Object_ice_invoke()
36
+ {
37
+ // Out of line to avoid weak vtable
38
+ }
39
+ #endif
40
+
29
41
  namespace
30
42
  {
31
43
 
@@ -53,288 +65,171 @@ Init init;
53
65
 
54
66
  IceInternal::IncomingAsync::IncomingAsync(Incoming& in) :
55
67
  IncomingBase(in),
56
- _instanceCopy(_os.instance()),
57
- _responseHandlerCopy(_responseHandler),
58
- _retriable(in.isRetriable()),
59
- _active(true)
68
+ _responseSent(false),
69
+ _responseHandlerCopy(ICE_GET_SHARED_FROM_THIS(_responseHandler))
60
70
  {
61
- if(_retriable)
62
- {
63
- in.setActive(*this);
64
- }
71
+ #ifndef ICE_CPP11_MAPPING
72
+ in.setAsync(this);
73
+ #endif
74
+ }
75
+
76
+ #ifdef ICE_CPP11_MAPPING
77
+ shared_ptr<IncomingAsync>
78
+ IceInternal::IncomingAsync::create(Incoming& in)
79
+ {
80
+ auto async = make_shared<IncomingAsync>(in);
81
+ in.setAsync(async);
82
+ return async;
65
83
  }
84
+ #endif
66
85
 
86
+ #ifndef ICE_CPP11_MAPPING
67
87
  void
68
- IceInternal::IncomingAsync::__deactivate(Incoming& in)
88
+ IceInternal::IncomingAsync::ice_exception(const ::std::exception& exc)
69
89
  {
70
- assert(_retriable);
90
+ try
71
91
  {
72
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
73
- if(!_active)
92
+ for(DispatchInterceptorCallbacks::iterator p = _interceptorCBs.begin(); p != _interceptorCBs.end(); ++p)
74
93
  {
75
- //
76
- // Since _deactivate can only be called on an active object,
77
- // this means the response has already been sent (see __validateXXX below)
78
- //
79
- throw ResponseSentException(__FILE__, __LINE__);
94
+ if(!(*p)->exception(exc))
95
+ {
96
+ return;
97
+ }
80
98
  }
81
- _active = false;
99
+ }
100
+ catch(...)
101
+ {
102
+ return;
82
103
  }
83
104
 
84
- in.__adopt(*this);
105
+ checkResponseSent();
106
+ IncomingBase::exception(exc, true); // User thread
85
107
  }
86
108
 
87
109
  void
88
- IceInternal::IncomingAsync::ice_exception(const ::std::exception& ex)
110
+ IceInternal::IncomingAsync::ice_exception()
89
111
  {
90
- //
91
- // Only call __exception if this incoming is not retriable or if
92
- // all the interceptors return true and no response has been sent
93
- // yet.
94
- //
95
-
96
- if(_retriable)
112
+ try
97
113
  {
98
- try
114
+ for(DispatchInterceptorCallbacks::iterator p = _interceptorCBs.begin(); p != _interceptorCBs.end(); ++p)
99
115
  {
100
- for(deque<Ice::DispatchInterceptorAsyncCallbackPtr>::iterator p = _interceptorAsyncCallbackQueue.begin();
101
- p != _interceptorAsyncCallbackQueue.end(); ++p)
116
+ if(!(*p)->exception())
102
117
  {
103
- if((*p)->exception(ex) == false)
104
- {
105
- return;
106
- }
118
+ return;
107
119
  }
108
120
  }
109
- catch(...)
110
- {
111
- return;
112
- }
113
-
114
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
115
- if(!_active)
116
- {
117
- return;
118
- }
119
- _active = false;
120
121
  }
121
-
122
- if(_responseHandler)
122
+ catch(...)
123
123
  {
124
- __exception(ex);
125
- }
126
- else
127
- {
128
- //
129
- // Response has already been sent.
130
- //
131
- if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0)
132
- {
133
- __warning(ex.what());
134
- }
124
+ return;
135
125
  }
126
+
127
+ checkResponseSent();
128
+ IncomingBase::exception("unknown c++ exception", true); // User thread
136
129
  }
137
130
 
131
+ #endif
132
+
138
133
  void
139
- IceInternal::IncomingAsync::ice_exception()
134
+ IceInternal::IncomingAsync::kill(Incoming& in)
140
135
  {
141
- //
142
- // Only call __exception if this incoming is not retriable or if
143
- // all the interceptors return true and no response has been sent
144
- // yet.
145
- //
136
+ checkResponseSent();
137
+ in._observer.adopt(_observer); // Give back the observer to incoming.
138
+ }
146
139
 
147
- if(_retriable)
140
+ void
141
+ IceInternal::IncomingAsync::completed()
142
+ {
143
+ for(DispatchInterceptorCallbacks::iterator p = _interceptorCBs.begin(); p != _interceptorCBs.end(); ++p)
148
144
  {
149
145
  try
150
146
  {
151
- for(deque<Ice::DispatchInterceptorAsyncCallbackPtr>::iterator p = _interceptorAsyncCallbackQueue.begin();
152
- p != _interceptorAsyncCallbackQueue.end(); ++p)
147
+ #ifdef ICE_CPP11_MAPPING
148
+ if(p->first && !p->first())
149
+ #else
150
+ if(!(*p)->response())
151
+ #endif
153
152
  {
154
- if((*p)->exception() == false)
155
- {
156
- return;
157
- }
153
+ return;
158
154
  }
159
155
  }
160
156
  catch(...)
161
157
  {
162
- return;
163
158
  }
164
-
165
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
166
- if(!_active)
167
- {
168
- return;
169
- }
170
- _active = false;
171
159
  }
172
160
 
173
- if(_responseHandler)
174
- {
175
- __exception();
176
- }
177
- else
178
- {
179
- //
180
- // Response has already been sent.
181
- //
182
- if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0)
183
- {
184
- __warning("unknown exception");
185
- }
186
- }
161
+ checkResponseSent();
162
+ IncomingBase::response(true); // User thread
187
163
  }
188
164
 
165
+ #ifdef ICE_CPP11_MAPPING
189
166
  void
190
- IceInternal::IncomingAsync::__response()
167
+ IceInternal::IncomingAsync::completed(exception_ptr ex)
191
168
  {
192
- try
169
+ for(DispatchInterceptorCallbacks::iterator p = _interceptorCBs.begin(); p != _interceptorCBs.end(); ++p)
193
170
  {
194
- if(_locator && !__servantLocatorFinished(true))
195
- {
196
- return;
197
- }
198
-
199
- assert(_responseHandler);
200
-
201
- if(_response)
171
+ try
202
172
  {
203
- _observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
204
- _responseHandler->sendResponse(_current.requestId, &_os, _compress, true);
173
+ if(p->second && !p->second(ex))
174
+ {
175
+ return;
176
+ }
205
177
  }
206
- else
178
+ catch(...)
207
179
  {
208
- _responseHandler->sendNoResponse();
209
180
  }
210
-
211
- _observer.detach();
212
- _responseHandler = 0;
213
181
  }
214
- catch(const LocalException& ex)
215
- {
216
- _responseHandler->invokeException(_current.requestId, ex, 1, true); // Fatal invocation exception
217
- }
218
- }
219
182
 
220
- void
221
- IceInternal::IncomingAsync::__exception(const std::exception& exc)
222
- {
183
+ checkResponseSent();
223
184
  try
224
185
  {
225
- if(_locator && !__servantLocatorFinished(true))
226
- {
227
- return;
228
- }
229
-
230
- __handleException(exc, true);
231
- }
232
- catch(const LocalException& ex)
233
- {
234
- _responseHandler->invokeException(_current.requestId, ex, 1, true); // Fatal invocation exception
186
+ rethrow_exception(ex);
235
187
  }
236
- }
237
-
238
- void
239
- IceInternal::IncomingAsync::__exception()
240
- {
241
- try
188
+ catch(const std::exception& exc)
242
189
  {
243
- if(_locator && !__servantLocatorFinished(true))
244
- {
245
- return;
246
- }
247
-
248
- __handleException(true);
190
+ IncomingBase::exception(exc, true); // User thread
249
191
  }
250
- catch(const LocalException& ex)
192
+ catch(...)
251
193
  {
252
- _responseHandler->invokeException(_current.requestId, ex, 1, true); // Fatal invocation exception
194
+ IncomingBase::exception("unknown c++ exception", true); // User thread
253
195
  }
254
196
  }
197
+ #endif
255
198
 
256
- bool
257
- IceInternal::IncomingAsync::__validateResponse(bool ok)
199
+ void
200
+ IceInternal::IncomingAsync::checkResponseSent()
258
201
  {
259
- //
260
- // Only returns true if this incoming is not retriable or if all
261
- // the interceptors return true and no response has been sent
262
- // yet. Upon getting a true return value, the caller should send
263
- // the response.
264
- //
265
-
266
- if(_retriable)
202
+ IceUtil::Mutex::Lock sync(*globalMutex);
203
+ if(_responseSent)
267
204
  {
268
- try
269
- {
270
- for(deque<DispatchInterceptorAsyncCallbackPtr>::iterator p = _interceptorAsyncCallbackQueue.begin();
271
- p != _interceptorAsyncCallbackQueue.end(); ++p)
272
- {
273
- if((*p)->response(ok) == false)
274
- {
275
- return false;
276
- }
277
- }
278
- }
279
- catch(...)
280
- {
281
- return false;
282
- }
283
-
284
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
285
- if(!_active)
286
- {
287
- return false;
288
- }
289
- _active = false;
205
+ throw ResponseSentException(__FILE__, __LINE__);
290
206
  }
291
- return true;
207
+ _responseSent = true;
292
208
  }
293
209
 
294
- IceAsync::Ice::AMD_Object_ice_invoke::AMD_Object_ice_invoke(Incoming& in) :
295
- IncomingAsync(in)
210
+ #ifndef ICE_CPP11_MAPPING
211
+ IceAsync::Ice::AMD_Object_ice_invoke::AMD_Object_ice_invoke(Incoming& in) : IncomingAsync(in)
296
212
  {
297
213
  }
298
214
 
299
215
  void
300
216
  IceAsync::Ice::AMD_Object_ice_invoke::ice_response(bool ok, const vector<Byte>& outEncaps)
301
217
  {
302
- if(__validateResponse(ok))
218
+ if(outEncaps.empty())
303
219
  {
304
- try
305
- {
306
- if(outEncaps.empty())
307
- {
308
- __writeParamEncaps(0, 0, ok);
309
- }
310
- else
311
- {
312
- __writeParamEncaps(&outEncaps[0], static_cast< ::Ice::Int>(outEncaps.size()), ok);
313
- }
314
- }
315
- catch(const LocalException& ex)
316
- {
317
- __exception(ex);
318
- return;
319
- }
320
- __response();
220
+ writeParamEncaps(0, 0, ok);
321
221
  }
222
+ else
223
+ {
224
+ writeParamEncaps(&outEncaps[0], static_cast<Int>(outEncaps.size()), ok);
225
+ }
226
+ completed();
322
227
  }
323
228
 
324
229
  void
325
230
  IceAsync::Ice::AMD_Object_ice_invoke::ice_response(bool ok, const pair<const Byte*, const Byte*>& outEncaps)
326
231
  {
327
- if(__validateResponse(ok))
328
- {
329
- try
330
- {
331
- __writeParamEncaps(outEncaps.first, static_cast<Int>(outEncaps.second - outEncaps.first), ok);
332
- }
333
- catch(const LocalException& ex)
334
- {
335
- __exception(ex);
336
- return;
337
- }
338
- __response();
339
- }
232
+ writeParamEncaps(outEncaps.first, static_cast<Int>(outEncaps.second - outEncaps.first), ok);
233
+ completed();
340
234
  }
235
+ #endif
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -23,15 +23,16 @@ namespace IceInternal
23
23
  class ICE_API IncomingRequest : public Ice::Request
24
24
  {
25
25
  public:
26
- IncomingRequest(Incoming& in) :
27
- _in(in)
26
+
27
+ IncomingRequest(Incoming& in) : _in(in)
28
28
  {
29
29
  }
30
30
 
31
31
  virtual const Ice::Current& getCurrent();
32
-
32
+
33
33
  Incoming& _in;
34
34
  };
35
+
35
36
  }
36
37
 
37
38
  #endif
@@ -1,25 +1,25 @@
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.
7
7
  //
8
8
  // **********************************************************************
9
9
 
10
- #include <IceUtil/ArgVector.h>
10
+ #include <Ice/ArgVector.h>
11
+ #include <IceUtil/DisableWarnings.h>
11
12
  #include <Ice/CommunicatorI.h>
12
13
  #include <Ice/PropertiesI.h>
13
14
  #include <Ice/Initialize.h>
14
15
  #include <Ice/LocalException.h>
15
- #include <Ice/StreamI.h>
16
16
  #include <Ice/LoggerI.h>
17
17
  #include <Ice/Instance.h>
18
18
  #include <Ice/PluginManagerI.h>
19
- #include <IceUtil/StringUtil.h>
19
+ #include <Ice/StringUtil.h>
20
20
  #include <IceUtil/Mutex.h>
21
21
  #include <IceUtil/MutexPtrLock.h>
22
- #include <IceUtil/StringConverter.h>
22
+ #include <Ice/StringConverter.h>
23
23
 
24
24
  using namespace std;
25
25
  using namespace Ice;
@@ -28,19 +28,6 @@ using namespace IceInternal;
28
28
  namespace
29
29
  {
30
30
 
31
- pair<const Byte*, const Byte*>
32
- makePair(const vector<Byte>& v)
33
- {
34
- if(v.empty())
35
- {
36
- return pair<const Byte*, const Byte*>(static_cast<Byte*>(0), static_cast<Byte*>(0));
37
- }
38
- else
39
- {
40
- return pair<const Byte*, const Byte*>(&v[0], &v[0] + v.size());
41
- }
42
- }
43
-
44
31
  IceUtil::Mutex* globalMutex = 0;
45
32
  Ice::LoggerPtr processLogger;
46
33
 
@@ -65,7 +52,7 @@ Init init;
65
52
  }
66
53
 
67
54
  StringSeq
68
- Ice::argsToStringSeq(int argc, char* argv[])
55
+ Ice::argsToStringSeq(int argc, const char* const argv[])
69
56
  {
70
57
  StringSeq result;
71
58
  for(int i = 0; i < argc; i++)
@@ -78,17 +65,17 @@ Ice::argsToStringSeq(int argc, char* argv[])
78
65
  #ifdef _WIN32
79
66
 
80
67
  StringSeq
81
- Ice::argsToStringSeq(int /*argc*/, wchar_t* argv[])
68
+ Ice::argsToStringSeq(int /*argc*/, const wchar_t* const argv[])
82
69
  {
83
70
  //
84
71
  // Don't need to use a wide string converter argv is expected to
85
72
  // come from Windows API.
86
73
  //
87
- const IceUtil::StringConverterPtr converter = IceUtil::getProcessStringConverter();
74
+ const StringConverterPtr converter = getProcessStringConverter();
88
75
  StringSeq args;
89
- for(int i=0; argv[i] != 0; i++)
76
+ for(int i = 0; argv[i] != 0; i++)
90
77
  {
91
- args.push_back(IceUtil::wstringToString(argv[i], converter));
78
+ args.push_back(wstringToString(argv[i], converter));
92
79
  }
93
80
  return args;
94
81
  }
@@ -96,7 +83,7 @@ Ice::argsToStringSeq(int /*argc*/, wchar_t* argv[])
96
83
  #endif
97
84
 
98
85
  void
99
- Ice::stringSeqToArgs(const StringSeq& args, int& argc, char* argv[])
86
+ Ice::stringSeqToArgs(const StringSeq& args, int& argc, const char* argv[])
100
87
  {
101
88
  //
102
89
  // Shift all elements in argv which are present in args to the
@@ -132,20 +119,65 @@ Ice::stringSeqToArgs(const StringSeq& args, int& argc, char* argv[])
132
119
  }
133
120
  }
134
121
 
122
+ #ifdef _WIN32
123
+ void
124
+ Ice::stringSeqToArgs(const StringSeq& args, int& argc, const wchar_t* argv[])
125
+ {
126
+ //
127
+ // Don't need to use a wide string converter argv is expected to
128
+ // come from Windows API.
129
+ //
130
+ const StringConverterPtr converter = getProcessStringConverter();
131
+
132
+ //
133
+ // Shift all elements in argv which are present in args to the
134
+ // beginning of argv. We record the original value of argc so
135
+ // that we can know later if we've shifted the array.
136
+ //
137
+ const int argcOrig = argc;
138
+ int i = 0;
139
+ while(i < argc)
140
+ {
141
+ if(find(args.begin(), args.end(), wstringToString(argv[i], converter)) == args.end())
142
+ {
143
+ for(int j = i; j < argc - 1; j++)
144
+ {
145
+ argv[j] = argv[j + 1];
146
+ }
147
+ --argc;
148
+ }
149
+ else
150
+ {
151
+ ++i;
152
+ }
153
+ }
154
+
155
+ //
156
+ // Make sure that argv[argc] == 0, the ISO C++ standard requires this.
157
+ // We can only do this if we've shifted the array, otherwise argv[argc]
158
+ // may point to an invalid address.
159
+ //
160
+ if(argv && argcOrig != argc)
161
+ {
162
+ argv[argc] = 0;
163
+ }
164
+ }
165
+ #endif
166
+
135
167
  PropertiesPtr
136
168
  Ice::createProperties()
137
169
  {
138
- return new PropertiesI(IceUtil::getProcessStringConverter());
170
+ return ICE_MAKE_SHARED(PropertiesI);
139
171
  }
140
172
 
141
173
  PropertiesPtr
142
174
  Ice::createProperties(StringSeq& args, const PropertiesPtr& defaults)
143
175
  {
144
- return new PropertiesI(args, defaults, IceUtil::getProcessStringConverter());
176
+ return ICE_MAKE_SHARED(PropertiesI, args, defaults);
145
177
  }
146
178
 
147
179
  PropertiesPtr
148
- Ice::createProperties(int& argc, char* argv[], const PropertiesPtr& defaults)
180
+ Ice::createProperties(int& argc, const char* argv[], const PropertiesPtr& defaults)
149
181
  {
150
182
  StringSeq args = argsToStringSeq(argc, argv);
151
183
  PropertiesPtr properties = createProperties(args, defaults);
@@ -153,6 +185,31 @@ Ice::createProperties(int& argc, char* argv[], const PropertiesPtr& defaults)
153
185
  return properties;
154
186
  }
155
187
 
188
+ #ifdef _WIN32
189
+ PropertiesPtr
190
+ Ice::createProperties(int& argc, const wchar_t* argv[], const PropertiesPtr& defaults)
191
+ {
192
+ StringSeq args = argsToStringSeq(argc, argv);
193
+ PropertiesPtr properties = createProperties(args, defaults);
194
+ stringSeqToArgs(args, argc, argv);
195
+ return properties;
196
+ }
197
+ #endif
198
+
199
+ #ifdef ICE_CPP11_MAPPING
200
+ Ice::ThreadHookPlugin::ThreadHookPlugin(const CommunicatorPtr& communicator,
201
+ function<void()> threadStart,
202
+ function<void()> threadStop)
203
+ {
204
+ if(communicator == nullptr)
205
+ {
206
+ throw PluginInitializationException(__FILE__, __LINE__, "Communicator cannot be null");
207
+ }
208
+
209
+ IceInternal::InstancePtr instance = IceInternal::getInstance(communicator);
210
+ instance->setThreadHook(move(threadStart), move(threadStop));
211
+ }
212
+ #else
156
213
  Ice::ThreadHookPlugin::ThreadHookPlugin(const CommunicatorPtr& communicator, const ThreadNotificationPtr& threadHook)
157
214
  {
158
215
  if(communicator == 0)
@@ -163,7 +220,7 @@ Ice::ThreadHookPlugin::ThreadHookPlugin(const CommunicatorPtr& communicator, con
163
220
  IceInternal::InstancePtr instance = IceInternal::getInstance(communicator);
164
221
  instance->setThreadHook(threadHook);
165
222
  }
166
-
223
+ #endif
167
224
  void
168
225
  Ice::ThreadHookPlugin::initialize()
169
226
  {
@@ -177,7 +234,7 @@ Ice::ThreadHookPlugin::destroy()
177
234
  namespace
178
235
  {
179
236
 
180
- inline void checkIceVersion(Int version)
237
+ inline void checkIceVersion(int version)
181
238
  {
182
239
  #ifndef ICE_IGNORE_VERSION
183
240
 
@@ -222,32 +279,68 @@ inline void checkIceVersion(Int version)
222
279
 
223
280
  }
224
281
 
225
- CommunicatorPtr
226
- Ice::initialize(int& argc, char* argv[], const InitializationData& initializationData, Int version)
282
+ Ice::CommunicatorPtr
283
+ Ice::initialize(int& argc, const char* argv[], const InitializationData& initializationData, int version)
227
284
  {
228
285
  checkIceVersion(version);
229
286
 
230
287
  InitializationData initData = initializationData;
231
288
  initData.properties = createProperties(argc, argv, initData.properties);
232
289
 
233
- CommunicatorI* communicatorI = new CommunicatorI(initData);
234
- CommunicatorPtr result = communicatorI; // For exception safety.
235
- communicatorI->finishSetup(argc, argv);
236
- return result;
290
+ CommunicatorIPtr communicator = CommunicatorI::create(initData);
291
+ communicator->finishSetup(argc, argv);
292
+ return communicator;
293
+ }
294
+
295
+ Ice::CommunicatorPtr
296
+ Ice::initialize(int& argc, const char* argv[], ICE_CONFIG_FILE_STRING configFile, int version)
297
+ {
298
+ InitializationData initData;
299
+ initData.properties = createProperties();
300
+ initData.properties->load(configFile);
301
+ return initialize(argc, argv, initData, version);
237
302
  }
238
303
 
239
- CommunicatorPtr
240
- Ice::initialize(StringSeq& args, const InitializationData& initializationData, Int version)
304
+ #ifdef _WIN32
305
+ Ice::CommunicatorPtr
306
+ Ice::initialize(int& argc, const wchar_t* argv[], const InitializationData& initializationData, int version)
241
307
  {
242
- CommunicatorPtr communicator;
243
- IceUtilInternal::ArgVector av(args);
244
- communicator = initialize(av.argc, av.argv, initializationData, version);
308
+ Ice::StringSeq args = argsToStringSeq(argc, argv);
309
+ CommunicatorPtr communicator = initialize(args, initializationData, version);
310
+ stringSeqToArgs(args, argc, argv);
311
+ return communicator;
312
+ }
313
+
314
+ Ice::CommunicatorPtr
315
+ Ice::initialize(int& argc, const wchar_t* argv[], ICE_CONFIG_FILE_STRING configFile, int version)
316
+ {
317
+ InitializationData initData;
318
+ initData.properties = createProperties();
319
+ initData.properties->load(configFile);
320
+ return initialize(argc, argv, initData, version);
321
+ }
322
+ #endif
323
+
324
+ Ice::CommunicatorPtr
325
+ Ice::initialize(StringSeq& args, const InitializationData& initializationData, int version)
326
+ {
327
+ IceInternal::ArgVector av(args);
328
+ CommunicatorPtr communicator = initialize(av.argc, av.argv, initializationData, version);
245
329
  args = argsToStringSeq(av.argc, av.argv);
246
330
  return communicator;
247
331
  }
248
332
 
249
- CommunicatorPtr
250
- Ice::initialize(const InitializationData& initData, Int version)
333
+ Ice::CommunicatorPtr
334
+ Ice::initialize(StringSeq& args, ICE_CONFIG_FILE_STRING configFile, int version)
335
+ {
336
+ InitializationData initData;
337
+ initData.properties = createProperties();
338
+ initData.properties->load(configFile);
339
+ return initialize(args, initData, version);
340
+ }
341
+
342
+ Ice::CommunicatorPtr
343
+ Ice::initialize(const InitializationData& initData, int version)
251
344
  {
252
345
  //
253
346
  // We can't simply call the other initialize() because this one does NOT read
@@ -255,185 +348,228 @@ Ice::initialize(const InitializationData& initData, Int version)
255
348
  //
256
349
  checkIceVersion(version);
257
350
 
258
- CommunicatorI* communicatorI = new CommunicatorI(initData);
259
- CommunicatorPtr result = communicatorI; // For exception safety.
351
+ CommunicatorIPtr communicator = CommunicatorI::create(initData);
260
352
  int argc = 0;
261
- char* argv[] = { 0 };
262
- communicatorI->finishSetup(argc, argv);
263
- return result;
353
+ const char* argv[] = { 0 };
354
+ communicator->finishSetup(argc, argv);
355
+ return communicator;
356
+ }
357
+
358
+ Ice::CommunicatorPtr
359
+ Ice::initialize(ICE_CONFIG_FILE_STRING configFile, int version)
360
+ {
361
+ InitializationData initData;
362
+ initData.properties = createProperties();
363
+ initData.properties->load(configFile);
364
+ return initialize(initData, version);
264
365
  }
265
366
 
266
- InputStreamPtr
267
- Ice::createInputStream(const CommunicatorPtr& communicator, const vector<Byte>& bytes)
367
+ LoggerPtr
368
+ Ice::getProcessLogger()
268
369
  {
269
- return new InputStreamI(communicator, makePair(bytes), true);
370
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
371
+
372
+ if(processLogger == ICE_NULLPTR)
373
+ {
374
+ //
375
+ // TODO: Would be nice to be able to use process name as prefix by default.
376
+ //
377
+ processLogger = ICE_MAKE_SHARED(LoggerI, "", "", true);
378
+ }
379
+ return processLogger;
270
380
  }
271
381
 
272
- InputStreamPtr
273
- Ice::createInputStream(const CommunicatorPtr& communicator, const vector<Byte>& bytes, const EncodingVersion& v)
382
+ void
383
+ Ice::setProcessLogger(const LoggerPtr& logger)
274
384
  {
275
- return new InputStreamI(communicator, makePair(bytes), v, true);
385
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
386
+ processLogger = logger;
276
387
  }
277
388
 
278
- InputStreamPtr
279
- Ice::wrapInputStream(const CommunicatorPtr& communicator, const vector<Byte>& bytes)
389
+ void
390
+ Ice::registerPluginFactory(const std::string& name, PluginFactory factory, bool loadOnInitialize)
280
391
  {
281
- return new InputStreamI(communicator, makePair(bytes), false);
392
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
393
+ PluginManagerI::registerPluginFactory(name, factory, loadOnInitialize);
282
394
  }
283
395
 
284
- InputStreamPtr
285
- Ice::wrapInputStream(const CommunicatorPtr& communicator, const vector<Byte>& bytes, const EncodingVersion& v)
396
+ //
397
+ // CommunicatorHolder
398
+ //
399
+
400
+ Ice::CommunicatorHolder::CommunicatorHolder()
286
401
  {
287
- return new InputStreamI(communicator, makePair(bytes), v, false);
288
402
  }
289
403
 
290
- InputStreamPtr
291
- Ice::createInputStream(const CommunicatorPtr& communicator, const pair<const Ice::Byte*, const Ice::Byte*>& bytes)
404
+ #ifdef ICE_CPP11_MAPPING
405
+ Ice::CommunicatorHolder::CommunicatorHolder(shared_ptr<Communicator> communicator) :
406
+ _communicator(std::move(communicator))
292
407
  {
293
- return new InputStreamI(communicator, bytes, true);
294
408
  }
295
409
 
296
- InputStreamPtr
297
- Ice::createInputStream(const CommunicatorPtr& communicator, const pair<const Ice::Byte*, const Ice::Byte*>& bytes,
298
- const EncodingVersion& v)
410
+ Ice::CommunicatorHolder&
411
+ Ice::CommunicatorHolder::operator=(shared_ptr<Communicator> communicator)
299
412
  {
300
- return new InputStreamI(communicator, bytes, v, true);
413
+ if(_communicator)
414
+ {
415
+ _communicator->destroy();
416
+ }
417
+ _communicator = std::move(communicator);
418
+ return *this;
301
419
  }
302
420
 
303
- InputStreamPtr
304
- Ice::wrapInputStream(const CommunicatorPtr& communicator, const pair<const Ice::Byte*, const Ice::Byte*>& bytes)
421
+ Ice::CommunicatorHolder&
422
+ Ice::CommunicatorHolder::operator=(CommunicatorHolder&& other)
305
423
  {
306
- return new InputStreamI(communicator, bytes, false);
424
+ if(_communicator)
425
+ {
426
+ _communicator->destroy();
427
+ }
428
+ _communicator = std::move(other._communicator);
429
+ return *this;
307
430
  }
308
431
 
309
- InputStreamPtr
310
- Ice::wrapInputStream(const CommunicatorPtr& communicator, const pair<const Ice::Byte*, const Ice::Byte*>& bytes,
311
- const EncodingVersion& v)
432
+ #else // C++98 mapping
433
+
434
+ Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const char* argv[], const InitializationData& initData,
435
+ int version) :
436
+ _communicator(initialize(argc, argv, initData, version))
312
437
  {
313
- return new InputStreamI(communicator, bytes, v, false);
314
438
  }
315
439
 
316
- OutputStreamPtr
317
- Ice::createOutputStream(const CommunicatorPtr& communicator)
440
+ Ice::CommunicatorHolder::CommunicatorHolder(int& argc, char* argv[], const InitializationData& initData, int version) :
441
+ _communicator(initialize(argc, argv, initData, version))
318
442
  {
319
- return new OutputStreamI(communicator);
320
443
  }
321
444
 
322
- OutputStreamPtr
323
- Ice::createOutputStream(const CommunicatorPtr& communicator, const EncodingVersion& v)
445
+ Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const char* argv[], const char* configFile, int version) :
446
+ _communicator(initialize(argc, argv, configFile, version))
324
447
  {
325
- return new OutputStreamI(communicator, v);
326
448
  }
327
449
 
328
- LoggerPtr
329
- Ice::getProcessLogger()
450
+ Ice::CommunicatorHolder::CommunicatorHolder(int& argc, char* argv[], const char* configFile, int version) :
451
+ _communicator(initialize(argc, argv, configFile, version))
330
452
  {
331
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
453
+ }
332
454
 
333
- if(processLogger == 0)
334
- {
335
- //
336
- // TODO: Would be nice to be able to use process name as prefix by default.
337
- //
338
- processLogger = new Ice::LoggerI("", "", true, IceUtil::getProcessStringConverter());
339
- }
340
- return processLogger;
455
+ # ifdef _WIN32
456
+ Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const wchar_t* argv[], const InitializationData& initData,
457
+ int version) :
458
+ _communicator(initialize(argc, argv, initData, version))
459
+ {
341
460
  }
342
461
 
343
- void
344
- Ice::setProcessLogger(const LoggerPtr& logger)
462
+ Ice::CommunicatorHolder::CommunicatorHolder(int& argc, wchar_t* argv[], const InitializationData& initData,
463
+ int version) :
464
+ _communicator(initialize(argc, argv, initData, version))
345
465
  {
346
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
347
- processLogger = logger;
348
466
  }
349
467
 
350
- void
351
- Ice::registerPluginFactory(const std::string& name, PLUGIN_FACTORY factory, bool loadOnInitialize)
468
+ Ice::CommunicatorHolder::CommunicatorHolder(int& argc, const wchar_t* argv[], const char* configFile, int version) :
469
+ _communicator(initialize(argc, argv, configFile, version))
352
470
  {
353
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
354
- PluginManagerI::registerPluginFactory(name, factory, loadOnInitialize);
355
471
  }
356
472
 
357
- InstancePtr
358
- IceInternal::getInstance(const CommunicatorPtr& communicator)
473
+ Ice::CommunicatorHolder::CommunicatorHolder(int& argc, wchar_t* argv[], const char* configFile, int version) :
474
+ _communicator(initialize(argc, argv, configFile, version))
359
475
  {
360
- CommunicatorI* p = dynamic_cast<CommunicatorI*>(communicator.get());
361
- assert(p);
362
- return p->_instance;
363
476
  }
477
+ # endif
364
478
 
365
- IceUtil::TimerPtr
366
- IceInternal::getInstanceTimer(const CommunicatorPtr& communicator)
479
+ Ice::CommunicatorHolder::CommunicatorHolder(StringSeq& args, const InitializationData& initData, int version) :
480
+ _communicator(initialize(args, initData, version))
367
481
  {
368
- CommunicatorI* p = dynamic_cast<CommunicatorI*>(communicator.get());
369
- assert(p);
370
- return p->_instance->timer();
371
482
  }
372
483
 
373
- #ifdef ICE_CPP11
374
- Ice::DispatcherPtr
375
- Ice::newDispatcher(const ::std::function<void (const DispatcherCallPtr&, const ConnectionPtr)>& cb)
484
+ Ice::CommunicatorHolder::CommunicatorHolder(StringSeq& args, const char* configFile, int version) :
485
+ _communicator(initialize(args, configFile, version))
376
486
  {
377
- class Cpp11Dispatcher : public Dispatcher
378
- {
379
- public:
487
+ }
380
488
 
381
- Cpp11Dispatcher(const ::std::function<void (const DispatcherCallPtr&, const ConnectionPtr)>& cb) :
382
- _cb(cb)
383
- {
384
- }
489
+ Ice::CommunicatorHolder::CommunicatorHolder(const InitializationData& initData, int version) :
490
+ _communicator(initialize(initData, version))
491
+ {
492
+ }
385
493
 
386
- virtual void dispatch(const DispatcherCallPtr& call, const ConnectionPtr& conn)
387
- {
388
- _cb(call, conn);
389
- }
494
+ Ice::CommunicatorHolder::CommunicatorHolder(const char* configFile, int version) :
495
+ _communicator(initialize(configFile, version))
496
+ {
497
+ }
390
498
 
391
- private:
392
- const ::std::function<void (const DispatcherCallPtr&, const ConnectionPtr)> _cb;
393
- };
499
+ Ice::CommunicatorHolder::CommunicatorHolder(const CommunicatorPtr& communicator) :
500
+ _communicator(communicator)
501
+ {
502
+ }
394
503
 
395
- return new Cpp11Dispatcher(cb);
504
+ Ice::CommunicatorHolder&
505
+ Ice::CommunicatorHolder::operator=(const CommunicatorPtr& communicator)
506
+ {
507
+ if(_communicator)
508
+ {
509
+ _communicator->destroy();
510
+ }
511
+ _communicator = communicator;
512
+ return *this;
396
513
  }
514
+
397
515
  #endif
398
516
 
399
- #ifdef ICE_CPP11
400
- Ice::BatchRequestInterceptorPtr
401
- Ice::newBatchRequestInterceptor(const ::std::function<void (const BatchRequest&, int, int)>& cb)
517
+ Ice::CommunicatorHolder::~CommunicatorHolder()
402
518
  {
403
- class Cpp11BatchRequestInterceptor : public BatchRequestInterceptor
519
+ if(_communicator)
404
520
  {
405
- public:
406
-
407
- Cpp11BatchRequestInterceptor(const ::std::function<void (const BatchRequest&, int, int)>& cb) :
408
- _cb(cb)
409
- {
410
- }
521
+ _communicator->destroy();
522
+ }
523
+ }
411
524
 
412
- virtual void enqueue(const BatchRequest& request, int count, int size)
413
- {
414
- _cb(request, count, size);
415
- }
525
+ Ice::CommunicatorHolder::operator bool() const
526
+ {
527
+ return _communicator != ICE_NULLPTR;
528
+ }
416
529
 
417
- private:
418
- const ::std::function<void (const BatchRequest&, int, int)> _cb;
419
- };
530
+ const Ice::CommunicatorPtr&
531
+ Ice::CommunicatorHolder::communicator() const
532
+ {
533
+ return _communicator;
534
+ }
420
535
 
421
- return new Cpp11BatchRequestInterceptor(cb);
536
+ const Ice::CommunicatorPtr&
537
+ Ice::CommunicatorHolder::operator->() const
538
+ {
539
+ return _communicator;
422
540
  }
541
+
542
+ Ice::CommunicatorPtr
543
+ Ice::CommunicatorHolder::release()
544
+ {
545
+ #ifdef ICE_CPP11_MAPPING
546
+ return std::move(_communicator);
547
+ #else
548
+ CommunicatorPtr result;
549
+ result.swap(_communicator);
550
+ return result;
423
551
  #endif
552
+ }
553
+
554
+ InstancePtr
555
+ IceInternal::getInstance(const CommunicatorPtr& communicator)
556
+ {
557
+ CommunicatorIPtr p = ICE_DYNAMIC_CAST(::Ice::CommunicatorI, communicator);
558
+ assert(p);
559
+ return p->_instance;
560
+ }
561
+
562
+ IceUtil::TimerPtr
563
+ IceInternal::getInstanceTimer(const CommunicatorPtr& communicator)
564
+ {
565
+ CommunicatorIPtr p = ICE_DYNAMIC_CAST(::Ice::CommunicatorI, communicator);
566
+ assert(p);
567
+ return p->_instance->timer();
568
+ }
424
569
 
425
570
  Identity
426
571
  Ice::stringToIdentity(const string& s)
427
572
  {
428
- //
429
- // This method only accepts printable ascii. Since printable ascii is a subset
430
- // of all narrow string encodings, it is not necessary to convert the string
431
- // from the native string encoding. Any characters other than printable-ASCII
432
- // will cause an IllegalArgumentException. Note that it can contain Unicode
433
- // encoded in the escaped form which is the reason why we call fromUTF8 after
434
- // unespcaping the printable ASCII string.
435
- //
436
-
437
573
  Identity ident;
438
574
 
439
575
  //
@@ -444,7 +580,7 @@ Ice::stringToIdentity(const string& s)
444
580
  while((pos = s.find('/', pos)) != string::npos)
445
581
  {
446
582
  int escapes = 0;
447
- while(static_cast<int>(pos)- escapes > 0 && s[pos - escapes - 1] == '\\')
583
+ while(static_cast<int>(pos) - escapes > 0 && s[pos - escapes - 1] == '\\')
448
584
  {
449
585
  escapes++;
450
586
  }
@@ -464,7 +600,7 @@ Ice::stringToIdentity(const string& s)
464
600
  // Extra unescaped slash found.
465
601
  //
466
602
  IdentityParseException ex(__FILE__, __LINE__);
467
- ex.str = "unescaped backslash in identity `" + s + "'";
603
+ ex.str = "unescaped '/' in identity `" + s + "'";
468
604
  throw ex;
469
605
  }
470
606
  }
@@ -475,7 +611,7 @@ Ice::stringToIdentity(const string& s)
475
611
  {
476
612
  try
477
613
  {
478
- ident.name = IceUtilInternal::unescapeString(s, 0, s.size());
614
+ ident.name = unescapeString(s, 0, s.size(), "/");
479
615
  }
480
616
  catch(const IceUtil::IllegalArgumentException& e)
481
617
  {
@@ -488,7 +624,7 @@ Ice::stringToIdentity(const string& s)
488
624
  {
489
625
  try
490
626
  {
491
- ident.category = IceUtilInternal::unescapeString(s, 0, slash);
627
+ ident.category = unescapeString(s, 0, slash, "/");
492
628
  }
493
629
  catch(const IceUtil::IllegalArgumentException& e)
494
630
  {
@@ -496,11 +632,12 @@ Ice::stringToIdentity(const string& s)
496
632
  ex.str = "invalid category in identity `" + s + "': " + e.reason();
497
633
  throw ex;
498
634
  }
635
+
499
636
  if(slash + 1 < s.size())
500
637
  {
501
638
  try
502
639
  {
503
- ident.name = IceUtilInternal::unescapeString(s, slash + 1, s.size());
640
+ ident.name = unescapeString(s, slash + 1, s.size(), "/");
504
641
  }
505
642
  catch(const IceUtil::IllegalArgumentException& e)
506
643
  {
@@ -511,28 +648,18 @@ Ice::stringToIdentity(const string& s)
511
648
  }
512
649
  }
513
650
 
514
- ident.name = UTF8ToNative(ident.name, IceUtil::getProcessStringConverter());
515
- ident.category = UTF8ToNative(ident.category, IceUtil::getProcessStringConverter());
516
-
517
651
  return ident;
518
652
  }
519
653
 
520
654
  string
521
- Ice::identityToString(const Identity& ident)
655
+ Ice::identityToString(const Identity& ident, ToStringMode toStringMode)
522
656
  {
523
- //
524
- // This method returns the stringified identity. The returned string only
525
- // contains printable ascii. It can contain UTF8 in the escaped form.
526
- //
527
- string name = nativeToUTF8(ident.name, IceUtil::getProcessStringConverter());
528
- string category = nativeToUTF8(ident.category, IceUtil::getProcessStringConverter());
529
-
530
- if(category.empty())
657
+ if(ident.category.empty())
531
658
  {
532
- return IceUtilInternal::escapeString(name, "/");
659
+ return escapeString(ident.name, "/", toStringMode);
533
660
  }
534
661
  else
535
662
  {
536
- return IceUtilInternal::escapeString(category, "/") + '/' + IceUtilInternal::escapeString(name, "/");
663
+ return escapeString(ident.category, "/", toStringMode) + '/' + escapeString(ident.name, "/", toStringMode);
537
664
  }
538
665
  }