业务层适配缓存上传取消。

This commit is contained in:
zhengchao
2018-11-25 14:14:42 +08:00
parent b53107e298
commit a4bffe353b

View File

@@ -43,6 +43,7 @@ enum cache_stat_field
STAT_CACHE_UPLOAD_OVERRIDE,
STAT_CACHE_UPLOAD_FORBIDEN,
STAT_CACHE_UPLOAD_ABANDON,
STAT_CAHCE_UPLOAD_CANCEL,
STAT_CACHE_UPLOAD_ERR,
STAT_CACHE_UPLOAD_BYTES,
STAT_CACHE_UPLOADING,
@@ -126,6 +127,8 @@ struct cache_update_context
{
struct cache_handle* ref_cache_handle;
struct tango_cache_ctx * write_ctx;
size_t content_len;
size_t uploaded_len;
};
static void web_cache_stat_cb(evutil_socket_t fd, short what, void * arg)
{
@@ -233,6 +236,8 @@ const char* statsd_server_ip, int statsd_server_port, const char*histogram_bins)
set_stat_spec(&spec[STAT_CACHE_UPLOAD_OVERRIDE], "or_put",FS_STYLE_FIELD, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_UPLOAD_FORBIDEN], "put_forbid",FS_STYLE_FIELD, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_UPLOAD_ABANDON], "put_abandon",FS_STYLE_FIELD, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_UPLOADING], "put_cancel",FS_STYLE_FIELD, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_UPLOAD_ERR], "put_err",FS_STYLE_STATUS, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_UPLOAD_BYTES], "put(MB)",FS_STYLE_FIELD, FS_CALC_CURRENT);
set_stat_spec(&spec[STAT_CACHE_UPLOADING], "putting",FS_STYLE_STATUS, FS_CALC_CURRENT);
@@ -1323,19 +1328,30 @@ struct cache_update_context* web_cache_update_start(struct cache_handle* handle,
update_ctx=ALLOC(struct cache_update_context, 1);
update_ctx->write_ctx=write_ctx;
update_ctx->ref_cache_handle=handle;
update_ctx->content_len=content_len;
update_ctx->uploaded_len=0;
return update_ctx;
}
void web_cache_update(struct cache_update_context* ctx, const unsigned char * body_frag, size_t frag_size)
{
tango_cache_update_frag_data(ctx->write_ctx, (const char*)body_frag, frag_size);
ctx->uploaded_len+=frag_size;
ATOMIC_ADD(&(ctx->ref_cache_handle->stat_val[STAT_CACHE_UPLOAD_BYTES]), frag_size);
return;
}
void web_cache_update_end(struct cache_update_context* ctx)
{
tango_cache_update_end(ctx->write_ctx);
if(ctx->uploaded_len==ctx->content_len)
{
tango_cache_update_end(ctx->write_ctx);
}
else
{
tango_cache_update_cancel(ctx->write_ctx);
ATOMIC_INC(&(ctx->ref_cache_handle->stat_val[STAT_CACHE_UPLOADING]));
}
ATOMIC_DEC(&(ctx->ref_cache_handle->stat_val[STAT_CACHE_UPLOADING]));
ctx->write_ctx = NULL;