From ad93b4ed6f97243f8ce6c5ea9cbc1487ec96527f Mon Sep 17 00:00:00 2001 From: zhangchengwei Date: Fri, 28 Sep 2018 15:16:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=97=B6=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E7=9A=84=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cache/cache_evbase_client.cpp | 16 ++++++++-------- cache/include/cache_evbase_client.h | 6 +++--- cache/include/tango_cache_client.h | 8 ++++---- cache/pangu_tango_cache.a | Bin 0 -> 228776 bytes cache/tango_cache_client.cpp | 19 +++++++++++-------- cache/tango_cache_client_in.h | 1 + cache/tango_cache_transfer.cpp | 16 ++++++++-------- cache/test_demo/cache_evbase_test.cpp | 2 +- cache/test_demo/tango_cache_test.c | 2 +- 9 files changed, 37 insertions(+), 33 deletions(-) create mode 100644 cache/pangu_tango_cache.a diff --git a/cache/cache_evbase_client.cpp b/cache/cache_evbase_client.cpp index 675a169..c4e68c4 100644 --- a/cache/cache_evbase_client.cpp +++ b/cache/cache_evbase_client.cpp @@ -57,9 +57,9 @@ struct tango_cache_result *cache_evbase_read_result(void *promise_result) return tango_cache_read_result(promise_result); } -const char *cache_evbase_get_object_key(struct cache_evbase_ctx *ctx_asyn) +void cache_evbase_get_object_path(const struct cache_evbase_ctx *ctx_asyn, char *path, size_t pathsize) { - return tango_cache_get_object_key(ctx_asyn->ctx); + tango_cache_get_object_path(ctx_asyn->ctx, path, pathsize); } static int create_notification_pipe(evutil_socket_t sv[2]) @@ -344,7 +344,7 @@ struct cache_evbase_ctx *cache_evbase_update_start(struct cache_evbase_instance } int cache_evbase_upload_once_data(struct cache_evbase_instance *instance, struct future* future, - enum PUT_MEMORY_COPY_WAY way, const char *data, size_t size, struct tango_cache_meta *meta, char *objectkey, size_t keysize) + enum PUT_MEMORY_COPY_WAY way, const char *data, size_t size, struct tango_cache_meta *meta, char *path, size_t pathsize) { struct cache_evbase_ctx *ctx_asyn; struct tango_cache_ctx *ctx; @@ -355,9 +355,9 @@ int cache_evbase_upload_once_data(struct cache_evbase_instance *instance, struct { return -1; } - if(objectkey != NULL) + if(path != NULL) { - snprintf(objectkey, keysize, "%s", ctx->object_key); + snprintf(path, pathsize, "http://%s/%s/%s", ctx->hostaddr, instance->instance->bucketname, ctx->object_key); } ctx_asyn = (struct cache_evbase_ctx *)calloc(1, sizeof(struct cache_evbase_ctx)); @@ -390,7 +390,7 @@ int cache_evbase_upload_once_data(struct cache_evbase_instance *instance, struct } int cache_evbase_upload_once_evbuf(struct cache_evbase_instance *instance, struct future* future, - struct evbuffer *evbuf, struct tango_cache_meta *meta, char *objectkey, size_t keysize) + struct evbuffer *evbuf, struct tango_cache_meta *meta, char *path, size_t pathsize) { struct cache_evbase_ctx *ctx_asyn; struct tango_cache_ctx *ctx; @@ -401,9 +401,9 @@ int cache_evbase_upload_once_evbuf(struct cache_evbase_instance *instance, struc { return -1; } - if(objectkey != NULL) + if(path != NULL) { - snprintf(objectkey, keysize, "%s", ctx->object_key); + snprintf(path, pathsize, "http://%s/%s/%s", ctx->hostaddr, instance->instance->bucketname, ctx->object_key); } ctx_asyn = (struct cache_evbase_ctx *)calloc(1, sizeof(struct cache_evbase_ctx)); diff --git a/cache/include/cache_evbase_client.h b/cache/include/cache_evbase_client.h index 83d0534..01bbca4 100644 --- a/cache/include/cache_evbase_client.h +++ b/cache/include/cache_evbase_client.h @@ -41,11 +41,11 @@ int cache_evbase_delete_object(struct cache_evbase_instance *instance, struct fu int cache_evbase_upload_once_data(struct cache_evbase_instance *instance, struct future* future, enum PUT_MEMORY_COPY_WAY way, const char *data, size_t size, struct tango_cache_meta *meta, - char *objectkey, size_t keysize); + char *path, size_t pathsize); int cache_evbase_upload_once_evbuf(struct cache_evbase_instance *instance, struct future* future, struct evbuffer *evbuf, struct tango_cache_meta *meta, - char *objectkey, size_t keysize); + char *path, size_t pathsize); //流式上传接口 struct cache_evbase_ctx *cache_evbase_update_start(struct cache_evbase_instance *instance, struct future* future, struct tango_cache_meta *meta); @@ -53,7 +53,7 @@ int cache_evbase_update_frag_data(struct cache_evbase_ctx *ctx_asyn, enum PUT_ME int cache_evbase_update_frag_evbuf(struct cache_evbase_ctx *ctx_asyn, struct evbuffer *evbuf); void cache_evbase_update_end(struct cache_evbase_ctx *ctx_asyn); -const char *cache_evbase_get_object_key(struct cache_evbase_ctx *ctx_asyn); +void cache_evbase_get_object_path(const struct cache_evbase_ctx *ctx, char *path, size_t pathsize); #endif diff --git a/cache/include/tango_cache_client.h b/cache/include/tango_cache_client.h index 218332b..bcd2f63 100644 --- a/cache/include/tango_cache_client.h +++ b/cache/include/tango_cache_client.h @@ -113,16 +113,16 @@ int tango_cache_delete_object(struct tango_cache_instance *instance, struct futu */ /*完整一次上传API*/ -//若objectkey不为空,则输出对象的KEY,当CACHE_OBJECT_KEY_HASH_SWITCH=1开启对文件名哈希时有用; +//若path不为空,则输出对象的存储路径 //返回值: 0-成功;<0失败;下同 int tango_cache_upload_once_data(struct tango_cache_instance *instance, struct future* future, enum PUT_MEMORY_COPY_WAY way, const char *data, size_t size, struct tango_cache_meta *meta, - char *objectkey, size_t keysize); + char *path, size_t pathsize); int tango_cache_upload_once_evbuf(struct tango_cache_instance *instance, struct future* future, enum EVBUFFER_COPY_WAY way, struct evbuffer *evbuf, struct tango_cache_meta *meta, - char *objectkey, size_t keysize); + char *path, size_t pathsize); /*流式上传API*/ //返回值: 若为NULL则表示创建失败,调用tango_cache_ctx_error查看错误码是否是CACHE_OUTOF_MEMORY(正常情况下是); struct tango_cache_ctx *tango_cache_update_start(struct tango_cache_instance *instance, struct future* future, struct tango_cache_meta *meta); @@ -132,7 +132,7 @@ int tango_cache_update_frag_evbuf(struct tango_cache_ctx *ctx, enum EVBUFFER_COP void tango_cache_update_end(struct tango_cache_ctx *ctx); //获取对象key值;当CACHE_OBJECT_KEY_HASH_SWITCH=1开启对URL/文件名哈希时有用 -const char *tango_cache_get_object_key(struct tango_cache_ctx *ctx); +void tango_cache_get_object_path(const struct tango_cache_ctx *ctx, char *path, size_t pathsize); #endif diff --git a/cache/pangu_tango_cache.a b/cache/pangu_tango_cache.a new file mode 100644 index 0000000000000000000000000000000000000000..39442a1eb2593d6df94787edc92c1bb1255efd90 GIT binary patch literal 228776 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

YYxvDoF1Mtmjy09NqFAJjZ?GWBef?H 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 literal 0 HcmV?d00001 diff --git a/cache/tango_cache_client.cpp b/cache/tango_cache_client.cpp index 3b7317b..3e76f64 100644 --- a/cache/tango_cache_client.cpp +++ b/cache/tango_cache_client.cpp @@ -63,9 +63,9 @@ struct tango_cache_result *tango_cache_read_result(void *promise_result) return (struct tango_cache_result *)promise_result; } -const char *tango_cache_get_object_key(struct tango_cache_ctx *ctx) +void tango_cache_get_object_path(const struct tango_cache_ctx *ctx, char *path, size_t pathsize) { - return ctx->object_key; + snprintf(path, pathsize, "http://%s/%s/%s", ctx->hostaddr, ctx->instance->bucketname, ctx->object_key); } static inline void update_statistics(enum CACHE_REQUEST_METHOD method, bool fail_state, enum CACHE_ERR_CODE error_code, struct cache_statistics *statistic) @@ -262,6 +262,7 @@ struct tango_cache_ctx *tango_cache_update_prepare(struct tango_cache_instance * { snprintf(ctx->object_key, 256, "%s", meta->url); } + sprintf(ctx->hostaddr, "%s", instance->minio_hostlist); //Expires字段,用于缓存内部判定缓存是否超时 now = time(NULL); @@ -319,7 +320,7 @@ struct tango_cache_ctx *tango_cache_update_start(struct tango_cache_instance *in } int tango_cache_upload_once_data(struct tango_cache_instance *instance, struct future* future, - enum PUT_MEMORY_COPY_WAY way, const char *data, size_t size, struct tango_cache_meta *meta, char *objectkey, size_t keysize) + enum PUT_MEMORY_COPY_WAY way, const char *data, size_t size, struct tango_cache_meta *meta, char *path, size_t pathsize) { struct tango_cache_ctx *ctx; @@ -328,16 +329,16 @@ int tango_cache_upload_once_data(struct tango_cache_instance *instance, struct f { return -1; } - if(objectkey != NULL) + if(path != NULL) { - snprintf(objectkey, keysize, "%s", ctx->object_key); + snprintf(path, pathsize, "http://%s/%s/%s", ctx->hostaddr, instance->bucketname, ctx->object_key); } return tango_cache_upload_once_start_data(ctx, way, data, size); } int tango_cache_upload_once_evbuf(struct tango_cache_instance *instance, struct future* future, - enum EVBUFFER_COPY_WAY way, struct evbuffer *evbuf, struct tango_cache_meta *meta, char *objectkey, size_t keysize) + enum EVBUFFER_COPY_WAY way, struct evbuffer *evbuf, struct tango_cache_meta *meta, char *path, size_t pathsize) { struct tango_cache_ctx *ctx; @@ -346,9 +347,9 @@ int tango_cache_upload_once_evbuf(struct tango_cache_instance *instance, struct { return -1; } - if(objectkey != NULL) + if(path != NULL) { - snprintf(objectkey, keysize, "%s", ctx->object_key); + snprintf(path, pathsize, "http://%s/%s/%s", ctx->hostaddr, instance->bucketname, ctx->object_key); } return tango_cache_upload_once_start_evbuf(ctx, way, evbuf); @@ -377,6 +378,7 @@ struct tango_cache_ctx *tango_cache_fetch_prepare(struct tango_cache_instance *i { snprintf(ctx->object_key, 256, "%s", meta->url); } + sprintf(ctx->hostaddr, "%s", instance->minio_hostlist); return ctx; } @@ -405,6 +407,7 @@ struct tango_cache_ctx *tango_cache_delete_prepare(struct tango_cache_instance * { snprintf(ctx->object_key, 256, "%s", objkey); } + sprintf(ctx->hostaddr, "%s", instance->minio_hostlist); return ctx; } diff --git a/cache/tango_cache_client_in.h b/cache/tango_cache_client_in.h index dadb14e..bf32947 100644 --- a/cache/tango_cache_client_in.h +++ b/cache/tango_cache_client_in.h @@ -98,6 +98,7 @@ struct tango_cache_ctx struct future* future; char error[CURL_ERROR_SIZE]; char object_key[256]; + char hostaddr[24]; enum CACHE_REQUEST_METHOD method; enum CACHE_ERR_CODE error_code; diff --git a/cache/tango_cache_transfer.cpp b/cache/tango_cache_transfer.cpp index ed0bb6e..9a4b1af 100644 --- a/cache/tango_cache_transfer.cpp +++ b/cache/tango_cache_transfer.cpp @@ -110,11 +110,11 @@ static int http_put_bodypart_request_evbuf(struct tango_cache_ctx *ctx, bool ful ctx->put.upload_offset = 0; if(full) { - snprintf(minio_url, 256, "http://%s/%s/%s", ctx->instance->minio_hostlist, ctx->instance->bucketname, ctx->object_key); + snprintf(minio_url, 256, "http://%s/%s/%s", ctx->hostaddr, ctx->instance->bucketname, ctx->object_key); } else { - snprintf(minio_url, 256, "http://%s/%s/%s?partNumber=%d&uploadId=%s", ctx->instance->minio_hostlist, ctx->instance->bucketname, ctx->object_key, ++ctx->put.part_index, ctx->put.uploadID); + snprintf(minio_url, 256, "http://%s/%s/%s?partNumber=%d&uploadId=%s", ctx->hostaddr, ctx->instance->bucketname, ctx->object_key, ++ctx->put.part_index, ctx->put.uploadID); curl_easy_setopt(ctx->curl, CURLOPT_HEADERFUNCTION, curl_put_multipart_header_cb); curl_easy_setopt(ctx->curl, CURLOPT_HEADERDATA, ctx); } @@ -179,7 +179,7 @@ int curl_get_minio_uploadID(struct tango_cache_ctx *ctx) return -1; } - snprintf(minio_url, 256, "http://%s/%s/%s?uploads", ctx->instance->minio_hostlist, ctx->instance->bucketname, ctx->object_key); + snprintf(minio_url, 256, "http://%s/%s/%s?uploads", ctx->hostaddr, ctx->instance->bucketname, ctx->object_key); curl_easy_setopt(ctx->curl, CURLOPT_POST, 1L); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); curl_easy_setopt(ctx->curl, CURLOPT_USERAGENT, "aws-sdk-cpp/1.5.24 Linux/3.10.0-327.el7.x86_64 x86_64 pangu_cache"); @@ -209,7 +209,7 @@ int cache_delete_minio_object(struct tango_cache_ctx *ctx) return 0; } - snprintf(minio_url, 256, "http://%s/%s/%s", ctx->instance->minio_hostlist, ctx->instance->bucketname, ctx->object_key); + snprintf(minio_url, 256, "http://%s/%s/%s", ctx->hostaddr, ctx->instance->bucketname, ctx->object_key); curl_easy_setopt(ctx->curl, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); curl_easy_setopt(ctx->curl, CURLOPT_USERAGENT, "aws-sdk-cpp/1.5.24 Linux/3.10.0-327.el7.x86_64 x86_64 pangu_cache"); @@ -237,7 +237,7 @@ bool cache_cancel_upload_minio(struct tango_cache_ctx *ctx) return false; } - snprintf(minio_url, 256, "http://%s/%s/%s?uploadId=%s", ctx->instance->minio_hostlist, ctx->instance->bucketname, ctx->object_key, ctx->put.uploadID); + snprintf(minio_url, 256, "http://%s/%s/%s?uploadId=%s", ctx->hostaddr, ctx->instance->bucketname, ctx->object_key, ctx->put.uploadID); curl_easy_setopt(ctx->curl, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); curl_easy_setopt(ctx->curl, CURLOPT_USERAGENT, "aws-sdk-cpp/1.5.24 Linux/3.10.0-327.el7.x86_64 x86_64 pangu_cache"); @@ -267,7 +267,7 @@ bool cache_kick_combine_minio(struct tango_cache_ctx *ctx) } construct_complete_xml(ctx, &ctx->put.combine_xml, &len); - snprintf(minio_url, 256, "http://%s/%s/%s?uploadId=%s", ctx->instance->minio_hostlist, ctx->instance->bucketname, ctx->object_key, ctx->put.uploadID); + snprintf(minio_url, 256, "http://%s/%s/%s?uploadId=%s", ctx->hostaddr, ctx->instance->bucketname, ctx->object_key, ctx->put.uploadID); curl_easy_setopt(ctx->curl, CURLOPT_POST, 1L); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); curl_easy_setopt(ctx->curl, CURLOPT_USERAGENT, "aws-sdk-cpp/1.5.24 Linux/3.10.0-327.el7.x86_64 x86_64 pangu_cache"); @@ -516,7 +516,7 @@ int tango_cache_upload_once_start_data(struct tango_cache_ctx *ctx, enum PUT_MEM } ctx->put.state = PUT_STATE_END; - snprintf(minio_url, 256, "http://%s/%s/%s", ctx->instance->minio_hostlist, ctx->instance->bucketname, ctx->object_key); + snprintf(minio_url, 256, "http://%s/%s/%s", ctx->hostaddr, ctx->instance->bucketname, ctx->object_key); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); curl_easy_setopt(ctx->curl, CURLOPT_USERAGENT, "aws-sdk-cpp/1.5.24 Linux/3.10.0-327.el7.x86_64 x86_64 pangu_cache"); curl_easy_setopt(ctx->curl, CURLOPT_NOSIGNAL, 1L); @@ -797,7 +797,7 @@ int tango_cache_fetch_start(struct tango_cache_ctx *ctx) return -1; } - snprintf(minio_url, 256, "http://%s/%s/%s", ctx->instance->minio_hostlist, ctx->instance->bucketname, ctx->object_key); + snprintf(minio_url, 256, "http://%s/%s/%s", ctx->hostaddr, ctx->instance->bucketname, ctx->object_key); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); curl_easy_setopt(ctx->curl, CURLOPT_USERAGENT, "aws-sdk-cpp/1.5.24 Linux/3.10.0-327.el7.x86_64 x86_64 pangu_cache"); curl_easy_setopt(ctx->curl, CURLOPT_NOSIGNAL,1L); diff --git a/cache/test_demo/cache_evbase_test.cpp b/cache/test_demo/cache_evbase_test.cpp index 172041e..025a5a4 100644 --- a/cache/test_demo/cache_evbase_test.cpp +++ b/cache/test_demo/cache_evbase_test.cpp @@ -245,7 +245,7 @@ int main(int argc, char **argv) promise_set_ctx(future_to_promise(pdata->future), NULL, NULL); ctx = cache_evbase_update_start(instance_asyn, pdata->future, &meta); - sprintf(pdata->filename, "%s", cache_evbase_get_object_key(ctx)); + cache_evbase_get_object_path(ctx, pdata->filename, 256); char buffer[1024]; FILE *fp = fopen(filename_in, "r"); diff --git a/cache/test_demo/tango_cache_test.c b/cache/test_demo/tango_cache_test.c index ce8f16d..679f4ec 100644 --- a/cache/test_demo/tango_cache_test.c +++ b/cache/test_demo/tango_cache_test.c @@ -213,7 +213,7 @@ static void dummy_accept_callback(evutil_socket_t fd, short events, void *arg) promise_set_ctx(future_to_promise(pdata->future), NULL, NULL); ctx = tango_cache_update_start(tango_instance, pdata->future, &meta); - sprintf(pdata->filename, "%s", tango_cache_get_object_key(ctx)); + tango_cache_get_object_path(ctx, pdata->filename, 256); FILE *fp = fopen(s, "r"); while(!feof(fp))