创建
This commit is contained in:
112
cache/include/tango_cache_client.h
vendored
112
cache/include/tango_cache_client.h
vendored
@@ -1,30 +1,104 @@
|
||||
#include "future.h"
|
||||
struct tango_cache_instance{};
|
||||
struct tango_cache_update_ctx{};
|
||||
#define CACHE_FRAG_BEGIN 0x01
|
||||
#define CACHE_FRAG_DATA 0x02
|
||||
#define CACHE_FRAG_END 0x04
|
||||
#define CACHE_FRAG_FULL (CACHE_FRAG_BEGIN|CACHE_FRAG_DATA|CACHE_FRAG_END)
|
||||
#ifndef __TANGO_CACHE_CLIENT_H__
|
||||
#define __TANGO_CACHE_CLIENT_H__
|
||||
|
||||
#include <event2/event.h>
|
||||
#include <event.h>
|
||||
|
||||
#include "tfe_future.h"
|
||||
|
||||
enum CACHE_ERR_CODE
|
||||
{
|
||||
CACHE_OK=0,
|
||||
CACHE_CACHE_MISS, //<2F><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
||||
CACHE_TIMEOUT, //<2F><><EFBFBD>泬ʱ
|
||||
CACHE_OUTOF_MEMORY,//<2F><>ǰ<EFBFBD>ڴ<EFBFBD>ռ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3>鿴MAX_USED_MEMORY_SIZE_MB<4D>Ƿ<EFBFBD><C7B7><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ߵ<EFBFBD>ǰ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
CACHE_ERR_CURL,
|
||||
CACHE_ERR_UNKNOWN
|
||||
};
|
||||
|
||||
enum PUT_MEMORY_COPY_WAY
|
||||
{
|
||||
PUT_ONCE_COPY=0, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
PUT_ONCE_FREE, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<DAB4><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ͷŸ<CDB7><C5B8>ڴ<EFBFBD>
|
||||
};
|
||||
|
||||
struct cache_statistics
|
||||
{
|
||||
long long get_recv_num; //<2F><><EFBFBD><EFBFBD>GET<45>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
long long get_succ_num; //GET<45>ɹ<EFBFBD><C9B9>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
long long get_fail_num; //GETʧ<54>ܵĴ<DCB5><C4B4><EFBFBD>
|
||||
long long put_recv_num; //<2F><><EFBFBD><EFBFBD>UPLOAD<41>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
long long put_succ_num; //UPLOAD<41>ɹ<EFBFBD><C9B9>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
long long put_fail_num; //UPLOADʧ<44>ܵĴ<DCB5><C4B4><EFBFBD>
|
||||
long long memory_used; //<2F><>ǰUPLOAD BODY<44><59>ռ<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>С
|
||||
long long session_num; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>GET/PUT<55><54>HTTP<54>Ự<EFBFBD><E1BBB0>
|
||||
};
|
||||
|
||||
enum CACHE_RESULT_TYPE
|
||||
{
|
||||
RESULT_TYPE_HEADER=0,
|
||||
RESULT_TYPE_BODY,
|
||||
};
|
||||
|
||||
//promise_success<73>Ľ<EFBFBD><C4BD><EFBFBD>result
|
||||
struct tango_cache_result
|
||||
{
|
||||
char frag_type;
|
||||
unsigned char* data_frag;
|
||||
void *data_frag; //<2F><><EFBFBD><EFBFBD>typeΪRESULT_TYPE_HEADER<45><52><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
size_t size;
|
||||
enum CACHE_RESULT_TYPE type;
|
||||
};
|
||||
|
||||
enum CACHE_HTTP_HDR_TYPE
|
||||
{
|
||||
HDR_CONTENT_TYPE=0,
|
||||
HDR_CONTENT_ENCODING,
|
||||
HDR_CONTENT_DISPOSITION,
|
||||
HDR_CONTENT_MD5,
|
||||
|
||||
HDR_CONTENT_NUM,
|
||||
};
|
||||
|
||||
struct tango_cache_meta
|
||||
{
|
||||
const char* url;
|
||||
const char* content_type;
|
||||
const char* std_hdr[HDR_CONTENT_NUM]; //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"Content-Type:"<22><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const char* other_hdr; //<2F><><EFBFBD>Ȳ<F3B3A4B6><C8B2>ܳ<EFBFBD><DCB3><EFBFBD>1535<33>ֽڣ<D6BD>GETʱ<54><CAB1>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//GET: Ҫ<><D2AA>
|
||||
//PUT: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣻0<E4A3BB><30>ʾʹ<CABE><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
|
||||
time_t relative_ttl;
|
||||
time_t max_age;
|
||||
};
|
||||
struct tango_cache_instance* tango_cache_init(event_base* evbase,const char* profile_path, const char* section);
|
||||
|
||||
int tango_cache_fetch(struct tango_cache_instance* instance,struct future* future, const char* http_hdr, const char* url);
|
||||
//following tfe_stream_write_xx functions are NOT thread safe, MUST be called in the stream process thread.
|
||||
struct tango_cache_instance;
|
||||
struct tango_cache_ctx;
|
||||
|
||||
struct tango_cache_update_ctx* tango_cache_update_start(struct tango_cache_instance* instance,struct future* future, const char* http_hdr, const char* url);
|
||||
/*
|
||||
@return 0 if successful, or -1 if an error occurred
|
||||
*/
|
||||
int tango_cache_update_frag(struct tango_cache_update_ctx* ctx,const unsigned char *data, size_t size);
|
||||
void tango_cache_update_end(struct tango_cache_update_ctx*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);
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>API<50>̲߳<DFB3><CCB2><EFBFBD>ȫ*/
|
||||
//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̴߳<DFB3><CCB4><EFBFBD>һ<EFBFBD><D2BB>instance
|
||||
struct tango_cache_instance *tango_cache_instance_new(struct event_base* evbase,const char* profile_path, const char* section, void *runtimelog);
|
||||
|
||||
//<2F>ɹ<EFBFBD>ʱ<EFBFBD>ص<EFBFBD>promise_success, resultΪNULLʱ<4C><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//ʧ<><CAA7>ʱ<EFBFBD>ص<EFBFBD>promise_failed(<28><>һ<EFBFBD><D2BB>)<29><>ʹ<EFBFBD><CAB9>get_last_error<6F><72>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>룻
|
||||
//future<72><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL
|
||||
int tango_cache_fetch(struct tango_cache_instance *instance, struct future* future, struct tango_cache_meta *meta);
|
||||
|
||||
/*UPLOAD<41>ӿڵ<D3BF>API*/
|
||||
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>filename<6D><65>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>KEY<45><59><EFBFBD><EFBFBD>CACHE_OBJECT_KEY_HASH_SWITCH=1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ϣʱ<CFA3><CAB1><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>0<EFBFBD><30>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><0<><30>ʾʧ<CABE>ܣ<EFBFBD><DCA3><EFBFBD>ͬ
|
||||
int tango_cache_upload_once(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 *filename, size_t namelen);
|
||||
|
||||
//<2F><>ʽ<EFBFBD>ϴ<EFBFBD>
|
||||
//<2F><>tango_cache_update_start<72><74><EFBFBD><EFBFBD>NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tango_cache_ctx_error<6F>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>CACHE_OUTOF_MEMORY(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
//<2F><>future<72><65>ΪNULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<CDA8>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2B2BBB5><EFBFBD>
|
||||
struct tango_cache_ctx *tango_cache_update_start(struct tango_cache_instance *instance, struct future* future, struct tango_cache_meta *meta);
|
||||
int tango_cache_update_frag(struct tango_cache_ctx *ctx, const char *data, size_t size);
|
||||
void tango_cache_update_end(struct tango_cache_ctx *ctx);
|
||||
|
||||
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>keyֵ<79><D6B5><EFBFBD><EFBFBD>CACHE_OBJECT_KEY_HASH_SWITCH=1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ϣʱ<CFA3><CAB1><EFBFBD><EFBFBD>
|
||||
const char *tango_cache_get_object_key(struct tango_cache_ctx *ctx);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user