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,20 +1,24 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
7
7
  //
8
8
  // **********************************************************************
9
9
 
10
- #pragma once
10
+ #ifndef ICE_VALUE_F_H
11
+ #define ICE_VALUE_F_H
11
12
 
12
- [["cpp:header-ext:h", "objc:header-dir:objc"]]
13
+ #ifdef ICE_CPP11_MAPPING
14
+ #include <Ice/Config.h>
13
15
 
14
- module Freeze
16
+ namespace Ice
15
17
  {
16
18
 
17
- local interface Connection;
18
-
19
- };
19
+ class Value;
20
+ using ValuePtr = ::std::shared_ptr<Value>;
20
21
 
22
+ }
23
+ #endif
24
+ #endif
@@ -1,41 +1,26 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
7
7
  //
8
8
  // **********************************************************************
9
9
 
10
- #ifndef ICE_SSL_CONFIG_H
11
- #define ICE_SSL_CONFIG_H
10
+ #ifndef ICESSL_CONFIG_H
11
+ #define ICESSL_CONFIG_H
12
12
 
13
13
  #include <Ice/Config.h>
14
14
 
15
15
  //
16
- // Automatically link IceSSL[D].lib with Visual C++
16
+ // Automatically link IceSSL[D|++11|++11D].lib with Visual C++
17
17
  //
18
-
19
- #if !defined(ICE_BUILDING_ICE_SSL) && defined(ICE_SSL_API_EXPORTS)
20
- # define ICE_BUILDING_ICE_SSL
21
- #endif
22
-
23
- #if defined(_MSC_VER)
24
- # if !defined(ICE_BUILDING_ICE_SSL)
25
- # if defined(_DEBUG) && !defined(ICE_OS_WINRT)
26
- # pragma comment(lib, "IceSSLD.lib")
27
- # else
28
- # pragma comment(lib, "IceSSL.lib")
29
- # endif
30
- # endif
18
+ #if !defined(ICE_BUILDING_ICESSL) && defined(ICESSL_API_EXPORTS)
19
+ # define ICE_BUILDING_ICESSL
31
20
  #endif
32
21
 
33
- #if defined(__APPLE__)
34
- # define ICE_USE_SECURE_TRANSPORT 1
35
- #elif defined(_WIN32)
36
- # define ICE_USE_SCHANNEL 1
37
- #else
38
- # define ICE_USE_OPENSSL 1
22
+ #if defined(_MSC_VER) && !defined(ICE_BUILDING_ICESSL)
23
+ # pragma comment(lib, ICE_LIBNAME("IceSSL"))
39
24
  #endif
40
25
 
41
26
  #endif
@@ -1,20 +1,31 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
7
7
  //
8
8
  // **********************************************************************
9
9
 
10
- #ifndef ICE_SSL_ICE_SSL_H
11
- #define ICE_SSL_ICE_SSL_H
10
+ #ifndef ICESSL_ICESSL_H
11
+ #define ICESSL_ICESSL_H
12
12
 
13
13
  #include <IceUtil/PushDisableWarnings.h>
14
- #include <IceUtil/Config.h>
15
- #if !defined(ICE_OS_WINRT) && (!defined(__APPLE__) || TARGET_OS_IPHONE == 0)
16
- # include <IceSSL/Plugin.h>
14
+ #include <Ice/Config.h>
15
+ #include <IceSSL/Plugin.h>
16
+
17
+ #if defined(_WIN32)
18
+ # if defined(ICE_OS_UWP)
19
+ # include <IceSSL/UWP.h>
20
+ # else
21
+ # include <IceSSL/SChannel.h>
22
+ # endif
23
+ #elif defined(__APPLE__)
24
+ # include <IceSSL/SecureTransport.h>
25
+ #else
26
+ # include <IceSSL/OpenSSL.h>
17
27
  #endif
28
+
18
29
  #include <IceSSL/EndpointInfo.h>
19
30
  #include <IceSSL/ConnectionInfo.h>
20
31
  #include <IceUtil/PopDisableWarnings.h>
