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
@@ -0,0 +1,56 @@
1
+ // **********************************************************************
2
+ //
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
+ //
5
+ // This copy of Ice is licensed to you under the terms described in the
6
+ // ICE_LICENSE file included in this distribution.
7
+ //
8
+ // **********************************************************************
9
+
10
+ #include <Ice/IconvStringConverter.h>
11
+
12
+ #ifndef _WIN32
13
+
14
+ using namespace std;
15
+ using namespace Ice;
16
+ using namespace IceUtil;
17
+
18
+ IconvInitializationException::IconvInitializationException(const char* file, int line, const string& reason) :
19
+ ExceptionHelper<IconvInitializationException>(file, line),
20
+ _reason(reason)
21
+ {
22
+ }
23
+
24
+ #ifndef ICE_CPP11_COMPILER
25
+ IconvInitializationException::~IconvInitializationException() throw()
26
+ {
27
+ }
28
+ #endif
29
+
30
+ void
31
+ IconvInitializationException::ice_print(ostream& out) const
32
+ {
33
+ IceUtil::Exception::ice_print(out);
34
+ out << ": " << _reason;
35
+ }
36
+
37
+ string
38
+ IconvInitializationException::ice_id() const
39
+ {
40
+ return "::Ice::IconvInitializationException";
41
+ }
42
+
43
+ #ifndef ICE_CPP11_MAPPING
44
+ IconvInitializationException*
45
+ IconvInitializationException::ice_clone() const
46
+ {
47
+ return new IconvInitializationException(*this);
48
+ }
49
+ #endif
50
+
51
+ string
52
+ IconvInitializationException::reason() const
53
+ {
54
+ return _reason;
55
+ }
56
+ #endif
@@ -1,13 +1,13 @@
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
- // Ice version 3.6.5
10
+ // Ice version 3.7.0
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -23,26 +23,40 @@
23
23
  #endif
24
24
  #include <Ice/Identity.h>
25
25
  #include <IceUtil/PushDisableWarnings.h>
26
- #include <Ice/BasicStream.h>
27
- #include <IceUtil/Iterator.h>
26
+ #include <Ice/InputStream.h>
27
+ #include <Ice/OutputStream.h>
28
28
  #include <IceUtil/PopDisableWarnings.h>
29
29
 
30
+ #if defined(_MSC_VER)
31
+ # pragma warning(disable:4458) // declaration of ... hides class member
32
+ #elif defined(__clang__)
33
+ # pragma clang diagnostic ignored "-Wshadow"
34
+ #elif defined(__GNUC__)
35
+ # pragma GCC diagnostic ignored "-Wshadow"
36
+ #endif
37
+
30
38
  #ifndef ICE_IGNORE_VERSION
31
- # if ICE_INT_VERSION / 100 != 306
39
+ # if ICE_INT_VERSION / 100 != 307
32
40
  # error Ice version mismatch!
33
41
  # endif
34
42
  # if ICE_INT_VERSION % 100 > 50
35
43
  # error Beta header file detected
36
44
  # endif
37
- # if ICE_INT_VERSION % 100 < 5
45
+ # if ICE_INT_VERSION % 100 < 0
38
46
  # error Ice patch level mismatch!
39
47
  # endif
40
48
  #endif
41
49
 
50
+ #ifdef ICE_CPP11_MAPPING // C++11 mapping
51
+
42
52
  namespace Ice
43
53
  {
44
- #if defined(ICE_HAS_DECLSPEC_IMPORT_EXPORT) && !defined(ICE_STATIC_LIBS)
45
- template struct ICE_API StreamWriter< ::Ice::Identity, ::IceInternal::BasicStream>;
46
- template struct ICE_API StreamReader< ::Ice::Identity, ::IceInternal::BasicStream>;
47
- #endif
48
54
  }
55
+
56
+ #else // C++98 mapping
57
+
58
+ namespace Ice
59
+ {
60
+ }
61
+
62
+ #endif
@@ -1,13 +1,13 @@
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
- // Ice version 3.6.5
10
+ // Ice version 3.7.0
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -23,25 +23,56 @@
23
23
  #endif
24
24
  #include <Ice/ImplicitContext.h>
25
25
  #include <IceUtil/PushDisableWarnings.h>
26
- #include <Ice/BasicStream.h>
27
- #include <IceUtil/Iterator.h>
26
+ #include <Ice/InputStream.h>
27
+ #include <Ice/OutputStream.h>
28
28
  #include <IceUtil/PopDisableWarnings.h>
29
29
 
30
+ #if defined(_MSC_VER)
31
+ # pragma warning(disable:4458) // declaration of ... hides class member
32
+ #elif defined(__clang__)
33
+ # pragma clang diagnostic ignored "-Wshadow"
34
+ #elif defined(__GNUC__)
35
+ # pragma GCC diagnostic ignored "-Wshadow"
36
+ #endif
37
+
30
38
  #ifndef ICE_IGNORE_VERSION
31
- # if ICE_INT_VERSION / 100 != 306
39
+ # if ICE_INT_VERSION / 100 != 307
32
40
  # error Ice version mismatch!
33
41
  # endif
34
42
  # if ICE_INT_VERSION % 100 > 50
35
43
  # error Beta header file detected
36
44
  # endif
37
- # if ICE_INT_VERSION % 100 < 5
45
+ # if ICE_INT_VERSION % 100 < 0
38
46
  # error Ice patch level mismatch!
39
47
  # endif
40
48
  #endif
