zeroc-ice 3.6.5 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (752) hide show
  1. checksums.yaml +4 -4
  2. data/BZIP2_LICENSE +42 -0
  3. data/ICE_LICENSE +17 -17
  4. data/LICENSE +12 -12
  5. data/bin/slice2rb +1 -1
  6. data/ext/Communicator.cpp +150 -53
  7. data/ext/Communicator.h +1 -1
  8. data/ext/Config.h +2 -12
  9. data/ext/Connection.cpp +89 -68
  10. data/ext/Connection.h +1 -1
  11. data/ext/Endpoint.cpp +16 -45
  12. data/ext/Endpoint.h +1 -1
  13. data/ext/ImplicitContext.cpp +1 -5
  14. data/ext/ImplicitContext.h +1 -1
  15. data/ext/Init.cpp +4 -1
  16. data/ext/Logger.cpp +1 -1
  17. data/ext/Logger.h +1 -1
  18. data/ext/Operation.cpp +33 -44
  19. data/ext/Operation.h +1 -1
  20. data/ext/Properties.cpp +1 -1
  21. data/ext/Properties.h +1 -1
  22. data/ext/Proxy.cpp +22 -57
  23. data/ext/Proxy.h +1 -1
  24. data/ext/Slice.cpp +5 -5
  25. data/ext/Slice.h +1 -1
  26. data/ext/Types.cpp +244 -171
  27. data/ext/Types.h +118 -66
  28. data/ext/Util.cpp +13 -9
  29. data/ext/Util.h +10 -10
  30. data/ext/ValueFactoryManager.cpp +445 -0
  31. data/ext/ValueFactoryManager.h +100 -0
  32. data/ext/extconf.rb +47 -45
  33. data/ext/ice/bzip2/blocksort.c +1094 -0
  34. data/ext/ice/bzip2/bzlib.c +1572 -0
  35. data/ext/ice/bzip2/bzlib.h +282 -0
  36. data/ext/ice/bzip2/bzlib_private.h +509 -0
  37. data/ext/ice/bzip2/compress.c +672 -0
  38. data/ext/ice/bzip2/crctable.c +104 -0
  39. data/ext/ice/bzip2/decompress.c +646 -0
  40. data/ext/ice/bzip2/huffman.c +205 -0
  41. data/ext/ice/bzip2/randtable.c +84 -0
  42. data/ext/ice/cpp/include/Ice/Application.h +77 -60
  43. data/ext/ice/cpp/include/Ice/AsyncResult.h +34 -318
  44. data/ext/ice/cpp/include/Ice/AsyncResultF.h +4 -2
  45. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +5 -10
  46. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
  47. data/ext/ice/cpp/include/Ice/Buffer.h +10 -10
  48. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +14 -12
  49. data/ext/ice/cpp/include/Ice/Comparable.h +130 -0
  50. data/ext/ice/cpp/include/Ice/Config.h +7 -36
  51. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +107 -11
  52. data/ext/ice/cpp/include/Ice/ConnectionIF.h +5 -1
  53. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +28 -0
  54. data/ext/ice/cpp/include/Ice/{DefaultObjectFactory.h → DefaultValueFactory.h} +28 -14
  55. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +4 -6
  56. data/ext/ice/cpp/include/Ice/Dispatcher.h +14 -13
  57. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +7 -5
  58. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
  59. data/ext/ice/cpp/include/Ice/Exception.h +66 -56
  60. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +69 -0
  61. data/ext/ice/cpp/include/Ice/FactoryTable.h +11 -12
  62. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +27 -25
  63. data/ext/ice/cpp/include/Ice/Format.h +6 -1
  64. data/ext/ice/cpp/include/Ice/Functional.h +33 -33
  65. data/ext/ice/cpp/include/Ice/GCObject.h +9 -5
  66. data/ext/ice/cpp/include/Ice/Handle.h +6 -11
  67. data/ext/ice/cpp/include/Ice/Ice.h +9 -5
  68. data/ext/ice/cpp/include/{IceUtil → Ice}/IconvStringConverter.h +108 -62
  69. data/ext/ice/cpp/include/Ice/Incoming.h +109 -33
  70. data/ext/ice/cpp/include/Ice/IncomingAsync.h +63 -23
  71. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +7 -1
  72. data/ext/ice/cpp/include/Ice/Initialize.h +178 -38
  73. data/ext/ice/cpp/include/Ice/InputStream.h +994 -0
  74. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -2
  75. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +46 -0
  76. data/ext/ice/cpp/include/Ice/LocalObject.h +9 -9
  77. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
  78. data/ext/ice/cpp/include/Ice/LoggerUtil.h +20 -14
  79. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +114 -65
  80. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +23 -5
  81. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +99 -26
  82. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +17 -4
  83. data/ext/ice/cpp/include/Ice/Object.h +105 -56
  84. data/ext/ice/cpp/include/Ice/ObjectF.h +8 -3
  85. data/ext/ice/cpp/include/Ice/ObserverHelper.h +18 -8
  86. data/ext/ice/cpp/include/Ice/Optional.h +1084 -0
  87. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +655 -84
  88. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +12 -6
  89. data/ext/ice/cpp/include/Ice/OutputStream.h +753 -0
  90. data/ext/ice/cpp/include/Ice/Protocol.h +19 -12
  91. data/ext/ice/cpp/include/Ice/Proxy.h +1329 -717
  92. data/ext/ice/cpp/include/Ice/ProxyF.h +11 -33
  93. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
  94. data/ext/ice/cpp/include/Ice/ProxyHandle.h +34 -50
  95. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
  96. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +22 -3
  97. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +10 -4
  98. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +6 -1
  99. data/ext/ice/cpp/include/{IceUtil → Ice}/SHA1.h +16 -16
  100. data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
  101. data/ext/ice/cpp/include/Ice/Service.h +13 -18
  102. data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
  103. data/ext/ice/cpp/include/Ice/SlicedData.h +46 -20
  104. data/ext/ice/cpp/include/Ice/SlicedDataF.h +14 -6
  105. data/ext/ice/cpp/include/Ice/StreamHelpers.h +159 -49
  106. data/ext/ice/cpp/include/Ice/StringConverter.h +52 -0
  107. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
  108. data/{slice/Ice/ObjectFactoryF.ice → ext/ice/cpp/include/Ice/UUID.h} +9 -7
  109. data/ext/ice/cpp/include/{IceUtil → Ice}/UniquePtr.h +21 -22
  110. data/ext/ice/cpp/include/Ice/UniqueRef.h +98 -0
  111. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +40 -8
  112. data/ext/ice/cpp/include/Ice/Value.h +104 -0
  113. data/{slice/Freeze/ConnectionF.ice → ext/ice/cpp/include/Ice/ValueF.h} +11 -7
  114. data/ext/ice/cpp/include/IceSSL/Config.h +8 -23
  115. data/ext/ice/cpp/include/IceSSL/IceSSL.h +17 -6
  116. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +130 -0
  117. data/ext/ice/cpp/include/IceSSL/Plugin.h +172 -259
  118. data/ext/ice/cpp/include/IceSSL/SChannel.h +66 -0
  119. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +66 -0
  120. data/ext/ice/cpp/include/IceSSL/UWP.h +58 -0
  121. data/ext/ice/cpp/include/IceUtil/Atomic.h +8 -10
  122. data/ext/ice/cpp/include/IceUtil/Cond.h +17 -18
  123. data/ext/ice/cpp/include/IceUtil/Config.h +138 -39
  124. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +97 -0
  125. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +5 -5
  126. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +23 -17
  127. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -3
  128. data/ext/ice/cpp/include/IceUtil/Exception.h +157 -67
  129. data/ext/ice/cpp/include/IceUtil/FileUtil.h +148 -0
  130. data/ext/ice/cpp/include/IceUtil/Functional.h +1 -2
  131. data/ext/ice/cpp/include/IceUtil/Handle.h +11 -11
  132. data/ext/ice/cpp/include/IceUtil/IceUtil.h +4 -10
  133. data/ext/ice/cpp/include/IceUtil/InputUtil.h +3 -3
  134. data/ext/ice/cpp/include/IceUtil/Iterator.h +2 -2
  135. data/ext/ice/cpp/include/IceUtil/Lock.h +8 -10
  136. data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -2
  137. data/ext/ice/cpp/include/IceUtil/Mutex.h +17 -11
  138. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +2 -2
  139. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
  140. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +4 -4
  141. data/ext/ice/cpp/include/IceUtil/Optional.h +32 -18
  142. data/ext/ice/cpp/include/IceUtil/Options.h +17 -18
  143. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +55 -29
  144. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +6 -6
  145. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +11 -10
  146. data/ext/ice/cpp/include/IceUtil/Random.h +3 -3
  147. data/ext/ice/cpp/include/IceUtil/RecMutex.h +7 -8
  148. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +58 -0
  149. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +1 -9
  150. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +8 -2
  151. data/ext/ice/cpp/include/IceUtil/Shared.h +5 -7
  152. data/ext/ice/cpp/{src → include}/IceUtil/StopWatch.h +2 -2
  153. data/ext/ice/cpp/include/IceUtil/StringConverter.h +77 -72
  154. data/ext/ice/cpp/include/IceUtil/StringUtil.h +32 -21
  155. data/ext/ice/cpp/include/IceUtil/Thread.h +10 -12
  156. data/ext/ice/cpp/include/IceUtil/ThreadException.h +33 -42
  157. data/ext/ice/cpp/include/IceUtil/Time.h +3 -3
  158. data/ext/ice/cpp/include/IceUtil/Timer.h +14 -13
  159. data/ext/ice/cpp/include/IceUtil/UUID.h +2 -2
  160. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
  161. data/ext/ice/cpp/include/{Ice → generated/Ice}/BuiltinSequences.h +41 -8
  162. data/ext/ice/cpp/include/generated/Ice/Communicator.h +364 -0
  163. data/ext/ice/cpp/include/{Ice → generated/Ice}/CommunicatorF.h +40 -8
  164. data/ext/ice/cpp/include/generated/Ice/Connection.h +872 -0
  165. data/ext/ice/cpp/include/{Ice → generated/Ice}/ConnectionF.h +46 -8
  166. data/ext/ice/cpp/include/{Ice → generated/Ice}/Current.h +71 -8
  167. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +582 -0
  168. data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointF.h +62 -8
  169. data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointTypes.h +31 -16
  170. data/ext/ice/cpp/include/{Ice → generated/Ice}/FacetMap.h +23 -8
  171. data/ext/ice/cpp/include/generated/Ice/Identity.h +221 -0
  172. data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContext.h +72 -13
  173. data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContextF.h +40 -8
  174. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +602 -0
  175. data/ext/ice/cpp/include/{Ice → generated/Ice}/InstrumentationF.h +54 -8
  176. data/ext/ice/cpp/include/generated/Ice/LocalException.h +2802 -0
  177. data/ext/ice/cpp/include/generated/Ice/Locator.h +2036 -0
  178. data/ext/ice/cpp/include/{Ice → generated/Ice}/LocatorF.h +53 -12
  179. data/ext/ice/cpp/include/{Ice → generated/Ice}/Logger.h +71 -13
  180. data/ext/ice/cpp/include/{Ice → generated/Ice}/LoggerF.h +40 -8
  181. data/ext/ice/cpp/include/generated/Ice/Metrics.h +2649 -0
  182. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +302 -0
  183. data/ext/ice/cpp/include/{Ice → generated/Ice}/ObjectAdapterF.h +40 -8
  184. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +142 -0
  185. data/ext/ice/cpp/include/generated/Ice/Plugin.h +197 -0
  186. data/ext/ice/cpp/include/{Ice → generated/Ice}/PluginF.h +43 -8
  187. data/ext/ice/cpp/include/generated/Ice/Process.h +536 -0
  188. data/ext/ice/cpp/include/{Ice → generated/Ice}/ProcessF.h +45 -10
  189. data/ext/ice/cpp/include/{Ice → generated/Ice}/Properties.h +88 -21
  190. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +749 -0
  191. data/ext/ice/cpp/include/{Ice → generated/Ice}/PropertiesF.h +48 -10
  192. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1449 -0
  193. data/ext/ice/cpp/include/generated/Ice/Router.h +1032 -0
  194. data/ext/ice/cpp/include/{Ice → generated/Ice}/RouterF.h +45 -10
  195. data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocator.h +65 -13
  196. data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocatorF.h +40 -8
  197. data/ext/ice/cpp/include/{Ice → generated/Ice}/SliceChecksumDict.h +23 -8
  198. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +169 -0
  199. data/ext/ice/cpp/include/generated/Ice/Version.h +334 -0
  200. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +172 -0
  201. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +98 -0
  202. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +156 -0
  203. data/ext/ice/cpp/src/Ice/ACM.cpp +18 -14
  204. data/ext/ice/cpp/src/Ice/ACM.h +9 -2
  205. data/ext/ice/cpp/{include → src}/Ice/ACMF.h +10 -5
  206. data/ext/ice/cpp/src/Ice/Acceptor.cpp +6 -1
  207. data/ext/ice/cpp/src/Ice/Acceptor.h +4 -3
  208. data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
  209. data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.cpp +9 -9
  210. data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.h +7 -7
  211. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +15 -538
  212. data/ext/ice/cpp/src/Ice/Base64.cpp +11 -11
  213. data/ext/ice/cpp/src/Ice/Base64.h +1 -1
  214. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +40 -12
  215. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +15 -10
  216. data/ext/ice/cpp/src/Ice/Buffer.cpp +74 -12
  217. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +20 -6
  218. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +85 -190
  219. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +17 -18
  220. data/ext/ice/cpp/src/Ice/Communicator.cpp +39 -8
  221. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +27 -5
  222. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +271 -104
  223. data/ext/ice/cpp/src/Ice/CommunicatorI.h +84 -28
  224. data/ext/ice/cpp/src/{IceUtil → Ice}/Cond.cpp +3 -3
  225. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +58 -125
  226. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +11 -22
  227. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +6 -2
  228. data/ext/ice/cpp/src/Ice/Connection.cpp +88 -8
  229. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +27 -5
  230. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +158 -80
  231. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +41 -23
  232. data/ext/ice/cpp/{include → src}/Ice/ConnectionFactoryF.h +8 -3
  233. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +707 -653
  234. data/ext/ice/cpp/src/Ice/ConnectionI.h +97 -69
  235. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +2 -15
  236. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +4 -3
  237. data/ext/ice/cpp/src/Ice/Connector.cpp +6 -1
  238. data/ext/ice/cpp/src/Ice/Connector.h +4 -3
  239. data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
  240. data/ext/ice/cpp/src/{IceUtil → Ice}/CountDownLatch.cpp +4 -4
  241. data/ext/ice/cpp/src/Ice/Current.cpp +29 -6
  242. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +6 -5
  243. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
  244. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
  245. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +5 -25
  246. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +29 -19
  247. data/ext/ice/cpp/src/Ice/Endpoint.cpp +85 -6
  248. data/ext/ice/cpp/src/Ice/EndpointF.cpp +27 -5
  249. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +152 -1
  250. data/ext/ice/cpp/src/Ice/EndpointFactory.h +72 -6
  251. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
  252. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +35 -19
  253. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +10 -4
  254. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
  255. data/ext/ice/cpp/src/Ice/EndpointI.cpp +17 -1
  256. data/ext/ice/cpp/src/Ice/EndpointI.h +35 -9
  257. data/ext/ice/cpp/src/Ice/EndpointIF.h +18 -5
  258. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +18 -6
  259. data/ext/ice/cpp/src/Ice/EventHandler.cpp +6 -4
  260. data/ext/ice/cpp/src/Ice/EventHandler.h +13 -8
  261. data/ext/ice/cpp/src/Ice/EventHandlerF.h +5 -2
  262. data/ext/ice/cpp/src/Ice/Exception.cpp +95 -86
  263. data/ext/ice/cpp/src/Ice/FacetMap.cpp +20 -6
  264. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +37 -28
  265. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -4
  266. data/ext/ice/cpp/src/Ice/GCObject.cpp +28 -25
  267. data/ext/ice/cpp/src/Ice/HashUtil.h +2 -3
  268. data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -2
  269. data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
  270. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +92 -53
  271. data/ext/ice/cpp/src/Ice/IPEndpointI.h +19 -10
  272. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +6 -2
  273. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +56 -0
  274. data/ext/ice/cpp/src/Ice/Identity.cpp +24 -10
  275. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +37 -6
  276. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +27 -5
  277. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +14 -14
  278. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +7 -5
  279. data/ext/ice/cpp/src/Ice/Incoming.cpp +276 -245
  280. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +104 -209
  281. data/ext/ice/cpp/src/Ice/IncomingRequest.h +5 -4
  282. data/ext/ice/cpp/src/Ice/Initialize.cpp +299 -172
  283. data/ext/ice/cpp/src/Ice/InputStream.cpp +2773 -0
  284. data/ext/ice/cpp/src/Ice/Instance.cpp +191 -231
  285. data/ext/ice/cpp/src/Ice/Instance.h +30 -18
  286. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +106 -7
  287. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +27 -5
  288. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +117 -99
  289. data/ext/ice/cpp/src/Ice/InstrumentationI.h +30 -31
  290. data/ext/ice/cpp/src/Ice/LocalException.cpp +1190 -416
  291. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -2
  292. data/ext/ice/cpp/src/Ice/Locator.cpp +1167 -1215
  293. data/ext/ice/cpp/src/Ice/LocatorF.cpp +29 -6
  294. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +129 -163
  295. data/ext/ice/cpp/src/Ice/LocatorInfo.h +29 -29
  296. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
  297. data/ext/ice/cpp/src/Ice/Logger.cpp +35 -5
  298. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +178 -73
  299. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +4 -4
  300. data/ext/ice/cpp/src/Ice/LoggerF.cpp +27 -5
  301. data/ext/ice/cpp/src/Ice/LoggerI.cpp +14 -44
  302. data/ext/ice/cpp/src/Ice/LoggerI.h +7 -13
  303. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +10 -12
  304. data/ext/ice/cpp/src/Ice/Metrics.cpp +1059 -1069
  305. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +49 -19
  306. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -2
  307. data/ext/ice/cpp/src/Ice/Network.cpp +534 -170
  308. data/ext/ice/cpp/src/Ice/Network.h +100 -23
  309. data/ext/ice/cpp/src/Ice/NetworkF.h +2 -2
  310. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +21 -14
  311. data/ext/ice/cpp/src/Ice/NetworkProxy.h +5 -2
  312. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
  313. data/ext/ice/cpp/src/Ice/Object.cpp +217 -221
  314. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -6
  315. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +27 -5
  316. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +35 -14
  317. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +13 -7
  318. data/ext/ice/cpp/{include → src}/Ice/ObjectAdapterFactoryF.h +5 -1
  319. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +184 -58
  320. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +32 -26
  321. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +37 -6
  322. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +9 -32
  323. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +40 -18
  324. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +14 -5
  325. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +803 -365
  326. data/ext/ice/cpp/src/Ice/OutputStream.cpp +1399 -0
  327. data/ext/ice/cpp/src/Ice/Plugin.cpp +45 -6
  328. data/ext/ice/cpp/src/Ice/PluginF.cpp +27 -5
  329. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +13 -13
  330. data/ext/ice/cpp/src/Ice/PluginManagerI.h +5 -6
  331. data/ext/ice/cpp/src/Ice/Process.cpp +256 -114
  332. data/ext/ice/cpp/src/Ice/ProcessF.cpp +29 -6
  333. data/ext/ice/cpp/src/Ice/Properties.cpp +38 -8
  334. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +340 -328
  335. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +81 -17
  336. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +29 -5
  337. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +29 -6
  338. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +25 -26
  339. data/ext/ice/cpp/src/Ice/PropertiesI.h +8 -11
  340. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +107 -50
  341. data/ext/ice/cpp/src/Ice/PropertyNames.h +4 -2
  342. data/ext/ice/cpp/src/Ice/Protocol.cpp +2 -2
  343. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +37 -2
  344. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +9 -20
  345. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
  346. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +6 -1
  347. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +3 -1
  348. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
  349. data/ext/ice/cpp/src/Ice/Proxy.cpp +690 -964
  350. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +23 -32
  351. data/ext/ice/cpp/src/Ice/ProxyFactory.h +16 -11
  352. data/ext/ice/cpp/src/Ice/Reference.cpp +75 -69
  353. data/ext/ice/cpp/src/Ice/Reference.h +27 -22
  354. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +18 -21
  355. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +12 -12
  356. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
  357. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +18 -4
  358. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
  359. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +672 -552
  360. data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
  361. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +5 -3
  362. data/ext/ice/cpp/src/Ice/RequestHandler.h +10 -13
  363. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +10 -6
  364. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +2 -2
  365. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +3 -6
  366. data/ext/ice/cpp/src/Ice/ResponseHandler.h +16 -7
  367. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +6 -12
  368. data/ext/ice/cpp/src/Ice/RetryQueue.h +7 -6
  369. data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
  370. data/ext/ice/cpp/src/Ice/Router.cpp +523 -474
  371. data/ext/ice/cpp/src/Ice/RouterF.cpp +29 -6
  372. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +91 -70
  373. data/ext/ice/cpp/src/Ice/RouterInfo.h +43 -32
  374. data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
  375. data/ext/ice/cpp/src/{IceUtil → Ice}/SHA1.cpp +21 -21
  376. data/ext/ice/cpp/src/Ice/Selector.cpp +989 -923
  377. data/ext/ice/cpp/src/Ice/Selector.h +100 -147
  378. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +37 -6
  379. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +27 -5
  380. data/ext/ice/cpp/src/Ice/ServantManager.cpp +9 -9
  381. data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
  382. data/ext/ice/cpp/src/Ice/SharedContext.h +2 -2
  383. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +20 -6
  384. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +2 -2
  385. data/ext/ice/cpp/src/Ice/SlicedData.cpp +72 -20
  386. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +173 -18
  387. data/ext/ice/cpp/src/Ice/StreamSocket.h +13 -4
  388. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +48 -17
  389. data/ext/ice/cpp/src/Ice/StringUtil.h +35 -0
  390. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +8 -4
  391. data/ext/ice/cpp/src/Ice/SysLoggerI.h +2 -3
  392. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +158 -32
  393. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +12 -5
  394. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -7
  395. data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -2
  396. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +40 -32
  397. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +11 -8
  398. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +12 -27
  399. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -10
  400. data/ext/ice/cpp/src/{IceUtil → Ice}/Thread.cpp +24 -41
  401. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +175 -267
  402. data/ext/ice/cpp/src/Ice/ThreadPool.h +38 -43
  403. data/ext/ice/cpp/src/{IceUtil → Ice}/Timer.cpp +28 -21
  404. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
  405. data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
  406. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +2 -2
  407. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +53 -31
  408. data/ext/ice/cpp/src/Ice/TraceUtil.h +13 -6
  409. data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -2
  410. data/ext/ice/cpp/src/Ice/Transceiver.h +8 -7
  411. data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
  412. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +2 -8
  413. data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -2
  414. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +92 -31
  415. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +12 -4
  416. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +150 -179
  417. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +15 -17
  418. data/ext/ice/cpp/src/Ice/Value.cpp +81 -0
  419. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +84 -0
  420. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +70 -0
  421. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +42 -0
  422. data/ext/ice/cpp/src/Ice/Version.cpp +24 -14
  423. data/ext/ice/cpp/src/Ice/VirtualShared.h +43 -0
  424. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +3 -9
  425. data/ext/ice/cpp/src/Ice/WSAcceptor.h +3 -7
  426. data/ext/ice/cpp/src/Ice/WSConnector.cpp +5 -11
  427. data/ext/ice/cpp/src/Ice/WSConnector.h +3 -6
  428. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +185 -80
  429. data/ext/ice/cpp/src/Ice/WSEndpoint.h +21 -31
  430. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +41 -37
  431. data/ext/ice/cpp/src/Ice/WSTransceiver.h +7 -21
  432. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +526 -264
  433. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +341 -455
  434. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +86 -26
  435. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +59 -23
  436. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +315 -61
  437. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +83 -36
  438. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +57 -59
  439. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +3 -3
  440. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +396 -159
  441. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +251 -355
  442. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +52 -0
  443. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +526 -131
  444. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +19 -165
  445. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +8 -17
  446. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +284 -0
  447. data/ext/ice/cpp/src/IceSSL/CertificateI.h +69 -0
  448. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +39 -11
  449. data/ext/ice/cpp/src/{Ice/ObjectFactoryF.cpp → IceSSL/ConnectionInfoF.cpp} +31 -9
  450. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +14 -56
  451. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +6 -13
  452. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +205 -197
  453. data/ext/ice/cpp/src/IceSSL/EndpointI.h +41 -33
  454. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +39 -10
  455. data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
  456. data/ext/ice/cpp/src/IceSSL/Instance.h +7 -7
  457. data/ext/ice/cpp/src/IceSSL/InstanceF.h +11 -7
  458. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +588 -0
  459. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +117 -152
  460. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +64 -0
  461. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +32 -0
  462. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +132 -0
  463. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +400 -89
  464. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +36 -21
  465. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +291 -0
  466. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +63 -0
  467. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +71 -41
  468. data/ext/ice/cpp/src/IceSSL/PluginI.h +13 -18
  469. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +9 -54
  470. data/ext/ice/cpp/src/IceSSL/RFC2253.h +7 -7
  471. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +585 -0
  472. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +491 -75
  473. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +126 -0
  474. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +32 -0
  475. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +78 -0
  476. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +126 -169
  477. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +19 -22
  478. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +79 -74
  479. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +24 -187
  480. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +4 -19
  481. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +862 -0
  482. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +56 -214
  483. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +60 -0
  484. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +31 -0
  485. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +80 -0
  486. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +137 -144
  487. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +25 -28
  488. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +857 -0
  489. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +46 -0
  490. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +9 -13
  491. data/ext/ice/cpp/src/IceSSL/TrustManager.h +4 -4
  492. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +3 -3
  493. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +271 -0
  494. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +343 -0
  495. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +46 -0
  496. data/ext/ice/cpp/{include/Ice/ObjectFactoryManagerF.h → src/IceSSL/UWPEngineF.h} +13 -8
  497. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +94 -0
  498. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +388 -0
  499. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +76 -0
  500. data/ext/ice/cpp/src/IceSSL/Util.cpp +66 -1256
  501. data/ext/ice/cpp/src/IceSSL/Util.h +48 -137
  502. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +162 -0
  503. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +22 -22
  504. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +34 -26
  505. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +20 -31
  506. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +25 -116
  507. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
  508. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
  509. data/ext/ice/cpp/src/IceUtil/Options.cpp +23 -46
  510. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +7 -6
  511. data/ext/ice/cpp/src/IceUtil/Random.cpp +13 -13
  512. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +3 -9
  513. data/ext/ice/cpp/src/IceUtil/Shared.cpp +8 -3
  514. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +501 -264
  515. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +540 -235
  516. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +37 -74
  517. data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
  518. data/ext/ice/cpp/src/IceUtil/UUID.cpp +10 -10
  519. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +98 -97
  520. data/ext/ice/cpp/src/IceUtil/Unicode.h +21 -35
  521. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +838 -0
  522. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +815 -163
  523. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +76 -0
  524. data/ext/ice/cpp/src/Slice/Checksum.cpp +2 -2
  525. data/ext/ice/cpp/{include → src}/Slice/Checksum.h +2 -2
  526. data/ext/ice/cpp/src/Slice/FileTracker.cpp +25 -78
  527. data/ext/ice/cpp/{include → src}/Slice/FileTracker.h +9 -9
  528. data/ext/ice/cpp/src/Slice/Grammar.cpp +1994 -1943
  529. data/ext/ice/cpp/src/Slice/Grammar.h +44 -24
  530. data/ext/ice/cpp/src/Slice/GrammarUtil.h +14 -14
  531. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +2658 -1927
  532. data/ext/ice/cpp/{include → src}/Slice/JavaUtil.h +178 -59
  533. data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
  534. data/ext/ice/cpp/src/Slice/MD5.h +1 -1
  535. data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -1
  536. data/ext/ice/cpp/src/Slice/MD5I.h +1 -1
  537. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +12 -15
  538. data/ext/ice/cpp/{include → src}/Slice/PHPUtil.h +6 -15
  539. data/ext/ice/cpp/src/Slice/Parser.cpp +802 -307
  540. data/ext/ice/cpp/{include → src}/Slice/Parser.h +76 -84
  541. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +43 -21
  542. data/ext/ice/cpp/{include → src}/Slice/Preprocessor.h +7 -12
  543. data/ext/ice/cpp/src/Slice/Python.cpp +207 -86
  544. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +683 -679
  545. data/ext/ice/cpp/{include → src}/Slice/PythonUtil.h +19 -8
  546. data/ext/ice/cpp/src/Slice/Ruby.cpp +38 -34
  547. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +177 -445
  548. data/ext/ice/cpp/{include → src}/Slice/RubyUtil.h +6 -6
  549. data/ext/ice/cpp/src/Slice/Scanner.cpp +218 -306
  550. data/ext/ice/cpp/src/Slice/{Util.cpp → SliceUtil.cpp} +37 -64
  551. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +374 -0
  552. data/ext/ice/cpp/src/Slice/Util.h +54 -0
  553. data/ext/ice/mcpp/Makefile +5 -2
  554. data/ice.gemspec +2 -7
  555. data/lib/Glacier2.rb +1 -1
  556. data/lib/Glacier2/Metrics.rb +7 -46
  557. data/lib/Glacier2/PermissionsVerifier.rb +24 -95
  558. data/lib/Glacier2/PermissionsVerifierF.rb +3 -3
  559. data/lib/Glacier2/Router.rb +32 -74
  560. data/lib/Glacier2/RouterF.rb +3 -3
  561. data/lib/Glacier2/SSLInfo.rb +4 -7
  562. data/lib/Glacier2/Session.rb +88 -307
  563. data/lib/Ice.rb +83 -52
  564. data/lib/Ice/BuiltinSequences.rb +4 -4
  565. data/lib/Ice/Communicator.rb +56 -58
  566. data/lib/Ice/CommunicatorF.rb +3 -3
  567. data/lib/Ice/Connection.rb +153 -162
  568. data/lib/Ice/ConnectionF.rb +3 -3
  569. data/lib/Ice/Current.rb +4 -11
  570. data/lib/Ice/Endpoint.rb +57 -133
  571. data/lib/Ice/EndpointF.rb +3 -3
  572. data/lib/Ice/EndpointTypes.rb +3 -7
  573. data/lib/Ice/FacetMap.rb +4 -4
  574. data/lib/Ice/Identity.rb +5 -8
  575. data/lib/Ice/ImplicitContext.rb +5 -34
  576. data/lib/Ice/ImplicitContextF.rb +3 -3
  577. data/lib/Ice/Instrumentation.rb +23 -275
  578. data/lib/Ice/InstrumentationF.rb +3 -3
  579. data/lib/Ice/LocalException.rb +95 -141
  580. data/lib/Ice/Locator.rb +51 -165
  581. data/lib/Ice/LocatorF.rb +3 -3
  582. data/lib/Ice/Logger.rb +5 -34
  583. data/lib/Ice/LoggerF.rb +3 -3
  584. data/lib/Ice/Metrics.rb +61 -416
  585. data/lib/Ice/ObjectAdapter.rb +34 -0
  586. data/lib/Ice/ObjectAdapterF.rb +3 -3
  587. data/lib/Ice/ObjectFactory.rb +5 -30
  588. data/lib/Ice/Plugin.rb +7 -60
  589. data/lib/Ice/PluginF.rb +3 -3
  590. data/lib/Ice/Process.rb +16 -52
  591. data/lib/Ice/ProcessF.rb +3 -3
  592. data/lib/Ice/Properties.rb +5 -41
  593. data/lib/Ice/PropertiesAdmin.rb +19 -56
  594. data/lib/Ice/PropertiesF.rb +3 -3
  595. data/lib/Ice/RemoteLogger.rb +34 -115
  596. data/lib/Ice/Router.rb +29 -101
  597. data/lib/Ice/RouterF.rb +3 -3
  598. data/lib/Ice/ServantLocator.rb +31 -0
  599. data/lib/Ice/{ObjectFactoryF.rb → ServantLocatorF.rb} +6 -6
  600. data/lib/Ice/SliceChecksumDict.rb +3 -3
  601. data/lib/Ice/ValueFactory.rb +33 -0
  602. data/lib/Ice/Version.rb +5 -11
  603. data/lib/IceBox.rb +1 -1
  604. data/lib/IceBox/IceBox.rb +44 -148
  605. data/lib/IceGrid.rb +1 -4
  606. data/lib/IceGrid/Admin.rb +551 -427
  607. data/lib/IceGrid/Descriptor.rb +62 -529
  608. data/lib/IceGrid/Exception.rb +24 -45
  609. data/lib/IceGrid/FileParser.rb +14 -50
  610. data/lib/IceGrid/PluginFacade.rb +40 -0
  611. data/lib/IceGrid/Registry.rb +151 -58
  612. data/lib/IceGrid/Session.rb +25 -64
  613. data/lib/IceGrid/UserAccountMapper.rb +14 -50
  614. data/lib/IcePatch2.rb +1 -1
  615. data/lib/IcePatch2/FileInfo.rb +5 -11
  616. data/lib/IcePatch2/FileServer.rb +33 -76
  617. data/lib/IceStorm.rb +1 -1
  618. data/lib/IceStorm/IceStorm.rb +79 -206
  619. data/lib/IceStorm/Metrics.rb +11 -89
  620. data/slice/Glacier2/Metrics.ice +8 -4
  621. data/slice/Glacier2/PermissionsVerifier.ice +10 -7
  622. data/slice/Glacier2/PermissionsVerifierF.ice +7 -4
  623. data/slice/Glacier2/Router.ice +10 -8
  624. data/slice/Glacier2/RouterF.ice +7 -4
  625. data/slice/Glacier2/SSLInfo.ice +8 -5
  626. data/slice/Glacier2/Session.ice +15 -13
  627. data/slice/Ice/BuiltinSequences.ice +7 -4
  628. data/slice/Ice/Communicator.ice +141 -66
  629. data/slice/Ice/CommunicatorF.ice +7 -4
  630. data/slice/Ice/Connection.ice +183 -86
  631. data/slice/Ice/ConnectionF.ice +7 -4
  632. data/slice/Ice/Current.ice +13 -9
  633. data/slice/Ice/Endpoint.ice +63 -14
  634. data/slice/Ice/EndpointF.ice +7 -4
  635. data/slice/Ice/EndpointTypes.ice +8 -6
  636. data/slice/Ice/FacetMap.ice +7 -4
  637. data/slice/Ice/Identity.ice +13 -5
  638. data/slice/Ice/ImplicitContext.ice +20 -18
  639. data/slice/Ice/ImplicitContextF.ice +7 -4
  640. data/slice/Ice/Instrumentation.ice +20 -19
  641. data/slice/Ice/InstrumentationF.ice +8 -5
  642. data/slice/Ice/LocalException.ice +87 -87
  643. data/slice/Ice/Locator.ice +19 -18
  644. data/slice/Ice/LocatorF.ice +7 -4
  645. data/slice/Ice/Logger.ice +9 -7
  646. data/slice/Ice/LoggerF.ice +7 -4
  647. data/slice/Ice/Metrics.ice +18 -14
  648. data/slice/Ice/ObjectAdapter.ice +30 -13
  649. data/slice/Ice/ObjectAdapterF.ice +7 -4
  650. data/slice/Ice/ObjectFactory.ice +15 -12
  651. data/slice/Ice/Plugin.ice +9 -6
  652. data/slice/Ice/PluginF.ice +8 -5
  653. data/slice/Ice/Process.ice +9 -6
  654. data/slice/Ice/ProcessF.ice +7 -4
  655. data/slice/Ice/Properties.ice +15 -12
  656. data/slice/Ice/PropertiesAdmin.ice +9 -5
  657. data/slice/Ice/PropertiesF.ice +7 -4
  658. data/slice/Ice/RemoteLogger.ice +33 -24
  659. data/slice/Ice/Router.ice +16 -7
  660. data/slice/Ice/RouterF.ice +7 -4
  661. data/slice/Ice/ServantLocator.ice +13 -10
  662. data/slice/Ice/ServantLocatorF.ice +7 -4
  663. data/slice/Ice/SliceChecksumDict.ice +7 -4
  664. data/slice/Ice/ValueFactory.ice +127 -0
  665. data/slice/Ice/Version.ice +9 -5
  666. data/slice/IceBT/ConnectionInfo.ice +53 -0
  667. data/slice/IceBT/EndpointInfo.ice +51 -0
  668. data/slice/IceBT/Types.ice +39 -0
  669. data/slice/IceBox/IceBox.ice +20 -21
  670. data/slice/IceDiscovery/IceDiscovery.ice +9 -5
  671. data/slice/IceGrid/Admin.ice +390 -30
  672. data/slice/IceGrid/Descriptor.ice +37 -29
  673. data/slice/IceGrid/Exception.ice +33 -27
  674. data/slice/IceGrid/FileParser.ice +9 -6
  675. data/slice/IceGrid/PluginFacade.ice +11 -9
  676. data/slice/IceGrid/Registry.ice +139 -16
  677. data/slice/IceGrid/Session.ice +10 -8
  678. data/slice/IceGrid/UserAccountMapper.ice +9 -6
  679. data/slice/IceIAP/ConnectionInfo.ice +70 -0
  680. data/slice/IceIAP/EndpointInfo.ice +64 -0
  681. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +9 -7
  682. data/slice/IcePatch2/FileInfo.ice +9 -8
  683. data/slice/IcePatch2/FileServer.ice +17 -13
  684. data/slice/IceSSL/ConnectionInfo.ice +14 -17
  685. data/slice/IceSSL/ConnectionInfoF.ice +24 -0
  686. data/slice/IceSSL/EndpointInfo.ice +9 -30
  687. data/slice/IceStorm/IceStorm.ice +22 -18
  688. data/slice/IceStorm/Metrics.ice +9 -5
  689. metadata +154 -120
  690. data/ext/ObjectFactory.cpp +0 -140
  691. data/ext/ObjectFactory.h +0 -50
  692. data/ext/ice/cpp/include/Ice/BasicStream.h +0 -1335
  693. data/ext/ice/cpp/include/Ice/Communicator.h +0 -200
  694. data/ext/ice/cpp/include/Ice/Connection.h +0 -497
  695. data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +0 -62
  696. data/ext/ice/cpp/include/Ice/Endpoint.h +0 -341
  697. data/ext/ice/cpp/include/Ice/Identity.h +0 -168
  698. data/ext/ice/cpp/include/Ice/Instrumentation.h +0 -365
  699. data/ext/ice/cpp/include/Ice/LocalException.h +0 -1030
  700. data/ext/ice/cpp/include/Ice/Locator.h +0 -2193
  701. data/ext/ice/cpp/include/Ice/Metrics.h +0 -2974
  702. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +0 -168
  703. data/ext/ice/cpp/include/Ice/ObjectFactory.h +0 -92
  704. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +0 -66
  705. data/ext/ice/cpp/include/Ice/Outgoing.h +0 -225
  706. data/ext/ice/cpp/include/Ice/Plugin.h +0 -125
  707. data/ext/ice/cpp/include/Ice/Process.h +0 -574
  708. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +0 -830
  709. data/ext/ice/cpp/include/Ice/RemoteLogger.h +0 -1500
  710. data/ext/ice/cpp/include/Ice/Router.h +0 -1159
  711. data/ext/ice/cpp/include/Ice/Stream.h +0 -447
  712. data/ext/ice/cpp/include/Ice/StreamF.h +0 -30
  713. data/ext/ice/cpp/include/Ice/Version.h +0 -262
  714. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +0 -158
  715. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +0 -142
  716. data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +0 -119
  717. data/ext/ice/cpp/include/IceUtil/Cache.h +0 -362
  718. data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +0 -65
  719. data/ext/ice/cpp/include/Slice/CsUtil.h +0 -92
  720. data/ext/ice/cpp/include/Slice/DotNetNames.h +0 -34
  721. data/ext/ice/cpp/include/Slice/ObjCUtil.h +0 -127
  722. data/ext/ice/cpp/include/Slice/Util.h +0 -56
  723. data/ext/ice/cpp/src/Ice/BasicStream.cpp +0 -3428
  724. data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +0 -62
  725. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +0 -139
  726. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +0 -43
  727. data/ext/ice/cpp/src/Ice/Outgoing.cpp +0 -694
  728. data/ext/ice/cpp/src/Ice/Stream.cpp +0 -53
  729. data/ext/ice/cpp/src/Ice/StreamI.cpp +0 -832
  730. data/ext/ice/cpp/src/Ice/StreamI.h +0 -198
  731. data/ext/ice/cpp/src/IceSSL/Certificate.cpp +0 -1336
  732. data/ext/ice/cpp/src/IceUtil/Exception.cpp +0 -792
  733. data/ext/ice/cpp/src/IceUtil/FileUtil.h +0 -185
  734. data/ext/ice/cpp/src/Slice/CsUtil.cpp +0 -2660
  735. data/ext/ice/cpp/src/Slice/DotNetNames.cpp +0 -146
  736. data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +0 -1310
  737. data/lib/IceGrid/Locator.rb +0 -106
  738. data/lib/IceGrid/Observer.rb +0 -572
  739. data/lib/IceGrid/Query.rb +0 -169
  740. data/slice/Freeze/BackgroundSaveEvictor.ice +0 -111
  741. data/slice/Freeze/CatalogData.ice +0 -49
  742. data/slice/Freeze/Connection.ice +0 -121
  743. data/slice/Freeze/DB.ice +0 -37
  744. data/slice/Freeze/Evictor.ice +0 -346
  745. data/slice/Freeze/EvictorF.ice +0 -22
  746. data/slice/Freeze/EvictorStorage.ice +0 -72
  747. data/slice/Freeze/Exception.ice +0 -100
  748. data/slice/Freeze/Transaction.ice +0 -58
  749. data/slice/Freeze/TransactionalEvictor.ice +0 -50
  750. data/slice/IceGrid/Locator.ice +0 -57
  751. data/slice/IceGrid/Observer.ice +0 -395
  752. data/slice/IceGrid/Query.ice +0 -131
