zeroc-ice 3.6.5 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (752) hide show
  1. checksums.yaml +4 -4
  2. data/BZIP2_LICENSE +42 -0
  3. data/ICE_LICENSE +17 -17
  4. data/LICENSE +12 -12
  5. data/bin/slice2rb +1 -1
  6. data/ext/Communicator.cpp +150 -53
  7. data/ext/Communicator.h +1 -1
  8. data/ext/Config.h +2 -12
  9. data/ext/Connection.cpp +89 -68
  10. data/ext/Connection.h +1 -1
  11. data/ext/Endpoint.cpp +16 -45
  12. data/ext/Endpoint.h +1 -1
  13. data/ext/ImplicitContext.cpp +1 -5
  14. data/ext/ImplicitContext.h +1 -1
  15. data/ext/Init.cpp +4 -1
  16. data/ext/Logger.cpp +1 -1
  17. data/ext/Logger.h +1 -1
  18. data/ext/Operation.cpp +33 -44
  19. data/ext/Operation.h +1 -1
  20. data/ext/Properties.cpp +1 -1
  21. data/ext/Properties.h +1 -1
  22. data/ext/Proxy.cpp +22 -57
  23. data/ext/Proxy.h +1 -1
  24. data/ext/Slice.cpp +5 -5
  25. data/ext/Slice.h +1 -1
  26. data/ext/Types.cpp +244 -171
  27. data/ext/Types.h +118 -66
  28. data/ext/Util.cpp +13 -9
  29. data/ext/Util.h +10 -10
  30. data/ext/ValueFactoryManager.cpp +445 -0
  31. data/ext/ValueFactoryManager.h +100 -0
  32. data/ext/extconf.rb +47 -45
  33. data/ext/ice/bzip2/blocksort.c +1094 -0
  34. data/ext/ice/bzip2/bzlib.c +1572 -0
  35. data/ext/ice/bzip2/bzlib.h +282 -0
  36. data/ext/ice/bzip2/bzlib_private.h +509 -0
  37. data/ext/ice/bzip2/compress.c +672 -0
  38. data/ext/ice/bzip2/crctable.c +104 -0
  39. data/ext/ice/bzip2/decompress.c +646 -0
  40. data/ext/ice/bzip2/huffman.c +205 -0
  41. data/ext/ice/bzip2/randtable.c +84 -0
  42. data/ext/ice/cpp/include/Ice/Application.h +77 -60
  43. data/ext/ice/cpp/include/Ice/AsyncResult.h +34 -318
  44. data/ext/ice/cpp/include/Ice/AsyncResultF.h +4 -2
  45. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +5 -10
  46. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
  47. data/ext/ice/cpp/include/Ice/Buffer.h +10 -10
  48. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +14 -12
  49. data/ext/ice/cpp/include/Ice/Comparable.h +130 -0
  50. data/ext/ice/cpp/include/Ice/Config.h +7 -36
  51. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +107 -11
  52. data/ext/ice/cpp/include/Ice/ConnectionIF.h +5 -1
  53. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +28 -0
  54. data/ext/ice/cpp/include/Ice/{DefaultObjectFactory.h → DefaultValueFactory.h} +28 -14
  55. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +4 -6
  56. data/ext/ice/cpp/include/Ice/Dispatcher.h +14 -13
  57. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +7 -5
  58. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
  59. data/ext/ice/cpp/include/Ice/Exception.h +66 -56
  60. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +69 -0
  61. data/ext/ice/cpp/include/Ice/FactoryTable.h +11 -12
  62. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +27 -25
  63. data/ext/ice/cpp/include/Ice/Format.h +6 -1
  64. data/ext/ice/cpp/include/Ice/Functional.h +33 -33
  65. data/ext/ice/cpp/include/Ice/GCObject.h +9 -5
  66. data/ext/ice/cpp/include/Ice/Handle.h +6 -11
  67. data/ext/ice/cpp/include/Ice/Ice.h +9 -5
  68. data/ext/ice/cpp/include/{IceUtil → Ice}/IconvStringConverter.h +108 -62
  69. data/ext/ice/cpp/include/Ice/Incoming.h +109 -33
  70. data/ext/ice/cpp/include/Ice/IncomingAsync.h +63 -23
  71. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +7 -1
  72. data/ext/ice/cpp/include/Ice/Initialize.h +178 -38
  73. data/ext/ice/cpp/include/Ice/InputStream.h +994 -0
  74. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -2
  75. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +46 -0
  76. data/ext/ice/cpp/include/Ice/LocalObject.h +9 -9
  77. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
  78. data/ext/ice/cpp/include/Ice/LoggerUtil.h +20 -14
  79. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +114 -65
  80. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +23 -5
  81. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +99 -26
  82. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +17 -4
  83. data/ext/ice/cpp/include/Ice/Object.h +105 -56
  84. data/ext/ice/cpp/include/Ice/ObjectF.h +8 -3
  85. data/ext/ice/cpp/include/Ice/ObserverHelper.h +18 -8
  86. data/ext/ice/cpp/include/Ice/Optional.h +1084 -0
  87. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +655 -84
  88. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +12 -6
  89. data/ext/ice/cpp/include/Ice/OutputStream.h +753 -0
  90. data/ext/ice/cpp/include/Ice/Protocol.h +19 -12
  91. data/ext/ice/cpp/include/Ice/Proxy.h +1329 -717
  92. data/ext/ice/cpp/include/Ice/ProxyF.h +11 -33
  93. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
  94. data/ext/ice/cpp/include/Ice/ProxyHandle.h +34 -50
  95. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
  96. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +22 -3
  97. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +10 -4
  98. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +6 -1
  99. data/ext/ice/cpp/include/{IceUtil → Ice}/SHA1.h +16 -16
  100. data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
  101. data/ext/ice/cpp/include/Ice/Service.h +13 -18
  102. data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
  103. data/ext/ice/cpp/include/Ice/SlicedData.h +46 -20
  104. data/ext/ice/cpp/include/Ice/SlicedDataF.h +14 -6
  105. data/ext/ice/cpp/include/Ice/StreamHelpers.h +159 -49
  106. data/ext/ice/cpp/include/Ice/StringConverter.h +52 -0
  107. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
  108. data/{slice/Ice/ObjectFactoryF.ice → ext/ice/cpp/include/Ice/UUID.h} +9 -7
  109. data/ext/ice/cpp/include/{IceUtil → Ice}/UniquePtr.h +21 -22
  110. data/ext/ice/cpp/include/Ice/UniqueRef.h +98 -0
  111. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +40 -8
  112. data/ext/ice/cpp/include/Ice/Value.h +104 -0
  113. data/{slice/Freeze/ConnectionF.ice → ext/ice/cpp/include/Ice/ValueF.h} +11 -7
  114. data/ext/ice/cpp/include/IceSSL/Config.h +8 -23
  115. data/ext/ice/cpp/include/IceSSL/IceSSL.h +17 -6
  116. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +130 -0
  117. data/ext/ice/cpp/include/IceSSL/Plugin.h +172 -259
  118. data/ext/ice/cpp/include/IceSSL/SChannel.h +66 -0
  119. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +66 -0
  120. data/ext/ice/cpp/include/IceSSL/UWP.h +58 -0
  121. data/ext/ice/cpp/include/IceUtil/Atomic.h +8 -10
  122. data/ext/ice/cpp/include/IceUtil/Cond.h +17 -18
  123. data/ext/ice/cpp/include/IceUtil/Config.h +138 -39
  124. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +97 -0
  125. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +5 -5
  126. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +23 -17
  127. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -3
  128. data/ext/ice/cpp/include/IceUtil/Exception.h +157 -67
  129. data/ext/ice/cpp/include/IceUtil/FileUtil.h +148 -0
  130. data/ext/ice/cpp/include/IceUtil/Functional.h +1 -2
  131. data/ext/ice/cpp/include/IceUtil/Handle.h +11 -11
  132. data/ext/ice/cpp/include/IceUtil/IceUtil.h +4 -10
  133. data/ext/ice/cpp/include/IceUtil/InputUtil.h +3 -3
  134. data/ext/ice/cpp/include/IceUtil/Iterator.h +2 -2
  135. data/ext/ice/cpp/include/IceUtil/Lock.h +8 -10
  136. data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -2
  137. data/ext/ice/cpp/include/IceUtil/Mutex.h +17 -11
  138. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +2 -2
  139. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
  140. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +4 -4
  141. data/ext/ice/cpp/include/IceUtil/Optional.h +32 -18
  142. data/ext/ice/cpp/include/IceUtil/Options.h +17 -18
  143. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +55 -29
  144. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +6 -6
  145. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +11 -10
  146. data/ext/ice/cpp/include/IceUtil/Random.h +3 -3
  147. data/ext/ice/cpp/include/IceUtil/RecMutex.h +7 -8
  148. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +58 -0
  149. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +1 -9
  150. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +8 -2
  151. data/ext/ice/cpp/include/IceUtil/Shared.h +5 -7
  152. data/ext/ice/cpp/{src → include}/IceUtil/StopWatch.h +2 -2
  153. data/ext/ice/cpp/include/IceUtil/StringConverter.h +77 -72
  154. data/ext/ice/cpp/include/IceUtil/StringUtil.h +32 -21
  155. data/ext/ice/cpp/include/IceUtil/Thread.h +10 -12
  156. data/ext/ice/cpp/include/IceUtil/ThreadException.h +33 -42
  157. data/ext/ice/cpp/include/IceUtil/Time.h +3 -3
  158. data/ext/ice/cpp/include/IceUtil/Timer.h +14 -13
  159. data/ext/ice/cpp/include/IceUtil/UUID.h +2 -2
  160. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
  161. data/ext/ice/cpp/include/{Ice → generated/Ice}/BuiltinSequences.h +41 -8
  162. data/ext/ice/cpp/include/generated/Ice/Communicator.h +364 -0
  163. data/ext/ice/cpp/include/{Ice → generated/Ice}/CommunicatorF.h +40 -8
  164. data/ext/ice/cpp/include/generated/Ice/Connection.h +872 -0
  165. data/ext/ice/cpp/include/{Ice → generated/Ice}/ConnectionF.h +46 -8
  166. data/ext/ice/cpp/include/{Ice → generated/Ice}/Current.h +71 -8
  167. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +582 -0
  168. data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointF.h +62 -8
  169. data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointTypes.h +31 -16
  170. data/ext/ice/cpp/include/{Ice → generated/Ice}/FacetMap.h +23 -8
  171. data/ext/ice/cpp/include/generated/Ice/Identity.h +221 -0
  172. data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContext.h +72 -13
  173. data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContextF.h +40 -8
  174. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +602 -0
  175. data/ext/ice/cpp/include/{Ice → generated/Ice}/InstrumentationF.h +54 -8
  176. data/ext/ice/cpp/include/generated/Ice/LocalException.h +2802 -0
  177. data/ext/ice/cpp/include/generated/Ice/Locator.h +2036 -0
  178. data/ext/ice/cpp/include/{Ice → generated/Ice}/LocatorF.h +53 -12
  179. data/ext/ice/cpp/include/{Ice → generated/Ice}/Logger.h +71 -13
  180. data/ext/ice/cpp/include/{Ice → generated/Ice}/LoggerF.h +40 -8
  181. data/ext/ice/cpp/include/generated/Ice/Metrics.h +2649 -0
  182. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +302 -0
  183. data/ext/ice/cpp/include/{Ice → generated/Ice}/ObjectAdapterF.h +40 -8
  184. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +142 -0
  185. data/ext/ice/cpp/include/generated/Ice/Plugin.h +197 -0
  186. data/ext/ice/cpp/include/{Ice → generated/Ice}/PluginF.h +43 -8
  187. data/ext/ice/cpp/include/generated/Ice/Process.h +536 -0
  188. data/ext/ice/cpp/include/{Ice → generated/Ice}/ProcessF.h +45 -10
  189. data/ext/ice/cpp/include/{Ice → generated/Ice}/Properties.h +88 -21
  190. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +749 -0
  191. data/ext/ice/cpp/include/{Ice → generated/Ice}/PropertiesF.h +48 -10
  192. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1449 -0
  193. data/ext/ice/cpp/include/generated/Ice/Router.h +1032 -0
  194. data/ext/ice/cpp/include/{Ice → generated/Ice}/RouterF.h +45 -10
  195. data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocator.h +65 -13
  196. data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocatorF.h +40 -8
  197. data/ext/ice/cpp/include/{Ice → generated/Ice}/SliceChecksumDict.h +23 -8
  198. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +169 -0
  199. data/ext/ice/cpp/include/generated/Ice/Version.h +334 -0
  200. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +172 -0
  201. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +98 -0
  202. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +156 -0
  203. data/ext/ice/cpp/src/Ice/ACM.cpp +18 -14
  204. data/ext/ice/cpp/src/Ice/ACM.h +9 -2
  205. data/ext/ice/cpp/{include → src}/Ice/ACMF.h +10 -5
  206. data/ext/ice/cpp/src/Ice/Acceptor.cpp +6 -1
  207. data/ext/ice/cpp/src/Ice/Acceptor.h +4 -3
  208. data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
  209. data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.cpp +9 -9
  210. data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.h +7 -7
  211. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +15 -538
  212. data/ext/ice/cpp/src/Ice/Base64.cpp +11 -11
  213. data/ext/ice/cpp/src/Ice/Base64.h +1 -1
  214. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +40 -12
  215. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +15 -10
  216. data/ext/ice/cpp/src/Ice/Buffer.cpp +74 -12
  217. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +20 -6
  218. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +85 -190
  219. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +17 -18
  220. data/ext/ice/cpp/src/Ice/Communicator.cpp +39 -8
  221. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +27 -5
  222. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +271 -104
  223. data/ext/ice/cpp/src/Ice/CommunicatorI.h +84 -28
  224. data/ext/ice/cpp/src/{IceUtil → Ice}/Cond.cpp +3 -3
  225. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +58 -125
  226. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +11 -22
  227. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +6 -2
  228. data/ext/ice/cpp/src/Ice/Connection.cpp +88 -8
  229. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +27 -5
  230. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +158 -80
  231. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +41 -23
  232. data/ext/ice/cpp/{include → src}/Ice/ConnectionFactoryF.h +8 -3
  233. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +707 -653
  234. data/ext/ice/cpp/src/Ice/ConnectionI.h +97 -69
  235. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +2 -15
  236. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +4 -3
  237. data/ext/ice/cpp/src/Ice/Connector.cpp +6 -1
  238. data/ext/ice/cpp/src/Ice/Connector.h +4 -3
  239. data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
  240. data/ext/ice/cpp/src/{IceUtil → Ice}/CountDownLatch.cpp +4 -4
  241. data/ext/ice/cpp/src/Ice/Current.cpp +29 -6
  242. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +6 -5
  243. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
  244. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
  245. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +5 -25
  246. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +29 -19
  247. data/ext/ice/cpp/src/Ice/Endpoint.cpp +85 -6
  248. data/ext/ice/cpp/src/Ice/EndpointF.cpp +27 -5
  249. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +152 -1
  250. data/ext/ice/cpp/src/Ice/EndpointFactory.h +72 -6
  251. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
  252. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +35 -19
  253. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +10 -4
  254. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
  255. data/ext/ice/cpp/src/Ice/EndpointI.cpp +17 -1
  256. data/ext/ice/cpp/src/Ice/EndpointI.h +35 -9
  257. data/ext/ice/cpp/src/Ice/EndpointIF.h +18 -5
  258. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +18 -6
  259. data/ext/ice/cpp/src/Ice/EventHandler.cpp +6 -4
  260. data/ext/ice/cpp/src/Ice/EventHandler.h +13 -8
  261. data/ext/ice/cpp/src/Ice/EventHandlerF.h +5 -2
  262. data/ext/ice/cpp/src/Ice/Exception.cpp +95 -86
  263. data/ext/ice/cpp/src/Ice/FacetMap.cpp +20 -6
  264. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +37 -28
  265. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -4
  266. data/ext/ice/cpp/src/Ice/GCObject.cpp +28 -25
  267. data/ext/ice/cpp/src/Ice/HashUtil.h +2 -3
  268. data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -2
  269. data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
  270. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +92 -53
  271. data/ext/ice/cpp/src/Ice/IPEndpointI.h +19 -10
  272. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +6 -2
  273. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +56 -0
  274. data/ext/ice/cpp/src/Ice/Identity.cpp +24 -10
  275. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +37 -6
  276. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +27 -5
  277. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +14 -14
  278. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +7 -5
  279. data/ext/ice/cpp/src/Ice/Incoming.cpp +276 -245
  280. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +104 -209
  281. data/ext/ice/cpp/src/Ice/IncomingRequest.h +5 -4
  282. data/ext/ice/cpp/src/Ice/Initialize.cpp +299 -172
  283. data/ext/ice/cpp/src/Ice/InputStream.cpp +2773 -0
  284. data/ext/ice/cpp/src/Ice/Instance.cpp +191 -231
  285. data/ext/ice/cpp/src/Ice/Instance.h +30 -18
  286. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +106 -7
  287. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +27 -5
  288. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +117 -99
  289. data/ext/ice/cpp/src/Ice/InstrumentationI.h +30 -31
  290. data/ext/ice/cpp/src/Ice/LocalException.cpp +1190 -416
  291. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -2
  292. data/ext/ice/cpp/src/Ice/Locator.cpp +1167 -1215
  293. data/ext/ice/cpp/src/Ice/LocatorF.cpp +29 -6
  294. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +129 -163
  295. data/ext/ice/cpp/src/Ice/LocatorInfo.h +29 -29
  296. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
  297. data/ext/ice/cpp/src/Ice/Logger.cpp +35 -5
  298. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +178 -73
  299. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +4 -4
  300. data/ext/ice/cpp/src/Ice/LoggerF.cpp +27 -5
  301. data/ext/ice/cpp/src/Ice/LoggerI.cpp +14 -44
  302. data/ext/ice/cpp/src/Ice/LoggerI.h +7 -13
  303. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +10 -12
  304. data/ext/ice/cpp/src/Ice/Metrics.cpp +1059 -1069
  305. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +49 -19
  306. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -2
  307. data/ext/ice/cpp/src/Ice/Network.cpp +534 -170
  308. data/ext/ice/cpp/src/Ice/Network.h +100 -23
  309. data/ext/ice/cpp/src/Ice/NetworkF.h +2 -2
  310. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +21 -14
  311. data/ext/ice/cpp/src/Ice/NetworkProxy.h +5 -2
  312. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
  313. data/ext/ice/cpp/src/Ice/Object.cpp +217 -221
  314. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -6
  315. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +27 -5
  316. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +35 -14
  317. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +13 -7
  318. data/ext/ice/cpp/{include → src}/Ice/ObjectAdapterFactoryF.h +5 -1
  319. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +184 -58
  320. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +32 -26
  321. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +37 -6
  322. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +9 -32
  323. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +40 -18
  324. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +14 -5
  325. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +803 -365
  326. data/ext/ice/cpp/src/Ice/OutputStream.cpp +1399 -0
  327. data/ext/ice/cpp/src/Ice/Plugin.cpp +45 -6
  328. data/ext/ice/cpp/src/Ice/PluginF.cpp +27 -5
  329. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +13 -13
  330. data/ext/ice/cpp/src/Ice/PluginManagerI.h +5 -6
  331. data/ext/ice/cpp/src/Ice/Process.cpp +256 -114
  332. data/ext/ice/cpp/src/Ice/ProcessF.cpp +29 -6
  333. data/ext/ice/cpp/src/Ice/Properties.cpp +38 -8
  334. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +340 -328
  335. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +81 -17
  336. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +29 -5
  337. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +29 -6
  338. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +25 -26
  339. data/ext/ice/cpp/src/Ice/PropertiesI.h +8 -11
  340. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +107 -50
  341. data/ext/ice/cpp/src/Ice/PropertyNames.h +4 -2
  342. data/ext/ice/cpp/src/Ice/Protocol.cpp +2 -2
  343. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +37 -2
  344. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +9 -20
  345. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
  346. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +6 -1
  347. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +3 -1
  348. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
  349. data/ext/ice/cpp/src/Ice/Proxy.cpp +690 -964
  350. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +23 -32
  351. data/ext/ice/cpp/src/Ice/ProxyFactory.h +16 -11
  352. data/ext/ice/cpp/src/Ice/Reference.cpp +75 -69
  353. data/ext/ice/cpp/src/Ice/Reference.h +27 -22
  354. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +18 -21
  355. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +12 -12
  356. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
  357. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +18 -4
  358. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
  359. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +672 -552
  360. data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
  361. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +5 -3
  362. data/ext/ice/cpp/src/Ice/RequestHandler.h +10 -13
  363. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +10 -6
  364. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +2 -2
  365. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +3 -6
  366. data/ext/ice/cpp/src/Ice/ResponseHandler.h +16 -7
  367. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +6 -12
  368. data/ext/ice/cpp/src/Ice/RetryQueue.h +7 -6
  369. data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
  370. data/ext/ice/cpp/src/Ice/Router.cpp +523 -474
  371. data/ext/ice/cpp/src/Ice/RouterF.cpp +29 -6
  372. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +91 -70
  373. data/ext/ice/cpp/src/Ice/RouterInfo.h +43 -32
  374. data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
  375. data/ext/ice/cpp/src/{IceUtil → Ice}/SHA1.cpp +21 -21
  376. data/ext/ice/cpp/src/Ice/Selector.cpp +989 -923
  377. data/ext/ice/cpp/src/Ice/Selector.h +100 -147
  378. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +37 -6
  379. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +27 -5
  380. data/ext/ice/cpp/src/Ice/ServantManager.cpp +9 -9
  381. data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
  382. data/ext/ice/cpp/src/Ice/SharedContext.h +2 -2
  383. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +20 -6
  384. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +2 -2
  385. data/ext/ice/cpp/src/Ice/SlicedData.cpp +72 -20
  386. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +173 -18
  387. data/ext/ice/cpp/src/Ice/StreamSocket.h +13 -4
  388. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +48 -17
  389. data/ext/ice/cpp/src/Ice/StringUtil.h +35 -0
  390. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +8 -4
  391. data/ext/ice/cpp/src/Ice/SysLoggerI.h +2 -3
  392. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +158 -32
  393. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +12 -5
  394. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -7
  395. data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -2
  396. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +40 -32
  397. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +11 -8
  398. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +12 -27
  399. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -10
  400. data/ext/ice/cpp/src/{IceUtil → Ice}/Thread.cpp +24 -41
  401. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +175 -267
  402. data/ext/ice/cpp/src/Ice/ThreadPool.h +38 -43
  403. data/ext/ice/cpp/src/{IceUtil → Ice}/Timer.cpp +28 -21
  404. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
  405. data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
  406. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +2 -2
  407. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +53 -31
  408. data/ext/ice/cpp/src/Ice/TraceUtil.h +13 -6
  409. data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -2
  410. data/ext/ice/cpp/src/Ice/Transceiver.h +8 -7
  411. data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
  412. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +2 -8
  413. data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -2
  414. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +92 -31
  415. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +12 -4
  416. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +150 -179
  417. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +15 -17
  418. data/ext/ice/cpp/src/Ice/Value.cpp +81 -0
  419. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +84 -0
  420. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +70 -0
  421. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +42 -0
  422. data/ext/ice/cpp/src/Ice/Version.cpp +24 -14
  423. data/ext/ice/cpp/src/Ice/VirtualShared.h +43 -0
  424. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +3 -9
  425. data/ext/ice/cpp/src/Ice/WSAcceptor.h +3 -7
  426. data/ext/ice/cpp/src/Ice/WSConnector.cpp +5 -11
  427. data/ext/ice/cpp/src/Ice/WSConnector.h +3 -6
  428. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +185 -80
  429. data/ext/ice/cpp/src/Ice/WSEndpoint.h +21 -31
  430. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +41 -37
  431. data/ext/ice/cpp/src/Ice/WSTransceiver.h +7 -21
  432. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +526 -264
  433. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +341 -455
  434. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +86 -26
  435. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +59 -23
  436. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +315 -61
  437. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +83 -36
  438. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +57 -59
  439. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +3 -3
  440. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +396 -159
  441. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +251 -355
  442. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +52 -0
  443. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +526 -131
  444. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +19 -165
  445. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +8 -17
  446. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +284 -0
  447. data/ext/ice/cpp/src/IceSSL/CertificateI.h +69 -0
  448. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +39 -11
  449. data/ext/ice/cpp/src/{Ice/ObjectFactoryF.cpp → IceSSL/ConnectionInfoF.cpp} +31 -9
  450. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +14 -56
  451. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +6 -13
  452. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +205 -197
  453. data/ext/ice/cpp/src/IceSSL/EndpointI.h +41 -33
  454. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +39 -10
  455. data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
  456. data/ext/ice/cpp/src/IceSSL/Instance.h +7 -7
  457. data/ext/ice/cpp/src/IceSSL/InstanceF.h +11 -7
  458. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +588 -0
  459. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +117 -152
  460. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +64 -0
  461. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +32 -0
  462. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +132 -0
  463. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +400 -89
  464. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +36 -21
  465. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +291 -0
  466. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +63 -0
  467. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +71 -41
  468. data/ext/ice/cpp/src/IceSSL/PluginI.h +13 -18
  469. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +9 -54
  470. data/ext/ice/cpp/src/IceSSL/RFC2253.h +7 -7
  471. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +585 -0
  472. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +491 -75
  473. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +126 -0
  474. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +32 -0
  475. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +78 -0
  476. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +126 -169
  477. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +19 -22
  478. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +79 -74
  479. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +24 -187
  480. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +4 -19
  481. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +862 -0
  482. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +56 -214
  483. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +60 -0
  484. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +31 -0
  485. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +80 -0
  486. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +137 -144
  487. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +25 -28
  488. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +857 -0
  489. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +46 -0
  490. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +9 -13
  491. data/ext/ice/cpp/src/IceSSL/TrustManager.h +4 -4
  492. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +3 -3
  493. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +271 -0
  494. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +343 -0
  495. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +46 -0
  496. data/ext/ice/cpp/{include/Ice/ObjectFactoryManagerF.h → src/IceSSL/UWPEngineF.h} +13 -8
  497. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +94 -0
  498. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +388 -0
  499. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +76 -0
  500. data/ext/ice/cpp/src/IceSSL/Util.cpp +66 -1256
  501. data/ext/ice/cpp/src/IceSSL/Util.h +48 -137
  502. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +162 -0
  503. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +22 -22
  504. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +34 -26
  505. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +20 -31
  506. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +25 -116
  507. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
  508. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
  509. data/ext/ice/cpp/src/IceUtil/Options.cpp +23 -46
  510. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +7 -6
  511. data/ext/ice/cpp/src/IceUtil/Random.cpp +13 -13
  512. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +3 -9
  513. data/ext/ice/cpp/src/IceUtil/Shared.cpp +8 -3
  514. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +501 -264
  515. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +540 -235
  516. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +37 -74
  517. data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
  518. data/ext/ice/cpp/src/IceUtil/UUID.cpp +10 -10
  519. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +98 -97
  520. data/ext/ice/cpp/src/IceUtil/Unicode.h +21 -35
  521. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +838 -0
  522. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +815 -163
  523. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +76 -0
  524. data/ext/ice/cpp/src/Slice/Checksum.cpp +2 -2
  525. data/ext/ice/cpp/{include → src}/Slice/Checksum.h +2 -2
  526. data/ext/ice/cpp/src/Slice/FileTracker.cpp +25 -78
  527. data/ext/ice/cpp/{include → src}/Slice/FileTracker.h +9 -9
  528. data/ext/ice/cpp/src/Slice/Grammar.cpp +1994 -1943
  529. data/ext/ice/cpp/src/Slice/Grammar.h +44 -24
  530. data/ext/ice/cpp/src/Slice/GrammarUtil.h +14 -14
  531. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +2658 -1927
  532. data/ext/ice/cpp/{include → src}/Slice/JavaUtil.h +178 -59
  533. data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
  534. data/ext/ice/cpp/src/Slice/MD5.h +1 -1
  535. data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -1
  536. data/ext/ice/cpp/src/Slice/MD5I.h +1 -1
  537. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +12 -15
  538. data/ext/ice/cpp/{include → src}/Slice/PHPUtil.h +6 -15
  539. data/ext/ice/cpp/src/Slice/Parser.cpp +802 -307
  540. data/ext/ice/cpp/{include → src}/Slice/Parser.h +76 -84
  541. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +43 -21
  542. data/ext/ice/cpp/{include → src}/Slice/Preprocessor.h +7 -12
  543. data/ext/ice/cpp/src/Slice/Python.cpp +207 -86
  544. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +683 -679
  545. data/ext/ice/cpp/{include → src}/Slice/PythonUtil.h +19 -8
  546. data/ext/ice/cpp/src/Slice/Ruby.cpp +38 -34
  547. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +177 -445
  548. data/ext/ice/cpp/{include → src}/Slice/RubyUtil.h +6 -6
  549. data/ext/ice/cpp/src/Slice/Scanner.cpp +218 -306
  550. data/ext/ice/cpp/src/Slice/{Util.cpp → SliceUtil.cpp} +37 -64
  551. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +374 -0
  552. data/ext/ice/cpp/src/Slice/Util.h +54 -0
  553. data/ext/ice/mcpp/Makefile +5 -2
  554. data/ice.gemspec +2 -7
  555. data/lib/Glacier2.rb +1 -1
  556. data/lib/Glacier2/Metrics.rb +7 -46
  557. data/lib/Glacier2/PermissionsVerifier.rb +24 -95
  558. data/lib/Glacier2/PermissionsVerifierF.rb +3 -3
  559. data/lib/Glacier2/Router.rb +32 -74
  560. data/lib/Glacier2/RouterF.rb +3 -3
  561. data/lib/Glacier2/SSLInfo.rb +4 -7
  562. data/lib/Glacier2/Session.rb +88 -307
  563. data/lib/Ice.rb +83 -52
  564. data/lib/Ice/BuiltinSequences.rb +4 -4
  565. data/lib/Ice/Communicator.rb +56 -58
  566. data/lib/Ice/CommunicatorF.rb +3 -3
  567. data/lib/Ice/Connection.rb +153 -162
  568. data/lib/Ice/ConnectionF.rb +3 -3
  569. data/lib/Ice/Current.rb +4 -11
  570. data/lib/Ice/Endpoint.rb +57 -133
  571. data/lib/Ice/EndpointF.rb +3 -3
  572. data/lib/Ice/EndpointTypes.rb +3 -7
  573. data/lib/Ice/FacetMap.rb +4 -4
  574. data/lib/Ice/Identity.rb +5 -8
  575. data/lib/Ice/ImplicitContext.rb +5 -34
  576. data/lib/Ice/ImplicitContextF.rb +3 -3
  577. data/lib/Ice/Instrumentation.rb +23 -275
  578. data/lib/Ice/InstrumentationF.rb +3 -3
  579. data/lib/Ice/LocalException.rb +95 -141
  580. data/lib/Ice/Locator.rb +51 -165
  581. data/lib/Ice/LocatorF.rb +3 -3
  582. data/lib/Ice/Logger.rb +5 -34
  583. data/lib/Ice/LoggerF.rb +3 -3
  584. data/lib/Ice/Metrics.rb +61 -416
  585. data/lib/Ice/ObjectAdapter.rb +34 -0
  586. data/lib/Ice/ObjectAdapterF.rb +3 -3
  587. data/lib/Ice/ObjectFactory.rb +5 -30
  588. data/lib/Ice/Plugin.rb +7 -60
  589. data/lib/Ice/PluginF.rb +3 -3
  590. data/lib/Ice/Process.rb +16 -52
  591. data/lib/Ice/ProcessF.rb +3 -3
  592. data/lib/Ice/Properties.rb +5 -41
  593. data/lib/Ice/PropertiesAdmin.rb +19 -56
  594. data/lib/Ice/PropertiesF.rb +3 -3
  595. data/lib/Ice/RemoteLogger.rb +34 -115
  596. data/lib/Ice/Router.rb +29 -101
  597. data/lib/Ice/RouterF.rb +3 -3
  598. data/lib/Ice/ServantLocator.rb +31 -0
  599. data/lib/Ice/{ObjectFactoryF.rb → ServantLocatorF.rb} +6 -6
  600. data/lib/Ice/SliceChecksumDict.rb +3 -3
  601. data/lib/Ice/ValueFactory.rb +33 -0
  602. data/lib/Ice/Version.rb +5 -11
  603. data/lib/IceBox.rb +1 -1
  604. data/lib/IceBox/IceBox.rb +44 -148
  605. data/lib/IceGrid.rb +1 -4
  606. data/lib/IceGrid/Admin.rb +551 -427
  607. data/lib/IceGrid/Descriptor.rb +62 -529
  608. data/lib/IceGrid/Exception.rb +24 -45
  609. data/lib/IceGrid/FileParser.rb +14 -50
  610. data/lib/IceGrid/PluginFacade.rb +40 -0
  611. data/lib/IceGrid/Registry.rb +151 -58
  612. data/lib/IceGrid/Session.rb +25 -64
  613. data/lib/IceGrid/UserAccountMapper.rb +14 -50
  614. data/lib/IcePatch2.rb +1 -1
  615. data/lib/IcePatch2/FileInfo.rb +5 -11
  616. data/lib/IcePatch2/FileServer.rb +33 -76
  617. data/lib/IceStorm.rb +1 -1
  618. data/lib/IceStorm/IceStorm.rb +79 -206
  619. data/lib/IceStorm/Metrics.rb +11 -89
  620. data/slice/Glacier2/Metrics.ice +8 -4
  621. data/slice/Glacier2/PermissionsVerifier.ice +10 -7
  622. data/slice/Glacier2/PermissionsVerifierF.ice +7 -4
  623. data/slice/Glacier2/Router.ice +10 -8
  624. data/slice/Glacier2/RouterF.ice +7 -4
  625. data/slice/Glacier2/SSLInfo.ice +8 -5
  626. data/slice/Glacier2/Session.ice +15 -13
  627. data/slice/Ice/BuiltinSequences.ice +7 -4
  628. data/slice/Ice/Communicator.ice +141 -66
  629. data/slice/Ice/CommunicatorF.ice +7 -4
  630. data/slice/Ice/Connection.ice +183 -86
  631. data/slice/Ice/ConnectionF.ice +7 -4
  632. data/slice/Ice/Current.ice +13 -9
  633. data/slice/Ice/Endpoint.ice +63 -14
  634. data/slice/Ice/EndpointF.ice +7 -4
  635. data/slice/Ice/EndpointTypes.ice +8 -6
  636. data/slice/Ice/FacetMap.ice +7 -4
  637. data/slice/Ice/Identity.ice +13 -5
  638. data/slice/Ice/ImplicitContext.ice +20 -18
  639. data/slice/Ice/ImplicitContextF.ice +7 -4
  640. data/slice/Ice/Instrumentation.ice +20 -19
  641. data/slice/Ice/InstrumentationF.ice +8 -5
  642. data/slice/Ice/LocalException.ice +87 -87
  643. data/slice/Ice/Locator.ice +19 -18
  644. data/slice/Ice/LocatorF.ice +7 -4
  645. data/slice/Ice/Logger.ice +9 -7
  646. data/slice/Ice/LoggerF.ice +7 -4
  647. data/slice/Ice/Metrics.ice +18 -14
  648. data/slice/Ice/ObjectAdapter.ice +30 -13
  649. data/slice/Ice/ObjectAdapterF.ice +7 -4
  650. data/slice/Ice/ObjectFactory.ice +15 -12
  651. data/slice/Ice/Plugin.ice +9 -6
  652. data/slice/Ice/PluginF.ice +8 -5
  653. data/slice/Ice/Process.ice +9 -6
  654. data/slice/Ice/ProcessF.ice +7 -4
  655. data/slice/Ice/Properties.ice +15 -12
  656. data/slice/Ice/PropertiesAdmin.ice +9 -5
  657. data/slice/Ice/PropertiesF.ice +7 -4
  658. data/slice/Ice/RemoteLogger.ice +33 -24
  659. data/slice/Ice/Router.ice +16 -7
  660. data/slice/Ice/RouterF.ice +7 -4
  661. data/slice/Ice/ServantLocator.ice +13 -10
  662. data/slice/Ice/ServantLocatorF.ice +7 -4
  663. data/slice/Ice/SliceChecksumDict.ice +7 -4
  664. data/slice/Ice/ValueFactory.ice +127 -0
  665. data/slice/Ice/Version.ice +9 -5
  666. data/slice/IceBT/ConnectionInfo.ice +53 -0
  667. data/slice/IceBT/EndpointInfo.ice +51 -0
  668. data/slice/IceBT/Types.ice +39 -0
  669. data/slice/IceBox/IceBox.ice +20 -21
  670. data/slice/IceDiscovery/IceDiscovery.ice +9 -5
  671. data/slice/IceGrid/Admin.ice +390 -30
  672. data/slice/IceGrid/Descriptor.ice +37 -29
  673. data/slice/IceGrid/Exception.ice +33 -27
  674. data/slice/IceGrid/FileParser.ice +9 -6
  675. data/slice/IceGrid/PluginFacade.ice +11 -9
  676. data/slice/IceGrid/Registry.ice +139 -16
  677. data/slice/IceGrid/Session.ice +10 -8
  678. data/slice/IceGrid/UserAccountMapper.ice +9 -6
  679. data/slice/IceIAP/ConnectionInfo.ice +70 -0
  680. data/slice/IceIAP/EndpointInfo.ice +64 -0
  681. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +9 -7
  682. data/slice/IcePatch2/FileInfo.ice +9 -8
  683. data/slice/IcePatch2/FileServer.ice +17 -13
  684. data/slice/IceSSL/ConnectionInfo.ice +14 -17
  685. data/slice/IceSSL/ConnectionInfoF.ice +24 -0
  686. data/slice/IceSSL/EndpointInfo.ice +9 -30
  687. data/slice/IceStorm/IceStorm.ice +22 -18
  688. data/slice/IceStorm/Metrics.ice +9 -5
  689. metadata +154 -120
  690. data/ext/ObjectFactory.cpp +0 -140
  691. data/ext/ObjectFactory.h +0 -50
  692. data/ext/ice/cpp/include/Ice/BasicStream.h +0 -1335
  693. data/ext/ice/cpp/include/Ice/Communicator.h +0 -200
  694. data/ext/ice/cpp/include/Ice/Connection.h +0 -497
  695. data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +0 -62
  696. data/ext/ice/cpp/include/Ice/Endpoint.h +0 -341
  697. data/ext/ice/cpp/include/Ice/Identity.h +0 -168
  698. data/ext/ice/cpp/include/Ice/Instrumentation.h +0 -365
  699. data/ext/ice/cpp/include/Ice/LocalException.h +0 -1030
  700. data/ext/ice/cpp/include/Ice/Locator.h +0 -2193
  701. data/ext/ice/cpp/include/Ice/Metrics.h +0 -2974
  702. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +0 -168
  703. data/ext/ice/cpp/include/Ice/ObjectFactory.h +0 -92
  704. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +0 -66
  705. data/ext/ice/cpp/include/Ice/Outgoing.h +0 -225
  706. data/ext/ice/cpp/include/Ice/Plugin.h +0 -125
  707. data/ext/ice/cpp/include/Ice/Process.h +0 -574
  708. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +0 -830
  709. data/ext/ice/cpp/include/Ice/RemoteLogger.h +0 -1500
  710. data/ext/ice/cpp/include/Ice/Router.h +0 -1159
  711. data/ext/ice/cpp/include/Ice/Stream.h +0 -447
  712. data/ext/ice/cpp/include/Ice/StreamF.h +0 -30
  713. data/ext/ice/cpp/include/Ice/Version.h +0 -262
  714. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +0 -158
  715. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +0 -142
  716. data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +0 -119
  717. data/ext/ice/cpp/include/IceUtil/Cache.h +0 -362
  718. data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +0 -65
  719. data/ext/ice/cpp/include/Slice/CsUtil.h +0 -92
  720. data/ext/ice/cpp/include/Slice/DotNetNames.h +0 -34
  721. data/ext/ice/cpp/include/Slice/ObjCUtil.h +0 -127
  722. data/ext/ice/cpp/include/Slice/Util.h +0 -56
  723. data/ext/ice/cpp/src/Ice/BasicStream.cpp +0 -3428
  724. data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +0 -62
  725. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +0 -139
  726. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +0 -43
  727. data/ext/ice/cpp/src/Ice/Outgoing.cpp +0 -694
  728. data/ext/ice/cpp/src/Ice/Stream.cpp +0 -53
  729. data/ext/ice/cpp/src/Ice/StreamI.cpp +0 -832
  730. data/ext/ice/cpp/src/Ice/StreamI.h +0 -198
  731. data/ext/ice/cpp/src/IceSSL/Certificate.cpp +0 -1336
  732. data/ext/ice/cpp/src/IceUtil/Exception.cpp +0 -792
  733. data/ext/ice/cpp/src/IceUtil/FileUtil.h +0 -185
  734. data/ext/ice/cpp/src/Slice/CsUtil.cpp +0 -2660
  735. data/ext/ice/cpp/src/Slice/DotNetNames.cpp +0 -146
  736. data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +0 -1310
  737. data/lib/IceGrid/Locator.rb +0 -106
  738. data/lib/IceGrid/Observer.rb +0 -572
  739. data/lib/IceGrid/Query.rb +0 -169
  740. data/slice/Freeze/BackgroundSaveEvictor.ice +0 -111
  741. data/slice/Freeze/CatalogData.ice +0 -49
  742. data/slice/Freeze/Connection.ice +0 -121
  743. data/slice/Freeze/DB.ice +0 -37
  744. data/slice/Freeze/Evictor.ice +0 -346
  745. data/slice/Freeze/EvictorF.ice +0 -22
  746. data/slice/Freeze/EvictorStorage.ice +0 -72
  747. data/slice/Freeze/Exception.ice +0 -100
  748. data/slice/Freeze/Transaction.ice +0 -58
  749. data/slice/Freeze/TransactionalEvictor.ice +0 -50
  750. data/slice/IceGrid/Locator.ice +0 -57
  751. data/slice/IceGrid/Observer.ice +0 -395
  752. data/slice/IceGrid/Query.ice +0 -131
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -12,14 +12,13 @@
12
12
 
