summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlishu <[email protected]>2019-08-12 14:06:30 +0800
committerlishu <[email protected]>2019-08-12 14:06:30 +0800
commit7c16243238ac90bdfdb8c2e57897ac0d45e940eb (patch)
tree71fb750d6045a6ed8cc549c22cd10885cf376d52 /src
parentaa8c58e98beef3f68fb0fc2647db2b5efae997c4 (diff)
更新tango_cache
Diffstat (limited to 'src')
-rw-r--r--src/inc/cache_evbase_client.h25
-rw-r--r--src/inc/tango_cache_client.h197
-rw-r--r--src/inc/tfe_future.h2
-rw-r--r--src/lib/libcjson.abin42168 -> 42168 bytes
-rw-r--r--src/lib/libcrypto.abin5788576 -> 5788472 bytes
-rw-r--r--src/lib/libcurl.abin834506 -> 827674 bytes
-rw-r--r--src/lib/libevent.abin649304 -> 649304 bytes
-rw-r--r--src/lib/libssl.abin1019068 -> 1019068 bytes
-rw-r--r--src/lib/libtango_cache_client.abin353972 -> 797162 bytes
-rw-r--r--src/lib/libxml2.abin2736692 -> 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
index cb5fed5..8a069a6 100644
--- a/src/lib/libcjson.a
+++ b/src/lib/libcjson.a
Binary files differ
diff --git a/src/lib/libcrypto.a b/src/lib/libcrypto.a
index 7c1224f..cbb87c0 100644
--- a/src/lib/libcrypto.a
+++ b/src/lib/libcrypto.a
Binary files differ
diff --git a/src/lib/libcurl.a b/src/lib/libcurl.a
index d938a26..14f09b4 100644
--- a/src/lib/libcurl.a
+++ b/src/lib/libcurl.a
Binary files differ
diff --git a/src/lib/libevent.a b/src/lib/libevent.a
index 2881fa9..446113b 100644
--- a/src/lib/libevent.a
+++ b/src/lib/libevent.a
Binary files differ
diff --git a/src/lib/libssl.a b/src/lib/libssl.a
index bab5589..af344b2 100644
--- a/src/lib/libssl.a
+++ b/src/lib/libssl.a
Binary files differ
diff --git a/src/lib/libtango_cache_client.a b/src/lib/libtango_cache_client.a
index c103ee6..8cb78e4 100644
--- a/src/lib/libtango_cache_client.a
+++ b/src/lib/libtango_cache_client.a
Binary files differ
diff --git a/src/lib/libxml2.a b/src/lib/libxml2.a
index d803f5f..208e299 100644
--- a/src/lib/libxml2.a
+++ b/src/lib/libxml2.a
Binary files differ