@@ -0,0 +1,126 @@
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_SCHANNEL_ENGINE_H
11
+ #define ICESSL_SCHANNEL_ENGINE_H
12
+
13
+ #include <IceSSL/SSLEngine.h>
14
+ #include <IceSSL/SChannelEngineF.h>
15
+
16
+ //
17
+ // SECURITY_WIN32 or SECURITY_KERNEL, must be defined before including security.h
18
+ // indicating who is compiling the code.
19
+ //
20
+ # ifdef SECURITY_WIN32
21
+ # undef SECURITY_WIN32
22
+ # endif
23
+ # ifdef SECURITY_KERNEL
24
+ # undef SECURITY_KERNEL
25
+ # endif
26
+ # define SECURITY_WIN32 1
27
+ # include <security.h>
28
+ # include <sspi.h>
29
+ # include <schannel.h>
30
+ # undef SECURITY_WIN32
31
+
32
+ #if defined(__MINGW32__) || (defined(_MSC_VER) && (_MSC_VER <= 1500))
33
+
34
+ //
35
+ // Add some definitions missing from MinGW headers.
36
+ //
37
+
38
+ # ifndef CERT_TRUST_IS_EXPLICIT_DISTRUST
39
+ # define CERT_TRUST_IS_EXPLICIT_DISTRUST 0x04000000
40
+ # endif
41
+
42
+ # ifndef CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT
43
+ # define CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT 0x08000000
44
+ # endif
45
+
46
+ # ifndef SECBUFFER_ALERT
47
+ # define SECBUFFER_ALERT 17
48
+ # endif
49
+
50
+ # ifndef SCH_SEND_ROOT_CERT
51
+ # define SCH_SEND_ROOT_CERT 0x00040000
52
+ # endif
53
+
54
+ # ifndef SP_PROT_TLS1_1_SERVER
55
+ # define SP_PROT_TLS1_1_SERVER 0x00000100
56
+ # endif
57
+
58
+ # ifndef SP_PROT_TLS1_1_CLIENT
59
+ # define SP_PROT_TLS1_1_CLIENT 0x00000200
60
+ # endif
61
+
62
+ # ifndef SP_PROT_TLS1_2_SERVER
63
+ # define SP_PROT_TLS1_2_SERVER 0x00000400
64
+ # endif
65
+
66
+ # ifndef SP_PROT_TLS1_2_CLIENT
67
+ # define SP_PROT_TLS1_2_CLIENT 0x00000800
68
+ # endif
69
+
70
+ #endif
71
+
72
+ namespace IceSSL
73
+ {
74
+
75
+ namespace SChannel
76
+ {
77
+
78
+ class SSLEngine : public IceSSL::SSLEngine
79
+ {
80
+ public:
81
+
82
+ SSLEngine(const Ice::CommunicatorPtr&);
83
+
84
+ //
85
+ // Setup the engine.
86
+ //
87
+ virtual void initialize();
88
+
89
+ virtual IceInternal::TransceiverPtr
90
+ createTransceiver(const InstancePtr&, const IceInternal::TransceiverPtr&, const std::string&, bool);
91
+
92
+ //
93
+ // Destroy the engine.
94
+ //
95
+ virtual void destroy();
96
+
97
+ virtual void verifyPeer(const std::string&, const ConnectionInfoPtr&, const std::string&);
98
+
99
+ std::string getCipherName(ALG_ID) const;
100
+
101
+ CredHandle newCredentialsHandle(bool);
102
+
103
+ HCERTCHAINENGINE chainEngine() const;
104
+
105
+ private:
106
+
107
+ void parseCiphers(const std::string&);
108
+
109
+ std::vector<PCCERT_CONTEXT> _allCerts;
110
+ std::vector<PCCERT_CONTEXT> _importedCerts;
111
+ DWORD _protocols;
112
+
113
+ std::vector<HCERTSTORE> _stores;
114
+ HCERTSTORE _rootStore;
115
+
116
+ HCERTCHAINENGINE _chainEngine;
117
+ std::vector<ALG_ID> _ciphers;
118
+
119
+ const bool _strongCrypto;
120
+ };
121
+
122
+ }
123
+
124
+ }
125
+
126
+ #endif
@@ -0,0 +1,32 @@
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_SCHANNEL_ENGINE_F_H
11
+ #define ICESSL_SCHANNEL_ENGINE_F_H
12
+
13
+ #include <IceUtil/Shared.h>
14
+ #include <Ice/Handle.h>
15
+
16
+ #include <IceSSL/SChannel.h>
17
+
18
+ namespace IceSSL
19
+ {
20
+
21
+ namespace SChannel
22
+ {
23
+
24
+ class SSLEngine;
25
+ ICESSL_API IceUtil::Shared* upCast(SSLEngine*);
26
+ typedef IceInternal::Handle<SSLEngine> SSLEnginePtr;
27
+
28
+ }
29
+
30
+ }
31
+
32
+ #endif
@@ -0,0 +1,78 @@
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/PluginI.h>
11
+ #include <IceSSL/SChannelEngine.h>
12
+
13
+ #include <Ice/Initialize.h>
14
+
15
+ using namespace std;
16
+
17
+ namespace
18
+ {
19
+
20
+ class PluginI : public IceSSL::PluginI
21
+ {
22
+ public:
23
+
24
+ PluginI(const Ice::CommunicatorPtr&);
25
+
26
+ virtual IceSSL::CertificatePtr create(CERT_SIGNED_CONTENT_INFO*) const;
27
+ virtual IceSSL::CertificatePtr load(const std::string&) const;
28
+ virtual IceSSL::CertificatePtr decode(const std::string&) const;
29
+ };
30
+
31
+ } // anonymous namespace end
32
+
33
+ //
34
+ // Plugin implementation.
35
+ //
36
+ PluginI::PluginI(const Ice::CommunicatorPtr& com) :
37
+ IceSSL::PluginI(com, new IceSSL::SChannel::SSLEngine(com))
38
+ {
39
+ }
40
+
41
+ IceSSL::CertificatePtr
42
+ PluginI::create(CERT_SIGNED_CONTENT_INFO* cert) const
43
+ {
44
+ return IceSSL::SChannel::Certificate::create(cert);
45
+ }
46
+
47
+ IceSSL::CertificatePtr
48
+ PluginI::load(const std::string& file) const
49
+ {
50
+ return IceSSL::SChannel::Certificate::load(file);
51
+ }
52
+
53
+ IceSSL::CertificatePtr
54
+ PluginI::decode(const std::string& encoding) const
55
+ {
56
+ return IceSSL::SChannel::Certificate::load(encoding);
57
+ }
58
+
59
+ //
60
+ // Plug-in factory function.
61
+ //
62
+ extern "C" ICESSL_API Ice::Plugin*
63
+ createIceSSL(const Ice::CommunicatorPtr& communicator, const string& /*name*/, const Ice::StringSeq& /*args*/)
64
+ {
65
+ return new PluginI(communicator);
66
+ }
67
+
68
+ IceSSL::CertificatePtr
69
+ IceSSL::Certificate::load(const std::string& file)
70
+ {
71
+ return IceSSL::SChannel::Certificate::load(file);
72
+ }
73
+
74
+ IceSSL::CertificatePtr
75
+ IceSSL::Certificate::decode(const std::string& encoding)
76
+ {
77
+ return IceSSL::SChannel::Certificate::decode(encoding);
78
+ }
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -13,15 +13,13 @@
13
13
 