13
13
  #include <IceUtil/Monitor.h>
14
14
  #include <IceUtil/Mutex.h>
15
- #include <IceUtil/UniquePtr.h>
15
+ #include <Ice/UniquePtr.h>
16
16
 
17
17
  #include <Ice/ConnectRequestHandlerF.h>
18
18
  #include <Ice/RequestHandler.h>
19
19
  #include <Ice/Reference.h>
20
20
  #include <Ice/RouterInfo.h>
21
21
  #include <Ice/ProxyF.h>
22
- #include <Ice/BasicStream.h>
23
22
 
24
23
  #include <deque>
25
24
  #include <set>
@@ -31,19 +30,19 @@ class ConnectRequestHandler : public RequestHandler,
31
30
  public Reference::GetConnectionCallback,
32
31
  public RouterInfo::AddProxyCallback,
33
32
  public IceUtil::Monitor<IceUtil::Mutex>
33
+ #ifdef ICE_CPP11_MAPPING
34
+ , public std::enable_shared_from_this<ConnectRequestHandler>
35
+ #endif
34
36
  {
35
37
  public:
36
38
 
37
- ConnectRequestHandler(const ReferencePtr&, const Ice::ObjectPrx&);
38
- virtual ~ConnectRequestHandler();
39
+ ConnectRequestHandler(const ReferencePtr&, const Ice::ObjectPrxPtr&);
39
40
 
40
- RequestHandlerPtr connect(const Ice::ObjectPrx&);
41
+ RequestHandlerPtr connect(const Ice::ObjectPrxPtr&);
41
42
  virtual RequestHandlerPtr update(const RequestHandlerPtr&, const RequestHandlerPtr&);
42
43
 
43
- virtual bool sendRequest(ProxyOutgoingBase*);
44
44
  virtual AsyncStatus sendAsyncRequest(const ProxyOutgoingAsyncBasePtr&);
45
45
 
46
- virtual void requestCanceled(OutgoingBase*, const Ice::LocalException&);
47
46
  virtual void asyncRequestCanceled(const OutgoingAsyncBasePtr&, const Ice::LocalException&);
48
47
 
49
48
  virtual Ice::ConnectionIPtr getConnection();
@@ -59,26 +58,16 @@ private:
59
58
  bool initialized();
60
59
  void flushRequests();
61
60
 
62
- struct Request
63
- {
64
- Request() : out(0)
65
- {
66
- }
67
-
68
- ProxyOutgoingBase* out;
69
- ProxyOutgoingAsyncBasePtr outAsync;
70
- };
71
-
72
- Ice::ObjectPrx _proxy;
73
- std::set<Ice::ObjectPrx> _proxies;
61
+ Ice::ObjectPrxPtr _proxy;
62
+ std::set<Ice::ObjectPrxPtr> _proxies;
74
63
 
75
64
  Ice::ConnectionIPtr _connection;
76
65
  bool _compress;
77
- IceUtil::UniquePtr<Ice::LocalException> _exception;
66
+ IceInternal::UniquePtr<Ice::LocalException> _exception;
78
67
  bool _initialized;
79
68
  bool _flushing;
80
69
 
81
- std::deque<Request> _requests;
70
+ std::deque<ProxyOutgoingAsyncBasePtr> _requests;
82
71
 
83
72
  RequestHandlerPtr _requestHandler;
84
73
  };
