zeroc-ice 3.6.5 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (752) hide show
  1. checksums.yaml +4 -4
  2. data/BZIP2_LICENSE +42 -0
  3. data/ICE_LICENSE +17 -17
  4. data/LICENSE +12 -12
  5. data/bin/slice2rb +1 -1
  6. data/ext/Communicator.cpp +150 -53
  7. data/ext/Communicator.h +1 -1
  8. data/ext/Config.h +2 -12
  9. data/ext/Connection.cpp +89 -68
  10. data/ext/Connection.h +1 -1
  11. data/ext/Endpoint.cpp +16 -45
  12. data/ext/Endpoint.h +1 -1
  13. data/ext/ImplicitContext.cpp +1 -5
  14. data/ext/ImplicitContext.h +1 -1
  15. data/ext/Init.cpp +4 -1
  16. data/ext/Logger.cpp +1 -1
  17. data/ext/Logger.h +1 -1
  18. data/ext/Operation.cpp +33 -44
  19. data/ext/Operation.h +1 -1
  20. data/ext/Properties.cpp +1 -1
  21. data/ext/Properties.h +1 -1
  22. data/ext/Proxy.cpp +22 -57
  23. data/ext/Proxy.h +1 -1
  24. data/ext/Slice.cpp +5 -5
  25. data/ext/Slice.h +1 -1
  26. data/ext/Types.cpp +244 -171
  27. data/ext/Types.h +118 -66
  28. data/ext/Util.cpp +13 -9
  29. data/ext/Util.h +10 -10
  30. data/ext/ValueFactoryManager.cpp +445 -0
  31. data/ext/ValueFactoryManager.h +100 -0
  32. data/ext/extconf.rb +47 -45
  33. data/ext/ice/bzip2/blocksort.c +1094 -0
  34. data/ext/ice/bzip2/bzlib.c +1572 -0
  35. data/ext/ice/bzip2/bzlib.h +282 -0
  36. data/ext/ice/bzip2/bzlib_private.h +509 -0
  37. data/ext/ice/bzip2/compress.c +672 -0
  38. data/ext/ice/bzip2/crctable.c +104 -0
  39. data/ext/ice/bzip2/decompress.c +646 -0
  40. data/ext/ice/bzip2/huffman.c +205 -0
  41. data/ext/ice/bzip2/randtable.c +84 -0
  42. data/ext/ice/cpp/include/Ice/Application.h +77 -60
  43. data/ext/ice/cpp/include/Ice/AsyncResult.h +34 -318
  44. data/ext/ice/cpp/include/Ice/AsyncResultF.h +4 -2
  45. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +5 -10
  46. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
  47. data/ext/ice/cpp/include/Ice/Buffer.h +10 -10
  48. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +14 -12
  49. data/ext/ice/cpp/include/Ice/Comparable.h +130 -0
  50. data/ext/ice/cpp/include/Ice/Config.h +7 -36
  51. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +107 -11
  52. data/ext/ice/cpp/include/Ice/ConnectionIF.h +5 -1
  53. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +28 -0
  54. data/ext/ice/cpp/include/Ice/{DefaultObjectFactory.h → DefaultValueFactory.h} +28 -14
  55. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +4 -6
  56. data/ext/ice/cpp/include/Ice/Dispatcher.h +14 -13
  57. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +7 -5
  58. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
  59. data/ext/ice/cpp/include/Ice/Exception.h +66 -56
  60. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +69 -0
  61. data/ext/ice/cpp/include/Ice/FactoryTable.h +11 -12
  62. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +27 -25
  63. data/ext/ice/cpp/include/Ice/Format.h +6 -1
  64. data/ext/ice/cpp/include/Ice/Functional.h +33 -33
  65. data/ext/ice/cpp/include/Ice/GCObject.h +9 -5
  66. data/ext/ice/cpp/include/Ice/Handle.h +6 -11
  67. data/ext/ice/cpp/include/Ice/Ice.h +9 -5
  68. data/ext/ice/cpp/include/{IceUtil → Ice}/IconvStringConverter.h +108 -62
  69. data/ext/ice/cpp/include/Ice/Incoming.h +109 -33
  70. data/ext/ice/cpp/include/Ice/IncomingAsync.h +63 -23
  71. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +7 -1
  72. data/ext/ice/cpp/include/Ice/Initialize.h +178 -38
  73. data/ext/ice/cpp/include/Ice/InputStream.h +994 -0
  74. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -2
  75. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +46 -0
  76. data/ext/ice/cpp/include/Ice/LocalObject.h +9 -9
  77. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
  78. data/ext/ice/cpp/include/Ice/LoggerUtil.h +20 -14
  79. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +114 -65
  80. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +23 -5
  81. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +99 -26
  82. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +17 -4
  83. data/ext/ice/cpp/include/Ice/Object.h +105 -56
  84. data/ext/ice/cpp/include/Ice/ObjectF.h +8 -3
  85. data/ext/ice/cpp/include/Ice/ObserverHelper.h +18 -8
  86. data/ext/ice/cpp/include/Ice/Optional.h +1084 -0
  87. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +655 -84
  88. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +12 -6
  89. data/ext/ice/cpp/include/Ice/OutputStream.h +753 -0
  90. data/ext/ice/cpp/include/Ice/Protocol.h +19 -12
  91. data/ext/ice/cpp/include/Ice/Proxy.h +1329 -717
  92. data/ext/ice/cpp/include/Ice/ProxyF.h +11 -33
  93. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
  94. data/ext/ice/cpp/include/Ice/ProxyHandle.h +34 -50
  95. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
  96. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +22 -3
  97. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +10 -4
  98. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +6 -1
  99. data/ext/ice/cpp/include/{IceUtil → Ice}/SHA1.h +16 -16
  100. data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
  101. data/ext/ice/cpp/include/Ice/Service.h +13 -18
  102. data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
  103. data/ext/ice/cpp/include/Ice/SlicedData.h +46 -20
  104. data/ext/ice/cpp/include/Ice/SlicedDataF.h +14 -6
  105. data/ext/ice/cpp/include/Ice/StreamHelpers.h +159 -49
  106. data/ext/ice/cpp/include/Ice/StringConverter.h +52 -0
  107. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
  108. data/{slice/Ice/ObjectFactoryF.ice → ext/ice/cpp/include/Ice/UUID.h} +9 -7
  109. data/ext/ice/cpp/include/{IceUtil → Ice}/UniquePtr.h +21 -22
  110. data/ext/ice/cpp/include/Ice/UniqueRef.h +98 -0
  111. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +40 -8
  112. data/ext/ice/cpp/include/Ice/Value.h +104 -0
  113. data/{slice/Freeze/ConnectionF.ice → ext/ice/cpp/include/Ice/ValueF.h} +11 -7
  114. data/ext/ice/cpp/include/IceSSL/Config.h +8 -23
  115. data/ext/ice/cpp/include/IceSSL/IceSSL.h +17 -6
  116. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +130 -0
  117. data/ext/ice/cpp/include/IceSSL/Plugin.h +172 -259
  118. data/ext/ice/cpp/include/IceSSL/SChannel.h +66 -0
  119. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +66 -0
  120. data/ext/ice/cpp/include/IceSSL/UWP.h +58 -0
  121. data/ext/ice/cpp/include/IceUtil/Atomic.h +8 -10
  122. data/ext/ice/cpp/include/IceUtil/Cond.h +17 -18
  123. data/ext/ice/cpp/include/IceUtil/Config.h +138 -39
  124. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +97 -0
  125. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +5 -5
  126. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +23 -17
  127. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -3
  128. data/ext/ice/cpp/include/IceUtil/Exception.h +157 -67
  129. data/ext/ice/cpp/include/IceUtil/FileUtil.h +148 -0
  130. data/ext/ice/cpp/include/IceUtil/Functional.h +1 -2
  131. data/ext/ice/cpp/include/IceUtil/Handle.h +11 -11
  132. data/ext/ice/cpp/include/IceUtil/IceUtil.h +4 -10
  133. data/ext/ice/cpp/include/IceUtil/InputUtil.h +3 -3
  134. data/ext/ice/cpp/include/IceUtil/Iterator.h +2 -2
  135. data/ext/ice/cpp/include/IceUtil/Lock.h +8 -10
  136. data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -2
  137. data/ext/ice/cpp/include/IceUtil/Mutex.h +17 -11
  138. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +2 -2
  139. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
  140. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +4 -4
  141. data/ext/ice/cpp/include/IceUtil/Optional.h +32 -18
  142. data/ext/ice/cpp/include/IceUtil/Options.h +17 -18
  143. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +55 -29
  144. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +6 -6
  145. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +11 -10
  146. data/ext/ice/cpp/include/IceUtil/Random.h +3 -3
  147. data/ext/ice/cpp/include/IceUtil/RecMutex.h +7 -8
  148. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +58 -0
  149. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +1 -9
  150. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +8 -2
  151. data/ext/ice/cpp/include/IceUtil/Shared.h +5 -7
  152. data/ext/ice/cpp/{src → include}/IceUtil/StopWatch.h +2 -2
  153. data/ext/ice/cpp/include/IceUtil/StringConverter.h +77 -72
  154. data/ext/ice/cpp/include/IceUtil/StringUtil.h +32 -21
  155. data/ext/ice/cpp/include/IceUtil/Thread.h +10 -12
  156. data/ext/ice/cpp/include/IceUtil/ThreadException.h +33 -42
  157. data/ext/ice/cpp/include/IceUtil/Time.h +3 -3
  158. data/ext/ice/cpp/include/IceUtil/Timer.h +14 -13
  159. data/ext/ice/cpp/include/IceUtil/UUID.h +2 -2
  160. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
  161. data/ext/ice/cpp/include/{Ice → generated/Ice}/BuiltinSequences.h +41 -8
  162. data/ext/ice/cpp/include/generated/Ice/Communicator.h +364 -0
  163. data/ext/ice/cpp/include/{Ice → generated/Ice}/CommunicatorF.h +40 -8
  164. data/ext/ice/cpp/include/generated/Ice/Connection.h +872 -0
  165. data/ext/ice/cpp/include/{Ice → generated/Ice}/ConnectionF.h +46 -8
  166. data/ext/ice/cpp/include/{Ice → generated/Ice}/Current.h +71 -8
  167. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +582 -0
  168. data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointF.h +62 -8
  169. data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointTypes.h +31 -16
  170. data/ext/ice/cpp/include/{Ice → generated/Ice}/FacetMap.h +23 -8
  171. data/ext/ice/cpp/include/generated/Ice/Identity.h +221 -0
  172. data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContext.h +72 -13
  173. data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContextF.h +40 -8
  174. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +602 -0
  175. data/ext/ice/cpp/include/{Ice → generated/Ice}/InstrumentationF.h +54 -8
  176. data/ext/ice/cpp/include/generated/Ice/LocalException.h +2802 -0
  177. data/ext/ice/cpp/include/generated/Ice/Locator.h +2036 -0
  178. data/ext/ice/cpp/include/{Ice → generated/Ice}/LocatorF.h +53 -12
  179. data/ext/ice/cpp/include/{Ice → generated/Ice}/Logger.h +71 -13
  180. data/ext/ice/cpp/include/{Ice → generated/Ice}/LoggerF.h +40 -8
  181. data/ext/ice/cpp/include/generated/Ice/Metrics.h +2649 -0
  182. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +302 -0
  183. data/ext/ice/cpp/include/{Ice → generated/Ice}/ObjectAdapterF.h +40 -8
  184. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +142 -0
  185. data/ext/ice/cpp/include/generated/Ice/Plugin.h +197 -0
  186. data/ext/ice/cpp/include/{Ice → generated/Ice}/PluginF.h +43 -8
  187. data/ext/ice/cpp/include/generated/Ice/Process.h +536 -0
  188. data/ext/ice/cpp/include/{Ice → generated/Ice}/ProcessF.h +45 -10
  189. data/ext/ice/cpp/include/{Ice → generated/Ice}/Properties.h +88 -21
  190. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +749 -0
  191. data/ext/ice/cpp/include/{Ice → generated/Ice}/PropertiesF.h +48 -10
  192. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1449 -0
  193. data/ext/ice/cpp/include/generated/Ice/Router.h +1032 -0
  194. data/ext/ice/cpp/include/{Ice → generated/Ice}/RouterF.h +45 -10
  195. data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocator.h +65 -13
  196. data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocatorF.h +40 -8
  197. data/ext/ice/cpp/include/{Ice → generated/Ice}/SliceChecksumDict.h +23 -8
  198. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +169 -0
  199. data/ext/ice/cpp/include/generated/Ice/Version.h +334 -0
  200. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +172 -0
  201. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +98 -0
  202. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +156 -0
  203. data/ext/ice/cpp/src/Ice/ACM.cpp +18 -14
  204. data/ext/ice/cpp/src/Ice/ACM.h +9 -2
  205. data/ext/ice/cpp/{include → src}/Ice/ACMF.h +10 -5
  206. data/ext/ice/cpp/src/Ice/Acceptor.cpp +6 -1
  207. data/ext/ice/cpp/src/Ice/Acceptor.h +4 -3
  208. data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
  209. data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.cpp +9 -9
  210. data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.h +7 -7
  211. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +15 -538
  212. data/ext/ice/cpp/src/Ice/Base64.cpp +11 -11
  213. data/ext/ice/cpp/src/Ice/Base64.h +1 -1
  214. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +40 -12
  215. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +15 -10
  216. data/ext/ice/cpp/src/Ice/Buffer.cpp +74 -12
  217. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +20 -6
  218. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +85 -190
  219. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +17 -18
  220. data/ext/ice/cpp/src/Ice/Communicator.cpp +39 -8
  221. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +27 -5
  222. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +271 -104
  223. data/ext/ice/cpp/src/Ice/CommunicatorI.h +84 -28
  224. data/ext/ice/cpp/src/{IceUtil → Ice}/Cond.cpp +3 -3
  225. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +58 -125
  226. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +11 -22
  227. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +6 -2
  228. data/ext/ice/cpp/src/Ice/Connection.cpp +88 -8
  229. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +27 -5
  230. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +158 -80
  231. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +41 -23
  232. data/ext/ice/cpp/{include → src}/Ice/ConnectionFactoryF.h +8 -3
  233. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +707 -653
  234. data/ext/ice/cpp/src/Ice/ConnectionI.h +97 -69
  235. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +2 -15
  236. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +4 -3
  237. data/ext/ice/cpp/src/Ice/Connector.cpp +6 -1
  238. data/ext/ice/cpp/src/Ice/Connector.h +4 -3
  239. data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
  240. data/ext/ice/cpp/src/{IceUtil → Ice}/CountDownLatch.cpp +4 -4
  241. data/ext/ice/cpp/src/Ice/Current.cpp +29 -6
  242. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +6 -5
  243. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
  244. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
  245. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +5 -25
  246. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +29 -19
  247. data/ext/ice/cpp/src/Ice/Endpoint.cpp +85 -6
  248. data/ext/ice/cpp/src/Ice/EndpointF.cpp +27 -5
  249. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +152 -1
  250. data/ext/ice/cpp/src/Ice/EndpointFactory.h +72 -6
  251. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
  252. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +35 -19
  253. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +10 -4
  254. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
  255. data/ext/ice/cpp/src/Ice/EndpointI.cpp +17 -1
  256. data/ext/ice/cpp/src/Ice/EndpointI.h +35 -9
  257. data/ext/ice/cpp/src/Ice/EndpointIF.h +18 -5
  258. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +18 -6
  259. data/ext/ice/cpp/src/Ice/EventHandler.cpp +6 -4
  260. data/ext/ice/cpp/src/Ice/EventHandler.h +13 -8
  261. data/ext/ice/cpp/src/Ice/EventHandlerF.h +5 -2
  262. data/ext/ice/cpp/src/Ice/Exception.cpp +95 -86
  263. data/ext/ice/cpp/src/Ice/FacetMap.cpp +20 -6
  264. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +37 -28
  265. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -4
  266. data/ext/ice/cpp/src/Ice/GCObject.cpp +28 -25
  267. data/ext/ice/cpp/src/Ice/HashUtil.h +2 -3
  268. data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -2
  269. data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
  270. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +92 -53
  271. data/ext/ice/cpp/src/Ice/IPEndpointI.h +19 -10
  272. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +6 -2
  273. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +56 -0
  274. data/ext/ice/cpp/src/Ice/Identity.cpp +24 -10
  275. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +37 -6
  276. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +27 -5
  277. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +14 -14
  278. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +7 -5
  279. data/ext/ice/cpp/src/Ice/Incoming.cpp +276 -245
  280. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +104 -209
  281. data/ext/ice/cpp/src/Ice/IncomingRequest.h +5 -4
  282. data/ext/ice/cpp/src/Ice/Initialize.cpp +299 -172
  283. data/ext/ice/cpp/src/Ice/InputStream.cpp +2773 -0
  284. data/ext/ice/cpp/src/Ice/Instance.cpp +191 -231
  285. data/ext/ice/cpp/src/Ice/Instance.h +30 -18
  286. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +106 -7
  287. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +27 -5
  288. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +117 -99
  289. data/ext/ice/cpp/src/Ice/InstrumentationI.h +30 -31
  290. data/ext/ice/cpp/src/Ice/LocalException.cpp +1190 -416
  291. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -2
  292. data/ext/ice/cpp/src/Ice/Locator.cpp +1167 -1215
  293. data/ext/ice/cpp/src/Ice/LocatorF.cpp +29 -6
  294. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +129 -163
  295. data/ext/ice/cpp/src/Ice/LocatorInfo.h +29 -29
  296. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
  297. data/ext/ice/cpp/src/Ice/Logger.cpp +35 -5
  298. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +178 -73
  299. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +4 -4
  300. data/ext/ice/cpp/src/Ice/LoggerF.cpp +27 -5
  301. data/ext/ice/cpp/src/Ice/LoggerI.cpp +14 -44
  302. data/ext/ice/cpp/src/Ice/LoggerI.h +7 -13
  303. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +10 -12
  304. data/ext/ice/cpp/src/Ice/Metrics.cpp +1059 -1069
  305. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +49 -19
  306. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -2
  307. data/ext/ice/cpp/src/Ice/Network.cpp +534 -170
  308. data/ext/ice/cpp/src/Ice/Network.h +100 -23
  309. data/ext/ice/cpp/src/Ice/NetworkF.h +2 -2
  310. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +21 -14
  311. data/ext/ice/cpp/src/Ice/NetworkProxy.h +5 -2
  312. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
  313. data/ext/ice/cpp/src/Ice/Object.cpp +217 -221
  314. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -6
  315. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +27 -5
  316. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +35 -14
  317. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +13 -7
  318. data/ext/ice/cpp/{include → src}/Ice/ObjectAdapterFactoryF.h +5 -1
  319. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +184 -58
  320. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +32 -26
  321. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +37 -6
  322. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +9 -32
  323. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +40 -18
  324. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +14 -5
  325. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +803 -365
  326. data/ext/ice/cpp/src/Ice/OutputStream.cpp +1399 -0
  327. data/ext/ice/cpp/src/Ice/Plugin.cpp +45 -6
  328. data/ext/ice/cpp/src/Ice/PluginF.cpp +27 -5
  329. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +13 -13
  330. data/ext/ice/cpp/src/Ice/PluginManagerI.h +5 -6
  331. data/ext/ice/cpp/src/Ice/Process.cpp +256 -114
  332. data/ext/ice/cpp/src/Ice/ProcessF.cpp +29 -6
  333. data/ext/ice/cpp/src/Ice/Properties.cpp +38 -8
  334. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +340 -328
  335. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +81 -17
  336. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +29 -5
  337. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +29 -6
  338. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +25 -26
  339. data/ext/ice/cpp/src/Ice/PropertiesI.h +8 -11
  340. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +107 -50
  341. data/ext/ice/cpp/src/Ice/PropertyNames.h +4 -2
  342. data/ext/ice/cpp/src/Ice/Protocol.cpp +2 -2
  343. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +37 -2
  344. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +9 -20
  345. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
  346. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +6 -1
  347. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +3 -1
  348. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
  349. data/ext/ice/cpp/src/Ice/Proxy.cpp +690 -964
  350. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +23 -32
  351. data/ext/ice/cpp/src/Ice/ProxyFactory.h +16 -11
  352. data/ext/ice/cpp/src/Ice/Reference.cpp +75 -69
  353. data/ext/ice/cpp/src/Ice/Reference.h +27 -22
  354. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +18 -21
  355. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +12 -12
  356. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
  357. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +18 -4
  358. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
  359. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +672 -552
  360. data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
  361. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +5 -3
  362. data/ext/ice/cpp/src/Ice/RequestHandler.h +10 -13
  363. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +10 -6
  364. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +2 -2
  365. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +3 -6
  366. data/ext/ice/cpp/src/Ice/ResponseHandler.h +16 -7
  367. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +6 -12
  368. data/ext/ice/cpp/src/Ice/RetryQueue.h +7 -6
  369. data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
  370. data/ext/ice/cpp/src/Ice/Router.cpp +523 -474
  371. data/ext/ice/cpp/src/Ice/RouterF.cpp +29 -6
  372. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +91 -70
  373. data/ext/ice/cpp/src/Ice/RouterInfo.h +43 -32
  374. data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
  375. data/ext/ice/cpp/src/{IceUtil → Ice}/SHA1.cpp +21 -21
  376. data/ext/ice/cpp/src/Ice/Selector.cpp +989 -923
  377. data/ext/ice/cpp/src/Ice/Selector.h +100 -147
  378. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +37 -6
  379. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +27 -5
  380. data/ext/ice/cpp/src/Ice/ServantManager.cpp +9 -9
  381. data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
  382. data/ext/ice/cpp/src/Ice/SharedContext.h +2 -2
  383. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +20 -6
  384. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +2 -2
  385. data/ext/ice/cpp/src/Ice/SlicedData.cpp +72 -20
  386. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +173 -18
  387. data/ext/ice/cpp/src/Ice/StreamSocket.h +13 -4
  388. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +48 -17
  389. data/ext/ice/cpp/src/Ice/StringUtil.h +35 -0
  390. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +8 -4
  391. data/ext/ice/cpp/src/Ice/SysLoggerI.h +2 -3
  392. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +158 -32
  393. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +12 -5
  394. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -7
  395. data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -2
  396. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +40 -32
  397. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +11 -8
  398. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +12 -27
  399. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -10
  400. data/ext/ice/cpp/src/{IceUtil → Ice}/Thread.cpp +24 -41
  401. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +175 -267
  402. data/ext/ice/cpp/src/Ice/ThreadPool.h +38 -43
  403. data/ext/ice/cpp/src/{IceUtil → Ice}/Timer.cpp +28 -21
  404. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
  405. data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
  406. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +2 -2
  407. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +53 -31
  408. data/ext/ice/cpp/src/Ice/TraceUtil.h +13 -6
  409. data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -2
  410. data/ext/ice/cpp/src/Ice/Transceiver.h +8 -7
  411. data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
  412. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +2 -8
  413. data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -2
  414. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +92 -31
  415. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +12 -4
  416. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +150 -179
  417. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +15 -17
  418. data/ext/ice/cpp/src/Ice/Value.cpp +81 -0
  419. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +84 -0
  420. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +70 -0
  421. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +42 -0
  422. data/ext/ice/cpp/src/Ice/Version.cpp +24 -14
  423. data/ext/ice/cpp/src/Ice/VirtualShared.h +43 -0
  424. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +3 -9
  425. data/ext/ice/cpp/src/Ice/WSAcceptor.h +3 -7
  426. data/ext/ice/cpp/src/Ice/WSConnector.cpp +5 -11
  427. data/ext/ice/cpp/src/Ice/WSConnector.h +3 -6
  428. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +185 -80
  429. data/ext/ice/cpp/src/Ice/WSEndpoint.h +21 -31
  430. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +41 -37
  431. data/ext/ice/cpp/src/Ice/WSTransceiver.h +7 -21
  432. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +526 -264
  433. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +341 -455
  434. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +86 -26
  435. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +59 -23
  436. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +315 -61
  437. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +83 -36
  438. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +57 -59
  439. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +3 -3
  440. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +396 -159
  441. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +251 -355
  442. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +52 -0
  443. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +526 -131
  444. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +19 -165
  445. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +8 -17
  446. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +284 -0
  447. data/ext/ice/cpp/src/IceSSL/CertificateI.h +69 -0
  448. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +39 -11
  449. data/ext/ice/cpp/src/{Ice/ObjectFactoryF.cpp → IceSSL/ConnectionInfoF.cpp} +31 -9
  450. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +14 -56
  451. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +6 -13
  452. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +205 -197
  453. data/ext/ice/cpp/src/IceSSL/EndpointI.h +41 -33
  454. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +39 -10
  455. data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
  456. data/ext/ice/cpp/src/IceSSL/Instance.h +7 -7
  457. data/ext/ice/cpp/src/IceSSL/InstanceF.h +11 -7
  458. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +588 -0
  459. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +117 -152
  460. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +64 -0
  461. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +32 -0
  462. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +132 -0
  463. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +400 -89
  464. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +36 -21
  465. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +291 -0
  466. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +63 -0
  467. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +71 -41
  468. data/ext/ice/cpp/src/IceSSL/PluginI.h +13 -18
  469. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +9 -54
  470. data/ext/ice/cpp/src/IceSSL/RFC2253.h +7 -7
  471. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +585 -0
  472. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +491 -75
  473. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +126 -0
  474. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +32 -0
  475. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +78 -0
  476. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +126 -169
  477. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +19 -22
  478. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +79 -74
  479. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +24 -187
  480. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +4 -19
  481. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +862 -0
  482. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +56 -214
  483. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +60 -0
  484. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +31 -0
  485. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +80 -0
  486. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +137 -144
  487. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +25 -28
  488. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +857 -0
  489. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +46 -0
  490. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +9 -13
  491. data/ext/ice/cpp/src/IceSSL/TrustManager.h +4 -4
  492. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +3 -3
  493. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +271 -0
  494. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +343 -0
  495. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +46 -0
  496. data/ext/ice/cpp/{include/Ice/ObjectFactoryManagerF.h → src/IceSSL/UWPEngineF.h} +13 -8
  497. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +94 -0
  498. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +388 -0
  499. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +76 -0
  500. data/ext/ice/cpp/src/IceSSL/Util.cpp +66 -1256
  501. data/ext/ice/cpp/src/IceSSL/Util.h +48 -137
  502. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +162 -0
  503. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +22 -22
  504. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +34 -26
  505. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +20 -31
  506. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +25 -116
  507. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
  508. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
  509. data/ext/ice/cpp/src/IceUtil/Options.cpp +23 -46
  510. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +7 -6
  511. data/ext/ice/cpp/src/IceUtil/Random.cpp +13 -13
  512. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +3 -9
  513. data/ext/ice/cpp/src/IceUtil/Shared.cpp +8 -3
  514. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +501 -264
  515. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +540 -235
  516. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +37 -74
  517. data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
  518. data/ext/ice/cpp/src/IceUtil/UUID.cpp +10 -10
  519. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +98 -97
  520. data/ext/ice/cpp/src/IceUtil/Unicode.h +21 -35
  521. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +838 -0
  522. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +815 -163
  523. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +76 -0
  524. data/ext/ice/cpp/src/Slice/Checksum.cpp +2 -2
  525. data/ext/ice/cpp/{include → src}/Slice/Checksum.h +2 -2
  526. data/ext/ice/cpp/src/Slice/FileTracker.cpp +25 -78
  527. data/ext/ice/cpp/{include → src}/Slice/FileTracker.h +9 -9
  528. data/ext/ice/cpp/src/Slice/Grammar.cpp +1994 -1943
  529. data/ext/ice/cpp/src/Slice/Grammar.h +44 -24
  530. data/ext/ice/cpp/src/Slice/GrammarUtil.h +14 -14
  531. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +2658 -1927
  532. data/ext/ice/cpp/{include → src}/Slice/JavaUtil.h +178 -59
  533. data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
  534. data/ext/ice/cpp/src/Slice/MD5.h +1 -1
  535. data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -1
  536. data/ext/ice/cpp/src/Slice/MD5I.h +1 -1
  537. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +12 -15
  538. data/ext/ice/cpp/{include → src}/Slice/PHPUtil.h +6 -15
  539. data/ext/ice/cpp/src/Slice/Parser.cpp +802 -307
  540. data/ext/ice/cpp/{include → src}/Slice/Parser.h +76 -84
  541. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +43 -21
  542. data/ext/ice/cpp/{include → src}/Slice/Preprocessor.h +7 -12
  543. data/ext/ice/cpp/src/Slice/Python.cpp +207 -86
  544. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +683 -679
  545. data/ext/ice/cpp/{include → src}/Slice/PythonUtil.h +19 -8
  546. data/ext/ice/cpp/src/Slice/Ruby.cpp +38 -34
  547. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +177 -445
  548. data/ext/ice/cpp/{include → src}/Slice/RubyUtil.h +6 -6
  549. data/ext/ice/cpp/src/Slice/Scanner.cpp +218 -306
  550. data/ext/ice/cpp/src/Slice/{Util.cpp → SliceUtil.cpp} +37 -64
  551. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +374 -0
  552. data/ext/ice/cpp/src/Slice/Util.h +54 -0
  553. data/ext/ice/mcpp/Makefile +5 -2
  554. data/ice.gemspec +2 -7
  555. data/lib/Glacier2.rb +1 -1
  556. data/lib/Glacier2/Metrics.rb +7 -46
  557. data/lib/Glacier2/PermissionsVerifier.rb +24 -95
  558. data/lib/Glacier2/PermissionsVerifierF.rb +3 -3
  559. data/lib/Glacier2/Router.rb +32 -74
  560. data/lib/Glacier2/RouterF.rb +3 -3
  561. data/lib/Glacier2/SSLInfo.rb +4 -7
  562. data/lib/Glacier2/Session.rb +88 -307
  563. data/lib/Ice.rb +83 -52
  564. data/lib/Ice/BuiltinSequences.rb +4 -4
  565. data/lib/Ice/Communicator.rb +56 -58
  566. data/lib/Ice/CommunicatorF.rb +3 -3
  567. data/lib/Ice/Connection.rb +153 -162
  568. data/lib/Ice/ConnectionF.rb +3 -3
  569. data/lib/Ice/Current.rb +4 -11
  570. data/lib/Ice/Endpoint.rb +57 -133
  571. data/lib/Ice/EndpointF.rb +3 -3
  572. data/lib/Ice/EndpointTypes.rb +3 -7
  573. data/lib/Ice/FacetMap.rb +4 -4
  574. data/lib/Ice/Identity.rb +5 -8
  575. data/lib/Ice/ImplicitContext.rb +5 -34
  576. data/lib/Ice/ImplicitContextF.rb +3 -3
  577. data/lib/Ice/Instrumentation.rb +23 -275
  578. data/lib/Ice/InstrumentationF.rb +3 -3
  579. data/lib/Ice/LocalException.rb +95 -141
  580. data/lib/Ice/Locator.rb +51 -165
  581. data/lib/Ice/LocatorF.rb +3 -3
  582. data/lib/Ice/Logger.rb +5 -34
  583. data/lib/Ice/LoggerF.rb +3 -3
  584. data/lib/Ice/Metrics.rb +61 -416
  585. data/lib/Ice/ObjectAdapter.rb +34 -0
  586. data/lib/Ice/ObjectAdapterF.rb +3 -3
  587. data/lib/Ice/ObjectFactory.rb +5 -30
  588. data/lib/Ice/Plugin.rb +7 -60
  589. data/lib/Ice/PluginF.rb +3 -3
  590. data/lib/Ice/Process.rb +16 -52
  591. data/lib/Ice/ProcessF.rb +3 -3
  592. data/lib/Ice/Properties.rb +5 -41
  593. data/lib/Ice/PropertiesAdmin.rb +19 -56
  594. data/lib/Ice/PropertiesF.rb +3 -3
  595. data/lib/Ice/RemoteLogger.rb +34 -115
  596. data/lib/Ice/Router.rb +29 -101
  597. data/lib/Ice/RouterF.rb +3 -3
  598. data/lib/Ice/ServantLocator.rb +31 -0
  599. data/lib/Ice/{ObjectFactoryF.rb → ServantLocatorF.rb} +6 -6
  600. data/lib/Ice/SliceChecksumDict.rb +3 -3
  601. data/lib/Ice/ValueFactory.rb +33 -0
  602. data/lib/Ice/Version.rb +5 -11
  603. data/lib/IceBox.rb +1 -1
  604. data/lib/IceBox/IceBox.rb +44 -148
  605. data/lib/IceGrid.rb +1 -4
  606. data/lib/IceGrid/Admin.rb +551 -427
  607. data/lib/IceGrid/Descriptor.rb +62 -529
  608. data/lib/IceGrid/Exception.rb +24 -45
  609. data/lib/IceGrid/FileParser.rb +14 -50
  610. data/lib/IceGrid/PluginFacade.rb +40 -0
  611. data/lib/IceGrid/Registry.rb +151 -58
  612. data/lib/IceGrid/Session.rb +25 -64
  613. data/lib/IceGrid/UserAccountMapper.rb +14 -50
  614. data/lib/IcePatch2.rb +1 -1
  615. data/lib/IcePatch2/FileInfo.rb +5 -11
  616. data/lib/IcePatch2/FileServer.rb +33 -76
  617. data/lib/IceStorm.rb +1 -1
  618. data/lib/IceStorm/IceStorm.rb +79 -206
  619. data/lib/IceStorm/Metrics.rb +11 -89
  620. data/slice/Glacier2/Metrics.ice +8 -4
  621. data/slice/Glacier2/PermissionsVerifier.ice +10 -7
  622. data/slice/Glacier2/PermissionsVerifierF.ice +7 -4
  623. data/slice/Glacier2/Router.ice +10 -8
  624. data/slice/Glacier2/RouterF.ice +7 -4
  625. data/slice/Glacier2/SSLInfo.ice +8 -5
  626. data/slice/Glacier2/Session.ice +15 -13
  627. data/slice/Ice/BuiltinSequences.ice +7 -4
  628. data/slice/Ice/Communicator.ice +141 -66
  629. data/slice/Ice/CommunicatorF.ice +7 -4
  630. data/slice/Ice/Connection.ice +183 -86
  631. data/slice/Ice/ConnectionF.ice +7 -4
  632. data/slice/Ice/Current.ice +13 -9
  633. data/slice/Ice/Endpoint.ice +63 -14
  634. data/slice/Ice/EndpointF.ice +7 -4
  635. data/slice/Ice/EndpointTypes.ice +8 -6
  636. data/slice/Ice/FacetMap.ice +7 -4
  637. data/slice/Ice/Identity.ice +13 -5
  638. data/slice/Ice/ImplicitContext.ice +20 -18
  639. data/slice/Ice/ImplicitContextF.ice +7 -4
  640. data/slice/Ice/Instrumentation.ice +20 -19
  641. data/slice/Ice/InstrumentationF.ice +8 -5
  642. data/slice/Ice/LocalException.ice +87 -87
  643. data/slice/Ice/Locator.ice +19 -18
  644. data/slice/Ice/LocatorF.ice +7 -4
  645. data/slice/Ice/Logger.ice +9 -7
  646. data/slice/Ice/LoggerF.ice +7 -4
  647. data/slice/Ice/Metrics.ice +18 -14
  648. data/slice/Ice/ObjectAdapter.ice +30 -13
  649. data/slice/Ice/ObjectAdapterF.ice +7 -4
  650. data/slice/Ice/ObjectFactory.ice +15 -12
  651. data/slice/Ice/Plugin.ice +9 -6
  652. data/slice/Ice/PluginF.ice +8 -5
  653. data/slice/Ice/Process.ice +9 -6
  654. data/slice/Ice/ProcessF.ice +7 -4
  655. data/slice/Ice/Properties.ice +15 -12
  656. data/slice/Ice/PropertiesAdmin.ice +9 -5
  657. data/slice/Ice/PropertiesF.ice +7 -4
  658. data/slice/Ice/RemoteLogger.ice +33 -24
  659. data/slice/Ice/Router.ice +16 -7
  660. data/slice/Ice/RouterF.ice +7 -4
  661. data/slice/Ice/ServantLocator.ice +13 -10
  662. data/slice/Ice/ServantLocatorF.ice +7 -4
  663. data/slice/Ice/SliceChecksumDict.ice +7 -4
  664. data/slice/Ice/ValueFactory.ice +127 -0
  665. data/slice/Ice/Version.ice +9 -5
  666. data/slice/IceBT/ConnectionInfo.ice +53 -0
  667. data/slice/IceBT/EndpointInfo.ice +51 -0
  668. data/slice/IceBT/Types.ice +39 -0
  669. data/slice/IceBox/IceBox.ice +20 -21
  670. data/slice/IceDiscovery/IceDiscovery.ice +9 -5
  671. data/slice/IceGrid/Admin.ice +390 -30
  672. data/slice/IceGrid/Descriptor.ice +37 -29
  673. data/slice/IceGrid/Exception.ice +33 -27
  674. data/slice/IceGrid/FileParser.ice +9 -6
  675. data/slice/IceGrid/PluginFacade.ice +11 -9
  676. data/slice/IceGrid/Registry.ice +139 -16
  677. data/slice/IceGrid/Session.ice +10 -8
  678. data/slice/IceGrid/UserAccountMapper.ice +9 -6
  679. data/slice/IceIAP/ConnectionInfo.ice +70 -0
  680. data/slice/IceIAP/EndpointInfo.ice +64 -0
  681. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +9 -7
  682. data/slice/IcePatch2/FileInfo.ice +9 -8
  683. data/slice/IcePatch2/FileServer.ice +17 -13
  684. data/slice/IceSSL/ConnectionInfo.ice +14 -17
  685. data/slice/IceSSL/ConnectionInfoF.ice +24 -0
  686. data/slice/IceSSL/EndpointInfo.ice +9 -30
  687. data/slice/IceStorm/IceStorm.ice +22 -18
  688. data/slice/IceStorm/Metrics.ice +9 -5
  689. metadata +154 -120
  690. data/ext/ObjectFactory.cpp +0 -140
  691. data/ext/ObjectFactory.h +0 -50
  692. data/ext/ice/cpp/include/Ice/BasicStream.h +0 -1335
  693. data/ext/ice/cpp/include/Ice/Communicator.h +0 -200
  694. data/ext/ice/cpp/include/Ice/Connection.h +0 -497
  695. data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +0 -62
  696. data/ext/ice/cpp/include/Ice/Endpoint.h +0 -341
  697. data/ext/ice/cpp/include/Ice/Identity.h +0 -168
  698. data/ext/ice/cpp/include/Ice/Instrumentation.h +0 -365
  699. data/ext/ice/cpp/include/Ice/LocalException.h +0 -1030
  700. data/ext/ice/cpp/include/Ice/Locator.h +0 -2193
  701. data/ext/ice/cpp/include/Ice/Metrics.h +0 -2974
  702. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +0 -168
  703. data/ext/ice/cpp/include/Ice/ObjectFactory.h +0 -92
  704. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +0 -66
  705. data/ext/ice/cpp/include/Ice/Outgoing.h +0 -225
  706. data/ext/ice/cpp/include/Ice/Plugin.h +0 -125
  707. data/ext/ice/cpp/include/Ice/Process.h +0 -574
  708. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +0 -830
  709. data/ext/ice/cpp/include/Ice/RemoteLogger.h +0 -1500
  710. data/ext/ice/cpp/include/Ice/Router.h +0 -1159
  711. data/ext/ice/cpp/include/Ice/Stream.h +0 -447
  712. data/ext/ice/cpp/include/Ice/StreamF.h +0 -30
  713. data/ext/ice/cpp/include/Ice/Version.h +0 -262
  714. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +0 -158
  715. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +0 -142
  716. data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +0 -119
  717. data/ext/ice/cpp/include/IceUtil/Cache.h +0 -362
  718. data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +0 -65
  719. data/ext/ice/cpp/include/Slice/CsUtil.h +0 -92
  720. data/ext/ice/cpp/include/Slice/DotNetNames.h +0 -34
  721. data/ext/ice/cpp/include/Slice/ObjCUtil.h +0 -127
  722. data/ext/ice/cpp/include/Slice/Util.h +0 -56
  723. data/ext/ice/cpp/src/Ice/BasicStream.cpp +0 -3428
  724. data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +0 -62
  725. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +0 -139
  726. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +0 -43
  727. data/ext/ice/cpp/src/Ice/Outgoing.cpp +0 -694
  728. data/ext/ice/cpp/src/Ice/Stream.cpp +0 -53
  729. data/ext/ice/cpp/src/Ice/StreamI.cpp +0 -832
  730. data/ext/ice/cpp/src/Ice/StreamI.h +0 -198
  731. data/ext/ice/cpp/src/IceSSL/Certificate.cpp +0 -1336
  732. data/ext/ice/cpp/src/IceUtil/Exception.cpp +0 -792
  733. data/ext/ice/cpp/src/IceUtil/FileUtil.h +0 -185
  734. data/ext/ice/cpp/src/Slice/CsUtil.cpp +0 -2660
  735. data/ext/ice/cpp/src/Slice/DotNetNames.cpp +0 -146
  736. data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +0 -1310
  737. data/lib/IceGrid/Locator.rb +0 -106
  738. data/lib/IceGrid/Observer.rb +0 -572
  739. data/lib/IceGrid/Query.rb +0 -169
  740. data/slice/Freeze/BackgroundSaveEvictor.ice +0 -111
  741. data/slice/Freeze/CatalogData.ice +0 -49
  742. data/slice/Freeze/Connection.ice +0 -121
  743. data/slice/Freeze/DB.ice +0 -37
  744. data/slice/Freeze/Evictor.ice +0 -346
  745. data/slice/Freeze/EvictorF.ice +0 -22
  746. data/slice/Freeze/EvictorStorage.ice +0 -72
  747. data/slice/Freeze/Exception.ice +0 -100
  748. data/slice/Freeze/Transaction.ice +0 -58
  749. data/slice/Freeze/TransactionalEvictor.ice +0 -50
  750. data/slice/IceGrid/Locator.ice +0 -57
  751. data/slice/IceGrid/Observer.ice +0 -395
  752. data/slice/IceGrid/Query.ice +0 -131
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -13,7 +13,9 @@
13
13
  #include <IceUtil/StringConverter.h>