14
14
  #include <IceSSL/ConnectionInfo.h>
15
15
  #include <IceSSL/Instance.h>
16
- #include <IceSSL/SSLEngine.h>
16
+ #include <IceSSL/SChannelEngine.h>
17
17
  #include <IceSSL/Util.h>
18
18
  #include <Ice/Communicator.h>
19
19
  #include <Ice/LoggerUtil.h>
20
20
  #include <Ice/Buffer.h>
21
21
  #include <Ice/LocalException.h>
22
22
 
23
- #ifdef ICE_USE_SCHANNEL
24
-
25
23
  using namespace std;
26
24
  using namespace Ice;
27
25
  using namespace IceSSL;
@@ -203,16 +201,22 @@ getSecBufferWithType(const SecBufferDesc& desc, ULONG bufferType)
203
201
  return 0;
204
202
  }
205
203
 
204
+ string
205
+ secStatusToString(SECURITY_STATUS status)
206
+ {
207
+ return IceUtilInternal::errorToString(status);
208
+ }
209
+
206
210
  }
207
211
 
208
212
  IceInternal::NativeInfoPtr
209
- IceSSL::TransceiverI::getNativeInfo()
213
+ SChannel::TransceiverI::getNativeInfo()
210
214
  {
211
- return _stream;
215
+ return _delegate->getNativeInfo();
212
216
  }