@@ -0,0 +1,130 @@
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
+ #ifndef ICESSL_OPENSSL_H
11
+ #define ICESSL_OPENSSL_H
12
+
13
+ #include <IceSSL/Plugin.h>
14
+
15
+ #include <openssl/x509v3.h>
16
+ #include <openssl/pem.h>
17
+
18
+ //
19
+ // Automatically link IceSSLOpenSSL[D|++11|++11D].lib with Visual C++
20
+ //
21
+ #if defined(_MSC_VER)
22
+ # if !defined(ICE_BUILDING_ICESSL_OPENSSL) && defined(ICESSL_OPENSSL_API_EXPORTS)
23
+ # define ICE_BUILDING_ICESSL_OPENSSL
24
+ # endif
25
+
26
+ # if !defined(ICE_BUILDING_ICESSL_OPENSSL)
27
+ # pragma comment(lib, ICE_LIBNAME("IceSSLOpenSSL"))
28
+ # endif
29
+ #endif
30
+
31
+ #ifndef ICESSL_OPENSSL_API
32
+ # if defined(ICE_STATIC_LIBS)
33
+ # define ICESSL_OPENSSL_API /**/
34
+ # elif defined(ICESSL_OPENSSL_API_EXPORTS)
35
+ # define ICESSL_OPENSSL_API ICE_DECLSPEC_EXPORT
36
+ # else
37
+ # define ICESSL_OPENSSL_API ICE_DECLSPEC_IMPORT
38
+ # endif
39
+ #endif
40
+
41
+ #if defined(_WIN32) && !defined(ICESSL_OPENSSL_API_EXPORTS)
42
+
43
+ namespace Ice
44
+ {
45
+
46
+ ICE_PLUGIN_REGISTER_DECLSPEC_IMPORT void registerIceSSLOpenSSL(bool = true);
47
+
48
+ }
49
+ #endif
50
+
51
+ namespace IceSSL
52
+ {
53
+
54
+ namespace OpenSSL
55
+ {
56
+
57
+ class Certificate;
58
+ ICE_DEFINE_PTR(CertificatePtr, Certificate);
59
+
60
+ class ICESSL_OPENSSL_API Certificate : public virtual IceSSL::Certificate
61
+ {
62
+ public:
63
+
64
+ //
65
+ // Construct a certificate using a native certificate.
66
+ //
67
+ // The Certificate class assumes ownership of the given native
68
+ // certificate.
69
+ //
70
+ static CertificatePtr create(x509_st*);
71
+
72
+ //
73
+ // Load the certificate from a file. The certificate must use the
74
+ // PEM encoding format. Raises CertificateReadException if the
75
+ // file cannot be read.
76
+ //
77
+ static CertificatePtr load(const std::string&);
78
+
79
+ //
80
+ // Decode a certificate from a string that uses the PEM encoding
81
+ // format. Raises CertificateEncodingException if an error
82
+ // occurs.
83
+ //
84
+ static CertificatePtr decode(const std::string&);
85
+
86
+ //
87
+ // Retrieve the native X509 certificate value wrapped by this
88
+ // object.
89
+ //
90
+ // The returned reference is only valid for the lifetime of this
91
+ // object. you can increment it with X509_dup.
92
+ //
93
+ virtual x509_st* getCert() const = 0;
94
+ };
95
+
96
+ class ICESSL_OPENSSL_API Plugin : public virtual IceSSL::Plugin
97
+ {
98
+ public:
99
+ //
100
+ // returns OpenSSL version number.
101
+ //
102
+ virtual Ice::Long getOpenSSLVersion() const = 0;
103
+ //
104
+ // Establish the OpenSSL context. This must be done before the
105
+ // plug-in is initialized, therefore the application must define
106
+ // the property Ice.InitPlugins=0, set the context, and finally
107
+ // invoke initializePlugins on the PluginManager.
108
+ //
109
+ // When the application supplies its own OpenSSL context, the
110
+ // plug-in ignores configuration properties related to certificates,
111
+ // keys, and passwords.
112
+ //
113
+ // Note that the plugin assumes ownership of the given context.
114
+ //
115
+ virtual void setContext(SSL_CTX*) = 0;
116
+
117
+ //
118
+ // Obtain the SSL context. Use caution when modifying this value.
119
+ // Changes made to this value have no effect on existing connections.
120
+ //
121
+ virtual SSL_CTX* getContext() = 0;
122
+
123
+ };
124
+ ICE_DEFINE_PTR(PluginPtr, Plugin);
125
+
126
+ } // OpenSSL namespace end
127
+
128
+ } // IceSSL namespace end
129
+
130
+ #endif
@@ -1,107 +1,56 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
7
7
  //
8
8
  // **********************************************************************
9
9
 
