完善日志系统,修复读取配置文件时的内存泄漏,初步添加熔断机制与指数退避机制
This commit is contained in:
@ -9,12 +9,24 @@
|
||||
#include "interpreter.h"
|
||||
#include "tools/pkgmanager/pkginstall.h"
|
||||
|
||||
int inter_in_log(const char *log,log_manager *manager)
|
||||
{
|
||||
if(strlen(log)>1024)
|
||||
return -1;
|
||||
logs* logss = (logs*)malloc(sizeof(logs));
|
||||
memcpy(logss->log,log,strlen(log));
|
||||
manager->in_log(logss,manager);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int init_interpreter(Cmd *cmd_dic,ctx *self,int fifo[2])
|
||||
int init_interpreter(Cmd *cmd_dic,ctx *self,int fifo[2],log_manager *log_manager)
|
||||
{
|
||||
printf("SYS:prepare env\n");
|
||||
inter_in_log("SYS:prepare env\n",log_manager);
|
||||
printf("SYS:env ready\n");
|
||||
inter_in_log("SYS:env ready\n",log_manager);
|
||||
printf("SYS:loading cmd_dic\n");
|
||||
inter_in_log("SYS:loading cmd_dic\n",log_manager);
|
||||
sprintf(cmd_dic[0].name, "pkginstall");
|
||||
cmd_dic[0].cmd = INSTALL;
|
||||
|
||||
@ -25,6 +37,7 @@ int init_interpreter(Cmd *cmd_dic,ctx *self,int fifo[2])
|
||||
cmd_dic[2].cmd = QUIT;
|
||||
|
||||
printf("SYS:cmd_dir load complite\n");
|
||||
inter_in_log("SYS:cmd_dir load complite\n",log_manager);
|
||||
|
||||
for(int i =0;i<10;i++)
|
||||
{
|
||||
@ -32,8 +45,9 @@ int init_interpreter(Cmd *cmd_dic,ctx *self,int fifo[2])
|
||||
}
|
||||
self->arg = NULL;
|
||||
printf("SYS:Creating ctl fifo\n");
|
||||
inter_in_log("SYS:Creating ctl fifo\n",log_manager);
|
||||
memcpy(self->fifofd,fifo,2*sizeof(int));
|
||||
|
||||
self->log_manager = log_manager;
|
||||
}
|
||||
|
||||
int get_args(ctx *self)
|
||||
@ -57,6 +71,7 @@ int get_args(ctx *self)
|
||||
arg->next = (args*)malloc(sizeof(args));
|
||||
if(arg->next == NULL){
|
||||
perror("ERROR:fail to get mem");
|
||||
inter_in_log("ERROR:fail to get mem\n",self->log_manager);
|
||||
return -1;
|
||||
}
|
||||
arg = arg->next;
|
||||
@ -131,25 +146,31 @@ int exce(const int command,ctx *all_ctx)
|
||||
{
|
||||
case BAD_INPUT:
|
||||
printf("SYS:bad input,try again\n");
|
||||
inter_in_log("SYS:bad input,try again\n",all_ctx->log_manager);
|
||||
return BAD_INPUT;
|
||||
|
||||
case INSTALL:
|
||||
if(all_ctx->arg == NULL){
|
||||
printf("SYS:Missing args\n");
|
||||
inter_in_log("SYS:Missng args\n",all_ctx->log_manager);
|
||||
return 1;
|
||||
}
|
||||
printf("SYS:init pkgmanager\n");
|
||||
inter_in_log("SYS:init pkgmanager\n",all_ctx->log_manager);
|
||||
pkger *manager = init_pkginstaller();
|
||||
printf("SYS:installing\n");
|
||||
inter_in_log("SYS:installing\n",all_ctx->log_manager);
|
||||
manager->packup(manager);
|
||||
return 1;
|
||||
|
||||
case RUN:
|
||||
printf("SYS:runing\n");
|
||||
inter_in_log("SYS:running\n",all_ctx->log_manager);
|
||||
return 1;
|
||||
|
||||
case QUIT:
|
||||
printf("SYS:shuting down\n");
|
||||
inter_in_log("SYS:shuting down\n",all_ctx->log_manager);
|
||||
all_ctx->statue = -1;
|
||||
write(all_ctx->fifofd[1],"q",1);
|
||||
return 1;
|
||||
|
||||
@ -6,6 +6,8 @@
|
||||
#define SIG_MOD 0
|
||||
#define FILE_MOD 1
|
||||
|
||||
#include "tools/log/log.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char name[256];
|
||||
@ -38,11 +40,12 @@ typedef struct ctx
|
||||
char command[MAX_BUF];//当前行缓存
|
||||
int statue;//当前状态
|
||||
int fifofd[2];
|
||||
log_manager *log_manager;
|
||||
}ctx;//上下文管理
|
||||
|
||||
|
||||
int interpret(int mod, ctx *all_ctx,Cmd *cmd_dic);
|
||||
int init_interpreter(Cmd *cmd_dic,ctx *self,int fifo[2]);
|
||||
int init_interpreter(Cmd *cmd_dic,ctx *self,int fifo[2],log_manager *log_manager);
|
||||
|
||||
#define ARG_LENGTH 256
|
||||
|
||||
|
||||
Reference in New Issue
Block a user