213
217
 
214
218
  IceInternal::SocketOperation
215
- IceSSL::TransceiverI::sslHandshake()
219
+ SChannel::TransceiverI::sslHandshake()
216
220
  {
217
221
  DWORD flags = ASC_REQ_SEQUENCE_DETECT | ASC_REQ_REPLAY_DETECT | ASC_REQ_CONFIDENTIALITY | ASC_REQ_ALLOCATE_MEMORY |
218
222
  ASC_REQ_STREAM;
@@ -247,8 +251,7 @@ IceSSL::TransceiverI::sslHandshake()
247
251
  &_ssl, &outBufferDesc, &ctxFlags, 0);
248
252
  if(err != SEC_E_OK && err != SEC_I_CONTINUE_NEEDED)
249
253
  {
250
- throw SecurityException(__FILE__, __LINE__, "IceSSL: handshake failure:\n" +
251
- IceUtilInternal::lastErrorToString());
254
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: handshake failure:\n" + secStatusToString(err));
252
255
  }
253
256
  _sslInitialized = true;
254
257
 
@@ -312,14 +315,13 @@ IceSSL::TransceiverI::sslHandshake()
312
315
  {
313
316
  SecBuffer* missing = getSecBufferWithType(inBufferDesc, SECBUFFER_MISSING);
314
317
  size_t pos = _readBuffer.i - _readBuffer.b.begin();
315
- _readBuffer.b.resize((missing && missing->cbBuffer > 0) ? (pos + missing->cbBuffer) : (pos * 2));
318
+ _readBuffer.b.resize(missing ? (pos + missing->cbBuffer) : (pos * 2));
316
319
  _readBuffer.i = _readBuffer.b.begin() + pos;
317
320
  return IceInternal::SocketOperationRead;
318
321
  }
