2021-07-16 16:06:59 +08:00
|
|
|
|
#ifndef __DORIS_HTTP_TRANSFER_H__
|
|
|
|
|
|
#define __DORIS_HTTP_TRANSFER_H__
|
|
|
|
|
|
|
|
|
|
|
|
#include <event2/event.h>
|
|
|
|
|
|
#include <event.h>
|
|
|
|
|
|
|
|
|
|
|
|
#include <curl/curl.h>
|
|
|
|
|
|
|
|
|
|
|
|
struct doris_http_callback
|
|
|
|
|
|
{
|
|
|
|
|
|
void *userp;
|
|
|
|
|
|
void (*header_cb)(const char *ptr, size_t bytes, CURLcode code, long res_code, void *userp); //HEAD/GET<45><54><EFBFBD>ɿ<EFBFBD>
|
|
|
|
|
|
void (*write_cb)(const char *ptr, size_t bytes, CURLcode code, long res_code, void *userp); //GETʱ<54><CAB1>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD>ص<EFBFBD>
|
|
|
|
|
|
void (*read_process_cb)(void *data, size_t data_offset, void *userp); //PUTʱ<54><CAB1>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD>ص<EFBFBD>
|
|
|
|
|
|
void (*transfer_done_cb)(CURLcode res, long res_code, const char *err, void *userp); //<2F><><EFBFBD>ɿ<EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct doris_http_ctx
|
|
|
|
|
|
{
|
|
|
|
|
|
struct doris_curl_multihd *multidata;
|
|
|
|
|
|
CURL *curl;
|
|
|
|
|
|
struct curl_slist *headers;
|
|
|
|
|
|
char error[CURL_ERROR_SIZE];
|
|
|
|
|
|
struct doris_http_callback cb;
|
|
|
|
|
|
CURLcode res;
|
|
|
|
|
|
long res_code;
|
|
|
|
|
|
int32_t transfering;
|
|
|
|
|
|
|
|
|
|
|
|
char *put_data;
|
|
|
|
|
|
struct evbuffer *put_evbuf;
|
|
|
|
|
|
size_t put_length;
|
|
|
|
|
|
size_t put_offset;
|
|
|
|
|
|
struct doris_http_instance *instance;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct dst_host_cnn_balance;
|
|
|
|
|
|
struct doris_curl_multihd
|
|
|
|
|
|
{
|
|
|
|
|
|
struct dst_host_cnn_balance *host;
|
|
|
|
|
|
volatile long long sessions; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>GET/PUT<55>ĻỰ<C4BB><E1BBB0>
|
|
|
|
|
|
CURLM *multi_hd;
|
|
|
|
|
|
struct event timer_event; //curl<72><6C><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
struct event_base* evbase;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct doris_curl_multihd *doris_initialize_multihd_for_host(struct doris_http_instance *instance, struct dst_host_cnn_balance *host);
|
2021-07-27 16:25:13 +08:00
|
|
|
|
struct doris_http_ctx *doris_http_ctx_new(struct doris_http_instance *instance, struct doris_http_callback *cb, u_int64_t balance_seed, char *host, int32_t size);
|
2021-07-16 16:06:59 +08:00
|
|
|
|
void doris_http_ctx_destroy(struct doris_http_ctx *ctx);
|
|
|
|
|
|
void doris_http_ctx_reset(struct doris_http_ctx *ctx, struct doris_http_callback *cb);
|
|
|
|
|
|
|
|
|
|
|
|
void doris_http_ctx_add_header(struct doris_http_ctx *ctx, const char *header);
|
2021-08-25 18:40:20 +08:00
|
|
|
|
void doris_http_ctx_add_header_kvstr(struct doris_http_ctx *ctx, const char *headername, const char *value);
|
|
|
|
|
|
void doris_http_ctx_add_header_kvint(struct doris_http_ctx *ctx, const char *headername, u_int64_t value);
|
2021-07-16 16:06:59 +08:00
|
|
|
|
|
2021-09-08 10:45:47 +08:00
|
|
|
|
int doris_http_launch_head_request(struct doris_http_ctx *ctx, const char *uri);
|
2021-07-16 16:06:59 +08:00
|
|
|
|
int doris_http_launch_get_request(struct doris_http_ctx *ctx, const char *uri);
|
|
|
|
|
|
int doris_http_launch_post_request(struct doris_http_ctx *ctx, const char *uri, const char *data, size_t data_len);
|
2021-08-25 18:40:20 +08:00
|
|
|
|
int doris_http_launch_put_request_data(struct doris_http_ctx *ctx, const char *uri, char *data, size_t data_len);
|
|
|
|
|
|
int doris_http_launch_put_request_evbuf(struct doris_http_ctx *ctx, const char *uri, struct evbuffer *evbuf, size_t data_len);
|
2021-07-16 16:06:59 +08:00
|
|
|
|
long long caculate_http_sessions_sum(const struct doris_http_instance *instance);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct curl_socket_data
|
|
|
|
|
|
{
|
|
|
|
|
|
struct event sock_event;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|