zeroc-ice 3.7.11 → 3.8.1

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 (895) hide show
  1. checksums.yaml +4 -4
  2. data/dist/IceRuby/Communicator.cpp +159 -376
  3. data/dist/IceRuby/Communicator.h +8 -9
  4. data/dist/IceRuby/Config.h +23 -89
  5. data/dist/IceRuby/Connection.cpp +111 -219
  6. data/dist/IceRuby/Connection.h +8 -12
  7. data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
  8. data/dist/IceRuby/DefaultSliceLoader.h +25 -0
  9. data/dist/IceRuby/Endpoint.cpp +63 -65
  10. data/dist/IceRuby/Endpoint.h +7 -11
  11. data/dist/IceRuby/ImplicitContext.cpp +26 -31
  12. data/dist/IceRuby/ImplicitContext.h +6 -10
  13. data/dist/IceRuby/Init.cpp +27 -40
  14. data/dist/IceRuby/Logger.cpp +23 -28
  15. data/dist/IceRuby/Logger.h +8 -12
  16. data/dist/IceRuby/Operation.cpp +177 -219
  17. data/dist/IceRuby/Operation.h +15 -18
  18. data/dist/IceRuby/Properties.cpp +133 -89
  19. data/dist/IceRuby/Properties.h +6 -10
  20. data/dist/IceRuby/Proxy.cpp +179 -649
  21. data/dist/IceRuby/Proxy.h +11 -12
  22. data/dist/IceRuby/RubySliceLoader.cpp +39 -0
  23. data/dist/IceRuby/RubySliceLoader.h +27 -0
  24. data/dist/IceRuby/Slice.cpp +88 -94
  25. data/dist/IceRuby/Slice.h +3 -7
  26. data/dist/IceRuby/Types.cpp +987 -1190
  27. data/dist/IceRuby/Types.h +390 -461
  28. data/dist/IceRuby/Util.cpp +214 -473
  29. data/dist/IceRuby/Util.h +378 -479
  30. data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
  31. data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
  32. data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +4 -10
  33. data/dist/ice/cpp/include/Ice/Buffer.h +116 -111
  34. data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
  35. data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
  36. data/dist/ice/cpp/include/Ice/Config.h +46 -62
  37. data/dist/ice/cpp/include/Ice/Connection.h +410 -0
  38. data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
  39. data/dist/ice/cpp/include/Ice/ConnectionIF.h +6 -28
  40. data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
  41. data/dist/ice/cpp/include/Ice/Current.h +60 -0
  42. data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
  43. data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
  44. data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
  45. data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
  46. data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
  47. data/dist/ice/cpp/include/Ice/Exception.h +46 -151
  48. data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
  49. data/dist/ice/cpp/include/Ice/Format.h +11 -27
  50. data/dist/ice/cpp/include/Ice/Ice.h +53 -48
  51. data/dist/ice/cpp/include/Ice/IconvStringConverter.h +165 -326
  52. data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
  53. data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
  54. data/dist/ice/cpp/include/Ice/Initialize.h +113 -927
  55. data/dist/ice/cpp/include/Ice/InputStream.h +748 -1320
  56. data/dist/ice/cpp/include/Ice/InstanceF.h +4 -10
  57. data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
  58. data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
  59. data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
  60. data/dist/ice/cpp/include/Ice/Logger.h +62 -0
  61. data/dist/ice/cpp/include/Ice/LoggerUtil.h +124 -147
  62. data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
  63. data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +41 -71
  64. data/dist/ice/cpp/include/Ice/Object.h +151 -490
  65. data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
  66. data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
  67. data/dist/ice/cpp/include/Ice/ObjectF.h +5 -19
  68. data/dist/ice/cpp/include/Ice/ObserverHelper.h +115 -132
  69. data/dist/ice/cpp/include/Ice/OutgoingAsync.h +392 -748
  70. data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
  71. data/dist/ice/cpp/include/Ice/OutputStream.h +756 -956
  72. data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
  73. data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
  74. data/dist/ice/cpp/include/{IceUtil → Ice}/PopDisableWarnings.h +8 -6
  75. data/dist/ice/cpp/include/Ice/Properties.h +307 -0
  76. data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
  77. data/dist/ice/cpp/include/Ice/Proxy.h +665 -5094
  78. data/dist/ice/cpp/include/Ice/ProxyF.h +2 -44
  79. data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
  80. data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
  81. data/dist/ice/cpp/include/Ice/ReferenceF.h +4 -19
  82. data/dist/ice/cpp/include/Ice/RequestHandlerF.h +8 -18
  83. data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +276 -0
  84. data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
  85. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
  86. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
  87. data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
  88. data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
  89. data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +286 -0
  90. data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
  91. data/dist/ice/cpp/include/Ice/Service.h +182 -342
  92. data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
  93. data/dist/ice/cpp/include/Ice/SlicedData.h +113 -160
  94. data/dist/ice/cpp/include/Ice/SlicedDataF.h +17 -27
  95. data/dist/ice/cpp/include/Ice/StreamHelpers.h +532 -1070
  96. data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
  97. data/dist/ice/cpp/include/Ice/StringConverter.h +152 -63
  98. data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
  99. data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
  100. data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
  101. data/dist/ice/cpp/include/Ice/UUID.h +6 -9
  102. data/dist/ice/cpp/include/Ice/UserException.h +46 -0
  103. data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +4 -79
  104. data/dist/ice/cpp/include/Ice/Value.h +103 -115
  105. data/dist/ice/cpp/include/Ice/ValueF.h +6 -11
  106. data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +16 -1877
  107. data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +16 -1185
  108. data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +46 -146
  109. data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
  110. data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +49 -93
  111. data/dist/ice/cpp/include/generated/Ice/Identity.h +70 -226
  112. data/dist/ice/cpp/include/generated/Ice/Locator.h +494 -3850
  113. data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
  114. data/dist/ice/cpp/include/generated/Ice/Metrics.h +937 -4603
  115. data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
  116. data/dist/ice/cpp/include/generated/Ice/Process.h +197 -929
  117. data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +249 -1301
  118. data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
  119. data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +637 -2620
  120. data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
  121. data/dist/ice/cpp/include/generated/Ice/Router.h +429 -1783
  122. data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +18 -65
  123. data/dist/ice/cpp/include/generated/Ice/Version.h +73 -318
  124. data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
  125. data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
  126. data/dist/ice/cpp/src/Ice/Acceptor.h +28 -24
  127. data/dist/ice/cpp/src/Ice/AcceptorF.h +6 -14
  128. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
  129. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
  130. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
  131. data/dist/ice/cpp/src/Ice/ArgVector.cpp +17 -18
  132. data/dist/ice/cpp/src/Ice/ArgVector.h +19 -25
  133. data/dist/ice/cpp/src/Ice/Base64.cpp +66 -66
  134. data/dist/ice/cpp/src/Ice/Base64.h +14 -19
  135. data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +70 -121
  136. data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +37 -47
  137. data/dist/ice/cpp/src/Ice/Buffer.cpp +73 -41
  138. data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
  139. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +215 -249
  140. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +38 -60
  141. data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
  142. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
  143. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
  144. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +63 -184
  145. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +30 -51
  146. data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +4 -14
  147. data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
  148. data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +578 -792
  149. data/dist/ice/cpp/src/Ice/ConnectionFactory.h +200 -200
  150. data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +6 -19
  151. data/dist/ice/cpp/src/Ice/ConnectionI.cpp +1674 -1782
  152. data/dist/ice/cpp/src/Ice/ConnectionI.h +333 -293
  153. data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
  154. data/dist/ice/cpp/src/Ice/Connector.h +25 -19
  155. data/dist/ice/cpp/src/Ice/ConnectorF.h +4 -11
  156. data/dist/ice/cpp/src/{IceUtil → Ice}/ConsoleUtil.cpp +32 -53
  157. data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
  158. data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
  159. data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
  160. data/dist/ice/cpp/src/Ice/DLLMain.cpp +25 -35
  161. data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
  162. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +41 -119
  163. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +27 -41
  164. data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +4 -11
  165. data/dist/ice/cpp/src/Ice/Demangle.cpp +26 -0
  166. data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
  167. data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +44 -112
  168. data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
  169. data/dist/ice/cpp/src/Ice/Endian.h +40 -0
  170. data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +35 -59
  171. data/dist/ice/cpp/src/Ice/EndpointFactory.h +82 -103
  172. data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +4 -11
  173. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +54 -87
  174. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +28 -33
  175. data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +4 -11
  176. data/dist/ice/cpp/src/Ice/EndpointI.cpp +53 -23
  177. data/dist/ice/cpp/src/Ice/EndpointI.h +132 -200
  178. data/dist/ice/cpp/src/Ice/EndpointIF.h +11 -39
  179. data/dist/ice/cpp/src/Ice/EventHandler.cpp +3 -26
  180. data/dist/ice/cpp/src/Ice/EventHandler.h +46 -56
  181. data/dist/ice/cpp/src/Ice/EventHandlerF.h +4 -14
  182. data/dist/ice/cpp/src/Ice/Exception.cpp +3 -816
  183. data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
  184. data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
  185. data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
  186. data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
  187. data/dist/ice/cpp/src/Ice/HashUtil.h +46 -32
  188. data/dist/ice/cpp/src/Ice/HttpParser.cpp +431 -431
  189. data/dist/ice/cpp/src/Ice/HttpParser.h +95 -100
  190. data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +207 -324
  191. data/dist/ice/cpp/src/Ice/IPEndpointI.h +80 -126
  192. data/dist/ice/cpp/src/Ice/IPEndpointIF.h +6 -17
  193. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
  194. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
  195. data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
  196. data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
  197. data/dist/ice/cpp/src/Ice/Initialize.cpp +48 -542
  198. data/dist/ice/cpp/src/Ice/InputStream.cpp +848 -1385
  199. data/dist/ice/cpp/src/Ice/Instance.cpp +816 -827
  200. data/dist/ice/cpp/src/Ice/Instance.h +202 -212
  201. data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +526 -661
  202. data/dist/ice/cpp/src/Ice/InstrumentationI.h +171 -192
  203. data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
  204. data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
  205. data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +291 -329
  206. data/dist/ice/cpp/src/Ice/LocatorInfo.h +144 -157
  207. data/dist/ice/cpp/src/Ice/LocatorInfoF.h +8 -17
  208. data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +561 -743
  209. data/dist/ice/cpp/src/Ice/LoggerAdminI.h +18 -28
  210. data/dist/ice/cpp/src/Ice/LoggerI.cpp +66 -91
  211. data/dist/ice/cpp/src/Ice/LoggerI.h +36 -41
  212. data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
  213. data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
  214. data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +14 -38
  215. data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
  216. data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +194 -280
  217. data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
  218. data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
  219. data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
  220. data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
  221. data/dist/ice/cpp/src/Ice/Network.cpp +595 -917
  222. data/dist/ice/cpp/src/Ice/Network.h +189 -213
  223. data/dist/ice/cpp/src/Ice/NetworkF.h +2 -10
  224. data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +99 -104
  225. data/dist/ice/cpp/src/Ice/NetworkProxy.h +49 -54
  226. data/dist/ice/cpp/src/Ice/NetworkProxyF.h +4 -11
  227. data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +16 -18
  228. data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +22 -27
  229. data/dist/ice/cpp/src/Ice/Object.cpp +152 -338
  230. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +170 -113
  231. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +41 -41
  232. data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +4 -15
  233. data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +580 -727
  234. data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +149 -145
  235. data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +36 -17
  236. data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
  237. data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
  238. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +147 -187
  239. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +56 -64
  240. data/dist/ice/cpp/src/{IceUtil → Ice}/Options.cpp +187 -258
  241. data/dist/ice/cpp/src/Ice/Options.h +119 -0
  242. data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +516 -732
  243. data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
  244. data/dist/ice/cpp/src/Ice/OutputStream.cpp +610 -543
  245. data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
  246. data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
  247. data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +118 -277
  248. data/dist/ice/cpp/src/Ice/PluginManagerI.h +41 -48
  249. data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
  250. data/dist/ice/cpp/src/Ice/PropertyNames.cpp +519 -1341
  251. data/dist/ice/cpp/src/Ice/PropertyNames.h +49 -64
  252. data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
  253. data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
  254. data/dist/ice/cpp/src/Ice/Protocol.cpp +129 -94
  255. data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
  256. data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +117 -62
  257. data/dist/ice/cpp/src/Ice/ProtocolInstance.h +63 -82
  258. data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +4 -11
  259. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +10 -32
  260. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +25 -54
  261. data/dist/ice/cpp/src/Ice/Proxy.cpp +294 -1357
  262. data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
  263. data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
  264. data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
  265. data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
  266. data/dist/ice/cpp/src/Ice/Random.h +23 -0
  267. data/dist/ice/cpp/src/Ice/Reference.cpp +635 -1097
  268. data/dist/ice/cpp/src/Ice/Reference.h +314 -298
  269. data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +320 -378
  270. data/dist/ice/cpp/src/Ice/ReferenceFactory.h +48 -66
  271. data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +4 -9
  272. data/dist/ice/cpp/src/Ice/RequestHandler.cpp +15 -24
  273. data/dist/ice/cpp/src/Ice/RequestHandler.h +43 -68
  274. data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
  275. data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
  276. data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
  277. data/dist/ice/cpp/src/Ice/RetryQueue.cpp +51 -57
  278. data/dist/ice/cpp/src/Ice/RetryQueue.h +39 -46
  279. data/dist/ice/cpp/src/Ice/RetryQueueF.h +4 -9
  280. data/dist/ice/cpp/src/Ice/RouterInfo.cpp +97 -201
  281. data/dist/ice/cpp/src/Ice/RouterInfo.h +61 -118
  282. data/dist/ice/cpp/src/Ice/RouterInfoF.h +6 -14
  283. data/dist/ice/cpp/src/Ice/SHA1.cpp +86 -60
  284. data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
  285. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
  286. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
  287. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +521 -0
  288. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
  289. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
  290. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +646 -0
  291. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
  292. data/dist/ice/cpp/src/{IceSSL → Ice/SSL}/RFC2253.cpp +85 -88
  293. data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
  294. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
  295. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
  296. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
  297. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
  298. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
  299. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
  300. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
  301. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +69 -0
  302. data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
  303. data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
  304. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
  305. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
  306. data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
  307. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +673 -0
  308. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +118 -0
  309. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1449 -0
  310. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
  311. data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
  312. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1088 -0
  313. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
  314. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +825 -0
  315. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
  316. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
  317. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
  318. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
  319. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1048 -0
  320. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
  321. data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +233 -0
  322. data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
  323. data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
  324. data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
  325. data/dist/ice/cpp/src/Ice/Selector.cpp +341 -606
  326. data/dist/ice/cpp/src/Ice/Selector.h +167 -224
  327. data/dist/ice/cpp/src/Ice/ServantManager.cpp +195 -128
  328. data/dist/ice/cpp/src/Ice/ServantManager.h +52 -55
  329. data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
  330. data/dist/ice/cpp/src/Ice/Service.cpp +548 -641
  331. data/dist/ice/cpp/src/Ice/SharedContext.h +13 -26
  332. data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
  333. data/dist/ice/cpp/src/Ice/SlicedData.cpp +17 -96
  334. data/dist/ice/cpp/src/Ice/StreamSocket.cpp +104 -151
  335. data/dist/ice/cpp/src/Ice/StreamSocket.h +48 -60
  336. data/dist/ice/cpp/src/Ice/StringConverter.cpp +586 -0
  337. data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
  338. data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +41 -47
  339. data/dist/ice/cpp/src/Ice/SysLoggerI.h +24 -27
  340. data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +16 -17
  341. data/dist/ice/cpp/src/Ice/SystemdJournalI.h +19 -25
  342. data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
  343. data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +67 -88
  344. data/dist/ice/cpp/src/Ice/TcpAcceptor.h +34 -40
  345. data/dist/ice/cpp/src/Ice/TcpConnector.cpp +42 -41
  346. data/dist/ice/cpp/src/Ice/TcpConnector.h +26 -35
  347. data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +172 -146
  348. data/dist/ice/cpp/src/Ice/TcpEndpointI.h +76 -80
  349. data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +38 -26
  350. data/dist/ice/cpp/src/Ice/TcpTransceiver.h +40 -45
  351. data/dist/ice/cpp/src/Ice/ThreadPool.cpp +333 -515
  352. data/dist/ice/cpp/src/Ice/ThreadPool.h +202 -290
  353. data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
  354. data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
  355. data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
  356. data/dist/ice/cpp/src/Ice/Timer.cpp +73 -167
  357. data/dist/ice/cpp/src/Ice/Timer.h +212 -0
  358. data/dist/ice/cpp/src/Ice/TraceLevels.cpp +11 -29
  359. data/dist/ice/cpp/src/Ice/TraceLevels.h +22 -28
  360. data/dist/ice/cpp/src/Ice/TraceLevelsF.h +4 -11
  361. data/dist/ice/cpp/src/Ice/TraceUtil.cpp +136 -215
  362. data/dist/ice/cpp/src/Ice/TraceUtil.h +27 -16
  363. data/dist/ice/cpp/src/Ice/Transceiver.cpp +3 -7
  364. data/dist/ice/cpp/src/Ice/Transceiver.h +35 -32
  365. data/dist/ice/cpp/src/Ice/TransceiverF.h +10 -20
  366. data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
  367. data/dist/ice/cpp/src/Ice/UdpConnector.cpp +39 -39
  368. data/dist/ice/cpp/src/Ice/UdpConnector.h +27 -36
  369. data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +178 -213
  370. data/dist/ice/cpp/src/Ice/UdpEndpointI.h +82 -85
  371. data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +201 -221
  372. data/dist/ice/cpp/src/Ice/UdpTransceiver.h +68 -74
  373. data/dist/ice/cpp/{include/IceUtil → src/Ice}/UndefSysMacros.h +12 -12
  374. data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
  375. data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
  376. data/dist/ice/cpp/src/Ice/Value.cpp +107 -38
  377. data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +10 -15
  378. data/dist/ice/cpp/src/Ice/WSAcceptor.h +31 -37
  379. data/dist/ice/cpp/src/Ice/WSConnector.cpp +25 -40
  380. data/dist/ice/cpp/src/Ice/WSConnector.h +26 -33
  381. data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +164 -217
  382. data/dist/ice/cpp/src/Ice/WSEndpoint.h +72 -83
  383. data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +469 -458
  384. data/dist/ice/cpp/src/Ice/WSTransceiver.h +117 -123
  385. data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +20 -29
  386. data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
  387. data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +20 -31
  388. data/dist/ice/cpp/src/Ice/generated/Identity.cpp +24 -34
  389. data/dist/ice/cpp/src/Ice/generated/Locator.cpp +454 -1744
  390. data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
  391. data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +824 -1971
  392. data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
  393. data/dist/ice/cpp/src/Ice/generated/Process.cpp +190 -331
  394. data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +289 -449
  395. data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
  396. data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +547 -867
  397. data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
  398. data/dist/ice/cpp/src/Ice/generated/Router.cpp +406 -723
  399. data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +19 -29
  400. data/dist/ice/cpp/src/Ice/generated/Version.cpp +28 -31
  401. data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +76 -139
  402. data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +55 -96
  403. data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +190 -303
  404. data/dist/ice/cpp/src/IceDiscovery/LookupI.h +126 -185
  405. data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +56 -77
  406. data/dist/ice/cpp/src/IceDiscovery/PluginI.h +20 -25
  407. data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
  408. data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +14 -37
  409. data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +411 -649
  410. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
  411. data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
  412. data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
  413. data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
  414. data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
  415. data/dist/ice/cpp/src/Slice/FileTracker.cpp +25 -75
  416. data/dist/ice/cpp/src/Slice/FileTracker.h +35 -56
  417. data/dist/ice/cpp/src/Slice/Grammar.cpp +2711 -3382
  418. data/dist/ice/cpp/src/Slice/Grammar.h +95 -75
  419. data/dist/ice/cpp/src/Slice/GrammarUtil.h +117 -217
  420. data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +486 -0
  421. data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
  422. data/dist/ice/cpp/src/Slice/Parser.cpp +3068 -5223
  423. data/dist/ice/cpp/src/Slice/Parser.h +1086 -1065
  424. data/dist/ice/cpp/src/Slice/Preprocessor.cpp +97 -599
  425. data/dist/ice/cpp/src/Slice/Preprocessor.h +26 -42
  426. data/dist/ice/cpp/src/Slice/Scanner.cpp +1562 -924
  427. data/dist/ice/cpp/src/Slice/SliceUtil.cpp +517 -113
  428. data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +254 -269
  429. data/dist/ice/cpp/src/Slice/Util.h +126 -35
  430. data/dist/ice/cpp/src/slice2rb/Main.cpp +13 -15
  431. data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
  432. data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
  433. data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
  434. data/dist/ice/slice/Glacier2/Metrics.ice +34 -75
  435. data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +42 -98
  436. data/dist/ice/slice/Glacier2/Router.ice +80 -173
  437. data/dist/ice/slice/Glacier2/SSLInfo.ice +23 -40
  438. data/dist/ice/slice/Glacier2/Session.ice +120 -261
  439. data/dist/ice/slice/Ice/BuiltinSequences.ice +33 -38
  440. data/dist/ice/slice/Ice/Context.ice +24 -0
  441. data/dist/ice/slice/Ice/EndpointTypes.ice +35 -33
  442. data/dist/ice/slice/Ice/Identity.ice +24 -63
  443. data/dist/ice/slice/Ice/Locator.ice +61 -226
  444. data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
  445. data/dist/ice/slice/Ice/Metrics.ice +189 -424
  446. data/dist/ice/slice/Ice/OperationMode.ice +38 -0
  447. data/dist/ice/slice/Ice/Process.ice +16 -52
  448. data/dist/ice/slice/Ice/PropertiesAdmin.ice +25 -75
  449. data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
  450. data/dist/ice/slice/Ice/RemoteLogger.ice +113 -213
  451. data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
  452. data/dist/ice/slice/Ice/Router.ice +42 -91
  453. data/dist/ice/slice/Ice/SliceChecksumDict.ice +7 -25
  454. data/dist/ice/slice/Ice/Version.ice +31 -39
  455. data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
  456. data/dist/ice/slice/IceGrid/Admin.ice +942 -1918
  457. data/dist/ice/slice/IceGrid/Descriptor.ice +476 -1051
  458. data/dist/ice/slice/IceGrid/Exception.ice +86 -384
  459. data/dist/ice/slice/IceGrid/FileParser.ice +23 -59
  460. data/dist/ice/slice/IceGrid/Registry.ice +117 -256
  461. data/dist/ice/slice/IceGrid/Session.ice +46 -110
  462. data/dist/ice/slice/IceGrid/UserAccountMapper.ice +22 -57
  463. data/dist/ice/slice/IceStorm/IceStorm.ice +173 -401
  464. data/dist/ice/slice/IceStorm/Metrics.ice +28 -70
  465. data/dist/lib/Glacier2/Metrics.rb +16 -31
  466. data/dist/lib/Glacier2/PermissionsVerifier.rb +18 -50
  467. data/dist/lib/Glacier2/Router.rb +20 -42
  468. data/dist/lib/Glacier2/SSLInfo.rb +14 -22
  469. data/dist/lib/Glacier2/Session.rb +53 -113
  470. data/dist/lib/Glacier2.rb +6 -6
  471. data/dist/lib/Ice/BuiltinSequences.rb +14 -26
  472. data/dist/lib/Ice/CompressBatch.rb +50 -0
  473. data/dist/lib/Ice/Context.rb +12 -0
  474. data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
  475. data/dist/lib/Ice/EndpointTypes.rb +14 -55
  476. data/dist/lib/Ice/Exception.rb +20 -0
  477. data/dist/lib/Ice/Identity.rb +10 -26
  478. data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
  479. data/dist/lib/Ice/InitializationData.rb +12 -0
  480. data/dist/lib/Ice/LocalExceptions.rb +168 -0
  481. data/dist/lib/Ice/Locator.rb +21 -134
  482. data/dist/lib/Ice/LocatorRegistry.rb +73 -0
  483. data/dist/lib/Ice/Metrics.rb +85 -132
  484. data/dist/lib/Ice/OperationMode.rb +58 -0
  485. data/dist/lib/Ice/Process.rb +12 -31
  486. data/dist/lib/Ice/PropertiesAdmin.rb +12 -36
  487. data/dist/lib/Ice/PropertyDict.rb +12 -0
  488. data/dist/lib/Ice/Proxy.rb +85 -0
  489. data/dist/lib/Ice/ProxyFunctions.rb +69 -0
  490. data/dist/lib/Ice/RemoteLogger.rb +29 -60
  491. data/dist/lib/Ice/ReplyStatus.rb +65 -0
  492. data/dist/lib/Ice/Router.rb +19 -47
  493. data/dist/lib/Ice/SliceChecksumDict.rb +5 -17
  494. data/dist/lib/Ice/SliceUtil.rb +41 -0
  495. data/dist/lib/Ice/Struct.rb +11 -0
  496. data/dist/lib/Ice/ToStringMode.rb +50 -0
  497. data/dist/lib/Ice/Value.rb +93 -0
  498. data/dist/lib/Ice/Version.rb +12 -24
  499. data/dist/lib/Ice.rb +29 -665
  500. data/dist/lib/IceBox/ServiceManager.rb +104 -0
  501. data/dist/lib/IceBox.rb +2 -4
  502. data/dist/lib/IceGrid/Admin.rb +303 -291
  503. data/dist/lib/IceGrid/Descriptor.rb +147 -192
  504. data/dist/lib/IceGrid/Exception.rb +26 -257
  505. data/dist/lib/IceGrid/FileParser.rb +12 -36
  506. data/dist/lib/IceGrid/Registry.rb +35 -76
  507. data/dist/lib/IceGrid/Session.rb +19 -34
  508. data/dist/lib/IceGrid/UserAccountMapper.rb +11 -34
  509. data/dist/lib/IceGrid.rb +3 -3
  510. data/dist/lib/IceStorm/IceStorm.rb +51 -132
  511. data/dist/lib/IceStorm/Metrics.rb +19 -37
  512. data/dist/lib/IceStorm.rb +3 -5
  513. data/extconf.rb +6 -8
  514. data/ice.gemspec +3 -3
  515. data/scripts/slice2rb +1 -3
  516. metadata +206 -386
  517. data/dist/IceRuby/ValueFactoryManager.cpp +0 -445
  518. data/dist/IceRuby/ValueFactoryManager.h +0 -95
  519. data/dist/ice/cpp/include/Ice/Application.h +0 -326
  520. data/dist/ice/cpp/include/Ice/AsyncResult.h +0 -155
  521. data/dist/ice/cpp/include/Ice/AsyncResultF.h +0 -23
  522. data/dist/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
  523. data/dist/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
  524. data/dist/ice/cpp/include/Ice/Comparable.h +0 -205
  525. data/dist/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
  526. data/dist/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
  527. data/dist/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
  528. data/dist/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
  529. data/dist/ice/cpp/include/Ice/Dispatcher.h +0 -67
  530. data/dist/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
  531. data/dist/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
  532. data/dist/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
  533. data/dist/ice/cpp/include/Ice/FactoryTable.h +0 -73
  534. data/dist/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
  535. data/dist/ice/cpp/include/Ice/Functional.h +0 -140
  536. data/dist/ice/cpp/include/Ice/GCObject.h +0 -76
  537. data/dist/ice/cpp/include/Ice/Handle.h +0 -182
  538. data/dist/ice/cpp/include/Ice/Incoming.h +0 -225
  539. data/dist/ice/cpp/include/Ice/IncomingAsync.h +0 -186
  540. data/dist/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
  541. data/dist/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
  542. data/dist/ice/cpp/include/Ice/LocalObject.h +0 -35
  543. data/dist/ice/cpp/include/Ice/LocalObjectF.h +0 -21
  544. data/dist/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
  545. data/dist/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
  546. data/dist/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
  547. data/dist/ice/cpp/include/Ice/Optional.h +0 -1114
  548. data/dist/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
  549. data/dist/ice/cpp/include/Ice/Protocol.h +0 -274
  550. data/dist/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
  551. data/dist/ice/cpp/include/Ice/ProxyHandle.h +0 -318
  552. data/dist/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
  553. data/dist/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
  554. data/dist/ice/cpp/include/Ice/SHA1.h +0 -40
  555. data/dist/ice/cpp/include/Ice/ServantManagerF.h +0 -21
  556. data/dist/ice/cpp/include/Ice/SliceChecksums.h +0 -33
  557. data/dist/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
  558. data/dist/ice/cpp/include/Ice/UniquePtr.h +0 -95
  559. data/dist/ice/cpp/include/Ice/UniqueRef.h +0 -97
  560. data/dist/ice/cpp/include/IceSSL/Config.h +0 -21
  561. data/dist/ice/cpp/include/IceSSL/IceSSL.h +0 -24
  562. data/dist/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
  563. data/dist/ice/cpp/include/IceSSL/Plugin.h +0 -712
  564. data/dist/ice/cpp/include/IceSSL/SChannel.h +0 -72
  565. data/dist/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
  566. data/dist/ice/cpp/include/IceUtil/Atomic.h +0 -179
  567. data/dist/ice/cpp/include/IceUtil/Cond.h +0 -317
  568. data/dist/ice/cpp/include/IceUtil/Config.h +0 -392
  569. data/dist/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
  570. data/dist/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
  571. data/dist/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -96
  572. data/dist/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
  573. data/dist/ice/cpp/include/IceUtil/Exception.h +0 -394
  574. data/dist/ice/cpp/include/IceUtil/FileUtil.h +0 -140
  575. data/dist/ice/cpp/include/IceUtil/Functional.h +0 -389
  576. data/dist/ice/cpp/include/IceUtil/Handle.h +0 -261
  577. data/dist/ice/cpp/include/IceUtil/IceUtil.h +0 -40
  578. data/dist/ice/cpp/include/IceUtil/InputUtil.h +0 -42
  579. data/dist/ice/cpp/include/IceUtil/Iterator.h +0 -31
  580. data/dist/ice/cpp/include/IceUtil/Lock.h +0 -128
  581. data/dist/ice/cpp/include/IceUtil/Monitor.h +0 -243
  582. data/dist/ice/cpp/include/IceUtil/Mutex.h +0 -349
  583. data/dist/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
  584. data/dist/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
  585. data/dist/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
  586. data/dist/ice/cpp/include/IceUtil/Optional.h +0 -433
  587. data/dist/ice/cpp/include/IceUtil/Options.h +0 -135
  588. data/dist/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
  589. data/dist/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
  590. data/dist/ice/cpp/include/IceUtil/Random.h +0 -55
  591. data/dist/ice/cpp/include/IceUtil/RecMutex.h +0 -107
  592. data/dist/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
  593. data/dist/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
  594. data/dist/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
  595. data/dist/ice/cpp/include/IceUtil/Shared.h +0 -127
  596. data/dist/ice/cpp/include/IceUtil/StopWatch.h +0 -49
  597. data/dist/ice/cpp/include/IceUtil/StringConverter.h +0 -195
  598. data/dist/ice/cpp/include/IceUtil/StringUtil.h +0 -97
  599. data/dist/ice/cpp/include/IceUtil/Thread.h +0 -160
  600. data/dist/ice/cpp/include/IceUtil/ThreadException.h +0 -94
  601. data/dist/ice/cpp/include/IceUtil/Time.h +0 -205
  602. data/dist/ice/cpp/include/IceUtil/Timer.h +0 -153
  603. data/dist/ice/cpp/include/IceUtil/UUID.h +0 -21
  604. data/dist/ice/cpp/include/generated/Glacier2/Metrics.h +0 -475
  605. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifier.h +0 -1430
  606. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifierF.h +0 -147
  607. data/dist/ice/cpp/include/generated/Glacier2/Router.h +0 -3260
  608. data/dist/ice/cpp/include/generated/Glacier2/RouterF.h +0 -125
  609. data/dist/ice/cpp/include/generated/Glacier2/SSLInfo.h +0 -223
  610. data/dist/ice/cpp/include/generated/Glacier2/Session.h +0 -5894
  611. data/dist/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
  612. data/dist/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
  613. data/dist/ice/cpp/include/generated/Ice/Connection.h +0 -1703
  614. data/dist/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
  615. data/dist/ice/cpp/include/generated/Ice/Current.h +0 -322
  616. data/dist/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
  617. data/dist/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
  618. data/dist/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
  619. data/dist/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
  620. data/dist/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
  621. data/dist/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
  622. data/dist/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
  623. data/dist/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
  624. data/dist/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
  625. data/dist/ice/cpp/include/generated/Ice/Logger.h +0 -237
  626. data/dist/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
  627. data/dist/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
  628. data/dist/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
  629. data/dist/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
  630. data/dist/ice/cpp/include/generated/Ice/Plugin.h +0 -318
  631. data/dist/ice/cpp/include/generated/Ice/PluginF.h +0 -110
  632. data/dist/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
  633. data/dist/ice/cpp/include/generated/Ice/Properties.h +0 -452
  634. data/dist/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
  635. data/dist/ice/cpp/include/generated/Ice/RouterF.h +0 -125
  636. data/dist/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
  637. data/dist/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
  638. data/dist/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
  639. data/dist/ice/cpp/include/generated/IceBox/IceBox.h +0 -3269
  640. data/dist/ice/cpp/include/generated/IceGrid/Admin.h +0 -33773
  641. data/dist/ice/cpp/include/generated/IceGrid/Descriptor.h +0 -5254
  642. data/dist/ice/cpp/include/generated/IceGrid/Exception.h +0 -2834
  643. data/dist/ice/cpp/include/generated/IceGrid/FileParser.h +0 -824
  644. data/dist/ice/cpp/include/generated/IceGrid/PluginFacade.h +0 -635
  645. data/dist/ice/cpp/include/generated/IceGrid/Registry.h +0 -5089
  646. data/dist/ice/cpp/include/generated/IceGrid/Session.h +0 -2240
  647. data/dist/ice/cpp/include/generated/IceGrid/UserAccountMapper.h +0 -800
  648. data/dist/ice/cpp/include/generated/IcePatch2/FileInfo.h +0 -325
  649. data/dist/ice/cpp/include/generated/IcePatch2/FileServer.h +0 -2891
  650. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
  651. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
  652. data/dist/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
  653. data/dist/ice/cpp/include/generated/IceStorm/IceStorm.h +0 -6627
  654. data/dist/ice/cpp/include/generated/IceStorm/Metrics.h +0 -665
  655. data/dist/ice/cpp/src/Ice/ACM.cpp +0 -380
  656. data/dist/ice/cpp/src/Ice/ACM.h +0 -119
  657. data/dist/ice/cpp/src/Ice/ACMF.h +0 -30
  658. data/dist/ice/cpp/src/Ice/Acceptor.cpp +0 -16
  659. data/dist/ice/cpp/src/Ice/Application.cpp +0 -661
  660. data/dist/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
  661. data/dist/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
  662. data/dist/ice/cpp/src/Ice/CommunicatorI.h +0 -167
  663. data/dist/ice/cpp/src/Ice/Cond.cpp +0 -381
  664. data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
  665. data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
  666. data/dist/ice/cpp/src/Ice/Connector.cpp +0 -16
  667. data/dist/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
  668. data/dist/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
  669. data/dist/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
  670. data/dist/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
  671. data/dist/ice/cpp/src/Ice/GCObject.cpp +0 -442
  672. data/dist/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
  673. data/dist/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
  674. data/dist/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
  675. data/dist/ice/cpp/src/Ice/Incoming.cpp +0 -795
  676. data/dist/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
  677. data/dist/ice/cpp/src/Ice/IncomingRequest.h +0 -33
  678. data/dist/ice/cpp/src/Ice/LocalObject.cpp +0 -23
  679. data/dist/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
  680. data/dist/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
  681. data/dist/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
  682. data/dist/ice/cpp/src/Ice/PropertiesI.cpp +0 -739
  683. data/dist/ice/cpp/src/Ice/PropertiesI.h +0 -70
  684. data/dist/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
  685. data/dist/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
  686. data/dist/ice/cpp/src/Ice/ProxyFactory.h +0 -57
  687. data/dist/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
  688. data/dist/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
  689. data/dist/ice/cpp/src/Ice/ReplyStatus.h +0 -24
  690. data/dist/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
  691. data/dist/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
  692. data/dist/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
  693. data/dist/ice/cpp/src/Ice/ResponseHandler.h +0 -43
  694. data/dist/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
  695. data/dist/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
  696. data/dist/ice/cpp/src/Ice/StringUtil.h +0 -30
  697. data/dist/ice/cpp/src/Ice/Thread.cpp +0 -569
  698. data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
  699. data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
  700. data/dist/ice/cpp/src/Ice/VirtualShared.h +0 -38
  701. data/dist/ice/cpp/src/Ice/generated/Communicator.cpp +0 -79
  702. data/dist/ice/cpp/src/Ice/generated/CommunicatorF.cpp +0 -61
  703. data/dist/ice/cpp/src/Ice/generated/Connection.cpp +0 -155
  704. data/dist/ice/cpp/src/Ice/generated/ConnectionF.cpp +0 -61
  705. data/dist/ice/cpp/src/Ice/generated/Current.cpp +0 -62
  706. data/dist/ice/cpp/src/Ice/generated/Endpoint.cpp +0 -147
  707. data/dist/ice/cpp/src/Ice/generated/EndpointF.cpp +0 -61
  708. data/dist/ice/cpp/src/Ice/generated/FacetMap.cpp +0 -49
  709. data/dist/ice/cpp/src/Ice/generated/ImplicitContext.cpp +0 -75
  710. data/dist/ice/cpp/src/Ice/generated/ImplicitContextF.cpp +0 -61
  711. data/dist/ice/cpp/src/Ice/generated/Instrumentation.cpp +0 -188
  712. data/dist/ice/cpp/src/Ice/generated/InstrumentationF.cpp +0 -66
  713. data/dist/ice/cpp/src/Ice/generated/LocalException.cpp +0 -3262
  714. data/dist/ice/cpp/src/Ice/generated/LocatorF.cpp +0 -63
  715. data/dist/ice/cpp/src/Ice/generated/Logger.cpp +0 -73
  716. data/dist/ice/cpp/src/Ice/generated/LoggerF.cpp +0 -61
  717. data/dist/ice/cpp/src/Ice/generated/ObjectAdapter.cpp +0 -79
  718. data/dist/ice/cpp/src/Ice/generated/ObjectAdapterF.cpp +0 -61
  719. data/dist/ice/cpp/src/Ice/generated/ObjectFactory.cpp +0 -75
  720. data/dist/ice/cpp/src/Ice/generated/Plugin.cpp +0 -87
  721. data/dist/ice/cpp/src/Ice/generated/PluginF.cpp +0 -61
  722. data/dist/ice/cpp/src/Ice/generated/ProcessF.cpp +0 -63
  723. data/dist/ice/cpp/src/Ice/generated/Properties.cpp +0 -78
  724. data/dist/ice/cpp/src/Ice/generated/PropertiesF.cpp +0 -63
  725. data/dist/ice/cpp/src/Ice/generated/RouterF.cpp +0 -63
  726. data/dist/ice/cpp/src/Ice/generated/ServantLocator.cpp +0 -75
  727. data/dist/ice/cpp/src/Ice/generated/ServantLocatorF.cpp +0 -61
  728. data/dist/ice/cpp/src/Ice/generated/ValueFactory.cpp +0 -83
  729. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.cpp +0 -154
  730. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.h +0 -49
  731. data/dist/ice/cpp/src/Ice/ios/StreamConnector.cpp +0 -146
  732. data/dist/ice/cpp/src/Ice/ios/StreamConnector.h +0 -52
  733. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.cpp +0 -477
  734. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.h +0 -156
  735. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.cpp +0 -570
  736. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.h +0 -93
  737. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery/IceDiscovery.h +0 -1889
  738. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery.cpp +0 -915
  739. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
  740. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery.cpp +0 -730
  741. data/dist/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
  742. data/dist/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
  743. data/dist/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
  744. data/dist/ice/cpp/src/IceSSL/CertificateI.h +0 -64
  745. data/dist/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
  746. data/dist/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
  747. data/dist/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
  748. data/dist/ice/cpp/src/IceSSL/EndpointI.h +0 -100
  749. data/dist/ice/cpp/src/IceSSL/Instance.cpp +0 -28
  750. data/dist/ice/cpp/src/IceSSL/Instance.h +0 -37
  751. data/dist/ice/cpp/src/IceSSL/InstanceF.h +0 -33
  752. data/dist/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
  753. data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
  754. data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
  755. data/dist/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
  756. data/dist/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
  757. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
  758. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
  759. data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
  760. data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
  761. data/dist/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
  762. data/dist/ice/cpp/src/IceSSL/PluginI.h +0 -67
  763. data/dist/ice/cpp/src/IceSSL/RFC2253.h +0 -62
  764. data/dist/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
  765. data/dist/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
  766. data/dist/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
  767. data/dist/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
  768. data/dist/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
  769. data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
  770. data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
  771. data/dist/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
  772. data/dist/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
  773. data/dist/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
  774. data/dist/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
  775. data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
  776. data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
  777. data/dist/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
  778. data/dist/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
  779. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
  780. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
  781. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
  782. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
  783. data/dist/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
  784. data/dist/ice/cpp/src/IceSSL/TrustManager.h +0 -46
  785. data/dist/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
  786. data/dist/ice/cpp/src/IceSSL/Util.cpp +0 -192
  787. data/dist/ice/cpp/src/IceSSL/Util.h +0 -99
  788. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfo.cpp +0 -75
  789. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfoF.cpp +0 -61
  790. data/dist/ice/cpp/src/IceSSL/generated/EndpointInfo.cpp +0 -75
  791. data/dist/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
  792. data/dist/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
  793. data/dist/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
  794. data/dist/ice/cpp/src/IceUtil/FileUtil.cpp +0 -471
  795. data/dist/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
  796. data/dist/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
  797. data/dist/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
  798. data/dist/ice/cpp/src/IceUtil/Random.cpp +0 -180
  799. data/dist/ice/cpp/src/IceUtil/RecMutex.cpp +0 -238
  800. data/dist/ice/cpp/src/IceUtil/Shared.cpp +0 -71
  801. data/dist/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
  802. data/dist/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1135
  803. data/dist/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
  804. data/dist/ice/cpp/src/IceUtil/Time.cpp +0 -307
  805. data/dist/ice/cpp/src/IceUtil/UUID.cpp +0 -165
  806. data/dist/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
  807. data/dist/ice/cpp/src/IceUtil/Unicode.h +0 -43
  808. data/dist/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
  809. data/dist/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
  810. data/dist/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
  811. data/dist/ice/cpp/src/Slice/Checksum.cpp +0 -447
  812. data/dist/ice/cpp/src/Slice/Checksum.h +0 -21
  813. data/dist/ice/cpp/src/Slice/JavaUtil.cpp +0 -5183
  814. data/dist/ice/cpp/src/Slice/JavaUtil.h +0 -407
  815. data/dist/ice/cpp/src/Slice/MD5.cpp +0 -52
  816. data/dist/ice/cpp/src/Slice/MD5.h +0 -39
  817. data/dist/ice/cpp/src/Slice/MD5I.cpp +0 -393
  818. data/dist/ice/cpp/src/Slice/MD5I.h +0 -91
  819. data/dist/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
  820. data/dist/ice/cpp/src/Slice/PHPUtil.h +0 -36
  821. data/dist/ice/cpp/src/Slice/Python.cpp +0 -830
  822. data/dist/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
  823. data/dist/ice/cpp/src/Slice/PythonUtil.h +0 -70
  824. data/dist/ice/cpp/src/Slice/Ruby.cpp +0 -350
  825. data/dist/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
  826. data/dist/ice/cpp/src/Slice/RubyUtil.h +0 -49
  827. data/dist/ice/slice/Glacier2/PermissionsVerifierF.ice +0 -30
  828. data/dist/ice/slice/Glacier2/RouterF.ice +0 -29
  829. data/dist/ice/slice/Ice/Communicator.ice +0 -676
  830. data/dist/ice/slice/Ice/CommunicatorF.ice +0 -31
  831. data/dist/ice/slice/Ice/Connection.ice +0 -516
  832. data/dist/ice/slice/Ice/ConnectionF.ice +0 -33
  833. data/dist/ice/slice/Ice/Current.ice +0 -170
  834. data/dist/ice/slice/Ice/Endpoint.ice +0 -291
  835. data/dist/ice/slice/Ice/EndpointF.ice +0 -43
  836. data/dist/ice/slice/Ice/FacetMap.ice +0 -36
  837. data/dist/ice/slice/Ice/ImplicitContext.ice +0 -119
  838. data/dist/ice/slice/Ice/ImplicitContextF.ice +0 -30
  839. data/dist/ice/slice/Ice/Instrumentation.ice +0 -509
  840. data/dist/ice/slice/Ice/InstrumentationF.ice +0 -38
  841. data/dist/ice/slice/Ice/LocalException.ice +0 -1040
  842. data/dist/ice/slice/Ice/LocatorF.ice +0 -32
  843. data/dist/ice/slice/Ice/Logger.ice +0 -99
  844. data/dist/ice/slice/Ice/LoggerF.ice +0 -31
  845. data/dist/ice/slice/Ice/ObjectAdapter.ice +0 -710
  846. data/dist/ice/slice/Ice/ObjectAdapterF.ice +0 -31
  847. data/dist/ice/slice/Ice/ObjectFactory.ice +0 -71
  848. data/dist/ice/slice/Ice/Plugin.ice +0 -131
  849. data/dist/ice/slice/Ice/PluginF.ice +0 -36
  850. data/dist/ice/slice/Ice/ProcessF.ice +0 -31
  851. data/dist/ice/slice/Ice/Properties.ice +0 -244
  852. data/dist/ice/slice/Ice/PropertiesF.ice +0 -32
  853. data/dist/ice/slice/Ice/RouterF.ice +0 -31
  854. data/dist/ice/slice/Ice/ServantLocator.ice +0 -136
  855. data/dist/ice/slice/Ice/ServantLocatorF.ice +0 -31
  856. data/dist/ice/slice/Ice/ValueFactory.ice +0 -133
  857. data/dist/ice/slice/IceBox/IceBox.ice +0 -216
  858. data/dist/ice/slice/IceGrid/PluginFacade.ice +0 -329
  859. data/dist/ice/slice/IcePatch2/FileInfo.ice +0 -85
  860. data/dist/ice/slice/IcePatch2/FileServer.ice +0 -191
  861. data/dist/lib/Glacier2/PermissionsVerifierF.rb +0 -30
  862. data/dist/lib/Glacier2/RouterF.rb +0 -25
  863. data/dist/lib/Ice/Communicator.rb +0 -87
  864. data/dist/lib/Ice/CommunicatorF.rb +0 -24
  865. data/dist/lib/Ice/Connection.rb +0 -413
  866. data/dist/lib/Ice/ConnectionF.rb +0 -32
  867. data/dist/lib/Ice/Current.rb +0 -141
  868. data/dist/lib/Ice/Endpoint.rb +0 -187
  869. data/dist/lib/Ice/EndpointF.rb +0 -48
  870. data/dist/lib/Ice/FacetMap.rb +0 -24
  871. data/dist/lib/Ice/ImplicitContext.rb +0 -26
  872. data/dist/lib/Ice/ImplicitContextF.rb +0 -24
  873. data/dist/lib/Ice/Instrumentation.rb +0 -169
  874. data/dist/lib/Ice/InstrumentationF.rb +0 -31
  875. data/dist/lib/Ice/LocalException.rb +0 -1031
  876. data/dist/lib/Ice/LocatorF.rb +0 -30
  877. data/dist/lib/Ice/Logger.rb +0 -24
  878. data/dist/lib/Ice/LoggerF.rb +0 -24
  879. data/dist/lib/Ice/ObjectAdapter.rb +0 -29
  880. data/dist/lib/Ice/ObjectAdapterF.rb +0 -24
  881. data/dist/lib/Ice/ObjectFactory.rb +0 -24
  882. data/dist/lib/Ice/Plugin.rb +0 -30
  883. data/dist/lib/Ice/PluginF.rb +0 -28
  884. data/dist/lib/Ice/ProcessF.rb +0 -25
  885. data/dist/lib/Ice/Properties.rb +0 -25
  886. data/dist/lib/Ice/PropertiesF.rb +0 -29
  887. data/dist/lib/Ice/RouterF.rb +0 -25
  888. data/dist/lib/Ice/ServantLocator.rb +0 -26
  889. data/dist/lib/Ice/ServantLocatorF.rb +0 -24
  890. data/dist/lib/Ice/ValueFactory.rb +0 -28
  891. data/dist/lib/IceBox/IceBox.rb +0 -164
  892. data/dist/lib/IceGrid/PluginFacade.rb +0 -35
  893. data/dist/lib/IcePatch2/FileInfo.rb +0 -115
  894. data/dist/lib/IcePatch2/FileServer.rb +0 -123
  895. data/dist/lib/IcePatch2.rb +0 -5
