#ifndef __DORIS_CONSUMER_CLIENT_H__ #define __DORIS_CONSUMER_CLIENT_H__ #include #include enum FSSTAT_DORIS_FILED_ITEMS { DRS_FS_FILED_REQ_FAIL=0, DRS_FS_FILED_REQ_META, DRS_FS_FILED_RES_META, DRS_FS_FILED_RES_NOMETA, DRS_FS_FILED_REQ_FILES, DRS_FS_FILED_RES_FILES, DRS_FS_FILED_RES_FRAGS, DRS_FS_FILED_RES_FRAGERR, DRS_FS_FILED_RES_BYTES, DRS_FS_FILED_RES_VERERR, DRS_FS_FILED_BACKUP1_REQ, DRS_FS_FILED_BACKUP2_REQ, FSSTAT_DORIS_FILED_NUM, }; enum FSSTAT_DORIS_STATUS_ITEMS { DRS_FS_STAT_MST_CNN_SRV=0, DRS_FS_STAT_MST_FAIL_SRV, DRS_FS_STAT_BCK1_CNN_SRV, DRS_FS_STAT_BCK1_FAIL_SRV, DRS_FS_STAT_BCK2_CNN_SRV, DRS_FS_STAT_BCK2_FAIL_SRV, DRS_FS_STAT_MEMORY_USED, DRS_FS_STAT_HTTP_SESSIONS, FSSTAT_DORIS_STATUS_NUM, }; struct doris_csum_statistics { long long field[FSSTAT_DORIS_FILED_NUM]; long long status[FSSTAT_DORIS_STATUS_NUM]; }; struct doris_arguments { char bizname[32]; int64_t current_version; //当前已获取完毕的最新版本号,将从它下一个版本取配置 int32_t judian_id; }; struct tablemeta { const char *tablename; //表名,行列式maat适配;非行列式为文件名 const char *filename; //落地时要求的文件名 const char *userregion; size_t size; u_int32_t cfgnum; }; struct doris_csum_param; struct doris_csum_instance; struct doris_callbacks { void *userdata; void (*version_start)(struct doris_csum_instance *instance, cJSON *meta, void *userdata); //meta在整个版本声明周期内都有效 void (*cfgfile_start)(struct doris_csum_instance *instance, const struct tablemeta *meta, const char *unused, void *userdata); void (*cfgfile_update)(struct doris_csum_instance *instance, const char *data, size_t len, void *userdata); void (*cfgfile_finish)(struct doris_csum_instance *instance, const char *md5, void *userdata); void (*version_error)(struct doris_csum_instance *instance, void *userdata); //下载文件失败,该版本需要回滚 void (*version_finish)(struct doris_csum_instance *instance, void *userdata); void (*version_updated)(struct doris_csum_instance *instance, void *userdata); //暂时没有新配置 }; struct doris_csum_param *doris_csum_parameter_new(const char *confile, struct event_base *manage_evbase, void *runtimelog); void doris_csum_parameter_destroy(struct doris_csum_param *param); u_int32_t doris_csum_param_get_refernces(struct doris_csum_param *param); struct doris_csum_instance *doris_csum_instance_new(struct doris_csum_param *param, struct event_base *worker_evbase, struct doris_callbacks *cbs, struct doris_arguments *args, void *runtimelog); struct doris_csum_param *doris_csum_instance_get_param(struct doris_csum_instance *instance); void doris_csum_instance_destroy(struct doris_csum_instance *instance); #endif