10
- #ifndef ICE_SSL_PLUGIN_H
11
- #define ICE_SSL_PLUGIN_H
10
+ #ifndef ICESSL_PLUGIN_H
11
+ #define ICESSL_PLUGIN_H
12
12
 
13
- #include <IceUtil/Time.h>
14
13
  #include <Ice/Plugin.h>
15
14
  #include <IceSSL/Config.h>
16
- #include <IceSSL/ConnectionInfo.h>
15
+ #include <IceSSL/ConnectionInfoF.h>
16
+
17
+ #ifdef ICE_CPP11_MAPPING
18
+ # include <chrono>
19
+ #else
20
+ # include <IceUtil/Time.h>
21
+ #endif
17
22
 
18
23
  #include <vector>
19
24
  #include <list>
20
25
 
21
- #if defined(ICE_USE_SECURE_TRANSPORT)
22
- # include <CoreFoundation/CFError.h>
23
- #elif defined(ICE_USE_SCHANNEL)
24
- # include <wincrypt.h>
25
- #endif
26
-
27
- #ifndef ICE_SSL_API
28
- # ifdef ICE_SSL_API_EXPORTS
29
- # define ICE_SSL_API ICE_DECLSPEC_EXPORT
30
- # elif defined(ICE_STATIC_LIBS)
31
- # define ICE_SSL_API /**/
26
+ #ifndef ICESSL_API
27
+ # if defined(ICE_STATIC_LIBS)
28
+ # define ICESSL_API /**/
29
+ # elif defined(ICESSL_API_EXPORTS)
30
+ # define ICESSL_API ICE_DECLSPEC_EXPORT
32
31
  # else
33
- # define ICE_SSL_API ICE_DECLSPEC_IMPORT
32
+ # define ICESSL_API ICE_DECLSPEC_IMPORT
34
33
  # endif
35
34
  #endif
36
35
 
37
- #ifdef ICE_USE_OPENSSL
38
-
39
- //
40
- // Pointer to an opaque SSL session context object. ssl_ctx_st is the
41
- // OpenSSL type that holds configuration settings for all SSL
42
- // connections.
43
- //
44
- typedef struct ssl_ctx_st SSL_CTX;
45
-
46
- //
47
- // Pointer to an opaque certificate object. X509_st is the OpenSSL
48
- // type that represents a certificate.
49
- //
50
- typedef struct x509_st* X509CertificateRef;
51
-
52
- //
53
- // EVP_PKEY is the OpenSSL type that represents a public key.
54
- //
55
- typedef struct evp_pkey_st* KeyRef;
56
-
57
- //
58
- // Type that represents an X509 distinguished name
59
- //
60
- typedef struct X509_name_st X509NAME;
61
-
62
- #elif defined(ICE_USE_SECURE_TRANSPORT)
63
-
64
- //
65
- // Pointer to an opaque certificate object.
66
- //
67
- struct OpaqueSecCertificateRef;
68
- typedef struct OpaqueSecCertificateRef* X509CertificateRef;
69
-
70
- //
71
- // Pointer to an opaque key object.
72
- //
73
- struct OpaqueSecKeyRef;
74
- typedef struct OpaqueSecKeyRef* KeyRef;
75
-
76
- #elif defined(ICE_USE_SCHANNEL)
77
-
78
- //
79
- // Pointer to an opaque certificate object.
80
- //
81
- typedef CERT_SIGNED_CONTENT_INFO* X509CertificateRef;
82
-
83
- //
84
- // Pointer to an opaque key object.
85
- //
86
- typedef CERT_PUBLIC_KEY_INFO* KeyRef;
87
-
88
- #endif
89
-
90
36
  namespace IceSSL