@@ -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.
@@ -17,8 +17,12 @@ namespace IceInternal
17
17
  {
18
18
 
19
19
  class ConnectRequestHandler;
20
- ICE_API IceUtil::Shared* upCast(ConnectRequestHandler*);
20
+ #ifdef ICE_CPP11_MAPPING
21
+ using ConnectRequestHandlerPtr = ::std::shared_ptr<ConnectRequestHandler>;
22
+ #else
23
+ IceUtil::Shared* upCast(ConnectRequestHandler*);
21
24
  typedef IceInternal::Handle<ConnectRequestHandler> ConnectRequestHandlerPtr;
25
+ #endif
22
26
 
23
27
  }
24
28
 
@@ -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
  //
@@ -23,42 +23,122 @@
23
23
  #endif
24
24
  #include <Ice/Connection.h>
25
25
  #include <IceUtil/PushDisableWarnings.h>
26
- #include <Ice/OutgoingAsync.h>
27
- #include <Ice/BasicStream.h>
28
- #include <IceUtil/Iterator.h>
26
+ #include <Ice/InputStream.h>
27
+ #include <Ice/OutputStream.h>
29
28
  #include <IceUtil/PopDisableWarnings.h>
30
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
+
31
38
  #ifndef ICE_IGNORE_VERSION
