diff options
| author | lishu <[email protected]> | 2019-08-12 14:06:30 +0800 |
|---|---|---|
| committer | lishu <[email protected]> | 2019-08-12 14:06:30 +0800 |
| commit | 7c16243238ac90bdfdb8c2e57897ac0d45e940eb (patch) | |
| tree | 71fb750d6045a6ed8cc549c22cd10885cf376d52 /src | |
| parent | aa8c58e98beef3f68fb0fc2647db2b5efae997c4 (diff) | |
更新tango_cache
Diffstat (limited to 'src')
| -rw-r--r-- | src/inc/cache_evbase_client.h | 25 | ||||
| -rw-r--r-- | src/inc/tango_cache_client.h | 197 | ||||
| -rw-r--r-- | src/inc/tfe_future.h | 2 | ||||
| -rw-r--r-- | src/lib/libcjson.a | bin | 42168 -> 42168 bytes | |||
| -rw-r--r-- | src/lib/libcrypto.a | bin | 5788576 -> 5788472 bytes | |||
| -rw-r--r-- | src/lib/libcurl.a | bin | 834506 -> 827674 bytes | |||
| -rw-r--r-- | src/lib/libevent.a | bin | 649304 -> 649304 bytes | |||
| -rw-r--r-- | src/lib/libssl.a | bin | 1019068 -> 1019068 bytes | |||
| -rw-r--r-- | src/lib/libtango_cache_client.a | bin | 353972 -> 797162 bytes | |||
| -rw-r--r-- | src/lib/libxml2.a | bin | 2736692 -> 2727532 bytes |
10 files changed, 128 insertions, 96 deletions
diff --git a/src/inc/cache_evbase_client.h b/src/inc/cache_evbase_client.h index 5bead2f..feab191 100644 --- a/src/inc/cache_evbase_client.h +++ b/src/inc/cache_evbase_client.h @@ -6,6 +6,8 @@ #include "tango_cache_client.h" +/* API��ʹ��˵���ο�tango_cache_client.h */ + struct cache_evbase_instance { struct tango_cache_instance *instance; @@ -16,14 +18,17 @@ struct cache_evbase_instance struct cache_evbase_ctx { + size_t object_size; //tango_ctx�������Ա�����ع�����ֱ�ӻ�ȡ�Ļ����ڶ�дһ�������� struct tango_cache_ctx *ctx; + struct tango_losf_meta *losf_meta; //LOSFһ�����ϴ�ʱû��ctx struct cache_evbase_instance *instance_asyn; }; -/*����API�̰߳�ȫ��API��ʹ��˵���ο�tango_cache_client.h*/ +/*����API�̰߳�ȫ������ͬһ��cache_evbase_ctx�����Կ��̷߳��ʡ�*/ enum CACHE_ERR_CODE cache_evbase_get_last_error(const struct cache_evbase_ctx *ctx_asyn); enum CACHE_ERR_CODE cache_evbase_ctx_error(const struct cache_evbase_instance *instance); +long long cache_evbase_maximum_session(const struct cache_evbase_instance *instance); void cache_evbase_get_statistics(const struct cache_evbase_instance *instance, struct cache_statistics *out); void cache_evbase_global_init(void); @@ -34,16 +39,16 @@ struct tango_cache_parameter *cache_evbase_parameter_new(const char* profile_pat /*����ʵ�����̰߳�ȫ���ڲ�������һ���߳�*/ struct cache_evbase_instance *cache_evbase_instance_new(struct tango_cache_parameter *param, void *runtimelog); - -//GET�ӿڣ��ɹ�����0��ʧ�ܷ���-1��future�ص���������������߳���ִ�У���ͬ -int cache_evbase_fetch_object(struct cache_evbase_instance *instance, struct future* f, struct tango_cache_meta_get *meta); +/******************************************* GET�ӿ� ****************************************/ +//�ɹ�����0��ʧ�ܷ���-1��future�ص���������������߳���ִ�У���ͬ +int cache_evbase_fetch_object(struct cache_evbase_instance *instance, struct future* f, struct tango_cache_meta_get *meta, enum OBJECT_LOCATION where_to_get); int cache_evbase_head_object(struct cache_evbase_instance *instance, struct future* f, struct tango_cache_meta_get *meta); struct tango_cache_result *cache_evbase_read_result(void *promise_result); -//DELETE�ӿ� -int cache_evbase_delete_object(struct cache_evbase_instance *instance, struct future* f, const char *objkey); +/****************************************** DELETE�ӿ� **************************************/ +int cache_evbase_delete_object(struct cache_evbase_instance *instance, struct future* f, const char *objkey, const char *minio_addr=NULL, const char *bucket=NULL); -//һ�����ϴ��ӿ� +/***************************************** һ�����ϴ��ӿ� **********************************/ int cache_evbase_upload_once_data(struct cache_evbase_instance *instance, struct future* f, enum PUT_MEMORY_COPY_WAY way, const char *data, size_t size, struct tango_cache_meta_put *meta, @@ -53,14 +58,12 @@ int cache_evbase_upload_once_evbuf(struct cache_evbase_instance *instance, struc struct tango_cache_meta_put *meta, char *path/*OUT*/, size_t pathsize); -//��ʽ�ϴ��ӿ� +/****************************************** ��ʽ�ϴ��ӿ� ***********************************/ struct cache_evbase_ctx *cache_evbase_update_start(struct cache_evbase_instance *instance, struct future* f, struct tango_cache_meta_put *meta); int cache_evbase_update_frag_data(struct cache_evbase_ctx *ctx_asyn, enum PUT_MEMORY_COPY_WAY way, const char *data, size_t size); 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); +int cache_evbase_update_end(struct cache_evbase_ctx *ctx_asyn, char *path/*OUT*/, size_t pathsize); void cache_evbase_update_cancel(struct cache_evbase_ctx *ctx_asyn); -void cache_evbase_get_object_path(const struct cache_evbase_ctx *ctx, char *path/*OUT*/, size_t pathsize); - #endif diff --git a/src/inc/tango_cache_client.h b/src/inc/tango_cache_client.h index c551e8f..188dee8 100644 --- a/src/inc/tango_cache_client.h +++ b/src/inc/tango_cache_client.h @@ -12,47 +12,68 @@ enum CACHE_ERR_CODE { CACHE_OK=0, - CACHE_CACHE_MISS, //����δ���� - CACHE_TIMEOUT, //���泬ʱ - CACHE_OUTOF_MEMORY,//��ǰ�ڴ�ռ�ó������ƣ��鿴MAX_USED_MEMORY_SIZE_MB�Ƿ��С���ߵ�ǰ�ϴ����ʸ����ϵ����ߵ����� - CACHE_ERR_CURL, - CACHE_ERR_WIREDLB, - CACHE_ERR_SOCKPAIR, - CACHE_ERR_INTERNAL, - CACHE_ERR_REDIS_JSON, - CACHE_ERR_REDIS_CONNECT, - CACHE_OUTOF_SESSION, - CACHE_UPDATE_CANCELED, -}; - -enum PUT_MEMORY_COPY_WAY -{ - PUT_MEM_COPY=0, //��������ڴ� - PUT_MEM_FREE, //�������ڴ棬��������ɱ�����ģ���ͷŸ��ڴ� -}; -enum EVBUFFER_COPY_WAY -{ - EVBUFFER_MOVE=0,//evbuffer_add_buffer - EVBUFFER_COPY, //evbuffer_add_buffer_reference + CACHE_CACHE_MISS = -101, //����δ���� + CACHE_TIMEOUT = -102, //���泬ʱ + CACHE_OUTOF_MEMORY= -103,//��ǰ�ڴ�ռ�ó������ƣ��鿴MAX_USED_MEMORY_SIZE_MB�Ƿ��С���ߵ�ǰ�ϴ����ʸ����ϵ����ߵ����� + CACHE_ERR_CURL = -104, + CACHE_ERR_WIREDLB = -105, + CACHE_ERR_SOCKPAIR= -106, + CACHE_ERR_INTERNAL= -107, + CACHE_ERR_REDIS_JSON = -108, + CACHE_ERR_REDIS_CONNECT= -109, + CACHE_ERR_REDIS_EXEC = -110, + CACHE_OUTOF_SESSION = -111, + CACHE_ERR_EVBUFFER = -112, + CACHE_UPDATE_CANCELED = -113, + CACHE_ERR_INSTANCE_ID = -114, + CACHE_ERR_BAD_REQUEST = -115, }; struct cache_statistics { - long long get_recv_num; //����GET�Ĵ��� - long long get_succ_num; //GET�ɹ��Ĵ��� - long long get_miss_num; //GETδ���еĴ��� - long long get_error_num;//GETʧ�ܵĴ��� - long long put_recv_num; //����UPLOAD�Ĵ��� - long long put_succ_num; //UPLOAD�ɹ��Ĵ��� - long long put_error_num;//UPLOADʧ�ܵĴ��� - long long del_recv_num; //����DELETE�Ĵ��� - long long del_succ_num; //DELETE�ɹ��Ĵ��� - long long del_error_num;//DELETEʧ�ܵĴ��� - long long totaldrop_num;//�ڴ����Լ�WiredLB����ʱDROP�Ĵ��� - long long memory_used; //��ǰUPLOAD BODY��ռ�ڴ��С - long long session_num; //��ǰ���ڽ���GET/PUT��HTTP�Ự�� + long long get_recv_num; //����GET�Ĵ��� + long long get_succ_http; //GET minio�ɹ��Ĵ��� + long long get_succ_redis;//GET redis�ɹ��Ĵ��� + long long get_miss_num; //GETδ���еĴ��� + long long get_err_http; //GET minioʧ�ܵĴ��� + long long get_err_redis; //GET redisʧ�ܵĴ��� + long long put_recv_num; //����UPLOAD�Ĵ��� + long long put_succ_http; //UPLOAD minio�ɹ��Ĵ��� + long long put_succ_redis;//UPLOAD redis�ɹ��Ĵ��� + long long put_err_http; //UPLOAD minioʧ�ܵĴ��� + long long put_err_redis; //UPLOAD redisʧ�ܵĴ��� + long long put_cancel; //UPLOAD Cancel���� + long long put_losf_num; //LOSF�ϲ���ĸ��� + long long del_recv_num; //����DELETE�Ĵ��� + long long del_succ_num; //DELETE�ɹ��Ĵ��� + long long del_error_num; //DELETEʧ�ܵĴ��� + long long totaldrop_num; //�ڴ����Լ�WiredLB����ʱDROP�Ĵ��� + long long memory_used; //��ǰUPLOAD BODY��ռ�ڴ��С + long long session_http; //��ǰ���ڽ���GET/PUT��HTTP�Ự�� + long long session_redis; //��ǰ���ڽ���GET/PUT��redis�Ự�� }; + +struct tango_cache_parameter; +struct tango_cache_instance; +struct tango_cache_ctx; + +enum CACHE_ERR_CODE tango_cache_get_last_error(const struct tango_cache_ctx *ctx); +enum CACHE_ERR_CODE tango_cache_ctx_error(const struct tango_cache_instance *instance); +long long tango_cache_maximum_session(const struct tango_cache_instance *instance); +void tango_cache_get_statistics(const struct tango_cache_instance *instance, struct cache_statistics *out); + +/*ÿ������ִ��һ�γ�ʼ��*/ +void tango_cache_global_init(void); + +//ÿ��minio��Ⱥ��bucket����һ��parameter�����instance�ɹ���һ��parameter +struct tango_cache_parameter *tango_cache_parameter_new(const char* profile_path, const char* section, void *runtimelog); +/*��������API�̲߳���ȫ*/ +//ÿ�������̴߳���һ��instance +struct tango_cache_instance *tango_cache_instance_new(struct tango_cache_parameter *param, struct event_base* evbase, void *runtimelog); + + +/****************************************** GET�ӿڵ�API ******************************************/ enum CACHE_RESULT_TYPE { RESULT_TYPE_HEADER=0, //���ֻ����һ�� @@ -62,77 +83,84 @@ enum CACHE_RESULT_TYPE RESULT_TYPE_MISS, //����δ���У����������ͻ��⣬ֻ����һ��(��END֮��)������������ }; -//promise_success�Ľ��result -struct tango_cache_result +enum OBJECT_LOCATION { - const char *data_frag; //���typeΪRESULT_TYPE_HEADER��ÿ��ͷ��������һ������(HTTP1.1��ʽ) - size_t size; - size_t tlength; //������ܳ��ȣ��ص�ʱ����Ч - enum CACHE_RESULT_TYPE type; + OBJECT_IN_UNKNOWN=0, + OBJECT_IN_MINIO, + OBJECT_IN_REDIS }; -enum CACHE_HTTP_HDR_TYPE +//Range֧��3��: bytes=x-y; bytes=x-; bytes=-y +struct tango_cache_get_range { - HDR_CONTENT_TYPE=0, - HDR_CONTENT_ENCODING, - HDR_CONTENT_DISPOSITION, - HDR_CONTENT_MD5, - - HDR_CONTENT_NUM, + int64_t start_offset; // -1��ʾ������ + int64_t end_offset; // -1��ʾ������ }; struct tango_cache_meta_get { const char* url; //����:URL���ǽṹ����־:�ļ�·������CACHE_OBJECT_KEY_HASH_SWITCH=0ʱ���256�ֽڣ�=1ʱ������ struct request_freshness get; + struct tango_cache_get_range *range; //����ͷRange }; -struct tango_cache_meta_put +//promise_success�Ľ��result +struct tango_cache_result { - const char* url; - const char* std_hdr[HDR_CONTENT_NUM]; //����ͷ������"Content-Type: text/html"����Ҫ�������У�NULL��ʾû�и�ͷ���� - const char* usertag; //�������������ݣ�GETʱ��ԭ������ - size_t usertag_len; //���USER_TAG_MAX_LEN��0��ʾû�и�ͷ�� - struct response_freshness put; + const char *data_frag; //���typeΪRESULT_TYPE_HEADER��ÿ��ͷ��������һ������(HTTP1.1��ʽ) + size_t size; //����Ƭ�εij��� + size_t tlength;//��������response body���Ƶ��ܳ���(��Range����ͷʱ������Ĵ�С)���ص�ʱ����Ч + enum CACHE_RESULT_TYPE type; + enum OBJECT_LOCATION location; }; -struct tango_cache_parameter; -struct tango_cache_instance; -struct tango_cache_ctx; - -enum CACHE_ERR_CODE tango_cache_get_last_error(const struct tango_cache_ctx *ctx); -enum CACHE_ERR_CODE tango_cache_ctx_error(const struct tango_cache_instance *instance); -void tango_cache_get_statistics(const struct tango_cache_instance *instance, struct cache_statistics *out); - -/*ÿ������ִ��һ�γ�ʼ��*/ -void tango_cache_global_init(void); - -//ÿ��minio��Ⱥ��bucket����һ��parameter�����instance�ɹ���һ��parameter -struct tango_cache_parameter *tango_cache_parameter_new(const char* profile_path, const char* section, void *runtimelog); -/*��������API�̲߳���ȫ*/ -//ÿ�������̴߳���һ��instance -struct tango_cache_instance *tango_cache_instance_new(struct tango_cache_parameter *param, struct event_base* evbase, void *runtimelog); - - -/* GET�ӿڵ�API*/ //�ɹ�ʱ�ص�promise_success //ʧ��ʱ�ص�promise_failed(��һ��)��ʹ��get_last_error��ȡ�����룻 //future������ΪNULL -int tango_cache_fetch_object(struct tango_cache_instance *instance, struct future* f, struct tango_cache_meta_get *meta); +int tango_cache_fetch_object(struct tango_cache_instance *instance, struct future* f, struct tango_cache_meta_get *meta, enum OBJECT_LOCATION where_to_get); int tango_cache_head_object(struct tango_cache_instance *instance, struct future* f, struct tango_cache_meta_get *meta); //��promise_success��result������ȡ��� struct tango_cache_result *tango_cache_read_result(future_result_t *promise_result); -/* DELETE�ӿڵ�API*/ -int tango_cache_delete_object(struct tango_cache_instance *instance, struct future* f, const char *objkey); +/****************************************** DELETE�ӿڵ�API ******************************************/ +int tango_cache_delete_object(struct tango_cache_instance *instance, struct future* f, const char *objkey, const char *minio_addr=NULL, const char *bucket=NULL); + + +/****************************************** UPLOAD�ӿڵ�API ******************************************/ +/* ע��: ��future��ΪNULL�������ϴ�����ʱ�����֪ͨ�ص������������ã�*/ + +enum PUT_MEMORY_COPY_WAY +{ + PUT_MEM_COPY=0, //��������ڴ� + PUT_MEM_FREE, //�������ڴ棬��������ɱ�����ģ���ͷŸ��ڴ� +}; +enum EVBUFFER_COPY_WAY +{ + EVBUFFER_MOVE=0,//evbuffer_add_buffer + EVBUFFER_COPY, //evbuffer_add_buffer_reference +}; +enum CACHE_HTTP_HDR_TYPE +{ + HDR_CONTENT_TYPE=0, + HDR_CONTENT_ENCODING, + HDR_CONTENT_DISPOSITION, + HDR_CONTENT_MD5, + + HDR_CONTENT_NUM, +}; -/* UPLOAD�ӿڵ�API - * ע��: UPLOAD�ӿڵ�API����future��ΪNULL�������ϴ�����ʱ�����֪ͨ�ص������������ã� - */ +struct tango_cache_meta_put +{ + const char* url; + const char* std_hdr[HDR_CONTENT_NUM]; //����ͷ������"Content-Type: text/html"����Ҫ�������У�NULL��ʾû�и�ͷ���� + const char* usertag; //�������������ݣ�GETʱ��ԭ������ + size_t usertag_len; //���USER_TAG_MAX_LEN��0��ʾû�и�ͷ�� + struct response_freshness put; +}; -/*����һ���ϴ�API*/ +/****************************************** ����һ��UPLOAD�ӿڵ�API ******************************************/ //��path��Ϊ�գ����������Ĵ洢·�� //����ֵ: 0-�ɹ���<0ʧ�ܣ���ͬ int tango_cache_upload_once_data(struct tango_cache_instance *instance, struct future* f, @@ -143,18 +171,17 @@ int tango_cache_upload_once_evbuf(struct tango_cache_instance *instance, struct enum EVBUFFER_COPY_WAY way, struct evbuffer *evbuf, struct tango_cache_meta_put *meta, char *path/*OUT*/, size_t pathsize); -/*��ʽ�ϴ�API*/ + +/****************************************** ��ʽUPLOAD�ӿڵ�API ******************************************/ //����ֵ: ��ΪNULL���ʾ����ʧ�ܣ�����tango_cache_ctx_error�鿴�������Ƿ���CACHE_OUTOF_MEMORY(�����������)�� struct tango_cache_ctx *tango_cache_update_start(struct tango_cache_instance *instance, struct future* f, struct tango_cache_meta_put *meta); //����ֵ: 0-�ɹ���<0ʧ�ܣ�����tango_cache_get_last_error�鿴�����룻 int tango_cache_update_frag_data(struct tango_cache_ctx *ctx, const char *data, size_t size); int tango_cache_update_frag_evbuf(struct tango_cache_ctx *ctx, enum EVBUFFER_COPY_WAY way, struct evbuffer *evbuf); -void tango_cache_update_end(struct tango_cache_ctx *ctx); +//ע��: ����ʧ��ʱ���ٵ���promise�ص�������path��ΪNULLʱ���ش洢·�� +int tango_cache_update_end(struct tango_cache_ctx *ctx, char *path/*OUT*/, size_t pathsize); //����cancel���������ص�����������ʧ�� void tango_cache_update_cancel(struct tango_cache_ctx *ctx); -//��ȡ����keyֵ����CACHE_OBJECT_KEY_HASH_SWITCH=1������URL/�ļ�����ϣʱ���� -void tango_cache_get_object_path(const struct tango_cache_ctx *ctx, char *path/*OUT*/, size_t pathsize); - #endif diff --git a/src/inc/tfe_future.h b/src/inc/tfe_future.h index c428f08..fc2311d 100644 --- a/src/inc/tfe_future.h +++ b/src/inc/tfe_future.h @@ -21,6 +21,8 @@ struct promise * future_to_promise(struct future * f); void future_destroy(struct future * f); void promise_failed(struct promise * p, enum e_future_error error, const char * what); void promise_success(struct promise * p, void * result); +void promise_finish(struct promise * p); +void promise_allow_many_successes(struct promise *p); void promise_set_ctx(struct promise * p, void * ctx, promise_ctx_destroy_cb * cb); void * promise_get_ctx(struct promise * p); void * promise_dettach_ctx(struct promise * p); diff --git a/src/lib/libcjson.a b/src/lib/libcjson.a Binary files differindex cb5fed5..8a069a6 100644 --- a/src/lib/libcjson.a +++ b/src/lib/libcjson.a diff --git a/src/lib/libcrypto.a b/src/lib/libcrypto.a Binary files differindex 7c1224f..cbb87c0 100644 --- a/src/lib/libcrypto.a +++ b/src/lib/libcrypto.a diff --git a/src/lib/libcurl.a b/src/lib/libcurl.a Binary files differindex d938a26..14f09b4 100644 --- a/src/lib/libcurl.a +++ b/src/lib/libcurl.a diff --git a/src/lib/libevent.a b/src/lib/libevent.a Binary files differindex 2881fa9..446113b 100644 --- a/src/lib/libevent.a +++ b/src/lib/libevent.a diff --git a/src/lib/libssl.a b/src/lib/libssl.a Binary files differindex bab5589..af344b2 100644 --- a/src/lib/libssl.a +++ b/src/lib/libssl.a diff --git a/src/lib/libtango_cache_client.a b/src/lib/libtango_cache_client.a Binary files differindex c103ee6..8cb78e4 100644 --- a/src/lib/libtango_cache_client.a +++ b/src/lib/libtango_cache_client.a diff --git a/src/lib/libxml2.a b/src/lib/libxml2.a Binary files differindex d803f5f..208e299 100644 --- a/src/lib/libxml2.a +++ b/src/lib/libxml2.a |