41
49
 
50
+ #ifdef ICE_CPP11_MAPPING // C++11 mapping
51
+
52
+ namespace
53
+ {
54
+
55
+ }
56
+
57
+ Ice::ImplicitContext::~ImplicitContext()
58
+ {
59
+ }
60
+
61
+ #else // C++98 mapping
62
+
42
63
  namespace
43
64
  {
44
65
 
45
66
  }
46
67
 
68
+ Ice::ImplicitContext::~ImplicitContext()
69
+ {
70
+ }
71
+
47
72
  ICE_API ::Ice::LocalObject* Ice::upCast(::Ice::ImplicitContext* p) { return p; }
73
+
74
+ namespace Ice
75
+ {
76
+ }
77
+
78
+ #endif
@@ -1,13 +1,13 @@
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
- // Ice version 3.6.5
10
+ // Ice version 3.7.0
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -23,22 +23,44 @@
23
23
  #endif
24
24
  #include <Ice/ImplicitContextF.h>
25
25
  #include <IceUtil/PushDisableWarnings.h>
26
- #include <IceUtil/Iterator.h>
27
26
  #include <IceUtil/PopDisableWarnings.h>
28
27
 
28
+ #if defined(_MSC_VER)
29
+ # pragma warning(disable:4458) // declaration of ... hides class member
30
+ #elif defined(__clang__)
31
+ # pragma clang diagnostic ignored "-Wshadow"
32
+ #elif defined(__GNUC__)
33
+ # pragma GCC diagnostic ignored "-Wshadow"
34
+ #endif
35
+
29
36
  #ifndef ICE_IGNORE_VERSION
30
- # if ICE_INT_VERSION / 100 != 306
37
+ # if ICE_INT_VERSION / 100 != 307
31
38
  # error Ice version mismatch!
32
39
  # endif
33
40
  # if ICE_INT_VERSION % 100 > 50
34
41
  # error Beta header file detected
35
42
  # endif
36
- # if ICE_INT_VERSION % 100 < 5
43
+ # if ICE_INT_VERSION % 100 < 0
37
44
  # error Ice patch level mismatch!
38
45
  # endif
39
46
  #endif
40
47
 
48
+ #ifdef ICE_CPP11_MAPPING // C++11 mapping
49
+
50
+ namespace
51
+ {
52
+
53
+ }
54
+
55
+ #else // C++98 mapping
56
+
41
57
  namespace
42
58
  {
43
59
 
44
60
  }
61
+
62
+ namespace Ice
63
+ {
64
+ }
65
+
66
+ #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.
@@ -8,7 +8,7 @@
8
8
  // **********************************************************************
9
9
 
10
10
  #include <Ice/ImplicitContextI.h>
11
- #include <Ice/BasicStream.h>
11
+ #include <Ice/OutputStream.h>
12
12
  #include <Ice/Object.h>
13
13
  #include <IceUtil/Mutex.h>
14
14
  #include <IceUtil/MutexPtrLock.h>
@@ -31,7 +31,7 @@ public:
31
31
  virtual string put(const string&, const string&);
32
32
  virtual string remove(const string&);
33
33
 
34
- virtual void write(const Context&, ::IceInternal::BasicStream*) const;
34
+ virtual void write(const Context&, ::Ice::OutputStream*) const;
35
35
  virtual void combine(const Context&, Context&) const;
36
36
 
37
37
  private:
@@ -39,7 +39,7 @@ private:
39
39
  IceUtil::Mutex _mutex;
40
40
  };
41
41
 
42
- #ifndef ICE_OS_WINRT
42
+ #ifndef ICE_OS_UWP
43
43
  class PerThreadImplicitContext : public ImplicitContextI
44
44
  {
45
45
  public:
@@ -55,7 +55,7 @@ public:
55
55
  virtual string put(const string&, const string&);
56
56
  virtual string remove(const string&);
57
57
 
58
- virtual void write(const Context&, ::IceInternal::BasicStream*) const;
58
+ virtual void write(const Context&, ::Ice::OutputStream*) const;
59
59
  virtual void combine(const Context&, Context&) const;
60
60
 
61
61
  struct Slot
@@ -108,7 +108,7 @@ private:
108
108
 
109
109
  extern "C" void iceImplicitContextThreadDestructor(void*);
110
110
 
111
- /*static*/ ImplicitContextI*
111
+ ImplicitContextIPtr
112
112
  ImplicitContextI::create(const std::string& kind)
113
113
  {
114
114
  if(kind == "None" || kind == "")
@@ -117,15 +117,15 @@ ImplicitContextI::create(const std::string& kind)
117
117
  }
118
118
  else if(kind == "Shared")
119
119
  {
120
- return new SharedImplicitContext;
120
+ return ICE_MAKE_SHARED(SharedImplicitContext);
121
121
  }
122
122
  else if(kind == "PerThread")
123
123
  {
124
- #ifndef ICE_OS_WINRT
125
- return new PerThreadImplicitContext;
124
+ #ifndef ICE_OS_UWP
125
+ return ICE_MAKE_SHARED(PerThreadImplicitContext);
126
126
  #else
127
127
  throw InitializationException(__FILE__, __LINE__,
128
- "'PerThread' Ice.ImplicitContext isn't supported for WinRT.");
128
+ "'PerThread' Ice.ImplicitContext isn't supported for UWP.");
129
129
  return 0; // Keep the compiler happy.
130
130
  #endif
131
131
  }