@@ -1,93 +1,70 @@
1
- //
2
- // Copyright (c) ZeroC, Inc. All rights reserved.
3
- //
1
+ // Copyright (c) ZeroC, Inc.
4
2
 
5
- #include <Ice/Selector.h>
6
- #include <Ice/EventHandler.h>
7
- #include <Ice/Instance.h>
8
- #include <Ice/LoggerUtil.h>
9
- #include <Ice/LocalException.h>
10
- #include <IceUtil/Time.h>
3
+ #include "Selector.h"
4
+ #include "EventHandler.h"
5
+ #include "Ice/LocalExceptions.h"
6
+ #include "Ice/LoggerUtil.h"
7
+ #include "Instance.h"
11
8
 
12
9
  #ifdef ICE_USE_CFSTREAM
13
- # include <CoreFoundation/CoreFoundation.h>
14
- # include <CoreFoundation/CFStream.h>
10
+ # include <CoreFoundation/CFStream.h>
11
+ # include <CoreFoundation/CoreFoundation.h>
15
12
  #endif
16
13
 
14
+ #include <chrono>
15
+ #include <thread>
16
+
17
17
  using namespace std;
18
18
  using namespace IceInternal;
19
19
 
20
20
  #if defined(ICE_USE_KQUEUE)
21
21
  namespace
