-- -- 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 -- Christian Pointner -- -- 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 . -- client_list = {} client_list.clients = {} function client_list:register(client) log.printf(log.INFO, "adding client: " .. client.name) table.insert(self.clients, client) end function client_list:unregister(client) for i, c in ipairs(self.clients) do if(c == client) then log.printf(log.INFO, "removing client: " .. client.name) client:cleanup() table.remove(self.clients, i) break end end end function client_list:unregister_by_module(module) local free_list = {} for i, c in ipairs(self.clients) do if(c.module_instance == module) then table.insert(free_list, 1, i) end end for _, i in ipairs(free_list) do log.printf(log.INFO, "removing client: " .. self.clients[i].name) self.clients[i]:cleanup() table.remove(self.clients, i) end end