#ifndef __DORIS_PRODUCER_CLIENT_H__ #define __DORIS_PRODUCER_CLIENT_H__ enum FSSTAT_DRS_PROD_FILED_ITEMS { DRS_FSPRD_FILED_VERSTART=0, DRS_FSPRD_FILED_VEREND, DRS_FSPRD_FILED_VERCANCEL, DRS_FSPRD_FILED_FILEFRAG, DRS_FSPRD_FILED_FILEONCE, FSSTAT_DORIS_PRD_FILED_NUM, }; enum FSSTAT_DRS_PROD_STATUS_ITEMS { DRS_FSPRD_STAT_CNNED_SERVERS=0, DRS_FSPRD_STAT_FAILED_SERVERS, DRS_FSPRD_STAT_MEMORY_USED, DRS_FSPRD_STAT_HTTP_SESSIONS, DRS_FSPRD_STAT_REQ_SESSIONS, FSSTAT_DORIS_PRD_STATUS_NUM, }; struct doris_prod_statistics { long long field[FSSTAT_DORIS_PRD_FILED_NUM]; long long status[FSSTAT_DORIS_PRD_STATUS_NUM]; }; struct doris_prod_param; struct doris_prod_instance; struct doris_upload_ctx; struct doris_prod_param *doris_prod_parameter_new(const char *confile, struct event_base *manage_evbase, void *runtimelog); struct doris_prod_instance *doris_prod_instance_new(struct doris_prod_param *param, struct event_base *worker_evbase, void *runtimelog); enum PROD_VERSTART_RES { VERSTART_RES_OK=0, VERSTART_RES_BUSY, //响应码300,代表server有已完成start的在途版本 VERSTART_RES_ERROR, //取得了响应,但是响应码400,要么非法请求,要么有未完成start的版本; VERSTART_CURL_ERROR, //curl原因未正常取得响应 }; /*cfgtype: 1-全量,2-增量*/ struct doris_upload_ctx *doris_prod_upload_ctx_new(struct doris_prod_instance *instance,const char *business, int32_t cfgtype); void doris_prod_upload_ctx_destroy(struct doris_upload_ctx *ctx); int32_t doris_prod_version_start(struct doris_upload_ctx *ctx); int32_t doris_prod_version_start_with_cb(struct doris_upload_ctx *ctx, void (*verstart_cb)(enum PROD_VERSTART_RES result, const char *body, void *userdata), void *userdata); enum PROD_VEROP_RES { VERSIONOP_RES_OK=0, VERSIONOP_RES_ERROR, VERSIONOP_CURL_ERROR, }; struct table_meta { const char *tablename; //表名,行列式maat适配;非行列式为文件名 const char *filename; //落地时要求的文件名 const char *userregion; const char *md5; u_int32_t cfgnum; }; int32_t doris_prod_upload_once_with_cb(struct doris_upload_ctx *ctx, char *data, size_t size, struct table_meta *meta, void (*upfrag_cb)(enum PROD_VEROP_RES result, void *userdata), void *userdata); int32_t doris_prod_upload_frag_with_cb(struct doris_upload_ctx *ctx, char *data, size_t size, size_t offset, bool last, struct table_meta *meta, void (*upfrag_cb)(enum PROD_VEROP_RES result, void *userdata), void *userdata); int32_t doris_prod_version_end(struct doris_upload_ctx *ctx, void (*verend_cb)(enum PROD_VEROP_RES result, int64_t version, void *userdata), void *userdata); int32_t doris_prod_version_cancel(struct doris_upload_ctx *ctx, void (*vercancel_cb)(enum PROD_VEROP_RES result, void *userdata), void *userdata); #endif