91
37
  {
92
38
 
93
39
  //
94
40
  // This exception is thrown if the certificate cannot be read.
95
41
  //
96
- class ICE_SSL_API CertificateReadException : public IceUtil::Exception
42
+ class ICESSL_API CertificateReadException : public IceUtil::ExceptionHelper<CertificateReadException>
97
43
  {
98
44
  public:
99
45
 
100
46
  CertificateReadException(const char*, int, const std::string&);
47
+ #ifndef ICE_CPP11_COMPILER
101
48
  virtual ~CertificateReadException() throw();
102
- virtual std::string ice_name() const;
49
+ #endif
50
+ virtual std::string ice_id() const;
51
+ #ifndef ICE_CPP11_MAPPING
103
52
  virtual CertificateReadException* ice_clone() const;
104
- virtual void ice_throw() const;
53
+ #endif
105
54
 
106
55
  std::string reason;
107
56
 
@@ -113,18 +62,18 @@ private:
113
62
  //
114
63
  // This exception is thrown if the certificate cannot be encoded.
115
64
  //
116
- class ICE_SSL_API CertificateEncodingException : public IceUtil::Exception
65
+ class ICESSL_API CertificateEncodingException : public IceUtil::ExceptionHelper<CertificateEncodingException>
117
66
  {
118
67
  public:
119
68
 
120
69
  CertificateEncodingException(const char*, int, const std::string&);
121
- #ifdef ICE_USE_SECURE_TRANSPORT
122
- CertificateEncodingException(const char*, int, CFErrorRef);
123
- #endif
70
+ #ifndef ICE_CPP11_COMPILER
124
71
  virtual ~CertificateEncodingException() throw();
125
- virtual std::string ice_name() const;
72
+ #endif
73
+ virtual std::string ice_id() const;
74
+ #ifndef ICE_CPP11_MAPPING
126
75
  virtual CertificateEncodingException* ice_clone() const;
127
- virtual void ice_throw() const;
76
+ #endif
128
77
 
129
78
  std::string reason;
130
79
 
@@ -136,15 +85,18 @@ private:
136
85
  //
137
86
  // This exception is thrown if a distinguished name cannot be parsed.
138
87
  //
139
- class ICE_SSL_API ParseException : public IceUtil::Exception
88
+ class ICESSL_API ParseException : public IceUtil::ExceptionHelper<ParseException>
140
89
  {
141
90
  public:
142
91
 
143
92
  ParseException(const char*, int, const std::string&);
93
+ #ifndef ICE_CPP11_COMPILER
144
94
  virtual ~ParseException() throw();
145
- virtual std::string ice_name() const;
95
+ #endif
96
+ virtual std::string ice_id() const;
97
+ #ifndef ICE_CPP11_MAPPING
146
98
  virtual ParseException* ice_clone() const;
147
- virtual void ice_throw() const;
99
+ #endif
148
100
 
149
101
  std::string reason;
150
102
 
@@ -153,41 +105,6 @@ private:
153
105
  static const char* _name;
154
106
  };
155
107
 
156
- //
157
- // Forward declaration.
158
- //
159
- class Certificate;
160
- typedef IceUtil::Handle<Certificate> CertificatePtr;
161
-
162
- //
163
- // A representation of a PublicKey.
164
- //
165
- class ICE_SSL_API PublicKey : public IceUtil::Shared
166
- {
167
- public:
168
-
169
- ~PublicKey();
170
-
171
- //
172
- // Retrieve the native public key value wrapped by this object.
173
- //
174
- // The returned reference is only valid for the lifetime of this
175
- // object. With SecureTransport you can increment the reference
176
- // count of the returned object with CFRetain.
177
- //
178
- KeyRef key() const;
179
-
180
- private:
181
-
182
- PublicKey(const CertificatePtr&, KeyRef);
183
- friend class Certificate;
184
-
185
- CertificatePtr _cert;
186
- KeyRef _key;
187
-
188
- };
189
- typedef IceUtil::Handle<PublicKey> PublicKeyPtr;
190
-
191
108
  //
192
109
  // This class represents a DistinguishedName, similar to the Java
193
110
  // type X500Principal and the .NET type X500DistinguishedName.
@@ -200,24 +117,17 @@ typedef IceUtil::Handle<PublicKey> PublicKeyPtr;
200
117
  // provided in the constructor (i.e., "ZeroC, Inc." will not turn
201
118
  // into ZeroC\, Inc.).
202
119
  //
203
- class ICE_SSL_API DistinguishedName
120
+ class ICESSL_API DistinguishedName
204
121
  {
205
122
  public:
206
123
 
207
- #ifdef ICE_USE_OPENSSL
208
- //
209
- // Create a DistinguishedName using an OpenSSL value.
210
- //
211
- DistinguishedName(X509NAME*);
212
- #endif
213
-
214
124
  //
215
125
  // Create a DistinguishedName from a string encoded using
216
126
  // the rules in RFC2253.
217
127
  //
218
128
  // Throws ParseException if parsing fails.
219
129
  //
220
- DistinguishedName(const std::string&);
130
+ explicit DistinguishedName(const std::string&);
221
131
 
222
132
  //
223
133
  // Create a DistinguishedName from a list of RDN pairs,
@@ -225,15 +135,14 @@ public:
225
135
  // For example, the RDN "O=ZeroC" is represented by the
226
136
  // pair ("O", "ZeroC").
227
137
  //
228
- DistinguishedName(const std::list<std::pair<std::string, std::string> >&);
138
+ explicit DistinguishedName(const std::list<std::pair<std::string, std::string> >&);
229
139
 
230
140
  //
231
141
  // This is an exact match. The order of the RDN components is
232
142
  // important.
233
143
  //
234
- bool operator==(const DistinguishedName&) const;
235
- bool operator!=(const DistinguishedName&) const;
236
- bool operator<(const DistinguishedName&) const;
144
+ friend ICESSL_API bool operator==(const DistinguishedName&, const DistinguishedName&);
145
+ friend ICESSL_API bool operator<(const DistinguishedName&, const DistinguishedName&);
237
146
 
238
147
  //
239
148
  // Perform a partial match with another DistinguishedName. The function
@@ -241,128 +150,151 @@ public:
241
150
  // DistinguishedName and they have the same values.
242
151
  //
243
152
  bool match(const DistinguishedName&) const;
153
+ bool match(const std::string&) const;
244
154
 
245
155
  //
246
156
  // Encode the DN in RFC2253 format.
247
157
  //
248
158
  operator std::string() const;
249
159
 
250
- private:
160
+ protected:
251
161
 
252
162
  void unescape();
253
163
 
164
+ private:
165
+
254
166
  std::list<std::pair<std::string, std::string> > _rdns;
255
167
  std::list<std::pair<std::string, std::string> > _unescaped;
256
168
  };
257
169
 
170
+ inline bool
171
+ operator>(const DistinguishedName& lhs, const DistinguishedName& rhs)
172
+ {
173
+ return rhs < lhs;
174
+ }
175
+
176
+ inline bool
177
+ operator<=(const DistinguishedName& lhs, const DistinguishedName& rhs)
178
+ {
179
+ return !(lhs > rhs);
180
+ }
181
+
182
+ inline bool
183
+ operator>=(const DistinguishedName& lhs, const DistinguishedName& rhs)
184
+ {
185
+ return !(lhs < rhs);
186
+ }
187
+
188
+ inline bool
189
+ operator!=(const DistinguishedName& lhs, const DistinguishedName& rhs)
190
+ {
191
+ return !(lhs == rhs);
192
+ }
193
+
258
194
  //
259
- // This convenience class is a wrapper around a native certificate.
260
- // The interface is inspired by java.security.cert.X509Certificate.
195
+ // This class represents an X509 Certificate extension.
261
196
  //
262
- class ICE_SSL_API Certificate : public IceUtil::Shared
197
+ class ICESSL_API X509Extension
198
+ #ifndef ICE_CPP11_MAPPING
199
+ : public virtual IceUtil::Shared
200
+ #endif
263
201
  {
264
202
  public:
265
203
 
266
- //
267
- // Construct a certificate using a native certificate.
268
- //
269
- // The Certificate class assumes ownership of the given native
270
- // certificate.
271
- //
272
- Certificate(X509CertificateRef);
273
- ~Certificate();
204
+ virtual bool isCritical() const = 0;
205
+ virtual std::string getOID() const = 0;
206
+ virtual std::vector<Ice::Byte> getData() const = 0;
207
+ };
208
+ ICE_DEFINE_PTR(X509ExtensionPtr, X509Extension);
274
209
 
275
- //
276
- // Load the certificate from a file. The certificate must use the
277
- // PEM encoding format. Raises CertificateReadException if the
278
- // file cannot be read.
279
- //
280
- static CertificatePtr load(const std::string&);
210
+ //
211
+ // This convenience class is a wrapper around a native certificate.
212
+ // The interface is inspired by java.security.cert.X509Certificate.
213
+ //
281
214
 
282
- //
283
- // Decode a certificate from a string that uses the PEM encoding
284
- // format. Raises CertificateEncodingException if an error
285
- // occurs.
286
- //
287
- static CertificatePtr decode(const std::string&);
215
+ class Certificate;
216
+ ICE_DEFINE_PTR(CertificatePtr, Certificate);
217
+
218
+ class ICESSL_API Certificate :
219
+ #ifdef ICE_CPP11_MAPPING
220
+ public std::enable_shared_from_this<Certificate>
221
+ #else
222
+ public virtual IceUtil::Shared
223
+ #endif
224
+ {
225
+ public:
288
226
 
289
227
  //
290
- // Those operators compare the certificates for equality using the
228
+ // Compare the certificates for equality using the
291
229
  // native certificate comparison method.
292
230
  //
293
- bool operator==(const Certificate&) const;
294
- bool operator!=(const Certificate&) const;
231
+ virtual bool operator==(const Certificate&) const = 0;
232
+ virtual bool operator!=(const Certificate&) const = 0;
295
233
 
296
234
  //
297
- // Get the certificate's public key.
235
+ // Authority key identifier
298
236
  //
299
- PublicKeyPtr getPublicKey() const;
237
+ virtual std::vector<Ice::Byte> getAuthorityKeyIdentifier() const = 0;
300
238
 
301
239
  //
302
- // Verify that this certificate was signed by the given certificate
303
- // public key. Returns true if signed, false otherwise.
240
+ // Subject key identifier
304
241
  //
305
- bool verify(const CertificatePtr&) const;
242
+ virtual std::vector<Ice::Byte> getSubjectKeyIdentifier() const = 0;
306
243
 
307
- #ifdef ICE_USE_OPENSSL
308
- //
309
- // Verify that this certificate was signed by the given public
310
- // key. Returns true if signed, false otherwise.
311
244
  //
312
- // This method was deprecated for consistency with some SSL
313
- // engines that require a certificate and not just a public key to
314
- // verify the certificate signature.
245
+ // Verify that this certificate was signed by the given certificate
246
+ // public key. Returns true if signed, false otherwise.
315
247
  //
316
- ICE_DEPRECATED_API("verify(const PublicKeyPtr&) is deprecated, use verify(const CertificatePtr&) instead")
317
- bool verify(const PublicKeyPtr&) const;
318
- #endif
248
+ virtual bool verify(const CertificatePtr&) const = 0;
319
249
 
320
250
  //
321
251
  // Return a string encoding of the certificate in PEM format.
322
252
  // Raises CertificateEncodingException if an error occurs.
323
253
  //
324
- std::string encode() const;
254
+ virtual std::string encode() const = 0;
325
255
 
326
256
  //
327
257
  // Checks that the certificate is currently valid, that is, the current
328
258
  // date falls between the validity period given in the certificate.
329
259
  //
330
- bool checkValidity() const;
260
+ virtual bool checkValidity() const = 0;
331
261
 
332
262
  //
333
263
  // Checks that the certificate is valid at the given time.
334
264
  //
335
- bool checkValidity(const IceUtil::Time&) const;
265
+ #ifdef ICE_CPP11_MAPPING
266
+ virtual bool checkValidity(const std::chrono::system_clock::time_point&) const = 0;
267
+ #else
268
+ virtual bool checkValidity(const IceUtil::Time&) const = 0;
269
+ #endif
336
270
 
337
271
  //
338
272
  // Get the not-after validity time.
339
273
  //
340
- IceUtil::Time getNotAfter() const;
274
+ #ifdef ICE_CPP11_MAPPING
275
+ virtual std::chrono::system_clock::time_point getNotAfter() const = 0;
276
+ #else
277
+ virtual IceUtil::Time getNotAfter() const = 0;
278
+ #endif
341
279
 
342
280
  //
343
281
  // Get the not-before validity time.
344
282
  //
345
- IceUtil::Time getNotBefore() const;
283
+ #ifdef ICE_CPP11_MAPPING
284
+ virtual std::chrono::system_clock::time_point getNotBefore() const = 0;
285
+ #else
286
+ virtual IceUtil::Time getNotBefore() const = 0;
287
+ #endif
346
288
 
347
289
  //
348
290
  // Get the serial number. This is an arbitrarily large number.
349
291
  //
350
- std::string getSerialNumber() const;
351
-
352
- //
353
- // Get the signature algorithm name used to sign the certificate.
354
- //
355
- //std::string getSigAlgName() const;
356
-
357
- //
358
- // Get the signature algorithm OID string from the certificate.
359
- //
360
- //std::string getSigAlgOID() const;
292
+ virtual std::string getSerialNumber() const = 0;
361
293
 
362
294
  //
363
295
  // Get the issuer's distinguished name (DN).
364
296
  //
365
- DistinguishedName getIssuerDN() const;
297
+ virtual DistinguishedName getIssuerDN() const = 0;
366
298
 
367
299
  //
368
300
  // Get the values in the issuer's alternative names extension.
@@ -390,97 +322,73 @@ public:
390
322
  // The remainder of the data will result in an empty string. Use the raw
391
323
  // X509* certificate to obtain these values.
392
324
  //
393
- std::vector<std::pair<int, std::string> > getIssuerAlternativeNames();
325
+ virtual std::vector<std::pair<int, std::string> > getIssuerAlternativeNames() const = 0;
394
326
 
395
327
  //
396
328
  // Get the subject's distinguished name (DN).
397
329
  //
398
- DistinguishedName getSubjectDN() const;
330
+ virtual DistinguishedName getSubjectDN() const = 0;
399
331
 
400
332
  //
401
333
  // See the comment for getIssuerAlternativeNames.
402
334
  //
403
- std::vector<std::pair<int, std::string> > getSubjectAlternativeNames();
335
+ virtual std::vector<std::pair<int, std::string> > getSubjectAlternativeNames() const = 0;
404
336
 
405
337
  //
406
338
  // Retrieve the certificate version number.
407
339
  //
408
- int getVersion() const;
340
+ virtual int getVersion() const = 0;
409
341
 
410
342
  //
411
343
  // Stringify the certificate. This is a human readable version of
412
344
  // the certificate, not a DER or PEM encoding.
413
345
  //
414
- std::string toString() const;
346
+ virtual std::string toString() const = 0;
415
347
 
416
348
  //
417
- // Retrieve the native X509 certificate value wrapped by this
418
- // object.
419
- //
420
- // The returned reference is only valid for the lifetime of this
421
- // object. With SecureTransport you can increment the reference
422
- // count of the returned object with CFRetain. With OpenSSL, you
423
- // can increment it with X509_dup. With SChannel, the returned
424
- // reference is a pointer to a struct.
349
+ // Return a list with the X509v3 extensions contained in the
350
+ // certificate.
425
351
  //
426
- X509CertificateRef getCert() const;
427
-
428
- private:
429
-
430
- X509CertificateRef _cert;
431
-
432
- #ifdef ICE_USE_SCHANNEL
433
- CERT_INFO* _certInfo;
434
- #endif
435
- };
436
-
437
- //
438
- // NativeConnectionInfo is an extension of IceSSL::ConnectionInfo that
439
- // provides access to native certificates.
440
- //
441
- class ICE_SSL_API NativeConnectionInfo : public ConnectionInfo
442
- {
443
- public:
352
+ virtual std::vector<X509ExtensionPtr> getX509Extensions() const = 0;
444
353
 
445
354
  //
446
- // The certificate chain. This may be empty if the peer did not
447
- // supply a certificate. The peer's certificate (if any) is the
448
- // first one in the chain.
355
+ // Return the extension with the given OID or null if the certificate
356
+ // does not contain a extension with the given OID.
449
357
  //
450
- std::vector<CertificatePtr> nativeCerts;
451
- };
452
- typedef IceUtil::Handle<NativeConnectionInfo> NativeConnectionInfoPtr;
358
+ virtual X509ExtensionPtr getX509Extension(const std::string&) const = 0;
453
359
 
454
- //
455
- // WSSNativeConnectionInfo is an extension of IceSSL::WSSConnectionInfo
456
- // that provides access to native certificates.
457
- //
458
- class ICE_SSL_API WSSNativeConnectionInfo : public WSSConnectionInfo
459
- {
460
- public:
360
+ //
361
+ // Load the certificate from a file. The certificate must use the
362
+ // PEM encoding format. Raises CertificateReadException if the
363
+ // file cannot be read.
364
+ //
365
+ static CertificatePtr load(const std::string&);
461
366
 
462
367
  //
463
- // The certificate chain. This may be empty if the peer did not
464
- // supply a certificate. The peer's certificate (if any) is the
465
- // first one in the chain.
368
+ // Decode a certificate from a string that uses the PEM encoding
369
+ // format. Raises CertificateEncodingException if an error
370
+ // occurs.
466
371
  //
467
- std::vector<CertificatePtr> nativeCerts;
372
+ static CertificatePtr decode(const std::string&);
468
373
  };
469
- typedef IceUtil::Handle<WSSNativeConnectionInfo> WSSNativeConnectionInfoPtr;
470
374
 
375
+ #ifndef ICE_CPP11_MAPPING // C++98 mapping
471
376
  //
472
377
  // An application can customize the certificate verification process
473
378
  // by implementing the CertificateVerifier interface.
474
379
  //
475
- class ICE_SSL_API CertificateVerifier : public IceUtil::Shared
380
+
381
+ class ICESSL_API CertificateVerifier : public IceUtil::Shared
476
382
  {
477
383
  public:
478
384
 
385
+ virtual ~CertificateVerifier();
386
+
479
387
  //
480
388
  // Return false if the connection should be rejected, or true to
481
389
  // allow it.
482
390
  //
483
- virtual bool verify(const NativeConnectionInfoPtr&) = 0;
391
+ virtual bool verify(const ConnectionInfoPtr&) = 0;
484
392
  };
485
393
  typedef IceUtil::Handle<CertificateVerifier> CertificateVerifierPtr;
486
394
 
@@ -499,10 +407,12 @@ typedef IceUtil::Handle<CertificateVerifier> CertificateVerifierPtr;
499
407
  // IceSSL.DelayInit=1), configure the PasswordPrompt, then manually
500
408
  // initialize the plug-in.
501
409
  //
502
- class ICE_SSL_API PasswordPrompt : public IceUtil::Shared
410
+ class ICESSL_API PasswordPrompt : public IceUtil::Shared
503
411
  {
504
412
  public:
505
413
 
414
+ virtual ~PasswordPrompt();
415
+
506
416
  //
507
417
  // The getPassword method may be invoked repeatedly, such as when
508
418
  // several encrypted files are opened, or when multiple password
@@ -511,46 +421,49 @@ public:
511
421
  virtual std::string getPassword() = 0;
512
422
  };
513
423
  typedef IceUtil::Handle<PasswordPrompt> PasswordPromptPtr;
424
+ #endif
514
425
 
515
- class ICE_SSL_API Plugin : public Ice::Plugin
426
+ class ICESSL_API Plugin : public Ice::Plugin
516
427
  {
517
428
  public:
518
429
 
430
+ virtual ~Plugin();
431
+
519
432
  //
520
433
  // Establish the certificate verifier object. This should be done
521
434
  // before any connections are established.
522
435
  //
436
+ #ifdef ICE_CPP11_MAPPING
437
+ virtual void setCertificateVerifier(std::function<bool(const std::shared_ptr<ConnectionInfo>&)>) = 0;
438
+ #else
523
439
  virtual void setCertificateVerifier(const CertificateVerifierPtr&) = 0;
440
+ #endif
524
441
 
525
442
  //
526
443
  // Establish the password prompt object. This must be done before
527
444
  // the plug-in is initialized.
528
445
  //
446
+ #ifdef ICE_CPP11_MAPPING
447
+ virtual void setPasswordPrompt(std::function<std::string()>) = 0;
448
+ #else
529
449
  virtual void setPasswordPrompt(const PasswordPromptPtr&) = 0;
450
+ #endif
530
451
 
531
- #ifdef ICE_USE_OPENSSL
532
- //
533
- // Establish the OpenSSL context. This must be done before the
534
- // plug-in is initialized, therefore the application must define
535
- // the property Ice.InitPlugins=0, set the context, and finally
536
- // invoke initializePlugins on the PluginManager.
537
452
  //
538
- // When the application supplies its own OpenSSL context, the
539
- // plug-in ignores configuration properties related to certificates,
540
- // keys, and passwords.
541
- //
542
- // Note that the plugin assumes ownership of the given context.
453
+ // Load the certificate from a file. The certificate must use the
454
+ // PEM encoding format. Raises CertificateReadException if the
455
+ // file cannot be read.
543
456
  //
544
- virtual void setContext(SSL_CTX*) = 0;
457
+ virtual CertificatePtr load(const std::string&) const = 0;
545
458
 
546
459
  //
547
- // Obtain the SSL context. Use caution when modifying this value.
548
- // Changes made to this value have no effect on existing connections.
460
+ // Decode a certificate from a string that uses the PEM encoding
461
+ // format. Raises CertificateEncodingException if an error
462
+ // occurs.
549
463
  //
550
- virtual SSL_CTX* getContext() = 0;
551
- #endif
464
+ virtual CertificatePtr decode(const std::string&) const = 0;
552
465
  };
553
- typedef IceUtil::Handle<Plugin> PluginPtr;
466
+ ICE_DEFINE_PTR(PluginPtr, Plugin);
554
467
 
555
468
  }
556
469