zeroc-ice 3.6b1 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (679) hide show
  1. checksums.yaml +4 -4
  2. data/{ext/ice/BZIP_LICENSE → BZIP2_LICENSE} +0 -0
  3. data/ICE_LICENSE +8 -14
  4. data/LICENSE +2 -1
  5. data/{ext/ice/MCPP_LICENSE → MCPP_LICENSE} +2 -9
  6. data/bin/slice2rb +1 -1
  7. data/ext/Communicator.cpp +1 -1
  8. data/ext/Communicator.h +1 -1
  9. data/ext/Config.h +1 -22
  10. data/ext/Connection.cpp +125 -13
  11. data/ext/Connection.h +1 -1
  12. data/ext/Endpoint.cpp +62 -3
  13. data/ext/Endpoint.h +1 -1
  14. data/ext/ImplicitContext.cpp +1 -1
  15. data/ext/ImplicitContext.h +1 -1
  16. data/ext/Init.cpp +8 -1
  17. data/ext/Logger.cpp +1 -1
  18. data/ext/Logger.h +1 -1
  19. data/ext/ObjectFactory.cpp +1 -1
  20. data/ext/ObjectFactory.h +1 -1
  21. data/ext/Operation.cpp +1 -1
  22. data/ext/Operation.h +1 -1
  23. data/ext/Properties.cpp +1 -1
  24. data/ext/Properties.h +1 -1
  25. data/ext/Proxy.cpp +1 -1
  26. data/ext/Proxy.h +1 -1
  27. data/ext/Slice.cpp +1 -1
  28. data/ext/Slice.h +1 -1
  29. data/ext/Types.cpp +65 -17
  30. data/ext/Types.h +4 -1
  31. data/ext/Util.cpp +49 -58
  32. data/ext/Util.h +1 -1
  33. data/ext/extconf.rb +17 -15
  34. data/ext/ice/cpp/include/Ice/ACMF.h +1 -1
  35. data/ext/ice/cpp/include/Ice/Application.h +1 -1
  36. data/ext/ice/cpp/include/Ice/AsyncResult.h +1 -1
  37. data/ext/ice/cpp/include/Ice/AsyncResultF.h +1 -1
  38. data/ext/ice/cpp/include/Ice/BasicStream.h +1 -1
  39. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +52 -0
  40. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +25 -0
  41. data/ext/ice/cpp/include/Ice/Buffer.h +1 -1
  42. data/ext/ice/cpp/include/Ice/BuiltinSequences.h +12 -4
  43. data/ext/ice/cpp/include/Ice/Communicator.h +12 -4
  44. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +1 -1
  45. data/ext/ice/cpp/include/Ice/CommunicatorF.h +12 -4
  46. data/ext/ice/cpp/include/Ice/Config.h +13 -8
  47. data/ext/ice/cpp/include/Ice/Connection.h +41 -16
  48. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +1 -1
  49. data/ext/ice/cpp/include/Ice/ConnectionF.h +12 -4
  50. data/ext/ice/cpp/include/Ice/ConnectionFactoryF.h +1 -1
  51. data/ext/ice/cpp/include/Ice/ConnectionIF.h +1 -1
  52. data/ext/ice/cpp/include/Ice/Current.h +12 -4
  53. data/ext/ice/cpp/include/Ice/DefaultObjectFactory.h +1 -1
  54. data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +1 -1
  55. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +1 -1
  56. data/ext/ice/cpp/include/Ice/Dispatcher.h +1 -1
  57. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +1 -1
  58. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
  59. data/ext/ice/cpp/include/Ice/Endpoint.h +16 -6
  60. data/ext/ice/cpp/include/Ice/EndpointF.h +12 -4
  61. data/ext/ice/cpp/include/Ice/EndpointTypes.h +12 -4
  62. data/ext/ice/cpp/include/Ice/Exception.h +3 -3
  63. data/ext/ice/cpp/include/Ice/FacetMap.h +12 -4
  64. data/ext/ice/cpp/include/Ice/FactoryTable.h +1 -1
  65. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +1 -1
  66. data/ext/ice/cpp/include/Ice/Format.h +1 -1
  67. data/ext/ice/cpp/include/Ice/Functional.h +1 -1
  68. data/ext/ice/cpp/include/Ice/GCObject.h +5 -1
  69. data/ext/ice/cpp/include/Ice/Handle.h +1 -1
  70. data/ext/ice/cpp/include/Ice/Ice.h +4 -3
  71. data/ext/ice/cpp/include/Ice/Identity.h +13 -5
  72. data/ext/ice/cpp/include/Ice/ImplicitContext.h +12 -4
  73. data/ext/ice/cpp/include/Ice/ImplicitContextF.h +12 -4
  74. data/ext/ice/cpp/include/Ice/Incoming.h +1 -1
  75. data/ext/ice/cpp/include/Ice/IncomingAsync.h +1 -1
  76. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +1 -1
  77. data/ext/ice/cpp/include/Ice/Initialize.h +4 -2
  78. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -1
  79. data/ext/ice/cpp/include/Ice/Instrumentation.h +12 -4
  80. data/ext/ice/cpp/include/Ice/InstrumentationF.h +12 -4
  81. data/ext/ice/cpp/include/Ice/LocalException.h +12 -4
  82. data/ext/ice/cpp/include/Ice/LocalObject.h +1 -1
  83. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
  84. data/ext/ice/cpp/include/Ice/Locator.h +137 -129
  85. data/ext/ice/cpp/include/Ice/LocatorF.h +12 -4
  86. data/ext/ice/cpp/include/Ice/Logger.h +12 -4
  87. data/ext/ice/cpp/include/Ice/LoggerF.h +12 -4
  88. data/ext/ice/cpp/include/Ice/LoggerUtil.h +1 -1
  89. data/ext/ice/cpp/include/Ice/Metrics.h +144 -136
  90. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +1 -1
  91. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +1 -1
  92. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +35 -26
  93. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +1 -1
  94. data/ext/ice/cpp/include/Ice/Object.h +1 -1
  95. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +12 -4
  96. data/ext/ice/cpp/include/Ice/ObjectAdapterF.h +12 -4
  97. data/ext/ice/cpp/include/Ice/ObjectAdapterFactoryF.h +1 -1
  98. data/ext/ice/cpp/include/Ice/ObjectF.h +1 -1
  99. data/ext/ice/cpp/include/Ice/ObjectFactory.h +12 -4
  100. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +12 -4
  101. data/ext/ice/cpp/include/Ice/ObjectFactoryManagerF.h +1 -1
  102. data/ext/ice/cpp/include/Ice/ObserverHelper.h +1 -1
  103. data/ext/ice/cpp/include/Ice/Outgoing.h +67 -39
  104. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +31 -34
  105. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +4 -4
  106. data/ext/ice/cpp/include/Ice/Plugin.h +12 -4
  107. data/ext/ice/cpp/include/Ice/PluginF.h +12 -4
  108. data/ext/ice/cpp/include/Ice/Process.h +36 -28
  109. data/ext/ice/cpp/include/Ice/ProcessF.h +12 -4
  110. data/ext/ice/cpp/include/Ice/Properties.h +12 -4
  111. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +86 -78
  112. data/ext/ice/cpp/include/Ice/PropertiesF.h +12 -4
  113. data/ext/ice/cpp/include/Ice/Protocol.h +1 -1
  114. data/ext/ice/cpp/include/Ice/Proxy.h +6 -2
  115. data/ext/ice/cpp/include/Ice/ProxyF.h +1 -1
  116. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
  117. data/ext/ice/cpp/include/Ice/ProxyHandle.h +1 -1
  118. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
  119. data/ext/ice/cpp/include/Ice/RemoteLogger.h +137 -129
  120. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +1 -1
  121. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +1 -1
  122. data/ext/ice/cpp/include/Ice/Router.h +37 -29
  123. data/ext/ice/cpp/include/Ice/RouterF.h +12 -4
  124. data/ext/ice/cpp/include/Ice/ServantLocator.h +12 -4
  125. data/ext/ice/cpp/include/Ice/ServantLocatorF.h +12 -4
  126. data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
  127. data/ext/ice/cpp/include/Ice/Service.h +1 -1
  128. data/ext/ice/cpp/include/Ice/SliceChecksumDict.h +12 -4
  129. data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
  130. data/ext/ice/cpp/include/Ice/SlicedData.h +1 -6
  131. data/ext/ice/cpp/include/Ice/SlicedDataF.h +1 -1
  132. data/ext/ice/cpp/include/Ice/Stream.h +3 -5
  133. data/ext/ice/cpp/include/Ice/StreamF.h +1 -1
  134. data/ext/ice/cpp/include/Ice/StreamHelpers.h +1 -1
  135. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
  136. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +1 -1
  137. data/ext/ice/cpp/include/Ice/Version.h +14 -6
  138. data/ext/ice/cpp/include/IceSSL/Config.h +19 -1
  139. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +61 -7
  140. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +52 -5
  141. data/ext/ice/cpp/include/IceSSL/IceSSL.h +2 -2
  142. data/ext/ice/cpp/include/IceSSL/Plugin.h +32 -26
  143. data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +1 -1
  144. data/ext/ice/cpp/include/IceUtil/Atomic.h +186 -0
  145. data/ext/ice/cpp/include/IceUtil/Cache.h +1 -1
  146. data/ext/ice/cpp/include/IceUtil/Cond.h +1 -1
  147. data/ext/ice/cpp/include/IceUtil/Config.h +31 -20
  148. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +1 -1
  149. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +1 -1
  150. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +9 -2
  151. data/ext/ice/cpp/include/IceUtil/Exception.h +4 -3
  152. data/ext/ice/cpp/include/IceUtil/Functional.h +1 -1
  153. data/ext/ice/cpp/include/IceUtil/Handle.h +1 -1
  154. data/ext/ice/cpp/include/IceUtil/IceUtil.h +2 -2
  155. data/ext/ice/cpp/include/IceUtil/IconvStringConverter.h +1 -1
  156. data/ext/ice/cpp/include/IceUtil/InputUtil.h +1 -1
  157. data/ext/ice/cpp/include/IceUtil/Iterator.h +1 -1
  158. data/ext/ice/cpp/include/IceUtil/Lock.h +1 -1
  159. data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -1
  160. data/ext/ice/cpp/include/IceUtil/Mutex.h +1 -1
  161. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +1 -1
  162. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +1 -1
  163. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +1 -1
  164. data/ext/ice/cpp/include/IceUtil/Optional.h +1 -1
  165. data/ext/ice/cpp/include/IceUtil/Options.h +1 -1
  166. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +8 -11
  167. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +1 -1
  168. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +5 -1
  169. data/ext/ice/cpp/include/IceUtil/Random.h +1 -1
  170. data/ext/ice/cpp/include/IceUtil/RecMutex.h +1 -1
  171. data/ext/ice/cpp/include/IceUtil/SHA1.h +8 -26
  172. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +5 -5
  173. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +1 -1
  174. data/ext/ice/cpp/include/IceUtil/Shared.h +3 -37
  175. data/ext/ice/cpp/include/IceUtil/StringUtil.h +1 -1
  176. data/ext/ice/cpp/include/IceUtil/Thread.h +1 -1
  177. data/ext/ice/cpp/include/IceUtil/ThreadException.h +1 -1
  178. data/ext/ice/cpp/include/IceUtil/Time.h +1 -1
  179. data/ext/ice/cpp/include/IceUtil/Timer.h +1 -1
  180. data/ext/ice/cpp/include/IceUtil/UUID.h +1 -1
  181. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
  182. data/ext/ice/cpp/include/IceUtil/UniquePtr.h +1 -1
  183. data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +7 -6
  184. data/ext/ice/cpp/include/Slice/Checksum.h +1 -1
  185. data/ext/ice/cpp/include/Slice/CsUtil.h +1 -1
  186. data/ext/ice/cpp/include/Slice/DotNetNames.h +1 -1
  187. data/ext/ice/cpp/include/Slice/FileTracker.h +1 -1
  188. data/ext/ice/cpp/include/Slice/JavaUtil.h +3 -1
  189. data/ext/ice/cpp/include/Slice/ObjCUtil.h +127 -0
  190. data/ext/ice/cpp/include/Slice/PHPUtil.h +1 -1
  191. data/ext/ice/cpp/include/Slice/Parser.h +18 -12
  192. data/ext/ice/cpp/include/Slice/Preprocessor.h +6 -4
  193. data/ext/ice/cpp/include/Slice/PythonUtil.h +1 -1
  194. data/ext/ice/cpp/include/Slice/RubyUtil.h +1 -1
  195. data/ext/ice/cpp/include/Slice/Util.h +20 -2
  196. data/ext/ice/cpp/src/Ice/ACM.cpp +1 -1
  197. data/ext/ice/cpp/src/Ice/ACM.h +1 -1
  198. data/ext/ice/cpp/src/Ice/Acceptor.cpp +1 -1
  199. data/ext/ice/cpp/src/Ice/Acceptor.h +1 -1
  200. data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
  201. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +1 -1
  202. data/ext/ice/cpp/src/Ice/Base64.cpp +1 -1
  203. data/ext/ice/cpp/src/Ice/Base64.h +1 -1
  204. data/ext/ice/cpp/src/Ice/BasicStream.cpp +7 -5
  205. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +227 -0
  206. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +59 -0
  207. data/ext/ice/cpp/src/Ice/Buffer.cpp +3 -3
  208. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +10 -4
  209. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +82 -282
  210. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +8 -21
  211. data/ext/ice/cpp/src/Ice/Communicator.cpp +11 -5
  212. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +10 -4
  213. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +6 -6
  214. data/ext/ice/cpp/src/Ice/CommunicatorI.h +1 -1
  215. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +42 -180
  216. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +10 -19
  217. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +25 -0
  218. data/ext/ice/cpp/src/Ice/Connection.cpp +17 -11
  219. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +10 -4
  220. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +137 -51
  221. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +18 -8
  222. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +105 -391
  223. data/ext/ice/cpp/src/Ice/ConnectionI.h +25 -23
  224. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +5 -29
  225. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +3 -8
  226. data/ext/ice/cpp/src/Ice/Connector.cpp +1 -1
  227. data/ext/ice/cpp/src/Ice/Connector.h +1 -1
  228. data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
  229. data/ext/ice/cpp/src/Ice/Current.cpp +10 -4
  230. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +1 -1
  231. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
  232. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
  233. data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +1 -1
  234. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +1 -1
  235. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +1 -1
  236. data/ext/ice/cpp/src/Ice/Endpoint.cpp +17 -11
  237. data/ext/ice/cpp/src/Ice/EndpointF.cpp +10 -4
  238. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +19 -1
  239. data/ext/ice/cpp/src/Ice/EndpointFactory.h +13 -1
  240. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
  241. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +1 -1
  242. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +1 -1
  243. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
  244. data/ext/ice/cpp/src/Ice/EndpointI.cpp +1 -1
  245. data/ext/ice/cpp/src/Ice/EndpointI.h +33 -1
  246. data/ext/ice/cpp/src/Ice/EndpointIF.h +1 -1
  247. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +10 -4
  248. data/ext/ice/cpp/src/Ice/EventHandler.cpp +1 -1
  249. data/ext/ice/cpp/src/Ice/EventHandler.h +4 -1
  250. data/ext/ice/cpp/src/Ice/EventHandlerF.h +1 -1
  251. data/ext/ice/cpp/src/Ice/Exception.cpp +20 -11
  252. data/ext/ice/cpp/src/Ice/FacetMap.cpp +10 -4
  253. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +1 -1
  254. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -2
  255. data/ext/ice/cpp/src/Ice/GCObject.cpp +1 -1
  256. data/ext/ice/cpp/src/Ice/HashUtil.h +1 -1
  257. data/ext/ice/cpp/src/Ice/HttpParser.cpp +27 -15
  258. data/ext/ice/cpp/src/Ice/HttpParser.h +4 -6
  259. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +7 -1
  260. data/ext/ice/cpp/src/Ice/IPEndpointI.h +2 -1
  261. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +1 -1
  262. data/ext/ice/cpp/src/Ice/Identity.cpp +11 -5
  263. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +11 -5
  264. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +10 -4
  265. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +1 -1
  266. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +1 -1
  267. data/ext/ice/cpp/src/Ice/Incoming.cpp +22 -20
  268. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +1 -1
  269. data/ext/ice/cpp/src/Ice/IncomingRequest.h +1 -1
  270. data/ext/ice/cpp/src/Ice/Initialize.cpp +31 -5
  271. data/ext/ice/cpp/src/Ice/Instance.cpp +102 -59
  272. data/ext/ice/cpp/src/Ice/Instance.h +28 -2
  273. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +20 -14
  274. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +10 -4
  275. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1 -1
  276. data/ext/ice/cpp/src/Ice/InstrumentationI.h +1 -1
  277. data/ext/ice/cpp/src/Ice/LocalException.cpp +10 -4
  278. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -1
  279. data/ext/ice/cpp/src/Ice/Locator.cpp +83 -77
  280. data/ext/ice/cpp/src/Ice/LocatorF.cpp +10 -4
  281. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +77 -69
  282. data/ext/ice/cpp/src/Ice/LocatorInfo.h +1 -1
  283. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
  284. data/ext/ice/cpp/src/Ice/Logger.cpp +11 -5
  285. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +1 -1
  286. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +1 -1
  287. data/ext/ice/cpp/src/Ice/LoggerF.cpp +10 -4
  288. data/ext/ice/cpp/src/Ice/LoggerI.cpp +10 -8
  289. data/ext/ice/cpp/src/Ice/LoggerI.h +1 -1
  290. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +2 -2
  291. data/ext/ice/cpp/src/Ice/Metrics.cpp +122 -116
  292. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +1 -1
  293. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -1
  294. data/ext/ice/cpp/src/Ice/Network.cpp +63 -19
  295. data/ext/ice/cpp/src/Ice/Network.h +10 -3
  296. data/ext/ice/cpp/src/Ice/NetworkF.h +1 -1
  297. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +1 -1
  298. data/ext/ice/cpp/src/Ice/NetworkProxy.h +1 -1
  299. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
  300. data/ext/ice/cpp/src/Ice/Object.cpp +1 -1
  301. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +11 -5
  302. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +10 -4
  303. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +9 -9
  304. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +2 -2
  305. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +3 -3
  306. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +5 -5
  307. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +11 -5
  308. data/ext/ice/cpp/src/Ice/ObjectFactoryF.cpp +10 -4
  309. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +9 -10
  310. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +1 -1
  311. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +1 -1
  312. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +6 -5
  313. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +1 -1
  314. data/ext/ice/cpp/src/Ice/Outgoing.cpp +209 -254
  315. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +120 -106
  316. data/ext/ice/cpp/src/Ice/Plugin.cpp +12 -6
  317. data/ext/ice/cpp/src/Ice/PluginF.cpp +10 -4
  318. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +21 -2
  319. data/ext/ice/cpp/src/Ice/Process.cpp +25 -19
  320. data/ext/ice/cpp/src/Ice/ProcessF.cpp +10 -4
  321. data/ext/ice/cpp/src/Ice/Properties.cpp +11 -5
  322. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +39 -33
  323. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +1 -1
  324. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +1 -1
  325. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +10 -4
  326. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +1 -1
  327. data/ext/ice/cpp/src/Ice/PropertiesI.h +1 -1
  328. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +12 -8
  329. data/ext/ice/cpp/src/Ice/PropertyNames.h +2 -2
  330. data/ext/ice/cpp/src/Ice/Protocol.cpp +7 -7
  331. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +9 -6
  332. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +25 -7
  333. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
  334. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +1 -1
  335. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +1 -1
  336. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
  337. data/ext/ice/cpp/src/Ice/Proxy.cpp +32 -13
  338. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +1 -1
  339. data/ext/ice/cpp/src/Ice/ProxyFactory.h +1 -1
  340. data/ext/ice/cpp/src/Ice/Reference.cpp +101 -86
  341. data/ext/ice/cpp/src/Ice/Reference.h +16 -9
  342. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +1 -1
  343. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +1 -1
  344. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
  345. data/ext/ice/cpp/src/Ice/RegisterPlugins.cpp +28 -0
  346. data/ext/ice/cpp/src/Ice/RegisterPlugins.h +25 -0
  347. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +92 -86
  348. data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
  349. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +1 -1
  350. data/ext/ice/cpp/src/Ice/RequestHandler.h +4 -8
  351. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +24 -16
  352. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +5 -4
  353. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +1 -1
  354. data/ext/ice/cpp/src/Ice/ResponseHandler.h +3 -3
  355. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +16 -5
  356. data/ext/ice/cpp/src/Ice/RetryQueue.h +3 -2
  357. data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
  358. data/ext/ice/cpp/src/Ice/Router.cpp +27 -21
  359. data/ext/ice/cpp/src/Ice/RouterF.cpp +10 -4
  360. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +1 -1
  361. data/ext/ice/cpp/src/Ice/RouterInfo.h +1 -1
  362. data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
  363. data/ext/ice/cpp/src/Ice/Selector.cpp +480 -1
  364. data/ext/ice/cpp/src/Ice/Selector.h +130 -1
  365. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +11 -5
  366. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +10 -4
  367. data/ext/ice/cpp/src/Ice/ServantManager.cpp +29 -23
  368. data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
  369. data/ext/ice/cpp/src/Ice/SharedContext.h +1 -1
  370. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +10 -4
  371. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +1 -1
  372. data/ext/ice/cpp/src/Ice/SlicedData.cpp +1 -1
  373. data/ext/ice/cpp/src/Ice/Stream.cpp +1 -1
  374. data/ext/ice/cpp/src/Ice/StreamI.cpp +1 -1
  375. data/ext/ice/cpp/src/Ice/StreamI.h +1 -1
  376. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +30 -22
  377. data/ext/ice/cpp/src/Ice/StreamSocket.h +7 -4
  378. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +1 -1
  379. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +1 -1
  380. data/ext/ice/cpp/src/Ice/SysLoggerI.h +1 -1
  381. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +8 -8
  382. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +1 -1
  383. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -1
  384. data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -1
  385. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +21 -38
  386. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +5 -6
  387. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +29 -4
  388. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -2
  389. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +2 -2
  390. data/ext/ice/cpp/src/Ice/ThreadPool.h +1 -1
  391. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
  392. data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
  393. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +1 -1
  394. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +16 -7
  395. data/ext/ice/cpp/src/Ice/TraceUtil.h +1 -1
  396. data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -1
  397. data/ext/ice/cpp/src/Ice/Transceiver.h +2 -1
  398. data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
  399. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +1 -1
  400. data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -1
  401. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +13 -39
  402. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +2 -5
  403. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +46 -10
  404. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +3 -2
  405. data/ext/ice/cpp/src/Ice/Version.cpp +12 -6
  406. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +1 -1
  407. data/ext/ice/cpp/src/Ice/WSAcceptor.h +1 -1
  408. data/ext/ice/cpp/src/Ice/WSConnector.cpp +1 -1
  409. data/ext/ice/cpp/src/Ice/WSConnector.h +1 -1
  410. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +6 -38
  411. data/ext/ice/cpp/src/Ice/WSEndpoint.h +12 -1
  412. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +31 -35
  413. data/ext/ice/cpp/src/Ice/WSTransceiver.h +13 -1
  414. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +66 -60
  415. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +106 -100
  416. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +1 -1
  417. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +1 -1
  418. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +76 -36
  419. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +1 -1
  420. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +19 -6
  421. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +1 -1
  422. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +452 -0
  423. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +732 -0
  424. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +520 -0
  425. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.h +36 -0
  426. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +8 -8
  427. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +1 -1
  428. data/ext/ice/cpp/src/IceSSL/Certificate.cpp +49 -47
  429. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +13 -5
  430. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +1 -1
  431. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +1 -1
  432. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +10 -38
  433. data/ext/ice/cpp/src/IceSSL/EndpointI.h +4 -3
  434. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +13 -5
  435. data/ext/ice/cpp/src/IceSSL/Instance.cpp +2 -2
  436. data/ext/ice/cpp/src/IceSSL/Instance.h +1 -1
  437. data/ext/ice/cpp/src/IceSSL/InstanceF.h +1 -1
  438. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +107 -111
  439. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +130 -47
  440. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +11 -3
  441. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +8 -14
  442. data/ext/ice/cpp/src/IceSSL/PluginI.h +1 -1
  443. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +1 -1
  444. data/ext/ice/cpp/src/IceSSL/RFC2253.h +1 -1
  445. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +238 -156
  446. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +93 -66
  447. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +7 -3
  448. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +2 -2
  449. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +32 -35
  450. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +1 -1
  451. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +244 -360
  452. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +59 -29
  453. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +8 -4
  454. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +1 -1
  455. data/ext/ice/cpp/src/IceSSL/TrustManager.h +1 -1
  456. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +1 -1
  457. data/ext/ice/cpp/src/IceSSL/Util.cpp +427 -620
  458. data/ext/ice/cpp/src/IceSSL/Util.h +72 -15
  459. data/ext/ice/cpp/src/IceUtil/ArgVector.cpp +1 -1
  460. data/ext/ice/cpp/src/IceUtil/ArgVector.h +1 -1
  461. data/ext/ice/cpp/src/IceUtil/Cond.cpp +1 -1
  462. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +1 -1
  463. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +1 -1
  464. data/ext/ice/cpp/src/IceUtil/CountDownLatch.cpp +1 -1
  465. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +1 -1
  466. data/ext/ice/cpp/src/IceUtil/Exception.cpp +105 -96
  467. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +2 -1
  468. data/ext/ice/cpp/src/IceUtil/FileUtil.h +9 -1
  469. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
  470. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
  471. data/ext/ice/cpp/src/IceUtil/Options.cpp +1 -1
  472. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +12 -25
  473. data/ext/ice/cpp/src/IceUtil/Random.cpp +1 -1
  474. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +1 -1
  475. data/ext/ice/cpp/src/IceUtil/SHA1.cpp +72 -10
  476. data/ext/ice/cpp/src/IceUtil/Shared.cpp +3 -132
  477. data/ext/ice/cpp/src/IceUtil/StopWatch.h +1 -1
  478. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +1 -1
  479. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +1 -1
  480. data/ext/ice/cpp/src/IceUtil/Thread.cpp +16 -1
  481. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +1 -1
  482. data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
  483. data/ext/ice/cpp/src/IceUtil/Timer.cpp +1 -1
  484. data/ext/ice/cpp/src/IceUtil/UUID.cpp +1 -1
  485. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +1 -1
  486. data/ext/ice/cpp/src/IceUtil/Unicode.h +1 -1
  487. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +62 -55
  488. data/ext/ice/cpp/src/Slice/Checksum.cpp +1 -1
  489. data/ext/ice/cpp/src/Slice/CsUtil.cpp +8 -29
  490. data/ext/ice/cpp/src/Slice/DotNetNames.cpp +1 -1
  491. data/ext/ice/cpp/src/Slice/FileTracker.cpp +1 -1
  492. data/ext/ice/cpp/src/Slice/Grammar.cpp +1 -1
  493. data/ext/ice/cpp/src/Slice/GrammarUtil.h +1 -1
  494. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +145 -172
  495. data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
  496. data/ext/ice/cpp/src/Slice/MD5.h +1 -1
  497. data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +1310 -0
  498. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +1 -1
  499. data/ext/ice/cpp/src/Slice/Parser.cpp +65 -187
  500. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +61 -9
  501. data/ext/ice/cpp/src/Slice/Python.cpp +36 -3
  502. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +10 -10
  503. data/ext/ice/cpp/src/Slice/Ruby.cpp +34 -3
  504. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +8 -7
  505. data/ext/ice/cpp/src/Slice/Scanner.cpp +1 -1
  506. data/ext/ice/cpp/src/Slice/Util.cpp +137 -30
  507. data/ext/ice/mcpp/LICENSE +29 -0
  508. data/ext/ice/mcpp/Makefile +60 -0
  509. data/ext/ice/mcpp/Makefile.mak +46 -0
  510. data/ext/ice/mcpp/README.md +30 -0
  511. data/ext/ice/mcpp/config.h +89 -0
  512. data/ext/ice/mcpp/configed.H +1 -146
  513. data/ext/ice/mcpp/directive.c +115 -410
  514. data/ext/ice/mcpp/eval.c +38 -377
  515. data/ext/ice/mcpp/expand.c +155 -852
  516. data/ext/ice/mcpp/internal.H +10 -44
  517. data/ext/ice/mcpp/main.c +6 -345
  518. data/ext/ice/mcpp/mbchar.c +17 -654
  519. data/ext/ice/mcpp/mcpp.gyp +62 -0
  520. data/ext/ice/mcpp/support.c +116 -943
  521. data/ext/ice/mcpp/system.H +0 -23
  522. data/ext/ice/mcpp/system.c +81 -2321
  523. data/ice.gemspec +3 -4
  524. data/lib/Glacier2.rb +1 -1
  525. data/lib/Glacier2/Metrics.rb +2 -2
  526. data/lib/Glacier2/PermissionsVerifier.rb +2 -2
  527. data/lib/Glacier2/PermissionsVerifierF.rb +2 -2
  528. data/lib/Glacier2/Router.rb +2 -2
  529. data/lib/Glacier2/RouterF.rb +2 -2
  530. data/lib/Glacier2/SSLInfo.rb +2 -2
  531. data/lib/Glacier2/Session.rb +2 -2
  532. data/lib/Ice.rb +1 -1
  533. data/lib/Ice/BuiltinSequences.rb +2 -2
  534. data/lib/Ice/Communicator.rb +2 -2
  535. data/lib/Ice/CommunicatorF.rb +2 -2
  536. data/lib/Ice/Connection.rb +26 -14
  537. data/lib/Ice/ConnectionF.rb +2 -2
  538. data/lib/Ice/Current.rb +2 -2
  539. data/lib/Ice/Endpoint.rb +4 -2
  540. data/lib/Ice/EndpointF.rb +2 -2
  541. data/lib/Ice/EndpointTypes.rb +2 -2
  542. data/lib/Ice/FacetMap.rb +2 -2
  543. data/lib/Ice/Identity.rb +2 -2
  544. data/lib/Ice/ImplicitContext.rb +2 -2
  545. data/lib/Ice/ImplicitContextF.rb +2 -2
  546. data/lib/Ice/Instrumentation.rb +2 -2
  547. data/lib/Ice/InstrumentationF.rb +2 -2
  548. data/lib/Ice/LocalException.rb +2 -2
  549. data/lib/Ice/Locator.rb +2 -2
  550. data/lib/Ice/LocatorF.rb +2 -2
  551. data/lib/Ice/Logger.rb +2 -2
  552. data/lib/Ice/LoggerF.rb +2 -2
  553. data/lib/Ice/Metrics.rb +2 -2
  554. data/lib/Ice/ObjectAdapterF.rb +2 -2
  555. data/lib/Ice/ObjectFactory.rb +2 -2
  556. data/lib/Ice/ObjectFactoryF.rb +2 -2
  557. data/lib/Ice/Plugin.rb +2 -2
  558. data/lib/Ice/PluginF.rb +2 -2
  559. data/lib/Ice/Process.rb +2 -2
  560. data/lib/Ice/ProcessF.rb +2 -2
  561. data/lib/Ice/Properties.rb +2 -2
  562. data/lib/Ice/PropertiesAdmin.rb +2 -2
  563. data/lib/Ice/PropertiesF.rb +2 -2
  564. data/lib/Ice/Router.rb +2 -2
  565. data/lib/Ice/RouterF.rb +2 -2
  566. data/lib/Ice/SliceChecksumDict.rb +2 -2
  567. data/lib/Ice/Version.rb +2 -2
  568. data/lib/IceBox.rb +1 -1
  569. data/lib/IceBox/IceBox.rb +2 -2
  570. data/lib/IceGrid.rb +1 -1
  571. data/lib/IceGrid/Admin.rb +2 -2
  572. data/lib/IceGrid/Descriptor.rb +2 -2
  573. data/lib/IceGrid/Exception.rb +2 -2
  574. data/lib/IceGrid/FileParser.rb +2 -2
  575. data/lib/IceGrid/Locator.rb +2 -2
  576. data/lib/IceGrid/Observer.rb +2 -2
  577. data/lib/IceGrid/Query.rb +2 -2
  578. data/lib/IceGrid/Registry.rb +2 -2
  579. data/lib/IceGrid/Session.rb +2 -2
  580. data/lib/IceGrid/UserAccountMapper.rb +2 -2
  581. data/lib/IcePatch2.rb +1 -1
  582. data/lib/IcePatch2/FileInfo.rb +52 -2
  583. data/lib/IcePatch2/FileServer.rb +33 -4
  584. data/lib/IceStorm.rb +1 -1
  585. data/lib/IceStorm/IceStorm.rb +2 -2
  586. data/lib/IceStorm/Metrics.rb +2 -2
  587. data/slice/Freeze/BackgroundSaveEvictor.ice +2 -2
  588. data/slice/Freeze/CatalogData.ice +2 -2
  589. data/slice/Freeze/Connection.ice +2 -2
  590. data/slice/Freeze/ConnectionF.ice +2 -2
  591. data/slice/Freeze/DB.ice +2 -2
  592. data/slice/Freeze/Evictor.ice +2 -2
  593. data/slice/Freeze/EvictorF.ice +2 -2
  594. data/slice/Freeze/EvictorStorage.ice +2 -2
  595. data/slice/Freeze/Exception.ice +2 -2
  596. data/slice/Freeze/Transaction.ice +2 -2
  597. data/slice/Freeze/TransactionalEvictor.ice +2 -2
  598. data/slice/Glacier2/Metrics.ice +7 -6
  599. data/slice/Glacier2/PermissionsVerifier.ice +4 -3
  600. data/slice/Glacier2/PermissionsVerifierF.ice +3 -2
  601. data/slice/Glacier2/Router.ice +4 -3
  602. data/slice/Glacier2/RouterF.ice +3 -2
  603. data/slice/Glacier2/SSLInfo.ice +3 -2
  604. data/slice/Glacier2/Session.ice +12 -11
  605. data/slice/Ice/BuiltinSequences.ice +4 -3
  606. data/slice/Ice/Communicator.ice +22 -25
  607. data/slice/Ice/CommunicatorF.ice +3 -2
  608. data/slice/Ice/Connection.ice +39 -11
  609. data/slice/Ice/ConnectionF.ice +3 -2
  610. data/slice/Ice/Current.ice +4 -3
  611. data/slice/Ice/Endpoint.ice +11 -3
  612. data/slice/Ice/EndpointF.ice +3 -2
  613. data/slice/Ice/EndpointTypes.ice +3 -2
  614. data/slice/Ice/FacetMap.ice +3 -2
  615. data/slice/Ice/Identity.ice +3 -2
  616. data/slice/Ice/ImplicitContext.ice +3 -2
  617. data/slice/Ice/ImplicitContextF.ice +3 -2
  618. data/slice/Ice/Instrumentation.ice +4 -2
  619. data/slice/Ice/InstrumentationF.ice +4 -2
  620. data/slice/Ice/LocalException.ice +29 -10
  621. data/slice/Ice/Locator.ice +5 -3
  622. data/slice/Ice/LocatorF.ice +3 -2
  623. data/slice/Ice/Logger.ice +3 -2
  624. data/slice/Ice/LoggerF.ice +3 -2
  625. data/slice/Ice/Metrics.ice +15 -14
  626. data/slice/Ice/ObjectAdapter.ice +5 -4
  627. data/slice/Ice/ObjectAdapterF.ice +3 -2
  628. data/slice/Ice/ObjectFactory.ice +3 -2
  629. data/slice/Ice/ObjectFactoryF.ice +3 -2
  630. data/slice/Ice/Plugin.ice +3 -2
  631. data/slice/Ice/PluginF.ice +3 -2
  632. data/slice/Ice/Process.ice +3 -2
  633. data/slice/Ice/ProcessF.ice +3 -2
  634. data/slice/Ice/Properties.ice +3 -2
  635. data/slice/Ice/PropertiesAdmin.ice +3 -2
  636. data/slice/Ice/PropertiesF.ice +3 -2
  637. data/slice/Ice/RemoteLogger.ice +3 -2
  638. data/slice/Ice/Router.ice +3 -2
  639. data/slice/Ice/RouterF.ice +3 -2
  640. data/slice/Ice/ServantLocator.ice +3 -2
  641. data/slice/Ice/ServantLocatorF.ice +3 -2
  642. data/slice/Ice/SliceChecksumDict.ice +3 -2
  643. data/slice/Ice/Version.ice +3 -2
  644. data/slice/IceBox/IceBox.ice +2 -2
  645. data/slice/IceDiscovery/IceDiscovery.ice +2 -2
  646. data/slice/IceGrid/Admin.ice +49 -48
  647. data/slice/IceGrid/Descriptor.ice +3 -2
  648. data/slice/IceGrid/Exception.ice +6 -5
  649. data/slice/IceGrid/FileParser.ice +4 -3
  650. data/slice/IceGrid/Locator.ice +4 -3
  651. data/slice/IceGrid/Observer.ice +28 -27
  652. data/slice/IceGrid/PluginFacade.ice +3 -2
  653. data/slice/IceGrid/Query.ice +3 -2
  654. data/slice/IceGrid/Registry.ice +4 -3
  655. data/slice/IceGrid/Session.ice +9 -8
  656. data/slice/IceGrid/UserAccountMapper.ice +4 -3
  657. data/slice/{IceGrid/Discovery.ice → IceLocatorDiscovery/IceLocatorDiscovery.ice} +12 -14
  658. data/slice/IcePatch2/FileInfo.ice +31 -2
  659. data/slice/IcePatch2/FileServer.ice +63 -5
  660. data/slice/IceSSL/ConnectionInfo.ice +17 -2
  661. data/slice/IceSSL/EndpointInfo.ice +21 -3
  662. data/slice/IceStorm/IceStorm.ice +3 -2
  663. data/slice/IceStorm/Metrics.ice +4 -3
  664. metadata +27 -23
  665. data/ext/ice/cpp/include/Ice/Makefile +0 -26
  666. data/ext/ice/cpp/include/IceSSL/Makefile +0 -26
  667. data/ext/ice/cpp/include/IceUtil/Makefile +0 -26
  668. data/ext/ice/cpp/include/Slice/Makefile +0 -26
  669. data/ext/ice/cpp/src/Ice/Application.cpp +0 -760
  670. data/ext/ice/cpp/src/Ice/EventLoggerMsg.h +0 -53
  671. data/ext/ice/cpp/src/Ice/Makefile +0 -190
  672. data/ext/ice/cpp/src/Ice/Service.cpp +0 -1897
  673. data/ext/ice/cpp/src/IceDiscovery/Makefile +0 -61
  674. data/ext/ice/cpp/src/IceSSL/Makefile +0 -82
  675. data/ext/ice/cpp/src/IceUtil/Makefile +0 -68
  676. data/ext/ice/cpp/src/Slice/Makefile +0 -65
  677. data/ext/ice/mcpp/config.h.Darwin +0 -227
  678. data/ext/ice/mcpp/config.h.Linux +0 -227
  679. data/ext/ice/mcpp/config.h.MINGW +0 -7
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -66,7 +66,7 @@ public:
66
66
  const CreateConnectionCallbackPtr&);