@@ -138,7 +138,7 @@ ImplicitContextI::create(const std::string& kind)
138
138
  }
139
139
  }
140
140
 
141
- #if defined(_WIN32) && !defined(ICE_OS_WINRT)
141
+ #if defined(_WIN32) && !defined(ICE_OS_UWP)
142
142
  void
143
143
  ImplicitContextI::cleanupThread()
144
144
  {
@@ -216,7 +216,7 @@ SharedImplicitContext::remove(const string& k)
216
216
  }
217
217
 
218
218
  void
219
- SharedImplicitContext::write(const Context& proxyCtx, ::IceInternal::BasicStream* s) const
219
+ SharedImplicitContext::write(const Context& proxyCtx, ::Ice::OutputStream* s) const
220
220
  {
221
221
  IceUtil::Mutex::Lock lock(_mutex);
222
222
  if(proxyCtx.size() == 0)
@@ -259,7 +259,7 @@ SharedImplicitContext::combine(const Context& proxyCtx, Context& ctx) const
259
259
  //
260
260
  // PerThreadImplicitContext implementation
261
261
  //
262
- #ifndef ICE_OS_WINRT
262
+ #ifndef ICE_OS_UWP
263
263
  long PerThreadImplicitContext::_nextId;
264
264
  long PerThreadImplicitContext::_destroyedIds;
265
265
  size_t PerThreadImplicitContext::_slotVectors;
@@ -604,7 +604,7 @@ PerThreadImplicitContext::remove(const string& k)
604
604
  }
605
605
 
606
606
  void
607
- PerThreadImplicitContext::write(const Context& proxyCtx, ::IceInternal::BasicStream* s) const
607
+ PerThreadImplicitContext::write(const Context& proxyCtx, ::Ice::OutputStream* s) const
608
608
  {
609
609
  const Context* threadCtx = getThreadContext(false);
610
610
 
@@ -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.
@@ -18,12 +18,14 @@ namespace Ice
18
18
  //
19
19
  // The base class for all ImplicitContext implementations
20
20
  //
21
+ class ImplicitContextI;
22
+ ICE_DEFINE_PTR(ImplicitContextIPtr,ImplicitContextI);
21
23
 
22
24
  class ImplicitContextI : public ImplicitContext
23
25
  {
24
26
  public:
25
-
26
- static ImplicitContextI* create(const std::string&);
27
+
28
+ static ImplicitContextIPtr create(const std::string&);
27
29
 
28
30
  #ifdef _WIN32
29
31
  static void cleanupThread();
@@ -34,7 +36,7 @@ public:
34
36
  // (entries in the given context overwrite entries in
35
37
  // the underlying context)
36
38
  //
37
- virtual void write(const Context&, ::IceInternal::BasicStream*) const = 0;
39
+ virtual void write(const Context&, ::Ice::OutputStream*) const = 0;
38
40
 
39
41
  //
40
42
  // Combines the underlying context plus the given context
@@ -45,7 +47,7 @@ public:
45
47
 
46
48
  };
47
49
 
48
- typedef IceInternal::Handle<ImplicitContextI> ImplicitContextIPtr;
50
+ ICE_DEFINE_PTR(ImplicitContextIPtr, ImplicitContextI);
49
51
 
50
52
  }
51
53
  #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.
@@ -22,7 +22,7 @@
22
22
  #include <Ice/Protocol.h>
23
23
  #include <Ice/ReplyStatus.h>
24
24
  #include <Ice/ResponseHandler.h>
25
- #include <IceUtil/StringUtil.h>
25
+ #include <Ice/StringUtil.h>
26
26
  #include <typeinfo>
27
27
 
28
28
  using namespace std;
@@ -33,109 +33,95 @@ using namespace IceInternal;
33
33
  namespace IceUtilInternal
34
34
  {
35
35
 
36
- extern bool ICE_UTIL_API printStackTraces;
36
+ extern bool printStackTraces;
37
37
 
38
38
  }
39
39
 
40
+ #ifdef ICE_CPP11_MAPPING
41
+ Ice::MarshaledResult::MarshaledResult(const Ice::Current& current) :
42
+ ostr(make_shared<Ice::OutputStream>(current.adapter->getCommunicator(), Ice::currentProtocolEncoding))
43
+ {
44
+ ostr->writeBlob(replyHdr, sizeof(replyHdr));
45
+ ostr->write(current.requestId);
46
+ ostr->write(replyOK);
47
+ }
48
+ #endif
49
+
40
50
  IceInternal::IncomingBase::IncomingBase(Instance* instance, ResponseHandler* responseHandler,
41
51
  Ice::Connection* connection, const ObjectAdapterPtr& adapter,
42
52
  bool response, Byte compress, Int requestId) :
43
53
  _response(response),
44
54
  _compress(compress),
55
+ _format(Ice::ICE_ENUM(FormatType, DefaultFormat)),
45
56
  _os(instance, Ice::currentProtocolEncoding),
46
57
  _responseHandler(responseHandler)
47
58
  {
48
59
  _current.adapter = adapter;
60
+ #ifdef ICE_CPP11_MAPPING
61
+ ::Ice::ConnectionI* conn = dynamic_cast<::Ice::ConnectionI*>(connection);
62
+ _current.con = conn ? conn->shared_from_this() : nullptr;
63
+ #else
49
64
  _current.con = connection;
65
+ #endif
50
66
  _current.requestId = requestId;
51
67
  }
52
68
 