319
322
  else if(err != SEC_I_CONTINUE_NEEDED && err != SEC_E_OK)
320
323
  {
321
- throw SecurityException(__FILE__, __LINE__, "SSL handshake failure:\n" +
322
- IceUtilInternal::lastErrorToString());
324
+ throw SecurityException(__FILE__, __LINE__, "SSL handshake failure:\n" + secStatusToString(err));
323
325
  }
324
326
 
325
327
  //
@@ -359,7 +361,7 @@ IceSSL::TransceiverI::sslHandshake()
359
361
  break; // We're done.
360
362
  }
361
363
 
362
- // Otherwise continue either reading credentials
364
+ // Otherwise continue either reading credentials
363
365
  }
364
366
 
365
367
  if(_state == StateHandshakeWriteContinue)
@@ -455,7 +457,7 @@ IceSSL::TransceiverI::sslHandshake()
455
457
  if(err != SEC_E_OK)
456
458
  {
457
459
  throw SecurityException(__FILE__, __LINE__, "IceSSL: failure to query stream sizes attributes:\n" +
458
- IceUtilInternal::lastErrorToString());
460
+ secStatusToString(err));
459
461
  }
460
462
 
461
463
  size_t pos = _readBuffer.i - _readBuffer.b.begin();
@@ -477,7 +479,7 @@ IceSSL::TransceiverI::sslHandshake()
477
479
  // data before it can decrypt the complete message.
