diff options
Diffstat (limited to 'src/dispatch_tables.lua')
-rw-r--r-- | src/dispatch_tables.lua | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/dispatch_tables.lua b/src/dispatch_tables.lua new file mode 100644 index 0000000..768e33f --- /dev/null +++ b/src/dispatch_tables.lua @@ -0,0 +1,57 @@ +-- +-- gcsd +-- +-- gcsd the generic command sequencer daemon can be used to serialize +-- commands sent over various paralell communication channels to a +-- single command output. It can be seen as a multiplexer for any +-- kind of communication between a single resource and various clients +-- which want to submit commands to it or query information from it. +-- gcsd is written in C and Lua. The goal is to provide an easy to +-- understand high level API based on Lua which can be used to +-- implement the business logic of the so formed multiplexer daemon. +-- +-- +-- Copyright (C) 2009-2010 Markus Grueneis <gimpf@spreadspace.org> +-- Christian Pointner <equinox@spreadspace.org> +-- +-- This file is part of gcsd. +-- +-- gcsd is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- any later version. +-- +-- gcsd is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with gcsd. If not, see <http://www.gnu.org/licenses/>. +-- + +dispatch_tables = {} + +function dispatch_tables:load_handler_tables_file(filename) + local defines = require('defines') + if (type(filename) ~= "nil") then + if (type(filename) ~= "string") then + log.printf(log.ERROR, "filename must be of type 'string' and denote a valid path") + return defines.KILL_DAEMON + end + local chunk, err = loadfile(filename) + if (not chunk) then + log.printf(log.ERROR, "failed to load dispatch table: %s", err) + return defines.KILL_DAEMON + end + commands, responses = chunk() + if commands then + command_table:register_handler_table(commands) + end + if responses then + response_table:register_handler_table(responses) + end + log.printf(log.NOTICE, "loaded dispatch tables from file %s", filename) + end + return defines.OK +end |