53
- IceInternal::IncomingBase::IncomingBase(IncomingBase& in) :
54
- _current(in._current), // copy
55
- _os(in._os.instance(), Ice::currentProtocolEncoding),
56
- _interceptorAsyncCallbackQueue(in._interceptorAsyncCallbackQueue) // copy
57
- {
58
- __adopt(in); // adopt everything else
59
- }
60
-
61
- void
62
- IceInternal::IncomingBase::__adopt(IncomingBase& other)
69
+ IceInternal::IncomingBase::IncomingBase(IncomingBase& other) :
70
+ _current(other._current),
71
+ _servant(other._servant),
72
+ _locator(other._locator),
73
+ _cookie(other._cookie),
74
+ _response(other._response),
75
+ _compress(other._compress),
76
+ _format(other._format),
77
+ _os(other._os.instance(), Ice::currentProtocolEncoding),
78
+ _responseHandler(other._responseHandler),
79
+ _interceptorCBs(other._interceptorCBs)
63
80
  {
64
81
  _observer.adopt(other._observer);
65
-
66
- _servant = other._servant;
67
- other._servant = 0;
68
-
69
- _locator = other._locator;
70
- other._locator = 0;
71
-
72
- _cookie = other._cookie;
73
- other._cookie = 0;
74
-
75
- _response = other._response;
76
- other._response = false;
77
-
78
- _compress = other._compress;
79
- other._compress = 0;
80
-
81
- _os.swap(other._os);
82
-
83
- _responseHandler = other._responseHandler;
84
- other._responseHandler = 0;
85
82
  }
86
83
 
87
- BasicStream*
88
- IncomingBase::__startWriteParams(FormatType format)
84
+ OutputStream*
85
+ IncomingBase::startWriteParams()
89
86
  {
90
87
  if(!_response)
91
88
  {
92
89
  throw MarshalException(__FILE__, __LINE__, "can't marshal out parameters for oneway dispatch");
93
90
  }
94
91
 
95
- assert(_os.b.size() == headerSize + 4); // Reply status position.
96
92
  assert(_current.encoding >= Ice::Encoding_1_0); // Encoding for reply is known.
97
- _os.write(static_cast<Ice::Byte>(0));
98
- _os.startWriteEncaps(_current.encoding, format);
99
93
 
100
- //
101
- // We still return the stream even if no response is expected. The
102
- // servant code might still write some out parameters if for
103
- // example a method with out parameters somehow and erroneously
104
- // invoked as oneway (or if the invocation is invoked on a
105
- // blobject and the blobject erroneously writes a response).
106
- //
94
+ _os.writeBlob(replyHdr, sizeof(replyHdr));
95
+ _os.write(_current.requestId);
96
+ _os.write(replyOK);
97
+ _os.startEncapsulation(_current.encoding, _format);
107
98
  return &_os;
108
99
  }
109
100
 
110
101
  void
111
- IncomingBase::__endWriteParams(bool ok)
102
+ IncomingBase::endWriteParams()
112
103
  {
113
- if(!ok)
114
- {
115
- _observer.userException();
116
- }
117
-
118
104
  if(_response)
119
105
  {
120
- *(_os.b.begin() + headerSize + 4) = ok ? replyOK : replyUserException; // Reply status position.
121
- _os.endWriteEncaps();
106
+ _os.endEncapsulation();
122
107
  }
123
108
  }
124
109
 
125
110
  void
126
- IncomingBase::__writeEmptyParams()
111
+ IncomingBase::writeEmptyParams()
127
112
  {
128
113
  if(_response)
129
114
  {
130
- assert(_os.b.size() == headerSize + 4); // Reply status position.
131
115
  assert(_current.encoding >= Ice::Encoding_1_0); // Encoding for reply is known.
116
+ _os.writeBlob(replyHdr, sizeof(replyHdr));
117
+ _os.write(_current.requestId);
132
118
  _os.write(replyOK);
133
- _os.writeEmptyEncaps(_current.encoding);
119
+ _os.writeEmptyEncapsulation(_current.encoding);
134
120
  }
135
121
  }
136
122
 
137
123
  void
