//////////////////////////////////////////////////////////////////////////////////// // // Copyright (c) Comets' Grp. of Kedong Corp 2008. All Rights Reserved. // // FileName : procconf.h // // Function : this class realize some basic functions for process managerment, // such as initiate process, report status of process, check status of process, // update status of process, get information of process // // Author : // // Date : // // Modify by : // // Mod Date : // //////////////////////////////////////////////////////////////////////////////////// #ifndef _PROCCONF_H #define _PROCCONF_H #include #include #include #include #include #include #include //#include #include #include "const.h" //for alarm ................................ struct MESS_BH { unsigned char mtype; int length; }; struct PROCESS_ALM { char context_name[MAX_STRING_LEN]; char app_name[MAX_STRING_LEN]; char proc_name[MAX_STRING_LEN]; unsigned char status; }; //for alarm end ............................. //for mmi.................................... const int MAX_BUFFER_LEN = 500; struct MESS_BLOCK { unsigned char num; char buffer[MAX_BUFFER_LEN]; }; struct MESS_PROC { char context_name[MAX_STRING_LEN]; char app_name[MAX_STRING_LEN]; char proc_name[MAX_STRING_LEN]; char status; }; //for mmi end ................................ const int DEFAULT_PERIOD = 3; const int COUNT_LIMIT = 2; const int START_DEFAULT_PERIOD = 60; const int START_COUNT_LIMIT = 5; const int APP_COUNT_LIMIT = 1; //process critical level //const int WST_CRITICAL = 1; // Shutdown and reboot workstation when failed //const int SYS_CRITICAL = 2; // Shutdown and reboot the system on the wst when failed //const int USER_CRITICAL = 3; // Shutdown and reboot the subsystem when failed //const int GENERAL = 4; // reboot the process const int CRUCIAL = 1; // crucial process const int GENERAL = 0; // general process extern int srv_init(char *service,int port); extern int Tcp_close(int sockfd); extern int Tcp_read(int fd,char *ptr,int nbytes); extern int Tcp_write(int fd,char *ptr,int nbytes); extern int srv_accept(int fd,struct sockaddr *cli_addr,int *clilen); extern int client_tcp_open(char *host,char *service,int port); typedef struct { char context_name[MAX_STRING_LEN]; char app_name[MAX_STRING_LEN]; char proc_name[MAX_STRING_LEN]; pid_t proc_pid; }PROC_ADM_INFO; //*************************************************************** // structure name : PROC_INFO // function : store process informatin // author : // date : // modify by : // modification : // mod date : //*************************************************************** typedef struct { int position; char node_name[MAX_STRING_LEN]; char context_name[MAX_STRING_LEN]; char app_name[MAX_STRING_LEN]; char proc_name[MAX_STRING_LEN]; unsigned char active_flag; unsigned char master_flag; time_t startup_time; time_t refresh_time; short refresh_peri; unsigned char monitor_type; pid_t proc_pid; unsigned char auto_start; unsigned char act_timer; unsigned char start_timer; unsigned char critical_level; char exefile_path[MAX_EXECMD_LEN]; }PROC_INFO; //*************************************************************** // structure name : APP_INFO // function : store application informatin // author : // date : // modify by : // modification : // mod date : //*************************************************************** typedef struct { int position; char context_name[MAX_STRING_LEN]; int context_id; char app_name[MAX_STRING_LEN]; int app_id; unsigned char act_timer; unsigned char active_flag; }APP_INFO; typedef struct { int no_proc; int semdes_cfg; PROC_INFO proc[MAX_LOCAL_PROCESS]; APP_INFO app[MAX_LOCAL_APP]; }PROCCFG; class proc_invocation { public: int m_init; PROCCFG *proccfg_p; public: proc_invocation(); ~proc_invocation(); int conf_create(); //int check_proc_status(); //int update_rtdb(); //int kill_proc(pid_t pid); //int start_proc(char *cmdline); //int send_alarm(char *context_name, char *app_name, char *proc_name, unsigned char status); //int update_proc_status(char *context_name, char *app_name, char *proc_name, char status); //int proc_init(char *context_name, char *app_name, char *proc_name, int critical_level);//exefile_path,auto_start int proc_init(char *context_name, char *app_name, char *proc_name); int proc_report(int pos, char status, int intertime=3); int proc_exit(int proc_pos); int get_pos(char *context_name, char *app_name, char *proc_name); int is_proc_exist(char *context_name, char *app_name, char *proc_name); int conf_map(); int get_procinfo(int position, PROC_ADM_INFO *p_info); int get_active_pid(int &num, int *p_pidlist); int is_proc_run(pid_t pid); int is_proc_run(char *context_name, char *app_name, char *proc_name); }; #endif