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,9 +11,7 @@
11
11
  #include <IceUtil/StringConverter.h>
12
12
  #include <cstring>
13
13
 
14
- #ifdef ICE_OS_WINRT
15
- # include <IceUtil/ScopedArray.h>
16
- #endif
14
+ #include <iomanip>
17
15
 
18
16
  using namespace std;
19
17
  using namespace IceUtil;
@@ -21,114 +19,88 @@ using namespace IceUtil;
21
19
  namespace
22
20
  {
23
21
 
24
- string
25
- toOctalString(unsigned int n)
22
+ char
23
+ toHexDigit(Byte b)
24
+ {
25
+ assert(b < 16);
26
+ if(b < 10)
27
+ {
28
+ return '0' + b;
29
+ }
30
+ else
31
+ {
32
+ return 'a' - 10 + b;
33
+ }
34
+ }
35
+
36
+ unsigned int
37
+ addContinuationByte(string::iterator& p, string::iterator end, unsigned int codePoint)
26
38
  {
27
- string s;
28
- s.resize(32);
29
- string::size_type charPos = 32;
30
- const int radix = 1 << 3;
31
- int mask = radix - 1;
32
- do
39
+ if(p == end)
33
40
  {
34
- s[--charPos] = '0' + (n & mask);
35
- n >>= 3;
41
+ throw IllegalArgumentException(__FILE__, __LINE__, "UTF-8 sequence too short");
36
42
  }
37
- while(n != 0);
38
43
 
39
- return string(s, charPos, (32 - charPos));
44
+ Byte b = static_cast<Byte>(*p++);
45
+
46
+ if((b >> 6) != 2)
47
+ {
48
+ throw IllegalArgumentException(__FILE__, __LINE__, "Invalid UTF-8 sequence");
49
+ }
50
+ return (codePoint << 6) + (b & 0x3F);
40
51
  }
41
52
 
42
53
  //
43
- // Write the byte b as an escape sequence if it isn't a printable ASCII
44
- // character and append the escape sequence to s. Additional characters
45
- // that should be escaped can be passed in special. If b is any of these
46
- // characters, b is preceded by a backslash in s.
54
+ // Appends a 2 to 4 bytes UTF-8 sequence as a universal character name
47
55
  //
48
56
  void
49
- encodeChar(string::value_type b, string& s, const string& special)
57
+ appendUniversalName(char c, string::iterator& p, string::iterator end, string& result)
50
58
  {
51
- switch(b)
59
+ unsigned int codePoint;
60
+
61
+ Byte b = static_cast<Byte>(c);
62
+ if((b >> 5) == 0x06)
52
63
  {
53
- case '\\':
54
- {
55
- s.append("\\\\");
56
- break;
57
- }
58
-
59
- case '\'':
60
- {
61
- s.append("\\'");
62
- break;
63
- }
64
-
65
- case '"':
66
- {
67
- s.append("\\\"");
68
- break;
69
- }
70
-
71
- case '\b':
72
- {
73
- s.append("\\b");
74
- break;
75
- }
76
-
77
- case '\f':
78
- {
79
- s.append("\\f");
80
- break;
81
- }
82
-
83
- case '\n':
84
- {
85
- s.append("\\n");
86
- break;
87
- }
88
-
89
- case '\r':
90
- {
91
- s.append("\\r");
92
- break;
93
- }
94
-
95
- case '\t':
64
+ // 2 bytes
65
+ codePoint = (b & 0x1F);
66
+ codePoint = addContinuationByte(p, end, codePoint);
67
+ }
68
+ else if((b >> 4) == 0x0E)
69
+ {
70
+ // 3 bytes
71
+ codePoint = (b & 0x0F);
72
+ codePoint = addContinuationByte(p, end, codePoint);
73
+ codePoint = addContinuationByte(p, end, codePoint);
74
+ }
75
+ else if((b >> 3) == 0x1E)
76
+ {
77
+ // 4 bytes
78
+ codePoint = (b & 0x07);
79
+ codePoint = addContinuationByte(p, end, codePoint);
80
+ codePoint = addContinuationByte(p, end, codePoint);
81
+ codePoint = addContinuationByte(p, end, codePoint);
82
+ }
83
+ else
84
+ {
85
+ ostringstream ostr;
86
+ ostr << "Invalid first byte 0x" << hex << static_cast<unsigned short>(b) << " in UTF-8 sequence" << endl;
87
+ throw IllegalArgumentException(__FILE__, __LINE__, ostr.str());
88
+ }
89
+
90
+ if(codePoint > 0xFFFF)
91
+ {
92
+ result.append("\\U");
93
+ for(int j = 7; j >= 0; j--)
96
94
  {
97
- s.append("\\t");
98
- break;
95
+ result.push_back(toHexDigit(static_cast<Byte>((codePoint >> (j * 4)) & 0x0F)));
99
96
  }
100
-
101
- default:
97
+ }
98
+ else
99
+ {
100
+ result.append("\\u");
101
+ for(int j = 3; j >= 0; j--)
102
102
  {
103
- unsigned char i = static_cast<unsigned char>(b);
104
- if(!(i >= 32 && i <= 126))
105
- {
106
- s.push_back('\\');
107
- string octal = toOctalString(i);
108
- //
109
- // Add leading zeroes so that we avoid problems during
110
- // decoding. For example, consider the escaped string
111
- // \0013 (i.e., a character with value 1 followed by the
112
- // character '3'). If the leading zeroes were omitted, the
113
- // result would be incorrectly interpreted as a single
114
- // character with value 11.
115
- //
116
- for(string::size_type j = octal.size(); j < 3; j++)
117
- {
118
- s.push_back('0');
119
- }
120
- s.append(octal);
121
- }
122
- else if(special.find(b) != string::npos)
123
- {
124
- s.push_back('\\');
125
- s.push_back(b);
126
- }
127
- else
128
- {
129
- s.push_back(b);
130
- }
131
- break;
103
+ result.push_back(toHexDigit(static_cast<Byte>((codePoint >> (j * 4)) & 0x0F)));
132
104
  }
133
105
  }
134
106
  }
@@ -136,27 +108,166 @@ encodeChar(string::value_type b, string& s, const string& special)
136
108
  }