22
22
  {
23
- struct timespec zeroTimeout = { 0, 0 };
23
+ struct timespec zeroTimeout = {0, 0};
24
24
  }
25
25
  #endif
26
26
 
27
27
  #if defined(ICE_USE_IOCP)
28
28
 
29
- Selector::Selector(const InstancePtr& instance) : _instance(instance)
30
- {
31
- }
32
-
33
- Selector::~Selector()
34
- {
35
- }
29
+ Selector::Selector(const InstancePtr& instance) : _instance(instance) {}
36
30
 
37
- #ifdef ICE_USE_IOCP
38
31
  void
39
32
  Selector::setup(int sizeIO)
40
33
  {
41
- _handle = CreateIoCompletionPort(INVALID_HANDLE_VALUE, ICE_NULLPTR, 0, sizeIO);
42
- if(_handle == ICE_NULLPTR)
34
+ _handle = CreateIoCompletionPort(INVALID_HANDLE_VALUE, nullptr, 0, sizeIO);
35
+ if (_handle == nullptr)
43
36
  {
44
37
  throw Ice::SocketException(__FILE__, __LINE__, GetLastError());
45
38
  }
46
39
  }
47
- #endif
48
40
 
49
41
  void
50
42
  Selector::destroy()
51
43
  {
52
- #ifdef ICE_USE_IOCP
53
44
  CloseHandle(_handle);
54
- #endif
55
45
  }
