Feature cache client
This commit is contained in:
26
cache/src/tango_cache_transfer.cpp
vendored
26
cache/src/tango_cache_transfer.cpp
vendored
@@ -65,24 +65,24 @@ static size_t curl_put_once_send_cb(void *ptr, size_t size, size_t count, void *
|
||||
size_t len;
|
||||
struct tango_cache_ctx *ctx = (struct tango_cache_ctx *)userp;
|
||||
|
||||
if(size==0 || count==0 || ctx->response.len>=ctx->response.size)
|
||||
if(size==0 || count==0 || ctx->put.once_request.len>=ctx->put.once_request.size)
|
||||
{
|
||||
return 0; //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
len = ctx->response.size - ctx->response.len; //ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4>ij<EFBFBD><C4B3><EFBFBD>
|
||||
len = ctx->put.once_request.size - ctx->put.once_request.len; //ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4>ij<EFBFBD><C4B3><EFBFBD>
|
||||
if(len > size * count)
|
||||
{
|
||||
len = size * count;
|
||||
}
|
||||
|
||||
memcpy(ptr, ctx->response.buff + ctx->response.len, len);
|
||||
ctx->response.len += len;
|
||||
memcpy(ptr, ctx->put.once_request.buff + ctx->put.once_request.len, len);
|
||||
ctx->put.once_request.len += len;
|
||||
|
||||
if(ctx->response.len >= ctx->response.size)
|
||||
if(ctx->put.once_request.len >= ctx->put.once_request.size)
|
||||
{
|
||||
ctx->instance->statistic.memory_used -= ctx->response.size; //δʹ<CEB4><CAB9>cache buffer<65><72><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
||||
easy_string_destroy(&ctx->response);
|
||||
ctx->instance->statistic.memory_used -= ctx->put.once_request.size; //δʹ<CEB4><CAB9>cache buffer<65><72><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
||||
easy_string_destroy(&ctx->put.once_request);
|
||||
}
|
||||
return len;
|
||||
}
|
||||
@@ -532,17 +532,17 @@ int http_put_complete_part_data(struct tango_cache_ctx *ctx, enum PUT_MEMORY_COP
|
||||
|
||||
if(way == PUT_MEM_COPY)
|
||||
{
|
||||
ctx->response.buff = (char *)malloc(size);
|
||||
memcpy(ctx->response.buff, data, size);
|
||||
ctx->put.once_request.buff = (char *)malloc(size);
|
||||
memcpy(ctx->put.once_request.buff, data, size);
|
||||
}
|
||||
else
|
||||
{
|
||||
ctx->response.buff = (char *)data;
|
||||
ctx->put.once_request.buff = (char *)data;
|
||||
}
|
||||
ctx->response.size = size;
|
||||
ctx->response.len = 0;
|
||||
ctx->put.once_request.size = size;
|
||||
ctx->put.once_request.len = 0;
|
||||
curl_easy_setopt(ctx->curl, CURLOPT_UPLOAD, 1L);
|
||||
curl_easy_setopt(ctx->curl, CURLOPT_INFILESIZE, ctx->response.size);
|
||||
curl_easy_setopt(ctx->curl, CURLOPT_INFILESIZE, ctx->put.once_request.size);
|
||||
curl_easy_setopt(ctx->curl, CURLOPT_READFUNCTION, curl_put_once_send_cb);
|
||||
curl_easy_setopt(ctx->curl, CURLOPT_READDATA, ctx);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user