/* * rhctl * * Copyright (C) 2009-2014 Christian Pointner * * This file is part of rhctl. * * rhctl 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. * * rhctl 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 rhctl. If not, see . */ #ifndef RHCTL_command_queue_h_INCLUDED #define RHCTL_command_queue_h_INCLUDED #include enum cmd_id_enum { SWITCH, CHANNEL, TYPE, MODE, STATUS, LOG, LISTEN }; typedef enum cmd_id_enum cmd_id_t; struct cmd_struct { int fd; cmd_id_t cmd; char* param; int sent; struct timeval tv_start; struct cmd_struct* next; }; typedef struct cmd_struct cmd_t; int cmd_push(cmd_t** first, int fd, cmd_id_t cmd, const char* param); void cmd_sent(cmd_t* cmd); int cmd_has_expired(cmd_t cmd); void cmd_pop(cmd_t** first); void cmd_clear(cmd_t** first); #endif