56
46
 
57
47
  void
58
48
  Selector::initialize(EventHandler* handler)
59
49
  {
60
- if(!handler->getNativeInfo())
50
+ if (!handler->getNativeInfo())
61
51
  {
62
52
  return;
63
53
  }
64
54
 
65
- #ifdef ICE_USE_IOCP
66
55
  SOCKET socket = handler->getNativeInfo()->fd();
67
- if(socket != INVALID_SOCKET)
56
+ if (socket != INVALID_SOCKET)
68
57
  {
69
- if(CreateIoCompletionPort(reinterpret_cast<HANDLE>(socket),
70
- _handle,
71
- reinterpret_cast<ULONG_PTR>(handler),
72
- 0) == ICE_NULLPTR)
58
+ if (CreateIoCompletionPort(
59
+ reinterpret_cast<HANDLE>(socket),
60
+ _handle,
61
+ reinterpret_cast<ULONG_PTR>(handler),
62
+ 0) == nullptr)
73
63
  {
74
64
  throw Ice::SocketException(__FILE__, __LINE__, GetLastError());
75
65
  }
76
66
  }
77
67
  handler->getNativeInfo()->initialize(_handle, reinterpret_cast<ULONG_PTR>(handler));
78
- #else
79
- EventHandlerPtr h = ICE_GET_SHARED_FROM_THIS(handler);
80
- handler->getNativeInfo()->setCompletedHandler(
81
- ref new SocketOperationCompletedHandler(
82
- [=](int operation)
83
- {
84
- //
85
- // Use the reference counted handler to ensure it's not
86
- // destroyed as long as the callback lambda exists.
87
- //
88
- completed(h.get(), static_cast<SocketOperation>(operation));
89
- }));
90
- #endif
91
68
  }
92
69
 
93
70
  void
@@ -95,15 +72,15 @@ Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation
95
72
  {
96
73
  handler->_registered = static_cast<SocketOperation>(handler->_registered & ~remove);
97
74
  handler->_registered = static_cast<SocketOperation>(handler->_registered | add);
98
- if(add & SocketOperationRead && !(handler->_pending & SocketOperationRead))
75
+ if (add & SocketOperationRead && !(handler->_pending & SocketOperationRead))
99
76
  {
100
77
  handler->_pending = static_cast<SocketOperation>(handler->_pending | SocketOperationRead);
101
- completed(handler, SocketOperationRead); // Start an asynchrnous read
78
+ completed(handler, SocketOperationRead); // Start an asynchronous read
102
79
  }
103
- else if(add & SocketOperationWrite && !(handler->_pending & SocketOperationWrite))
80
+ else if (add & SocketOperationWrite && !(handler->_pending & SocketOperationWrite))
104
81
  {
105
82
  handler->_pending = static_cast<SocketOperation>(handler->_pending | SocketOperationWrite);
106
- completed(handler, SocketOperationWrite); // Start an asynchrnous write
83
+ completed(handler, SocketOperationWrite); // Start an asynchronous write
107
84
  }
108
85
  }
109
86
 
@@ -117,12 +94,12 @@ Selector::finish(IceInternal::EventHandler* handler)
117
94
  void
118
95
  Selector::ready(EventHandler* handler, SocketOperation status, bool value)
119
96
  {
120
- if(((handler->_ready & status) != 0) == value)
97
+ if (((handler->_ready & status) != 0) == value)
121
98
  {
122
99
  return; // Nothing to do if ready state already correctly set.
123
100
  }
124
101
 
125
- if(value)
102
+ if (value)
126
103
  {
127
104
  handler->_ready = static_cast<SocketOperation>(handler->_ready | status);
128
105
  }
@@ -133,36 +110,32 @@ Selector::ready(EventHandler* handler, SocketOperation status, bool value)
133
110
  }
134
111
 
135
112
  EventHandler*
136
- #ifdef ICE_USE_IOCP
137
113
  Selector::getNextHandler(SocketOperation& status, DWORD& count, int& error, int timeout)
138
- #else
139
- Selector::getNextHandler(SocketOperation& status, int timeout)
140
- #endif
141
114
  {
142
- #ifdef ICE_USE_IOCP
143
115
  ULONG_PTR key;
144
116
  LPOVERLAPPED ol;
145
117
  error = ERROR_SUCCESS;
146
118
 
147
- if(!GetQueuedCompletionStatus(_handle, &count, &key, &ol, timeout > 0 ? timeout * 1000 : INFINITE))
119
+ if (!GetQueuedCompletionStatus(_handle, &count, &key, &ol, timeout > 0 ? timeout * 1000 : INFINITE))
148
120
  {
149
121
  int err = WSAGetLastError();
150
- if(ol == 0)
122
+ if (ol == nullptr)
151
123
  {
152
- if(err == WAIT_TIMEOUT)
124
+ if (err == WAIT_TIMEOUT)
153
125
  {
154
126
  throw SelectorTimeoutException();
155
127
  }
156
128
  else
157
129
  {
130
+ // This indicates a internal error with the IOCP completion port, we log the error and abort.
158
131
  Ice::SocketException ex(__FILE__, __LINE__, err);
159
132
  Ice::Error out(_instance->initializationData().logger);
160
133
  out << "couldn't dequeue packet from completion port:\n" << ex;
161
- IceUtil::ThreadControl::sleep(IceUtil::Time::seconds(5)); // Sleep 5s to avoid looping
134
+ std::abort();
162
135
  }
163
136
  }
164
137
  AsyncInfo* info = static_cast<AsyncInfo*>(ol);
165
- if(info)
138
+ if (info)
166
139
  {
167
140
  status = info->status;
168
141
  }
@@ -172,7 +145,7 @@ Selector::getNextHandler(SocketOperation& status, int timeout)
172
145
  }
173
146
 
174
147
  AsyncInfo* info = static_cast<AsyncInfo*>(ol);
175
- if(info)
148
+ if (info)
176
149
  {
177
150
  status = info->status;
178
151
  }
@@ -181,56 +154,26 @@ Selector::getNextHandler(SocketOperation& status, int timeout)
181
154
  status = reinterpret_cast<EventHandler*>(key)->_ready;
182
155
  }
183
156
  return reinterpret_cast<EventHandler*>(key);
184
- #else
185
- IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);
186
- while(_events.empty())
187
- {
188
- if(timeout > 0)
189
- {
190
- _monitor.timedWait(IceUtil::Time::seconds(timeout));
191
- if(_events.empty())
192
- {
193
- throw SelectorTimeoutException();
194
- }
195
- }
196
- else
197
- {
198
- _monitor.wait();
199
- }
200
- }
201
- assert(!_events.empty());
202
- IceInternal::EventHandlerPtr handler = _events.front().handler;
203
- const SelectEvent& event = _events.front();
204
- status = event.status;
205
- _events.pop_front();
206
- return handler.get();
207
- #endif
208
157
  }
209
158
 
210
159
  void
211
160
  Selector::completed(EventHandler* handler, SocketOperation op)
212
161
  {
213
- #ifdef ICE_USE_IOCP
214
162
  AsyncInfo* info = 0;
215
163
  NativeInfoPtr nativeInfo = handler->getNativeInfo();
216
- if(nativeInfo)
164
+ if (nativeInfo)
217
165
  {
218
166
  info = nativeInfo->getAsyncInfo(op);
219
167
  }
220
- if(!PostQueuedCompletionStatus(_handle, 0, reinterpret_cast<ULONG_PTR>(handler), info))
168
+ if (!PostQueuedCompletionStatus(_handle, 0, reinterpret_cast<ULONG_PTR>(handler), info))
221
169
  {
222
170
  throw Ice::SocketException(__FILE__, __LINE__, GetLastError());
223
171
  }
224
- #else
225
- IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);
226
- _events.push_back(SelectEvent(handler->shared_from_this(), op));
227
- _monitor.notify();
228
- #endif
229
172
  }
230
173
 
231
- #elif defined(ICE_USE_KQUEUE) || defined(ICE_USE_EPOLL) || defined(ICE_USE_SELECT) || defined(ICE_USE_POLL)
174
+ #elif defined(ICE_USE_EPOLL) || defined(ICE_USE_KQUEUE)
232
175
 
233
- Selector::Selector(const InstancePtr& instance) : _instance(instance), _interrupted(false)
176
+ Selector::Selector(InstancePtr instance) : _instance(std::move(instance))
234
177
  {
235
178
  SOCKET fds[2];
236
179
  createPipe(fds);
@@ -238,76 +181,60 @@ Selector::Selector(const InstancePtr& instance) : _instance(instance), _interrup
238
181
  _fdIntrWrite = fds[1];
239
182
  _selecting = false;
240
183
 
241
- #if defined(ICE_USE_EPOLL)
184
+ # if defined(ICE_USE_EPOLL)
242
185
  _events.resize(256);
243
186
  _queueFd = epoll_create(1);
244
- if(_queueFd < 0)
187
+ if (_queueFd < 0)
245
188
  {
246
189
  throw Ice::SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
247
190
  }
248
191
 
249
192
  epoll_event event;
250
193
  memset(&event, 0, sizeof(epoll_event));
251
- event.data.ptr = 0;
194
+ event.data.ptr = nullptr;
252
195
  event.events = EPOLLIN;
253
- if(epoll_ctl(_queueFd, EPOLL_CTL_ADD, _fdIntrRead, &event) != 0)
196
+ if (epoll_ctl(_queueFd, EPOLL_CTL_ADD, _fdIntrRead, &event) != 0)
254
197
  {
255
198
  Ice::Error out(_instance->initializationData().logger);
256
- out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
199
+ out << "error while updating selector:\n" << IceInternal::errorToString(IceInternal::getSocketErrno());
257
200
  }
258
- #elif defined(ICE_USE_KQUEUE)
201
+ # else // ICE_USE_KQUEUE
259
202
  _events.resize(256);
260
203
  _queueFd = kqueue();
261
- if(_queueFd < 0)
204
+ if (_queueFd < 0)
262
205
  {
263
206
  throw Ice::SocketException(__FILE__, __LINE__, getSocketErrno());
264
207
  }
265
208
 
266
209
  struct kevent ev;
267
210
  EV_SET(&ev, _fdIntrRead, EVFILT_READ, EV_ADD, 0, 0, 0);
268
- int rs = kevent(_queueFd, &ev, 1, 0, 0, 0);
269
- if(rs < 0)
211
+ int rs = kevent(_queueFd, &ev, 1, nullptr, 0, nullptr);
212
+ if (rs < 0)
270
213
  {
271
214
  Ice::Error out(_instance->initializationData().logger);
272
- out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
273
- }
274
- #elif defined(ICE_USE_SELECT)
275
- FD_ZERO(&_readFdSet);
276
- FD_ZERO(&_writeFdSet);
277
- FD_ZERO(&_errorFdSet);
278
- FD_SET(_fdIntrRead, &_readFdSet);
279
- #else
280
- struct pollfd pollFd;
281
- pollFd.fd = _fdIntrRead;
282
- pollFd.events = POLLIN;
283
- _pollFdSet.push_back(pollFd);
284
- #endif
285
- }
286
-
287
- Selector::~Selector()
288
- {
215
+ out << "error while updating selector:\n" << IceInternal::errorToString(IceInternal::getSocketErrno());
216
+ }
217
+ # endif
289
218
  }
