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.
@@ -11,51 +11,37 @@
11
11
  #define ICE_UTIL_UNICODE_H
12
12
 
13
13
  #include <IceUtil/Config.h>
14
- #include <IceUtil/StringConverter.h>
14
+ #include <vector>
15
15
 
16
16
  namespace IceUtilInternal
17
17
  {
18
18
 
19
19
  //
20
- // Converts UTF-8 byte-sequences to and from UTF-16 or UTF-32 (with native
21
- // endianness) depending on sizeof(wchar_t).
20
+ // Convert UTF-8 byte-sequences to and from UTF-16 or UTF-32 (with native endianness)
22
21
  //
23
- // These are thin wrappers over the UTF8/16/32 converters provided by
24
- // unicode.org
25
- //
26
-
27
- enum ConversionResult
28
- {
29
- conversionOK, /* conversion successful */
30
- sourceExhausted, /* partial character in source, but hit end */
31
- targetExhausted, /* insuff. room in target for conversion */
32
- sourceIllegal /* source sequence is illegal/malformed */
33
- };
34
-
35
- ConversionResult
36
- convertUTFWstringToUTF8(const wchar_t*& sourceStart, const wchar_t* sourceEnd,
37
- IceUtil::Byte*& targetStart, IceUtil::Byte* targetEnd, IceUtil::ConversionFlags flags);
22
+ // These are wrappers for Unicode's ConvertUTF.h/cpp.
38
23
 
39
- ConversionResult
40
- convertUTF8ToUTFWstring(const IceUtil::Byte*& sourceStart, const IceUtil::Byte* sourceEnd,
41
- wchar_t*& targetStart, wchar_t* targetEnd, IceUtil::ConversionFlags flags);
42
-
43
- ConversionResult
44
- convertUTF8ToUTFWstring(const IceUtil::Byte*& sourceStart, const IceUtil::Byte* sourceEnd,
45
- std::wstring& target, IceUtil::ConversionFlags flags);
24
+ //
25
+ // Convert wstring encoded with UTF-16 or UTF-32 to UTF-8.
26
+ // Returns false if needs for space and true upon success.
27
+ // Throws IllegalConversionException to report error
28
+ //
29
+ bool
30
+ convertUTFWstringToUTF8(const wchar_t*& sourceStart, const wchar_t* sourceEnd,
31
+ IceUtil::Byte*& targetStart, IceUtil::Byte* targetEnd);
46
32
 
33
+ void
34
+ convertUTF8ToUTFWstring(const IceUtil::Byte*& sourceStart, const IceUtil::Byte* sourceEnd,
35
+ std::wstring& target);
47
36
 
48
- ICE_UTIL_API ConversionResult
49
- convertUTF8ToUTF16(const std::vector<unsigned char>&, std::vector<unsigned short>&,
50
- IceUtil::ConversionFlags);
37
+ void
38
+ convertUTF8ToUTF16(const std::vector<unsigned char>&, std::vector<unsigned short>&);
51
39
 
52
- ICE_UTIL_API ConversionResult
53
- convertUTF8ToUTF32(const std::vector<unsigned char>&, std::vector<unsigned int>&,
54
- IceUtil::ConversionFlags);
40
+ void
41
+ convertUTF8ToUTF32(const std::vector<unsigned char>&, std::vector<unsigned int>&);
55
42
 
56
- ICE_UTIL_API ConversionResult
57
- convertUTF32ToUTF8(const std::vector<unsigned int>&, std::vector<unsigned char>&,
58
- IceUtil::ConversionFlags);
43
+ void
44
+ convertUTF32ToUTF8(const std::vector<unsigned int>&, std::vector<unsigned char>&);
59
45
 
60
46
  }
61
47
 