32
- # if ICE_INT_VERSION / 100 != 306
39
+ # if ICE_INT_VERSION / 100 != 307
33
40
  # error Ice version mismatch!
34
41
  # endif
35
42
  # if ICE_INT_VERSION % 100 > 50
36
43
  # error Beta header file detected
37
44
  # endif
38
- # if ICE_INT_VERSION % 100 < 5
45
+ # if ICE_INT_VERSION % 100 < 0
39
46
  # error Ice patch level mismatch!
40
47
  # endif
41
48
  #endif
42
49
 
50
+ #ifdef ICE_CPP11_MAPPING // C++11 mapping
51
+
43
52
  namespace
44
53
  {
45
54
 
46
55
  }
47
56
 
57
+ Ice::ConnectionInfo::~ConnectionInfo()
58
+ {
59
+ }
60
+
61
+ Ice::Connection::~Connection()
62
+ {
63
+ }
64
+
65
+ Ice::IPConnectionInfo::~IPConnectionInfo()
66
+ {
67
+ }
68
+
69
+ Ice::TCPConnectionInfo::~TCPConnectionInfo()
70
+ {
71
+ }
72
+
73
+ Ice::UDPConnectionInfo::~UDPConnectionInfo()
74
+ {
75
+ }
76
+
77
+ Ice::WSConnectionInfo::~WSConnectionInfo()
78
+ {
79
+ }
80
+
48
81
  namespace Ice
