【1】修复HTTP Expect头部缺失时POST卡顿的问题;

【2】TODO:尝试增加multiple delete objects API,尚未成功(AccessDenied);
This commit is contained in:
zhangchengwei
2018-10-11 16:35:13 +08:00
committed by zhengchao
parent 68ee4bdd79
commit a2fa705fa7
8 changed files with 308 additions and 22 deletions

View File

@@ -97,6 +97,23 @@ void put_future_failed(enum e_future_error err, const char * what, void * user)
free(pdata);
}
void del_future_success(future_result_t* result, void * user)
{
struct future_pdata *pdata = (struct future_pdata *)user;
printf("DEL %s succ\n", pdata->filename);
future_destroy(pdata->future);
free(pdata);
}
void del_future_failed(enum e_future_error err, const char * what, void * user)
{
struct future_pdata *pdata = (struct future_pdata *)user;
printf("DEL %s fail: %s\n", pdata->filename, what);
future_destroy(pdata->future);
free(pdata);
}
char * get_file_content(const char *filename, size_t *filelen_out)
{
char *buffer;
@@ -136,6 +153,8 @@ char * get_file_content(const char *filename, size_t *filelen_out)
return buffer;
}
int tango_cache_multi_delete(struct tango_cache_instance *instance, struct future* future, char *objlist[], u_int32_t num);
static void dummy_accept_callback(evutil_socket_t fd, short events, void *arg)
{
char s[1024];
@@ -144,6 +163,9 @@ static void dummy_accept_callback(evutil_socket_t fd, short events, void *arg)
FILE *input = (FILE *)arg;
static int index=0;
char filename[128], method[16], buffer[1024], *p;
char *dellist[16];
char *pstart, *save_ptr=NULL;
int delnum=0;
struct tango_cache_meta meta;
struct future_pdata *pdata;
@@ -207,6 +229,25 @@ static void dummy_accept_callback(evutil_socket_t fd, short events, void *arg)
fclose(fp);
tango_cache_upload_once_evbuf(tango_instance, pdata->future, EVBUFFER_MOVE, evbuf, &meta, pdata->filename, 256);
}
else if(!strcasecmp(p, "DEL"))
{
pdata->future = future_create(del_future_success, del_future_failed, pdata);
promise_set_ctx(future_to_promise(pdata->future), NULL, NULL);
sprintf(pdata->filename, "%s", s);
tango_cache_delete_object(tango_instance, pdata->future, s);
}
else if(!strcasecmp(p, "DELMUL")) //TODO
{
pdata->future = future_create(del_future_success, del_future_failed, pdata);
promise_set_ctx(future_to_promise(pdata->future), NULL, NULL);
sprintf(pdata->filename, "%s", s);
for(pstart = strtok_r(s, ";", &save_ptr); pstart != NULL; pstart = strtok_r(NULL, ";", &save_ptr))
{
dellist[delnum++] = pstart;
}
tango_cache_multi_delete(tango_instance, pdata->future, dellist, delnum);
}
else
{
pdata->future = future_create(put_future_success, put_future_failed, pdata);