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,93 +1,101 @@
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_ENDPOINT_I_H
11
- #define ICE_SSL_ENDPOINT_I_H
10
+ #ifndef ICESSL_ENDPOINT_I_H
11
+ #define ICESSL_ENDPOINT_I_H
12
12
 
13
+ #include <Ice/EndpointI.h>
13
14
  #include <Ice/IPEndpointI.h>
14
15
  #include <Ice/EndpointFactory.h>
15
- #include <Ice/WSEndpoint.h>
16
16
  #include <IceSSL/InstanceF.h>
17
17
  #include <IceSSL/EndpointInfo.h>
18
+ #include <IceSSL/SSLEngineF.h>
18
19
  #include <Ice/Network.h>
19
20
 
20
21
  namespace IceSSL
21
22
  {
22
23
 
23
- class EndpointI : public IceInternal::IPEndpointI, public IceInternal::WSEndpointDelegate
24
+ class EndpointI : public IceInternal::EndpointI
25
+ #ifdef ICE_CPP11_MAPPING
26
+ , public std::enable_shared_from_this<EndpointI>
27
+ #endif
24
28
  {
25
29
  public:
26
30
 
27
- EndpointI(const InstancePtr&, const std::string&, Ice::Int, const IceInternal::Address&, Ice::Int,
28
- const std::string&, bool);
29
- EndpointI(const InstancePtr&);
30
- EndpointI(const InstancePtr&, IceInternal::BasicStream*);
31
+ EndpointI(const InstancePtr&, const IceInternal::EndpointIPtr&);
32
+
33
+ virtual void streamWriteImpl(Ice::OutputStream*) const;
31
34
 
32
35
  virtual Ice::EndpointInfoPtr getInfo() const;
33
- virtual Ice::EndpointInfoPtr getWSInfo(const std::string&) const;
36
+ virtual Ice::Short type() const;
37
+ virtual const std::string& protocol() const;
34
38
 
35
39
  virtual Ice::Int timeout() const;
36
40
  virtual IceInternal::EndpointIPtr timeout(Ice::Int) const;
41
+ virtual const std::string& connectionId() const;
42
+ virtual IceInternal::EndpointIPtr connectionId(const ::std::string&) const;
37
43
  virtual bool compress() const;
38
44
  virtual IceInternal::EndpointIPtr compress(bool) const;
39
45
  virtual bool datagram() const;
46
+ virtual bool secure() const;
40
47
 
41
48
  virtual IceInternal::TransceiverPtr transceiver() const;
49
+ virtual void connectors_async(Ice::EndpointSelectionType, const IceInternal::EndpointI_connectorsPtr&) const;
42
50
  virtual IceInternal::AcceptorPtr acceptor(const std::string&) const;
51
+ virtual std::vector<IceInternal::EndpointIPtr> expandIfWildcard() const;
52
+ virtual std::vector<IceInternal::EndpointIPtr> expandHost(IceInternal::EndpointIPtr&) const;
53
+ virtual bool equivalent(const IceInternal::EndpointIPtr&) const;
54
+ virtual ::Ice::Int hash() const;
43
55
  virtual std::string options() const;
44
56
 
57
+ EndpointIPtr endpoint(const IceInternal::EndpointIPtr&) const;
58
+
59
+ #ifdef ICE_CPP11_MAPPING
60
+ virtual bool operator==(const Ice::Endpoint&) const;
61
+ virtual bool operator<(const Ice::Endpoint&) const;
62
+ #else
45
63
  virtual bool operator==(const Ice::LocalObject&) const;
46
64
  virtual bool operator<(const Ice::LocalObject&) const;
47
-
48
- virtual EndpointIPtr endpoint(const AcceptorIPtr&) const;
49
-
50
- using IceInternal::IPEndpointI::connectionId;
65
+ #endif
51
66
 
52
67
  protected:
53
68
 
54
- virtual void streamWriteImpl(IceInternal::BasicStream*) const;
55
- virtual void hashInit(Ice::Int&) const;
56
- virtual void fillEndpointInfo(Ice::IPEndpointInfo*) const;
57
69
  virtual bool checkOption(const std::string&, const std::string&, const std::string&);
58
70
 
59
- virtual IceInternal::ConnectorPtr createConnector(const IceInternal::Address&,
60
- const IceInternal::NetworkProxyPtr&) const;
61
- virtual IceInternal::IPEndpointIPtr createEndpoint(const std::string&, int, const std::string&) const;
62
-
63
71
  private:
64
72
 
65
73
  //
66
74
  // All members are const, because endpoints are immutable.
67
75
  //
68
76
  const InstancePtr _instance;
69
- const Ice::Int _timeout;
70
- const bool _compress;
77
+ const IceInternal::EndpointIPtr _delegate;
71
78
  };
72
79
 
73
- class EndpointFactoryI : public IceInternal::EndpointFactory
80
+ class EndpointFactoryI : public IceInternal::EndpointFactoryWithUnderlying
74
81
  {
75
82
  public:
76
83
 
77
- virtual ~EndpointFactoryI();
84
+ EndpointFactoryI(const InstancePtr&, Ice::Short);
78
85
 
79
- virtual Ice::Short type() const;
80
- virtual std::string protocol() const;
81
- virtual IceInternal::EndpointIPtr create(std::vector<std::string>&, bool) const;
82
- virtual IceInternal::EndpointIPtr read(IceInternal::BasicStream*) const;
83
86
  virtual void destroy();
84
87
 
85
- virtual IceInternal::EndpointFactoryPtr clone(const IceInternal::ProtocolInstancePtr&) const;
88
+ virtual IceInternal::EndpointFactoryPtr
89
+ cloneWithUnderlying(const IceInternal::ProtocolInstancePtr&, Ice::Short) const;
86
90
 
87
- private:
91
+ protected:
92
+
93
+ virtual IceInternal::EndpointIPtr
94
+ createWithUnderlying(const IceInternal::EndpointIPtr&, std::vector<std::string>&, bool) const;
95
+ virtual IceInternal::EndpointIPtr
96
+ readWithUnderlying(const IceInternal::EndpointIPtr&, Ice::InputStream*) const;
88
97
 
89
- EndpointFactoryI(const InstancePtr&);
90
- friend class PluginI;
98
+ private:
91
99
 
92
100
  InstancePtr _instance;
93
101
  };
@@ -1,13 +1,13 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
7
7
  //
8
8
  // **********************************************************************
9
9
  //
10
- // Ice version 3.6.5
10
+ // Ice version 3.7.0
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -18,32 +18,61 @@
18
18
  // </auto-generated>
19
19
  //
20
20
 
21
- #ifndef ICE_SSL_API_EXPORTS
22
- # define ICE_SSL_API_EXPORTS
21
+ #ifndef ICESSL_API_EXPORTS
22
+ # define ICESSL_API_EXPORTS
23
23
  #endif
24
24
  #include <IceSSL/EndpointInfo.h>
25
25
  #include <IceUtil/PushDisableWarnings.h>
26
- #include <Ice/BasicStream.h>
27
- #include <IceUtil/Iterator.h>
26
+ #include <Ice/InputStream.h>
27
+ #include <Ice/OutputStream.h>
28
28
  #include <IceUtil/PopDisableWarnings.h>
29
29
 
30
+ #if defined(_MSC_VER)
31
+ # pragma warning(disable:4458) // declaration of ... hides class member
32
+ #elif defined(__clang__)
33
+ # pragma clang diagnostic ignored "-Wshadow"
34
+ #elif defined(__GNUC__)
35
+ # pragma GCC diagnostic ignored "-Wshadow"
36
+ #endif
37
+
30
38
  #ifndef ICE_IGNORE_VERSION
31
- # if ICE_INT_VERSION / 100 != 306
39
+ # if ICE_INT_VERSION / 100 != 307
32
40
  # error Ice version mismatch!
33
41
  # endif
34
42
  # if ICE_INT_VERSION % 100 > 50
35
43
  # error Beta header file detected
36
44
  # endif
37
- # if ICE_INT_VERSION % 100 < 5
45
+ # if ICE_INT_VERSION % 100 < 0
38
46
  # error Ice patch level mismatch!
39
47
  # endif
40
48
  #endif
41
49
 
50
+ #ifdef ICE_CPP11_MAPPING // C++11 mapping
51
+
42
52
  namespace
43
53
  {
44
54
 
45
55
  }
46
56
 
47
- ICE_SSL_API ::Ice::LocalObject* IceSSL::upCast(::IceSSL::EndpointInfo* p) { return p; }
57
+ IceSSL::EndpointInfo::~EndpointInfo()
58
+ {
59
+ }
60
+
61
+ #else // C++98 mapping
48
62
 
49
- ICE_SSL_API ::Ice::LocalObject* IceSSL::upCast(::IceSSL::WSSEndpointInfo* p) { return p; }
63
+ namespace
64
+ {
65
+
66
+ }
67
+
68
+ IceSSL::EndpointInfo::~EndpointInfo()
69
+ {
70
+ }
71
+
72
+ ICESSL_API ::Ice::LocalObject* IceSSL::upCast(::IceSSL::EndpointInfo* p) { return p; }
73
+
74
+ namespace Ice
75
+ {
76
+ }
77
+
78
+ #endif
@@ -1,19 +1,14 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
7
7
  //
8
8
  // **********************************************************************
9
9
 
10
- #include <IceUtil/Config.h>
11
- #ifdef _WIN32
12
- # include <winsock2.h>
13
- #endif
14
10
  #include <IceSSL/Instance.h>
15
11
  #include <IceSSL/SSLEngine.h>
16
- #include <Ice/Properties.h>
17
12
 
18
13
  using namespace std;
19
14
  using namespace Ice;
@@ -1,35 +1,35 @@
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_INSTANCE_H
11
- #define ICE_SSL_INSTANCE_H
10
+ #ifndef ICESSL_INSTANCE_H
11
+ #define ICESSL_INSTANCE_H
12
12
 
13
- #include <IceSSL/InstanceF.h>
14
13
  #include <Ice/ProtocolInstance.h>
14
+ #include <IceSSL/InstanceF.h>
15
15
  #include <IceSSL/SSLEngineF.h>
16
16
 
17
17
  namespace IceSSL
18
18
  {
19
19
 
20
- class Instance : public IceInternal::ProtocolInstance
20
+ class ICESSL_API Instance : public IceInternal::ProtocolInstance
21
21
  {
22
22
  public:
23
23
 
24
24
  Instance(const SSLEnginePtr&, Ice::Short, const std::string&);
25
25
  virtual ~Instance();
26
26
 
27
- SSLEnginePtr
27
+ SSLEnginePtr
28
28
  engine() const
29
29
  {
30
30
  return _engine;
31
31
  }
32
-
32
+
33
33
  bool initialized() const;
34
34
 
35
35
  private:
@@ -1,32 +1,36 @@
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_INSTANCE_F_H
11
- #define ICE_SSL_INSTANCE_F_H
10
+ #ifndef ICESSL_INSTANCE_F_H
11
+ #define ICESSL_INSTANCE_F_H
12
12
 
13
13
  #include <IceUtil/Shared.h>
14
-
15
14
  #include <Ice/Handle.h>
15
+ #include <IceSSL/Plugin.h>
16
16
 
17
17
  namespace IceSSL
18
18
  {
19
19
 
20
20
  class Instance;
21
- IceUtil::Shared* upCast(Instance*);
21
+ ICESSL_API IceUtil::Shared* upCast(Instance*);
22
22
  typedef IceInternal::Handle<Instance> InstancePtr;
23
23
 
24
24
  class EndpointI;
25
- IceUtil::Shared* upCast(EndpointI*);
25
+ #ifdef ICE_CPP11_MAPPING
26
+ typedef ::std::shared_ptr<EndpointI> EndpointIPtr;
27
+ #else
28
+ ICESSL_API IceUtil::Shared* upCast(EndpointI*);
26
29
  typedef IceInternal::Handle<EndpointI> EndpointIPtr;
30
+ #endif
27
31
 
28
32
  class AcceptorI;
29
- IceUtil::Shared* upCast(AcceptorI*);
33
+ ICESSL_API IceUtil::Shared* upCast(AcceptorI*);
30
34
  typedef IceInternal::Handle<AcceptorI> AcceptorIPtr;
31
35
 
32
36
  }
@@ -0,0 +1,588 @@
1
+ // **********************************************************************
2
+ //
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
+ //
5
+ // This copy of Ice is licensed to you under the terms described in the
6
+ // ICE_LICENSE file included in this distribution.
7
+ //
8
+ // **********************************************************************
9
+
10
+ #include <IceSSL/Plugin.h>
11
+ #include <IceSSL/OpenSSL.h>
12
+ #include <IceSSL/CertificateI.h>
13
+ #include <IceSSL/OpenSSLUtil.h>
14
+ #include <IceSSL/RFC2253.h>
15
+
16
+ #include <IceUtil/Mutex.h>
17
+ #include <IceUtil/MutexPtrLock.h>
18
+
19
+ #include <openssl/x509v3.h>
20
+ #include <openssl/pem.h>
21
+
22
+ using namespace IceSSL;
23
+ using namespace std;
24
+
25
+ //
26
+ // Avoid old style cast warnings from OpenSSL macros
27
+ //
28
+ #if defined(__GNUC__)
29
+ # pragma GCC diagnostic ignored "-Wold-style-cast"
30
+ #endif
31
+
32
+ #ifdef __SUNPRO_CC
33
+
34
+ //
35
+ // The call to sk_GENERAL_NAME_pop_free fails to compile if we don't
36
+ // remove the extern "C" vs non extern "C" check with the macro below:
37
+ //
38
+
39
+ extern "C" typedef void (*FreeFunc)(void*);
40
+
41
+ #undef CHECKED_SK_FREE_FUNC
42
+ #define CHECKED_SK_FREE_FUNC(type, p) \
43
+ (FreeFunc) (p)
44
+
45
+ #endif
46
+
47
+ namespace
48
+ {
49
+
50
+ static string
51
+ convertX509NameToString(X509_name_st* name)
52
+ {
53
+ BIO* out = BIO_new(BIO_s_mem());
54
+ X509_NAME_print_ex(out, name, 0, XN_FLAG_RFC2253);
55
+ BUF_MEM* p;
56
+ BIO_get_mem_ptr(out, &p);
57
+ string result = string(p->data, p->length);
58
+ BIO_free(out);
59
+ return result;
60
+ }
61
+
62
+ static vector<pair<int, string> >
63
+ convertGeneralNames(GENERAL_NAMES* gens)
64
+ {
65
+ vector<pair<int, string> > alt;
66
+ if (gens == 0)
67
+ {
68
+ return alt;
69
+ }
70
+ for (int i = 0; i < sk_GENERAL_NAME_num(gens); ++i)
71
+ {
72
+ GENERAL_NAME* gen = sk_GENERAL_NAME_value(gens, i);
73
+ pair<int, string> p;
74
+ p.first = gen->type;
75
+ switch (gen->type)
76
+ {
77
+ case GEN_EMAIL:
78
+ {
79
+ ASN1_IA5STRING* str = gen->d.rfc822Name;
80
+ if (str && str->type == V_ASN1_IA5STRING && str->data && str->length > 0)
81
+ {
82
+ p.second = string(reinterpret_cast<const char*>(str->data), str->length);
83
+ }
84
+ break;
85
+ }
86
+ case GEN_DNS:
87
+ {
88
+ ASN1_IA5STRING* str = gen->d.dNSName;
89
+ if (str && str->type == V_ASN1_IA5STRING && str->data && str->length > 0)
90
+ {
91
+ p.second = string(reinterpret_cast<const char*>(str->data), str->length);
92
+ }
93
+ break;
94
+ }
95
+ case GEN_DIRNAME:
96
+ {
97
+ p.second = convertX509NameToString(gen->d.directoryName);
98
+ break;
99
+ }
100
+ case GEN_URI:
101
+ {
102
+ ASN1_IA5STRING* str = gen->d.uniformResourceIdentifier;
103
+ if (str && str->type == V_ASN1_IA5STRING && str->data && str->length > 0)
104
+ {
105
+ p.second = string(reinterpret_cast<const char*>(str->data), str->length);
106
+ }
107
+ break;
108
+ }
109
+ case GEN_IPADD:
110
+ {
111
+ ASN1_OCTET_STRING* addr = gen->d.iPAddress;
112
+ // TODO: Support IPv6 someday.
113
+ if (addr && addr->type == V_ASN1_OCTET_STRING && addr->data && addr->length == 4)
114
+ {
115
+ ostringstream ostr;
116
+ for (int j = 0; j < 4; ++j)
117
+ {
118
+ if (j > 0)
119
+ {
120
+ ostr << '.';
121
+ }
122
+ ostr << static_cast<int>(addr->data[j]);
123
+ }
124
+ p.second = ostr.str();
125
+ }
126
+ break;
127
+ }
128
+ case GEN_OTHERNAME:
129
+ case GEN_EDIPARTY:
130
+ case GEN_X400:
131
+ case GEN_RID:
132
+ {
133
+ //
134
+ // TODO: These types are not supported. If the user wants
135
+ // them, they have to get at the certificate data. Another
136
+ // alternative is to DER encode the data (as the Java
137
+ // certificate does).
138
+ //
139
+ break;
140
+ }
141
+ }
142
+ alt.push_back(p);
143
+ }
144
+ sk_GENERAL_NAME_pop_free(gens, GENERAL_NAME_free);
145
+ return alt;
146
+ }
147
+
148
+ class DistinguishedNameI : public IceSSL::DistinguishedName
149
+ {
150
+ public:
151
+
152
+ DistinguishedNameI(X509_name_st* name) :
153
+ IceSSL::DistinguishedName(IceSSL::RFC2253::parseStrict(convertX509NameToString(name)))
154
+ {
155
+ unescape();
156
+ }
157
+
158
+ };
159
+
160
+ IceUtil::Mutex* mut = 0;
161
+
162
+ class Init
163
+ {
164
+ public:
165
+
166
+ Init()
167
+ {
168
+ mut = new IceUtil::Mutex;
169
+ }
170
+
171
+ ~Init()
172
+ {
173
+ delete mut;
174
+ mut = 0;
175
+ }
176
+ };
177
+
178
+ Init init;
179
+
180
+ #ifdef ICE_CPP11_MAPPING
181
+ chrono::system_clock::time_point
182
+ #else
183
+ static IceUtil::Time
184
+ #endif
185
+ ASMUtcTimeToTime(const ASN1_UTCTIME* s)
186
+ {
187
+ struct tm tm;
188
+ int offset;
189
+
190
+ memset(&tm, '\0', sizeof tm);
191
+
192
+ # define g2(p) (((p)[0]-'0')*10+(p)[1]-'0')
193
+ tm.tm_year = g2(s->data);
194
+ if(tm.tm_year < 50)
195
+ {
196
+ tm.tm_year += 100;
197
+ }
198
+ tm.tm_mon = g2(s->data + 2) - 1;
199
+ tm.tm_mday = g2(s->data + 4);
200
+ tm.tm_hour = g2(s->data + 6);
201
+ tm.tm_min = g2(s->data + 8);
202
+ tm.tm_sec = g2(s->data + 10);
203
+ if(s->data[12] == 'Z')
204
+ {
205
+ offset = 0;
206
+ }
207
+ else
208
+ {
209
+ offset = g2(s->data + 13) * 60 + g2(s->data + 15);
210
+ if(s->data[12] == '-')
211
+ {
212
+ offset = -offset;
213
+ }
214
+ }
215
+ # undef g2
216
+
217
+ //
218
+ // If timegm was on all systems this code could be
219
+ // return IceUtil::Time::seconds(timegm(&tm) - offset*60);
220
+ //
221
+ // Windows doesn't support the re-entrant _r versions.
222
+ //
223
+ #if defined(_MSC_VER)
224
+ # pragma warning(disable:4996) // localtime is depercated
225
+ #endif
226
+ time_t tzone;
227
+ {
228
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mut);
229
+ time_t now = time(0);
230
+ tzone = mktime(localtime(&now)) - mktime(gmtime(&now));
231
+ }
232
+ #if defined(_MSC_VER)
233
+ # pragma warning(default:4996) // localtime is depercated
234
+ #endif
235
+
236
+ IceUtil::Time time = IceUtil::Time::seconds(mktime(&tm) - offset * 60 + tzone);
237
+
238
+ #ifdef ICE_CPP11_MAPPING
239
+ return chrono::system_clock::time_point(chrono::microseconds(time.toMicroSeconds()));
240
+ #else
241
+ return time;
242
+ #endif
243
+ }
244
+
245
+ class OpenSSLX509ExtensionI : public IceSSL::X509Extension
246
+ {
247
+
248
+ public:
249
+
250
+ OpenSSLX509ExtensionI(struct X509_extension_st*, const string&, x509_st*);
251
+ ~OpenSSLX509ExtensionI();
252
+ virtual bool isCritical() const;
253
+ virtual string getOID() const;
254
+ virtual vector<Ice::Byte> getData() const;
255
+
256
+ private:
257
+
258
+ struct X509_extension_st* _extension;
259
+ string _oid;
260
+ x509_st* _cert;
261
+ };
262
+
263
+ class OpenSSLCertificateI : public IceSSL::OpenSSL::Certificate,
264
+ public CertificateI,
265
+ public IceUtil::Mutex
266
+ {
267
+ public:
268
+
269
+ OpenSSLCertificateI(x509_st*);
270
+ ~OpenSSLCertificateI();
271
+
272
+ virtual bool operator==(const IceSSL::Certificate&) const;
273
+
274
+ virtual vector<Ice::Byte> getAuthorityKeyIdentifier() const;
275
+ virtual vector<Ice::Byte> getSubjectKeyIdentifier() const;
276
+ virtual bool verify(const IceSSL::CertificatePtr&) const;
277
+ virtual string encode() const;
278
+
279
+ # ifdef ICE_CPP11_MAPPING
280
+ virtual chrono::system_clock::time_point getNotAfter() const;
281
+ virtual chrono::system_clock::time_point getNotBefore() const;
282
+ # else
283
+ virtual IceUtil::Time getNotAfter() const;
284
+ virtual IceUtil::Time getNotBefore() const;
285
+ # endif
286
+ virtual string getSerialNumber() const;
287
+ virtual IceSSL::DistinguishedName getIssuerDN() const;
288
+ virtual vector<pair<int, string> > getIssuerAlternativeNames() const;
289
+ virtual IceSSL::DistinguishedName getSubjectDN() const;
290
+ virtual vector<pair<int, string> > getSubjectAlternativeNames() const;
291
+ virtual int getVersion() const;
292
+ virtual x509_st* getCert() const;
293
+
294
+ protected:
295
+
296
+ virtual void loadX509Extensions() const;
297
+
298
+ private:
299
+
300
+ x509_st* _cert;
301
+ };
302
+
303
+ } // end anonymous namespace
304
+
305
+ OpenSSLX509ExtensionI::OpenSSLX509ExtensionI(struct X509_extension_st* extension, const string& oid, x509_st* cert):
306
+ _extension(extension),
307
+ _oid(oid),
308
+ _cert(cert)
309
+ {
310
+ #if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
311
+ CRYPTO_add(&_cert->references, 1, CRYPTO_LOCK_X509);
312
+ #else
313
+ X509_up_ref(_cert);
314
+ #endif
315
+ }
316
+
317
+ OpenSSLX509ExtensionI::~OpenSSLX509ExtensionI()
318
+ {
319
+ X509_free(_cert);
320
+ }
321
+
322
+ bool
323
+ OpenSSLX509ExtensionI::isCritical() const
324
+ {
325
+ return X509_EXTENSION_get_critical(_extension) == 1;
326
+ }
327
+
328
+ string
329
+ OpenSSLX509ExtensionI::getOID() const
330
+ {
331
+ return _oid;
332
+ }
333
+
334
+ vector<Ice::Byte>
335
+ OpenSSLX509ExtensionI::getData() const
336
+ {
337
+ vector<Ice::Byte> data;
338
+ ASN1_OCTET_STRING* buffer = X509_EXTENSION_get_data(_extension);
339
+ assert(buffer);
340
+ data.resize(buffer->length);
341
+ memcpy(&data[0], buffer->data, buffer->length);
342
+ return data;
343
+ }
344
+
345
+ //
346
+ // The caller is responsible for incrementing the reference count.
347
+ //
348
+ OpenSSLCertificateI::OpenSSLCertificateI(x509_st* cert) : _cert(cert)
349
+ {
350
+ if(!_cert)
351
+ {
352
+ #ifdef ICE_CPP11_MAPPING
353
+ throw invalid_argument("Invalid certificate reference");
354
+ #else
355
+ throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "Invalid certificate reference");
356
+ #endif
357
+ }
358
+ }
359
+
360
+ OpenSSLCertificateI::~OpenSSLCertificateI()
361
+ {
362
+ if(_cert)
363
+ {
364
+ X509_free(_cert);
365
+ }
366
+ }
367
+
368
+ bool
369
+ OpenSSLCertificateI::operator==(const IceSSL::Certificate& r) const
370
+ {
371
+ const OpenSSLCertificateI* p = dynamic_cast<const OpenSSLCertificateI*>(&r);
372
+ if(!p)
373
+ {
374
+ return false;
375
+ }
376
+
377
+ return X509_cmp(_cert, p->_cert) == 0;
378
+ }
379
+
380
+ vector<Ice::Byte>
381
+ OpenSSLCertificateI::getAuthorityKeyIdentifier() const
382
+ {
383
+ vector<Ice::Byte> keyid;
384
+ int index = X509_get_ext_by_NID(_cert, NID_authority_key_identifier, -1);
385
+ if(index >= 0)
386
+ {
387
+ X509_EXTENSION* ext = X509_get_ext(_cert, index);
388
+ if(ext)
389
+ {
390
+ AUTHORITY_KEYID* decoded = (AUTHORITY_KEYID*)X509V3_EXT_d2i(ext);
391
+ if(!decoded)
392
+ {
393
+ throw IceSSL::CertificateEncodingException(__FILE__, __LINE__, "the extension could not be decoded");
394
+ }
395
+ keyid.resize(decoded->keyid->length);
396
+ memcpy(&keyid[0], decoded->keyid->data, decoded->keyid->length);
397
+ AUTHORITY_KEYID_free(decoded);
398
+ }
399
+ }
400
+ return keyid;
401
+ }
402
+
403
+ vector<Ice::Byte>
404
+ OpenSSLCertificateI::getSubjectKeyIdentifier() const
405
+ {
406
+ vector<Ice::Byte> keyid;
407
+ int index = X509_get_ext_by_NID(_cert, NID_subject_key_identifier, -1);
408
+ if(index >= 0)
409
+ {
410
+ X509_EXTENSION* ext = X509_get_ext(_cert, index);
411
+ if(ext)
412
+ {
413
+ ASN1_OCTET_STRING* decoded = static_cast<ASN1_OCTET_STRING*>(X509V3_EXT_d2i(ext));
414
+ if(!decoded)
415
+ {
416
+ throw IceSSL::CertificateEncodingException(__FILE__, __LINE__, "the extension could not be decoded");
417
+ }
418
+ keyid.resize(decoded->length);
419
+ memcpy(&keyid[0], decoded->data, decoded->length);
420
+ ASN1_OCTET_STRING_free(decoded);
421
+ }
422
+ }
423
+ return keyid;
424
+ }
425
+
426
+ bool
427
+ OpenSSLCertificateI::verify(const IceSSL::CertificatePtr& cert) const
428
+ {
429
+ OpenSSLCertificateI* c = dynamic_cast<OpenSSLCertificateI*>(cert.get());
430
+ if(c)
431
+ {
432
+ EVP_PKEY* key = X509_get_pubkey(c->_cert);
433
+ bool verified = X509_verify(_cert, key) > 0;
434
+ EVP_PKEY_free(key);
435
+ return verified;
436
+ }
437
+ return false;
438
+ }
439
+
440
+ string
441
+ OpenSSLCertificateI::encode() const
442
+ {
443
+ BIO* out = BIO_new(BIO_s_mem());
444
+ int i = PEM_write_bio_X509(out, _cert);
445
+ if(i <= 0)
446
+ {
447
+ BIO_free(out);
448
+ throw IceSSL::CertificateEncodingException(__FILE__, __LINE__, IceSSL::OpenSSL::getSslErrors(false));
449
+ }
450
+ BUF_MEM* p;
451
+ BIO_get_mem_ptr(out, &p);
452
+ string result = string(p->data, p->length);
453
+ BIO_free(out);
454
+ return result;
455
+ }
456
+
457
+ # ifdef ICE_CPP11_MAPPING
458
+ chrono::system_clock::time_point
459
+ # else
460
+ IceUtil::Time
461
+ # endif
462
+ OpenSSLCertificateI::getNotAfter() const
463
+ {
464
+ return ASMUtcTimeToTime(X509_get_notAfter(_cert));
465
+ }
466
+
467
+ # ifdef ICE_CPP11_MAPPING
468
+ chrono::system_clock::time_point
469
+ # else
470
+ IceUtil::Time
471
+ # endif
472
+ OpenSSLCertificateI::getNotBefore() const
473
+ {
474
+ return ASMUtcTimeToTime(X509_get_notBefore(_cert));
475
+ }
476
+
477
+ string
478
+ OpenSSLCertificateI::getSerialNumber() const
479
+ {
480
+ BIGNUM* bn = ASN1_INTEGER_to_BN(X509_get_serialNumber(_cert), 0);
481
+ char* dec = BN_bn2dec(bn);
482
+ string result = dec;
483
+ OPENSSL_free(dec);
484
+ BN_free(bn);
485
+ return result;
486
+ }
487
+
488
+ IceSSL::DistinguishedName
489
+ OpenSSLCertificateI::getIssuerDN() const
490
+ {
491
+ return IceSSL::DistinguishedName(IceSSL::RFC2253::parseStrict(convertX509NameToString(X509_get_issuer_name(_cert))));
492
+ }
493
+
494
+ vector<pair<int, string> >
495
+ OpenSSLCertificateI::getIssuerAlternativeNames() const
496
+ {
497
+ return convertGeneralNames(reinterpret_cast<GENERAL_NAMES*>(X509_get_ext_d2i(_cert, NID_issuer_alt_name, 0, 0)));
498
+ }
499
+
500
+ IceSSL::DistinguishedName
501
+ OpenSSLCertificateI::getSubjectDN() const
502
+ {
503
+ return IceSSL::DistinguishedName(IceSSL::RFC2253::parseStrict(convertX509NameToString(X509_get_subject_name(_cert))));
504
+ }
505
+
506
+ vector<pair<int, string> >
507
+ OpenSSLCertificateI::getSubjectAlternativeNames() const
508
+ {
509
+ return convertGeneralNames(reinterpret_cast<GENERAL_NAMES*>(X509_get_ext_d2i(_cert, NID_subject_alt_name, 0, 0)));
510
+ }
511
+
512
+ int
513
+ OpenSSLCertificateI::getVersion() const
514
+ {
515
+ return static_cast<int>(X509_get_version(_cert));
516
+ }
517
+
518
+ x509_st*
519
+ OpenSSLCertificateI::getCert() const
520
+ {
521
+ return _cert;
522
+ }
523
+
524
+ void
525
+ OpenSSLCertificateI::loadX509Extensions() const
526
+ {
527
+ IceUtil::Mutex::Lock sync(*this);
528
+ if(_extensions.empty())
529
+ {
530
+ int sz = X509_get_ext_count(_cert);
531
+ for(int i = 0; i < sz; i++)
532
+ {
533
+ X509_EXTENSION* ext = X509_get_ext(_cert, i);
534
+ ASN1_OBJECT* obj = X509_EXTENSION_get_object(ext);
535
+ string oid;
536
+ //
537
+ // According to OBJ_obj2txt doc a buffer of length 80 should be more than enough to
538
+ // handle any OID encountered in practice.
539
+ //
540
+ int len = 80;
541
+ oid.resize(len);
542
+ len = OBJ_obj2txt(&oid[0], len, obj, 1);
543
+ oid.resize(len);
544
+ _extensions.push_back(ICE_DYNAMIC_CAST(IceSSL::X509Extension,
545
+ ICE_MAKE_SHARED(OpenSSLX509ExtensionI, ext, oid, _cert)));
546
+ }
547
+ }
548
+ }
549
+
550
+ IceSSL::OpenSSL::CertificatePtr
551
+ IceSSL::OpenSSL::Certificate::create(x509_st* cert)
552
+ {
553
+ return ICE_MAKE_SHARED(OpenSSLCertificateI, cert);
554
+ }
555
+
556
+ IceSSL::OpenSSL::CertificatePtr
557
+ IceSSL::OpenSSL::Certificate::load(const std::string& file)
558
+ {
559
+ BIO* cert = BIO_new(BIO_s_file());
560
+ if(BIO_read_filename(cert, file.c_str()) <= 0)
561
+ {
562
+ BIO_free(cert);
563
+ throw CertificateReadException(__FILE__, __LINE__, "error opening file");
564
+ }
565
+
566
+ x509_st* x = PEM_read_bio_X509(cert, ICE_NULLPTR, ICE_NULLPTR, ICE_NULLPTR);
567
+ if(x == ICE_NULLPTR)
568
+ {
569
+ BIO_free(cert);
570
+ throw CertificateReadException(__FILE__, __LINE__, "error reading file:\n" + getSslErrors(false));
571
+ }
572
+ BIO_free(cert);
573
+ return ICE_MAKE_SHARED(OpenSSLCertificateI, x);
574
+ }
575
+
576
+ IceSSL::OpenSSL::CertificatePtr
577
+ IceSSL::OpenSSL::Certificate::decode(const std::string& encoding)
578
+ {
579
+ BIO *cert = BIO_new_mem_buf(static_cast<void*>(const_cast<char*>(&encoding[0])), static_cast<int>(encoding.size()));
580
+ x509_st* x = PEM_read_bio_X509(cert, ICE_NULLPTR, ICE_NULLPTR, ICE_NULLPTR);
581
+ if(x == ICE_NULLPTR)
582
+ {
583
+ BIO_free(cert);
584
+ throw CertificateEncodingException(__FILE__, __LINE__, getSslErrors(false));
585
+ }
586
+ BIO_free(cert);
587
+ return ICE_MAKE_SHARED(OpenSSLCertificateI, x);
588
+ }