49
82
  {
50
83
  }
51
84
 
85
+ #else // C++98 mapping
86
+
87
+ namespace
88
+ {
89
+
90
+ }
91
+
92
+ Ice::ConnectionInfo::~ConnectionInfo()
93
+ {
94
+ }
95
+
52
96
  ICE_API ::Ice::LocalObject* Ice::upCast(::Ice::ConnectionInfo* p) { return p; }
53
97
 
54
- ICE_API ::Ice::LocalObject* Ice::upCast(::Ice::ConnectionCallback* p) { return p; }
98
+ Ice::CloseCallback::~CloseCallback()
99
+ {
100
+ }
101
+
102
+ ICE_API ::Ice::LocalObject* Ice::upCast(::Ice::CloseCallback* p) { return p; }
103
+
104
+ Ice::HeartbeatCallback::~HeartbeatCallback()
105
+ {
106
+ }
107
+
108
+ ICE_API ::Ice::LocalObject* Ice::upCast(::Ice::HeartbeatCallback* p) { return p; }
109
+
110
+ Ice::Connection::~Connection()
111
+ {
112
+ }
55
113
 
56
114
  ICE_API ::Ice::LocalObject* Ice::upCast(::Ice::Connection* p) { return p; }
57
115
 
116
+ Ice::IPConnectionInfo::~IPConnectionInfo()
117
+ {
118
+ }
119
+
58
120
  ICE_API ::Ice::LocalObject* Ice::upCast(::Ice::IPConnectionInfo* p) { return p; }
59
121
 