138
- IncomingBase::__writeParamEncaps(const Byte* v, Ice::Int sz, bool ok)
124
+ IncomingBase::writeParamEncaps(const Byte* v, Ice::Int sz, bool ok)
139
125
  {
140
126
  if(!ok)
141
127
  {
@@ -144,47 +130,118 @@ IncomingBase::__writeParamEncaps(const Byte* v, Ice::Int sz, bool ok)
144
130
 
145
131
  if(_response)
146
132
  {
147
- assert(_os.b.size() == headerSize + 4); // Reply status position.
148
133
  assert(_current.encoding >= Ice::Encoding_1_0); // Encoding for reply is known.
134
+ _os.writeBlob(replyHdr, sizeof(replyHdr));
135
+ _os.write(_current.requestId);
149
136
  _os.write(ok ? replyOK : replyUserException);
150
137
  if(sz == 0)
151
138
  {
152
- _os.writeEmptyEncaps(_current.encoding);
139
+ _os.writeEmptyEncapsulation(_current.encoding);
153
140
  }
154
141
  else
155
142
  {
156
- _os.writeEncaps(v, sz);
143
+ _os.writeEncapsulation(v, sz);
157
144
  }
158
145
  }
159
146
  }
160
147
 
148
+ #ifdef ICE_CPP11_MAPPING
161
149
  void
162
- IncomingBase::__writeUserException(const Ice::UserException& ex, Ice::FormatType format)
150
+ IceInternal::IncomingBase::setMarshaledResult(const Ice::MarshaledResult& result)
163
151
  {
164
- ::IceInternal::BasicStream* __os = __startWriteParams(format);
165
- __os->write(ex);
166
- __endWriteParams(false);
152
+ result.getOutputStream()->swap(_os);
153
+ }
154
+ #endif
155
+
156
+ void
157
+ IceInternal::IncomingBase::response(bool amd)
158
+ {
159
+ try
160
+ {
161
+ if(_locator && !servantLocatorFinished(amd))
162
+ {
163
+ return;
164
+ }
165
+
166
+ assert(_responseHandler);
167
+ if(_response)
168
+ {
169
+ _observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
170
+ _responseHandler->sendResponse(_current.requestId, &_os, _compress, amd);
171
+ }
172
+ else
173
+ {
174
+ _responseHandler->sendNoResponse();
175
+ }
176
+ }
177
+ catch(const LocalException& ex)
178
+ {
179
+ _responseHandler->invokeException(_current.requestId, ex, 1, amd); // Fatal invocation exception
180
+ }
181
+
182
+ _observer.detach();
183
+ _responseHandler = 0;
167
184
  }
168
185
 
169
186
  void
170
- IceInternal::IncomingBase::__warning(const Exception& ex) const
187
+ IceInternal::IncomingBase::exception(const std::exception& exc, bool amd)
188
+ {
189
+ try
190
+ {
191
+ if(_locator && !servantLocatorFinished(amd))
192
+ {
193
+ return;
194
+ }
195
+ handleException(exc, amd);
196
+ }
197
+ catch(const LocalException& ex)
198
+ {
199
+ _responseHandler->invokeException(_current.requestId, ex, 1, amd); // Fatal invocation exception
200
+ }
201
+ }
202
+
203
+ void
204
+ IceInternal::IncomingBase::exception(const string& msg, bool amd)
205
+ {
206
+ try
207
+ {
208
+ if(_locator && !servantLocatorFinished(amd))
209
+ {
210
+ return;
211
+ }
212
+ handleException(msg, amd);
213
+ }
214
+ catch(const LocalException& ex)
215
+ {
216
+ _responseHandler->invokeException(_current.requestId, ex, 1, amd); // Fatal invocation exception
217
+ }
218
+ }
219
+
220
+ void
221
+ IceInternal::IncomingBase::warning(const Exception& ex) const
171
222
  {
172
223
  Warning out(_os.instance()->initializationData().logger);
173
224
 
225
+ ToStringMode toStringMode = _os.instance()->toStringMode();
226
+
174
227
  out << "dispatch exception: " << ex;
175
- out << "\nidentity: " << _os.instance()->identityToString(_current.id);
176
- out << "\nfacet: " << IceUtilInternal::escapeString(_current.facet, "");
228
+ out << "\nidentity: " << identityToString(_current.id, toStringMode);
229
+ out << "\nfacet: ";
230
+ out << escapeString(_current.facet, "", toStringMode);
177
231
  out << "\noperation: " << _current.operation;
178
232
 
179
233
  if(_current.con)
180
234
  {
181
235
  try
182
236
  {
183
- Ice::ConnectionInfoPtr connInfo = _current.con->getInfo();
184
- Ice::IPConnectionInfoPtr ipConnInfo = Ice::IPConnectionInfoPtr::dynamicCast(connInfo);
185
- if(ipConnInfo)
237
+ for(Ice::ConnectionInfoPtr connInfo = _current.con->getInfo(); connInfo; connInfo = connInfo->underlying)
186
238
  {
187
- out << "\nremote host: " << ipConnInfo->remoteAddress << " remote port: " << ipConnInfo->remotePort;
239
+ Ice::IPConnectionInfoPtr ipConnInfo = ICE_DYNAMIC_CAST(Ice::IPConnectionInfo, connInfo);
240
+ if(ipConnInfo)
241
+ {
242
+ out << "\nremote host: " << ipConnInfo->remoteAddress << " remote port: " << ipConnInfo->remotePort;
243
+ break;
244
+ }
188
245
  }
189
246
  }
190
247
  catch(const Ice::LocalException&)
@@ -195,28 +252,32 @@ IceInternal::IncomingBase::__warning(const Exception& ex) const
195
252
  }
196
253
 
197
254
  void
198
- IceInternal::IncomingBase::__warning(const string& msg) const
255
+ IceInternal::IncomingBase::warning(const string& msg) const
199
256
  {
200
257
  Warning out(_os.instance()->initializationData().logger);
258
+ ToStringMode toStringMode = _os.instance()->toStringMode();
201
259
 
202
260
  out << "dispatch exception: " << msg;
203
- out << "\nidentity: " << _os.instance()->identityToString(_current.id);
204
- out << "\nfacet: " << IceUtilInternal::escapeString(_current.facet, "");
261
+ out << "\nidentity: " << identityToString(_current.id, toStringMode);
262
+ out << "\nfacet: " << escapeString(_current.facet, "", toStringMode);
205
263
  out << "\noperation: " << _current.operation;
206
264
 
207
265
  if(_current.con)
208
266
  {
209
- Ice::ConnectionInfoPtr connInfo = _current.con->getInfo();
210
- Ice::IPConnectionInfoPtr ipConnInfo = Ice::IPConnectionInfoPtr::dynamicCast(connInfo);
211
- if(ipConnInfo)
267
+ for(Ice::ConnectionInfoPtr connInfo = _current.con->getInfo(); connInfo; connInfo = connInfo->underlying)
212
268
  {
213
- out << "\nremote host: " << ipConnInfo->remoteAddress << " remote port: " << ipConnInfo->remotePort;
269
+ Ice::IPConnectionInfoPtr ipConnInfo = ICE_DYNAMIC_CAST(Ice::IPConnectionInfo, connInfo);
270
+ if(ipConnInfo)
271
+ {
272
+ out << "\nremote host: " << ipConnInfo->remoteAddress << " remote port: " << ipConnInfo->remotePort;
273
+ break;
274
+ }
214
275
  }
215
276
  }
216
277
  }
217
278
 
218
279
  bool
219
- IceInternal::IncomingBase::__servantLocatorFinished(bool amd)
280
+ IceInternal::IncomingBase::servantLocatorFinished(bool amd)
220
281
  {
221
282
  assert(_locator && _servant);
222
283
  try
@@ -224,49 +285,27 @@ IceInternal::IncomingBase::__servantLocatorFinished(bool amd)
224
285
  _locator->finished(_current, _servant, _cookie);
225
286
  return true;
226
287
  }
227
- catch(const UserException& ex)
228
- {
229
- assert(_responseHandler);
230
-
231
- _observer.userException();
232
-
233
- //
234
- // The operation may have already marshaled a reply; we must overwrite that reply.
235
- //
236
- if(_response)
237
- {
238
- _os.b.resize(headerSize + 4); // Reply status position.
239
- _os.write(replyUserException);
240
- _os.startWriteEncaps(_current.encoding, DefaultFormat);
241
- _os.write(ex);
242
- _os.endWriteEncaps();
243
- _observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
244
- _responseHandler->sendResponse(_current.requestId, &_os, _compress, amd);
245
- }
246
- else
247
- {
248
- _responseHandler->sendNoResponse();
249
- }
250
-
251
- _observer.detach();
252
- _responseHandler = 0;
253
- }
254
288
  catch(const std::exception& ex)
255
289
  {
256
- __handleException(ex, amd);
290
+ handleException(ex, amd);
257
291
  }
258
292
  catch(...)
259
293
  {
260
- __handleException(amd);
294
+ handleException("unknown c++ exception", amd);
261
295
  }
262
296
  return false;
263
297
  }
264
298
 
265
299
  void
266
- IceInternal::IncomingBase::__handleException(const std::exception& exc, bool amd)
300
+ IceInternal::IncomingBase::handleException(const std::exception& exc, bool amd)
267
301
  {
268
302
  assert(_responseHandler);
269
303
 
304
+ // Reset the stream, it's possible the marshalling of the response failed and left
305
+ // the stream in an unknown state.
306
+ _os.clear();
307
+ _os.b.clear();
308
+
270
309
  if(const SystemException* ex = dynamic_cast<const SystemException*>(&exc))
271
310
  {
272
311
  if(_responseHandler->systemException(_current.requestId, *ex, amd))
@@ -297,17 +336,18 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc, bool amd
297
336
 
298
337
  if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 1)
299
338
  {
300
- __warning(*rfe);
339
+ warning(*rfe);
301
340
  }
302
341
 
303
342
  if(_observer)
304
343
  {
305
- _observer.failed(rfe->ice_name());
344
+ _observer.failed(rfe->ice_id());
306
345
  }
307
346
 
308
347
  if(_response)
309
348
  {
310
- _os.b.resize(headerSize + 4); // Reply status position.
349
+ _os.writeBlob(replyHdr, sizeof(replyHdr));
350
+ _os.write(_current.requestId);
311
351
  if(dynamic_cast<ObjectNotExistException*>(rfe))
312
352
  {
313
353
  _os.write(replyObjectNotExist);
@@ -349,21 +389,45 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc, bool amd
349
389
  _responseHandler->sendNoResponse();
350
390
  }
351
391
  }
392
+ else if(const UserException* ex = dynamic_cast<const UserException*>(&exc))
393
+ {
394
+ _observer.userException();
395
+
396
+ //
397
+ // The operation may have already marshaled a reply; we must overwrite that reply.
398
+ //
399
+ if(_response)
400
+ {
401
+ _os.writeBlob(replyHdr, sizeof(replyHdr));
402
+ _os.write(_current.requestId);
403
+ _os.write(replyUserException);
404
+ _os.startEncapsulation(_current.encoding, _format);
405
+ _os.write(*ex);
406
+ _os.endEncapsulation();
407
+ _observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
408
+ _responseHandler->sendResponse(_current.requestId, &_os, _compress, amd);
409
+ }
410
+ else
411
+ {
412
+ _responseHandler->sendNoResponse();
413
+ }
414
+ }
352
415
  else if(const Exception* ex = dynamic_cast<const Exception*>(&exc))
353
416
  {
354
417
  if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0)
355
418
  {
356
- __warning(*ex);
419
+ warning(*ex);
357
420
  }
358
421
 
359
422
  if(_observer)
360
423
  {
361
- _observer.failed(ex->ice_name());
424
+ _observer.failed(ex->ice_id());
362
425
  }
363
426
 
364
427
  if(_response)
365
428
  {
366
- _os.b.resize(headerSize + 4); // Reply status position.
429
+ _os.writeBlob(replyHdr, sizeof(replyHdr));
430
+ _os.write(_current.requestId);
367
431
  if(const UnknownLocalException* ule = dynamic_cast<const UnknownLocalException*>(&exc))
368
432
  {
369
433
  _os.write(replyUnknownLocalException);
@@ -425,7 +489,7 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc, bool amd
425
489
  {
426
490
  if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0)
427
491
  {
428
- __warning(string("std::exception: ") + exc.what());
492
+ warning(string("std::exception: ") + exc.what());
429
493
  }
430
494
 
431
495
  if(_observer)
@@ -435,7 +499,8 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc, bool amd
435
499
 
436
500
  if(_response)
437
501
  {
438
- _os.b.resize(headerSize + 4); // Reply status position.
502
+ _os.writeBlob(replyHdr, sizeof(replyHdr));
503
+ _os.write(_current.requestId);
439
504
  _os.write(replyUnknownException);
440
505
  ostringstream str;
441
506
  str << "std::exception: " << exc.what();
@@ -455,15 +520,20 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc, bool amd
455
520
  }
456
521
 
457
522
  void
458
- IceInternal::IncomingBase::__handleException(bool amd)
523
+ IceInternal::IncomingBase::handleException(const string& msg, bool amd)
459
524
  {
460
525
  if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0)
461
526
  {
462
- __warning("unknown c++ exception");
527
+ warning(msg);
463
528
  }
464
529
 
465
530
  assert(_responseHandler);
466
531
 
532
+ // Reset the stream, it's possible the marshalling of the response failed and left
533
+ // the stream in an unknown state.
534
+ _os.clear();
535
+ _os.b.clear();
536
+
467
537
  if(_observer)
468
538
  {
469
539
  _observer.failed("unknown");
@@ -471,9 +541,10 @@ IceInternal::IncomingBase::__handleException(bool amd)
471
541
 
472
542
  if(_response)
473
543
  {
474
- _os.b.resize(headerSize + 4); // Reply status position.
544
+ _os.writeBlob(replyHdr, sizeof(replyHdr));
545
+ _os.write(_current.requestId);
475
546
  _os.write(replyUnknownException);
476
- string reason = "unknown c++ exception";
547
+ string reason = msg;
477
548
  _os.write(reason, false);
478
549
  _observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
479
550
  _responseHandler->sendResponse(_current.requestId, &_os, _compress, amd);
@@ -487,37 +558,31 @@ IceInternal::IncomingBase::__handleException(bool amd)
487
558
  _responseHandler = 0;
488
559
  }
489
560
 
490
-
491
561
  IceInternal::Incoming::Incoming(Instance* instance, ResponseHandler* responseHandler, Ice::Connection* connection,
492
562
  const ObjectAdapterPtr& adapter, bool response, Byte compress, Int requestId) :
493
563
  IncomingBase(instance, responseHandler, connection, adapter, response, compress, requestId),
494
564
  _inParamPos(0)
495
565
  {
496
- //
497
- // Prepare the response if necessary.
498
- //
499
- if(response)
500
- {
501
- _os.writeBlob(replyHdr, sizeof(replyHdr));
502
-
503
- //
504
- // Add the request ID.
505
- //
506
- _os.write(requestId);
507
- }
508
566
  }
509
567
 
510
-
568
+ #ifdef ICE_CPP11_MAPPING
569
+ void
570
+ IceInternal::Incoming::push(function<bool()> response, function<bool(exception_ptr)> exception)
571
+ {
572
+ _interceptorCBs.push_front(make_pair(response, exception));
573
+ }
574
+ #else
511
575
  void
512
576
  IceInternal::Incoming::push(const Ice::DispatchInterceptorAsyncCallbackPtr& cb)
513
577
  {
514
- _interceptorAsyncCallbackQueue.push_front(cb);
578
+ _interceptorCBs.push_front(cb);
515
579
  }
580
+ #endif
516
581
 
517
582
  void
518
583
  IceInternal::Incoming::pop()
519
584
  {
520
- _interceptorAsyncCallbackQueue.pop_front();
585
+ _interceptorCBs.pop_front();
521
586
  }
522
587
 
523
588
  void
@@ -532,45 +597,25 @@ IceInternal::Incoming::startOver()
532
597
  }
533
598
  else
534
599
  {
535
- killAsync();
600
+ // Reset input stream's position and clear response
601
+ if(_inAsync)
602
+ {
603
+ _inAsync->kill(*this);
604
+ _inAsync = 0;
605
+ }
606
+ _os.clear();
607
+ _os.b.clear();
536
608
 
537
- //
538
- // Let's rewind _is and clean-up _os
539
- //
540
609
  _is->i = _inParamPos;
541
- _os.b.resize(headerSize + 4); // Reply status position.
542
- }
543
- }
544
-
545
- void
546
- IceInternal::Incoming::killAsync()
547
- {
548
- //
549
- // Always runs in the dispatch thread
550
- //
551
- if(_cb != 0)
552
- {
553
- //
554
- // May raise ResponseSentException
555
- //
556
- _cb->__deactivate(*this);
557
- _cb = 0;
558
610
  }
559
611
  }
560
612
 
561
613
  void
562
- IceInternal::Incoming::setActive(IncomingAsync& cb)
563
- {
564
- assert(_cb == 0);
565
- _cb = &cb; // acquires a ref-count
566
- }
567
-
568
- void
569
- IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStream* stream)
614
+ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, InputStream* stream)
570
615
  {
571
616
  _is = stream;
572
617
 
573
- BasicStream::Container::iterator start = _is->i;
618
+ InputStream::Container::iterator start = _is->i;
574
619
 
575
620
  //
576
621
  // Read the current.
@@ -644,72 +689,26 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre
644
689
  {
645
690
  _servant = _locator->locate(_current, _cookie);
646
691
  }
647
- catch(const UserException& ex)
648
- {
649
- Ice::EncodingVersion encoding = _is->skipEncaps(); // Required for batch requests.
650
-
651
- _observer.userException();
652
-
653
- if(_response)
654
- {
655
- _os.write(replyUserException);
656
- _os.startWriteEncaps(encoding, DefaultFormat);
657
- _os.write(ex);
658
- _os.endWriteEncaps();
659
- _observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
660
- _responseHandler->sendResponse(_current.requestId, &_os, _compress, false);
661
- }
662
- else
663
- {
664
- _responseHandler->sendNoResponse();
665
- }
666
-
667
- _observer.detach();
668
- _responseHandler = 0;
669
- return;
670
- }
671
692
  catch(const std::exception& ex)
672
693
  {
673
- _is->skipEncaps(); // Required for batch requests.
674
- __handleException(ex, false);
694
+ skipReadParams(); // Required for batch requests.
695
+ handleException(ex, false);
675
696
  return;
676
697
  }
677
698
  catch(...)
678
699
  {
679
- _is->skipEncaps(); // Required for batch requests.
680
- __handleException(false);
700
+ skipReadParams(); // Required for batch requests.
701
+ handleException("unknown c++ exception", false);
681
702
  return;
682
703
  }
683
704
  }
684
705
  }