478
480
  //
479
481
  size_t
480
- IceSSL::TransceiverI::decryptMessage(IceInternal::Buffer& buffer)
482
+ SChannel::TransceiverI::decryptMessage(IceInternal::Buffer& buffer)
481
483
  {
482
484
  assert(_readBuffer.i != _readBuffer.b.begin() || !_readUnprocessed.b.empty());
483
485
 
@@ -538,7 +540,7 @@ IceSSL::TransceiverI::decryptMessage(IceInternal::Buffer& buffer)
538
540
  else if(err != SEC_E_OK)
539
541
  {
540
542
  throw ProtocolException(__FILE__, __LINE__, "IceSSL: protocol error during read:\n" +
541
- IceUtilInternal::lastErrorToString());
543
+ secStatusToString(err));
542
544
  }
543
545
 
544
546
  SecBuffer* dataBuffer = getSecBufferWithType(inBufferDesc, SECBUFFER_DATA);
@@ -582,7 +584,7 @@ IceSSL::TransceiverI::decryptMessage(IceInternal::Buffer& buffer)
582
584
  // number of bytes is less than the message size, the function must be called again.
583
585
  //
584
586
  size_t
585
- IceSSL::TransceiverI::encryptMessage(IceInternal::Buffer& buffer)
587
+ SChannel::TransceiverI::encryptMessage(IceInternal::Buffer& buffer)
586
588
  {
587
589
  //
588
590
  // Limit the message size to cbMaximumMessage which is the maximun size data that can be
@@ -611,7 +613,7 @@ IceSSL::TransceiverI::encryptMessage(IceInternal::Buffer& buffer)
611
613
  if(err != SEC_E_OK)
612
614
  {
613
615
  throw ProtocolException(__FILE__, __LINE__, "IceSSL: protocol error encrypting message:\n" +
614
- IceUtilInternal::lastErrorToString());
616
+ secStatusToString(err));
615
617
  }
616
618
 
617
619
  // EncryptMessage resizes the buffers, so resize the write buffer as well to reflect this.
@@ -622,15 +624,19 @@ IceSSL::TransceiverI::encryptMessage(IceInternal::Buffer& buffer)
622
624
  }
623
625
 
624
626
  IceInternal::SocketOperation
625
- IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::Buffer& writeBuffer, bool& hasMoreData)
627
+ SChannel::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::Buffer& writeBuffer)
626
628
  {
627
- IceInternal::SocketOperation op = _stream->connect(readBuffer, writeBuffer);
628
- if(op != IceInternal::SocketOperationNone)
629
+ if(_state == StateNotInitialized)
629
630
  {
630
- return op;
631
+ IceInternal::SocketOperation op = _delegate->initialize(readBuffer, writeBuffer);
632
+ if(op != IceInternal::SocketOperationNone)
633
+ {
634
+ return op;
635
+ }
636
+ _state = StateHandshakeNotStarted;
631
637
  }
632
638
 
633
- op = sslHandshake();
639
+ IceInternal::SocketOperation op = sslHandshake();
634
640
  if(op != IceInternal::SocketOperationNone)
635
641
  {
636
642
  return op;
@@ -643,8 +649,8 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
643
649
  SECURITY_STATUS err = QueryContextAttributes(&_ssl, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &cert);
644
650
  if(err && err != SEC_E_NO_CREDENTIALS)
645
651
  {
646
- throw SecurityException(__FILE__, __LINE__, "IceSSL: certificate verification failure:" +
647
- IceUtilInternal::lastErrorToString());
652
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: certificate verification failure:\n" +
653
+ secStatusToString(err));
648
654
  }
649
655
 
650
656
  if(!cert && ((!_incoming && _engine->getVerifyPeer() > 0) || (_incoming && _engine->getVerifyPeer() == 2)))
@@ -653,8 +659,7 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
653
659
  // Clients require server certificate if VerifyPeer > 0 and servers require client
654
660
  // certificate if VerifyPeer == 2
655
661
  //
656
- throw SecurityException(__FILE__, __LINE__, "IceSSL: certificate required:" +
657
- IceUtilInternal::lastErrorToString());
662
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: certificate required");
658
663
  }