122
+ Ice::TCPConnectionInfo::~TCPConnectionInfo()
123
+ {
124
+ }
125
+
60
126
  ICE_API ::Ice::LocalObject* Ice::upCast(::Ice::TCPConnectionInfo* p) { return p; }
61
127
 
128
+ Ice::UDPConnectionInfo::~UDPConnectionInfo()
129
+ {
130
+ }
131
+
62
132
  ICE_API ::Ice::LocalObject* Ice::upCast(::Ice::UDPConnectionInfo* p) { return p; }
63
133
 
134
+ Ice::WSConnectionInfo::~WSConnectionInfo()
135
+ {
136
+ }
137
+
64
138
  ICE_API ::Ice::LocalObject* Ice::upCast(::Ice::WSConnectionInfo* p) { return p; }
139
+
140
+ namespace Ice
141
+ {
142
+ }
143
+
144
+ #endif
@@ -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
  //
@@ -23,22 +23,44 @@
23
23
  #endif
24
24
  #include <Ice/ConnectionF.h>
25
25
  #include <IceUtil/PushDisableWarnings.h>
26
- #include <IceUtil/Iterator.h>
27
26
  #include <IceUtil/PopDisableWarnings.h>
28
27
 
28
+ #if defined(_MSC_VER)
29
+ # pragma warning(disable:4458) // declaration of ... hides class member
30
+ #elif defined(__clang__)
31
+ # pragma clang diagnostic ignored "-Wshadow"
32
+ #elif defined(__GNUC__)
33
+ # pragma GCC diagnostic ignored "-Wshadow"
34
+ #endif
35
+
29
36
  #ifndef ICE_IGNORE_VERSION
30
- # if ICE_INT_VERSION / 100 != 306
37
+ # if ICE_INT_VERSION / 100 != 307
31
38
  # error Ice version mismatch!
32
39
  # endif
33
40
  # if ICE_INT_VERSION % 100 > 50
34
41
  # error Beta header file detected
35
42
  # endif
36
- # if ICE_INT_VERSION % 100 < 5
43
+ # if ICE_INT_VERSION % 100 < 0
37
44
  # error Ice patch level mismatch!
38
45
  # endif
39
46
  #endif
40
47
 
48
+ #ifdef ICE_CPP11_MAPPING // C++11 mapping
49
+
50
+ namespace
51
+ {
52
+
53
+ }
54
+
55
+ #else // C++98 mapping
56
+
41
57
  namespace
42
58
  {
43
59
 
44
60
  }
61
+
62
+ namespace Ice
63
+ {
64
+ }
65
+
66
+ #endif
@@ -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.
@@ -25,6 +25,7 @@
25
25
  #include <Ice/LocalException.h>
26
26
  #include <Ice/Functional.h>
27
27
  #include <Ice/OutgoingAsync.h>
28
+ #include <Ice/CommunicatorI.h>
28
29
  #include <IceUtil/Random.h>
29
30
  #include <iterator>
30
31
 
@@ -32,8 +33,8 @@
32
33
  namespace IceInternal
33
34
  {
34
35
 
35
- bool registerForBackgroundNotification(IceInternal::IncomingConnectionFactory*);
36
- void unregisterForBackgroundNotification(IceInternal::IncomingConnectionFactory*);
36
+ bool registerForBackgroundNotification(const IceInternal::IncomingConnectionFactoryPtr&);
37
+ void unregisterForBackgroundNotification(const IceInternal::IncomingConnectionFactoryPtr&);
37
38
 
38
39
  }
39
40
  #endif
@@ -44,7 +45,10 @@ using namespace Ice::Instrumentation;
44
45
  using namespace IceInternal;
45
46
 
46
47
  IceUtil::Shared* IceInternal::upCast(OutgoingConnectionFactory* p) { return p; }
48
+
49
+ #ifndef ICE_CPP11_MAPPING
47
50
  IceUtil::Shared* IceInternal::upCast(IncomingConnectionFactory* p) { return p; }
51
+ #endif
48
52
 
49
53
  namespace
50
54
  {
@@ -57,6 +61,38 @@ struct RandomNumberGenerator : public std::unary_function<ptrdiff_t, ptrdiff_t>
57
61
  }
58
62
  };
59
63
 
64
+ #ifdef ICE_CPP11_MAPPING
65
+ template <typename Map> void
66
+ remove(Map& m, const typename Map::key_type& k, const typename Map::mapped_type& v)
67
+ {
68
+ auto pr = m.equal_range(k);
69
+ assert(pr.first != pr.second);
70
+ for(auto q = pr.first; q != pr.second; ++q)
71
+ {
72
+ if(q->second.get() == v.get())
73
+ {
74
+ m.erase(q);
75
+ return;
76
+ }
77
+ }
78
+ assert(false); // Nothing was removed which is an error.
79
+ }
80
+
81
+ template<typename Map, typename Predicate> typename Map::mapped_type
82
+ find(const Map& m, const typename Map::key_type& k, Predicate predicate)
83
+ {
84
+ auto pr = m.equal_range(k);
85
+ for(auto q = pr.first; q != pr.second; ++q)
86
+ {
87
+ if(predicate(q->second))
88
+ {
89
+ return q->second;
90
+ }
91
+ }
92
+ return nullptr;
93
+ }
94
+
95
+ #else
60
96
  template <typename K, typename V> void
61
97
  remove(multimap<K, V>& m, K k, V v)
62
98
  {
@@ -89,6 +125,26 @@ find(const multimap<K,::IceInternal::Handle<V> >& m,
89
125
  }
90
126
  return IceInternal::Handle<V>();
91
127
  }
128
+ #endif
129
+
130
+ class StartAcceptor : public IceUtil::TimerTask
131
+ {
132
+ public:
133
+
134
+ StartAcceptor(const IncomingConnectionFactoryPtr& factory) : _factory(factory)
135
+ {
136
+ }
137
+
138
+ void
139
+ runTimerTask()
140
+ {
141
+ _factory->startAcceptor();
142
+ }
143
+
144
+ private:
145
+
146
+ IncomingConnectionFactoryPtr _factory;
147
+ };
92
148
 
93
149
  }
94
150
 
@@ -173,7 +229,8 @@ IceInternal::OutgoingConnectionFactory::waitUntilFinished()
173
229
  }
174
230
 
175
231
  void
176
- IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpts, bool hasMore,
232
+ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpts,
233
+ bool hasMore,
177
234
  Ice::EndpointSelectionType selType,
178
235
  const CreateConnectionCallbackPtr& callback)
179
236
  {
@@ -203,7 +260,11 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
203
260
  return;
204
261
  }
205
262
 
263
+ #ifdef ICE_CPP11_MAPPING
264
+ auto cb = make_shared<ConnectCallback>(_instance, this, endpoints, hasMore, callback, selType);
265
+ #else
206
266
  ConnectCallbackPtr cb = new ConnectCallback(_instance, this, endpoints, hasMore, callback, selType);
267
+ #endif
207
268
  cb->getConnectors();
208
269
  }
209
270
 
@@ -281,7 +342,8 @@ IceInternal::OutgoingConnectionFactory::removeAdapter(const ObjectAdapterPtr& ad
281
342
  }
282
343
 
283
344
  void