685
706
  }
686
707
 
687
- try
708
+ if(!_servant)
688
709
  {
689
- if(_servant)
690
- {
691
- //
692
- // DispatchAsync is a "pseudo dispatch status", used internally only
693
- // to indicate async dispatch.
694
- //
695
- if(_servant->__dispatch(*this, _current) == DispatchAsync)
696
- {
697
- return;
698
- }
699
-
700
- if(_locator && !__servantLocatorFinished(false))
701
- {
702
- return;
703
- }
704
- }
705
- else
710
+ try
706
711
  {
707
- //
708
- // Skip the input parameters, this is required for reading
709
- // the next batch request if dispatching batch requests.
710
- //
711
- _is->skipEncaps();
712
-
713
712
  if(servantManager && servantManager->hasServant(_current.id))
714
713
  {
715
714
  throw FacetNotExistException(__FILE__, __LINE__, _current.id, _current.facet, _current.operation);
@@ -719,44 +718,76 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre
719
718
  throw ObjectNotExistException(__FILE__, __LINE__, _current.id, _current.facet, _current.operation);
720
719
  }
721
720
  }
722
- }
723
- catch(const std::exception& ex)
724
- {
725
- if(_servant && _locator && !__servantLocatorFinished(false))
721
+ catch(const Ice::LocalException& ex)
726
722
  {
723
+ skipReadParams(); // Required for batch requests
724
+ handleException(ex, false);
727
725
  return;
728
726
  }
729
- __handleException(ex, false);
730
- return;
731
727
  }
