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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +69 -0
- data/Rakefile +1 -0
- data/lib/rufus/lua/win.rb +18 -0
- data/lib/rufus/lua/win/version.rb +7 -0
- data/rufus-lua-win.gemspec +23 -0
- data/vendor/lua/bin/liblua.dll +0 -0
- data/vendor/lua/lib/lua/LuaXml.lua +119 -0
- data/vendor/lua/lib/lua/alien.lua +250 -0
- data/vendor/lua/lib/lua/alien/core.dll +0 -0
- data/vendor/lua/lib/lua/alien/struct.dll +0 -0
- data/vendor/lua/lib/lua/base.lua +536 -0
- data/vendor/lua/lib/lua/bin.lua +20 -0
- data/vendor/lua/lib/lua/bit.dll +0 -0
- data/vendor/lua/lib/lua/cdlua.dll +0 -0
- data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
- data/vendor/lua/lib/lua/cdluagl.dll +0 -0
- data/vendor/lua/lib/lua/cdluaim.dll +0 -0
- data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
- data/vendor/lua/lib/lua/copas.lua +543 -0
- data/vendor/lua/lib/lua/coxpcall.lua +57 -0
- data/vendor/lua/lib/lua/date.lua +745 -0
- data/vendor/lua/lib/lua/debug_ext.lua +84 -0
- data/vendor/lua/lib/lua/debug_init.lua +2 -0
- data/vendor/lua/lib/lua/des56.dll +0 -0
- data/vendor/lua/lib/lua/dist/config.lua +109 -0
- data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
- data/vendor/lua/lib/lua/dist/depends.lua +601 -0
- data/vendor/lua/lib/lua/dist/git.lua +307 -0
- data/vendor/lua/lib/lua/dist/init.lua +278 -0
- data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
- data/vendor/lua/lib/lua/dist/package.lua +583 -0
- data/vendor/lua/lib/lua/dist/sys.lua +367 -0
- data/vendor/lua/lib/lua/dist/utils.lua +130 -0
- data/vendor/lua/lib/lua/ex.dll +0 -0
- data/vendor/lua/lib/lua/fstable.lua +116 -0
- data/vendor/lua/lib/lua/getopt.lua +273 -0
- data/vendor/lua/lib/lua/git.lua +5 -0
- data/vendor/lua/lib/lua/git/core.dll +0 -0
- data/vendor/lua/lib/lua/git/objects.lua +121 -0
- data/vendor/lua/lib/lua/git/pack.lua +316 -0
- data/vendor/lua/lib/lua/git/protocol.lua +188 -0
- data/vendor/lua/lib/lua/git/repo.lua +283 -0
- data/vendor/lua/lib/lua/git/util.lua +233 -0
- data/vendor/lua/lib/lua/gzio.dll +0 -0
- data/vendor/lua/lib/lua/gzip.lua +81 -0
- data/vendor/lua/lib/lua/iconv.dll +0 -0
- data/vendor/lua/lib/lua/imlua.dll +0 -0
- data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
- data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
- data/vendor/lua/lib/lua/io_ext.lua +115 -0
- data/vendor/lua/lib/lua/iuplua.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
- data/vendor/lua/lib/lua/iupluacd.dll +0 -0
- data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
- data/vendor/lua/lib/lua/iupluagl.dll +0 -0
- data/vendor/lua/lib/lua/iupluaim.dll +0 -0
- data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
- data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
- data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
- data/vendor/lua/lib/lua/lanes.lua +591 -0
- data/vendor/lua/lib/lua/lanes/core.dll +0 -0
- data/vendor/lua/lib/lua/lcs.lua +55 -0
- data/vendor/lua/lib/lua/lemock.lua +659 -0
- data/vendor/lua/lib/lua/lfs.dll +0 -0
- data/vendor/lua/lib/lua/list.lua +375 -0
- data/vendor/lua/lib/lua/logging.lua +189 -0
- data/vendor/lua/lib/lua/logging/console.lua +22 -0
- data/vendor/lua/lib/lua/logging/email.lua +44 -0
- data/vendor/lua/lib/lua/logging/file.lua +55 -0
- data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
- data/vendor/lua/lib/lua/logging/socket.lua +35 -0
- data/vendor/lua/lib/lua/logging/sql.lua +64 -0
- data/vendor/lua/lib/lua/loop/base.lua +68 -0
- data/vendor/lua/lib/lua/loop/cached.lua +312 -0
- data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
- data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
- data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
- data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
- data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
- data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
- data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
- data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
- data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
- data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
- data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
- data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
- data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
- data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
- data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
- data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
- data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
- data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
- data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
- data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
- data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
- data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
- data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
- data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
- data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
- data/vendor/lua/lib/lua/loop/simple.lua +75 -0
- data/vendor/lua/lib/lua/loop/table.lua +71 -0
- data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
- data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
- data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
- data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
- data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
- data/vendor/lua/lib/lua/lpeg.dll +0 -0
- data/vendor/lua/lib/lua/ltn12.lua +292 -0
- data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
- data/vendor/lua/lib/lua/luacurl.dll +0 -0
- data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
- data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
- data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
- data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
- data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
- data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
- data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
- data/vendor/lua/lib/lua/luagl.dll +0 -0
- data/vendor/lua/lib/lua/luaglu.dll +0 -0
- data/vendor/lua/lib/lua/luaidl.lua +113 -0
- data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
- data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
- data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
- data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
- data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
- data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
- data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
- data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
- data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
- data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
- data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
- data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
- data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
- data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
- data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
- data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
- data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
- data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
- data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
- data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
- data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
- data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
- data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
- data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
- data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
- data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
- data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
- data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
- data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
- data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
- data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
- data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
- data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
- data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
- data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
- data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
- data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
- data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
- data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
- data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
- data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
- data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
- data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
- data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
- data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
- data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
- data/vendor/lua/lib/lua/luars232.dll +0 -0
- data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
- data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
- data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
- data/vendor/lua/lib/lua/luaunit.lua +601 -0
- data/vendor/lua/lib/lua/lxp.dll +0 -0
- data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
- data/vendor/lua/lib/lua/math_ext.lua +27 -0
- data/vendor/lua/lib/lua/mbox.lua +53 -0
- data/vendor/lua/lib/lua/md5.lua +19 -0
- data/vendor/lua/lib/lua/md5/core.dll +0 -0
- data/vendor/lua/lib/lua/metalua.lua +0 -0
- data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
- data/vendor/lua/lib/lua/metalua/base.lua +104 -0
- data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
- data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
- data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
- data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
- data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
- data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
- data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
- data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
- data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
- data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
- data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
- data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
- data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
- data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
- data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
- data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
- data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
- data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
- data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
- data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
- data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
- data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
- data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
- data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
- data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
- data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
- data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
- data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
- data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
- data/vendor/lua/lib/lua/mime.lua +87 -0
- data/vendor/lua/lib/lua/mime/core.dll +0 -0
- data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
- data/vendor/lua/lib/lua/modules.lua +16 -0
- data/vendor/lua/lib/lua/object.lua +56 -0
- data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
- data/vendor/lua/lib/lua/oil/arch.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
- data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
- data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
- data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
- data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
- data/vendor/lua/lib/lua/oil/assert.lua +87 -0
- data/vendor/lua/lib/lua/oil/builder.lua +45 -0
- data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
- data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
- data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
- data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/compat.lua +846 -0
- data/vendor/lua/lib/lua/oil/component.lua +1 -0
- data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
- data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
- data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
- data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
- data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
- data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
- data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
- data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
- data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
- data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
- data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
- data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
- data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
- data/vendor/lua/lib/lua/oil/oo.lua +1 -0
- data/vendor/lua/lib/lua/oil/port.lua +1 -0
- data/vendor/lua/lib/lua/oil/properties.lua +57 -0
- data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
- data/vendor/lua/lib/lua/package_ext.lua +15 -0
- data/vendor/lua/lib/lua/parser.lua +268 -0
- data/vendor/lua/lib/lua/pl/Date.lua +555 -0
- data/vendor/lua/lib/lua/pl/List.lua +613 -0
- data/vendor/lua/lib/lua/pl/Map.lua +113 -0
- data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
- data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
- data/vendor/lua/lib/lua/pl/Set.lua +153 -0
- data/vendor/lua/lib/lua/pl/app.lua +165 -0
- data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
- data/vendor/lua/lib/lua/pl/class.lua +180 -0
- data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
- data/vendor/lua/lib/lua/pl/config.lua +176 -0
- data/vendor/lua/lib/lua/pl/data.lua +606 -0
- data/vendor/lua/lib/lua/pl/dir.lua +475 -0
- data/vendor/lua/lib/lua/pl/file.lua +70 -0
- data/vendor/lua/lib/lua/pl/func.lua +376 -0
- data/vendor/lua/lib/lua/pl/init.lua +68 -0
- data/vendor/lua/lib/lua/pl/input.lua +173 -0
- data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
- data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
- data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
- data/vendor/lua/lib/lua/pl/operator.lua +201 -0
- data/vendor/lua/lib/lua/pl/path.lua +398 -0
- data/vendor/lua/lib/lua/pl/permute.lua +63 -0
- data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
- data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
- data/vendor/lua/lib/lua/pl/seq.lua +551 -0
- data/vendor/lua/lib/lua/pl/sip.lua +344 -0
- data/vendor/lua/lib/lua/pl/strict.lua +70 -0
- data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
- data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
- data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
- data/vendor/lua/lib/lua/pl/template.lua +103 -0
- data/vendor/lua/lib/lua/pl/test.lua +135 -0
- data/vendor/lua/lib/lua/pl/text.lua +243 -0
- data/vendor/lua/lib/lua/pl/utils.lua +550 -0
- data/vendor/lua/lib/lua/pl/xml.lua +689 -0
- data/vendor/lua/lib/lua/profiler.dll +0 -0
- data/vendor/lua/lib/lua/re.lua +248 -0
- data/vendor/lua/lib/lua/rex_onig.dll +0 -0
- data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
- data/vendor/lua/lib/lua/rex_posix.dll +0 -0
- data/vendor/lua/lib/lua/rings.dll +0 -0
- data/vendor/lua/lib/lua/serialize.lua +193 -0
- data/vendor/lua/lib/lua/set.lua +149 -0
- data/vendor/lua/lib/lua/socket.lua +133 -0
- data/vendor/lua/lib/lua/socket/core.dll +0 -0
- data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
- data/vendor/lua/lib/lua/socket/http.lua +350 -0
- data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
- data/vendor/lua/lib/lua/socket/tp.lua +123 -0
- data/vendor/lua/lib/lua/socket/url.lua +297 -0
- data/vendor/lua/lib/lua/ssl.dll +0 -0
- data/vendor/lua/lib/lua/ssl.lua +93 -0
- data/vendor/lua/lib/lua/ssl/https.lua +138 -0
- data/vendor/lua/lib/lua/stable.lua +28 -0
- data/vendor/lua/lib/lua/std.lua +16 -0
- data/vendor/lua/lib/lua/strbuf.lua +32 -0
- data/vendor/lua/lib/lua/strict.lua +45 -0
- data/vendor/lua/lib/lua/string_ext.lua +274 -0
- data/vendor/lua/lib/lua/table_ext.lua +117 -0
- data/vendor/lua/lib/lua/tar.lua +262 -0
- data/vendor/lua/lib/lua/task.dll +0 -0
- data/vendor/lua/lib/lua/tree.lua +81 -0
- data/vendor/lua/lib/lua/unicode.dll +0 -0
- data/vendor/lua/lib/lua/verbose_require.lua +11 -0
- data/vendor/lua/lib/lua/vstruct.lua +86 -0
- data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
- data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
- data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
- data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
- data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
- data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
- data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
- data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
- data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
- data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
- data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
- data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
- data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
- data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
- data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
- data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
- data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
- data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
- data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
- data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
- data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
- data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
- data/vendor/lua/lib/lua/wx.dll +0 -0
- data/vendor/lua/lib/lua/xml.lua +75 -0
- data/vendor/lua/lib/lua/zip.dll +0 -0
- data/vendor/lua/lib/lua/zlib.dll +0 -0
- 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
|