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,25 @@
1
+ local oo = require "oil.oo"
2
+ local Exception = require "oil.Exception"
3
+ local assert = require "oil.assert"
4
+ local giop = require "oil.corba.giop" --[[VERBOSE]] local verbose = require "oil.verbose"
5
+
6
+ module("oil.corba.giop.Exception", oo.class)
7
+
8
+ __concat = Exception.__concat
9
+ __tostring = Exception.__tostring
10
+
11
+ minor_code_value = 0
12
+ completion_status = 2
13
+
14
+ function __init(self, except, ...)
15
+ if except then
16
+ local sysex = giop.SystemExceptionIDs[ except[1] ]
17
+ if sysex then
18
+ except[1] = sysex
19
+ except.exception_id = sysex
20
+ end
21
+ end
22
+ return Exception.__init(self, except, ...)
23
+ end
24
+
25
+ assert.Exception = _M -- use GIOP exception as the default exception
@@ -0,0 +1,63 @@
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 : CORBA Interface Indexer --
13
+ -- Authors: Renato Maia <maia@inf.puc-rio.br> --
14
+ --------------------------------------------------------------------------------
15
+ -- members:Receptacle
16
+ -- member:table valueof(interface:table, name:string)
17
+ --------------------------------------------------------------------------------
18
+
19
+ local oo = require "oil.oo"
20
+ local giop = require "oil.corba.giop"
21
+ local Indexer = require "oil.corba.idl.Indexer" --[[VERBOSE]] local verbose = require "oil.verbose"
22
+
23
+ module "oil.corba.giop.Indexer"
24
+
25
+ oo.class(_M, Indexer)
26
+
27
+ local CurrentInterface
28
+
29
+ function giop.ObjectOperations._is_a:implementation(repid)
30
+ local interface = CurrentInterface -- get current interface
31
+ CurrentInterface = nil -- clear current interface
32
+ if interface then
33
+ for base in interface:hierarchy() do
34
+ if base.repID == repid then
35
+ return true
36
+ end
37
+ end
38
+ end
39
+ return false
40
+ end
41
+
42
+ function giop.ObjectOperations._interface:implementation()
43
+ local interface = CurrentInterface -- get current interface
44
+ CurrentInterface = nil -- clear current interface
45
+ return interface
46
+ end
47
+
48
+ function giop.ObjectOperations._non_existent:implementation()
49
+ return false
50
+ end
51
+
52
+ function giop.ObjectOperations._component:implementation()
53
+ return nil
54
+ end
55
+
56
+ function valueof(self, interface, name)
57
+ local operation = Indexer.valueof(self, interface, name)
58
+ if not operation then
59
+ CurrentInterface = interface -- setup current interface to be used by impls.
60
+ operation = giop.ObjectOperations[name]
61
+ end
62
+ return operation
63
+ end
@@ -0,0 +1,343 @@
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 : Server-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
+ -- listener:Facet
19
+ -- configs:table default([configs:table])
20
+ -- channel:object, [except:table] getchannel(configs:table)
21
+ -- success:boolean, [except:table] freeaccess(configs:table)
22
+ -- success:boolean, [except:table] freechannel(channel:object)
23
+ -- request:object, [except:table], [requests:table] = getrequest(channel:object, [probe:boolean])
24
+ --
25
+ -- channels:HashReceptacle
26
+ -- channel:object retieve(configs:table)
27
+ -- channel:object dispose(configs:table)
28
+ -- configs:table default([configs:table])
29
+ --------------------------------------------------------------------------------
30
+
31
+ local assert = assert
32
+ local ipairs = ipairs
33
+ local pairs = pairs
34
+ local select = select
35
+ local type = type
36
+ local unpack = unpack
37
+ local stderr = io and io.stderr
38
+
39
+ local table = require "table"
40
+
41
+ local oo = require "oil.oo"
42
+ local bit = require "oil.bit"
43
+ local idl = require "oil.corba.idl"
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.Listener"
49
+
50
+ oo.class(_M, Messenger)
51
+
52
+ --------------------------------------------------------------------------------
53
+
54
+ local RequestID = giop.RequestID
55
+ local ReplyID = giop.ReplyID
56
+ local LocateRequestID = giop.LocateRequestID
57
+ local LocateReplyID = giop.LocateReplyID
58
+ local CancelRequestID = giop.CancelRequestID
59
+ local CloseConnectionID = giop.CloseConnectionID
60
+ local MessageErrorID = giop.MessageErrorID
61
+ local MessageType = giop.MessageType
62
+ local SystemExceptionIDs = giop.SystemExceptionIDs
63
+
64
+ local COMPLETED_YES = 0
65
+ local COMPLETED_NO = 1
66
+ local COMPLETED_MAYBE = 2
67
+
68
+ local Empty = {}
69
+
70
+ local SystemExceptions = {}
71
+
72
+ for _, repID in pairs(SystemExceptionIDs) do
73
+ SystemExceptions[repID] = true
74
+ end
75
+
76
+ --------------------------------------------------------------------------------
77
+
78
+ function setupaccess(self, configs)
79
+ local channels = self.channels[configs and configs.tag or 0]
80
+ if channels then
81
+ return channels:default(configs)
82
+ else
83
+ return nil, Exception{ "IMP_LIMIT", minor_code_value = 1,
84
+ message = "no supported GIOP profile found for configuration",
85
+ reason = "protocol",
86
+ configuration = configs,
87
+ }
88
+ end
89
+ end
90
+
91
+ function freeaccess(self, accesspoint) --[[VERBOSE]] verbose:listen(true, "closing all channels with accesspoint ",accesspoint)
92
+ local channels = self.channels[accesspoint.tag or 0]
93
+ local result, except = channels:dispose(accesspoint)
94
+ if result then
95
+ for _, channel in ipairs(result) do
96
+ result, except = self:sendmsg(channel, CloseConnectionID)
97
+ if not result and except.reason ~= "closed" then
98
+ break
99
+ end
100
+ end
101
+ end --[[VERBOSE]] verbose:listen(false)
102
+ return result, except
103
+ end
104
+
105
+ --------------------------------------------------------------------------------
106
+
107
+ function getchannel(self, accesspoint, probe) --[[VERBOSE]] verbose:listen(true, "get channel from accesspoint ",accesspoint)
108
+ local result, except = self.channels[accesspoint.tag or 0]
109
+ if result then
110
+ result, except = result:retrieve(accesspoint, probe)
111
+ else
112
+ except = Exception{ "IMP_LIMIT", minor_code_value = 1,
113
+ message = "no supported GIOP profile found for accesspoint",
114
+ reason = "protocol",
115
+ accesspoint = accesspoint,
116
+ }
117
+ end --[[VERBOSE]] verbose:listen(false)
118
+ return result, except
119
+ end
120
+
121
+ function putchannel(self, channel) --[[VERBOSE]] verbose:listen "put channel back"
122
+ return channel:release()
123
+ end
124
+
125
+ function freechannel(self, channel) --[[VERBOSE]] verbose:listen "close channel"
126
+ if table.maxn(channel) > 0 then
127
+ channel.freed = true
128
+ return true
129
+ else
130
+ return self:sendmsg(channel, CloseConnectionID)
131
+ end
132
+ end
133
+
134
+ --------------------------------------------------------------------------------
135
+
136
+ local SysExReply = {
137
+ service_context = Empty,
138
+ request_id = nil, -- defined later
139
+ reply_status = "SYSTEM_EXCEPTION",
140
+ }
141
+ local SysExType = { giop.SystemExceptionIDL }
142
+ local SysExBody = { n = 1, --[[defined later]] }
143
+
144
+ function sysexreply(self, requestid, body) --[[VERBOSE]] verbose:listen("new system exception ",body[1]," for request ",requestid)
145
+ SysExReply.request_id = requestid
146
+ SysExBody[1] = body
147
+ body.exception_id = body[1]
148
+ return SysExReply, SysExType, SysExBody
149
+ end
150
+
151
+ --------------------------------------------------------------------------------
152
+
153
+ Request = oo.class{ n = 0, pcall = pcall }
154
+
155
+ function Request:preinvoke(iface, member)
156
+ if iface ~= nil then
157
+ local inputs = member.inputs
158
+ local count = #inputs
159
+ self.n = count
160
+ self.outputs = member.outputs
161
+ self.exceptions = member.exceptions
162
+ local decoder = self.decoder
163
+ for i = 1, count do
164
+ local ok, result = self.pcall(decoder.get, decoder, inputs[i])
165
+ if not ok then
166
+ assert(type(result) == "table", result)
167
+ self.success = false
168
+ self.n = 1
169
+ self[1] = result
170
+ return -- request cancelled
171
+ end
172
+ self[i] = result
173
+ end
174
+ return self.object_key, self.operation
175
+ end
176
+ end
177
+
178
+ function Request:params()
179
+ return unpack(self, 1, self.n)
180
+ end
181
+
182
+ function Request:results(success, ...)
183
+ local count = select("#", ...)
184
+ self.success = success
185
+ self.n = count
186
+ for i = 1, count do
187
+ self[i] = select(i, ...)
188
+ end
189
+ end
190
+
191
+ --------------------------------------------------------------------------------
192
+
193
+ function getrequest(self, channel, probe) --[[VERBOSE]] verbose:listen(true, "get request from channel")
194
+ local result, except = true, nil
195
+ if channel:trylock("read", not probe) then
196
+ if not probe or channel:probe() then
197
+ local bypassed = false
198
+ local msgid, header, decoder = self:receivemsg(channel)
199
+ if msgid == RequestID then
200
+ local requestid = header.request_id
201
+ if not channel[requestid] then
202
+ header.decoder = decoder
203
+ if header.response_expected then
204
+ header.channel = channel
205
+ channel[requestid] = header --[[VERBOSE]] else verbose:listen "no response expected"
206
+ end
207
+ result, except = self.Request(header)
208
+ else --[[VERBOSE]] verbose:listen("got replicated request id ",requestid)
209
+ result, except = self:sendmsg(channel, MessageErrorID)
210
+ bypassed = result
211
+ end
212
+ elseif msgid == CancelRequestID then --[[VERBOSE]] verbose:listen("got cancelling of request ",header.request_id)
213
+ channel[header.request_id] = nil
214
+ result, except = true, nil
215
+ bypassed = true
216
+ elseif msgid == LocateRequestID then --[[VERBOSE]] verbose:listen("got locate request ",header.request_id)
217
+ local reply = { request_id = header.request_id }
218
+ if self.servants:retrieve(header.object_key)
219
+ then reply.locate_status = "OBJECT_HERE"
220
+ else reply.locate_status = "UNKNOWN_OBJECT"
221
+ end
222
+ reply[1] = reply
223
+ result, except = self:sendmsg(channel, LocateReplyID, reply)
224
+ bypassed = result
225
+ elseif result == MessageErrorID then --[[VERBOSE]] verbose:listen "got message error notification"
226
+ result, except = self:sendmsg(channel, CloseConnectionID)
227
+ bypassed = result
228
+ elseif MessageType[msgid] then --[[VERBOSE]] verbose:listen("got unknown message ",msgid,", sending message error notification")
229
+ result, except = self:sendmsg(channel, MessageErrorID)
230
+ bypassed = result
231
+ else
232
+ result, except = nil, header
233
+ end
234
+
235
+ if bypassed then --[[VERBOSE]] verbose:listen(false, "reissuing request read")
236
+ return self:getrequest(channel, probe)
237
+ elseif not result and except.reason == "closed" then --[[VERBOSE]] verbose:listen("client closed the connection")
238
+ result, except = true, nil
239
+ end
240
+ end
241
+ channel:freelock("read")
242
+ end --[[VERBOSE]] verbose:listen(false)
243
+ return result, except
244
+ end
245
+
246
+ --------------------------------------------------------------------------------
247
+
248
+ local ExceptionReplyTypes = { idl.string }
249
+ local ExceptionReplyBody = { n = 2, --[[defined later]] }
250
+
251
+ function handlereply(self, request)
252
+ if request.success then --[[VERBOSE]] verbose:listen "got successful results"
253
+ request.service_context = Empty
254
+ request.reply_status = "NO_EXCEPTION"
255
+ return request, request.outputs, request
256
+ else
257
+ local requestid = request.request_id
258
+ local except = request[1]
259
+ local extype = type(except)
260
+ if extype == "table" then --[[VERBOSE]] verbose:listen("got exception ",except)
261
+ local excepttype = request.exceptions
262
+ excepttype = excepttype and excepttype[ except[1] ]
263
+ if excepttype then
264
+ request.service_context = Empty
265
+ request.reply_status = "USER_EXCEPTION"
266
+ ExceptionReplyTypes[2] = excepttype
267
+ ExceptionReplyBody[1] = except[1]
268
+ ExceptionReplyBody[2] = except
269
+ return request, ExceptionReplyTypes, ExceptionReplyBody
270
+ else
271
+ if except.reason == "badkey" then
272
+ except[1] = "IDL:omg.org/CORBA/OBJECT_NOT_EXIST:1.0"
273
+ except.minor_code_value = 1
274
+ except.completion_status = COMPLETED_NO
275
+ elseif except.reason == "noimplement" then
276
+ except[1] = "IDL:omg.org/CORBA/NO_IMPLEMENT:1.0"
277
+ except.minor_code_value = 1
278
+ except.completion_status = COMPLETED_NO
279
+ elseif except.reason == "badoperation" then
280
+ except[1] = "IDL:omg.org/CORBA/BAD_OPERATION:1.0"
281
+ except.minor_code_value = 1
282
+ except.completion_status = COMPLETED_NO
283
+ elseif except.reason == "badrequestid" then
284
+ except[1] = "IDL:omg.org/CORBA/INTERNAL:1.0"
285
+ except.minor_code_value = 1
286
+ except.completion_status = COMPLETED_NO
287
+ elseif not SystemExceptions[ except[1] ] then --[[VERBOSE]] verbose:listen("got unexpected exception ",except)
288
+ except[1] = "IDL:omg.org/CORBA/UNKNOWN:1.0"
289
+ except.minor_code_value = 0
290
+ except.completion_status = COMPLETED_MAYBE --[[VERBOSE]] else verbose:listen("got system exception ",except)
291
+ end
292
+ return self:sysexreply(requestid, except)
293
+ end
294
+ elseif extype == "string" then --[[VERBOSE]] verbose:listen("got unexpected error ", except)
295
+ if stderr then stderr:write(except, "\n") end
296
+ return self:sysexreply(requestid, {
297
+ "IDL:omg.org/CORBA/UNKNOWN:1.0",
298
+ minor_code_value = 0,
299
+ completion_status = COMPLETED_MAYBE,
300
+ message = "servant error: "..except,
301
+ reason = "servant",
302
+ operation = operation,
303
+ servant = servant,
304
+ error = except,
305
+ })
306
+ else --[[VERBOSE]] verbose:listen("got illegal exception ", except)
307
+ return self:sysexreply(requestid, {
308
+ "IDL:omg.org/CORBA/UNKNOWN:1.0",
309
+ minor_code_value = 0,
310
+ completion_status = COMPLETED_MAYBE,
311
+ message = "invalid exception, got "..extype,
312
+ reason = "exception",
313
+ exception = except,
314
+ })
315
+ end
316
+ end
317
+ end
318
+
319
+ function sendreply(self, request) --[[VERBOSE]] verbose:listen(true, "got reply for request ",request.request_id)
320
+ local success, except = true, nil
321
+ local channel = request.channel
322
+ local requestid = request.request_id
323
+ if channel and channel[requestid] == request then
324
+ success, except = self:sendmsg(channel, ReplyID,
325
+ self:handlereply(request))
326
+ if success then
327
+ channel[requestid] = nil
328
+ if channel.freed and table.maxn(channel) == 0 then --[[VERBOSE]] verbose:listen "all pending requests replied, connection being closed"
329
+ success, except = self:sendmsg(channel, CloseConnectionID)
330
+ end
331
+ elseif SystemExceptions[ except[1] ] then --[[VERBOSE]] verbose:listen("got system exception ",except," at reply send")
332
+ except.completion_status = COMPLETED_YES
333
+ success, except = self:sendmsg(channel, ReplyID,
334
+ self:sysexreply(requestid, except))
335
+ end
336
+ else --[[VERBOSE]] verbose:listen("no pending request found with id ",requestid,", reply discarded")
337
+ success = true
338
+ end
339
+ if not success and except.reason == "closed" then
340
+ success, except = true, nil
341
+ end --[[VERBOSE]] verbose:listen(false)
342
+ return success, except
343
+ end
@@ -0,0 +1,228 @@
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 section 15.4.1 of CORBA 3.0 specification. --
17
+ --------------------------------------------------------------------------------
18
+ -- messenger:Facet
19
+ -- success:booelan, [except:table] = sendmsg(channel:object, type:number, header:table, types:table, values)
20
+ -- type:number, header:table, decoder:object = receivemsg(channel:object , [wait:boolean])
21
+ --
22
+ -- codec:Receptacle
23
+ -- encoder:object encoder()
24
+ -- decoder:object decoder(stream:string)
25
+ --------------------------------------------------------------------------------
26
+
27
+ local assert = assert
28
+ local ipairs = ipairs
29
+ local luapcall = pcall
30
+ local select = select
31
+ local type = type
32
+
33
+ local oo = require "oil.oo"
34
+ local bit = require "oil.bit"
35
+ local giop = require "oil.corba.giop"
36
+ local Exception = require "oil.corba.giop.Exception" --[[VERBOSE]] local verbose = require "oil.verbose"
37
+
38
+ module("oil.corba.giop.Messenger", oo.class)
39
+
40
+ pcall = luapcall
41
+
42
+ --------------------------------------------------------------------------------
43
+
44
+ magictag = giop.MagicTag
45
+ headersize = giop.HeaderSize
46
+ headertype = giop.Header_v1_[0]
47
+ messagetype = giop.MessageHeader_v1_[0]
48
+
49
+ header = {
50
+ magic = magictag,
51
+ GIOP_version = {major=1, minor=0},
52
+ byte_order = (bit.endianess() == "little"),
53
+ message_type = nil, -- defined later
54
+ message_size = nil, -- defined later
55
+ }
56
+
57
+ --------------------------------------------------------------------------------
58
+
59
+ function sendmsg(self, channel, msgtype, message, types, values) --[[VERBOSE]] verbose:message(true, "send message ",msgtype," ",message)
60
+ --
61
+ -- Create GIOP message body
62
+ --
63
+ local encoder = self.codec:encoder()
64
+ encoder:shift(self.headersize) -- alignment accordingly to GIOP header size
65
+ if message then
66
+ encoder:put(message, self.messagetype[msgtype])
67
+ end
68
+ if types then
69
+ local count = values.n or #values
70
+ for index, idltype in ipairs(types) do
71
+ local value
72
+ if index <= count then
73
+ value = values[index]
74
+ end
75
+ local ok, errmsg = self.pcall(encoder.put, encoder, value, idltype)
76
+ if not ok then
77
+ assert(type(errmsg) == "table", errmsg)
78
+ return nil, errmsg
79
+ end
80
+ end
81
+ end
82
+ local stream = encoder:getdata()
83
+
84
+ --
85
+ -- Create GIOP message header
86
+ --
87
+ local header = self.header
88
+ header.message_size = #stream
89
+ header.message_type = msgtype
90
+ encoder = self.codec:encoder()
91
+ encoder:struct(header, self.headertype)
92
+ stream = encoder:getdata()..stream
93
+
94
+ --
95
+ -- Send stream over the channel
96
+ --
97
+ local success, except, reset
98
+ repeat
99
+ channel:trylock("write", true)
100
+ success, except = channel:send(stream)
101
+ if not success then
102
+ if except == "closed" then
103
+ -- only clients have 'reset' op.
104
+ if reset == nil and channel.reset then
105
+ success, except = channel:reset()
106
+ if success then
107
+ reset, success, except = true, nil, nil
108
+ end
109
+ else
110
+ channel:close()
111
+ end
112
+ end
113
+ -- else
114
+ --TODO:[maia] How can I assure that someone is actually listening
115
+ -- to this channel? Because if the server has closed
116
+ -- the connection, we have received a FIN, but the RST
117
+ -- may not have been received yet, so we might be sending
118
+ -- data to a socket no one is listening to. (see page 132
119
+ -- of R. Stevens, UNIX network programming, 2nd ed, 1997)
120
+ end
121
+ channel:freelock("write")
122
+ until success or except
123
+ if except then
124
+ except = Exception{ "COMM_FAILURE", minor_code_value = 0,
125
+ message = "unable to write into connection ("..except..")",
126
+ reason = "closed",
127
+ connection = channel,
128
+ }
129
+ end --[[VERBOSE]] verbose:message(false)
130
+
131
+ return success, except
132
+ end
133
+
134
+ --------------------------------------------------------------------------------
135
+
136
+ function receivemsg(self, channel) --[[VERBOSE]] verbose:message(true, "receive message from channel")
137
+ local success, except = channel:receive(self.headersize)
138
+ if success then
139
+ local decoder = self.codec:decoder(success)
140
+ --
141
+ -- Read GIOP message header
142
+ --
143
+ local header = self.headertype
144
+ local magic = decoder:array(header[1].type)
145
+ if magic == self.magictag then
146
+ local version = decoder:struct(header[2].type)
147
+ if version.major == 1 and version.minor == 0 then
148
+ decoder:order(decoder:boolean())
149
+ local type = decoder:octet()
150
+ local size = decoder:ulong()
151
+ --
152
+ -- Read GIOP message body
153
+ --
154
+ if size > 0 then
155
+ success, except = channel:receive(size)
156
+ else
157
+ success, except = "", nil
158
+ end
159
+ if success then
160
+ decoder:append(success)
161
+ success = type
162
+ header = self.messagetype[type]
163
+ if header then
164
+ except = decoder:struct(header)
165
+ channel = decoder
166
+ elseif header == nil then
167
+ success = nil
168
+ except = Exception{ "INTERNAL", minor_code_value = 0,
169
+ message = "GIOP 1.0 message type not supported",
170
+ reason = "messageid",
171
+ major = version.major,
172
+ minor = version.minor,
173
+ type = type,
174
+ }
175
+ end
176
+ else
177
+ if except == "closed" then channel:close() end
178
+ except = Exception{ "COMM_FAILURE", minor_code_value = 0,
179
+ message = "unable to read from connection ("..except..")",
180
+ reason = "closed",
181
+ connection = channel,
182
+ }
183
+ end
184
+ else
185
+ success = nil
186
+ except = Exception{ "INTERNAL", minor_code_value = 0,
187
+ message = "GIOP version not supported",
188
+ reason = "version",
189
+ procotol = "GIOP",
190
+ version = version,
191
+ }
192
+ end
193
+ else
194
+ success = nil
195
+ except = Exception{ "MARSHAL", minor_code_value = 8,
196
+ message = "illegal GIOP message magic tag",
197
+ reason = "magictag",
198
+ tag = magic,
199
+ }
200
+ end
201
+ else
202
+ if except == "closed" then channel:close() end
203
+ except = Exception{ "COMM_FAILURE", minor_code_value = 0,
204
+ message = "unable to read from connection",
205
+ reason = except,
206
+ connection = channel,
207
+ }
208
+ end --[[VERBOSE]] verbose:message(false, "got message ",success, except)
209
+ return success, except, channel
210
+ end
211
+
212
+ --------------------------------------------------------------------------------
213
+ --------------------------------------------------------------------------------
214
+
215
+ --[[VERBOSE]] function verbose.custom:message(...)
216
+ --[[VERBOSE]] local viewer = self.viewer
217
+ --[[VERBOSE]] local output = viewer.output
218
+ --[[VERBOSE]] for i = 1, select("#", ...) do
219
+ --[[VERBOSE]] local value = select(i, ...)
220
+ --[[VERBOSE]] if giop.MessageType[value] then
221
+ --[[VERBOSE]] output:write(giop.MessageType[value])
222
+ --[[VERBOSE]] elseif type(value) == "string" then
223
+ --[[VERBOSE]] output:write(value)
224
+ --[[VERBOSE]] else
225
+ --[[VERBOSE]] viewer:write(value)
226
+ --[[VERBOSE]] end
227
+ --[[VERBOSE]] end
228
+ --[[VERBOSE]] end