67
67
  void setRouterInfo(const RouterInfoPtr&);
68
68
  void removeAdapter(const Ice::ObjectAdapterPtr&);
69
- void flushAsyncBatchRequests(const CommunicatorFlushBatchPtr&);
69
+ void flushAsyncBatchRequests(const CommunicatorFlushBatchAsyncPtr&);
70
70
 
71
71
  private:
72
72
 
@@ -163,7 +163,6 @@ private:
163
163
  class IncomingConnectionFactory : public EventHandler,
164
164
  public Ice::ConnectionI::StartCallback,
165
165
  public IceUtil::Monitor<IceUtil::Mutex>
166
-
167
166
  {
168
167
  public:
169
168
 
@@ -171,6 +170,11 @@ public:
171
170
  void hold();
172
171
  void destroy();
173
172
 
173
+ #if TARGET_OS_IPHONE != 0
174
+ void startAcceptor();
175
+ void stopAcceptor();
176
+ #endif
177
+
174
178
  void updateConnectionObservers();
175
179
 
176
180
  void waitUntilHolding() const;
@@ -178,7 +182,7 @@ public:
178
182
 
179
183
  EndpointIPtr endpoint() const;
180
184
  std::list<Ice::ConnectionIPtr> connections() const;
181
- void flushAsyncBatchRequests(const CommunicatorFlushBatchPtr&);
185
+ void flushAsyncBatchRequests(const CommunicatorFlushBatchAsyncPtr&);
182
186
 
183
187
  //
184
188
  // Operations from EventHandler
@@ -200,7 +204,7 @@ public:
200
204
  private:
201
205
 
202
206
  IncomingConnectionFactory(const InstancePtr&, const EndpointIPtr&, const Ice::ObjectAdapterIPtr&);
203
- void initialize(const std::string&);
207
+ void initialize();
204
208
  virtual ~IncomingConnectionFactory();
205
209
  friend class Ice::ObjectAdapterI;
206
210
 
@@ -213,14 +217,20 @@ private:
213
217
  };