290
219
 
291
220
  void
292
221
  Selector::destroy()
293
222
  {
294
- #if defined(ICE_USE_KQUEUE) || defined(ICE_USE_EPOLL)
295
223
  try
296
224
  {
297
225
  closeSocket(_queueFd);
298
226
  }
299
- catch(const Ice::LocalException& ex)
227
+ catch (const Ice::LocalException& ex)
300
228
  {
301
229
  Ice::Error out(_instance->initializationData().logger);
302
230
  out << "exception in selector while calling closeSocket():\n" << ex;
303
231
  }
304
- #endif
305
232
 
306
233
  try
307
234
  {
308
235
  closeSocket(_fdIntrWrite);
309
236
  }
310
- catch(const Ice::LocalException& ex)
237
+ catch (const Ice::LocalException& ex)
311
238
  {
312
239
  Ice::Error out(_instance->initializationData().logger);
313
240
  out << "exception in selector while calling closeSocket():\n" << ex;
@@ -317,7 +244,7 @@ Selector::destroy()
317
244
  {
318
245
  closeSocket(_fdIntrRead);
319
246
  }
320
- catch(const Ice::LocalException& ex)
247
+ catch (const Ice::LocalException& ex)
321
248
  {
322
249
  Ice::Error out(_instance->initializationData().logger);
323
250
  out << "exception in selector while calling closeSocket():\n" << ex;
@@ -330,14 +257,14 @@ Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation
330
257
  SocketOperation previous = handler->_registered;
331
258
  handler->_registered = static_cast<SocketOperation>(handler->_registered & ~remove);
332
259
  handler->_registered = static_cast<SocketOperation>(handler->_registered | add);
333
- if(previous == handler->_registered)
260
+ if (previous == handler->_registered)
334
261
  {
335
262
  return;
336
263
  }
337
264
  checkReady(handler);
338
265
 
339
266
  NativeInfoPtr nativeInfo = handler->getNativeInfo();
340
- if(nativeInfo && nativeInfo->fd() != INVALID_SOCKET)
267
+ if (nativeInfo && nativeInfo->fd() != INVALID_SOCKET)
341
268
  {
342
269
  updateSelectorForEventHandler(handler, remove, add);
343
270
  }
@@ -346,7 +273,7 @@ Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation
346
273
  void
347
274
  Selector::enable(EventHandler* handler, SocketOperation status)
348
275
  {
349
- if(!(handler->_disabled & status))
276
+ if (!(handler->_disabled & status))
350
277
  {
351
278
  return;
352
279
  }
@@ -354,53 +281,50 @@ Selector::enable(EventHandler* handler, SocketOperation status)
354
281
  checkReady(handler);
355
282
 
356
283
  NativeInfoPtr nativeInfo = handler->getNativeInfo();
357
- if(!nativeInfo || nativeInfo->fd() == INVALID_SOCKET)
284
+ if (!nativeInfo || nativeInfo->fd() == INVALID_SOCKET)
358
285
  {
359
286
  return;
360
287
  }
361
288
 
362
- if(handler->_registered & status)
289
+ if (handler->_registered & status)
363
290
  {
364
- #if defined(ICE_USE_EPOLL)
291
+ # if defined(ICE_USE_EPOLL)
365
292
  SOCKET fd = nativeInfo->fd();
366
- SocketOperation previous = static_cast<SocketOperation>(handler->_registered & ~(handler->_disabled | status));
367
- SocketOperation newStatus = static_cast<SocketOperation>(handler->_registered & ~handler->_disabled);
293
+ auto previous = static_cast<SocketOperation>(handler->_registered & ~(handler->_disabled | status));
294
+ auto newStatus = static_cast<SocketOperation>(handler->_registered & ~handler->_disabled);
368
295
  epoll_event event;
369
296
  memset(&event, 0, sizeof(epoll_event));
370
297
  event.data.ptr = handler;
371
- if(newStatus & SocketOperationRead)
298
+ if (newStatus & SocketOperationRead)
372
299
  {
373
300
  event.events |= EPOLLIN;
374
301
  }
375
- if(newStatus & SocketOperationWrite)
302
+ if (newStatus & SocketOperationWrite)
376
303
  {
377
304
  event.events |= EPOLLOUT;
378
305
  }
379
- if(epoll_ctl(_queueFd, previous ? EPOLL_CTL_MOD : EPOLL_CTL_ADD, fd, &event) != 0)
306
+ if (epoll_ctl(_queueFd, previous ? EPOLL_CTL_MOD : EPOLL_CTL_ADD, fd, &event) != 0)
380
307
  {
381
308
  Ice::Error out(_instance->initializationData().logger);
382
- out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
309
+ out << "error while updating selector:\n" << IceInternal::errorToString(IceInternal::getSocketErrno());
383
310
  }
384
- #elif defined(ICE_USE_KQUEUE)
311
+ # else // ICE_USE_KQUEUE
385
312
  struct kevent ev;
386
313
  SOCKET fd = handler->getNativeInfo()->fd();
387
314
  EV_SET(&ev, fd, status == SocketOperationRead ? EVFILT_READ : EVFILT_WRITE, EV_ENABLE, 0, 0, handler);
388
315
  _changes.push_back(ev);
389
- if(_selecting)
316
+ if (_selecting)
390
317
  {
391
318
  updateSelector();
392
319
  }
393
- #else
394
- _changes.push_back(make_pair(handler, static_cast<SocketOperation>(handler->_registered & ~handler->_disabled)));
395
- wakeup();
396
- #endif
320
+ # endif
397
321
  }
398
322
  }
399
323
 
400
324
  void
401
325
  Selector::disable(EventHandler* handler, SocketOperation status)
402
326
  {
403
- if(handler->_disabled & status)
327
+ if (handler->_disabled & status)
404
328
  {
405
329
  return;
406
330
  }
@@ -408,61 +332,55 @@ Selector::disable(EventHandler* handler, SocketOperation status)
408
332
  checkReady(handler);
409
333
 
410
334
  NativeInfoPtr nativeInfo = handler->getNativeInfo();
411
- if(!nativeInfo || nativeInfo->fd() == INVALID_SOCKET)
335
+ if (!nativeInfo || nativeInfo->fd() == INVALID_SOCKET)
412
336
  {
413
337
  return;
414
338
  }
415
339
 
416
- if(handler->_registered & status)
340
+ if (handler->_registered & status)
417
341
  {
418
- #if defined(ICE_USE_EPOLL)
342
+ # if defined(ICE_USE_EPOLL)
419
343
  SOCKET fd = nativeInfo->fd();
420
- SocketOperation newStatus = static_cast<SocketOperation>(handler->_registered & ~handler->_disabled);
344
+ auto newStatus = static_cast<SocketOperation>(handler->_registered & ~handler->_disabled);
421
345
  epoll_event event;
422
346
  memset(&event, 0, sizeof(epoll_event));
423
347
  event.data.ptr = handler;
424
- if(newStatus & SocketOperationRead)
348
+ if (newStatus & SocketOperationRead)
425
349
  {
426
350
  event.events |= EPOLLIN;
427
351
  }
428
- if(newStatus & SocketOperationWrite)
352
+ if (newStatus & SocketOperationWrite)
429
353
  {
430
354
  event.events |= EPOLLOUT;
431
355
  }
432
- if(epoll_ctl(_queueFd, newStatus ? EPOLL_CTL_MOD : EPOLL_CTL_DEL, fd, &event) != 0)
356
+ if (epoll_ctl(_queueFd, newStatus ? EPOLL_CTL_MOD : EPOLL_CTL_DEL, fd, &event) != 0)
433
357
  {
434
358
  Ice::Error out(_instance->initializationData().logger);
435
- out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
359
+ out << "error while updating selector:\n" << IceInternal::errorToString(IceInternal::getSocketErrno());
436
360
  }
437
- #elif defined(ICE_USE_KQUEUE)
361
+ # else // ICE_USE_KQUEUE
438
362
  SOCKET fd = nativeInfo->fd();
439
363
  struct kevent ev;
440
364
  EV_SET(&ev, fd, status == SocketOperationRead ? EVFILT_READ : EVFILT_WRITE, EV_DISABLE, 0, 0, handler);
441
365
  _changes.push_back(ev);
442
- if(_selecting)
366
+ if (_selecting)
443
367
  {
444
368
  updateSelector();
445
369
  }
446
- #else
447
- _changes.push_back(make_pair(handler, static_cast<SocketOperation>(handler->_registered & ~handler->_disabled)));
448
- wakeup();
449
- #endif
370
+ # endif
450
371
  }
451
372
  }
452
373
 
453
374
  bool
454
375
  Selector::finish(EventHandler* handler, bool closeNow)
455
376
  {
456
- if(handler->_registered)
377
+ if (handler->_registered)
457
378
  {
458
379
  update(handler, handler->_registered, SocketOperationNone);
459
- #if !defined(ICE_USE_EPOLL) && !defined(ICE_USE_KQUEUE)
460
- return false; // Don't close now if selecting
461
- #endif
462
380
  }
463
381
 
464
- #if defined(ICE_USE_KQUEUE)
465
- if(closeNow && !_changes.empty())
382
+ # if defined(ICE_USE_KQUEUE)
383
+ if (closeNow && !_changes.empty())
466
384
  {
467
385
  //
468
386
  // Update selector now to remove the FD from the kqueue if
@@ -471,12 +389,7 @@ Selector::finish(EventHandler* handler, bool closeNow)
471
389
  //
472
390
  updateSelector();
473
391
  }
474
- #elif !defined(ICE_USE_EPOLL)
475
- if(!_changes.empty())
476
- {
477
- return false;
478
- }
479
- #endif
392
+ # endif
480
393
 
481
394
  return closeNow;
482
395
  }
@@ -484,22 +397,22 @@ Selector::finish(EventHandler* handler, bool closeNow)
484
397
  void
485
398
  Selector::ready(EventHandler* handler, SocketOperation status, bool value)
486
399
  {
487
- if(((handler->_ready & status) != 0) == value)
400
+ if (((handler->_ready & status) != 0) == value)
488
401
  {
489
402
  return; // Nothing to do if ready state already correctly set.
490
403
  }
491
404
 
492
- if(status & SocketOperationConnect)
405
+ if (status & SocketOperationConnect)
493
406
  {
494
407
  NativeInfoPtr nativeInfo = handler->getNativeInfo();
495
- if(nativeInfo && nativeInfo->newFd() && handler->_registered)
408
+ if (nativeInfo && nativeInfo->newFd() && handler->_registered)
496
409
  {
497
410
  // If new FD is set after connect, register the FD with the selector.
498
411
  updateSelectorForEventHandler(handler, SocketOperationNone, handler->_registered);
499
412
  }
500
413
  }
501
414
 
502
- if(value)
415
+ if (value)
503
416
  {
504
417
  handler->_ready = static_cast<SocketOperation>(handler->_ready | status);
505
418
  }
@@ -513,14 +426,14 @@ Selector::ready(EventHandler* handler, SocketOperation status, bool value)
513
426
  void
514
427
  Selector::wakeup()
515
428
  {
516
- if(_selecting && !_interrupted)
429
+ if (_selecting && !_interrupted)
517
430
  {
518
431
  char c = 0;
519
- while(true)
432
+ while (true)
520
433
  {
521
- if(::write(_fdIntrWrite, &c, 1) == SOCKET_ERROR)
434
+ if (::write(_fdIntrWrite, &c, 1) == SOCKET_ERROR)
522
435
  {
523
- if(interrupted())
436
+ if (interrupted())
524
437
  {
525
438
  continue;
526
439
  }
@@ -536,15 +449,15 @@ Selector::wakeup()
536
449
  void
537
450
  Selector::startSelect()
538
451
  {
539
- if(_interrupted)
452
+ if (_interrupted)
540
453
  {
541
454
  char c;
542
- while(true)
455
+ while (true)
543
456
  {
544
457
  ssize_t ret = ::read(_fdIntrRead, &c, 1);
545
- if(ret == SOCKET_ERROR)
458
+ if (ret == SOCKET_ERROR)
546
459
  {
547
- if(interrupted())
460
+ if (interrupted())
548
461
  {
549
462
  continue;
550
463
  }
@@ -555,12 +468,12 @@ Selector::startSelect()
555
468
  _interrupted = false;
556
469
  }
557
470
 
558
- #if !defined(ICE_USE_EPOLL)
559
- if(!_changes.empty())
471
+ # if defined(ICE_USE_KQUEUE)
472
+ if (!_changes.empty())
560
473
  {
561
474
  updateSelector();
562
475
  }
563
- #endif
476
+ # endif
564
477
  _selecting = true;
565
478
 
566
479
  //
@@ -571,96 +484,41 @@ Selector::startSelect()
571
484
  }
572
485
 
573
486
  void
574
- Selector::finishSelect(vector<pair<EventHandler*, SocketOperation> >& handlers)
487
+ Selector::finishSelect(vector<pair<EventHandler*, SocketOperation>>& handlers)
575
488
  {
576
489
  _selecting = false;
577
490
 
578
491
  assert(handlers.empty());
579
492
 
580
- #if defined(ICE_USE_POLL) || defined(ICE_USE_SELECT)
581
- if(_interrupted) // Interrupted, we have to process the interrupt before returning any handlers
582
- {
583
- return;
584
- }
585
- #endif
586
-
587
- #if defined(ICE_USE_POLL)
588
- for(vector<struct pollfd>::const_iterator r = _pollFdSet.begin(); r != _pollFdSet.end(); ++r)
589
- #else
590
- for(int i = 0; i < _count; ++i)
591
- #endif
493
+ for (int i = 0; i < _count; ++i)
592
494
  {
593
495
  pair<EventHandler*, SocketOperation> p;
594
496
 
595
- #if defined(ICE_USE_EPOLL)
497
+ # if defined(ICE_USE_EPOLL)
596
498
  struct epoll_event& ev = _events[i];
597
499
  p.first = reinterpret_cast<EventHandler*>(ev.data.ptr);
598
- p.second = static_cast<SocketOperation>(((ev.events & (EPOLLIN | EPOLLERR)) ?
599
- SocketOperationRead : SocketOperationNone) |
600
- ((ev.events & (EPOLLOUT | EPOLLERR)) ?
601
- SocketOperationWrite : SocketOperationNone));
602
- #elif defined(ICE_USE_KQUEUE)
500
+ p.second = static_cast<SocketOperation>(
501
+ ((ev.events & (EPOLLIN | EPOLLERR)) ? SocketOperationRead : SocketOperationNone) |
502
+ ((ev.events & (EPOLLOUT | EPOLLERR)) ? SocketOperationWrite : SocketOperationNone));
503
+ # else // ICE_USE_KQUEUE
603
504
  struct kevent& ev = _events[static_cast<size_t>(i)];
604
- if(ev.flags & EV_ERROR)
505
+ if (ev.flags & EV_ERROR)
605
506
  {
606
507
  Ice::Error out(_instance->initializationData().logger);
607
- out << "selector returned error:\n" << IceUtilInternal::errorToString(static_cast<int>(ev.data));
508
+ out << "selector returned error:\n" << IceInternal::errorToString(static_cast<int>(ev.data));
608
509
  continue;
609
510
  }
610
511
  p.first = reinterpret_cast<EventHandler*>(ev.udata);
611
512
  p.second = (ev.filter == EVFILT_READ) ? SocketOperationRead : SocketOperationWrite;
612
- #elif defined(ICE_USE_SELECT)
613
- //
614
- // Round robin for the filedescriptors.
615
- //
616
- SOCKET fd;
617
- p.second = SocketOperationNone;
618
- if(i < _selectedReadFdSet.fd_count)
619
- {
620
- fd = _selectedReadFdSet.fd_array[i];
621
- p.second = static_cast<SocketOperation>(p.second | SocketOperationRead);
622
- }
623
- else if(i < _selectedWriteFdSet.fd_count + _selectedReadFdSet.fd_count)
624
- {
625
- fd = _selectedWriteFdSet.fd_array[i - _selectedReadFdSet.fd_count];
626
- p.second = static_cast<SocketOperation>(p.second | SocketOperationWrite);
627
- }
628
- else
629
- {
630
- fd = _selectedErrorFdSet.fd_array[i - _selectedReadFdSet.fd_count - _selectedWriteFdSet.fd_count];
631
- p.second = static_cast<SocketOperation>(p.second | SocketOperationConnect);
632
- }
633
-
634
- assert(fd != _fdIntrRead);
635
- p.first = _handlers[fd];
636
- #else
637
- if(r->revents == 0)
638
- {
639
- continue;
640
- }
641
-
642
- SOCKET fd = r->fd;
643
- assert(_handlers.find(fd) != _handlers.end());
644
- p.first = _handlers[fd];
645
- p.second = SocketOperationNone;
646
- if(r->revents & (POLLIN | POLLERR | POLLHUP))
647
- {
648
- p.second = static_cast<SocketOperation>(p.second | SocketOperationRead);
649
- }
650
- if(r->revents & (POLLOUT | POLLERR | POLLHUP))
651
- {
652
- p.second = static_cast<SocketOperation>(p.second | SocketOperationWrite);
653
- }
654
- assert(p.second);
655
- #endif
656
- if(!p.first)
513
+ # endif
514
+ if (!p.first)
657
515
  {
658
516
  continue; // Interrupted
659
517
  }
660
518
 
661
- map<EventHandlerPtr, SocketOperation>::iterator q = _readyHandlers.find(ICE_GET_SHARED_FROM_THIS(p.first));
519
+ auto q = _readyHandlers.find(p.first->shared_from_this());
662
520
 
663
- if(q != _readyHandlers.end()) // Handler will be added by the loop below
521
+ if (q != _readyHandlers.end()) // Handler will be added by the loop below
664
522
  {
665
523
  q->second = p.second; // We just remember which operations are ready here.
666
524
  }
@@ -670,38 +528,38 @@ Selector::finishSelect(vector<pair<EventHandler*, SocketOperation> >& handlers)
670
528
  }
671
529
  }
672
530
 
673
- for(map<EventHandlerPtr, SocketOperation>::iterator q = _readyHandlers.begin(); q != _readyHandlers.end(); ++q)
531
+ for (auto& readyHandler : _readyHandlers)
674
532
  {
675
533
  pair<EventHandler*, SocketOperation> p;
676
- p.first = q->first.get();
534
+ p.first = readyHandler.first.get();
677
535
  p.second = static_cast<SocketOperation>(p.first->_ready & ~p.first->_disabled & p.first->_registered);
678
- p.second = static_cast<SocketOperation>(p.second | q->second);
679
- if(p.second)
536
+ p.second = static_cast<SocketOperation>(p.second | readyHandler.second);
537
+ if (p.second)
680
538
  {
681
539
  handlers.push_back(p);
682
540
  }
683
541
 
684
542
  //
685
- // Reset the operation, it's only used by this method to temporarly store the socket status
543
+ // Reset the operation, it's only used by this method to temporarily store the socket status
686
544
  // return by the select operation above.
687
545
  //
688
- q->second = SocketOperationNone;
546
+ readyHandler.second = SocketOperationNone;
689
547
  }
690
548
  }
691
549
 
692
550
  void
693
551
  Selector::select(int timeout)
694
552
  {
695
- if(_selectNow)
553
+ if (_selectNow)
696
554
  {
697
555
  timeout = 0;
698
556
  }
699
- else if(timeout > 0)
557
+ else if (timeout > 0)
700
558
  {
701
- // kpoll and select use seconds, epoll and poll use milliseconds
702
- #if !defined(ICE_USE_KQUEUE) && !defined(ICE_USE_SELECT)
703
- timeout = timeout * 1000;
704
- #endif
559
+ // kqueue use seconds, epoll use milliseconds
560
+ # ifdef ICE_USE_EPOLL
561
+ timeout = timeout * 1000;
562
+ # endif
705
563
  }
706
564
  else
707
565
  {
@@ -709,68 +567,50 @@ Selector::select(int timeout)
709
567
  }
710
568
 
711
569
  int spuriousWakeup = 0;
712
- while(true)
570
+ while (true)
713
571
  {
714
- #if defined(ICE_USE_EPOLL)
572
+ # if defined(ICE_USE_EPOLL)
715
573
  _count = epoll_wait(_queueFd, &_events[0], _events.size(), timeout);
716
- #elif defined(ICE_USE_KQUEUE)
574
+ # else // ICE_USE_KQUEUE
717
575
  assert(!_events.empty());
718
- if(timeout >= 0)
576
+ if (timeout >= 0)
719
577
  {
720
- struct timespec ts;
721
- ts.tv_sec = timeout;
722
- ts.tv_nsec = 0;
723
- _count = kevent(_queueFd, 0, 0, &_events[0], static_cast<int>(_events.size()), &ts);
578
+ timespec ts{.tv_sec = timeout, .tv_nsec = 0};
579
+ _count = kevent(_queueFd, nullptr, 0, &_events[0], static_cast<int>(_events.size()), &ts);
724
580
  }
725
581
  else
726
582
  {
727
- _count = kevent(_queueFd, 0, 0, &_events[0], static_cast<int>(_events.size()), 0);
583
+ _count = kevent(_queueFd, nullptr, 0, &_events[0], static_cast<int>(_events.size()), nullptr);
728
584
  }
729
- #elif defined(ICE_USE_SELECT)
730
- fd_set* rFdSet = fdSetCopy(_selectedReadFdSet, _readFdSet);
731
- fd_set* wFdSet = fdSetCopy(_selectedWriteFdSet, _writeFdSet);
732
- fd_set* eFdSet = fdSetCopy(_selectedErrorFdSet, _errorFdSet);
733
- if(timeout >= 0)
734
- {
735
- struct timeval tv;
736
- tv.tv_sec = timeout;
737
- tv.tv_usec = 0;
738
- _count = ::select(0, rFdSet, wFdSet, eFdSet, &tv); // The first parameter is ignored on Windows
739
- }
740
- else
741
- {
742
- _count = ::select(0, rFdSet, wFdSet, eFdSet, 0); // The first parameter is ignored on Windows
743
- }
744
- #else
745
- _count = poll(&_pollFdSet[0], _pollFdSet.size(), timeout);
746
- #endif
585
+ # endif
747
586
 
748
- if(_count == SOCKET_ERROR)
587
+ if (_count == SOCKET_ERROR)
749
588
  {
750
- if(interrupted())
589
+ if (interrupted())
751
590
  {
752
591
  continue;
753
592
  }
754
593
 
594
+ // This indicates a internal error with the selector, we log the error and abort.
755
595
  Ice::SocketException ex(__FILE__, __LINE__, IceInternal::getSocketErrno());
756
596
  Ice::Error out(_instance->initializationData().logger);
757
597
  out << "selector failed:\n" << ex;
758
- IceUtil::ThreadControl::sleep(IceUtil::Time::seconds(5)); // Sleep 5s to avoid looping
598
+ std::abort();
759
599
  }
760
- else if(_count == 0 && timeout < 0)
600
+ else if (_count == 0 && timeout < 0)
761
601
  {
762
- if(++spuriousWakeup > 100)
602
+ if (++spuriousWakeup > 100)
763
603
  {
764
604
  spuriousWakeup = 0;
765
605
  _instance->initializationData().logger->warning("spurious selector wakeup");
766
606
  }
767
- IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(1));
607
+ std::this_thread::sleep_for(1ms);
768
608
  continue;
769
609
  }
770
610
  break;
771
611
  }
772
612
 
773
- if(_count == 0 && !_selectNow)
613
+ if (_count == 0 && !_selectNow)
774
614
  {
775
615
  throw SelectorTimeoutException();
776
616
  }
@@ -779,151 +619,65 @@ Selector::select(int timeout)
779
619
  void
780
620
  Selector::checkReady(EventHandler* handler)
781
621
  {
782
- if(handler->_ready & ~handler->_disabled & handler->_registered)
622
+ if (handler->_ready & ~handler->_disabled & handler->_registered)
783
623
  {
784
- _readyHandlers.insert(make_pair(ICE_GET_SHARED_FROM_THIS(handler), SocketOperationNone));
624
+ _readyHandlers.insert(make_pair(handler->shared_from_this(), SocketOperationNone));
785
625
  wakeup();
786
626
  }
787
627
  else
788
628
  {
789
- map<EventHandlerPtr, SocketOperation>::iterator p = _readyHandlers.find(ICE_GET_SHARED_FROM_THIS(handler));
790
- if(p != _readyHandlers.end())
629
+ auto p = _readyHandlers.find(handler->shared_from_this());
630
+ if (p != _readyHandlers.end())
791
631
  {
792
632
  _readyHandlers.erase(p);
793
633
  }
794
634
  }
795
635
  }
796
636
 
637
+ # if defined(ICE_USE_KQUEUE)
797
638
  void
798
639
  Selector::updateSelector()
799
640
  {
800
- #if defined(ICE_USE_KQUEUE)
801
- int rs = kevent(_queueFd, &_changes[0], static_cast<int>(_changes.size()),
802
- &_changes[0], static_cast<int>(_changes.size()), &zeroTimeout);
803
- if(rs < 0)
641
+ int rs = kevent(
642
+ _queueFd,
643
+ &_changes[0],
644
+ static_cast<int>(_changes.size()),
645
+ &_changes[0],
646
+ static_cast<int>(_changes.size()),
647
+ &zeroTimeout);
648
+ if (rs < 0)
804
649
  {
805
650
  Ice::Error out(_instance->initializationData().logger);
806
- out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
651
+ out << "error while updating selector:\n" << IceInternal::errorToString(IceInternal::getSocketErrno());
807
652
  }
808
653
  else
809
654
  {
810
- for(int i = 0; i < rs; ++i)
655
+ for (int i = 0; i < rs; ++i)
811
656
  {
812
657
  //
813
658
  // Check for errors, we ignore EINPROGRESS that started showing up with macOS Sierra
814
659
  // and which occurs when another thread removes the FD from the kqueue (see ICE-7419).
815
660
  //
816
- if(_changes[static_cast<size_t>(i)].flags & EV_ERROR &&
817
- _changes[static_cast<size_t>(i)].data != EINPROGRESS)
661
+ if (_changes[static_cast<size_t>(i)].flags & EV_ERROR &&
662
+ _changes[static_cast<size_t>(i)].data != EINPROGRESS)
818
663
  {
819
664
  Ice::Error out(_instance->initializationData().logger);
820
665
  out << "error while updating selector:\n"
821
- << IceUtilInternal::errorToString(static_cast<int>(_changes[static_cast<size_t>(i)].data));
822
- }
823
- }
824
- }
825
- _changes.clear();
826
- #elif !defined(ICE_USE_EPOLL)
827
- assert(!_selecting);
828
-
829
- for(vector<pair<EventHandler*, SocketOperation> >::const_iterator p = _changes.begin(); p != _changes.end(); ++p)
830
- {
831
- EventHandler* handler = p->first;
832
- SocketOperation status = p->second;
833
-
834
- SOCKET fd = handler->getNativeInfo()->fd();
835
- if(status)
836
- {
837
- #if defined(ICE_USE_SELECT)
838
- if(status & SocketOperationRead)
839
- {
840
- FD_SET(fd, &_readFdSet);
841
- }
842
- else
843
- {
844
- FD_CLR(fd, &_readFdSet);
845
- }
846
- if(status & SocketOperationWrite)
847
- {
848
- FD_SET(fd, &_writeFdSet);
666
+ << IceInternal::errorToString(static_cast<int>(_changes[static_cast<size_t>(i)].data));
849
667
  }
850
- else
851
- {
852
- FD_CLR(fd, &_writeFdSet);
853
- }
854
- if(status & SocketOperationConnect)
855
- {
856
- FD_SET(fd, &_writeFdSet);
857
- FD_SET(fd, &_errorFdSet);
858
- }
859
- else
860
- {
861
- FD_CLR(fd, &_writeFdSet);
862
- FD_CLR(fd, &_errorFdSet);
863
- }
864
- _handlers[fd] = handler;
865
- #else
866
- short events = 0;
867
- if(status & SocketOperationRead)
868
- {
869
- events |= POLLIN;
870
- }
871
- if(status & SocketOperationWrite)
872
- {
873
- events |= POLLOUT;
874
- }
875
- map<SOCKET, EventHandler*>::const_iterator q = _handlers.find(fd);
876
- if(q == _handlers.end())
877
- {
878
- struct pollfd pollFd;
879
- pollFd.fd = fd;
880
- pollFd.events = events;
881
- pollFd.revents = 0;
882
- _pollFdSet.push_back(pollFd);
883
- _handlers.insert(make_pair(fd, handler));
884
- }
885
- else
886
- {
887
- for(vector<struct pollfd>::iterator r = _pollFdSet.begin(); r != _pollFdSet.end(); ++r)
888
- {
889
- if(r->fd == fd)
890
- {
891
- r->events = events;
892
- break;
893
- }
894
- }
895
- }
896
- #endif
897
- }
898
- else
899
- {
900
- #if defined(ICE_USE_SELECT)
901
- FD_CLR(fd, &_readFdSet);
902
- FD_CLR(fd, &_writeFdSet);
903
- FD_CLR(fd, &_errorFdSet);
904
- #else
905
- for(vector<struct pollfd>::iterator r = _pollFdSet.begin(); r != _pollFdSet.end(); ++r)
906
- {
907
- if(r->fd == fd)
908
- {
909
- _pollFdSet.erase(r);
910
- break;
911
- }
912
- }
913
- #endif
914
- _handlers.erase(fd);
915
668
  }
916
669
  }
917
670
  _changes.clear();
918
- #endif
919
671
  }
672
+ # endif
920
673
 
921
674
  void
922
- Selector::updateSelectorForEventHandler(EventHandler* handler,
923
- ICE_MAYBE_UNUSED SocketOperation remove,
924
- ICE_MAYBE_UNUSED SocketOperation add)
675
+ Selector::updateSelectorForEventHandler(
676
+ EventHandler* handler,
677
+ [[maybe_unused]] SocketOperation remove,
678
+ [[maybe_unused]] SocketOperation add)
925
679
  {
926
- #if defined(ICE_USE_EPOLL)
680
+ # if defined(ICE_USE_EPOLL)
927
681
  SocketOperation previous = handler->_registered;
928
682
  previous = static_cast<SocketOperation>(previous & ~add);
929
683
  previous = static_cast<SocketOperation>(previous | remove);
@@ -933,29 +687,29 @@ Selector::updateSelectorForEventHandler(EventHandler* handler,
933
687
  memset(&event, 0, sizeof(epoll_event));
934
688
  event.data.ptr = handler;
935
689
  SocketOperation status = handler->_registered;
936
- if(handler->_disabled)
690
+ if (handler->_disabled)
937
691
  {
938
692
  status = static_cast<SocketOperation>(status & ~handler->_disabled);
939
693
  previous = static_cast<SocketOperation>(previous & ~handler->_disabled);
940
694
  }
941
- if(status & SocketOperationRead)
695
+ if (status & SocketOperationRead)
942
696
  {
943
697
  event.events |= EPOLLIN;
944
698
  }
945
- if(status & SocketOperationWrite)
699
+ if (status & SocketOperationWrite)
946
700
  {
947
701
  event.events |= EPOLLOUT;
948
702
  }
949
703
  int op;
950
- if(!previous && status)
704
+ if (!previous && status)
951
705
  {
952
706
  op = EPOLL_CTL_ADD;
953
707
  }
954
- else if(previous && !status)
708
+ else if (previous && !status)
955
709
  {
956
710
  op = EPOLL_CTL_DEL;
957
711
  }
958
- else if(previous == status)
712
+ else if (previous == status)
959
713
  {
960
714
  return;
961
715
  }
@@ -963,48 +717,57 @@ Selector::updateSelectorForEventHandler(EventHandler* handler,
963
717
  {
964
718
  op = EPOLL_CTL_MOD;
965
719
  }
966
- if(epoll_ctl(_queueFd, op, fd, &event) != 0)
720
+ if (epoll_ctl(_queueFd, op, fd, &event) != 0)
967
721
  {
968
722
  Ice::Error out(_instance->initializationData().logger);
969
- out << "error while updating selector:\n" << IceUtilInternal::errorToString(IceInternal::getSocketErrno());
723
+ out << "error while updating selector:\n" << IceInternal::errorToString(IceInternal::getSocketErrno());
970
724
  }
971
- #elif defined(ICE_USE_KQUEUE)
725
+ # else // ICE_USE_KQUEUE
972
726
  SOCKET fd = handler->getNativeInfo()->fd();
973
727
  assert(fd != INVALID_SOCKET);
974
- if(remove & SocketOperationRead)
728
+ if (remove & SocketOperationRead)
975
729
  {
976
730
  struct kevent ev;
977
731
  EV_SET(&ev, fd, EVFILT_READ, EV_DELETE, 0, 0, handler);
978
732
  _changes.push_back(ev);
979
733
  }
980
- if(remove & SocketOperationWrite)
734
+ if (remove & SocketOperationWrite)
981
735
  {
982
736
  struct kevent ev;
983
737
  EV_SET(&ev, fd, EVFILT_WRITE, EV_DELETE, 0, 0, handler);
984
738
  _changes.push_back(ev);
985
739
  }
986
- if(add & SocketOperationRead)
740
+ if (add & SocketOperationRead)
987
741
  {
988
742
  struct kevent ev;
989
- EV_SET(&ev, fd, EVFILT_READ, EV_ADD | (handler->_disabled & SocketOperationRead ? EV_DISABLE : 0), 0, 0,
990
- handler);
743
+ EV_SET(
744
+ &ev,
745
+ fd,
746
+ EVFILT_READ,
747
+ EV_ADD | (handler->_disabled & SocketOperationRead ? EV_DISABLE : 0),
748
+ 0,
749
+ 0,
750
+ handler);
991
751
  _changes.push_back(ev);
992
752
  }
993
- if(add & SocketOperationWrite)
753
+ if (add & SocketOperationWrite)
994
754
  {
995
755
  struct kevent ev;
996
- EV_SET(&ev, fd, EVFILT_WRITE, EV_ADD | (handler->_disabled & SocketOperationWrite ? EV_DISABLE : 0), 0, 0,
997
- handler);
756
+ EV_SET(
757
+ &ev,
758
+ fd,
759
+ EVFILT_WRITE,
760
+ EV_ADD | (handler->_disabled & SocketOperationWrite ? EV_DISABLE : 0),
761
+ 0,
762
+ 0,
763
+ handler);
998
764
  _changes.push_back(ev);
999
765
  }
1000
- if(_selecting)
766
+ if (_selecting)
1001
767
  {
1002
768
  updateSelector();
1003
769
  }
1004
- #else
1005
- _changes.push_back(make_pair(handler, static_cast<SocketOperation>(handler->_registered & ~handler->_disabled)));
1006
- wakeup();
1007
- #endif
770
+ # endif
1008
771
  checkReady(handler);
1009
772
  }
1010
773
 
@@ -1012,111 +775,78 @@ Selector::updateSelectorForEventHandler(EventHandler* handler,
1012
775
 
1013
776
  namespace
1014
777
  {
778
+ void selectorInterrupt(void* info) { reinterpret_cast<Selector*>(info)->processInterrupt(); }
1015
779
 
1016
- void selectorInterrupt(void* info)
1017
- {
1018
- reinterpret_cast<Selector*>(info)->processInterrupt();
1019
- }
1020
-
1021
- void eventHandlerSocketCallback(CFSocketRef, CFSocketCallBackType callbackType, CFDataRef, const void* d, void* info)
1022
- {
1023
- if(callbackType == kCFSocketReadCallBack)
1024
- {
1025
- reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(SocketOperationRead);
1026
- }
1027
- else if(callbackType == kCFSocketWriteCallBack)
1028
- {
1029
- reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(SocketOperationWrite);
1030
- }
1031
- else if(callbackType == kCFSocketConnectCallBack)
1032
- {
1033
- reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(SocketOperationConnect,
1034
- d ? *reinterpret_cast<const SInt32*>(d) : 0);
1035
- }
1036
- }
1037
-
1038
- class SelectorHelperThread : public IceUtil::Thread
1039
- {
1040
- public:
1041
-
1042
- SelectorHelperThread(Selector& selector) : _selector(selector)
1043
- {
1044
- }
1045
-
1046
- virtual void run()
780
+ void
781
+ eventHandlerSocketCallback(CFSocketRef, CFSocketCallBackType callbackType, CFDataRef, const void* d, void* info)
1047
782
  {
1048
- _selector.run();
1049
-
1050
- #if TARGET_IPHONE_SIMULATOR != 0
1051
- //
1052
- // Workaround for CFSocket bug where the CFSocketManager thread crashes if an
1053
- // invalidated socket is being processed for reads/writes. We add this sleep
1054
- // mostly to prevent spurious crashes with testing. This bug is very unlikely
1055
- // to be hit otherwise.
1056
- //
1057
- IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100));
1058
- #endif
783
+ if (callbackType == kCFSocketReadCallBack)
784
+ {
785
+ reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(SocketOperationRead);
786
+ }
787
+ else if (callbackType == kCFSocketWriteCallBack)
788
+ {
789
+ reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(SocketOperationWrite);
790
+ }
791
+ else if (callbackType == kCFSocketConnectCallBack)
792
+ {
793
+ reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(
794
+ SocketOperationConnect,
795
+ d ? *reinterpret_cast<const SInt32*>(d) : 0);
796
+ }
1059
797
  }
1060
798
 
1061
- private:
1062
-
1063
- Selector& _selector;
1064
- };
1065
-
1066
- CFOptionFlags
1067
- toCFCallbacks(SocketOperation op)
1068
- {
1069
- CFOptionFlags cbs = 0;
1070
- if(op & SocketOperationRead)
799
+ CFOptionFlags toCFCallbacks(SocketOperation op)
1071
800
  {
1072
- cbs |= kCFSocketReadCallBack;
1073
- }
1074
- if(op & SocketOperationWrite)
1075
- {
1076
- cbs |= kCFSocketWriteCallBack;
1077
- }
1078
- if(op & SocketOperationConnect)
1079
- {
1080
- cbs |= kCFSocketConnectCallBack;
801
+ CFOptionFlags cbs = 0;
802
+ if (op & SocketOperationRead)
803
+ {
804
+ cbs |= kCFSocketReadCallBack;
805
+ }
806
+ if (op & SocketOperationWrite)
807
+ {
808
+ cbs |= kCFSocketWriteCallBack;
809
+ }
810
+ if (op & SocketOperationConnect)
811
+ {
812
+ cbs |= kCFSocketConnectCallBack;
813
+ }
814
+ return cbs;
1081
815
  }
1082
- return cbs;
1083
816
  }
1084
817
 
1085
- }
1086
-
1087
- EventHandlerWrapper::EventHandlerWrapper(EventHandler* handler, Selector& selector) :
1088
- _handler(ICE_GET_SHARED_FROM_THIS(handler)),
1089
- _streamNativeInfo(StreamNativeInfoPtr::dynamicCast(handler->getNativeInfo())),
1090
- _selector(selector),
1091
- _ready(SocketOperationNone),
1092
- _finish(false)
818
+ EventHandlerWrapper::EventHandlerWrapper(EventHandler* handler, Selector& selector)
819
+ : _handler(handler->shared_from_this()),
820
+ _streamNativeInfo(dynamic_pointer_cast<StreamNativeInfo>(handler->getNativeInfo())),
821
+ _selector(selector),
822
+ _ready(SocketOperationNone),
823
+ _finish(false)
1093
824
  {
1094
- if(_streamNativeInfo)
825
+ if (_streamNativeInfo)
1095
826
  {
1096
827
  _streamNativeInfo->initStreams(this);
1097
828
  }
1098
- else if(handler->getNativeInfo())
829
+ else if (handler->getNativeInfo())
1099
830
  {
1100
831
  SOCKET fd = handler->getNativeInfo()->fd();
1101
- CFSocketContext ctx = { 0, this, 0, 0, 0 };
1102
- _socket.reset(CFSocketCreateWithNative(kCFAllocatorDefault,
1103
- fd,
1104
- kCFSocketReadCallBack |
1105
- kCFSocketWriteCallBack |
1106
- kCFSocketConnectCallBack,
1107
- eventHandlerSocketCallback,
1108
- &ctx));
832
+ CFSocketContext ctx = {0, this, 0, 0, 0};
833
+ _socket.reset(CFSocketCreateWithNative(
834
+ kCFAllocatorDefault,
835
+ fd,
836
+ kCFSocketReadCallBack | kCFSocketWriteCallBack | kCFSocketConnectCallBack,
837
+ eventHandlerSocketCallback,
838
+ &ctx));
1109
839
 
1110
840
  // Disable automatic re-enabling of callbacks and closing of the native socket.
1111
841
  CFSocketSetSocketFlags(_socket.get(), 0);
1112
- CFSocketDisableCallBacks(_socket.get(), kCFSocketReadCallBack | kCFSocketWriteCallBack | kCFSocketConnectCallBack);
842
+ CFSocketDisableCallBacks(
843
+ _socket.get(),
844
+ kCFSocketReadCallBack | kCFSocketWriteCallBack | kCFSocketConnectCallBack);
1113
845
  _source.reset(CFSocketCreateRunLoopSource(kCFAllocatorDefault, _socket.get(), 0));
1114
846
  }
1115
847
  }
1116
848
 
1117
- EventHandlerWrapper::~EventHandlerWrapper()
1118
- {
1119
- }
849
+ EventHandlerWrapper::~EventHandlerWrapper() = default;
1120
850
 
1121
851
  void
1122
852
  EventHandlerWrapper::updateRunLoop()
@@ -1124,24 +854,26 @@ EventHandlerWrapper::updateRunLoop()
1124
854
  SocketOperation op = _handler->_registered;
1125
855
  assert(!op || !_finish);
1126
856
 
1127
- if(_socket)
857
+ if (_socket)
1128
858
  {
1129
- CFSocketDisableCallBacks(_socket.get(), kCFSocketReadCallBack | kCFSocketWriteCallBack | kCFSocketConnectCallBack);
1130
- if(op)
859
+ CFSocketDisableCallBacks(
860
+ _socket.get(),
861
+ kCFSocketReadCallBack | kCFSocketWriteCallBack | kCFSocketConnectCallBack);
862
+ if (op)
1131
863
  {
1132
864
  CFSocketEnableCallBacks(_socket.get(), toCFCallbacks(op));
1133
865
  }
1134
866
 
1135
- if(op && !CFRunLoopContainsSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode))
867
+ if (op && !CFRunLoopContainsSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode))
1136
868
  {
1137
869
  CFRunLoopAddSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode);
1138
870
  }
1139
- else if(!op && CFRunLoopContainsSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode))
871
+ else if (!op && CFRunLoopContainsSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode))
1140
872
  {
1141
873
  CFRunLoopRemoveSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode);
1142
874
  }
1143
875
 
1144
- if(_finish)
876
+ if (_finish)
1145
877
  {
1146
878
  CFSocketInvalidate(_socket.get());
1147
879
  }
@@ -1149,22 +881,22 @@ EventHandlerWrapper::updateRunLoop()
1149
881
  else
1150
882
  {
1151
883
  SocketOperation readyOp = _streamNativeInfo->registerWithRunLoop(op);
1152
- if(!(op & (SocketOperationWrite | SocketOperationConnect)) || _ready & SocketOperationWrite)
884
+ if (!(op & (SocketOperationWrite | SocketOperationConnect)) || _ready & SocketOperationWrite)
1153
885
  {
1154
886
  _streamNativeInfo->unregisterFromRunLoop(SocketOperationWrite, false);
1155
887
  }
1156
888
 
1157
- if(!(op & (SocketOperationRead | SocketOperationConnect)) || _ready & SocketOperationRead)
889
+ if (!(op & (SocketOperationRead | SocketOperationConnect)) || _ready & SocketOperationRead)
1158
890
  {
1159
891
  _streamNativeInfo->unregisterFromRunLoop(SocketOperationRead, false);
1160
892
  }
1161
893
 
1162
- if(readyOp)
894
+ if (readyOp)
1163
895
  {
1164
896
  ready(readyOp, 0);
1165
897
  }
1166
898
 
1167
- if(_finish)
899
+ if (_finish)
1168
900
  {
1169
901
  _streamNativeInfo->closeStreams();
1170
902
  }
@@ -1180,7 +912,7 @@ EventHandlerWrapper::readyCallback(SocketOperation op, int error)
1180
912
  void
1181
913
  EventHandlerWrapper::ready(SocketOperation op, int error)
1182
914
  {
1183
- if(!_socket)
915
+ if (!_socket)
1184
916
  {
1185
917
  //
1186
918
  // Unregister the stream from the runloop as soon as we got the callback. This is
@@ -1192,14 +924,14 @@ EventHandlerWrapper::ready(SocketOperation op, int error)
1192
924
  }
1193
925
 
1194
926
  op = static_cast<SocketOperation>(_handler->_registered & op);
1195
- if(!op || _ready & op)
927
+ if (!op || _ready & op)
1196
928
  {
1197
929
  return;
1198
930
  }
1199
931
 
1200
- if(_socket)
932
+ if (_socket)
1201
933
  {
1202
- if(op & SocketOperationConnect)
934
+ if (op & SocketOperationConnect)
1203
935
  {
1204
936
  _streamNativeInfo->setConnectError(error);
1205
937
  }
@@ -1212,9 +944,9 @@ EventHandlerWrapper::ready(SocketOperation op, int error)
1212
944
  bool
1213
945
  EventHandlerWrapper::checkReady()
1214
946
  {
1215
- if((_ready | _handler->_ready) & ~_handler->_disabled & _handler->_registered)
947
+ if ((_ready | _handler->_ready) & ~_handler->_disabled & _handler->_registered)
1216
948
  {
1217
- _selector.addReadyHandler(this);
949
+ _selector.addReadyHandler(shared_from_this());
1218
950
  return false;
1219
951
  }
1220
952
  else
@@ -1238,14 +970,14 @@ EventHandlerWrapper::update(SocketOperation remove, SocketOperation add)
1238
970
  SocketOperation previous = _handler->_registered;
1239
971
  _handler->_registered = static_cast<SocketOperation>(_handler->_registered & ~remove);
1240
972
  _handler->_registered = static_cast<SocketOperation>(_handler->_registered | add);
1241
- if(previous == _handler->_registered)
973
+ if (previous == _handler->_registered)
1242
974
  {
1243
975
  return false;
1244
976
  }
1245
977
 
1246
978
  // Clear ready flags which might not be valid anymore.
1247
979
  _ready = static_cast<SocketOperation>(_ready & _handler->_registered);
1248
- return _handler->getNativeInfo();
980
+ return _handler->getNativeInfo() != nullptr;
1249
981
  }
1250
982
 
1251
983
  bool
@@ -1254,7 +986,7 @@ EventHandlerWrapper::finish()
1254
986
  _finish = true;
1255
987
  _ready = SocketOperationNone;
1256
988
  _handler->_registered = SocketOperationNone;
1257
- return _handler->getNativeInfo();
989
+ return _handler->getNativeInfo() != nullptr;
1258
990
  }
1259
991
 
1260
992
  Selector::Selector(const InstancePtr& instance) : _instance(instance), _destroyed(false)
@@ -1266,25 +998,32 @@ Selector::Selector(const InstancePtr& instance) : _instance(instance), _destroye
1266
998
  _source.reset(CFRunLoopSourceCreate(0, 0, &ctx));
1267
999
  _runLoop = 0;
1268
1000
 
1269
- _thread = new SelectorHelperThread(*this);
1270
- _thread->start();
1001
+ _thread = std::thread(
1002
+ [this]
1003
+ {
1004
+ run();
1271
1005
 
1272
- Lock sync(*this);
1273
- while(!_runLoop)
1274
- {
1275
- wait();
1276
- }
1277
- }
1006
+ # if TARGET_IPHONE_SIMULATOR != 0
1007
+ //
1008
+ // Workaround for CFSocket bug where the CFSocketManager thread crashes if an
1009
+ // invalidated socket is being processed for reads/writes. We add this sleep
1010
+ // mostly to prevent spurious crashes with testing. This bug is very unlikely
1011
+ // to be hit otherwise.
1012
+ //
1013
+ this_thread::sleep_for(100ms);
1014
+ # endif
1015
+ });
1278
1016
 
1279
- Selector::~Selector()
1280
- {
1017
+ unique_lock lock(_mutex);
1018
+ _conditionVariable.wait(lock, [this] { return _runLoop != 0; });
1281
1019
  }
1282
1020
 
1283
1021
  void
1284
1022
  Selector::destroy()
1285
1023
  {
1024
+ thread t;
1286
1025
  {
1287
- Lock sync(*this);
1026
+ unique_lock lock(_mutex);
1288
1027
 
1289
1028
  //
1290
1029
  // Make sure any pending changes are processed to ensure remaining
@@ -1294,22 +1033,24 @@ Selector::destroy()
1294
1033
  CFRunLoopSourceSignal(_source.get());
1295
1034
  CFRunLoopWakeUp(_runLoop);
1296
1035
 
1297
- while(!_changes.empty())
1036
+ while (!_changes.empty())
1298
1037
  {
1299
1038
  CFRunLoopSourceSignal(_source.get());
1300
1039
  CFRunLoopWakeUp(_runLoop);
1301
-
1302
- wait();
1040
+ _conditionVariable.wait(lock);
1303
1041
  }
1042
+ t = std::move(_thread);
1304
1043
  }
1305
1044
 
1306
- _thread->getThreadControl().join();
1307
- _thread = 0;
1045
+ if (t.joinable())
1046
+ {
1047
+ t.join();
1048
+ }
1308
1049
 
1309
- Lock sync(*this);
1050
+ lock_guard lock(_mutex);
1310
1051
  _source.reset(0);
1311
1052
 
1312
- //assert(_wrappers.empty());
1053
+ // assert(_wrappers.empty());
1313
1054
  _readyHandlers.clear();
1314
1055
  _selectedHandlers.clear();
1315
1056
  }
@@ -1317,33 +1058,33 @@ Selector::destroy()
1317
1058
  void
1318
1059
  Selector::initialize(EventHandler* handler)
1319
1060
  {
1320
- Lock sync(*this);
1321
- _wrappers[handler] = new EventHandlerWrapper(handler, *this);
1061
+ lock_guard lock(_mutex);
1062
+ _wrappers[handler] = make_shared<EventHandlerWrapper>(handler, *this);
1322
1063
  }
1323
1064
 
1324
1065
  void
1325
1066
  Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation add)
1326
1067
  {
1327
- Lock sync(*this);
1068
+ lock_guard lock(_mutex);
1328
1069
  const EventHandlerWrapperPtr& wrapper = _wrappers[handler];
1329
- if(wrapper->update(remove, add))
1070
+ if (wrapper->update(remove, add))
1330
1071
  {
1331
1072
  _changes.insert(wrapper);
1332
- notify();
1073
+ _conditionVariable.notify_one();
1333
1074
  }
1334
1075
  }
1335
1076
 
1336
1077
  void
1337
1078
  Selector::enable(EventHandler* handler, SocketOperation op)
1338
1079
  {
1339
- Lock sync(*this);
1340
- if(!(handler->_disabled & op))
1080
+ lock_guard lock(_mutex);
1081
+ if (!(handler->_disabled & op))
1341
1082
  {
1342
1083
  return;
1343
1084
  }
1344
1085
  handler->_disabled = static_cast<SocketOperation>(handler->_disabled & ~op);
1345
1086
 
1346
- if(handler->_registered & op)
1087
+ if (handler->_registered & op)
1347
1088
  {
1348
1089
  _wrappers[handler]->checkReady();
1349
1090
  }
@@ -1352,8 +1093,8 @@ Selector::enable(EventHandler* handler, SocketOperation op)
1352
1093
  void
1353
1094
  Selector::disable(EventHandler* handler, SocketOperation op)
1354
1095
  {
1355
- Lock sync(*this);
1356
- if(handler->_disabled & op)
1096
+ lock_guard lock(_mutex);
1097
+ if (handler->_disabled & op)
1357
1098
  {
1358
1099
  return;
1359
1100
  }
@@ -1363,14 +1104,14 @@ Selector::disable(EventHandler* handler, SocketOperation op)
1363
1104
  bool
1364
1105
  Selector::finish(EventHandler* handler, bool closeNow)
1365
1106
  {
1366
- Lock sync(*this);
1107
+ lock_guard lock(_mutex);
1367
1108
  std::map<EventHandler*, EventHandlerWrapperPtr>::iterator p = _wrappers.find(handler);
1368
1109
  assert(p != _wrappers.end());
1369
1110
  EventHandlerWrapperPtr wrapper = p->second;
1370
- if(wrapper->finish())
1111
+ if (wrapper->finish())
1371
1112
  {
1372
1113
  _changes.insert(wrapper);
1373
- notify();
1114
+ _conditionVariable.notify_one();
1374
1115
  }
1375
1116
  _wrappers.erase(p);
1376
1117
  return closeNow;
@@ -1379,12 +1120,12 @@ Selector::finish(EventHandler* handler, bool closeNow)
1379
1120
  void
1380
1121
  Selector::ready(EventHandler* handler, SocketOperation status, bool value)
1381
1122
  {
1382
- if(((handler->_ready & status) != 0) == value)
1123
+ if (((handler->_ready & status) != 0) == value)
1383
1124
  {
1384
1125
  return; // Nothing to do if ready state already correctly set.
1385
1126
  }
1386
1127
 
1387
- if(value)
1128
+ if (value)
1388
1129
  {
1389
1130
  handler->_ready = static_cast<SocketOperation>(handler->_ready | status);
1390
1131
  }
@@ -1393,7 +1134,7 @@ Selector::ready(EventHandler* handler, SocketOperation status, bool value)
1393
1134
  handler->_ready = static_cast<SocketOperation>(handler->_ready & ~status);
1394
1135
  }
1395
1136
 
1396
- Lock sync(*this);
1137
+ lock_guard lock(_mutex);
1397
1138
  std::map<EventHandler*, EventHandlerWrapperPtr>::iterator p = _wrappers.find(handler);
1398
1139
  assert(p != _wrappers.end());
1399
1140
  p->second->checkReady();
@@ -1402,15 +1143,15 @@ Selector::ready(EventHandler* handler, SocketOperation status, bool value)
1402
1143
  void
1403
1144
  Selector::startSelect()
1404
1145
  {
1405
- Lock sync(*this);
1146
+ lock_guard lock(_mutex);
1406
1147
 
1407
1148
  //
1408
1149
  // Re-enable callbacks for previously selected handlers.
1409
1150
  //
1410
- vector<pair<EventHandlerWrapperPtr, SocketOperation> >::const_iterator p;
1411
- for(p = _selectedHandlers.begin(); p != _selectedHandlers.end(); ++p)
1151
+ vector<pair<EventHandlerWrapperPtr, SocketOperation>>::const_iterator p;
1152
+ for (p = _selectedHandlers.begin(); p != _selectedHandlers.end(); ++p)
1412
1153
  {
1413
- if(p->first->checkReady())
1154
+ if (p->first->checkReady())
1414
1155
  {
1415
1156
  _changes.insert(p->first);
1416
1157
  }
@@ -1419,14 +1160,14 @@ Selector::startSelect()
1419
1160
  }
1420
1161
 
1421
1162
  void
1422
- Selector::finishSelect(std::vector<std::pair<EventHandler*, SocketOperation> >& handlers)
1163
+ Selector::finishSelect(std::vector<std::pair<EventHandler*, SocketOperation>>& handlers)
1423
1164
  {
1424
- Lock sync(*this);
1165
+ lock_guard lock(_mutex);
1425
1166
  handlers.clear();
1426
- for(set<EventHandlerWrapperPtr>::const_iterator p = _readyHandlers.begin(); p != _readyHandlers.end(); ++p)
1167
+ for (set<EventHandlerWrapperPtr>::const_iterator p = _readyHandlers.begin(); p != _readyHandlers.end(); ++p)
1427
1168
  {
1428
1169
  SocketOperation op = (*p)->readyOp();
1429
- if(op)
1170
+ if (op)
1430
1171
  {
1431
1172
  _selectedHandlers.push_back(pair<EventHandlerWrapperPtr, SocketOperation>(*p, op));
1432
1173
  handlers.push_back(pair<EventHandler*, SocketOperation>((*p)->_handler.get(), op));
@@ -1441,40 +1182,34 @@ Selector::select(int timeout)
1441
1182
  //
1442
1183
  // Wait for handlers to be ready.
1443
1184
  //
1444
- Lock sync(*this);
1445
- while(!_destroyed)
1185
+ unique_lock lock(_mutex);
1186
+ while (!_destroyed)
1446
1187
  {
1447
- while(!_changes.empty())
1188
+ while (!_changes.empty())
1448
1189
  {
1449
1190
  CFRunLoopSourceSignal(_source.get());
1450
1191
  CFRunLoopWakeUp(_runLoop);
1451
1192
 
1452
- wait();
1193
+ _conditionVariable.wait(lock);
1453
1194
  }
1454
1195
 
1455
- if(_readyHandlers.empty())
1196
+ if (_readyHandlers.empty())
1456
1197
  {
1457
- if(timeout > 0)
1198
+ if (timeout > 0)
1458
1199
  {
1459
- bool timedOut = !timedWait(IceUtil::Time::seconds(timeout));
1460
- if(_readyHandlers.empty())
1200
+ if (_conditionVariable.wait_for(lock, chrono::seconds(timeout)) == cv_status::no_timeout)
1461
1201
  {
1462
- if(timedOut)
1463
- {
1464
- throw SelectorTimeoutException(); // Actual timeout
1465
- }
1466
- // Signaled but no ready handlers - spurious wakeup, continue waiting
1467
- continue;
1202
+ break;
1468
1203
  }
1469
- break; // Ready handlers
1204
+ throw SelectorTimeoutException();
1470
1205
  }
1471
1206
  else
1472
1207
  {
1473
- wait();
1208
+ _conditionVariable.wait(lock);
1474
1209
  }
1475
1210
  }
1476
1211
 
1477
- if(_changes.empty())
1212
+ if (_changes.empty())
1478
1213
  {
1479
1214
  break;
1480
1215
  }
@@ -1484,17 +1219,17 @@ Selector::select(int timeout)
1484
1219
  void
1485
1220
  Selector::processInterrupt()
1486
1221
  {
1487
- Lock sync(*this);
1488
- if(!_changes.empty())
1222
+ lock_guard lock(_mutex);
1223
+ if (!_changes.empty())
1489
1224
  {
1490
- for(set<EventHandlerWrapperPtr>::const_iterator p = _changes.begin(); p != _changes.end(); ++p)
1225
+ for (set<EventHandlerWrapperPtr>::const_iterator p = _changes.begin(); p != _changes.end(); ++p)
1491
1226
  {
1492
1227
  (*p)->updateRunLoop();
1493
1228
  }
1494
1229
  _changes.clear();
1495
- notify();
1230
+ _conditionVariable.notify_one();
1496
1231
  }
1497
- if(_destroyed)
1232
+ if (_destroyed)
1498
1233
  {
1499
1234
  CFRunLoopStop(_runLoop);
1500
1235
  }
@@ -1504,9 +1239,9 @@ void
1504
1239
  Selector::run()
1505
1240
  {
1506
1241
  {
1507
- Lock sync(*this);
1242
+ lock_guard lock(_mutex);
1508
1243
  _runLoop = CFRunLoopGetCurrent();
1509
- notify();
1244
+ _conditionVariable.notify_one();
1510
1245
  }
1511
1246
 
1512
1247
  CFRunLoopAddSource(CFRunLoopGetCurrent(), _source.get(), kCFRunLoopDefaultMode);
@@ -1517,18 +1252,18 @@ Selector::run()
1517
1252
  void
1518
1253
  Selector::ready(EventHandlerWrapper* wrapper, SocketOperation op, int error)
1519
1254
  {
1520
- Lock sync(*this);
1255
+ lock_guard lock(_mutex);
1521
1256
  wrapper->ready(op, error);
1522
1257
  }
1523
1258
 
1524
1259
  void
1525
- Selector::addReadyHandler(EventHandlerWrapper* wrapper)
1260
+ Selector::addReadyHandler(EventHandlerWrapperPtr wrapper)
1526
1261
  {
1527
1262
  // Called from ready()
1528
1263
  _readyHandlers.insert(wrapper);
1529
- if(_readyHandlers.size() == 1)
1264
+ if (_readyHandlers.size() == 1)
1530
1265
  {
1531
- notify();
1266
+ _conditionVariable.notify_one();
1532
1267
  }
1533
1268
  }
1534
1269