284
- IceInternal::OutgoingConnectionFactory::flushAsyncBatchRequests(const CommunicatorFlushBatchAsyncPtr& outAsync)
345
+ IceInternal::OutgoingConnectionFactory::flushAsyncBatchRequests(const CommunicatorFlushBatchAsyncPtr& outAsync,
346
+ Ice::CompressBatch compress)
285
347
  {
286
348
  list<ConnectionIPtr> c;
287
349
 
@@ -301,7 +363,7 @@ IceInternal::OutgoingConnectionFactory::flushAsyncBatchRequests(const Communicat
301
363
  {
302
364
  try
303
365
  {
304
- outAsync->flushConnection(*p);
366
+ outAsync->flushConnection(*p, compress);
305
367
  }
306
368
  catch(const LocalException&)
307
369
  {
@@ -550,8 +612,8 @@ IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& t
550
612
  throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
551
613
  }
552
614
 
553
- connection = new ConnectionI(_communicator, _instance, _monitor, transceiver, ci.connector,
554
- ci.endpoint->compress(false), 0);
615
+ connection = ConnectionI::create(_communicator, _instance, _monitor, transceiver, ci.connector,
616
+ ci.endpoint->compress(false), ICE_NULLPTR);
555
617
  }
556
618
  catch(const Ice::LocalException&)
557
619
  {
@@ -752,9 +814,9 @@ void
752
814
  IceInternal::OutgoingConnectionFactory::handleException(const LocalException& ex, bool hasMore)
753
815
  {
754
816
  TraceLevelsPtr traceLevels = _instance->traceLevels();
755
- if(traceLevels->retry >= 2)
817
+ if(traceLevels->network >= 2)
756
818
  {
757
- Trace out(_instance->initializationData().logger, traceLevels->retryCat);
819
+ Trace out(_instance->initializationData().logger, traceLevels->networkCat);
758
820
 
759
821
  out << "couldn't resolve endpoint host";
760
822
  if(dynamic_cast<const CommunicatorDestroyedException*>(&ex))
@@ -780,9 +842,9 @@ void
780
842
  IceInternal::OutgoingConnectionFactory::handleConnectionException(const LocalException& ex, bool hasMore)
781
843
  {
782
844
  TraceLevelsPtr traceLevels = _instance->traceLevels();
783
- if(traceLevels->retry >= 2)
845
+ if(traceLevels->network >= 2)
784
846
  {
785
- Trace out(_instance->initializationData().logger, traceLevels->retryCat);
847
+ Trace out(_instance->initializationData().logger, traceLevels->networkCat);
786
848
 
787
849
  out << "connection to endpoint failed";
788
850
  if(dynamic_cast<const CommunicatorDestroyedException*>(&ex))
@@ -832,7 +894,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartComplete
832
894
  }
833
895
 
834
896
  connection->activate();
835
- _factory->finishGetConnection(_connectors, *_iter, connection, this);
897
+ _factory->finishGetConnection(_connectors, *_iter, connection, ICE_SHARED_FROM_THIS);
836
898
  }
837
899
 
838
900
  void
@@ -925,7 +987,8 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextEndpoint()
925
987
  try
926
988
  {
927
989
  assert(_endpointsIter != _endpoints.end());
928
- (*_endpointsIter)->connectors_async(_selType, this);
990
+ (*_endpointsIter)->connectors_async(_selType, ICE_SHARED_FROM_THIS);
991
+
929
992
  }
930
993
  catch(const Ice::LocalException& ex)
931
994
  {
@@ -943,7 +1006,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
943
1006
  // connection.
944
1007
  //
945
1008
  bool compress;
946
- Ice::ConnectionIPtr connection = _factory->getConnection(_connectors, this, compress);
1009
+ Ice::ConnectionIPtr connection = _factory->getConnection(_connectors, ICE_SHARED_FROM_THIS, compress);
947
1010
  if(!connection)
948
1011
  {
949
1012
  //
@@ -991,7 +1054,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
991
1054
  << _iter->connector->toString();
992
1055
  }
993
1056
  Ice::ConnectionIPtr connection = _factory->createConnection(_iter->connector->connect(), *_iter);
994
- connection->start(this);
1057
+ connection->start(ICE_SHARED_FROM_THIS);
995
1058
  }
996
1059
  catch(const Ice::LocalException& ex)
997
1060
  {
@@ -1057,7 +1120,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::removeConnectors(const
1057
1120
  void
1058
1121
  IceInternal::OutgoingConnectionFactory::ConnectCallback::removeFromPending()
1059
1122
  {
1060
- _factory->removeFromPending(this, _connectors);
1123
+ _factory->removeFromPending(ICE_SHARED_FROM_THIS, _connectors);
1061
1124
  }
1062
1125
 
1063
1126
  bool
@@ -1071,14 +1134,14 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailedIm
1071
1134
  {
1072
1135
  if(_observer)
1073
1136
  {
1074
- _observer->failed(ex.ice_name());
1137
+ _observer->failed(ex.ice_id());
1075
1138
  _observer->detach();
1076
1139
  }
1077
1140
 
1078
1141
  _factory->handleConnectionException(ex, _hasMore || _iter != _connectors.end() - 1);
1079
1142
  if(dynamic_cast<const Ice::CommunicatorDestroyedException*>(&ex)) // No need to continue.
1080
1143
  {
1081
- _factory->finishGetConnection(_connectors, ex, this);
1144
+ _factory->finishGetConnection(_connectors, ex, ICE_SHARED_FROM_THIS);
1082
1145
  }
1083
1146
  else if(++_iter != _connectors.end()) // Try the next connector.
1084
1147
  {
@@ -1086,7 +1149,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailedIm
1086
1149
  }
1087
1150
  else
1088
1151
  {
1089
- _factory->finishGetConnection(_connectors, ex, this);
1152
+ _factory->finishGetConnection(_connectors, ex, ICE_SHARED_FROM_THIS);
1090
1153
  }
1091
1154
  return false;
1092
1155
  }
@@ -1202,10 +1265,25 @@ IceInternal::IncomingConnectionFactory::waitUntilFinished()
1202
1265
  _monitor->destroy();
1203
1266
  }
1204
1267
 
1268
+ bool
1269
+ IceInternal::IncomingConnectionFactory::isLocal(const EndpointIPtr& endpoint) const
1270
+ {
1271
+ if(_publishedEndpoint && endpoint->equivalent(_publishedEndpoint))
1272
+ {
1273
+ return true;
1274
+ }
1275
+ IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1276
+ return endpoint->equivalent(_endpoint);
1277
+ }
1278
+
1205
1279
  EndpointIPtr
1206
1280
  IceInternal::IncomingConnectionFactory::endpoint() const
1207
1281
  {
1208
- // No mutex protection necessary, _endpoint is immutable.
1282
+ if(_publishedEndpoint)
1283
+ {
1284
+ return _publishedEndpoint;
1285
+ }
1286
+ IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1209
1287
  return _endpoint;
1210
1288
  }
1211
1289
 
@@ -1226,7 +1304,8 @@ IceInternal::IncomingConnectionFactory::connections() const
1226
1304
  }
1227
1305
 
1228
1306
  void
1229
- IceInternal::IncomingConnectionFactory::flushAsyncBatchRequests(const CommunicatorFlushBatchAsyncPtr& outAsync)
1307
+ IceInternal::IncomingConnectionFactory::flushAsyncBatchRequests(const CommunicatorFlushBatchAsyncPtr& outAsync,
1308
+ Ice::CompressBatch compress)
1230
1309
  {
1231
1310
  list<ConnectionIPtr> c = connections(); // connections() is synchronized, so no need to synchronize here.
1232
1311
 
@@ -1234,7 +1313,7 @@ IceInternal::IncomingConnectionFactory::flushAsyncBatchRequests(const Communicat
1234
1313
  {
1235
1314
  try
1236
1315
  {
1237
- outAsync->flushConnection(*p);
1316
+ outAsync->flushConnection(*p, compress);
1238
1317
  }
1239
1318
  catch(const LocalException&)
1240
1319
  {
@@ -1243,7 +1322,7 @@ IceInternal::IncomingConnectionFactory::flushAsyncBatchRequests(const Communicat
1243
1322
  }
1244
1323
  }
1245
1324
 
1246
- #if defined(ICE_USE_IOCP) || defined(ICE_OS_WINRT)
1325
+ #if defined(ICE_USE_IOCP) || defined(ICE_OS_UWP)
1247
1326
  bool
1248
1327
  IceInternal::IncomingConnectionFactory::startAsync(SocketOperation)
1249
1328
  {
@@ -1259,11 +1338,8 @@ IceInternal::IncomingConnectionFactory::startAsync(SocketOperation)
1259
1338
  }
1260
1339
  catch(const Ice::LocalException& ex)
1261
1340
  {
1262
- {
1263
- Error out(_instance->initializationData().logger);
1264
- out << "can't accept connections:\n" << ex << '\n' << _acceptor->toString();
1265
- }
1266
- abort();
1341
+ ICE_SET_EXCEPTION_FROM_CLONE(_acceptorException, ex.ice_clone());
1342
+ _acceptor->getNativeInfo()->completed(SocketOperationRead);
1267
1343
  }
1268
1344
  return true;
1269
1345
  }
@@ -1274,13 +1350,22 @@ IceInternal::IncomingConnectionFactory::finishAsync(SocketOperation)
1274
1350
  assert(_acceptor);
1275
1351
  try
1276
1352
  {
1353
+ if(_acceptorException)
1354
+ {
1355
+ _acceptorException->ice_throw();
1356
+ }
1277
1357
  _acceptor->finishAccept();
1278
1358
  }
1279
1359
  catch(const LocalException& ex)
1280
1360
  {
1361
+ _acceptorException.reset(ICE_NULLPTR);
1362
+
1281
1363
  Error out(_instance->initializationData().logger);
1282
1364
  out << "couldn't accept connection:\n" << ex << '\n' << _acceptor->toString();
1283
- return false;
1365
+ if(_adapter->getThreadPool()->finish(ICE_SHARED_FROM_THIS, true))
1366
+ {
1367
+ closeAcceptor();
1368
+ }
1284
1369
  }
1285
1370
  return _state < StateClosed;
1286
1371
  }
@@ -1322,7 +1407,7 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
1322
1407
  _connections.erase(*p);
1323
1408
  }
1324
1409
 
1325
- if(!_acceptor)
1410
+ if(!_acceptorStarted)
1326
1411
  {
1327
1412
  return;
1328
1413
  }
@@ -1345,11 +1430,13 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
1345
1430
  {
1346
1431
  if(noMoreFds(ex.error))
1347
1432
  {
1433
+ Error out(_instance->initializationData().logger);
1434
+ out << "can't accept more connections:\n" << ex << '\n' << _acceptor->toString();
1435
+
1436
+ if(_adapter->getThreadPool()->finish(ICE_SHARED_FROM_THIS, true))
1348
1437
  {
1349
- Error out(_instance->initializationData().logger);
1350
- out << "fatal error: can't accept more connections:\n" << ex << '\n' << _acceptor->toString();
1438
+ closeAcceptor();
1351
1439
  }
1352
- abort();
1353
1440
  }
1354
1441
 
1355
1442
  // Ignore socket exceptions.
@@ -1370,8 +1457,8 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
1370
1457
 
1371
1458
  try
1372
1459
  {
1373
- connection = new ConnectionI(_adapter->getCommunicator(), _instance, _monitor, transceiver, 0, _endpoint,
1374
- _adapter);
1460
+ connection = ConnectionI::create(_adapter->getCommunicator(), _instance, _monitor, transceiver, 0,
1461
+ _endpoint, _adapter);
1375
1462
  }
1376
1463
  catch(const LocalException& ex)
1377
1464
  {
@@ -1396,41 +1483,34 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
1396
1483
  }
1397
1484
 
1398
1485
  assert(connection);
1399
- connection->start(this);
1486
+
1487
+ connection->start(ICE_SHARED_FROM_THIS);
1400
1488
  }
1401
1489
 
1402
1490
  void
1403
1491
  IceInternal::IncomingConnectionFactory::finished(ThreadPoolCurrent&, bool close)
1404
1492
  {
1405
1493
  IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1406
-
1407
- #if TARGET_OS_IPHONE != 0
1408
1494
  if(_state < StateClosed)
1409
1495
  {
1410
- //
1411
- // Finished has been called by stopAcceptor if the state isn't
1412
- // closed.
1413
- //
1414
1496
  if(_acceptorStarted && close)
1415
1497
  {
1416
- _acceptorStarted = false;
1417
1498
  closeAcceptor();
1418
1499
  }
1419
1500
  return;
1420
1501
  }
1421
- #endif
1422
1502
 
1423
1503
  assert(_state == StateClosed);
1424
1504
  setState(StateFinished);
1425
1505
 
1426
- if(close)
1506
+ if(_acceptorStarted && close)
1427
1507
  {
1428
1508
  closeAcceptor();
1429
1509
  }
1430
1510
 
1431
1511
  #if TARGET_OS_IPHONE != 0
1432
1512
  sync.release();
1433
- unregisterForBackgroundNotification(this);
1513
+ unregisterForBackgroundNotification(ICE_SHARED_FROM_THIS);
1434
1514
  #endif
1435
1515
  }
1436
1516
 
@@ -1438,7 +1518,6 @@ string
1438
1518
  IceInternal::IncomingConnectionFactory::toString() const
1439
1519
  {
1440
1520
  IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1441
-
1442
1521
  if(_transceiver)
1443
1522
  {
1444
1523
  return _transceiver->toString();
@@ -1507,17 +1586,20 @@ IceInternal::IncomingConnectionFactory::connectionStartFailed(const Ice::Connect
1507
1586
  //
1508
1587
  IceInternal::IncomingConnectionFactory::IncomingConnectionFactory(const InstancePtr& instance,
1509
1588
  const EndpointIPtr& endpoint,
1589
+ const EndpointIPtr& publishedEndpoint,
1510
1590
  const ObjectAdapterIPtr& adapter) :
1511
1591
  _instance(instance),
1512
1592
  _monitor(new FactoryACMMonitor(instance, dynamic_cast<ObjectAdapterI*>(adapter.get())->getACM())),
1513
1593
  _endpoint(endpoint),
1594
+ _publishedEndpoint(publishedEndpoint),
1595
+ _acceptorStarted(false),
1596
+ _acceptorStopped(false),
1514
1597
  _adapter(adapter),
1515
1598
  _warn(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Connections") > 0),
1516
1599
  _state(StateHolding)
1517
1600
  {
1518
1601
  }
1519
1602
 
1520
- #if TARGET_OS_IPHONE != 0
1521
1603
  void
1522
1604
  IceInternal::IncomingConnectionFactory::startAcceptor()
1523
1605
  {
@@ -1527,18 +1609,17 @@ IceInternal::IncomingConnectionFactory::startAcceptor()
1527
1609
  return;
1528
1610
  }
1529
1611
 
1612
+ _acceptorStopped = false;
1613
+
1530
1614
  try
1531
1615
  {
1532
1616
  createAcceptor();
1533
- _acceptorStarted = true;
1534
1617
  }
1535
1618
  catch(const Ice::Exception& ex)
1536
1619
  {
1537
- if(_warn)
1538
- {
1539
- Warning out(_instance->initializationData().logger);
1540
- out << "unable to create acceptor:\n" << ex;
1541
- }
1620
+ Error out(_instance->initializationData().logger);
1621
+ out << "acceptor creation failed:\n" << ex << '\n' << _acceptor->toString();
1622
+ _instance->timer()->schedule(ICE_MAKE_SHARED(StartAcceptor, ICE_SHARED_FROM_THIS), IceUtil::Time::seconds(1));
1542
1623
  }
1543
1624
  }
1544
1625
 
@@ -1551,13 +1632,13 @@ IceInternal::IncomingConnectionFactory::stopAcceptor()
1551
1632
  return;
1552
1633
  }
1553
1634
 
1554
- if(_adapter->getThreadPool()->finish(this, true))
1635
+ _acceptorStopped = true;
1636
+
1637
+ if(_adapter->getThreadPool()->finish(ICE_SHARED_FROM_THIS, true))
1555
1638
  {
1556
- _acceptorStarted = false;
1557
1639
  closeAcceptor();
1558
1640
  }
1559
1641
  }
1560
- #endif
1561
1642
 
1562
1643
  void
1563
1644
  IceInternal::IncomingConnectionFactory::initialize()
@@ -1571,7 +1652,6 @@ IceInternal::IncomingConnectionFactory::initialize()
1571
1652
  {
1572
1653
  _endpoint = _endpoint->compress(_instance->defaultsAndOverrides()->overrideCompressValue);
1573
1654
  }
1574
-
1575
1655
  try
1576
1656
  {
1577
1657
  const_cast<TransceiverPtr&>(_transceiver) = _endpoint->transceiver();
@@ -1583,9 +1663,8 @@ IceInternal::IncomingConnectionFactory::initialize()
1583
1663
  out << "attempting to bind to " << _endpoint->protocol() << " socket\n" << _transceiver->toString();
1584
1664
  }
1585
1665
  const_cast<EndpointIPtr&>(_endpoint) = _transceiver->bind();
1586
-
1587
- ConnectionIPtr connection = new ConnectionI(_adapter->getCommunicator(), _instance, 0, _transceiver, 0,
1588
- _endpoint, _adapter);
1666
+ ConnectionIPtr connection(ConnectionI::create(_adapter->getCommunicator(), _instance, 0, _transceiver, 0,
1667
+ _endpoint, _adapter));
1589
1668
  connection->start(0);
1590
1669
  _connections.insert(connection);
1591
1670
  }
@@ -1596,8 +1675,7 @@ IceInternal::IncomingConnectionFactory::initialize()
1596
1675
  // The notification center will call back on the factory to
1597
1676
  // start the acceptor if necessary.
1598
1677
  //
1599
- _acceptorStarted = false;
1600
- registerForBackgroundNotification(this);
1678
+ registerForBackgroundNotification(ICE_SHARED_FROM_THIS);
1601
1679
  #else
1602
1680
  createAcceptor();
1603
1681
  #endif
@@ -1653,7 +1731,7 @@ IceInternal::IncomingConnectionFactory::setState(State state)
1653
1731
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1654
1732
  out << "accepting " << _endpoint->protocol() << " connections at " << _acceptor->toString();
1655
1733
  }
1656
- _adapter->getThreadPool()->_register(this, SocketOperationRead);
1734
+ _adapter->getThreadPool()->_register(ICE_SHARED_FROM_THIS, SocketOperationRead);
1657
1735
  }
1658
1736
  for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::activate));
1659
1737
  break;
@@ -1672,7 +1750,7 @@ IceInternal::IncomingConnectionFactory::setState(State state)
1672
1750
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1673
1751
  out << "holding " << _endpoint->protocol() << " connections at " << _acceptor->toString();
1674
1752
  }