214
218
 
215
219
  void setState(State);
216
- void closeAcceptor(bool);
220
+
221
+ void createAcceptor();
222
+ void closeAcceptor();
217
223
 
218
224
  const InstancePtr _instance;
219
225
  const FactoryACMMonitorPtr _monitor;
220
226
 
221
- const AcceptorPtr _acceptor;
227
+ AcceptorPtr _acceptor;
222
228
  const TransceiverPtr _transceiver;
223
- const EndpointIPtr _endpoint;
229
+ EndpointIPtr _endpoint;
230
+
231
+ #if TARGET_OS_IPHONE != 0
232
+ bool _acceptorStarted;
233
+ #endif
224
234
 
225
235
  Ice::ObjectAdapterIPtr _adapter;
226
236
 
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -27,8 +27,10 @@
27
27
  #include <Ice/RequestHandler.h> // For RetryException
28
28
  #include <Ice/ReferenceFactory.h> // For createProxy().
29
29
  #include <Ice/ProxyFactory.h> // For createProxy().
30
- #ifndef ICE_OS_WINRT
31
- # include <bzlib.h>
30
+ #include <Ice/BatchRequestQueue.h>
31
+
32
+ #ifdef ICE_HAS_BZIP2
33
+ # include <bzlib.h>
32
34
  #endif
