业务层适配缓存上传取消。
This commit is contained in:
@@ -43,6 +43,7 @@ enum cache_stat_field
|
|||||||
STAT_CACHE_UPLOAD_OVERRIDE,
|
STAT_CACHE_UPLOAD_OVERRIDE,
|
||||||
STAT_CACHE_UPLOAD_FORBIDEN,
|
STAT_CACHE_UPLOAD_FORBIDEN,
|
||||||
STAT_CACHE_UPLOAD_ABANDON,
|
STAT_CACHE_UPLOAD_ABANDON,
|
||||||
|
STAT_CAHCE_UPLOAD_CANCEL,
|
||||||
STAT_CACHE_UPLOAD_ERR,
|
STAT_CACHE_UPLOAD_ERR,
|
||||||
STAT_CACHE_UPLOAD_BYTES,
|
STAT_CACHE_UPLOAD_BYTES,
|
||||||
STAT_CACHE_UPLOADING,
|
STAT_CACHE_UPLOADING,
|
||||||
@@ -126,6 +127,8 @@ struct cache_update_context
|
|||||||
{
|
{
|
||||||
struct cache_handle* ref_cache_handle;
|
struct cache_handle* ref_cache_handle;
|
||||||
struct tango_cache_ctx * write_ctx;
|
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)
|
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_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_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_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_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_UPLOAD_BYTES], "put(MB)",FS_STYLE_FIELD, FS_CALC_CURRENT);
|
||||||
set_stat_spec(&spec[STAT_CACHE_UPLOADING], "putting",FS_STYLE_STATUS, 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=ALLOC(struct cache_update_context, 1);
|
||||||
update_ctx->write_ctx=write_ctx;
|
update_ctx->write_ctx=write_ctx;
|
||||||
update_ctx->ref_cache_handle=handle;
|
update_ctx->ref_cache_handle=handle;
|
||||||
|
update_ctx->content_len=content_len;
|
||||||
|
update_ctx->uploaded_len=0;
|
||||||
return update_ctx;
|
return update_ctx;
|
||||||
|
|
||||||
}
|
}
|
||||||
void web_cache_update(struct cache_update_context* ctx, const unsigned char * body_frag, size_t frag_size)
|
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);
|
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);
|
ATOMIC_ADD(&(ctx->ref_cache_handle->stat_val[STAT_CACHE_UPLOAD_BYTES]), frag_size);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
void web_cache_update_end(struct cache_update_context* ctx)
|
void web_cache_update_end(struct cache_update_context* ctx)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if(ctx->uploaded_len==ctx->content_len)
|
||||||
|
{
|
||||||
tango_cache_update_end(ctx->write_ctx);
|
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]));
|
ATOMIC_DEC(&(ctx->ref_cache_handle->stat_val[STAT_CACHE_UPLOADING]));
|
||||||
|
|
||||||
ctx->write_ctx = NULL;
|
ctx->write_ctx = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user