#ifndef CONFIGM_H_ #define CONFIGM_H_ #include "rpc_common.h" #include "ipconfig.h" /* 类型定义 */ #define CONFIG_FROM_WEB 0x00000001 #define CONFIG_FROM_NETOPEER 0x00000010 #define CONFIG_FROM_RECOVER1 0x01000000 #define CONFIG_FROM_RECOVER2 0x02000000 /* IP CONFIG */ #define IPCONFIG_MODULE 0x00000001 /* config id define*/ #define IPCONFIG_V4 (uint64)((uint64)IPCONFIG_MODULE<<32|1) /* 1、配置ID,全局唯一,用于寻找对应的配置业务 2、配置源检查,全局唯一,用于寻找对应的配置业务, 从低位到高位,第一位表示WEB,后续配置扩展 3、是否配置恢复 4、是否是多实例 5、配置校验回调函数 6、配置处理接口 7、配置获取接口 8、配置全部获取接口 */ #define CONFIG_SERVICE_ARRAY \ { \ {\ IPCONFIG_V4, \ CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ FALSE, \ FALSE, \ ip_config_chk, \ ip_config_proc, \ ip_config_get, \ ip_config_get_all \ }\ } #define CM_CONFIG_ADD 1 #define CM_CONFIG_DEL 2 #define CM_CONFIG_SET 3 #define CM_CONFIG_GET 4 #define CM_CONFIG_GET_ALL 5 #define CM_BUFF_SIZE BUFFER_SIZE #define CONFIG_RECOVERY_DONE "/tmp/config_recovery" typedef struct _config_message config_msg_t; typedef struct _config_service config_service_t; typedef ret_code (*cm_config_chk)(uint source, uint config_type, pointer input, int input_len, pointer output, int *output_len); typedef ret_code (*cm_config_proc)(uint source, uint config_type, pointer input, int input_len, pointer output, int *output_len); typedef ret_code (*cm_config_get)(uint source, pointer input, int input_len, pointer output, int *output_len); typedef ret_code (*cm_config_get_all)(uint source, uint64 config_id, pointer output, short *single_len, int *output_len); /* 结构体定义 */ /* 配置消息 */ struct _config_message { uint64 config_id; /*配置ID*/ uint source; /*配置来源*/ uint config_type; /*配置类型:add,del,set*/ char config_buff[0]; /*配置数据缓存*/ }; /* 配置注册 */ struct _config_service { uint64 config_id; /* 配置ID,全局唯一,用于寻找对应的配置业务*/ uint config_src; /* 配置源检查,全局唯一,用于寻找对应的配置业务,从低位到高位,第一位表示web,后续配置扩展 */ boolean recovery; /* 配置恢复处理函数,如果为FALSE则不进行配置恢复 */ boolean multi_inst; /* 是否是多实例 */ cm_config_chk chk_callback; /* 配置校验回调函数 */ cm_config_proc proc_callback; /* 配置接口 */ cm_config_get get_callback; /* 获取配置接口 */ cm_config_get_all getall_callback; /* 获取所有配置接口 */ }; /* 函数声明 */ ret_code web_config_exec_sync(uint config_type, uint64 config_id, char* config_data, int config_len, char**output, int *output_len); ret_code web_config_exec_async(uint config_type, uint64 config_id, char* config_data, int config_len, rpc_callback callback, pointer data); #endif /* RPC_COMMON_H_ */