33
35
 
34
36
  using namespace std;
@@ -70,7 +72,7 @@ public:
70
72
  DispatchCall(const ConnectionIPtr& connection, const ConnectionI::StartCallbackPtr& startCB,
71
73
  const vector<ConnectionI::OutgoingMessage>& sentCBs, Byte compress, Int requestId,
72
74
  Int invokeNum, const ServantManagerPtr& servantManager, const ObjectAdapterPtr& adapter,
73
- const OutgoingAsyncPtr& outAsync, const ConnectionCallbackPtr& heartbeatCallback,
75
+ const OutgoingAsyncBasePtr& outAsync, const ConnectionCallbackPtr& heartbeatCallback,
74
76
  BasicStream& stream) :
75
77
  DispatchWorkItem(connection),
76
78
  _connection(connection),
@@ -105,7 +107,7 @@ private:
105
107
  const Int _invokeNum;
106
108
  const ServantManagerPtr _servantManager;
107
109
  const ObjectAdapterPtr _adapter;
108
- const OutgoingAsyncPtr _outAsync;
110
+ const OutgoingAsyncBasePtr _outAsync;
109
111
  const ConnectionCallbackPtr _heartbeatCallback;
110
112
  BasicStream _stream;
111
113
  };
@@ -114,7 +116,7 @@ class FinishCall : public DispatchWorkItem
114
116
  {
115
117
  public:
116
118
 
117
- FinishCall(const Ice::ConnectionIPtr& connection, bool close) :
119
+ FinishCall(const Ice::ConnectionIPtr& connection, bool close) :
118
120
  DispatchWorkItem(connection), _connection(connection), _close(close)
119
121
  {
120
122
  }
@@ -126,7 +128,7 @@ public:
126
128
  }
