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,20 @@
|
|
|
1
|
+
--- Binary data utilities
|
|
2
|
+
module ("bin", package.seeall)
|
|
3
|
+
|
|
4
|
+
--- Turn a little-endian word into a number
|
|
5
|
+
function le_to_number (s)
|
|
6
|
+
local res = 0
|
|
7
|
+
for i = #s, 1, -1 do
|
|
8
|
+
res = res * 256 + string.byte (s, i)
|
|
9
|
+
end
|
|
10
|
+
return res
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
--- Turn a little-endian word into a hex string
|
|
14
|
+
function le_to_hex (s)
|
|
15
|
+
local res = ""
|
|
16
|
+
for i = 1, #s do
|
|
17
|
+
res = res .. string.format ("%.2x", string.byte (s, i))
|
|
18
|
+
end
|
|
19
|
+
return res
|
|
20
|
+
end
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
-------------------------------------------------------------------------------
|
|
2
|
+
-- Copas - Coroutine Oriented Portable Asynchronous Services
|
|
3
|
+
--
|
|
4
|
+
-- A dispatcher based on coroutines that can be used by TCP/IP servers.
|
|
5
|
+
-- Uses LuaSocket as the interface with the TCP/IP stack.
|
|
6
|
+
--
|
|
7
|
+
-- Authors: Andre Carregal, Javier Guerra, and Fabio Mascarenhas
|
|
8
|
+
-- Contributors: Diego Nehab, Mike Pall, David Burgess, Leonardo Godinho,
|
|
9
|
+
-- Thomas Harning Jr., and Gary NG
|
|
10
|
+
--
|
|
11
|
+
-- Copyright 2005 - Kepler Project (www.keplerproject.org)
|
|
12
|
+
--
|
|
13
|
+
-- $Id: copas.lua,v 1.37 2009/04/07 22:09:52 carregal Exp $
|
|
14
|
+
-------------------------------------------------------------------------------
|
|
15
|
+
|
|
16
|
+
if package.loaded["socket.http"] then
|
|
17
|
+
error("you must require copas before require'ing socket.http")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
local socket = require "socket"
|
|
21
|
+
|
|
22
|
+
require "coxpcall"
|
|
23
|
+
|
|
24
|
+
local WATCH_DOG_TIMEOUT = 120
|
|
25
|
+
local UDP_DATAGRAM_MAX = 8192
|
|
26
|
+
|
|
27
|
+
-- Redefines LuaSocket functions with coroutine safe versions
|
|
28
|
+
-- (this allows the use of socket.http from within copas)
|
|
29
|
+
local function statusHandler(status, ...)
|
|
30
|
+
if status then return ... end
|
|
31
|
+
local err = (...)
|
|
32
|
+
if type(err) == "table" then
|
|
33
|
+
return nil, err[1]
|
|
34
|
+
else
|
|
35
|
+
error(err)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
function socket.protect(func)
|
|
40
|
+
return function (...)
|
|
41
|
+
return statusHandler(copcall(func, ...))
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
function socket.newtry(finalizer)
|
|
46
|
+
return function (...)
|
|
47
|
+
local status = (...)
|
|
48
|
+
if not status then
|
|
49
|
+
copcall(finalizer, select(2, ...))
|
|
50
|
+
error({ (select(2, ...)) }, 0)
|
|
51
|
+
end
|
|
52
|
+
return ...
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
-- end of LuaSocket redefinitions
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
module ("copas", package.seeall)
|
|
60
|
+
|
|
61
|
+
-- Meta information is public even if beginning with an "_"
|
|
62
|
+
_COPYRIGHT = "Copyright (C) 2005-2010 Kepler Project"
|
|
63
|
+
_DESCRIPTION = "Coroutine Oriented Portable Asynchronous Services"
|
|
64
|
+
_VERSION = "Copas 1.1.7"
|
|
65
|
+
|
|
66
|
+
-- Close the socket associated with the current connection after the handler finishes
|
|
67
|
+
autoclose = true
|
|
68
|
+
|
|
69
|
+
-------------------------------------------------------------------------------
|
|
70
|
+
-- Simple set implementation based on LuaSocket's tinyirc.lua example
|
|
71
|
+
-- adds a FIFO queue for each value in the set
|
|
72
|
+
-------------------------------------------------------------------------------
|
|
73
|
+
local function newset()
|
|
74
|
+
local reverse = {}
|
|
75
|
+
local set = {}
|
|
76
|
+
local q = {}
|
|
77
|
+
setmetatable(set, { __index = {
|
|
78
|
+
insert = function(set, value)
|
|
79
|
+
if not reverse[value] then
|
|
80
|
+
set[#set + 1] = value
|
|
81
|
+
reverse[value] = #set
|
|
82
|
+
end
|
|
83
|
+
end,
|
|
84
|
+
|
|
85
|
+
remove = function(set, value)
|
|
86
|
+
local index = reverse[value]
|
|
87
|
+
if index then
|
|
88
|
+
reverse[value] = nil
|
|
89
|
+
local top = set[#set]
|
|
90
|
+
set[#set] = nil
|
|
91
|
+
if top ~= value then
|
|
92
|
+
reverse[top] = index
|
|
93
|
+
set[index] = top
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end,
|
|
97
|
+
|
|
98
|
+
push = function (set, key, itm)
|
|
99
|
+
local qKey = q[key]
|
|
100
|
+
if qKey == nil then
|
|
101
|
+
q[key] = {itm}
|
|
102
|
+
else
|
|
103
|
+
qKey[#qKey + 1] = itm
|
|
104
|
+
end
|
|
105
|
+
end,
|
|
106
|
+
|
|
107
|
+
pop = function (set, key)
|
|
108
|
+
local t = q[key]
|
|
109
|
+
if t ~= nil then
|
|
110
|
+
local ret = table.remove (t, 1)
|
|
111
|
+
if t[1] == nil then
|
|
112
|
+
q[key] = nil
|
|
113
|
+
end
|
|
114
|
+
return ret
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
}})
|
|
118
|
+
return set
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
local _servers = newset() -- servers being handled
|
|
122
|
+
local _reading_log = {}
|
|
123
|
+
local _writing_log = {}
|
|
124
|
+
|
|
125
|
+
local _reading = newset() -- sockets currently being read
|
|
126
|
+
local _writing = newset() -- sockets currently being written
|
|
127
|
+
|
|
128
|
+
-------------------------------------------------------------------------------
|
|
129
|
+
-- Coroutine based socket I/O functions.
|
|
130
|
+
-------------------------------------------------------------------------------
|
|
131
|
+
-- reads a pattern from a client and yields to the reading set on timeouts
|
|
132
|
+
-- UDP: a UDP socket expects a second argument to be a number, so it MUST
|
|
133
|
+
-- be provided as the 'pattern' below defaults to a string. Will throw a
|
|
134
|
+
-- 'bad argument' error if omitted.
|
|
135
|
+
function receive(client, pattern, part)
|
|
136
|
+
local s, err
|
|
137
|
+
pattern = pattern or "*l"
|
|
138
|
+
repeat
|
|
139
|
+
s, err, part = client:receive(pattern, part)
|
|
140
|
+
if s or err ~= "timeout" then
|
|
141
|
+
_reading_log[client] = nil
|
|
142
|
+
return s, err, part
|
|
143
|
+
end
|
|
144
|
+
_reading_log[client] = os.time()
|
|
145
|
+
coroutine.yield(client, _reading)
|
|
146
|
+
until false
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
-- receives data from a client over UDP. Not available for TCP.
|
|
150
|
+
-- (this is a copy of receive() method, adapted for receivefrom() use)
|
|
151
|
+
function receivefrom(client, size)
|
|
152
|
+
local s, err, port
|
|
153
|
+
size = size or UDP_DATAGRAM_MAX
|
|
154
|
+
repeat
|
|
155
|
+
s, err, port = client:receivefrom(size) -- upon success err holds ip address
|
|
156
|
+
if s or err ~= "timeout" then
|
|
157
|
+
_reading_log[client] = nil
|
|
158
|
+
return s, err, port
|
|
159
|
+
end
|
|
160
|
+
_reading_log[client] = os.time()
|
|
161
|
+
coroutine.yield(client, _reading)
|
|
162
|
+
until false
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
-- same as above but with special treatment when reading chunks,
|
|
166
|
+
-- unblocks on any data received.
|
|
167
|
+
function receivePartial(client, pattern)
|
|
168
|
+
local s, err, part
|
|
169
|
+
pattern = pattern or "*l"
|
|
170
|
+
repeat
|
|
171
|
+
s, err, part = client:receive(pattern)
|
|
172
|
+
if s or ( (type(pattern)=="number") and part~="" and part ~=nil ) or
|
|
173
|
+
err ~= "timeout" then
|
|
174
|
+
_reading_log[client] = nil
|
|
175
|
+
return s, err, part
|
|
176
|
+
end
|
|
177
|
+
_reading_log[client] = os.time()
|
|
178
|
+
coroutine.yield(client, _reading)
|
|
179
|
+
until false
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
-- sends data to a client. The operation is buffered and
|
|
183
|
+
-- yields to the writing set on timeouts
|
|
184
|
+
-- Note: from and to parameters will be ignored by/for UDP sockets
|
|
185
|
+
function send(client,data, from, to)
|
|
186
|
+
local s, err,sent
|
|
187
|
+
from = from or 1
|
|
188
|
+
local lastIndex = from - 1
|
|
189
|
+
|
|
190
|
+
repeat
|
|
191
|
+
s, err, lastIndex = client:send(data, lastIndex + 1, to)
|
|
192
|
+
-- adds extra corrotine swap
|
|
193
|
+
-- garantees that high throuput dont take other threads to starvation
|
|
194
|
+
if (math.random(100) > 90) then
|
|
195
|
+
_writing_log[client] = os.time()
|
|
196
|
+
coroutine.yield(client, _writing)
|
|
197
|
+
end
|
|
198
|
+
if s or err ~= "timeout" then
|
|
199
|
+
_writing_log[client] = nil
|
|
200
|
+
return s, err,lastIndex
|
|
201
|
+
end
|
|
202
|
+
_writing_log[client] = os.time()
|
|
203
|
+
coroutine.yield(client, _writing)
|
|
204
|
+
until false
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
-- sends data to a client over UDP. Not available for TCP.
|
|
208
|
+
-- (this is a copy of send() method, adapted for sendto() use)
|
|
209
|
+
function sendto(client,data, ip, port)
|
|
210
|
+
local s, err,sent
|
|
211
|
+
|
|
212
|
+
repeat
|
|
213
|
+
s, err = client:sendto(data, ip, port)
|
|
214
|
+
-- adds extra corrotine swap
|
|
215
|
+
-- garantees that high throuput dont take other threads to starvation
|
|
216
|
+
if (math.random(100) > 90) then
|
|
217
|
+
_writing_log[client] = os.time()
|
|
218
|
+
coroutine.yield(client, _writing)
|
|
219
|
+
end
|
|
220
|
+
if s or err ~= "timeout" then
|
|
221
|
+
_writing_log[client] = nil
|
|
222
|
+
return s, err
|
|
223
|
+
end
|
|
224
|
+
_writing_log[client] = os.time()
|
|
225
|
+
coroutine.yield(client, _writing)
|
|
226
|
+
until false
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
-- waits until connection is completed
|
|
230
|
+
function connect(skt, host, port)
|
|
231
|
+
skt:settimeout(0)
|
|
232
|
+
local ret, err
|
|
233
|
+
repeat
|
|
234
|
+
ret, err = skt:connect (host, port)
|
|
235
|
+
if ret or err ~= "timeout" then
|
|
236
|
+
_writing_log[skt] = nil
|
|
237
|
+
return ret, err
|
|
238
|
+
end
|
|
239
|
+
_writing_log[skt] = os.time()
|
|
240
|
+
coroutine.yield(skt, _writing)
|
|
241
|
+
until false
|
|
242
|
+
return ret, err
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
-- flushes a client write buffer (deprecated)
|
|
246
|
+
function flush(client)
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
-- wraps a TCP socket to use Copas methods (send, receive, flush and settimeout)
|
|
250
|
+
local _skt_mt = {__index = {
|
|
251
|
+
send = function (self, data, from, to)
|
|
252
|
+
return send (self.socket, data, from, to)
|
|
253
|
+
end,
|
|
254
|
+
|
|
255
|
+
receive = function (self, pattern)
|
|
256
|
+
if (self.timeout==0) then
|
|
257
|
+
return receivePartial(self.socket, pattern)
|
|
258
|
+
end
|
|
259
|
+
return receive (self.socket, pattern)
|
|
260
|
+
end,
|
|
261
|
+
|
|
262
|
+
flush = function (self)
|
|
263
|
+
return flush (self.socket)
|
|
264
|
+
end,
|
|
265
|
+
|
|
266
|
+
settimeout = function (self,time)
|
|
267
|
+
self.timeout=time
|
|
268
|
+
return
|
|
269
|
+
end,
|
|
270
|
+
}}
|
|
271
|
+
|
|
272
|
+
-- wraps a UDP socket, copy of TCP one adapted for UDP.
|
|
273
|
+
-- Mainly adds sendto() and receivefrom()
|
|
274
|
+
local _skt_mt_udp = {__index = {
|
|
275
|
+
send = function (self, data)
|
|
276
|
+
return send (self.socket, data)
|
|
277
|
+
end,
|
|
278
|
+
|
|
279
|
+
sendto = function (self, data, ip, port)
|
|
280
|
+
return sendto (self.socket, data, ip, port)
|
|
281
|
+
end,
|
|
282
|
+
|
|
283
|
+
receive = function (self, size)
|
|
284
|
+
return receive (self.socket, (size or UDP_DATAGRAM_MAX))
|
|
285
|
+
end,
|
|
286
|
+
|
|
287
|
+
receivefrom = function (self, size)
|
|
288
|
+
return receivefrom (self.socket, (size or UDP_DATAGRAM_MAX))
|
|
289
|
+
end,
|
|
290
|
+
|
|
291
|
+
flush = function (self)
|
|
292
|
+
return flush (self.socket)
|
|
293
|
+
end,
|
|
294
|
+
|
|
295
|
+
settimeout = function (self,time)
|
|
296
|
+
self.timeout=time
|
|
297
|
+
return
|
|
298
|
+
end,
|
|
299
|
+
}}
|
|
300
|
+
|
|
301
|
+
function wrap (skt)
|
|
302
|
+
if string.sub(tostring(skt),1,3) == "udp" then
|
|
303
|
+
return setmetatable ({socket = skt}, _skt_mt_udp)
|
|
304
|
+
else
|
|
305
|
+
return setmetatable ({socket = skt}, _skt_mt)
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
--------------------------------------------------
|
|
310
|
+
-- Error handling
|
|
311
|
+
--------------------------------------------------
|
|
312
|
+
|
|
313
|
+
local _errhandlers = {} -- error handler per coroutine
|
|
314
|
+
|
|
315
|
+
function setErrorHandler (err)
|
|
316
|
+
local co = coroutine.running()
|
|
317
|
+
if co then
|
|
318
|
+
_errhandlers [co] = err
|
|
319
|
+
end
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
local function _deferror (msg, co, skt)
|
|
323
|
+
print (msg, co, skt)
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
-------------------------------------------------------------------------------
|
|
327
|
+
-- Thread handling
|
|
328
|
+
-------------------------------------------------------------------------------
|
|
329
|
+
|
|
330
|
+
local function _doTick (co, skt, ...)
|
|
331
|
+
if not co then return end
|
|
332
|
+
|
|
333
|
+
local ok, res, new_q = coroutine.resume(co, skt, ...)
|
|
334
|
+
|
|
335
|
+
if ok and res and new_q then
|
|
336
|
+
new_q:insert (res)
|
|
337
|
+
new_q:push (res, co)
|
|
338
|
+
else
|
|
339
|
+
if not ok then copcall (_errhandlers [co] or _deferror, res, co, skt) end
|
|
340
|
+
if skt and autoclose then skt:close() end
|
|
341
|
+
_errhandlers [co] = nil
|
|
342
|
+
end
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
-- accepts a connection on socket input
|
|
346
|
+
local function _accept(input, handler)
|
|
347
|
+
local client = input:accept()
|
|
348
|
+
if client then
|
|
349
|
+
client:settimeout(0)
|
|
350
|
+
local co = coroutine.create(handler)
|
|
351
|
+
_doTick (co, client)
|
|
352
|
+
--_reading:insert(client)
|
|
353
|
+
end
|
|
354
|
+
return client
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
-- handle threads on a queue
|
|
358
|
+
local function _tickRead (skt)
|
|
359
|
+
_doTick (_reading:pop (skt), skt)
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
local function _tickWrite (skt)
|
|
363
|
+
_doTick (_writing:pop (skt), skt)
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
-------------------------------------------------------------------------------
|
|
367
|
+
-- Adds a server/handler pair to Copas dispatcher
|
|
368
|
+
-------------------------------------------------------------------------------
|
|
369
|
+
local function addTCPserver(server, handler, timeout)
|
|
370
|
+
server:settimeout(timeout or 0.1)
|
|
371
|
+
_servers[server] = handler
|
|
372
|
+
_reading:insert(server)
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
local function addUDPserver(server, handler, timeout)
|
|
376
|
+
server:settimeout(timeout or 0)
|
|
377
|
+
local co = coroutine.create(handler)
|
|
378
|
+
_reading:insert(server)
|
|
379
|
+
_doTick (co, server)
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
function addserver(server, handler, timeout)
|
|
383
|
+
if string.sub(tostring(server),1,3) == "udp" then
|
|
384
|
+
addUDPserver(server, handler, timeout)
|
|
385
|
+
else
|
|
386
|
+
addTCPserver(server, handler, timeout)
|
|
387
|
+
end
|
|
388
|
+
end
|
|
389
|
+
-------------------------------------------------------------------------------
|
|
390
|
+
-- Adds an new courotine thread to Copas dispatcher
|
|
391
|
+
-------------------------------------------------------------------------------
|
|
392
|
+
function addthread(thread, ...)
|
|
393
|
+
if type(thread) ~= "thread" then
|
|
394
|
+
thread = coroutine.create(thread)
|
|
395
|
+
end
|
|
396
|
+
_doTick (thread, nil, ...)
|
|
397
|
+
return thread
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
-------------------------------------------------------------------------------
|
|
401
|
+
-- tasks registering
|
|
402
|
+
-------------------------------------------------------------------------------
|
|
403
|
+
|
|
404
|
+
local _tasks = {}
|
|
405
|
+
|
|
406
|
+
local function addtaskRead (tsk)
|
|
407
|
+
-- lets tasks call the default _tick()
|
|
408
|
+
tsk.def_tick = _tickRead
|
|
409
|
+
|
|
410
|
+
_tasks [tsk] = true
|
|
411
|
+
end
|
|
412
|
+
|
|
413
|
+
local function addtaskWrite (tsk)
|
|
414
|
+
-- lets tasks call the default _tick()
|
|
415
|
+
tsk.def_tick = _tickWrite
|
|
416
|
+
|
|
417
|
+
_tasks [tsk] = true
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
local function tasks ()
|
|
421
|
+
return next, _tasks
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
-------------------------------------------------------------------------------
|
|
425
|
+
-- main tasks: manage readable and writable socket sets
|
|
426
|
+
-------------------------------------------------------------------------------
|
|
427
|
+
-- a task to check ready to read events
|
|
428
|
+
local _readable_t = {
|
|
429
|
+
events = function(self)
|
|
430
|
+
local i = 0
|
|
431
|
+
return function ()
|
|
432
|
+
i = i + 1
|
|
433
|
+
return self._evs [i]
|
|
434
|
+
end
|
|
435
|
+
end,
|
|
436
|
+
|
|
437
|
+
tick = function (self, input)
|
|
438
|
+
local handler = _servers[input]
|
|
439
|
+
if handler then
|
|
440
|
+
input = _accept(input, handler)
|
|
441
|
+
else
|
|
442
|
+
_reading:remove (input)
|
|
443
|
+
self.def_tick (input)
|
|
444
|
+
end
|
|
445
|
+
end
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
addtaskRead (_readable_t)
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
-- a task to check ready to write events
|
|
452
|
+
local _writable_t = {
|
|
453
|
+
events = function (self)
|
|
454
|
+
local i = 0
|
|
455
|
+
return function ()
|
|
456
|
+
i = i + 1
|
|
457
|
+
return self._evs [i]
|
|
458
|
+
end
|
|
459
|
+
end,
|
|
460
|
+
|
|
461
|
+
tick = function (self, output)
|
|
462
|
+
_writing:remove (output)
|
|
463
|
+
self.def_tick (output)
|
|
464
|
+
end
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
addtaskWrite (_writable_t)
|
|
468
|
+
|
|
469
|
+
local last_cleansing = 0
|
|
470
|
+
|
|
471
|
+
-------------------------------------------------------------------------------
|
|
472
|
+
-- Checks for reads and writes on sockets
|
|
473
|
+
-------------------------------------------------------------------------------
|
|
474
|
+
local function _select (timeout)
|
|
475
|
+
local err
|
|
476
|
+
local readable={}
|
|
477
|
+
local writable={}
|
|
478
|
+
local r={}
|
|
479
|
+
local w={}
|
|
480
|
+
local now = os.time()
|
|
481
|
+
local duration = os.difftime
|
|
482
|
+
|
|
483
|
+
_readable_t._evs, _writable_t._evs, err = socket.select(_reading, _writing, timeout)
|
|
484
|
+
local r_evs, w_evs = _readable_t._evs, _writable_t._evs
|
|
485
|
+
|
|
486
|
+
if duration(now, last_cleansing) > WATCH_DOG_TIMEOUT then
|
|
487
|
+
last_cleansing = now
|
|
488
|
+
for k,v in pairs(_reading_log) do
|
|
489
|
+
if not r_evs[k] and duration(now, v) > WATCH_DOG_TIMEOUT then
|
|
490
|
+
_reading_log[k] = nil
|
|
491
|
+
r_evs[#r_evs + 1] = k
|
|
492
|
+
r_evs[k] = #r_evs
|
|
493
|
+
end
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
for k,v in pairs(_writing_log) do
|
|
497
|
+
if not w_evs[k] and duration(now, v) > WATCH_DOG_TIMEOUT then
|
|
498
|
+
_writing_log[k] = nil
|
|
499
|
+
w_evs[#w_evs + 1] = k
|
|
500
|
+
w_evs[k] = #w_evs
|
|
501
|
+
end
|
|
502
|
+
end
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
if err == "timeout" and #r_evs + #w_evs > 0 then
|
|
506
|
+
return nil
|
|
507
|
+
else
|
|
508
|
+
return err
|
|
509
|
+
end
|
|
510
|
+
end
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
-------------------------------------------------------------------------------
|
|
514
|
+
-- Dispatcher loop step.
|
|
515
|
+
-- Listen to client requests and handles them
|
|
516
|
+
-- Returns false if no data was handled (timeout), or true if there was data
|
|
517
|
+
-- handled (or nil + error message)
|
|
518
|
+
-------------------------------------------------------------------------------
|
|
519
|
+
function step(timeout)
|
|
520
|
+
local err = _select (timeout)
|
|
521
|
+
if err == "timeout" then return false end
|
|
522
|
+
|
|
523
|
+
if err then
|
|
524
|
+
error(err)
|
|
525
|
+
end
|
|
526
|
+
|
|
527
|
+
for tsk in tasks() do
|
|
528
|
+
for ev in tsk:events() do
|
|
529
|
+
tsk:tick (ev)
|
|
530
|
+
end
|
|
531
|
+
end
|
|
532
|
+
return true
|
|
533
|
+
end
|
|
534
|
+
|
|
535
|
+
-------------------------------------------------------------------------------
|
|
536
|
+
-- Dispatcher endless loop.
|
|
537
|
+
-- Listen to client requests and handles them forever
|
|
538
|
+
-------------------------------------------------------------------------------
|
|
539
|
+
function loop(timeout)
|
|
540
|
+
while true do
|
|
541
|
+
step(timeout)
|
|
542
|
+
end
|
|
543
|
+
end
|