14
14
  #include <IceUtil/FileUtil.h>
15
15
  #include <IceUtil/UUID.h>
16
+ #include <IceUtil/ConsoleUtil.h>
16
17
  #include <algorithm>
18
+ #include <iterator>
17
19
  #include <vector>
18
20
  #include <fstream>
19
21
  #include <sys/types.h>
@@ -26,6 +28,7 @@
26
28
 
27
29
  using namespace std;
28
30
  using namespace Slice;
31
+ using namespace IceUtilInternal;
29
32
 
30
33
  //
31
34
  // mcpp defines
@@ -64,6 +67,12 @@ Slice::Preprocessor::~Preprocessor()
64
67
  close();
65
68
  }
66
69
 
70
+ string
71
+ Slice::Preprocessor::getFileName()
72
+ {
73
+ return _fileName;
74
+ }
75
+
67
76
  string
68
77
  Slice::Preprocessor::getBaseName()
69
78
  {
@@ -82,11 +91,9 @@ Slice::Preprocessor::addQuotes(const string& arg)
82
91
  {
83
92
  //
84
93
  // Add quotes around the given argument to ensure that arguments
85
- // with spaces will be preserved as a single argument. We also
86
- // escape the "\" character to ensure that we don't end up with a
87
- // \" at the end of the string.
94
+ // with spaces will be preserved as a single argument
88
95
  //
89
- return "\"" + IceUtilInternal::escapeString(arg, "\\") + "\"";
96
+ return "\"" + escapeString(arg, "", IceUtilInternal::Unicode) + "\"";
90
97
  }
91
98
 
92
99
  string
@@ -140,7 +147,7 @@ namespace
140
147
  {
141
148
 
142
149
  vector<string>
143
- baseArgs(vector<string> args, bool keepComments, const string& extraArgs, const string& fileName)
150
+ baseArgs(vector<string> args, bool keepComments, const vector<string>& extraArgs, const string& fileName)
144
151
  {
145
152
  if(keepComments)
146
153
  {
@@ -161,10 +168,7 @@ baseArgs(vector<string> args, bool keepComments, const string& extraArgs, const
161
168
  args.push_back(os.str());
162
169
  }
163
170
 
164
- if(!extraArgs.empty())
165
- {
166
- args.push_back(extraArgs);
167
- }
171
+ copy(extraArgs.begin(), extraArgs.end(), back_inserter(args));
168
172
  args.push_back(fileName);
169
173
  return args;
170
174
  }
@@ -172,7 +176,18 @@ baseArgs(vector<string> args, bool keepComments, const string& extraArgs, const
172
176
  }
173
177
 
174
178
  FILE*
175
- Slice::Preprocessor::preprocess(bool keepComments, const string& extraArgs)
179
+ Slice::Preprocessor::preprocess(bool keepComments, const string& extraArg)
180
+ {
181
+ vector<string> args;
182
+ if(!extraArg.empty())
183
+ {
184
+ args.push_back(extraArg);
185
+ }
186
+ return preprocess(keepComments, args);
187
+ }
188
+
189
+ FILE*
190
+ Slice::Preprocessor::preprocess(bool keepComments, const vector<string>& extraArgs)
176
191
  {
177
192
  if(!checkInputFile())
178
193
  {
@@ -270,10 +285,7 @@ Slice::Preprocessor::preprocess(bool keepComments, const string& extraArgs)
270
285
  }
271
286
  else
272
287
  {
273
- ostream& os = getErrorStream();
274
- os << _path << ": error: could not open temporary file: ";
275
- os << _cppFile;
276
- os << endl;
288
+ consoleErr << _path << ": error: could not open temporary file: " << _cppFile << endl;
277
289
  }
278
290
  }
279
291
 
@@ -287,7 +299,17 @@ Slice::Preprocessor::preprocess(bool keepComments, const string& extraArgs)
287
299
 
288
300
  bool
289
301
  Slice::Preprocessor::printMakefileDependencies(ostream& out, Language lang, const vector<string>& includePaths,
290
- const string& extraArgs, const string& cppSourceExt,
302
+ const string& extraArg, const string& cppSourceExt,
303
+ const string& optValue)
304
+ {
305
+ vector<string> extraArgs;
306
+ extraArgs.push_back(extraArg);
307
+ return printMakefileDependencies(out, lang, includePaths, extraArgs, cppSourceExt, optValue);
308
+ }
309
+
310
+ bool
311
+ Slice::Preprocessor::printMakefileDependencies(ostream& out, Language lang, const vector<string>& includePaths,
312
+ const vector<string>& extraArgs, const string& cppSourceExt,
291
313
  const string& optValue)
292
314
  {
293
315
  if(!checkInputFile())
@@ -404,7 +426,7 @@ Slice::Preprocessor::printMakefileDependencies(ostream& out, Language lang, cons
404
426
  //
405
427
  // Get the main output file name.
406
428
  //
407
- #if defined(_MSC_VER) || defined(__MINGW32__)
429
+ #ifdef _MSC_VER
408
430
  string suffix = ".obj:";
409
431
  #else
410
432
  string suffix = ".o:";
@@ -704,7 +726,7 @@ Slice::Preprocessor::printMakefileDependencies(ostream& out, Language lang, cons
704
726
  }
705
727
  default:
706
728
  {
707
- abort();
729
+ assert(false);
708
730
  break;
709
731
  }
710
732
  }
@@ -750,14 +772,14 @@ Slice::Preprocessor::checkInputFile()
750
772
  }
751
773
  if(suffix != ".ice")
752
774
  {
753
- getErrorStream() << _path << ": error: input files must end with `.ice'" << endl;
775
+ consoleErr << _path << ": error: input files must end with `.ice'" << endl;
754
776
  return false;
755
777
  }
756
778
 
757
- IceUtilInternal::ifstream test(_fileName);
779
+ ifstream test(IceUtilInternal::streamFilename(_fileName).c_str());
758
780
  if(!test)
759
781
  {
760
- getErrorStream() << _path << ": error: cannot open `" << _fileName << "' for reading" << endl;
782
+ consoleErr << _path << ": error: cannot open `" << _fileName << "' for reading" << endl;
761
783
  return false;
762
784
  }
763
785
  test.close();
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -14,23 +14,13 @@
14
14
  #include <IceUtil/Handle.h>
15
15
  #include <vector>
16
16
 
17
- #ifndef SLICE_API
18
- # ifdef SLICE_API_EXPORTS
19
- # define SLICE_API ICE_DECLSPEC_EXPORT
20
- # elif defined(ICE_STATIC_LIBS)
21
- # define SLICE_API /**/
22
- # else
23
- # define SLICE_API ICE_DECLSPEC_IMPORT
24
- # endif
25
- #endif
26
-
27
17
  namespace Slice
28
18
  {
29
19
 
30
20
  class Preprocessor;
31
21
  typedef IceUtil::Handle<Preprocessor> PreprocessorPtr;
32
22
 
33
- class SLICE_API Preprocessor : public IceUtil::SimpleShared
23
+ class Preprocessor : public IceUtil::SimpleShared
34
24
  {
35
25
  public:
36
26
 
@@ -39,13 +29,18 @@ public:
39
29
  ~Preprocessor();
40
30
 
41
31
  FILE* preprocess(bool, const std::string& = "");
32
+ FILE* preprocess(bool, const std::vector<std::string>&);
42
33
  bool close();
43
34
 
44
35
  enum Language { CPlusPlus, Java, CSharp, Python, Ruby, PHP, JavaScript, JavaScriptJSON, ObjC, SliceXML };
45
36
 
46
37
  bool printMakefileDependencies(std::ostream&, Language, const std::vector<std::string>&, const std::string& = "",
47
38
  const std::string& = "cpp", const std::string& = "");
39
+ bool printMakefileDependencies(std::ostream&, Language, const std::vector<std::string>&,
40
+ const std::vector<std::string>&, const std::string& = "cpp",
41
+ const std::string& = "");
48
42
 
43
+ std::string getFileName();
49
44
  std::string getBaseName();
50
45
 
51
46
  static std::string addQuotes(const std::string&);
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -14,6 +14,7 @@
14
14
  #include <IceUtil/CtrlCHandler.h>
15
15
  #include <IceUtil/Mutex.h>
16
16
  #include <IceUtil/MutexPtrLock.h>
17
+ #include <IceUtil/ConsoleUtil.h>
17
18
  // BUGFIX: With MSVC2013 if this isn't included you get strange linker errors.
18
19
  #include <IceUtil/FileUtil.h>
19
20
  #include <Slice/Preprocessor.h>
@@ -38,6 +39,7 @@
38
39
  using namespace std;
39
40
  using namespace Slice;
40
41
  using namespace Slice::Python;
42
+ using namespace IceUtilInternal;
41
43
 
42
44
  namespace
43
45
  {
@@ -71,6 +73,100 @@ interruptedCallback(int /*signal*/)
71
73
  interrupted = true;
72
74
  }
73
75
 
76
+ void
77
+ createDirectory(const string& dir)
78
+ {
79
+ IceUtilInternal::structstat st;
80
+ if(!IceUtilInternal::stat(dir, &st))
81
+ {
82
+ if(!(st.st_mode & S_IFDIR))
83
+ {
84
+ ostringstream os;
85
+ os << "failed to create directory '" << dir
86
+ << "': file already exists and is not a directory";
87
+ throw FileException(__FILE__, __LINE__, os.str());
88
+ }
89
+ return;
90
+ }
91
+
92
+ if(IceUtilInternal::mkdir(dir, 0777) != 0)
93
+ {
94
+ ostringstream os;
95
+ os << "cannot create directory '" << dir << "': " << strerror(errno);
96
+ throw FileException(__FILE__, __LINE__, os.str());
97
+ }
98
+ }
99
+
100
+ //
101
+ // Starting in the directory given by output (can be empty for the CWD), create all necessary subdirectories
102
+ // in the path given by pkgdir.
103
+ //
104
+ void
105
+ createPackageDirectory(const string& output, const string& pkgdir)
106
+ {
107
+ assert(output.empty() || IceUtilInternal::directoryExists(output));
108
+ assert(!pkgdir.empty());
109
+
110
+ vector<string> elements;
111
+ if(!IceUtilInternal::splitString(pkgdir, "/", elements))
112
+ {
113
+ throw FileException(__FILE__, __LINE__, "invalid path in '" + pkgdir + "'");
114
+ }
115
+
116
+ assert(!elements.empty());
117
+
118
+ //
119
+ // Create all necessary subdirectories.
120
+ //
121
+ string path = output;
122
+ for(vector<string>::iterator p = elements.begin(); p != elements.end(); ++p)
123
+ {
124
+ if(!path.empty())
125
+ {
126
+ path += "/";
127
+ }
128
+ path += *p;
129
+ IceUtilInternal::structstat st;
130
+ if(IceUtilInternal::stat(path, &st) < 0)
131
+ {
132
+ if(IceUtilInternal::mkdir(path, 0777) != 0)
133
+ {
134
+ ostringstream os;
135
+ os << "cannot create directory '" << path << "': " << strerror(errno);
136
+ throw FileException(__FILE__, __LINE__, os.str());
137
+ }
138
+ FileTracker::instance()->addDirectory(path);
139
+ }
140
+ else if(!(st.st_mode & S_IFDIR))
141
+ {
142
+ ostringstream os;
143
+ os << "failed to create directory '" << path << "': file already exists and is not a directory";
144
+ throw FileException(__FILE__, __LINE__, os.str());
145
+ }
146
+
147
+ //
148
+ // It's possible that the pkgdir metadata specified a directory that won't be visited by our
149
+ // PackageVisitor. We need every intermediate subdirectory to have an __init__.py file, which
150
+ // can be empty.
151
+ //
152
+ const string init = path + "/__init__.py";
153
+ if(!IceUtilInternal::fileExists(init))
154
+ {
155
+ //
156
+ // Create an empty file.
157
+ //
158
+ IceUtilInternal::Output out;
159
+ out.open(init.c_str());
160
+ if(!out)
161
+ {
162
+ ostringstream os;
163
+ os << "cannot open '" << init << "': " << strerror(errno);
164
+ throw FileException(__FILE__, __LINE__, os.str());
165
+ }
166
+ FileTracker::instance()->addFile(init);
167
+ }
168
+ }
169
+ }
74
170
 
75
171
  //
76
172
  // For each Slice file Foo.ice we generate Foo_ice.py containing the Python
@@ -112,8 +208,6 @@ private:
112
208
  static const char* _moduleTag;
113
209
  static const char* _submoduleTag;
114
210
 
115
- static void createDirectory(const string&);
116
-
117
211
  static void addModule(const string&, const string&, const string&);
118
212
  static void addSubmodule(const string&, const string&, const string&);
119
213
 
@@ -184,32 +278,6 @@ PackageVisitor::visitModuleEnd(const ModulePtr& p)
184
278
  }
185
279
  }
186
280
 
187
- void
188
- PackageVisitor::createDirectory(const string& dir)
189
- {
190
- IceUtilInternal::structstat st;
191
- if(!IceUtilInternal::stat(dir, &st))
192
- {
193
- if(!(st.st_mode & S_IFDIR))
194
- {
195
- ostringstream os;
196
- os << "failed to create package directory `" << dir
197
- << "': file already exists and is not a directory";
198
- throw FileException(__FILE__, __LINE__, os.str());
199
- }
200
- return;
201
- }
202
-
203
- if(IceUtilInternal::mkdir(dir, 0777) != 0)
204
- {
205
- ostringstream os;
206
- os << "cannot create directory `" << dir << "': " << strerror(errno);
207
- throw FileException(__FILE__, __LINE__, os.str());
208
- }
209
-
210
- FileTracker::instance()->addDirectory(dir);
211
- }
212
-
213
281
  void
214
282
  PackageVisitor::addModule(const string& dir, const string& module, const string& name)
215
283
  {
@@ -250,11 +318,11 @@ PackageVisitor::readInit(const string& dir, StringList& modules, StringList& sub
250
318
  IceUtilInternal::structstat st;
251
319
  if(!IceUtilInternal::stat(initPath, &st))
252
320
  {
253
- IceUtilInternal::ifstream in(initPath);
321
+ ifstream in(IceUtilInternal::streamFilename(initPath).c_str());
254
322
  if(!in)
255
323
  {
256
324
  ostringstream os;
257
- os << "cannot open file `" << initPath << "': " << strerror(errno);
325
+ os << "cannot open file '" << initPath << "': " << strerror(errno);
258
326
  throw FileException(__FILE__, __LINE__, os.str());
259
327
  }
260
328
 
@@ -289,7 +357,7 @@ PackageVisitor::readInit(const string& dir, StringList& modules, StringList& sub
289
357
  if(s.size() < 8)
290
358
  {
291
359
  ostringstream os;
292
- os << "invalid line `" << s << "' in `" << initPath << "'";
360
+ os << "invalid line '" << s << "' in '" << initPath << "'";
293
361
  throw os.str();
294
362
  }
295
363
 
@@ -321,14 +389,14 @@ PackageVisitor::readInit(const string& dir, StringList& modules, StringList& sub
321
389
  if(state != InSubmodules)
322
390
  {
323
391
  ostringstream os;
324
- os << "invalid line `" << s << "' in `" << initPath << "'";
392
+ os << "invalid line '" << s << "' in '" << initPath << "'";
325
393
  throw os.str();
326
394
  }
327
395
 
328
396
  if(s.size() < 15)
329
397
  {
330
398
  ostringstream os;
331
- os << "invalid line `" << s << "' in `" << initPath << "'";
399
+ os << "invalid line '" << s << "' in '" << initPath << "'";
332
400
  throw os.str();
333
401
  }
334
402
 
@@ -336,10 +404,10 @@ PackageVisitor::readInit(const string& dir, StringList& modules, StringList& sub
336
404
  }
337
405
  }
338
406
 
339
- if(state != InSubmodules)
407
+ if(state == InModules)
340
408
  {
341
409
  ostringstream os;
342
- os << "invalid format in `" << initPath << "'" << endl;
410
+ os << "invalid format in '" << initPath << "'" << endl;
343
411
  throw os.str();
344
412
  }
345
413
  }
@@ -351,11 +419,11 @@ PackageVisitor::writeInit(const string& dir, const string& name, const StringLis
351
419
  {
352
420
  string initPath = dir + "/__init__.py";
353
421
 
354
- IceUtilInternal::ofstream os(initPath);
422
+ ofstream os(IceUtilInternal::streamFilename(initPath).c_str());
355
423
  if(!os)
356
424
  {
357
425
  ostringstream os;
358
- os << "cannot open file `" << initPath << "': " << strerror(errno);
426
+ os << "cannot open file '" << initPath << "': " << strerror(errno);
359
427
  throw FileException(__FILE__, __LINE__, os.str());
360
428
  }
361
429
  FileTracker::instance()->addFile(initPath);
@@ -383,26 +451,24 @@ PackageVisitor::writeInit(const string& dir, const string& name, const StringLis
383
451
  void
384
452
  usage(const string& n)
385
453
  {
386
- getErrorStream() << "Usage: " << n << " [options] slice-files...\n";
387
- getErrorStream() <<
454
+ consoleErr << "Usage: " << n << " [options] slice-files...\n";
455
+ consoleErr <<
388
456
  "Options:\n"
389
- "-h, --help Show this message.\n"
390
- "-v, --version Display the Ice version.\n"
391
- "-DNAME Define NAME as 1.\n"
392
- "-DNAME=DEF Define NAME as DEF.\n"
393
- "-UNAME Remove any definition for NAME.\n"
394
- "-IDIR Put DIR in the include file search path.\n"
395
- "-E Print preprocessor output on stdout.\n"
396
- "--output-dir DIR Create files in the directory DIR.\n"
397
- "--depend Generate Makefile dependencies.\n"
398
- "--depend-xml Generate dependencies in XML format.\n"
399
- "--depend-file FILE Write dependencies to FILE instead of standard output.\n"
400
- "-d, --debug Print debug messages.\n"
401
- "--ice Permit `Ice' prefix (for building Ice source code only).\n"
402
- "--underscore Permit underscores in Slice identifiers.\n"
403
- "--all Generate code for Slice definitions in included files.\n"
404
- "--checksum Generate checksums for Slice definitions.\n"
405
- "--prefix PREFIX Prepend filenames of Python modules with PREFIX.\n"
457
+ "-h, --help Show this message.\n"
458
+ "-v, --version Display the Ice version.\n"
459
+ "-DNAME Define NAME as 1.\n"
460
+ "-DNAME=DEF Define NAME as DEF.\n"
461
+ "-UNAME Remove any definition for NAME.\n"
462
+ "-IDIR Put DIR in the include file search path.\n"
463
+ "-E Print preprocessor output on stdout.\n"
464
+ "--output-dir DIR Create files in the directory DIR.\n"
465
+ "-d, --debug Print debug messages.\n"
466
+ "--depend Generate Makefile dependencies.\n"
467
+ "--depend-xml Generate dependencies in XML format.\n"
468
+ "--depend-file FILE Write dependencies to FILE instead of standard output.\n"
469
+ "--all Generate code for Slice definitions in included files.\n"
470
+ "--checksum Generate checksums for Slice definitions.\n"
471
+ "--prefix PREFIX Prepend filenames of Python modules with PREFIX.\n"
406
472
  ;
407
473
  }
408
474
 
@@ -438,7 +504,7 @@ Slice::Python::compile(const vector<string>& argv)
438
504
  }
439
505
  catch(const IceUtilInternal::BadOptException& e)
440
506
  {
441
- getErrorStream() << argv[0] << ": error: " << e.reason << endl;
507
+ consoleErr << argv[0] << ": error: " << e.reason << endl;
442
508
  usage(argv[0]);
443
509
  return EXIT_FAILURE;
444
510
  }
@@ -451,7 +517,7 @@ Slice::Python::compile(const vector<string>& argv)
451
517
 
452
518
  if(opts.isSet("version"))
453
519
  {
454
- getErrorStream() << ICE_STRING_VERSION << endl;
520
+ consoleErr << ICE_STRING_VERSION << endl;
455
521
  return EXIT_SUCCESS;
456
522
  }
457
523
 
@@ -502,25 +568,31 @@ Slice::Python::compile(const vector<string>& argv)
502
568
 
503
569
  if(args.empty())
504
570
  {
505
- getErrorStream() << argv[0] << ": error: no input file" << endl;
571
+ consoleErr << argv[0] << ": error: no input file" << endl;
506
572
  usage(argv[0]);
507
573
  return EXIT_FAILURE;
508
574
  }
509
575
 
510
576
  if(depend && dependxml)
511
577
  {
512
- getErrorStream() << argv[0] << ": error: cannot specify both --depend and --dependxml" << endl;
578
+ consoleErr << argv[0] << ": error: cannot specify both --depend and --dependxml" << endl;
513
579
  usage(argv[0]);
514
580
  return EXIT_FAILURE;
515
581
  }
516
582
 
517
583
  if(noPackage && buildPackage)
518
584
  {
519
- getErrorStream() << argv[0] << ": error: cannot specify both --no-package and --build-package" << endl;
585
+ consoleErr << argv[0] << ": error: cannot specify both --no-package and --build-package" << endl;
520
586
  usage(argv[0]);
521
587
  return EXIT_FAILURE;
522
588
  }
523
589
 
590
+ if(!output.empty() && !IceUtilInternal::directoryExists(output))
591
+ {
592
+ consoleErr << argv[0] << ": error: argument for --output-dir does not exist or is not a directory" << endl;
593
+ return EXIT_FAILURE;
594
+ }
595
+
524
596
  int status = EXIT_SUCCESS;
525
597
 
526
598
  IceUtil::CtrlCHandler ctrlCHandler;
@@ -528,10 +600,10 @@ Slice::Python::compile(const vector<string>& argv)
528
600
 
529
601
  bool keepComments = true;
530
602
 
531
- DependOutputUtil out(dependFile);
603
+ ostringstream os;
532
604
  if(dependxml)
533
605
  {
534
- out.os() << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<dependencies>" << endl;
606
+ os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<dependencies>" << endl;
535
607
  }
536
608
 
537
609
  for(vector<string>::const_iterator i = args.begin(); i != args.end(); ++i)
@@ -552,7 +624,6 @@ Slice::Python::compile(const vector<string>& argv)
552
624
 
553
625
  if(cppHandle == 0)
554
626
  {
555
- out.cleanup();
556
627
  return EXIT_FAILURE;
557
628
  }
558
629
 
@@ -562,20 +633,17 @@ Slice::Python::compile(const vector<string>& argv)
562
633
 
563
634
  if(parseStatus == EXIT_FAILURE)
564
635
  {
565
- out.cleanup();
566
636
  return EXIT_FAILURE;
567
637
  }
568
638
 
569
- if(!icecpp->printMakefileDependencies(out.os(), depend ? Preprocessor::Python : Preprocessor::SliceXML,
639
+ if(!icecpp->printMakefileDependencies(os, depend ? Preprocessor::Python : Preprocessor::SliceXML,
570
640
  includePaths, "-D__SLICE2PY__", "", prefix))
571
641
  {
572
- out.cleanup();
573
642
  return EXIT_FAILURE;
574
643
  }
575
644
 
576
645
  if(!icecpp->close())
577
646
  {
578
- out.cleanup();
579
647
  return EXIT_FAILURE;
580
648
  }
581
649
  }
@@ -592,7 +660,7 @@ Slice::Python::compile(const vector<string>& argv)
592
660
  if(preprocess)
593
661
  {
594
662
  char buf[4096];
595
- while(fgets(buf, static_cast<int>(sizeof(buf)), cppHandle) != NULL)
663
+ while(fgets(buf, static_cast<int>(sizeof(buf)), cppHandle) != ICE_NULLPTR)
596
664
  {
597
665
  if(fputs(buf, stdout) == EOF)
598
666
  {
@@ -630,42 +698,82 @@ Slice::Python::compile(const vector<string>& argv)
630
698
  base.erase(0, pos + 1);
631
699
  }
632
700
 
701
+ //
702
+ // Check if the file contains the python:pkgdir global metadata.
703
+ //
704
+ const string pkgdir = getPackageDirectory(icecpp->getFileName(), u);
705
+
633
706
  //
634
707
  // If --build-package is specified, we don't generate any code and simply
635
708
  // update the __init__.py files.
636
709
  //
637
710
  if(!buildPackage)
638
711
  {
712
+ string path;
713
+ if(!output.empty())
714
+ {
715
+ path = output + '/'; // The output directory must already exist.
716
+ }
717
+
718
+ if(!pkgdir.empty())
719
+ {
720
+ //
721
+ // The metadata is present. It should have the form
722
+ //
723
+ // python:pkgdir:A/B/C
724
+ //
725
+ // We open the output file in the specified directory, prefixed by the
726
+ // output directory (if any).
727
+ //
728
+ createPackageDirectory(output, pkgdir);
729
+ path += pkgdir;
730
+ if(path[path.size() - 1] != '/')
731
+ {
732
+ path += "/"; // Append a separator if necessary.
733
+ }
734
+ }
735
+ else
736
+ {
737
+ //
738
+ // The file doesn't contain the python:pkgdir metadata, so we use the
739
+ // value of the --prefix option (if any).
740
+ //
741
+ path += prefix;
742
+ }
743
+
744
+ //
745
+ // Add the file name (without the .ice extension).
746
+ //
747
+ path += base;
748
+
639
749
  //
640
750
  // Append the suffix "_ice" to the filename in order to avoid any conflicts
641
- // with Slice module names. For example, if the file Test.ice defines a
751
+ // with Slice module or type names. For example, if the file Test.ice defines a
642
752
  // Slice module named "Test", then we couldn't create a Python package named
643
753
  // "Test" and also call the generated file "Test.py".
644
754
  //
645
- string file = prefix + base + "_ice.py";
646
- if(!output.empty())
647
- {
648
- file = output + '/' + file;
649
- }
755
+ path += "_ice.py";
650
756
 
651
757
  IceUtilInternal::Output out;
652
- out.open(file.c_str());
758
+ out.open(path.c_str());
653
759
  if(!out)
654
760
  {
655
761
  ostringstream os;
656
- os << "cannot open`" << file << "': " << strerror(errno);
762
+ os << "cannot open '" << path << "': " << strerror(errno);
657
763
  throw FileException(__FILE__, __LINE__, os.str());
658
764
  }
659
- FileTracker::instance()->addFile(file);
765
+ FileTracker::instance()->addFile(path);
660
766
 
661
767
  //
662
- // Python magic comment to set the file encoding, it must be first or second line
768
+ // Emit a Python magic comment to set the file encoding.
769
+ // It must be the first or second line.
663
770
  //
664
771
  out << "# -*- coding: utf-8 -*-\n";
665
772
  printHeader(out);
666
773
  printGeneratedHeader(out, base + ".ice", "#");
774
+
667
775
  //
668
- // Generate the Python mapping.
776
+ // Generate Python code.
669
777
  //
670
778
  generate(u, all, checksum, includePaths, out);
671
779
 
@@ -677,7 +785,16 @@ Slice::Python::compile(const vector<string>& argv)
677
785
  //
678
786
  if(!noPackage)
679
787
  {
680
- PackageVisitor::createModules(u, prefix + base + "_ice", output);
788
+ string name;
789
+ if(!pkgdir.empty())
790
+ {
791
+ name = getImportFileName(icecpp->getFileName(), u, vector<string>());
792
+ }
793
+ else
794
+ {
795
+ name = prefix + base + "_ice";
796
+ }
797
+ PackageVisitor::createModules(u, name, output);
681
798
  }
682
799
  }
683
800
  catch(const Slice::FileException& ex)
@@ -687,13 +804,13 @@ Slice::Python::compile(const vector<string>& argv)
687
804
  //
688
805
  FileTracker::instance()->cleanup();
689
806
  u->destroy();
690
- getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
807
+ consoleErr << argv[0] << ": error: " << ex.reason() << endl;
691
808
  return EXIT_FAILURE;
692
809
  }
693
810
  catch(const string& err)
694
811
  {
695
812
  FileTracker::instance()->cleanup();
696
- getErrorStream() << argv[0] << ": error: " << err << endl;
813
+ consoleErr << argv[0] << ": error: " << err << endl;
697
814
  status = EXIT_FAILURE;
698
815
  }
699
816
  }
@@ -707,7 +824,6 @@ Slice::Python::compile(const vector<string>& argv)
707
824
 
708
825
  if(interrupted)
709
826
  {
710
- out.cleanup();
711
827
  FileTracker::instance()->cleanup();
712
828
  return EXIT_FAILURE;
713
829
  }
@@ -716,7 +832,12 @@ Slice::Python::compile(const vector<string>& argv)
716
832
 
717
833
  if(dependxml)
718
834
  {
719
- out.os() << "</dependencies>\n";
835
+ os << "</dependencies>\n";
836
+ }
837
+
838
+ if(depend || dependxml)
839
+ {
840
+ writeDependencies(os.str(), dependFile);
720
841
  }
721
842
 
722
843
  return status;