rufus-lua-win 5.1.5

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 (459) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +69 -0
  6. data/Rakefile +1 -0
  7. data/lib/rufus/lua/win.rb +18 -0
  8. data/lib/rufus/lua/win/version.rb +7 -0
  9. data/rufus-lua-win.gemspec +23 -0
  10. data/vendor/lua/bin/liblua.dll +0 -0
  11. data/vendor/lua/lib/lua/LuaXml.lua +119 -0
  12. data/vendor/lua/lib/lua/alien.lua +250 -0
  13. data/vendor/lua/lib/lua/alien/core.dll +0 -0
  14. data/vendor/lua/lib/lua/alien/struct.dll +0 -0
  15. data/vendor/lua/lib/lua/base.lua +536 -0
  16. data/vendor/lua/lib/lua/bin.lua +20 -0
  17. data/vendor/lua/lib/lua/bit.dll +0 -0
  18. data/vendor/lua/lib/lua/cdlua.dll +0 -0
  19. data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
  20. data/vendor/lua/lib/lua/cdluagl.dll +0 -0
  21. data/vendor/lua/lib/lua/cdluaim.dll +0 -0
  22. data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
  23. data/vendor/lua/lib/lua/copas.lua +543 -0
  24. data/vendor/lua/lib/lua/coxpcall.lua +57 -0
  25. data/vendor/lua/lib/lua/date.lua +745 -0
  26. data/vendor/lua/lib/lua/debug_ext.lua +84 -0
  27. data/vendor/lua/lib/lua/debug_init.lua +2 -0
  28. data/vendor/lua/lib/lua/des56.dll +0 -0
  29. data/vendor/lua/lib/lua/dist/config.lua +109 -0
  30. data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
  31. data/vendor/lua/lib/lua/dist/depends.lua +601 -0
  32. data/vendor/lua/lib/lua/dist/git.lua +307 -0
  33. data/vendor/lua/lib/lua/dist/init.lua +278 -0
  34. data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
  35. data/vendor/lua/lib/lua/dist/package.lua +583 -0
  36. data/vendor/lua/lib/lua/dist/sys.lua +367 -0
  37. data/vendor/lua/lib/lua/dist/utils.lua +130 -0
  38. data/vendor/lua/lib/lua/ex.dll +0 -0
  39. data/vendor/lua/lib/lua/fstable.lua +116 -0
  40. data/vendor/lua/lib/lua/getopt.lua +273 -0
  41. data/vendor/lua/lib/lua/git.lua +5 -0
  42. data/vendor/lua/lib/lua/git/core.dll +0 -0
  43. data/vendor/lua/lib/lua/git/objects.lua +121 -0
  44. data/vendor/lua/lib/lua/git/pack.lua +316 -0
  45. data/vendor/lua/lib/lua/git/protocol.lua +188 -0
  46. data/vendor/lua/lib/lua/git/repo.lua +283 -0
  47. data/vendor/lua/lib/lua/git/util.lua +233 -0
  48. data/vendor/lua/lib/lua/gzio.dll +0 -0
  49. data/vendor/lua/lib/lua/gzip.lua +81 -0
  50. data/vendor/lua/lib/lua/iconv.dll +0 -0
  51. data/vendor/lua/lib/lua/imlua.dll +0 -0
  52. data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
  53. data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
  54. data/vendor/lua/lib/lua/imlua_process.dll +0 -0
  55. data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
  56. data/vendor/lua/lib/lua/io_ext.lua +115 -0
  57. data/vendor/lua/lib/lua/iuplua.dll +0 -0
  58. data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
  59. data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
  60. data/vendor/lua/lib/lua/iupluacd.dll +0 -0
  61. data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
  62. data/vendor/lua/lib/lua/iupluagl.dll +0 -0
  63. data/vendor/lua/lib/lua/iupluaim.dll +0 -0
  64. data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
  65. data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
  66. data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
  67. data/vendor/lua/lib/lua/lanes.lua +591 -0
  68. data/vendor/lua/lib/lua/lanes/core.dll +0 -0
  69. data/vendor/lua/lib/lua/lcs.lua +55 -0
  70. data/vendor/lua/lib/lua/lemock.lua +659 -0
  71. data/vendor/lua/lib/lua/lfs.dll +0 -0
  72. data/vendor/lua/lib/lua/list.lua +375 -0
  73. data/vendor/lua/lib/lua/logging.lua +189 -0
  74. data/vendor/lua/lib/lua/logging/console.lua +22 -0
  75. data/vendor/lua/lib/lua/logging/email.lua +44 -0
  76. data/vendor/lua/lib/lua/logging/file.lua +55 -0
  77. data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
  78. data/vendor/lua/lib/lua/logging/socket.lua +35 -0
  79. data/vendor/lua/lib/lua/logging/sql.lua +64 -0
  80. data/vendor/lua/lib/lua/loop/base.lua +68 -0
  81. data/vendor/lua/lib/lua/loop/cached.lua +312 -0
  82. data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
  83. data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
  84. data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
  85. data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
  86. data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
  87. data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
  88. data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
  89. data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
  90. data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
  91. data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
  92. data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
  93. data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
  94. data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
  95. data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
  96. data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
  97. data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
  98. data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
  99. data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
  100. data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
  101. data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
  102. data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
  103. data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
  104. data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
  105. data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
  106. data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
  107. data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
  108. data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
  109. data/vendor/lua/lib/lua/loop/simple.lua +75 -0
  110. data/vendor/lua/lib/lua/loop/table.lua +71 -0
  111. data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
  112. data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
  113. data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
  114. data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
  115. data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
  116. data/vendor/lua/lib/lua/lpeg.dll +0 -0
  117. data/vendor/lua/lib/lua/ltn12.lua +292 -0
  118. data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
  119. data/vendor/lua/lib/lua/luacurl.dll +0 -0
  120. data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
  121. data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
  122. data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
  123. data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
  124. data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
  125. data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
  126. data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
  127. data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
  128. data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
  129. data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
  130. data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
  131. data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
  132. data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
  133. data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
  134. data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
  135. data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
  136. data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
  137. data/vendor/lua/lib/lua/luagl.dll +0 -0
  138. data/vendor/lua/lib/lua/luaglu.dll +0 -0
  139. data/vendor/lua/lib/lua/luaidl.lua +113 -0
  140. data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
  141. data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
  142. data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
  143. data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
  144. data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
  145. data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
  146. data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
  147. data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
  148. data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
  149. data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
  150. data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
  151. data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
  152. data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
  153. data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
  154. data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
  155. data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
  156. data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
  157. data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
  158. data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
  159. data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
  160. data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
  161. data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
  162. data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
  163. data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
  164. data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
  165. data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
  166. data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
  167. data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
  168. data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
  169. data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
  170. data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
  171. data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
  172. data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
  173. data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
  174. data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
  175. data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
  176. data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
  177. data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
  178. data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
  179. data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
  180. data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
  181. data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
  182. data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
  183. data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
  184. data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
  185. data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
  186. data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
  187. data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
  188. data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
  189. data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
  190. data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
  191. data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
  192. data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
  193. data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
  194. data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
  195. data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
  196. data/vendor/lua/lib/lua/luars232.dll +0 -0
  197. data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
  198. data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
  199. data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
  200. data/vendor/lua/lib/lua/luaunit.lua +601 -0
  201. data/vendor/lua/lib/lua/lxp.dll +0 -0
  202. data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
  203. data/vendor/lua/lib/lua/math_ext.lua +27 -0
  204. data/vendor/lua/lib/lua/mbox.lua +53 -0
  205. data/vendor/lua/lib/lua/md5.lua +19 -0
  206. data/vendor/lua/lib/lua/md5/core.dll +0 -0
  207. data/vendor/lua/lib/lua/metalua.lua +0 -0
  208. data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
  209. data/vendor/lua/lib/lua/metalua/base.lua +104 -0
  210. data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
  211. data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
  212. data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
  213. data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
  214. data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
  215. data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
  216. data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
  217. data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
  218. data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
  219. data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
  220. data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
  221. data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
  222. data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
  223. data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
  224. data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
  225. data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
  226. data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
  227. data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
  228. data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
  229. data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
  230. data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
  231. data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
  232. data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
  233. data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
  234. data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
  235. data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
  236. data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
  237. data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
  238. data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
  239. data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
  240. data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
  241. data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
  242. data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
  243. data/vendor/lua/lib/lua/mime.lua +87 -0
  244. data/vendor/lua/lib/lua/mime/core.dll +0 -0
  245. data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
  246. data/vendor/lua/lib/lua/modules.lua +16 -0
  247. data/vendor/lua/lib/lua/object.lua +56 -0
  248. data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
  249. data/vendor/lua/lib/lua/oil/arch.lua +27 -0
  250. data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
  251. data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
  252. data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
  253. data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
  254. data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
  255. data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
  256. data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
  257. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
  258. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
  259. data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
  260. data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
  261. data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
  262. data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
  263. data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
  264. data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
  265. data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
  266. data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
  267. data/vendor/lua/lib/lua/oil/assert.lua +87 -0
  268. data/vendor/lua/lib/lua/oil/builder.lua +45 -0
  269. data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
  270. data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
  271. data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
  272. data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
  273. data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
  274. data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
  275. data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
  276. data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
  277. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
  278. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
  279. data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
  280. data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
  281. data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
  282. data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
  283. data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
  284. data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
  285. data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
  286. data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
  287. data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
  288. data/vendor/lua/lib/lua/oil/compat.lua +846 -0
  289. data/vendor/lua/lib/lua/oil/component.lua +1 -0
  290. data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
  291. data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
  292. data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
  293. data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
  294. data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
  295. data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
  296. data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
  297. data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
  298. data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
  299. data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
  300. data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
  301. data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
  302. data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
  303. data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
  304. data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
  305. data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
  306. data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
  307. data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
  308. data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
  309. data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
  310. data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
  311. data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
  312. data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
  313. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
  314. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
  315. data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
  316. data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
  317. data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
  318. data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
  319. data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
  320. data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
  321. data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
  322. data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
  323. data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
  324. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
  325. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
  326. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
  327. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
  328. data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
  329. data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
  330. data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
  331. data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
  332. data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
  333. data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
  334. data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
  335. data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
  336. data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
  337. data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
  338. data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
  339. data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
  340. data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
  341. data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
  342. data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
  343. data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
  344. data/vendor/lua/lib/lua/oil/oo.lua +1 -0
  345. data/vendor/lua/lib/lua/oil/port.lua +1 -0
  346. data/vendor/lua/lib/lua/oil/properties.lua +57 -0
  347. data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
  348. data/vendor/lua/lib/lua/package_ext.lua +15 -0
  349. data/vendor/lua/lib/lua/parser.lua +268 -0
  350. data/vendor/lua/lib/lua/pl/Date.lua +555 -0
  351. data/vendor/lua/lib/lua/pl/List.lua +613 -0
  352. data/vendor/lua/lib/lua/pl/Map.lua +113 -0
  353. data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
  354. data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
  355. data/vendor/lua/lib/lua/pl/Set.lua +153 -0
  356. data/vendor/lua/lib/lua/pl/app.lua +165 -0
  357. data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
  358. data/vendor/lua/lib/lua/pl/class.lua +180 -0
  359. data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
  360. data/vendor/lua/lib/lua/pl/config.lua +176 -0
  361. data/vendor/lua/lib/lua/pl/data.lua +606 -0
  362. data/vendor/lua/lib/lua/pl/dir.lua +475 -0
  363. data/vendor/lua/lib/lua/pl/file.lua +70 -0
  364. data/vendor/lua/lib/lua/pl/func.lua +376 -0
  365. data/vendor/lua/lib/lua/pl/init.lua +68 -0
  366. data/vendor/lua/lib/lua/pl/input.lua +173 -0
  367. data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
  368. data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
  369. data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
  370. data/vendor/lua/lib/lua/pl/operator.lua +201 -0
  371. data/vendor/lua/lib/lua/pl/path.lua +398 -0
  372. data/vendor/lua/lib/lua/pl/permute.lua +63 -0
  373. data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
  374. data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
  375. data/vendor/lua/lib/lua/pl/seq.lua +551 -0
  376. data/vendor/lua/lib/lua/pl/sip.lua +344 -0
  377. data/vendor/lua/lib/lua/pl/strict.lua +70 -0
  378. data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
  379. data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
  380. data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
  381. data/vendor/lua/lib/lua/pl/template.lua +103 -0
  382. data/vendor/lua/lib/lua/pl/test.lua +135 -0
  383. data/vendor/lua/lib/lua/pl/text.lua +243 -0
  384. data/vendor/lua/lib/lua/pl/utils.lua +550 -0
  385. data/vendor/lua/lib/lua/pl/xml.lua +689 -0
  386. data/vendor/lua/lib/lua/profiler.dll +0 -0
  387. data/vendor/lua/lib/lua/re.lua +248 -0
  388. data/vendor/lua/lib/lua/rex_onig.dll +0 -0
  389. data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
  390. data/vendor/lua/lib/lua/rex_posix.dll +0 -0
  391. data/vendor/lua/lib/lua/rings.dll +0 -0
  392. data/vendor/lua/lib/lua/serialize.lua +193 -0
  393. data/vendor/lua/lib/lua/set.lua +149 -0
  394. data/vendor/lua/lib/lua/socket.lua +133 -0
  395. data/vendor/lua/lib/lua/socket/core.dll +0 -0
  396. data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
  397. data/vendor/lua/lib/lua/socket/http.lua +350 -0
  398. data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
  399. data/vendor/lua/lib/lua/socket/tp.lua +123 -0
  400. data/vendor/lua/lib/lua/socket/url.lua +297 -0
  401. data/vendor/lua/lib/lua/ssl.dll +0 -0
  402. data/vendor/lua/lib/lua/ssl.lua +93 -0
  403. data/vendor/lua/lib/lua/ssl/https.lua +138 -0
  404. data/vendor/lua/lib/lua/stable.lua +28 -0
  405. data/vendor/lua/lib/lua/std.lua +16 -0
  406. data/vendor/lua/lib/lua/strbuf.lua +32 -0
  407. data/vendor/lua/lib/lua/strict.lua +45 -0
  408. data/vendor/lua/lib/lua/string_ext.lua +274 -0
  409. data/vendor/lua/lib/lua/table_ext.lua +117 -0
  410. data/vendor/lua/lib/lua/tar.lua +262 -0
  411. data/vendor/lua/lib/lua/task.dll +0 -0
  412. data/vendor/lua/lib/lua/tree.lua +81 -0
  413. data/vendor/lua/lib/lua/unicode.dll +0 -0
  414. data/vendor/lua/lib/lua/verbose_require.lua +11 -0
  415. data/vendor/lua/lib/lua/vstruct.lua +86 -0
  416. data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
  417. data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
  418. data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
  419. data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
  420. data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
  421. data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
  422. data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
  423. data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
  424. data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
  425. data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
  426. data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
  427. data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
  428. data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
  429. data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
  430. data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
  431. data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
  432. data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
  433. data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
  434. data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
  435. data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
  436. data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
  437. data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
  438. data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
  439. data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
  440. data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
  441. data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
  442. data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
  443. data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
  444. data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
  445. data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
  446. data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
  447. data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
  448. data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
  449. data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
  450. data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
  451. data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
  452. data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
  453. data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
  454. data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
  455. data/vendor/lua/lib/lua/wx.dll +0 -0
  456. data/vendor/lua/lib/lua/xml.lua +75 -0
  457. data/vendor/lua/lib/lua/zip.dll +0 -0
  458. data/vendor/lua/lib/lua/zlib.dll +0 -0
  459. metadata +529 -0