137
109
 
138
110
  //
139
- // Add escape sequences (such as "\n", or "\007") to make a string
140
- // readable in ASCII. Any characters that appear in special are
141
- // prefixed with a backslash in the returned string.
111
+ // Add escape sequences. Any characters that appear in special are prefixed with a backslash in the returned string.
142
112
  //
143
113
  string
144
- IceUtilInternal::escapeString(const string& s, const string& special)
114
+ IceUtilInternal::escapeString(const string& s, const string& special, ToStringMode toStringMode)
145
115
  {
146
116
  for(string::size_type i = 0; i < special.size(); ++i)
147
117
  {
148
118
  if(static_cast<unsigned char>(special[i]) < 32 || static_cast<unsigned char>(special[i]) > 126)
149
119
  {
150
- throw IllegalArgumentException(__FILE__, __LINE__, "special characters must be in ASCII range 32-126");
120
+ throw IllegalArgumentException(__FILE__, __LINE__, "Special characters must be in ASCII range 32-126");
151
121
  }
152
122
  }
153
-
123
+
124
+ //
125
+ // First convert to UTF-8
126
+ //
127
+ string u8s = nativeToUTF8(s, getProcessStringConverter());
128
+
129
+ string::iterator p = u8s.begin();
130
+
154
131
  string result;
155
- for(string::size_type i = 0; i < s.size(); ++i)
132
+
133
+ while(p != u8s.end())
134
+ {
135
+ char c = *p++;
136
+
137
+ switch(c)
138
+ {
139
+ case '\\':
140
+ {
141
+ result.append("\\\\");
142
+ break;
143
+ }
144
+ case '\'':
145
+ {
146
+ result.append("\\'");
147
+ break;
148
+ }
149
+ case '"':
150
+ {
151
+ result.append("\\\"");
152
+ break;
153
+ }
154
+ case '\a':
155
+ {
156
+ if(toStringMode == ICE_ENUM(ToStringMode, Compat))
157
+ {
158
+ // Octal escape for compatibility with 3.6 and earlier
159
+ result.append("\\007");
160
+ }
161
+ else
162
+ {
163
+ result.append("\\a");
164
+ }
165
+ break;
166
+ }
167
+ case '\b':
168
+ {
169
+ result.append("\\b");
170
+ break;
171
+ }
172
+ case '\f':
173
+ {
174
+ result.append("\\f");
175
+ break;
176
+ }
177
+ case '\n':
178
+ {
179
+ result.append("\\n");
180
+ break;
181
+ }
182
+ case '\r':
183
+ {
184
+ result.append("\\r");
185
+ break;
186
+ }
187
+ case '\t':
188
+ {
189
+ result.append("\\t");
190
+ break;
191
+ }
192
+ case '\v':
193
+ {
194
+ if(toStringMode == ICE_ENUM(ToStringMode, Compat))
195
+ {
196
+ // Octal escape for compatibility with 3.6 and earlier
197
+ result.append("\\013");
198
+ }
199
+ else
200
+ {
201
+ result.append("\\v");
202
+ }
203
+ break;
204
+ }
205
+ default:
206
+ {
207
+ if(special.find(c) != string::npos)
208
+ {
209
+ result.push_back('\\');
210
+ result.push_back(c);
211
+ }
212
+ else
213
+ {
214
+ unsigned char i = static_cast<unsigned char>(c);
215
+
216
+ if(i < 32 || i > 126)
217
+ {
218
+ if(toStringMode == ICE_ENUM(ToStringMode, Compat))
219
+ {
220
+ // append octal string
221
+
222
+ // Add leading zeroes so that we avoid problems during
223
+ // decoding. For example, consider the escaped string
224
+ // \0013 (i.e., a character with value 1 followed by the
225
+ // character '3'). If the leading zeroes were omitted, the
226
+ // result would be incorrectly interpreted as a single
227
+ // character with value 11.
228
+ //
229
+ ostringstream os;
230
+ os << '\\' << oct << setfill('0') << setw(3) << static_cast<unsigned int>(i);
231
+ result.append(os.str());
232
+ }
233
+ else if(i < 32 || i == 127)
234
+ {
235
+ // append \u00nn
236
+ result.append("\\u00");
237
+ result.push_back(toHexDigit(i >> 4));
238
+ result.push_back(toHexDigit(i & 0x0F));
239
+ }
240
+ else if(toStringMode == ICE_ENUM(ToStringMode, ASCII))
241
+ {
242
+ // append \unnnn or \Unnnnnnnn after reading more UTF-8 bytes
243
+ appendUniversalName(c, p, u8s.end(), result);
244
+ }
245
+ else
246
+ {
247
+ // keep as is
248
+ result.push_back(c);
249
+ }
250
+ }
251
+ else
252
+ {
253
+ // printable ASCII character
254
+ result.push_back(c);
255
+ }
256
+ }
257
+ break;
258
+ }
259
+ }
260
+ }
261
+
262
+ if(toStringMode == ICE_ENUM(ToStringMode, Unicode))
156
263
  {
157
- encodeChar(s[i], result, special);
264
+ //
265
+ // Convert back to Native
266
+ //
267
+ result = UTF8ToNative(result, getProcessStringConverter());
158
268
  }
159
-
269
+ // else it's a pure ASCII string
270
+
160
271
  return result;
161
272
  }