1675
- _adapter->getThreadPool()->unregister(this, SocketOperationRead);
1753
+ _adapter->getThreadPool()->unregister(ICE_SHARED_FROM_THIS, SocketOperationRead);
1676
1754
  }
1677
1755
  for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::hold));
1678
1756
  break;
@@ -1680,7 +1758,7 @@ IceInternal::IncomingConnectionFactory::setState(State state)
1680
1758
 
1681
1759
  case StateClosed:
1682
1760
  {
1683
- if(_acceptor)
1761
+ if(_acceptorStarted)
1684
1762
  {
1685
1763
  //
1686
1764
  // If possible, close the acceptor now to prevent new connections from
@@ -1689,7 +1767,7 @@ IceInternal::IncomingConnectionFactory::setState(State state)
1689
1767
  // the finish() call. Not all selector implementations do support this
1690
1768
  // however.
1691
1769
  //
1692
- if(_adapter->getThreadPool()->finish(this, true))
1770
+ if(_adapter->getThreadPool()->finish(ICE_SHARED_FROM_THIS, true))
1693
1771
  {
1694
1772
  closeAcceptor();
1695
1773
  }
@@ -1720,9 +1798,9 @@ IceInternal::IncomingConnectionFactory::createAcceptor()
1720
1798
  {
1721
1799
  try
1722
1800
  {
1801
+ assert(!_acceptorStarted);
1723
1802
  _acceptor = _endpoint->acceptor(_adapter->getName());
1724
1803
  assert(_acceptor);
1725
-
1726
1804
  if(_instance->traceLevels()->network >= 2)
1727
1805
  {
1728
1806
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
@@ -1730,26 +1808,25 @@ IceInternal::IncomingConnectionFactory::createAcceptor()
1730
1808
  }
1731
1809
 
1732
1810
  _endpoint = _acceptor->listen();
1733
-
1734
1811
  if(_instance->traceLevels()->network >= 1)
1735
1812
  {
1736
1813
  Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
1737
1814
  out << "listening for " << _endpoint->protocol() << " connections\n" << _acceptor->toDetailedString();
1738
1815
  }
1739
1816
 
1740
- _adapter->getThreadPool()->initialize(this);
1741
-
1817
+ _adapter->getThreadPool()->initialize(ICE_SHARED_FROM_THIS);
1742
1818
  if(_state == StateActive)
1743
1819
  {
1744
- _adapter->getThreadPool()->_register(this, SocketOperationRead);
1820
+ _adapter->getThreadPool()->_register(ICE_SHARED_FROM_THIS, SocketOperationRead);
1745
1821
  }
1822
+
1823
+ _acceptorStarted = true;
1746
1824
  }
1747
1825
  catch(const Ice::Exception&)
1748
1826
  {
1749
1827
  if(_acceptor)
1750
1828
  {
1751
1829
  _acceptor->close();
1752
- _acceptor = 0;
1753
1830
  }
1754
1831
  throw;
1755
1832
  }
@@ -1766,14 +1843,15 @@ IceInternal::IncomingConnectionFactory::closeAcceptor()
1766
1843
  out << "stopping to accept " << _endpoint->protocol() << " connections at " << _acceptor->toString();
1767
1844
  }
1768
1845
 
1846
+ _acceptorStarted = false;
1769
1847
  _acceptor->close();
1770
1848
 
1771
- #if TARGET_OS_IPHONE != 0
1772
1849
  //
1773
- // Only clear the acceptor on iOS where it can be destroyed/re-created during the lifetime of the incoming
1774
- // connection factory. On other platforms, we keep it set. This is in particular import for IOCP/WinRT where
1775
- // finishAsync can be called after the acceptor is closed.
1850
+ // If the acceptor hasn't been explicitly stopped (which is the case if the acceptor got closed
1851
+ // because of an unexpected error), try to restart the acceptor in 1 second.
1776
1852
  //
1777
- _acceptor = 0;
1778
- #endif
1853
+ if(!_acceptorStopped && (_state == StateHolding || _state == StateActive))
1854
+ {
1855
+ _instance->timer()->schedule(ICE_MAKE_SHARED(StartAcceptor, ICE_SHARED_FROM_THIS), IceUtil::Time::seconds(1));
1856
+ }
1779
1857
  }