@@ -0,0 +1,180 @@
1
+ --------------------------------------------------------------------------------
2
+ ------------------------------ ##### ## ------------------------------
3
+ ------------------------------ ## ## # ## ------------------------------
4
+ ------------------------------ ## ## ## ## ------------------------------
5
+ ------------------------------ ## ## # ## ------------------------------
6
+ ------------------------------ ##### ### ###### ------------------------------
7
+ -------------------------------- --------------------------------
8
+ ----------------------- An Object Request Broker in Lua ------------------------
9
+ --------------------------------------------------------------------------------
10
+ -- Project: OiL - ORB in Lua: An Object Request Broker in Lua --
11
+ -- Release: 0.5 --
12
+ -- Title : Interoperable Object Reference (IOR) support --
13
+ -- Authors: Renato Maia <maia@inf.puc-rio.br> --
14
+ --------------------------------------------------------------------------------
15
+ -- Notes: --
16
+ -- See section 13.6 of CORBA 3.0 specification. --
17
+ -- See section 13.6.10 of CORBA 3.0 specification for corbaloc. --
18
+ --------------------------------------------------------------------------------
19
+ -- references:Facet
20
+ -- reference:table newreference(objectkey:string, accesspointinfo:table...)
21
+ -- reference:string encode(reference:table)
22
+ -- reference:table decode(reference:string)
23
+ --
24
+ -- codec:Receptacle
25
+ -- encoder:object encoder()
26
+ -- decoder:object decoder(stream:string)
27
+ --
28
+ -- profiler:HashReceptacle
29
+ -- profile:table decodeurl(url:string)
30
+ -- data:string encode(accesspoint:object, key:string, type)
31
+ --
32
+ -- types:Receptacle--[[
33
+ -- interface:table typeof(objectkey:string)
34
+ --------------------------------------------------------------------------------
35
+
36
+ local ipairs = ipairs
37
+ local select = select
38
+ local setmetatable = setmetatable
39
+ local tonumber = tonumber
40
+
41
+ local string = require "string"
42
+
43
+ local oo = require "oil.oo"
44
+ local idl = require "oil.corba.idl"
45
+ local giop = require "oil.corba.giop"
46
+ local Exception = require "oil.corba.giop.Exception" --[[VERBOSE]] local verbose = require "oil.verbose"
47
+
48
+ module("oil.corba.giop.Referrer", oo.class)
49
+
50
+ --------------------------------------------------------------------------------
51
+ -- String/byte conversions -----------------------------------------------------
52
+
53
+ local function byte2hexa(value)
54
+ return (string.gsub(value, '(.)', function (char)
55
+ -- TODO:[maia] check char to byte conversion
56
+ return (string.format("%02x", string.byte(char)))
57
+ end))
58
+ end
59
+
60
+ local function hexa2byte(value)
61
+ local error
62
+ value = (string.gsub(value, '(%x%x)', function (hexa)
63
+ hexa = tonumber(hexa, 16)
64
+ if hexa
65
+ -- TODO:[maia] check byte to char conversion
66
+ then return string.char(hexa)
67
+ else error = true
68
+ end
69
+ end))
70
+ if not error then return value end
71
+ end
72
+
73
+ --------------------------------------------------------------------------------
74
+ --------------------------------------------------------------------------------
75
+
76
+ function IOR(self, stream)
77
+ local decoder = self.codec:decoder(hexa2byte(stream), true)
78
+ return decoder:struct(giop.IOR)
79
+ end
80
+
81
+ function corbaloc(self, encoded)
82
+ for token, data in string.gmatch(encoded, "(%w*):([^,]*)") do
83
+ local profiler = self.profiler[token]
84
+ if profiler then
85
+ local profile, except = profiler:decodeurl(data)
86
+ if profile then
87
+ return setmetatable({
88
+ type_id = idl.object.repID,
89
+ profiles = { profile },
90
+ }, giop.IOR)
91
+ else
92
+ return nil, except
93
+ end
94
+ end
95
+ end
96
+ return nil, Exception{ "INV_OBJREF",
97
+ reason = "corbaloc",
98
+ message = "corbaloc, no supported protocol found",
99
+ reference = encoded,
100
+ }
101
+ end
102
+
103
+ --------------------------------------------------------------------------------
104
+ --------------------------------------------------------------------------------
105
+
106
+ function newreference(self, access, key, type)
107
+ local profiles = {}
108
+ local tag = access.tag or 0
109
+ local profiler = self.profiler[tag]
110
+ if profiler then
111
+ local ok, except = profiler:encode(profiles, key, access)
112
+ if not ok then return nil, except end
113
+ else
114
+ return nil, Exception{ "IMP_LIMIT", minor_code_value = 1,
115
+ message = "GIOP profile tag not supported",
116
+ reason = "profiles",
117
+ tag = tag,
118
+ }
119
+ end
120
+ return setmetatable({
121
+ type_id = type.repID,
122
+ profiles = profiles,
123
+ }, giop.IOR)
124
+ end
125
+
126
+ function islocal(self, reference, access)
127
+ local profilers = self.profiler
128
+ for _, profile in ipairs(reference.profiles) do
129
+ local profiler = profilers[profile.tag]
130
+ if profiler then
131
+ local result = profiler:belongsto(profile.profile_data, access)
132
+ if result then
133
+ return result
134
+ end
135
+ end
136
+ end
137
+ end
138
+
139
+ local _interface = giop.ObjectOperations._interface
140
+ local NO_IMPLEMENT = giop.SystemExceptionIDs.NO_IMPLEMENT
141
+ function typeof(self, reference)
142
+ local requester = self.requester
143
+ local result, except = requester:newrequest(reference, _interface)
144
+ if result then
145
+ local request = result
146
+ result, except = requester:getreply(request)
147
+ if result then
148
+ result = request[1]
149
+ if request.success then
150
+ except = nil
151
+ else
152
+ result, except = reference.type_id, nil
153
+ end
154
+ end
155
+ end
156
+ return result, except
157
+ end
158
+
159
+ --------------------------------------------------------------------------------
160
+ -- Coding ----------------------------------------------------------------------
161
+
162
+ function encode(self, ior)
163
+ local encoder = self.codec:encoder(true)
164
+ encoder:struct(ior, giop.IOR)
165
+ return "IOR:"..byte2hexa(encoder:getdata())
166
+ end
167
+
168
+ function decode(self, encoded)
169
+ local token, stream = encoded:match("^(%w+):(.+)$")
170
+ local decoder = self[token]
171
+ if not decoder then
172
+ return nil, Exception{ "INV_OBJREF",
173
+ reason = "reference",
174
+ message = "illegal reference format, currently not supported",
175
+ format = token,
176
+ reference = enconded,
177
+ }
178
+ end
179
+ return decoder(self, stream)
180
+ end
@@ -0,0 +1,462 @@
1
+ --------------------------------------------------------------------------------
2
+ ------------------------------ ##### ## ------------------------------
3
+ ------------------------------ ## ## # ## ------------------------------
4
+ ------------------------------ ## ## ## ## ------------------------------
5
+ ------------------------------ ## ## # ## ------------------------------
6
+ ------------------------------ ##### ### ###### ------------------------------
7
+ -------------------------------- --------------------------------
8
+ ----------------------- An Object Request Broker in Lua ------------------------
9
+ --------------------------------------------------------------------------------
10
+ -- Project: OiL - ORB in Lua --
11
+ -- Release: 0.5 --
12
+ -- Title : Client-side CORBA GIOP Protocol --
13
+ -- Authors: Renato Maia <maia@inf.puc-rio.br> --
14
+ --------------------------------------------------------------------------------
15
+ -- Notes: --
16
+ -- See chapter 15 of CORBA 3.0 specification. --
17
+ --------------------------------------------------------------------------------
18
+ -- requests:Facet
19
+ -- channel:object getchannel(reference:table)
20
+ -- reply:object, [except:table], [requests:table] newrequest(channel:object, reference:table, operation:table, args...)
21
+ -- reply:object, [except:table], [requests:table] getreply(channel:object, [probe:boolean])
22
+ --
23
+ -- channels:HashReceptacle
24
+ -- channel:object retieve(configs:table)
25
+ --
26
+ -- profiler:HashReceptacle
27
+ -- info:table decode(stream:string)
28
+ --
29
+ -- mutex:Receptacle
30
+ -- locksend(channel:object)
31
+ -- freesend(channel:object)
32
+ --------------------------------------------------------------------------------
33
+
34
+ local assert = assert
35
+ local ipairs = ipairs
36
+ local newproxy = newproxy
37
+ local pairs = pairs
38
+ local select = select
39
+ local type = type
40
+ local unpack = unpack
41
+
42
+ local oo = require "oil.oo"
43
+ local bit = require "oil.bit"
44
+ local giop = require "oil.corba.giop"
45
+ local Exception = require "oil.corba.giop.Exception"
46
+ local Messenger = require "oil.corba.giop.Messenger" --[[VERBOSE]] local verbose = require "oil.verbose"
47
+
48
+ module "oil.corba.giop.Requester"
49
+
50
+ oo.class(_M, Messenger)
51
+
52
+ --------------------------------------------------------------------------------
53
+
54
+ local IOR = giop.IOR
55
+ local RequestID = giop.RequestID
56
+ local ReplyID = giop.ReplyID
57
+ local LocateRequestID = giop.LocateRequestID
58
+ local LocateReplyID = giop.LocateReplyID
59
+ local CloseConnectionID = giop.CloseConnectionID
60
+ local MessageErrorID = giop.MessageErrorID
61
+ local MessageType = giop.MessageType
62
+ local SystemExceptionIDL = giop.SystemExceptionIDL
63
+
64
+ local Empty = {}
65
+
66
+ local COMPLETED_YES = 0
67
+ local COMPLETED_NO = 1
68
+ local COMPLETED_MAYBE = 2
69
+
70
+ --------------------------------------------------------------------------------
71
+ -- request id management for channels
72
+
73
+ function register(channel, request)
74
+ local id = #channel + 1
75
+ request.request_id = id
76
+ request.channel = channel
77
+ channel[id] = request --[[VERBOSE]] verbose:invoke("registering request with id ",id)
78
+ return id
79
+ end
80
+
81
+ function unregister(channel, id) --[[VERBOSE]] verbose:invoke("unregistering request with id ",id)
82
+ local request = channel[id]
83
+ if request then
84
+ request.request_id = nil
85
+ request.channel = nil
86
+ channel[id] = nil
87
+ return request
88
+ end
89
+ end
90
+
91
+ --------------------------------------------------------------------------------
92
+
93
+ function getchannel(self, reference) --[[VERBOSE]] verbose:invoke(true, "get communication channel")
94
+ local result, except = reference._channel
95
+ if result then --[[VERBOSE]] verbose:invoke(false, "reusing channel from preivous calls")
96
+ return reference._channel, reference._objectkey, reference._profile
97
+ end
98
+ for _, profile in ipairs(reference.profiles) do --[[VERBOSE]] verbose:invoke("[IOR profile with tag ",profile.tag,"]")
99
+ local tag = profile.tag
100
+ local channels = self.channels[tag]
101
+ local profiler = self.profiler[tag]
102
+ if channels and profiler then
103
+ profiler, except = profiler:decode(profile.profile_data)
104
+ if profiler then
105
+ reference._profiletag = tag
106
+ reference._profiledata = profiler
107
+ reference._objectkey = except
108
+ result, except = channels:retrieve(profiler)
109
+ if result then
110
+ reference._channel = result --[[VERBOSE]] verbose:invoke(false, "got channel from profile with tag ",profile.tag,"]")
111
+ return result, reference._objectkey, reference._profile
112
+ elseif except == "connection refused" then
113
+ except = Exception{ "COMM_FAILURE",
114
+ minor_code_value = 1,
115
+ completion_status = COMPLETED_NO,
116
+ reason = "closed",
117
+ message = "connection to profile refused",
118
+ profile = profiler,
119
+ }
120
+ elseif except == "too many open connections" then
121
+ except = Exception{ "NO_RESOURCES",
122
+ minor_code_value = 0,
123
+ completion_status = COMPLETED_NO,
124
+ reason = "resources",
125
+ message = "too many open connections by protocol",
126
+ protocol = tag,
127
+ }
128
+ end
129
+ end
130
+ break
131
+ end
132
+ end
133
+ if not except then --[[VERBOSE]] verbose:invoke("[no supported profile found]")
134
+ except = Exception{ "IMP_LIMIT",
135
+ minor_code_value = 1,
136
+ completion_status = COMPLETED_NO,
137
+ message = "no supported GIOP profile found",
138
+ reason = "profiles",
139
+ }
140
+ end --[[VERBOSE]] verbose:invoke(false)
141
+ return nil, except
142
+ end
143
+
144
+ --------------------------------------------------------------------------------
145
+
146
+ function makerequest(self, channel, objectkey, operation, ...)
147
+ local request = {
148
+ request_id = 0,
149
+ response_expected = not operation.oneway,
150
+ service_context = Empty,
151
+ requesting_principal = Empty,
152
+ object_key = objectkey,
153
+ operation = operation.name,
154
+ inputs = operation.inputs,
155
+ outputs = operation.outputs,
156
+ exceptions = operation.exceptions,
157
+ n = select("#", ...),
158
+ ...,
159
+ }
160
+ if channel and request.response_expected then
161
+ register(channel, request)
162
+ end
163
+ return request
164
+ end
165
+
166
+ function sendrequest(self, reference, operation, ...)
167
+ local channel, objectkey = self:getchannel(reference)
168
+ if channel then
169
+ local request = self:makerequest(channel, objectkey, operation, ...) --[[VERBOSE]] verbose:invoke(true, "request ",request.request_id," for operation '",operation.name,"'")
170
+ local result, except = self:sendmsg(channel, RequestID, request,
171
+ request.inputs, request)
172
+ if result then
173
+ if not request.response_expected then
174
+ request.success = true
175
+ request.n = 0
176
+ end
177
+ result, except = request, nil
178
+ else
179
+ unregister(channel, request.request_id)
180
+ end --[[VERBOSE]] verbose:invoke(false)
181
+ return result, except
182
+ end
183
+ return nil, objectkey
184
+ end
185
+
186
+ function newrequest(self, reference, operation, ...)
187
+ local requester = self.OperationRequester[operation.name] or self.sendrequest
188
+ return requester(self, reference, operation, ...)
189
+ end
190
+
191
+ --------------------------------------------------------------------------------
192
+
193
+ function reissue(self, channel, request) --[[VERBOSE]] verbose:invoke(true, "reissue request for operation '",request.operation,"'")
194
+ register(channel, request)
195
+ local success, except = self:sendmsg(channel, RequestID, request,
196
+ request.inputs, request)
197
+ if not success then
198
+ unregister(channel, request.request_id)
199
+ end --[[VERBOSE]] verbose:invoke(false, "reissue",success and "d successfully" or " failed")
200
+ return success, except
201
+ end
202
+
203
+ local SystemExceptionReason = {
204
+ ["IDL:omg.org/CORBA/COMM_FAILURE:1.0" ] = "closed",
205
+ ["IDL:omg.org/CORBA/MARSHAL:1.0" ] = "marshal",
206
+ ["IDL:omg.org/CORBA/NO_IMPLEMENT:1.0" ] = "noimplement",
207
+ ["IDL:omg.org/CORBA/BAD_OPERATION:1.0" ] = "badoperation",
208
+ ["IDL:omg.org/CORBA/OBJECT_NOT_EXIST:1.0"] = "badkey",
209
+ }
210
+
211
+ function doreply(self, replied, header, decoder)
212
+ local status = header.reply_status
213
+ if status == "NO_EXCEPTION" then --[[VERBOSE]] verbose:invoke("got successful reply for request ",header.request_id)
214
+ local outputs = replied.outputs
215
+ replied.success = true
216
+ replied.n = #outputs
217
+ for index, output in ipairs(outputs) do
218
+ local ok, result = self.pcall(decoder.get, decoder, output)
219
+ if not ok then
220
+ assert(type(result) == "table", result)
221
+ return nil, result
222
+ end
223
+ replied[index] = result
224
+ end
225
+ else -- status ~= "NO_EXCEPTION"
226
+ local except
227
+ if status == "LOCATION_FORWARD" then --[[VERBOSE]] verbose:invoke("forwarding request ",header.request_id," through other channel")
228
+ local success
229
+ success, except = self:getchannel(decoder:struct(IOR))
230
+ if success then
231
+ success, except = self:reissue(success, replied)
232
+ if success then
233
+ return true -- do not do anything else and notify that reply
234
+ -- was handled successfully
235
+ end
236
+ end
237
+ else -- status ~= ["LOCATION_FORWARD"|"NO_EXCEPTION"]
238
+ if status == "USER_EXCEPTION" then --[[VERBOSE]] verbose:invoke("got reply with exception for ",header.request_id)
239
+ local repId = decoder:string()
240
+ except = replied.exceptions[repId]
241
+ if except then
242
+ except = decoder:except(except)
243
+ except[1] = repId
244
+ except = Exception(except)
245
+ else
246
+ except = Exception{ "UNKNOWN",
247
+ minor_code_value = 0,
248
+ completion_status = COMPLETED_MAYBE,
249
+ message = "unexpected user-defined exception",
250
+ reason = "badexception",
251
+ exception = repId,
252
+ }
253
+ end
254
+ elseif status == "SYSTEM_EXCEPTION" then --[[VERBOSE]] verbose:invoke("got reply with system exception for ",header.request_id)
255
+ -- TODO:[maia] set its type to the proper SystemExcep.
256
+ except = decoder:struct(SystemExceptionIDL)
257
+ except[1] = except.exception_id
258
+ except.reason = SystemExceptionReason[ except[1] ]
259
+ except = Exception(except)
260
+ else -- status == ???
261
+ except = Exception{ "INTERNAL",
262
+ minor_code_value = 0,
263
+ completion_status = COMPLETED_MAYBE,
264
+ message = "unsupported reply status",
265
+ reason = "badreply",
266
+ status = status,
267
+ }
268
+ end -- of if status == "USER_EXCEPTION"
269
+ end -- of if status == "LOCATION_FORWARD"
270
+ replied.success = false
271
+ replied.n = 1
272
+ replied[1] = except
273
+ end -- of if status == "NO_EXCEPTION"
274
+ local replier = self.OperationReplier[replied.operation]
275
+ if replier then
276
+ local success, except = replier(self, replied)
277
+ if not success then
278
+ return nil, except
279
+ end
280
+ end
281
+ return true
282
+ end
283
+
284
+ function resetchannel(self, channel)
285
+ local success, except = channel:reset()
286
+ if success then --[[VERBOSE]] verbose:invoke(true, "reissue all pending requests")
287
+ local requests = {}
288
+ for id, pending in pairs(channel) do
289
+ if type(id) == "number" then
290
+ unregister(channel, id)
291
+ requests[#requests+1] = pending
292
+ end
293
+ end
294
+ local index = 0
295
+ repeat
296
+ index = index + 1
297
+ local pending = requests[index]
298
+ if pending == nil then break end
299
+ success, except = self:reissue(channel, pending)
300
+ until not success
301
+ if not success then
302
+ -- set error for all requests that are still pending in this channel
303
+ for i = index, #requests do
304
+ local pending = requests[i]
305
+ pending.success = false
306
+ pending.n = 1
307
+ pending[1] = except
308
+ channel:signal(pending)
309
+ end
310
+ end --[[VERBOSE]] verbose:invoke(false, "reissue",success and "d successfully" or " failed")
311
+ else
312
+ if except == "connection refused" then
313
+ except = Exception{ "COMM_FAILURE",
314
+ minor_code_value = 1,
315
+ completion_status = COMPLETED_MAYBE,
316
+ reason = "closed",
317
+ message = "unable to restablish channel",
318
+ channel = channel,
319
+ }
320
+ elseif except == "too many open connections" then
321
+ except = Exception{ "NO_RESOURCES",
322
+ minor_code_value = 0,
323
+ completion_status = COMPLETED_MAYBE,
324
+ reason = "resources",
325
+ message = "unbale to restablish channel, too many open connections",
326
+ channel = channel,
327
+ }
328
+ else -- unknown error
329
+ return success, except
330
+ end
331
+ for id, pending in pairs(channel) do
332
+ if type(id) == "number" then
333
+ unregister(channel, id)
334
+ pending.success = false
335
+ pending.n = 1
336
+ pending[1] = except
337
+ channel:signal(pending)
338
+ end
339
+ end
340
+ end
341
+ return true
342
+ end
343
+
344
+ function getreply(self, request, probe)
345
+ local success, except = true, nil
346
+ local continue = true
347
+ while continue and (request.success == nil) do
348
+ local channel = request.channel
349
+ if channel:trylock("read", not probe, request) then
350
+ while request.channel == channel do
351
+ if probe and not channel:probe() then continue = false break end
352
+ local msgid, header, decoder = self:receivemsg(channel)
353
+ if msgid == ReplyID then
354
+ local replied = unregister(channel, header.request_id)
355
+ if replied then
356
+ success, except = self:doreply(replied, header, decoder)
357
+ channel:signal(replied)
358
+ else -- replied == nil
359
+ success, except = nil, Exception{ "INTERNAL",
360
+ minor_code_value = 0,
361
+ completion_status = COMPLETED_MAYBE,
362
+ message = "unexpected request id",
363
+ reason = "requestid",
364
+ id = header.request_id,
365
+ }
366
+ end
367
+ elseif (msgid == CloseConnectionID) or
368
+ (msgid == nil and header.reason == "closed") then --[[VERBOSE]] verbose:invoke("got remote request to close channel or channel is broken")
369
+ success, except = self:resetchannel(channel)
370
+ elseif msgid == MessageErrorID then
371
+ success, except = nil, Exception{ "COMM_FAILURE",
372
+ minor_code_value = 0,
373
+ completion_status = COMPLETED_MAYBE,
374
+ reason = "server",
375
+ message = "error in server message processing",
376
+ }
377
+ elseif MessageType[msgid] then
378
+ success, except = nil, Exception{ "INTERNAL",
379
+ minor_code_value = 0,
380
+ completion_status = COMPLETED_MAYBE,
381
+ reason = "unexpected",
382
+ message = "unexpected GIOP message",
383
+ message = MessageType[msgid],
384
+ id = msgid,
385
+ }
386
+ elseif header.reason == "version" then --[[VERBOSE]] verbose:invoke("got message with wrong version, send message error notification")
387
+ success, except = self:sendmsg(channel, MessageErrorID)
388
+ else -- not msgid and header.reason ~= ["version"|"closed"]
389
+ success, except = nil, header
390
+ end
391
+ if not success then continue = false break end
392
+ end -- of while current channel is from the reply should be read
393
+ channel:freelock("read")
394
+ elseif probe then
395
+ continue = false
396
+ end
397
+ end
398
+ return success, except
399
+ end
400
+ --------------------------------------------------------------------------------
401
+
402
+ OperationRequester = {}
403
+ OperationReplier = {}
404
+
405
+ local ReplyTrue = {
406
+ success = true,
407
+ n = 1,
408
+ true,
409
+ }
410
+ local ReplyFalse = {
411
+ success = true,
412
+ n = 1,
413
+ false,
414
+ }
415
+
416
+ function OperationRequester:_is_equivalent(reference, _, otherref)
417
+ otherref = otherref.__reference
418
+ if otherref then
419
+ local tags = {}
420
+ for _, profile in ipairs(otherref.profiles) do
421
+ tags[profile.tag] = profile
422
+ end
423
+ for _, profile in ipairs(reference.profiles) do
424
+ local tag = profile.tag
425
+ local other = tags[tag]
426
+ if other then
427
+ local profiler = self.profiler[tag]
428
+ if
429
+ profiler and
430
+ profiler:equivalent(profile.profile_data, other.profile_data)
431
+ then
432
+ return ReplyTrue
433
+ end
434
+ end
435
+ end
436
+ end
437
+ return ReplyFalse
438
+ end
439
+
440
+ local _non_existent = giop.ObjectOperations._non_existent
441
+ function OperationRequester:_non_existent(reference)
442
+ local result, except = self:sendrequest(reference, _non_existent)
443
+ if result and result.success == false then
444
+ result, except = nil, result[1]
445
+ end
446
+ if not result and except.reason=="closed" then
447
+ result, except = ReplyTrue, nil
448
+ end
449
+ return result, except
450
+ end
451
+ function OperationReplier:_non_existent(request)
452
+ local except = request[1]
453
+ if not request.success
454
+ and ( except.exception_id == "IDL:omg.org/CORBA/OBJECT_NOT_EXIST:1.0" or
455
+ except.reason == "closed" )
456
+ then
457
+ request.success = true
458
+ request.n = 1
459
+ request[1] = true
460
+ end
461
+ return true
462
+ end