162
273
 
@@ -167,7 +278,7 @@ char
167
278
  checkChar(const string& s, string::size_type pos)
168
279
  {
169
280
  unsigned char c = static_cast<unsigned char>(s[pos]);
170
- if(!(c >= 32 && c <= 126))
281
+ if(c < 32 || c == 127)
171
282
  {
172
283
  ostringstream ostr;
173
284
  if(pos > 0)
@@ -178,73 +289,179 @@ checkChar(const string& s, string::size_type pos)
178
289
  {
179
290
  ostr << "first character";
180
291
  }
181
- ostr << " is not a printable ASCII character (ordinal " << static_cast<int>(c) << ")";
292
+ ostr << " has invalid ordinal value " << static_cast<int>(c);
182
293
  throw IllegalArgumentException(__FILE__, __LINE__, ostr.str());
183
294
  }
184
295
  return c;
185
296
  }
186
297
 
187
298
  //
188
- // Decode the character or escape sequence starting at start and return it.
299
+ // Append codePoint as a UTF-8 sequence
300
+ //
301
+ void
302
+ appendUTF8(unsigned int codePoint, string& result)
303
+ {
304
+ if(codePoint >= 0xD800 && codePoint <= 0xDFFF)
305
+ {
306
+ throw IllegalArgumentException(__FILE__, __LINE__,
307
+ "A universal character name cannot designate a surrogate");
308
+ }
309
+
310
+ if(codePoint <= 0x7F)
311
+ {
312
+ // ASCII
313
+ result.push_back(static_cast<char>(codePoint));
314
+ }
315
+ else if(codePoint <= 0x7FF)
316
+ {
317
+ // 2 bytes
318
+ result.push_back(static_cast<char>((codePoint >> 6) | 0xC0));
319
+ result.push_back(static_cast<char>((codePoint & 0x3F) | 0x80));
320
+ }
321
+ else if(codePoint <= 0xFFFF)
322
+ {
323
+ // 3 bytes
324
+ result.push_back(static_cast<char>((codePoint >> 12) | 0xE0));
325
+ result.push_back(static_cast<char>(((codePoint >> 6) & 0x3F) | 0x80));
326
+ result.push_back(static_cast<char>((codePoint & 0x3F) | 0x80));
327
+ }
328
+ else if(codePoint <= 0x10FFFF)
329
+ {
330
+ // 4 bytes
331
+ result.push_back(static_cast<char>((codePoint >> 18) | 0xF0));
332
+ result.push_back(static_cast<char>(((codePoint >> 12) & 0x3F) | 0x80));
333
+ result.push_back(static_cast<char>(((codePoint >> 6) & 0x3F) | 0x80));
334
+ result.push_back(static_cast<char>((codePoint & 0x3F) | 0x80));
335
+ }
336
+ else
337
+ {
338
+ throw IllegalArgumentException(__FILE__, __LINE__, "Invalid universal character name");
339
+ }
340
+ }
341
+
342
+ //
343
+ // Decode the character or escape sequence starting at start and appends it to result;
189
344
  // end marks the one-past-the-end position of the substring to be scanned.