127
129
 
128
130
  private:
129
-
131
+
130
132
  const ConnectionIPtr _connection;
131
133
  const bool _close;
132
134
  };
@@ -596,7 +598,7 @@ Ice::ConnectionI::monitor(const IceUtil::Time& now, const ACMConfig& acm)
596
598
  setState(StateClosed, ConnectionTimeoutException(__FILE__, __LINE__));
597
599
  }
598
600
  else if(acm.close != CloseOnInvocation &&
599
- _dispatchCount == 0 && _batchStream.b.empty() && _requests.empty() && _asyncRequests.empty())
601
+ _dispatchCount == 0 && _batchRequestQueue->isEmpty() && _requests.empty() && _asyncRequests.empty())
600
602
  {
601
603
  //
602
604
  // The connection is idle, close it.
@@ -607,7 +609,7 @@ Ice::ConnectionI::monitor(const IceUtil::Time& now, const ACMConfig& acm)
607
609
  }
608
610
 
609
611
  bool
610
- Ice::ConnectionI::sendRequest(Outgoing* out, bool compress, bool response)
612
+ Ice::ConnectionI::sendRequest(OutgoingBase* out, bool compress, bool response, int batchRequestNum)
611
613
  {
612
614
  BasicStream* os = out->os();
613
615
 
@@ -654,6 +656,15 @@ Ice::ConnectionI::sendRequest(Outgoing* out, bool compress, bool response)
654
656
  copy(p, p + sizeof(Int), os->b.begin() + headerSize);
655
657
  #endif
656
658
  }
659
+ else if(batchRequestNum > 0)
660
+ {
661
+ const Byte* p = reinterpret_cast<const Byte*>(&batchRequestNum);
662
+ #ifdef ICE_BIG_ENDIAN
663
+ reverse_copy(p, p + sizeof(Int), os->b.begin() + headerSize);
664
+ #else
665
+ copy(p, p + sizeof(Int), os->b.begin() + headerSize);
666
+ #endif
667
+ }
657
668
 
658
669
  out->attachRemoteObserver(initConnectionInfo(), _endpoint, requestId);
659
670
 
@@ -679,14 +690,14 @@ Ice::ConnectionI::sendRequest(Outgoing* out, bool compress, bool response)
679
690
  //
680
691
  // Add to the requests map.
681
692
  //
682
- _requestsHint = _requests.insert(_requests.end(), pair<const Int, Outgoing*>(requestId, out));
693
+ _requestsHint = _requests.insert(_requests.end(), pair<const Int, OutgoingBase*>(requestId, out));
683
694
  }
684
695
 
685
696
  return sent;
686
697
  }
687
698
 
688
699
  AsyncStatus
689
- Ice::ConnectionI::sendAsyncRequest(const OutgoingAsyncPtr& out, bool compress, bool response)
700
+ Ice::ConnectionI::sendAsyncRequest(const OutgoingAsyncBasePtr& out, bool compress, bool response, int batchRequestNum)
690
701
  {
691
702
  BasicStream* os = out->getOs();
692
703
 
@@ -711,10 +722,10 @@ Ice::ConnectionI::sendAsyncRequest(const OutgoingAsyncPtr& out, bool compress, b
711
722
  _transceiver->checkSendSize(*os);
712
723
 
713
724
  //
714
- // Notify the request that it's cancelable with this connection.
725
+ // Notify the request that it's cancelable with this connection.
715
726
  // This will throw if the request is canceled.
716
727
  //
717
- out->cancelable(this);
728
+ out->cancelable(this);
718
729
 
719
730
  Int requestId = 0;
720
731
  if(response)
@@ -739,6 +750,15 @@ Ice::ConnectionI::sendAsyncRequest(const OutgoingAsyncPtr& out, bool compress, b
739
750
  copy(p, p + sizeof(Int), os->b.begin() + headerSize);
740
751
  #endif
741
752
  }
753
+ else if(batchRequestNum > 0)
754
+ {
755
+ const Byte* p = reinterpret_cast<const Byte*>(&batchRequestNum);
756
+ #ifdef ICE_BIG_ENDIAN
757
+ reverse_copy(p, p + sizeof(Int), os->b.begin() + headerSize);
758
+ #else
759
+ copy(p, p + sizeof(Int), os->b.begin() + headerSize);
760
+ #endif
761
+ }
742
762
 
743
763
  out->attachRemoteObserver(initConnectionInfo(), _endpoint, requestId);
744
764
 
@@ -761,211 +781,21 @@ Ice::ConnectionI::sendAsyncRequest(const OutgoingAsyncPtr& out, bool compress, b
761
781
  // Add to the async requests map.
762
782
  //
763
783
  _asyncRequestsHint = _asyncRequests.insert(_asyncRequests.end(),
764
- pair<const Int, OutgoingAsyncPtr>(requestId, out));
784
+ pair<const Int, OutgoingAsyncBasePtr>(requestId, out));
765
785
  }
766
786
  return status;
767
787
  }