659
664
  else if(cert) // Verify the remote certificate
660
665
  {
@@ -682,6 +687,26 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
682
687
  _verified = true;
683
688
  }
684
689
 
690
+ CERT_SIMPLE_CHAIN* simpleChain = certChain->rgpChain[0];
691
+ for(DWORD i = 0; i < simpleChain->cElement; ++i)
692
+ {
693
+ PCCERT_CONTEXT c = simpleChain->rgpElement[i]->pCertContext;
694
+ PCERT_SIGNED_CONTENT_INFO cc;
695
+
696
+ DWORD length = 0;
697
+ if(!CryptDecodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, X509_CERT, c->pbCertEncoded,
698
+ c->cbCertEncoded, CRYPT_DECODE_ALLOC_FLAG, 0, &cc, &length))
699
+ {
700
+ CertFreeCertificateChain(certChain);
701
+ CertFreeCertificateContext(cert);
702
+ throw SecurityException(__FILE__, __LINE__,
703
+ "IceSSL: error decoding peer certificate chain:\n" +
704
+ IceUtilInternal::lastErrorToString());
705
+ }
706
+
707
+ _certs.push_back(SChannel::Certificate::create(cc));
708
+ }
709
+
685
710
  CertFreeCertificateChain(certChain);
686
711
  CertFreeCertificateContext(cert);
687
712
  if(!trustError.empty())
@@ -696,13 +721,13 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
696
721
  if(_instance->traceLevel() >= 1)
697
722
  {
698
723
  _instance->logger()->trace(_instance->traceCategory(),
699
- "IceSSL: ignoring certificate verification failure\n" + reason);
724
+ "IceSSL: ignoring certificate verification failure:\n" + reason);
700
725
  }
701
726
  }
702
727
  else
703
728
  {
704
729
  ostringstream os;
705
- os << "IceSSL: certificate verification failure\n" << reason;
730
+ os << "IceSSL: certificate verification failure:\n" << reason;
706
731
  string msg = os.str();
707
732
  if(_instance->traceLevel() >= 1)
708
733
  {
@@ -713,7 +738,18 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
713
738
  }
714
739
  }
715
740
 
716
- _engine->verifyPeer(_stream->fd(), _host, NativeConnectionInfoPtr::dynamicCast(getInfo()));
741
+ SecPkgContext_ConnectionInfo connInfo;
742
+ err = QueryContextAttributes(&_ssl, SECPKG_ATTR_CONNECTION_INFO, &connInfo);
743
+ if(err == SEC_E_OK)
744
+ {
745
+ _cipher = _engine->getCipherName(connInfo.aiCipher);
746
+ }
747
+ else
748
+ {
749
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: error reading cipher info:\n" + secStatusToString(err));
750
+ }
751
+
752
+ _engine->verifyPeer(_host, ICE_DYNAMIC_CAST(ConnectionInfo, getInfo()), toString());
717
753
  _state = StateHandshakeComplete;
718
754
 
719
755
  if(_instance->engine()->securityTraceLevel() >= 1)
@@ -744,12 +780,13 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
744
780
  }
745
781
  out << toString();
746
782
  }
747
- hasMoreData = !_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin();
783
+ _delegate->getNativeInfo()->ready(IceInternal::SocketOperationRead,
784
+ !_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin());
748
785
  return IceInternal::SocketOperationNone;
749
786
  }
750
787
 
751
788
  IceInternal::SocketOperation
752
- IceSSL::TransceiverI::closing(bool initiator, const Ice::LocalException&)
789
+ SChannel::TransceiverI::closing(bool initiator, const Ice::LocalException&)
753
790
  {
754
791
  // If we are initiating the connection closure, wait for the peer
755
792
  // to close the TCP/IP connection. Otherwise, close immediately.
@@ -757,7 +794,7 @@ IceSSL::TransceiverI::closing(bool initiator, const Ice::LocalException&)
757
794
  }
758
795
 
759
796
  void
760
- IceSSL::TransceiverI::close()
797
+ SChannel::TransceiverI::close()
761
798
  {
762
799
  if(_sslInitialized)
763
800
  {
@@ -771,7 +808,7 @@ IceSSL::TransceiverI::close()
771
808
  _credentialsInitialized = false;
772
809
  }
773
810
 
774
- _stream->close();
811
+ _delegate->close();
775
812
 
776
813
  //
777
814
  // Clear the buffers now instead of waiting for destruction.
@@ -782,11 +819,11 @@ IceSSL::TransceiverI::close()
782
819
  }
783
820
 
784
821
  IceInternal::SocketOperation
785
- IceSSL::TransceiverI::write(IceInternal::Buffer& buf)
822
+ SChannel::TransceiverI::write(IceInternal::Buffer& buf)
786
823
  {
787
- if(!_stream->isConnected())
824
+ if(_state == StateNotInitialized)
788
825
  {
789
- return _stream->write(buf);
826
+ return _delegate->write(buf);
790
827
  }
791
828
 
792
829
  if(buf.i == buf.b.end())
@@ -817,11 +854,11 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf)
817
854
  }
818
855
 
819
856
  IceInternal::SocketOperation
820
- IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool& hasMoreData)
857
+ SChannel::TransceiverI::read(IceInternal::Buffer& buf)
821
858
  {
822
- if(!_stream->isConnected())
859
+ if(_state == StateNotInitialized)
823
860
  {
824
- return _stream->read(buf);
861
+ return _delegate->read(buf);
825
862
  }
826
863
 
827
864
  if(buf.i == buf.b.end())
@@ -830,7 +867,7 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool& hasMoreData)
830
867
  }
831
868
  assert(_state == StateHandshakeComplete);
832
869
 
833
- hasMoreData = false;
870
+ _delegate->getNativeInfo()->ready(IceInternal::SocketOperationRead, false);
834
871
  while(buf.i != buf.b.end())
835
872
  {
836
873
  if(_readUnprocessed.b.empty() && _readBuffer.i == _readBuffer.b.begin() && !readRaw(_readBuffer))
@@ -850,18 +887,19 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool& hasMoreData)
850
887
 
851
888
  buf.i += decrypted;
852
889
  }
853
- hasMoreData = !_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin();
890
+ _delegate->getNativeInfo()->ready(IceInternal::SocketOperationRead,
891
+ !_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin());
854
892
  return IceInternal::SocketOperationNone;
855
893
  }
856
894
 
857
895
  #ifdef ICE_USE_IOCP
858
896
 
859
897
  bool
860
- IceSSL::TransceiverI::startWrite(IceInternal::Buffer& buffer)
898
+ SChannel::TransceiverI::startWrite(IceInternal::Buffer& buffer)
861
899
  {
862
- if(!_stream->isConnected())
900
+ if(_state == StateNotInitialized)
863
901
  {
864
- return _stream->startWrite(buffer);
902
+ return _delegate->startWrite(buffer);
865
903
  }
866
904
 
867
905
  if(_state == StateHandshakeComplete && _bufferedW == 0)
@@ -870,19 +908,19 @@ IceSSL::TransceiverI::startWrite(IceInternal::Buffer& buffer)
870
908
  _bufferedW = encryptMessage(buffer);
871
909
  }
872
910
 
873
- return _stream->startWrite(_writeBuffer);
911
+ return _delegate->startWrite(_writeBuffer) && _bufferedW == (buffer.b.end() - buffer.i);
874
912
  }
875
913
 
876
914
  void
