diff options
Diffstat (limited to 'agni.c')
-rw-r--r-- | agni.c | 99 |
1 files changed, 23 insertions, 76 deletions
@@ -18,6 +18,7 @@ #include <mqueue.h> #include "config_servers.h" +#include "config_cmds.h" #include "darray.h" #include "buf.h" @@ -39,44 +40,6 @@ nothing else //HACK extern int __irc_buf_drain_io(irc_buf *ib); -void *cmd_pong(void *data) -{ - char *param = (char *)data; - char *ret = NULL; - - printf("PONG\n"); - - ret = alloc_new_str("PONG"); - - return ret; -} - -void *cmd_uptime(void *data) -{ - char *param = (char *)data; - char *ret = NULL; - - printf("UPTIME\n"); - - ret = alloc_new_str("UpTime is infinite\n"); - - return ret; -} - -void *cmd_date(void *data) -{ - char *param = (char *)data; - char *ret = NULL; - - printf("DATE\n"); - - ret = alloc_new_str("I dont whant to date with you\n"); - - return ret; -} - - - /* Wrap call back, to manage how going be executed callback. Manage input and output params for callback. @@ -401,6 +364,7 @@ int th_start_client(void *data) //for now just remove command without checkings its state tbl_qcmd_del_by_id(qtbl, cmd_id); //no error check + //NOT BEST PLACE WHERE TO CALL THIS FUNCTION //should be added proper command state check and so on tbl_qcmd_mng_states(qtbl); // This should be runed regulary } @@ -602,7 +566,7 @@ int th_event_manager(void *data) struct mq_attr out_attr, *ptr_out_attr=&out_attr; //execution and command table generation - tble_exec *ecmd = NULL; + //tble_exec *ecmd = NULL; tbl_exec *etbl = NULL; tble_qcmd *qcmd = NULL; tbl_qcmd *qtbl = NULL; @@ -614,49 +578,32 @@ int th_event_manager(void *data) PERM(); } - ecmd = tbl_exec_c(); - if (ecmd == NULL) + //load predefined/precompiled command list { - PERM(); - } - ecmd->id = uniq_id(); - ecmd->name = alloc_new_str("local-executor"); - ecmd->cmd = alloc_new_str("PING"); - ecmd->callback = cmd_pong; + single_cmd_def *single_cmd = confgi_cmd_list; - if (-1 == tbl_exec_add(etbl, ecmd)) - { - PERM(); - } + while ((single_cmd!=NULL)&&(single_cmd->name!=NULL)) + { + tble_exec *ecmd = NULL; - ecmd = tbl_exec_c(); - if (ecmd == NULL) - { - PERM(); - } - ecmd->id = uniq_id(); - ecmd->name = alloc_new_str("local-executor"); - ecmd->cmd = alloc_new_str("DATE"); - ecmd->callback = cmd_date; + ecmd = tbl_exec_c(); + if (ecmd == NULL) + { + PERM(); + } - if (-1 == tbl_exec_add(etbl, ecmd)) - { - PERM(); - } + ecmd->id = uniq_id(); + ecmd->name = alloc_new_str("local-executor"); + ecmd->cmd = alloc_new_str(single_cmd->name); + ecmd->callback = single_cmd->callback; - ecmd = tbl_exec_c(); - if (ecmd == NULL) - { - PERM(); - } - ecmd->id = uniq_id(); - ecmd->name = alloc_new_str("local-executor"); - ecmd->cmd = alloc_new_str("UPTIME"); - ecmd->callback = cmd_uptime; + if (-1 == tbl_exec_add(etbl, ecmd)) + { + PERM(); + } - if (-1 == tbl_exec_add(etbl, ecmd)) - { - PERM(); + single_cmd++; + } } tbl_exec_print_tbl(etbl, TBL_PF_EXEC_ALL); |