zeroc-ice 3.6b1 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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