877
- IceSSL::TransceiverI::finishWrite(IceInternal::Buffer& buf)
915
+ SChannel::TransceiverI::finishWrite(IceInternal::Buffer& buf)
878
916
  {
879
- if(!_stream->isConnected())
917
+ if(_state == StateNotInitialized)
880
918
  {
881
- _stream->finishWrite(buf);
919
+ _delegate->finishWrite(buf);
882
920
  return;
883
921
  }
884
922
 
885
- _stream->finishWrite(_writeBuffer);
923
+ _delegate->finishWrite(_writeBuffer);
886
924
  if(_writeBuffer.i != _writeBuffer.b.end())
887
925
  {
888
926
  return; // We're not finished yet with writing the write buffer.
@@ -896,99 +934,96 @@ IceSSL::TransceiverI::finishWrite(IceInternal::Buffer& buf)
896
934
  }
897
935
 
898
936
  void
899
- IceSSL::TransceiverI::startRead(IceInternal::Buffer& buffer)
937
+ SChannel::TransceiverI::startRead(IceInternal::Buffer& buffer)
900
938
  {
901
- if(!_stream->isConnected())
939
+ if(_state == StateNotInitialized)
902
940
  {
903
- _stream->startRead(buffer);
941
+ _delegate->startRead(buffer);
904
942
  return;
905
943
  }
906
- _stream->startRead(_readBuffer);
944
+ _delegate->startRead(_readBuffer);
907
945
  }
908
946
 
909
947
  void
910
- IceSSL::TransceiverI::finishRead(IceInternal::Buffer& buf, bool& hasMoreData)
948
+ SChannel::TransceiverI::finishRead(IceInternal::Buffer& buf)
911
949
  {
912
- if(!_stream->isConnected())
950
+ if(_state == StateNotInitialized)
913
951
  {
914
- _stream->finishRead(buf);
952
+ _delegate->finishRead(buf);
915
953
  return;
916
954
  }
917
955
 
918
- _stream->finishRead(_readBuffer);
956
+ _delegate->finishRead(_readBuffer);
919
957
  if(_state == StateHandshakeComplete)
920
958
  {
921
959
  size_t decrypted = decryptMessage(buf);
922
960
  if(decrypted > 0)
923
961
  {
924
962
  buf.i += decrypted;
925
- hasMoreData = !_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin();
963
+ _delegate->getNativeInfo()->ready(IceInternal::SocketOperationRead,
964
+ !_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin());
926
965
  }
927
966
  else
928
967
  {
929
- hasMoreData = false;
968
+ _delegate->getNativeInfo()->ready(IceInternal::SocketOperationRead, false);
930
969
  }
931
970
  }
932
971
  }
933
972
  #endif
934
973
 
935
974
  string
936
- IceSSL::TransceiverI::protocol() const
975
+ SChannel::TransceiverI::protocol() const
937
976
  {
938
977
  return _instance->protocol();
939
978
  }
940
979
 
941
980
  string
942
- IceSSL::TransceiverI::toString() const
981
+ SChannel::TransceiverI::toString() const
943
982
  {
944
- return _stream->toString();
983
+ return _delegate->toString();
945
984
  }
946
985
 
947
986
  string
948
- IceSSL::TransceiverI::toDetailedString() const
987
+ SChannel::TransceiverI::toDetailedString() const
949
988
  {
950
989
  return toString();
951
990
  }
952
991
 
953
992
  Ice::ConnectionInfoPtr
954
- IceSSL::TransceiverI::getInfo() const
955
- {
956
- NativeConnectionInfoPtr info = new NativeConnectionInfo();
957
- fillConnectionInfo(info, info->nativeCerts);
958
- return info;
959
- }
960
-
961
- Ice::ConnectionInfoPtr
962
- IceSSL::TransceiverI::getWSInfo(const Ice::HeaderDict& headers) const
993
+ SChannel::TransceiverI::getInfo() const
963
994
  {
964
- WSSNativeConnectionInfoPtr info = new WSSNativeConnectionInfo();
965
- fillConnectionInfo(info, info->nativeCerts);
966
- info->headers = headers;
995
+ ConnectionInfoPtr info = ICE_MAKE_SHARED(ConnectionInfo);
996
+ info->underlying = _delegate->getInfo();
997
+ info->incoming = _incoming;
998
+ info->adapterName = _adapterName;
999
+ info->cipher = _cipher;
1000
+ info->certs = _certs;
1001
+ info->verified = _verified;
967
1002
  return info;
968
1003
  }
969
1004
 
970
1005
  void
971
- IceSSL::TransceiverI::checkSendSize(const IceInternal::Buffer&)
1006
+ SChannel::TransceiverI::checkSendSize(const IceInternal::Buffer&)
972
1007
  {
973
1008
  }
974
1009
 
975
1010
  void
976
- IceSSL::TransceiverI::setBufferSize(int rcvSize, int sndSize)
1011
+ SChannel::TransceiverI::setBufferSize(int rcvSize, int sndSize)
977
1012
  {
978
- _stream->setBufferSize(rcvSize, sndSize);
1013
+ _delegate->setBufferSize(rcvSize, sndSize);
979
1014
  }
980
1015
 
981
- IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance,
982
- const IceInternal::StreamSocketPtr& stream,
1016
+ SChannel::TransceiverI::TransceiverI(const InstancePtr& instance,
1017
+ const IceInternal::TransceiverPtr& delegate,
983
1018
  const string& hostOrAdapterName,
984
1019
  bool incoming) :
985
1020
  _instance(instance),
986
- _engine(SChannelEnginePtr::dynamicCast(instance->engine())),
1021
+ _engine(SChannel::SSLEnginePtr::dynamicCast(instance->engine())),
987
1022
  _host(incoming ? "" : hostOrAdapterName),
988
1023
  _adapterName(incoming ? hostOrAdapterName : ""),
989
1024
  _incoming(incoming),
990
- _stream(stream),
991
- _state(StateHandshakeNotStarted),
1025
+ _delegate(delegate),
1026
+ _state(StateNotInitialized),
992
1027
  _bufferedW(0),
993
1028
  _sslInitialized(false),
994
1029
  _credentialsInitialized(false),
@@ -996,99 +1031,21 @@ IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance,
996
1031
  {
997
1032
  }
998
1033
 
999
- IceSSL::TransceiverI::~TransceiverI()
1034
+ SChannel::TransceiverI::~TransceiverI()
1000
1035
  {
1001
1036
  }
1002
1037
 
1003
- void
1004
- IceSSL::TransceiverI::fillConnectionInfo(const ConnectionInfoPtr& info, vector<CertificatePtr>& nativeCerts) const
1005
- {
1006
- IceInternal::fdToAddressAndPort(_stream->fd(), info->localAddress, info->localPort, info->remoteAddress,
1007
- info->remotePort);
1008
- if(_stream->fd() != INVALID_SOCKET)
1009
- {
1010
- info->rcvSize = IceInternal::getRecvBufferSize(_stream->fd());
1011
- info->sndSize = IceInternal::getSendBufferSize(_stream->fd());
1012
- }
1013
-
1014
- info->verified = _verified;
1015
-
1016
- if(_sslInitialized)
1017
- {
1018
- CtxtHandle* ssl = const_cast<CtxtHandle*>(&_ssl);
1019
- PCCERT_CONTEXT cert = 0;
1020
- PCCERT_CHAIN_CONTEXT certChain = 0;
1021
- SECURITY_STATUS err = QueryContextAttributes(ssl, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &cert);
1022
- if(err == SEC_E_OK)
1023
- {
1024
- assert(cert);
1025
- CERT_CHAIN_PARA chainP;
1026
- memset(&chainP, 0, sizeof(chainP));
1027
- chainP.cbSize = sizeof(chainP);
1028
-
1029
- if(CertGetCertificateChain(_engine->chainEngine(), cert, 0, 0, &chainP,
1030
- CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY, 0, &certChain))
1031
- {
1032
- CERT_SIMPLE_CHAIN* simpleChain = certChain->rgpChain[0];
1033
- for(DWORD i = 0; i < simpleChain->cElement; ++i)
1034
- {
1035
- PCCERT_CONTEXT c = simpleChain->rgpElement[i]->pCertContext;
1036
- PCERT_SIGNED_CONTENT_INFO cc;
1037
-
1038
- DWORD length = 0;
1039
- if(!CryptDecodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, X509_CERT, c->pbCertEncoded,
1040
- c->cbCertEncoded, CRYPT_DECODE_ALLOC_FLAG, 0, &cc, &length))
1041
- {
1042
- CertFreeCertificateChain(certChain);
1043
- CertFreeCertificateContext(cert);
1044
- throw SecurityException(__FILE__, __LINE__,
1045
- "IceSSL: error decoding peer certificate chain:\n" +
1046
- IceUtilInternal::lastErrorToString());
1047
- }
1048
-
1049
- CertificatePtr certificate = new Certificate(cc);
1050
- nativeCerts.push_back(certificate);
1051
- info->certs.push_back(certificate->encode());
1052
- }
1053
- CertFreeCertificateChain(certChain);
1054
- }
1055
- CertFreeCertificateContext(cert);
1056
- }
1057
- else if(err != SEC_E_NO_CREDENTIALS)
1058
- {
1059
- throw SecurityException(__FILE__, __LINE__, "IceSSL: error reading peer certificate:" +
1060
- IceUtilInternal::lastErrorToString());
1061
- }
1062
-
1063
- SecPkgContext_ConnectionInfo connInfo;
1064
- if(QueryContextAttributes(ssl, SECPKG_ATTR_CONNECTION_INFO, &connInfo) == SEC_E_OK)
1065
- {
1066
- info->cipher = _engine->getCipherName(connInfo.aiCipher);
1067
- }
1068
- else
1069
- {
1070
- throw SecurityException(__FILE__, __LINE__, "IceSSL: error reading cipher info:" +
1071
- IceUtilInternal::lastErrorToString());
1072
- }
1073
- }
1074
-
1075
- info->adapterName = _adapterName;
1076
- info->incoming = _incoming;
1077
- }
1078
-
1079
1038
  bool
1080
- IceSSL::TransceiverI::writeRaw(IceInternal::Buffer& buf)
1039
+ SChannel::TransceiverI::writeRaw(IceInternal::Buffer& buf)
1081
1040
  {
1082
- ssize_t ret = _stream->write(reinterpret_cast<const char*>(&*buf.i), buf.b.end() - buf.i);
1083
- buf.i += ret;
1041
+ _delegate->write(buf);
1084
1042
  return buf.i == buf.b.end();
1085
1043
  }
1086
1044
 
1087
1045
  bool
1088
- IceSSL::TransceiverI::readRaw(IceInternal::Buffer& buf)
1046
+ SChannel::TransceiverI::readRaw(IceInternal::Buffer& buf)
1089
1047
  {
1090
- ssize_t ret = _stream->read(reinterpret_cast<char*>(&*buf.i), buf.b.end() - buf.i);
1091
- buf.i += ret;
1092
- return ret > 0;
1048
+ IceInternal::Buffer::Container::iterator p = buf.i;
1049
+ _delegate->read(buf);
1050
+ return buf.i != p;
1093
1051
  }
1094
- #endif