732
- catch(...)
728
+
729
+ try
733
730
  {
734
- if(_servant && _locator && !__servantLocatorFinished(false))
731
+ //
732
+ // Dispatch in the incoming call
733
+ //
734
+ _servant->_iceDispatch(*this, _current);
735
+
736
+ //
737
+ // If the request was not dispatched asynchronously, send the response.
738
+ //
739
+ if(!_inAsync)
735
740
  {
736
- return;
741
+ response(false);
737
742
  }
738
- __handleException(false);
739
- return;
740
743
  }
741
-
742
- //
743
- // Don't put the code below into the try block above. Exceptions
744
- // in the code below are considered fatal, and must propagate to
745
- // the caller of this operation.
746
- //
747
-
748
- if(_response)
744
+ catch(const std::exception& ex)
749
745
  {
750
- _observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
751
- _responseHandler->sendResponse(_current.requestId, &_os, _compress, false);
746
+ if(_inAsync)
747
+ {
748
+ try
749
+ {
750
+ _inAsync->kill(*this);
751
+ }
752
+ catch(const Ice::ResponseSentException&)
753
+ {
754
+ const Ice::PropertiesPtr properties = _os.instance()->initializationData().properties;
755
+ if(properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0)
756
+ {
757
+ if(const IceUtil::Exception* exc = dynamic_cast<const IceUtil::Exception*>(&ex))
758
+ {
759
+ warning(*exc);
760
+ }
761
+ else
762
+ {
763
+ warning(string("std::exception: ") + ex.what());
764
+ }
765
+ }
766
+ return;
767
+ }
768
+ }
769
+ exception(ex, false);
752
770
  }
753
- else
771
+ catch(...)
754
772
  {
755
- _responseHandler->sendNoResponse();
773
+ if(_inAsync)
774
+ {
775
+ try
776
+ {
777
+ _inAsync->kill(*this);
778
+ }
779
+ catch(const Ice::ResponseSentException&)
780
+ {
781
+ const Ice::PropertiesPtr properties = _os.instance()->initializationData().properties;
782
+ if(properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0)
783
+ {
784
+ warning("unknown c++ exception");
785
+ }
786
+ return;
787
+ }
788
+ }
789
+ exception("unknown c++ exception", false);
756
790
  }
757
-
758
- _observer.detach();
759
- _responseHandler = 0;
760
791
  }
761
792
 
762
793
  const Current&