190
345
  // nextStart is set to the index of the first character following the decoded
191
346
  // character or escape sequence.
192
347
  //
193
- char
194
- decodeChar(const string& s, string::size_type start, string::size_type end, string::size_type& nextStart)
348
+ bool
349
+ decodeChar(const string& s, string::size_type start, string::size_type end, string::size_type& nextStart,
350
+ const string& special, string& result)
195
351
  {
196
352
  assert(start < end);
197
353
  assert(end <= s.size());
198
354
 
199
- char c;
355
+ bool pureASCII = true;
200
356
 
201
357
  if(s[start] != '\\')
202
358
  {
203
- c = checkChar(s, start++);
359
+ result.push_back(checkChar(s, start++));
360
+ }
361
+ else if(start + 1 == end)
362
+ {
363
+ // Keep trailing backslash
364
+ ++start;
365
+ result.push_back('\\');
204
366
  }
205
367
  else
206
368
  {
207
- if(start + 1 == end)
208
- {
209
- throw IllegalArgumentException(__FILE__, __LINE__, "trailing backslash");
210
- }
211
- switch(s[++start])
369
+ char c = s[++start];
370
+
371
+ switch(c)
212
372
  {
213
- case '\\':
214
- case '\'':
215
- case '"':
373
+ case '\\':
374
+ case '\'':
375
+ case '"':
376
+ case '?':
216
377
  {
217
- c = s[start++];
378
+ ++start;
379
+ result.push_back(c);
218
380
  break;
219
381
  }
220
- case 'b':
382
+ case 'a':
221
383
  {
222
384
  ++start;
223
- c = '\b';
385
+ result.push_back('\a');
224
386
  break;
225
387
  }
226
- case 'f':
388
+ case 'b':
227
389
  {
228
390
  ++start;
229
- c = '\f';
391
+ result.push_back('\b');
230
392
  break;
231
393
  }
232
- case 'n':
394
+ case 'f':
233
395
  {
234
396
  ++start;
235
- c = '\n';
397
+ result.push_back('\f');
236
398
  break;
237
399
  }
238
- case 'r':
400
+ case 'n':
239
401
  {
240
402
  ++start;
241
- c = '\r';
403
+ result.push_back('\n');
242
404
  break;
243
405
  }
244
- case 't':
406
+ case 'r':
245
407
  {
246
408
  ++start;
247
- c = '\t';
409
+ result.push_back('\r');
410
+ break;
411
+ }
412
+ case 't':
413
+ {
414
+ ++start;
415
+ result.push_back('\t');
416
+ break;
417
+ }
418
+ case 'v':
419
+ {
420
+ ++start;
421
+ result.push_back('\v');
422
+ break;
423
+ }
424
+ case 'u':
425
+ case 'U':
426
+ {
427
+ unsigned int codePoint = 0;
428
+ bool inBMP = (c == 'u');
429
+ int size = inBMP ? 4 : 8;
430
+ ++start;
431
+ while(size > 0 && start < end)
432
+ {
433
+ c = s[start++];
434
+ int charVal = 0;
435
+ if(c >= '0' && c <= '9')
436
+ {
437
+ charVal = c - '0';
438
+ }
439
+ else if(c >= 'a' && c <= 'f')
440
+ {
441
+ charVal = 10 + (c - 'a');
442
+ }
443
+ else if(c >= 'A' && c <= 'F')
444
+ {
445
+ charVal = 10 + (c - 'A');
446
+ }
447
+ else
448
+ {
449
+ break; // while
450
+ }
451
+ codePoint = codePoint * 16 + static_cast<unsigned int>(charVal);
452
+ --size;
453
+ }
454
+ if(size > 0)
455
+ {
456
+ throw IllegalArgumentException(__FILE__, __LINE__,
457
+ "Invalid universal character name: too few hex digits");
458
+ }
459
+
460
+ appendUTF8(codePoint, result);
461
+ if(codePoint > 127)
462
+ {
463
+ pureASCII = false;
464
+ }
248
465
  break;
249
466
  }
250
467
  case '0':
@@ -273,31 +490,71 @@ decodeChar(const string& s, string::size_type start, string::size_type end, stri
273
490
  ostr << "octal value \\" << oct << val << dec << " (" << val << ") is out of range";
274
491
  throw IllegalArgumentException(__FILE__, __LINE__, ostr.str());
275
492
  }
276
- c = static_cast<char>(val);
493
+ result.push_back(static_cast<char>(val));
494
+ if(val > 127)
495
+ {
496
+ pureASCII = false;
497
+ }
498
+ break;
499
+ }
500
+ case 'x':
501
+ {
502
+ int val = 0;
503
+ int size = 2;
504
+ ++start;
505
+ while(size > 0 && start < end)
506
+ {
507
+ c = s[start++];
508
+ int charVal = 0;
509
+ if(c >= '0' && c <= '9')
510
+ {
511
+ charVal = c - '0';
512
+ }
513
+ else if(c >= 'a' && c <= 'f')
514
+ {
515
+ charVal = 10 + (c - 'a');
516
+ }
517
+ else if(c >= 'A' && c <= 'F')
518
+ {
519
+ charVal = 10 + (c - 'A');
520
+ }
521
+ else
522
+ {
523
+ --start; // move back
524
+ break; // while
525
+ }
526
+ val = val * 16 + charVal;
527
+ --size;
528
+ }
529
+ if(size == 2)
530
+ {
531
+ throw IllegalArgumentException(__FILE__, __LINE__,
532
+ "Invalid \\x escape sequence: no hex digit");
533
+ }
534
+ result.push_back(static_cast<char>(val));
535
+ if(val > 127)
536
+ {
537
+ pureASCII = false;
538
+ }
277
539
  break;
278
540
  }
279
541
  default:
280
542
  {
281
- c = checkChar(s, start++);
543
+ if(static_cast<unsigned char>(c) > 127)
544
+ {
545
+ pureASCII = false;
546
+ }
547
+ if(special.empty() || special.find(c) == string::npos)
548
+ {
549
+ result.push_back('\\'); // not in special, so we keep the backslash
550
+ }
551
+ result.push_back(checkChar(s, start++));
282
552
  break;
283
553
  }
284
554
  }
285
555
  }