768
788
 
769
- void
770
- Ice::ConnectionI::prepareBatchRequest(BasicStream* os)
789
+ BatchRequestQueuePtr
790
+ Ice::ConnectionI::getBatchRequestQueue() const
771
791
  {
772
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
773
-
774
- //
775
- // Wait if flushing is currently in progress.
776
- //
777
- while(_batchStreamInUse && !_exception.get())
778
- {
779
- wait();
780
- }
781
-
782
- if(_exception.get())
783
- {
784
- //
785
- // If there were no batch requests queued when the connection failed, we can safely
786
- // retry with a new connection. Otherwise, we must throw to notify the caller that
787
- // some previous batch requests were not sent.
788
- //
789
- if(_batchStream.b.empty())
790
- {
791
- throw RetryException(*_exception.get());
792
- }
793
- else
794
- {
795
- _exception->ice_throw();
796
- }
797
- }
798
-
799
- assert(_state > StateNotValidated);
800
- assert(_state < StateClosing);
801
-
802
- if(_batchStream.b.empty())
803
- {
804
- try
805
- {
806
- _batchStream.writeBlob(requestBatchHdr, sizeof(requestBatchHdr));
807
- }
808
- catch(const LocalException& ex)
809
- {
810
- setState(StateClosed, ex);
811
- ex.ice_throw();
812
- }
813
- }
814
-
815
- _batchStreamInUse = true;
816
- _batchMarker = _batchStream.b.size();
817
- _batchStream.swap(*os);
818
-
819
- //
820
- // The batch stream now belongs to the caller, until
821
- // finishBatchRequest() or abortBatchRequest() is called.
822
- //
823
- }
824
-
825
- void
826
- Ice::ConnectionI::finishBatchRequest(BasicStream* os, bool compress)
827
- {
828
- try
829
- {
830
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
831
-
832
- //
833
- // Get the batch stream back.
834
- //
835
- _batchStream.swap(*os);
836
-
837
- if(_exception.get())
838
- {
839
- return;
840
- }
841
-
842
- bool flush = false;
843
- if(_batchAutoFlushSize > 0)
844
- {
845
- if(_batchStream.b.size() > _batchAutoFlushSize)
846
- {
847
- flush = true;
848
- }
849
-
850
- //
851
- // Throw memory limit exception if the first message added causes us to
852
- // go over limit. Otherwise put aside the marshalled message that caused
853
- // limit to be exceeded and rollback stream to the marker.
854
- //
855
- try
856
- {
857
- _transceiver->checkSendSize(_batchStream);
858
- }
859
- catch(const Ice::Exception&)
860
- {
861
- if(_batchRequestNum > 0)
862
- {
863
- flush = true;
864
- }
865
- else
866
- {
867
- throw;
868
- }
869
- }
870
- }
871
-
872
- if(flush)
873
- {
874
- //
875
- // Temporarily save the last request.
876
- //
877
- vector<Ice::Byte> lastRequest(_batchStream.b.begin() + _batchMarker, _batchStream.b.end());
878
- _batchStream.b.resize(_batchMarker);
879
-
880
- //
881
- // Send the batch stream without the last request.
882
- //
883
- try
884
- {
885
- //
886
- // Fill in the number of requests in the batch.
887
- //
888
- const Byte* p = reinterpret_cast<const Byte*>(&_batchRequestNum);
889
- #ifdef ICE_BIG_ENDIAN
890
- reverse_copy(p, p + sizeof(Int), _batchStream.b.begin() + headerSize);
891
- #else
892
- copy(p, p + sizeof(Int), _batchStream.b.begin() + headerSize);
893
- #endif
894
-
895
- OutgoingMessage message(&_batchStream, _batchRequestCompress);
896
- sendMessage(message);
897
- }
898
- catch(const Ice::LocalException& ex)
899
- {
900
- setState(StateClosed, ex);
901
- assert(_exception.get());
902
- _exception->ice_throw();
903
- }
904
-
905
- //
906
- // Reset the batch.
907
- //
908
- BasicStream dummy(_instance.get(), currentProtocolEncoding);
909
- _batchStream.swap(dummy);
910
- _batchRequestNum = 0;
911
- _batchRequestCompress = false;
912
- _batchMarker = 0;
913
-
914
- //
915
- // Start a new batch with the last message that caused us to go over the limit.
916
- //
917
- _batchStream.writeBlob(requestBatchHdr, sizeof(requestBatchHdr));
918
- _batchStream.writeBlob(&lastRequest[0], lastRequest.size());
919
- }
920
-
921
- //
922
- // Increment the number of requests in the batch.
923
- //
924
- ++_batchRequestNum;
925
-
926
- //
927
- // We compress the whole batch if there is at least one compressed
928
- // message.
929
- //
930
- if(compress)
931
- {
932
- _batchRequestCompress = true;
933
- }
934
-
935
- //
936
- // Notify about the batch stream not being in use anymore.
937
- //
938
- assert(_batchStreamInUse);
939
- _batchStreamInUse = false;
940
- notifyAll();
941
- }
942
- catch(const Ice::LocalException&)
943
- {
944
- abortBatchRequest();
945
- throw;
946
- }
947
- }
948
-
949
- void
950
- Ice::ConnectionI::abortBatchRequest()
951
- {
952
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
953
-
954
- BasicStream dummy(_instance.get(), currentProtocolEncoding);
955
- _batchStream.swap(dummy);
956
- _batchRequestNum = 0;
957
- _batchRequestCompress = false;
958
- _batchMarker = 0;
959
-
960
- assert(_batchStreamInUse);
961
- _batchStreamInUse = false;
962
- notifyAll();
792
+ return _batchRequestQueue;
963
793
  }
964
794
 
965
795
  void
966
796
  Ice::ConnectionI::flushBatchRequests()
967
797
  {
968
- FlushBatch out(this, _instance.get(), __flushBatchRequests_name);
798
+ ConnectionFlushBatch out(this, _instance.get(), __flushBatchRequests_name);
969
799
  out.invoke();
970
800
  }
971
801
 
@@ -1025,18 +855,18 @@ Ice::ConnectionI::begin_flushBatchRequests(const IceInternal::Function<void (con
1025
855
  #else
1026
856
  assert(false); // Ice not built with C++11 support.
1027
857
  return 0;
1028
- #endif
858
+ #endif
1029
859
  }
1030
860
 
1031
861
  AsyncResultPtr
1032
862
  Ice::ConnectionI::__begin_flushBatchRequests(const CallbackBasePtr& cb, const LocalObjectPtr& cookie)
1033
863
  {
1034
- ConnectionFlushBatchPtr result = new ConnectionFlushBatch(this,
1035
- _communicator,
1036
- _instance,
1037
- __flushBatchRequests_name,
1038
- cb,
1039
- cookie);
864
+ ConnectionFlushBatchAsyncPtr result = new ConnectionFlushBatchAsync(this,
865
+ _communicator,
866
+ _instance,
867
+ __flushBatchRequests_name,
868
+ cb,
869
+ cookie);
1040
870
  result->invoke();
1041
871
  return result;
1042
872
  }
@@ -1048,136 +878,6 @@ Ice::ConnectionI::end_flushBatchRequests(const AsyncResultPtr& r)
1048
878
  r->__wait();
1049
879
  }
1050
880
 