@@ -0,0 +1,838 @@
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
+ #if defined(_MSC_VER) && _MSC_VER >= 1700
11
+ //
12
+ // DbgHelp.dll on Windows XP does not contain Unicode functions, so we
13
+ // "switch on" Unicode only with VS2012 and up
14
+ //
15
+ # ifndef UNICODE
16
+ # define UNICODE
17
+ # endif
18
+ # ifndef _UNICODE
19
+ # define _UNICODE
20
+ # endif
21
+ #endif
22
+
23
+ //
24
+ // For UINTPTR_MAX on Ubuntu Precise
25
+ //
26
+ #ifndef __STDC_LIMIT_MACROS
27
+ # define __STDC_LIMIT_MACROS
28
+ #endif
29
+
30
+ #include <IceUtil/Exception.h>
31
+ #include <IceUtil/MutexPtrLock.h>
32
+ #include <IceUtil/Mutex.h>
33
+ #include <IceUtil/StringUtil.h>
34
+ #include <ostream>
35
+ #include <iomanip>
36
+ #include <cstdlib>
37
+
38
+ #ifdef __GNUC__
39
+ # if defined(ICE_LIBBACKTRACE)
40
+ # include <backtrace.h>
41
+ # include <backtrace-supported.h>
42
+ # if BACKTRACE_SUPPORTED && BACKTRACE_SUPPORTS_THREADS
43
+ # include <algorithm>
44
+ # include <cxxabi.h>
45
+ # else
46
+ // It's available but we cant' use it - shouldn't happen
47
+ # undef ICE_LIBBACKTRACE
48
+ # endif
49
+ # endif
50
+
51
+ # if !defined(__sun) && !defined(__FreeBSD__) && !defined(__MINGW32__) && !defined(ICE_STATIC_LIBS)
52
+ # include <execinfo.h>
53
+ # include <cxxabi.h>
54
+ # include <stdint.h>
55
+ # define ICE_BACKTRACE
56
+ # endif
57
+ #endif
58
+
59
+ #if defined(_WIN32) && !defined(ICE_OS_UWP) && !defined(__MINGW32__)
60
+ # define ICE_DBGHELP
61
+ # if defined(_MSC_VER) && (_MSC_VER >= 1700)
62
+ # define DBGHELP_TRANSLATE_TCHAR
63
+ # include <IceUtil/StringConverter.h>
64
+ # if _MSC_VER >= 1900
65
+ # pragma warning(disable:4091) // VS 2015 RC issues this warning for code in DbgHelp.h
66
+ # endif
67
+ # endif
68
+ # include <DbgHelp.h>
69
+ # include <tchar.h>
70
+ #endif
71
+
72
+ using namespace std;
73
+
74
+ namespace IceUtilInternal
75
+ {
76
+
77
+ #ifdef NDEBUG
78
+ bool ICE_API printStackTraces = false;
79
+ #else
80
+ bool ICE_API printStackTraces = true;
81
+ #endif
82
+
83
+ bool ICE_API nullHandleAbort = false;
84
+
85
+ StackTraceImpl
86
+ stackTraceImpl()
87
+ {
88
+ #if defined(ICE_DBGHELP)
89
+ return STDbghelp;
90
+ #elif defined(ICE_LIBBACKTRACE)
91
+ # if defined(ICE_BACKTRACE)
92
+ return STLibbacktracePlus;
93
+ # else
94
+ return STLibbacktrace;
95
+ # endif
96
+ #elif defined(ICE_BACKTRACE)
97
+ return STBacktrace;
98
+ #else
99
+ return STNone;
100
+ #endif
101
+ }
102
+ }
103
+
104
+ namespace
105
+ {
106
+
107
+ IceUtil::Mutex* globalMutex = 0;
108
+
109
+ #ifdef ICE_DBGHELP
110
+ HANDLE process = 0;
111
+ #endif
112
+
113
+ #ifdef ICE_LIBBACKTRACE
114
+ backtrace_state* bstate = 0;
115
+
116
+ void
117
+ ignoreErrorCallback(void*, const char* msg, int errnum)
118
+ {
119
+ // cerr << "Error callback: " << msg << ", errnum = " << errnum << endl;
120
+ }
121
+
122
+ int
123
+ ignoreFrame(void*, uintptr_t pc, const char*, int, const char*)
124
+ {
125
+ assert(pc == 0);
126
+ return 0;
127
+ }
128
+
129
+ #endif
130
+
131
+ class Init
132
+ {
133
+ public:
134
+
135
+ Init()
136
+ {
137
+ globalMutex = new IceUtil::Mutex;
138
+ #ifdef ICE_LIBBACKTRACE
139
+ // Leaked, as libbacktrace does not provide an API to free this state.
140
+ //
141
+ bstate = backtrace_create_state(0, 1, ignoreErrorCallback, 0);
142
+
143
+ // The first call to backtrace_pcinfo does not initialize bstate->fileline_fn
144
+ // in a thread-safe manner, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81098.
145
+ // So we make a "dummy" call to backtrace_pcinfo to initialize it here.
146
+ //
147
+ backtrace_pcinfo(bstate, 0, ignoreFrame, ignoreErrorCallback, 0);
148
+ #endif
149
+ }
150
+
151
+ ~Init()
152
+ {
153
+ delete globalMutex;
154
+ globalMutex = 0;
155
+ #ifdef ICE_DBGHELP
156
+ if(process != 0)
157
+ {
158
+ SymCleanup(process);
159
+ process = 0;
160
+ }
161
+ #endif
162
+ }
163
+ };
164
+
165
+ Init init;
166
+
167
+ #if defined(ICE_LIBBACKTRACE) || defined (ICE_BACKTRACE)
168
+
169
+ struct FrameInfo
170
+ {
171
+ FrameInfo(int i, uintptr_t p) :
172
+ index(i),
173
+ pc(p),
174
+ fallback(0),
175
+ setByErrorCb(false)
176
+ {
177
+ }
178
+
179
+ int index;
180
+ uintptr_t pc;
181
+ const char* fallback;
182
+ bool setByErrorCb;
183
+ string output;
184
+ };
185
+
186
+ void
187
+ decode(const string& line, string& function, string& filename)
188
+ {
189
+ string::size_type openParen = line.find_first_of('(');
190
+ if(openParen != string::npos)
191
+ {
192
+ //
193
+ // Format: "/opt/Ice/lib/libIceUtil.so.33(_ZN7IceUtil9ExceptionC2EPKci+0x51) [0x73b267]"
194
+ //
195
+ string::size_type closeParen = line.find_first_of(')', openParen);
196
+ if(closeParen != string::npos)
197
+ {
198
+ string tmp = line.substr(openParen + 1, closeParen - openParen - 1);
199
+ string::size_type plus = tmp.find_last_of('+');
200
+ if(plus != string::npos)
201
+ {
202
+ function = tmp.substr(0 , plus);
203
+ filename = line.substr(0, openParen);
204
+ }
205
+ }
206
+ }
207
+ else
208
+ {
209
+ //
210
+ // Format: "1 libIce.3.3.1.dylib 0x000933a1 _ZN7IceUtil9ExceptionC2EPKci + 71"
211
+ //
212
+ string::size_type plus = line.find_last_of('+');
213
+ if(plus != string::npos)
214
+ {
215
+ string tmp = line.substr(0, plus - 1);
216
+ string::size_type space = tmp.find_last_of(" \t");
217
+ if(space != string::npos)
218
+ {
219
+ tmp = tmp.substr(space + 1, tmp.size() - space);
220
+
221
+ string::size_type start = line.find_first_not_of(" \t", 3);
222
+ if(start != string::npos)
223
+ {
224
+ string::size_type finish = line.find_first_of(" \t", start);
225
+ if(finish != string::npos)
226
+ {
227
+ function = tmp;
228
+ filename = line.substr(start, finish - start);
229
+ }
230
+ }
231
+ }
232
+ }
233
+ }
234
+ }
235
+
236
+ int
237
+ printFrame(void* data, uintptr_t pc, const char* filename, int lineno, const char* function)
238
+ {
239
+ FrameInfo& frameInfo = *reinterpret_cast<FrameInfo*>(data);
240
+
241
+ ostringstream os;
242
+ os << setw(3) << frameInfo.index << " ";
243
+
244
+ string functionHolder, filenameHolder;
245
+
246
+ if(!function && frameInfo.fallback)
247
+ {
248
+ // Extract function and filename from fallback
249
+ decode(frameInfo.fallback, functionHolder, filenameHolder);
250
+ if(!functionHolder.empty())
251
+ {
252
+ function = functionHolder.c_str();
253
+ }
254
+ if(!filename && !filenameHolder.empty())
255
+ {
256
+ filename = filenameHolder.c_str();
257
+ }
258
+ }
259
+
260
+ int ret = 0;
261
+
262
+ if(function)
263
+ {
264
+ char* demangledFunction = abi::__cxa_demangle(function, 0, 0, 0);
265
+ if(demangledFunction)
266
+ {
267
+ os << demangledFunction;
268
+ free(demangledFunction);
269
+ }
270
+ else
271
+ {
272
+ os << function;
273
+ }
274
+
275
+ if(filename && lineno > 0)
276
+ {
277
+ os << " at " << filename << ":" << lineno;
278
+ }
279
+ else if(filename)
280
+ {
281
+ os << " in " << filename;
282
+ }
283
+ }
284
+ else if(frameInfo.fallback)
285
+ {
286
+ // decode was not able to parse this string
287
+ os << frameInfo.fallback;
288
+ ret = 1;
289
+ }
290
+ else
291
+ {
292
+ os << hex << setw(sizeof(uintptr_t) * 2) << setfill('0') << pc;
293
+ ret = 2;
294
+ }
295
+ os << "\n";
296
+ frameInfo.output = os.str();
297
+ return ret;
298
+ }
299
+ #endif
300
+
301
+ #ifdef ICE_LIBBACKTRACE
302
+
303
+ void
304
+ handlePcInfoError(void* data, const char* msg, int errnum)
305
+ {
306
+ FrameInfo& frameInfo = *reinterpret_cast<FrameInfo*>(data);
307
+ printFrame(&frameInfo, frameInfo.pc, 0, 0, 0);
308
+ frameInfo.setByErrorCb = true;
309
+ }
310
+
311
+ int
312
+ addFrame(void* sf, uintptr_t pc)
313
+ {
314
+ if(pc != UINTPTR_MAX)
315
+ {
316
+ vector<void*>* stackFrames = reinterpret_cast<vector<void*>*>(sf);
317
+ stackFrames->push_back(reinterpret_cast<void*>(pc));
318
+ return 0;
319
+ }
320
+ else
321
+ {
322
+ return 1;
323
+ }
324
+ }
325
+ #endif
326
+
327
+ vector<void*>
328
+ getStackFrames()
329
+ {
330
+ vector<void*> stackFrames;
331
+
332
+ if(!IceUtilInternal::printStackTraces)
333
+ {
334
+ return stackFrames;
335
+ }
336
+
337
+ #if defined(ICE_DBGHELP)
338
+
339
+ stackFrames.resize(61);
340
+ //
341
+ // 1: skip the first frame (the call to getStackFrames)
342
+ // 1 + stackSize < 63 on Windows XP according to the documentation for CaptureStackBackTrace
343
+ //
344
+ USHORT frameCount = CaptureStackBackTrace(1, static_cast<DWORD>(stackFrames.size()), &stackFrames.front(), 0);
345
+
346
+ stackFrames.resize(frameCount);
347
+
348
+ #elif defined(ICE_LIBBACKTRACE)
349
+
350
+ backtrace_simple(bstate, 1, addFrame, ignoreErrorCallback, &stackFrames);
351
+
352
+ #elif defined(ICE_BACKTRACE)
353
+
354
+ stackFrames.resize(100);
355
+ size_t stackDepth = backtrace(&stackFrames.front(), stackFrames.size());
356
+ stackFrames.resize(stackDepth);
357
+ if(!stackFrames.empty())
358
+ {
359
+ stackFrames.erase(stackFrames.begin()); // drop the first frame
360
+ }
361
+ #endif
362
+
363
+ return stackFrames;
364
+ }
365
+
366
+ string
367
+ getStackTrace(const vector<void*>& stackFrames)
368
+ {
369
+ if(stackFrames.empty())
370
+ {
371
+ return "";
372
+ }
373
+
374
+ string stackTrace;
375
+
376
+ #if defined(ICE_DBGHELP)
377
+
378
+ //
379
+ // Note: the Sym functions are not thread-safe
380
+ //
381
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
382
+ if(process == 0)
383
+ {
384
+ process = GetCurrentProcess();
385
+
386
+ SymSetOptions(SYMOPT_LOAD_LINES | SYMOPT_DEFERRED_LOADS | SYMOPT_EXACT_SYMBOLS | SYMOPT_UNDNAME);
387
+ if(SymInitialize(process, 0, TRUE) == 0)
388
+ {
389
+ process = 0;
390
+ return "No stack trace: SymInitialize failed with " + IceUtilInternal::errorToString(GetLastError());
391
+ }
392
+ }
393
+ lock.release();
394
+
395
+ #if defined(_MSC_VER) && (_MSC_VER >= 1600)
396
+ # if defined(DBGHELP_TRANSLATE_TCHAR)
397
+ static_assert(sizeof(TCHAR) == sizeof(wchar_t), "Bad TCHAR - should be wchar_t");
398
+ # else
399
+ static_assert(sizeof(TCHAR) == sizeof(char), "Bad TCHAR - should be char");
400
+ # endif
401
+ #endif
402
+
403
+ char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME * sizeof(TCHAR)];
404
+
405
+ SYMBOL_INFO* symbol = reinterpret_cast<SYMBOL_INFO*>(buffer);
406
+ symbol->SizeOfStruct = sizeof(SYMBOL_INFO);
407
+ symbol->MaxNameLen = MAX_SYM_NAME;
408
+
409
+ IMAGEHLP_LINE64 line = {};
410
+ line.SizeOfStruct = sizeof(IMAGEHLP_LINE64);
411
+ DWORD displacement = 0;
412
+
413
+ lock.acquire();
414
+
415
+ // TODO: call SymRefreshModuleList here? (not available on XP)
416
+
417
+ #ifdef DBGHELP_TRANSLATE_TCHAR
418
+ const IceUtil::StringConverterPtr converter = IceUtil::getProcessStringConverter();
419
+ #endif
420
+ for(size_t i = 0; i < stackFrames.size(); i++)
421
+ {
422
+ ostringstream s;
423
+ s << setw(3) << i << " ";
424
+
425
+ DWORD64 address = reinterpret_cast<DWORD64>(stackFrames[i]);
426
+
427
+ BOOL ok = SymFromAddr(process, address, 0, symbol);
428
+ if(ok)
429
+ {
430
+ #ifdef DBGHELP_TRANSLATE_TCHAR
431
+ s << wstringToString(symbol->Name, converter);
432
+ #else
433
+ s << symbol->Name;
434
+ #endif
435
+ ok = SymGetLineFromAddr64(process, address, &displacement, &line);
436
+ if(ok)
437
+ {
438
+ s << " at "
439
+ #ifdef DBGHELP_TRANSLATE_TCHAR
440
+ << wstringToString(line.FileName, converter)
441
+ #else
442
+ << line.FileName
443
+ #endif
444
+ << ":" << line.LineNumber;
445
+ }
446
+ }
447
+ else
448
+ {
449
+ s << hex << setw(sizeof(DWORD64) * 2) << setfill('0') << address;
450
+ }
451
+ s << "\n";
452
+ stackTrace += s.str();
453
+ }
454
+ lock.release();
455
+
456
+ #elif defined(ICE_LIBBACKTRACE) || defined (ICE_BACKTRACE)
457
+
458
+ vector<void*>::const_iterator p = stackFrames.begin();
459
+ int frameIndex = 0;
460
+ int offset = 0;
461
+ char** backtraceStrings = 0;
462
+
463
+ # if defined(ICE_LIBBACKTRACE) && defined(ICE_BACKTRACE)
464
+ bool backtraceStringsInitialized = false;
465
+ # endif
466
+ # if !defined(ICE_LIBBACKTRACE)
467
+ // Initialize backtraceStrings immediately
468
+ if(p != stackFrames.end())
469
+ {
470
+ backtraceStrings = backtrace_symbols(&*p, stackFrames.size());
471
+ }
472
+ # endif
473
+
474
+ do
475
+ {
476
+ FrameInfo frameInfo(frameIndex, reinterpret_cast<uintptr_t>(*p));
477
+ bool retry = false;
478
+
479
+ if(backtraceStrings)
480
+ {
481
+ frameInfo.fallback = backtraceStrings[frameIndex - offset];
482
+ }
483
+
484
+ # if defined(ICE_LIBBACKTRACE)
485
+ bool ok = backtrace_pcinfo(bstate, frameInfo.pc, printFrame, handlePcInfoError, &frameInfo) == 0;
486
+
487
+ // When error callback is called, pcinfo returns 0
488
+ if(!ok || frameInfo.setByErrorCb)
489
+ {
490
+ # if defined(ICE_BACKTRACE)
491
+ if(!backtraceStringsInitialized)
492
+ {
493
+ offset = frameIndex;
494
+ // Initialize backtraceStrings as fallback
495
+ backtraceStrings = backtrace_symbols(&*p, stackFrames.size() - offset);
496
+ backtraceStringsInitialized = true;
497
+ retry = true;
498
+ }
499
+ # endif
500
+ }
501
+ # else // not using libbacktrace:
502
+ printFrame(&frameInfo, frameInfo.pc, 0, 0, 0);
503
+ # endif
504
+ if(!retry)
505
+ {
506
+ stackTrace += frameInfo.output;
507
+ ++p;
508
+ ++frameIndex;
509
+ }
510
+ } while(p != stackFrames.end());
511
+
512
+ if(backtraceStrings)
513
+ {
514
+ free(backtraceStrings);
515
+ }
516
+
517
+ #endif
518
+ return stackTrace;
519
+ }
520
+ }
521
+
522
+ IceUtil::Exception::Exception() :
523
+ _file(0),
524
+ _line(0),
525
+ _stackFrames(getStackFrames())
526
+ {
527
+ }
528
+
529
+ IceUtil::Exception::Exception(const char* file, int line) :
530
+ _file(file),
531
+ _line(line),
532
+ _stackFrames(getStackFrames())
533
+ {
534
+ }
535
+
536
+ #ifndef ICE_CPP11_COMPILER
537
+ IceUtil::Exception::~Exception() throw()
538
+ {
539
+ }
540
+ #endif
541
+
542
+ void
543
+ IceUtil::Exception::ice_print(ostream& out) const
544
+ {
545
+ if(_file && _line > 0)
546
+ {
547
+ out << _file << ':' << _line << ": ";
548
+ }
549
+ out << ice_id();
550
+ }
551
+
552
+ const char*
553
+ IceUtil::Exception::what() const ICE_NOEXCEPT
554
+ {
555
+ try
556
+ {
557
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
558
+ {
559
+ if(_str.empty())
560
+ {
561
+ stringstream s;
562
+ ice_print(s);
563
+ _str = s.str(); // Lazy initialization.
564
+ }
565
+ }
566
+ return _str.c_str();
567
+ }
568
+ catch(...)
569
+ {
570
+ }
571
+ return "";
572
+ }
573
+
574
+ #ifndef ICE_CPP11_MAPPING
575
+ string
576
+ IceUtil::Exception::ice_name() const
577
+ {
578
+ return ice_id().substr(2);
579
+ }
580
+ #endif
581
+
582
+ const char*
583
+ IceUtil::Exception::ice_file() const
584
+ {
585
+ return _file;
586
+ }
587
+
588
+ int
589
+ IceUtil::Exception::ice_line() const
590
+ {
591
+ return _line;
592
+ }
593
+
594
+ string
595
+ IceUtil::Exception::ice_stackTrace() const
596
+ {
597
+ return getStackTrace(_stackFrames);
598
+ }
599
+
600
+ #ifdef ICE_CPP11_MAPPING
601
+ unique_ptr<IceUtil::Exception>
602
+ IceUtil::Exception::ice_clone() const
603
+ {
604
+ return unique_ptr<Exception>(ice_cloneImpl());
605
+ }
606
+ #endif
607
+
608
+ ostream&
609
+ IceUtil::operator<<(ostream& out, const IceUtil::Exception& ex)
610
+ {
611
+ ex.ice_print(out);
612
+ return out;
613
+ }
614
+
615
+ IceUtil::NullHandleException::NullHandleException(const char* file, int line) :
616
+ ExceptionHelper<NullHandleException>(file, line)
617
+ {
618
+ if(IceUtilInternal::nullHandleAbort)
619
+ {
620
+ abort();
621
+ }
622
+ }
623
+
624
+ string
625
+ IceUtil::NullHandleException::ice_id() const
626
+ {
627
+ return "::IceUtil::NullHandleException";
628
+ }
629
+
630
+ #ifndef ICE_CPP11_MAPPING
631
+ IceUtil::NullHandleException*
632
+ IceUtil::NullHandleException::ice_clone() const
633
+ {
634
+ return new NullHandleException(*this);
635
+ }
636
+ #endif
637
+
638
+ IceUtil::IllegalArgumentException::IllegalArgumentException(const char* file, int line) :
639
+ ExceptionHelper<IllegalArgumentException>(file, line)
640
+ {
641
+ }
642
+
643
+ IceUtil::IllegalArgumentException::IllegalArgumentException(const char* file, int line, const string& r) :
644
+ ExceptionHelper<IllegalArgumentException>(file, line),
645
+ _reason(r)
646
+ {
647
+ }
648
+
649
+ #ifndef ICE_CPP11_COMPILER
650
+ IceUtil::IllegalArgumentException::~IllegalArgumentException() throw()
651
+ {
652
+ }
653
+ #endif
654
+
655
+ void
656
+ IceUtil::IllegalArgumentException::ice_print(ostream& out) const
657
+ {
658
+ Exception::ice_print(out);
659
+ out << ": " << _reason;
660
+ }
661
+
662
+ string
663
+ IceUtil::IllegalArgumentException::ice_id() const
664
+ {
665
+ return "::IceUtil::IllegalArgumentException";
666
+ }
667
+
668
+ #ifndef ICE_CPP11_MAPPING
669
+ IceUtil::IllegalArgumentException*
670
+ IceUtil::IllegalArgumentException::ice_clone() const
671
+ {
672
+ return new IllegalArgumentException(*this);
673
+ }
674
+ #endif
675
+
676
+ string
677
+ IceUtil::IllegalArgumentException::reason() const
678
+ {
679
+ return _reason;
680
+ }
681
+
682
+ //
683
+ // IllegalConversionException
684
+ //
685
+ IceUtil::IllegalConversionException::IllegalConversionException(const char* file, int line):
686
+ ExceptionHelper<IllegalConversionException>(file, line)
687
+ {
688
+ }
689
+
690
+ IceUtil::IllegalConversionException::IllegalConversionException(const char* file, int line,
691
+ const string& reason):
692
+ ExceptionHelper<IllegalConversionException>(file, line),
693
+ _reason(reason)
694
+ {
695
+ }
696
+
697
+ #ifndef ICE_CPP11_COMPILER
698
+ IceUtil::IllegalConversionException::~IllegalConversionException() throw()
699
+ {
700
+ }
701
+ #endif
702
+
703
+ void
704
+ IceUtil::IllegalConversionException::ice_print(ostream& out) const
705
+ {
706
+ Exception::ice_print(out);
707
+ out << ": " << _reason;
708
+
709
+ }
710
+
711
+ string
712
+ IceUtil::IllegalConversionException::ice_id() const
713
+ {
714
+ return "::IceUtil::IllegalConversionException";
715
+ }
716
+
717
+ #ifndef ICE_CPP11_MAPPING
718
+ IceUtil::IllegalConversionException*
719
+ IceUtil::IllegalConversionException::ice_clone() const
720
+ {
721
+ return new IllegalConversionException(*this);
722
+ }
723
+ #endif
724
+
725
+ string
726
+ IceUtil::IllegalConversionException::reason() const
727
+ {
728
+ return _reason;
729
+ }
730
+
731
+ IceUtil::SyscallException::SyscallException(const char* file, int line, int err ):
732
+ ExceptionHelper<SyscallException>(file, line),
733
+ _error(err)
734
+ {
735
+ }
736
+
737
+ #ifndef ICE_CPP11_COMPILER
738
+ IceUtil::SyscallException::~SyscallException() throw()
739
+ {
740
+ }
741
+ #endif
742
+
743
+ void
744
+ IceUtil::SyscallException::ice_print(ostream& os) const
745
+ {
746
+ Exception::ice_print(os);
747
+ if(_error != 0)
748
+ {
749
+ os << ":\nsyscall exception: " << IceUtilInternal::errorToString(_error);
750
+ }
751
+ }
752
+
753
+ string
754
+ IceUtil::SyscallException::ice_id() const
755
+ {
756
+ return "::IceUtil::SyscallException";
757
+ }
758
+
759
+ #ifndef ICE_CPP11_MAPPING
760
+ IceUtil::SyscallException*
761
+ IceUtil::SyscallException::ice_clone() const
762
+ {
763
+ return new SyscallException(*this);
764
+ }
765
+ #endif
766
+
767
+ int
768
+ IceUtil::SyscallException::error() const
769
+ {
770
+ return _error;
771
+ }
772
+
773
+ IceUtil::FileLockException::FileLockException(const char* file, int line, int err, const string& path):
774
+ ExceptionHelper<FileLockException>(file, line),
775
+ _error(err),
776
+ _path(path)
777
+ {
778
+ }
779
+
780
+ #ifndef ICE_CPP11_COMPILER
781
+ IceUtil::FileLockException::~FileLockException() throw()
782
+ {
783
+ }
784
+ #endif
785
+
786
+ void
787
+ IceUtil::FileLockException::ice_print(ostream& os) const
788
+ {
789
+ Exception::ice_print(os);
790
+ os << ":\ncould not lock file: `" << _path << "'";
791
+ if(_error != 0)
792
+ {
793
+ os << "\nsyscall exception: " << IceUtilInternal::errorToString(_error);
794
+ }
795
+ }
796
+
797
+ string
798
+ IceUtil::FileLockException::ice_id() const
799
+ {
800
+ return "::IceUtil::FileLockException";
801
+ }
802
+
803
+ #ifndef ICE_CPP11_MAPPING
804
+ IceUtil::FileLockException*
805
+ IceUtil::FileLockException::ice_clone() const
806
+ {
807
+ return new FileLockException(*this);
808
+ }
809
+ #endif
810
+
811
+ int
812
+ IceUtil::FileLockException::error() const
813
+ {
814
+ return _error;
815
+ }
816
+
817
+ IceUtil::OptionalNotSetException::OptionalNotSetException(const char* file, int line) :
818
+ ExceptionHelper<OptionalNotSetException>(file, line)
819
+ {
820
+ if(IceUtilInternal::nullHandleAbort)
821
+ {
822
+ abort();
823
+ }
824
+ }
825
+
826
+ string
827
+ IceUtil::OptionalNotSetException::ice_id() const
828
+ {
829
+ return "::IceUtil::OptionalNotSetException";
830
+ }
831
+
832
+ #ifndef ICE_CPP11_MAPPING
833
+ IceUtil::OptionalNotSetException*
834
+ IceUtil::OptionalNotSetException::ice_clone() const
835
+ {
836
+ return new OptionalNotSetException(*this);
837
+ }
838
+ #endif