286
556
  nextStart = start;
287
- return c;
288
- }
289
-
290
- //
291
- // Remove escape sequences from s and append the result to sb.
292
- // Return true if successful, false otherwise.
293
- //
294
- void
295
- decodeString(const string& s, string::size_type start, string::size_type end, string& sb)
296
- {
297
- while(start < end)
298
- {
299
- sb.push_back(decodeChar(s, start, end, start));
300
- }
557
+ return pureASCII;
301
558
  }
302
559
 
303
560
  }
@@ -306,15 +563,73 @@ decodeString(const string& s, string::size_type start, string::size_type end, st
306
563
  // Remove escape sequences added by escapeString.
307
564
  //
308
565
  string
309
- IceUtilInternal::unescapeString(const string& s, string::size_type start, string::size_type end)
566
+ IceUtilInternal::unescapeString(const string& s, string::size_type start, string::size_type end, const string& special)
310
567
  {
311
568
  assert(start <= end && end <= s.size());
312
569
 
313
- string result;
314
- result.reserve(end - start);
315
- result.clear();
316
- decodeString(s, start, end, result);
317
- return result;
570
+ for(string::size_type i = 0; i < special.size(); ++i)
571
+ {
572
+ if(static_cast<unsigned char>(special[i]) < 32 || static_cast<unsigned char>(special[i]) > 126)
573
+ {
574
+ throw IllegalArgumentException(__FILE__, __LINE__, "Special characters must be in ASCII range 32-126");
575
+ }
576
+ }
577
+
578
+ // Optimization for strings without escapes
579
+ string::size_type p = s.find('\\', start);
580
+ if(p == string::npos || p >= end)
581
+ {
582
+ p = start;
583
+ while(p < end)
584
+ {
585
+ checkChar(s, p++);
586
+ }
587
+ return s.substr(start, end);
588
+ }
589
+ else
590
+ {
591
+ StringConverterPtr stringConverter = getProcessStringConverter();
592
+
593
+ const string* inputStringPtr = &s;
594
+ string u8s;
595
+
596
+ if(stringConverter)
597
+ {
598
+ bool inputIsPureASCII = true;
599
+ string::size_type i = start;
600
+ while(i < end && inputIsPureASCII)
601
+ {
602
+ inputIsPureASCII = static_cast<unsigned char>(s[i++]) <= 127;
603
+ }
604
+
605
+ if(!inputIsPureASCII)
606
+ {
607
+ u8s = nativeToUTF8(s.substr(start, end), stringConverter);
608
+ inputStringPtr = &u8s;
609
+ start = 0;
610
+ end = u8s.size();
611
+ }
612
+ }
613
+
614
+ bool resultIsPureASCII = true;
615
+ string result;
616
+ result.reserve(end - start);
617
+ while(start < end)
618
+ {
619
+ if(decodeChar(*inputStringPtr, start, end, start, special, result))
620
+ {
621
+ resultIsPureASCII = false;
622
+ }
623
+ }
624
+
625
+ if(stringConverter && !resultIsPureASCII)
626
+ {
627
+ // Need to convert from UTF-8 to Native
628
+ result = UTF8ToNative(result, stringConverter);
629
+ }
630
+
631
+ return result;
632
+ }
318
633
  }
319
634
 
320
635
  bool
@@ -332,7 +647,7 @@ IceUtilInternal::splitString(const string& str, const string& delim, vector<stri
332
647
  quoteChar = str[pos++];
333
648
  continue; // Skip the quote
334
649
  }
335
- else if(quoteChar == '\0' && str[pos] == '\\' && pos + 1 < length &&
650
+ else if(quoteChar == '\0' && str[pos] == '\\' && pos + 1 < length &&
336
651
  (str[pos + 1] == '\'' || str[pos + 1] == '"'))
337
652
  {
338
653
  ++pos;
@@ -360,7 +675,7 @@ IceUtilInternal::splitString(const string& str, const string& delim, vector<stri
360
675
  continue;
361
676
  }
362
677
  }
363
-
678
+
364
679
  if(pos < length)
365
680
  {
366
681
  elt += str[pos++];
@@ -441,7 +756,7 @@ IceUtilInternal::checkQuote(const string& s, string::size_type start)
441
756
  //
442
757
  // Match `s' against the pattern `pat'. A * in the pattern acts
443
758
  // as a wildcard: it matches any non-empty sequence of characters.
444
- // We match by hand here because it's portable across platforms
759
+ // We match by hand here because it's portable across platforms
445
760
  // (whereas regex() isn't). Only one * per pattern is supported.
446
761
  //
447
762
  bool
@@ -500,67 +815,63 @@ IceUtilInternal::errorToString(int error, LPCVOID source)
500
815
  {
501
816
  if(error < WSABASEERR)
502
817
  {
503
- #ifdef ICE_OS_WINRT
504
-
505
- int size = 256;
506
- IceUtil::ScopedArray<wchar_t> lpMsgBuf(new wchar_t[size]);
818
+ #ifdef ICE_OS_UWP
507
819
 
820
+ wstring lpMsgBuf(256, wchar_t());
508
821
  DWORD stored = 0;
509
-
822
+
510
823
  while(stored == 0)
511
824
  {
512
825
  stored = FormatMessageW(
513
826
  FORMAT_MESSAGE_FROM_SYSTEM |
514
827
  FORMAT_MESSAGE_IGNORE_INSERTS |
515
- (source != NULL ? FORMAT_MESSAGE_FROM_HMODULE : 0),
828
+ (source != ICE_NULLPTR ? FORMAT_MESSAGE_FROM_HMODULE : 0),
516
829
  source,
517
830
  error,
518
831
  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
519
- lpMsgBuf.get(),
520
- size,
521
- NULL);
832
+ const_cast<wchar_t*>(lpMsgBuf.data()),
833
+ static_cast<int>(lpMsgBuf.size()),
834
+ ICE_NULLPTR);
522
835
 
523
836
  if(stored == 0)
524
837
  {
525
838
  DWORD err = GetLastError();
526
839
  if(err == ERROR_INSUFFICIENT_BUFFER)
527
840
  {
528
- if(size == 65536)
841
+ if(lpMsgBuf.size() >= 65536)
529
842
  {
530
843
  break; // already at the max size
531
844
  }
532
845
  else
533
846
  {
534
- size *= 4;
535
- size = max(size, 65536);
536
- lpMsgBuf.reset(new wchar_t[size]);
847
+ lpMsgBuf.resize(min<size_t>(lpMsgBuf.size() * 4, 65536));
537
848
  }
538
849
  }
539
850
  else
540
851
  {
541
852
  break;
542
- }
853
+ }
543
854
  }
544
855
  }
545
856
 
546
- LPWSTR msg = lpMsgBuf.get();
857
+ LPWSTR msg = const_cast<wchar_t*>(lpMsgBuf.data());
547
858
 
548
859
  #else
549
860
  LPWSTR msg = 0;
550
-
861
+
551
862
  DWORD stored = FormatMessageW(
552
863
  FORMAT_MESSAGE_ALLOCATE_BUFFER |
553
864
  FORMAT_MESSAGE_FROM_SYSTEM |
554
865
  FORMAT_MESSAGE_IGNORE_INSERTS |
555
- (source != NULL ? FORMAT_MESSAGE_FROM_HMODULE : 0),
866
+ (source != ICE_NULLPTR ? FORMAT_MESSAGE_FROM_HMODULE : 0),
556
867
  source,
557
868
  error,
558
869
  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
559
870
  reinterpret_cast<LPWSTR>(&msg),
560
871
  0,
561
- NULL);
872
+ ICE_NULLPTR);
562
873
  #endif
563
-
874
+
564
875
  if(stored > 0)
565
876
  {
566
877
  assert(msg && wcslen(msg) > 0);
@@ -569,7 +880,7 @@ IceUtilInternal::errorToString(int error, LPCVOID source)
569
880
  {
570
881
  result = result.substr(0, result.length() - 2);
571
882
  }
572
- #ifndef ICE_OS_WINRT
883
+ #ifndef ICE_OS_UWP
573
884
  if(msg)
574
885
  {
575
886
  LocalFree(msg);
@@ -579,170 +890,164 @@ IceUtilInternal::errorToString(int error, LPCVOID source)
579
890
  }
580
891
  else
581
892
  {
582
- #ifndef ICE_OS_WINRT
583
- if(msg)
584
- {
585
- LocalFree(msg);
586
- }
587
- #endif
588
893
  ostringstream os;
589
894
  os << "unknown error: " << error;
590
895
  return os.str();
591
896
  }
592
897
  }
593
-
898
+
594
899
  switch(error)
595
900
  {
596
901
  case WSAEINTR:
597
902
  return "WSAEINTR";
598
-
903
+
599
904
  case WSAEBADF:
600
905
  return "WSAEBADF";
601
-
906
+
602
907
  case WSAEACCES:
603
908
  return "WSAEACCES";
604
-
909
+
605
910
  case WSAEFAULT:
606
911
  return "WSAEFAULT";
607
-
912
+
608
913
  case WSAEINVAL:
609
914
  return "WSAEINVAL";
610
-
915
+
611
916
  case WSAEMFILE:
612
917
  return "WSAEMFILE";
613
-
918
+
614
919
  case WSAEWOULDBLOCK:
615
920
  return "WSAEWOULDBLOCK";
616
-
921
+
617
922
  case WSAEINPROGRESS:
618
923
  return "WSAEINPROGRESS";
619
-
924
+
620
925
  case WSAEALREADY:
621
926
  return "WSAEALREADY";
622
-
927
+
623
928
  case WSAENOTSOCK:
624
929
  return "WSAENOTSOCK";
625
-
930
+
626
931
  case WSAEDESTADDRREQ:
627
932
  return "WSAEDESTADDRREQ";
628
-
933
+
629
934
  case WSAEMSGSIZE:
630
935
  return "WSAEMSGSIZE";
631
-
936
+
632
937
  case WSAEPROTOTYPE:
633
938
  return "WSAEPROTOTYPE";
634
-
939
+
635
940
  case WSAENOPROTOOPT:
636
941
  return "WSAENOPROTOOPT";
637
-
942
+
638
943
  case WSAEPROTONOSUPPORT:
639
944
  return "WSAEPROTONOSUPPORT";
640
-
945
+
641
946
  case WSAESOCKTNOSUPPORT:
642
947
  return "WSAESOCKTNOSUPPORT";
643
-
948
+
644
949
  case WSAEOPNOTSUPP:
645
950
  return "WSAEOPNOTSUPP";
646
-
951
+
647
952
  case WSAEPFNOSUPPORT:
648
953
  return "WSAEPFNOSUPPORT";
649
-
954
+
650
955
  case WSAEAFNOSUPPORT:
651
956
  return "WSAEAFNOSUPPORT";
652
-
957
+
653
958
  case WSAEADDRINUSE:
654
959
  return "WSAEADDRINUSE";
655
-
960
+
656
961
  case WSAEADDRNOTAVAIL:
657
962
  return "WSAEADDRNOTAVAIL";
658
-
963
+
659
964
  case WSAENETDOWN:
660
965
  return "WSAENETDOWN";
661
-
966
+
662
967
  case WSAENETUNREACH:
663
968
  return "WSAENETUNREACH";
664
-
969
+
665
970
  case WSAENETRESET:
666
971
  return "WSAENETRESET";
667
-
972
+
668
973
  case WSAECONNABORTED:
669
974
  return "WSAECONNABORTED";
670
-
975
+
671
976
  case WSAECONNRESET:
672
977
  return "WSAECONNRESET";
673
-
978
+
674
979
  case WSAENOBUFS:
675
980
  return "WSAENOBUFS";
676
-
981
+
677
982
  case WSAEISCONN:
678
983
  return "WSAEISCONN";
679
-
984
+
680
985
  case WSAENOTCONN:
681
986
  return "WSAENOTCONN";
682
-
987
+
683
988
  case WSAESHUTDOWN:
684
989
  return "WSAESHUTDOWN";
685
-
990
+
686
991
  case WSAETOOMANYREFS:
687
992
  return "WSAETOOMANYREFS";
688
-
993
+
689
994
  case WSAETIMEDOUT:
690
995
  return "WSAETIMEDOUT";
691
-
996
+
692
997
  case WSAECONNREFUSED:
693
998
  return "WSAECONNREFUSED";
694
-
999
+
695
1000
  case WSAELOOP:
696
1001
  return "WSAELOOP";
697
-
1002
+
698
1003
  case WSAENAMETOOLONG:
699
1004
  return "WSAENAMETOOLONG";
700
-
1005
+
701
1006
  case WSAEHOSTDOWN:
702
1007
  return "WSAEHOSTDOWN";
703
-
1008
+
704
1009
  case WSAEHOSTUNREACH:
705
1010
  return "WSAEHOSTUNREACH";
706
-
1011
+
707
1012
  case WSAENOTEMPTY:
708
1013
  return "WSAENOTEMPTY";
709
-
1014
+
710
1015
  case WSAEPROCLIM:
711
1016
  return "WSAEPROCLIM";
712
-
1017
+
713
1018
  case WSAEUSERS:
714
1019
  return "WSAEUSERS";
715
-
1020
+
716
1021
  case WSAEDQUOT:
717
1022
  return "WSAEDQUOT";
718
-
1023
+
719
1024
  case WSAESTALE:
720
1025
  return "WSAESTALE";
721
-
1026
+
722
1027
  case WSAEREMOTE:
723
1028
  return "WSAEREMOTE";
724
-
1029
+
725
1030
  case WSAEDISCON:
726
1031
  return "WSAEDISCON";
727
-
1032
+
728
1033
  case WSASYSNOTREADY:
729
1034
  return "WSASYSNOTREADY";
730
-
1035
+
731
1036
  case WSAVERNOTSUPPORTED:
732
1037
  return "WSAVERNOTSUPPORTED";
733
-
1038
+
734
1039
  case WSANOTINITIALISED:
735
1040
  return "WSANOTINITIALISED";
736
-
1041
+
737
1042
  case WSAHOST_NOT_FOUND:
738
1043
  return "WSAHOST_NOT_FOUND";
739
-
1044
+
740
1045
  case WSATRY_AGAIN:
741
1046
  return "WSATRY_AGAIN";
742
-
1047
+
743
1048
  case WSANO_RECOVERY:
744
1049
  return "WSANO_RECOVERY";
745
-
1050
+
746
1051
  case WSANO_DATA:
747
1052
  return "WSANO_DATA";
748
1053