1051
- bool
1052
- Ice::ConnectionI::flushBatchRequests(OutgoingBase* out)
1053
- {
1054
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1055
- while(_batchStreamInUse && !_exception.get())
1056
- {
1057
- wait();
1058
- }
1059
-
1060
- if(_exception.get())
1061
- {
1062
- _exception->ice_throw();
1063
- }
1064
-
1065
- if(_batchRequestNum == 0)
1066
- {
1067
- out->sent();
1068
- return true;
1069
- }
1070
-
1071
- //
1072
- // Fill in the number of requests in the batch.
1073
- //
1074
- const Byte* p = reinterpret_cast<const Byte*>(&_batchRequestNum);
1075
- #ifdef ICE_BIG_ENDIAN
1076
- reverse_copy(p, p + sizeof(Int), _batchStream.b.begin() + headerSize);
1077
- #else
1078
- copy(p, p + sizeof(Int), _batchStream.b.begin() + headerSize);
1079
- #endif
1080
- _batchStream.swap(*out->os());
1081
-
1082
- out->attachRemoteObserver(initConnectionInfo(), _endpoint, 0);
1083
-
1084
- //
1085
- // Send the batch stream.
1086
- //
1087
- bool sent = false;
1088
- try
1089
- {
1090
- OutgoingMessage message(out, out->os(), _batchRequestCompress, 0);
1091
- sent = sendMessage(message) & AsyncStatusSent;
1092
- }
1093
- catch(const Ice::LocalException& ex)
1094
- {
1095
- setState(StateClosed, ex);
1096
- assert(_exception.get());
1097
- _exception->ice_throw();
1098
- }
1099
-
1100
- //
1101
- // Reset the batch stream.
1102
- //
1103
- BasicStream dummy(_instance.get(), Ice::currentProtocolEncoding);
1104
- _batchStream.swap(dummy);
1105
- _batchRequestNum = 0;
1106
- _batchRequestCompress = false;
1107
- _batchMarker = 0;
1108
- return sent;
1109
- }
1110
-
1111
- AsyncStatus
1112
- Ice::ConnectionI::flushAsyncBatchRequests(const OutgoingAsyncBasePtr& outAsync)
1113
- {
1114
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
1115
- while(_batchStreamInUse && !_exception.get())
1116
- {
1117
- wait();
1118
- }
1119
-
1120
- if(_exception.get())
1121
- {
1122
- _exception->ice_throw();
1123
- }
1124
-
1125
- if(_batchRequestNum == 0)
1126
- {
1127
- AsyncStatus status = AsyncStatusSent;
1128
- if(outAsync->sent())
1129
- {
1130
- status = static_cast<AsyncStatus>(status | AsyncStatusInvokeSentCallback);
1131
- }
1132
- return status;
1133
- }
1134
-
1135
- //
1136
- // Notify the request that it's cancelable with this connection.
1137
- // This will throw if the request is canceled.
1138
- //
1139
- outAsync->cancelable(this);
1140
-
1141
- //
1142
- // Fill in the number of requests in the batch.
1143
- //
1144
- const Byte* p = reinterpret_cast<const Byte*>(&_batchRequestNum);
1145
- #ifdef ICE_BIG_ENDIAN
1146
- reverse_copy(p, p + sizeof(Int), _batchStream.b.begin() + headerSize);
1147
- #else
1148
- copy(p, p + sizeof(Int), _batchStream.b.begin() + headerSize);
1149
- #endif
1150
- _batchStream.swap(*outAsync->getOs());
1151
-
1152
- outAsync->attachRemoteObserver(initConnectionInfo(), _endpoint, 0);
1153
-
1154
- //
1155
- // Send the batch stream.
1156
- //
1157
- AsyncStatus status = AsyncStatusQueued;
1158
- try
1159
- {
1160
- OutgoingMessage message(outAsync, outAsync->getOs(), _batchRequestCompress, 0);
1161
- status = sendMessage(message);
1162
- }
1163
- catch(const Ice::LocalException& ex)
1164
- {
1165
- setState(StateClosed, ex);
1166
- assert(_exception.get());
1167
- _exception->ice_throw();
1168
- }
1169
-
1170
- //
1171
- // Reset the batch stream.
1172
- //
1173
- BasicStream dummy(_instance.get(), Ice::currentProtocolEncoding);
1174
- _batchStream.swap(dummy);
1175
- _batchRequestNum = 0;
1176
- _batchRequestCompress = false;
1177
- _batchMarker = 0;
1178
- return status;
1179
- }
1180
-
1181
881
  void
1182
882
  Ice::ConnectionI::setCallback(const ConnectionCallbackPtr& callback)
1183
883
  {
@@ -1294,7 +994,7 @@ Ice::ConnectionI::requestCanceled(OutgoingBase* out, const Ice::LocalException&
1294
994
  {
1295
995
  if(o->requestId)
1296
996
  {
1297
- if(_requestsHint != _requests.end() && _requestsHint->second == dynamic_cast<Outgoing*>(out))
997
+ if(_requestsHint != _requests.end() && _requestsHint->second == out)
1298
998
  {
1299
999
  _requests.erase(_requestsHint);
1300
1000
  _requestsHint = _requests.end();
@@ -1330,10 +1030,9 @@ Ice::ConnectionI::requestCanceled(OutgoingBase* out, const Ice::LocalException&
1330
1030
  }
1331
1031
  }
1332
1032
 
1333
- Outgoing* o = dynamic_cast<Outgoing*>(out);
1334
- if(o)
1033
+ if(dynamic_cast<Outgoing*>(out))
1335
1034
  {
1336
- if(_requestsHint != _requests.end() && _requestsHint->second == o)
1035
+ if(_requestsHint != _requests.end() && _requestsHint->second == out)
1337
1036
  {
1338
1037
  if(dynamic_cast<const Ice::ConnectionTimeoutException*>(&ex))
1339
1038
  {
@@ -1341,7 +1040,7 @@ Ice::ConnectionI::requestCanceled(OutgoingBase* out, const Ice::LocalException&
1341
1040
  }
1342
1041
  else
1343
1042
  {
1344
- o->completed(ex);
1043
+ out->completed(ex);
1345
1044
  _requests.erase(_requestsHint);
1346
1045
  _requestsHint = _requests.end();
1347
1046
  }
@@ -1349,9 +1048,9 @@ Ice::ConnectionI::requestCanceled(OutgoingBase* out, const Ice::LocalException&
1349
1048
  }
1350
1049
  else
1351
1050
  {
1352
- for(map<Int, Outgoing*>::iterator p = _requests.begin(); p != _requests.end(); ++p)
1051
+ for(map<Int, OutgoingBase*>::iterator p = _requests.begin(); p != _requests.end(); ++p)
1353
1052
  {
1354
- if(p->second == o)
1053
+ if(p->second == out)
1355
1054
  {
1356
1055
  if(dynamic_cast<const Ice::ConnectionTimeoutException*>(&ex))
1357
1056
  {
@@ -1359,7 +1058,7 @@ Ice::ConnectionI::requestCanceled(OutgoingBase* out, const Ice::LocalException&
1359
1058
  }
1360
1059
  else
1361
1060
  {
1362
- o->completed(ex);
1061
+ p->second->completed(ex);
1363
1062
  assert(p != _requestsHint);
1364
1063
  _requests.erase(p);
1365
1064
  }
@@ -1382,7 +1081,7 @@ Ice::ConnectionI::asyncRequestCanceled(const OutgoingAsyncBasePtr& outAsync, con
1382
1081
  {
1383
1082
  return; // The request has already been or will be shortly notified of the failure.
1384
1083
  }
1385
-
1084
+
1386
1085
  for(deque<OutgoingMessage>::iterator o = _sendStreams.begin(); o != _sendStreams.end(); ++o)
1387
1086
  {
1388
1087
  if(o->outAsync.get() == outAsync.get())
@@ -1400,7 +1099,7 @@ Ice::ConnectionI::asyncRequestCanceled(const OutgoingAsyncBasePtr& outAsync, con
1400
1099
  _asyncRequests.erase(o->requestId);
1401
1100
  }
1402
1101
  }
1403
-
1102
+
1404
1103
  if(dynamic_cast<const Ice::ConnectionTimeoutException*>(&ex))
1405
1104
  {
1406
1105
  setState(StateClosed, ex);
@@ -1428,13 +1127,12 @@ Ice::ConnectionI::asyncRequestCanceled(const OutgoingAsyncBasePtr& outAsync, con
1428
1127
  return;
1429
1128
  }
1430
1129
  }
1431
-
1432
- OutgoingAsyncPtr o = OutgoingAsyncPtr::dynamicCast(outAsync);
1433
- if(o)
1130
+
1131
+ if(OutgoingAsyncPtr::dynamicCast(outAsync))
1434
1132
  {
1435
1133
  if(_asyncRequestsHint != _asyncRequests.end())
1436
1134
  {
1437
- if(_asyncRequestsHint->second == o)
1135
+ if(_asyncRequestsHint->second == outAsync)
1438
1136
  {
1439
1137
  if(dynamic_cast<const Ice::ConnectionTimeoutException*>(&ex))
1440
1138
  {
@@ -1443,7 +1141,7 @@ Ice::ConnectionI::asyncRequestCanceled(const OutgoingAsyncBasePtr& outAsync, con
1443
1141
  else
1444
1142
  {
1445
1143
  _asyncRequests.erase(_asyncRequestsHint);
1446
- _asyncRequestsHint = _asyncRequests.end();
1144
+ _asyncRequestsHint = _asyncRequests.end();
1447
1145
  if(outAsync->completed(ex))
1448
1146
  {
1449
1147
  outAsync->invokeCompletedAsync();
@@ -1452,10 +1150,10 @@ Ice::ConnectionI::asyncRequestCanceled(const OutgoingAsyncBasePtr& outAsync, con
1452
1150
  return;
1453
1151
  }
1454
1152
  }
1455
-
1456
- for(map<Int, OutgoingAsyncPtr>::iterator p = _asyncRequests.begin(); p != _asyncRequests.end(); ++p)
1153
+
1154
+ for(map<Int, OutgoingAsyncBasePtr>::iterator p = _asyncRequests.begin(); p != _asyncRequests.end(); ++p)
1457
1155
  {
1458
- if(p->second.get() == o.get())
1156
+ if(p->second.get() == outAsync.get())
1459
1157
  {
1460
1158
  if(dynamic_cast<const Ice::ConnectionTimeoutException*>(&ex))
1461
1159
  {
@@ -1768,7 +1466,7 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current)
1768
1466
  Int invokeNum = 0;
1769
1467
  ServantManagerPtr servantManager;
1770
1468
  ObjectAdapterPtr adapter;
1771
- OutgoingAsyncPtr outAsync;
1469
+ OutgoingAsyncBasePtr outAsync;
1772
1470
  ConnectionCallbackPtr heartbeatCallback;
1773
1471
  int dispatchCount = 0;
1774
1472
 
@@ -2038,7 +1736,7 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current)
2038
1736
  void
2039
1737
  ConnectionI::dispatch(const StartCallbackPtr& startCB, const vector<OutgoingMessage>& sentCBs,
2040
1738
  Byte compress, Int requestId, Int invokeNum, const ServantManagerPtr& servantManager,
2041
- const ObjectAdapterPtr& adapter, const OutgoingAsyncPtr& outAsync,
1739
+ const ObjectAdapterPtr& adapter, const OutgoingAsyncBasePtr& outAsync,
2042
1740
  const ConnectionCallbackPtr& heartbeatCallback, BasicStream& stream)
2043
1741
  {
2044
1742
  int dispatchedCount = 0;
@@ -2289,13 +1987,13 @@ Ice::ConnectionI::finish(bool close)
2289
1987
  _sendStreams.clear(); // Must be cleared before _requests because of Outgoing* references in OutgoingMessage
2290
1988
  }
2291
1989
 
2292
- for(map<Int, Outgoing*>::const_iterator p = _requests.begin(); p != _requests.end(); ++p)
1990
+ for(map<Int, OutgoingBase*>::const_iterator p = _requests.begin(); p != _requests.end(); ++p)
2293
1991
  {
2294
1992
  p->second->completed(*_exception.get());
2295
1993
  }
2296
1994
  _requests.clear();
2297
1995
 
2298
- for(map<Int, OutgoingAsyncPtr>::const_iterator q = _asyncRequests.begin(); q != _asyncRequests.end(); ++q)
1996
+ for(map<Int, OutgoingAsyncBasePtr>::const_iterator q = _asyncRequests.begin(); q != _asyncRequests.end(); ++q)
2299
1997
  {
2300
1998
  if(q->second->completed(*_exception.get()))
2301
1999
  {
@@ -2378,6 +2076,18 @@ Ice::ConnectionI::getInfo() const
2378
2076
  return initConnectionInfo();
2379
2077
  }
2380
2078
 
2079
+ void
2080
+ Ice::ConnectionI::setBufferSize(Ice::Int rcvSize, Ice::Int sndSize)
2081
+ {
2082
+ IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
2083
+ if(_state >= StateClosed)
2084
+ {
2085
+ _exception->ice_throw();
2086
+ }
2087
+ _transceiver->setBufferSize(rcvSize, sndSize);
2088
+ _info = 0; // Invalidate the cached connection info
2089
+ }
2090
+
2381
2091
  void
2382
2092
  Ice::ConnectionI::exception(const LocalException& ex)
2383
2093
  {
@@ -2416,12 +2126,7 @@ Ice::ConnectionI::ConnectionI(const CommunicatorPtr& communicator,
2416
2126
  _requestsHint(_requests.end()),
2417
2127
  _asyncRequestsHint(_asyncRequests.end()),
2418
2128
  _messageSizeMax(adapter ? adapter->messageSizeMax() : _instance->messageSizeMax()),
2419
- _batchAutoFlushSize(_instance->batchAutoFlushSize()),
2420
- _batchStream(_instance.get(), Ice::currentProtocolEncoding),
2421
- _batchStreamInUse(false),
2422
- _batchRequestNum(0),
2423
- _batchRequestCompress(false),
2424
- _batchMarker(0),
2129
+ _batchRequestQueue(new BatchRequestQueue(instance, endpoint->datagram())),
2425
2130
  _readStream(_instance.get(), Ice::currentProtocolEncoding),
2426
2131
  _readHeader(false),
2427
2132
  _writeStream(_instance.get(), Ice::currentProtocolEncoding),
@@ -2634,6 +2339,8 @@ Ice::ConnectionI::setState(State state)
2634
2339
  return;
2635
2340
  }
2636
2341
 
2342
+ _batchRequestQueue->destroy(*_exception.get());
2343
+
2637
2344
  //
2638
2345
  // Don't need to close now for connections so only close the transceiver
2639
2346
  // if the selector request it.
@@ -3014,7 +2721,7 @@ Ice::ConnectionI::sendNextMessage(vector<OutgoingMessage>& callbacks)
3014
2721
  //
3015
2722
  message = &_sendStreams.front();
3016
2723
  assert(!message->stream->i);
3017
- #ifndef ICE_OS_WINRT
2724
+ #ifdef ICE_HAS_BZIP2
3018
2725
  if(message->compress && message->stream->b.size() >= 100) // Only compress messages > 100 bytes.
3019
2726
  {
3020
2727
  //
@@ -3070,7 +2777,7 @@ Ice::ConnectionI::sendNextMessage(vector<OutgoingMessage>& callbacks)
3070
2777
  {
3071
2778
  traceSend(*message->stream, _logger, _traceLevels);
3072
2779
  }
3073
- #ifndef ICE_OS_WINRT
2780
+ #ifdef ICE_HAS_BZIP2
3074
2781
  }
3075
2782
  #endif
3076
2783
  _writeStream.swap(*message->stream);
@@ -3139,7 +2846,7 @@ Ice::ConnectionI::sendMessage(OutgoingMessage& message)
3139
2846
 
3140
2847
  message.stream->i = message.stream->b.begin();
3141
2848
  SocketOperation op;
3142
- #ifndef ICE_OS_WINRT
2849
+ #ifdef ICE_HAS_BZIP2
3143
2850
  if(message.compress && message.stream->b.size() >= 100) // Only compress messages larger than 100 bytes.
3144
2851
  {
3145
2852
  //
@@ -3253,7 +2960,7 @@ Ice::ConnectionI::sendMessage(OutgoingMessage& message)
3253
2960
 
3254
2961
  _sendStreams.push_back(message);
3255
2962
  _sendStreams.back().adopt(0); // Adopt the stream.
3256
- #ifndef ICE_OS_WINRT
2963
+ #ifdef ICE_HAS_BZIP2
3257
2964
  }
3258
2965
  #endif
3259
2966
 
@@ -3263,7 +2970,7 @@ Ice::ConnectionI::sendMessage(OutgoingMessage& message)
3263
2970
  return AsyncStatusQueued;
3264
2971
  }
3265
2972
 
3266
- #ifndef ICE_OS_WINRT
2973
+ #ifdef ICE_HAS_BZIP2
3267
2974
  static string
3268
2975
  getBZ2Error(int bzError)
3269
2976
  {
@@ -3418,7 +3125,7 @@ Ice::ConnectionI::doUncompress(BasicStream& compressed, BasicStream& uncompresse
3418
3125
  SocketOperation
3419
3126
  Ice::ConnectionI::parseMessage(BasicStream& stream, Int& invokeNum, Int& requestId, Byte& compress,
3420
3127
  ServantManagerPtr& servantManager, ObjectAdapterPtr& adapter,
3421
- OutgoingAsyncPtr& outAsync, ConnectionCallbackPtr& heartbeatCallback,
3128
+ OutgoingAsyncBasePtr& outAsync, ConnectionCallbackPtr& heartbeatCallback,
3422
3129
  int& dispatchCount)
3423
3130
  {
3424
3131
  assert(_state > StateNotValidated && _state < StateClosed);
@@ -3451,14 +3158,18 @@ Ice::ConnectionI::parseMessage(BasicStream& stream, Int& invokeNum, Int& request
3451
3158
  stream.read(messageType);
3452
3159
  stream.read(compress);
3453
3160
 
3454
- #ifndef ICE_OS_WINRT
3455
3161
  if(compress == 2)
3456
3162
  {
3163
+ #ifdef ICE_HAS_BZIP2
3457
3164
  BasicStream ustream(_instance.get(), Ice::currentProtocolEncoding);
3458
3165
  doUncompress(stream, ustream);
3459
3166
  stream.b.swap(ustream.b);
3460
- }
3167
+ #else
3168
+ FeatureNotSupportedException ex(__FILE__, __LINE__);
3169
+ ex.unsupportedFeature = "Cannot uncompress compressed message";
3170
+ throw ex;
3461
3171
  #endif
3172
+ }
3462
3173
  stream.i = stream.b.begin() + headerSize;
3463
3174
 
3464
3175
  switch(messageType)
@@ -3539,8 +3250,8 @@ Ice::ConnectionI::parseMessage(BasicStream& stream, Int& invokeNum, Int& request
3539
3250
 
3540
3251
  stream.read(requestId);
3541
3252
 
3542
- map<Int, Outgoing*>::iterator p = _requests.end();
3543
- map<Int, OutgoingAsyncPtr>::iterator q = _asyncRequests.end();
3253
+ map<Int, OutgoingBase*>::iterator p = _requests.end();
3254
+ map<Int, OutgoingAsyncBasePtr>::iterator q = _asyncRequests.end();
3544
3255
 
3545
3256
  if(_requestsHint != _requests.end())
3546
3257
  {
@@ -3800,20 +3511,23 @@ Ice::ConnectionI::unscheduleTimeout(SocketOperation status)
3800
3511
  Ice::ConnectionInfoPtr
3801
3512
  Ice::ConnectionI::initConnectionInfo() const
3802
3513
  {
3803
- if(_info)
3514
+ if(_state > StateNotInitialized && _info) // Update the connection information until it's initialized
3804
3515
  {
3805
3516
  return _info;
3806
3517
  }
3807
3518
 
3808
- ConnectionInfoPtr info = _transceiver->getInfo();
3809
- info->connectionId = _endpoint->connectionId();
3810
- info->incoming = _connector == 0;
3811
- info->adapterName = _adapter ? _adapter->getName() : string();
3812
- if(_state > StateNotInitialized)
3519
+ try
3520
+ {
3521
+ _info = _transceiver->getInfo();
3522
+ }
3523
+ catch(const Ice::LocalException&)
3813
3524
  {
3814
- _info = info; // Cache the connection information only if initialized.
3525
+ _info = new ConnectionInfo();
3815
3526
  }
3816
- return info;
3527
+ _info->connectionId = _endpoint->connectionId();
3528
+ _info->incoming = _connector == 0;
3529
+ _info->adapterName = _adapter ? _adapter->getName() : string();
3530
+ return _info;
3817
3531
  }
3818
3532
 
3819
3533
  ConnectionState