2020-09-11 16:13:02 +08:00
|
|
|
|
/*************************************************************************
|
2021-04-23 09:57:58 +08:00
|
|
|
|
> File Name: hos_client.h
|
2020-09-11 16:13:02 +08:00
|
|
|
|
> Author: pxz
|
|
|
|
|
|
> Created Time: Thu 10 Sep 2020 03:13:59 PM CST
|
|
|
|
|
|
************************************************************************/
|
|
|
|
|
|
#ifndef __HOS_CLIENT_INIT__
|
|
|
|
|
|
#define __HOS_CLIENT_INIT__
|
|
|
|
|
|
|
2021-04-23 09:57:58 +08:00
|
|
|
|
/*hos instance */
|
|
|
|
|
|
typedef struct hos_instance_s{
|
|
|
|
|
|
bool result;
|
|
|
|
|
|
int error_code;
|
|
|
|
|
|
char error_message[1024];
|
|
|
|
|
|
const char *hos_url_prefix;
|
|
|
|
|
|
}* hos_instance;
|
2020-09-11 16:13:02 +08:00
|
|
|
|
|
2020-09-21 19:19:18 +08:00
|
|
|
|
#define HOS_CLIENT_OK 0
|
|
|
|
|
|
|
|
|
|
|
|
/* fd mode */
|
|
|
|
|
|
#define FILE_MODE 0x00
|
|
|
|
|
|
#define BUFF_MODE 0x01
|
|
|
|
|
|
#define APPEND_MODE 0x02 /* 默认不追加 */
|
|
|
|
|
|
|
|
|
|
|
|
/* hos 错误码 */
|
|
|
|
|
|
enum hoserrors
|
|
|
|
|
|
{
|
|
|
|
|
|
HOS_PARAMETER_ERROR = -1,
|
2021-04-23 09:57:58 +08:00
|
|
|
|
HOS_FILE_NOT_EXIST = -2,
|
2020-09-21 19:19:18 +08:00
|
|
|
|
HOS_HASH_NOT_FIND = -3,
|
|
|
|
|
|
HOS_FD_NOT_ENOUGH = -4,
|
2020-10-20 17:20:27 +08:00
|
|
|
|
HOS_SEND_FAILED = -5,
|
2021-04-23 09:57:58 +08:00
|
|
|
|
HOS_RUNTIME_LOG_FAILED = -6,
|
|
|
|
|
|
HOS_CONF_ERROR = -7,
|
|
|
|
|
|
HOS_BUCKET_NOT_EXIST = -8,
|
2020-09-21 19:19:18 +08:00
|
|
|
|
|
|
|
|
|
|
};
|
2020-09-14 19:19:50 +08:00
|
|
|
|
|
|
|
|
|
|
/* s3 的错误码 */
|
|
|
|
|
|
enum s3errors
|
|
|
|
|
|
{
|
2020-09-21 19:19:18 +08:00
|
|
|
|
//From Core Aws::S3::S3Error + 1//
|
2020-09-14 19:19:50 +08:00
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
2020-09-21 19:19:18 +08:00
|
|
|
|
INCOMPLETE_SIGNATURE = 1,
|
|
|
|
|
|
INTERNAL_FAILURE = 2,
|
|
|
|
|
|
INVALID_ACTION = 3,
|
|
|
|
|
|
INVALID_CLIENT_TOKEN_ID = 4,
|
|
|
|
|
|
INVALID_PARAMETER_COMBINATION = 5,
|
|
|
|
|
|
INVALID_QUERY_PARAMETER = 6,
|
|
|
|
|
|
INVALID_PARAMETER_VALUE = 7,
|
|
|
|
|
|
MISSING_ACTION = 8, // SDK should never allow
|
|
|
|
|
|
MISSING_AUTHENTICATION_TOKEN = 9, // SDK should never allow
|
|
|
|
|
|
MISSING_PARAMETER = 10, // SDK should never allow
|
|
|
|
|
|
OPT_IN_REQUIRED = 11,
|
|
|
|
|
|
REQUEST_EXPIRED = 12,
|
|
|
|
|
|
SERVICE_UNAVAILABLE = 13,
|
|
|
|
|
|
THROTTLING = 14,
|
|
|
|
|
|
VALIDATION = 15,
|
|
|
|
|
|
ACCESS_DENIED = 16,
|
|
|
|
|
|
RESOURCE_NOT_FOUND = 17, // Shared with multiple services
|
|
|
|
|
|
UNRECOGNIZED_CLIENT = 18, // Most likely caused by an invalid access key or secret key
|
|
|
|
|
|
MALFORMED_QUERY_STRING = 19,
|
|
|
|
|
|
SLOW_DOWN = 20,
|
|
|
|
|
|
REQUEST_TIME_TOO_SKEWED = 21,
|
|
|
|
|
|
INVALID_SIGNATURE = 22,
|
|
|
|
|
|
SIGNATURE_DOES_NOT_MATCH = 23,
|
|
|
|
|
|
INVALID_ACCESS_KEY_ID = 24,
|
|
|
|
|
|
REQUEST_TIMEOUT = 25,
|
|
|
|
|
|
NETWORK_CONNECTION = 100, // General failure to send message to service
|
2020-09-14 19:19:50 +08:00
|
|
|
|
|
|
|
|
|
|
// These are needed for logical reasons
|
2020-09-21 19:19:18 +08:00
|
|
|
|
UNKNOWN = 101,
|
|
|
|
|
|
CLIENT_SIGNING_FAILURE = 102, // Client failed to sign the request
|
|
|
|
|
|
USER_CANCELLED = 103, // User cancelled the request
|
|
|
|
|
|
SERVICE_EXTENSION_START_RANGE = 129,
|
2020-09-14 19:19:50 +08:00
|
|
|
|
BUCKET_ALREADY_EXISTS= SERVICE_EXTENSION_START_RANGE + 1,
|
|
|
|
|
|
BUCKET_ALREADY_OWNED_BY_YOU,
|
|
|
|
|
|
NO_SUCH_BUCKET,
|
|
|
|
|
|
NO_SUCH_KEY,
|
|
|
|
|
|
NO_SUCH_UPLOAD,
|
|
|
|
|
|
OBJECT_ALREADY_IN_ACTIVE_TIER,
|
|
|
|
|
|
OBJECT_NOT_IN_ACTIVE_TIER
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2020-11-03 18:09:03 +08:00
|
|
|
|
typedef void (*put_finished_callback)(bool, const char *, const char *, const char *, void *);
|
2020-09-21 19:19:18 +08:00
|
|
|
|
|
2021-04-23 09:57:58 +08:00
|
|
|
|
/*//FIXME 改为static,不再对外提供
|
|
|
|
|
|
*************************************************************************************
|
|
|
|
|
|
* 函数名: hos_instance
|
2020-12-01 16:12:41 +08:00
|
|
|
|
* 参数: const char *serverip 目的地址,如"192.168.44.12"
|
|
|
|
|
|
* size_t port 端口号
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* const char *accesskeyid AWS access key ID,如"default"
|
|
|
|
|
|
* const char *secretkey AWS secret key,如"default"
|
|
|
|
|
|
* siez_t pool_size 线程池大小
|
2020-10-09 14:20:39 +08:00
|
|
|
|
* size_t thread_sum 线程总数
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* 返回值: 成功返回一个实例,失败返回NULL。
|
|
|
|
|
|
*************************************************************************************
|
|
|
|
|
|
hos_instance hos_client_create(const char *serverip, size_t port, const char *accesskeyid, const char *secretkey, size_t pool_size);
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
2021-03-29 18:42:20 +08:00
|
|
|
|
/*************************************************************************************
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* 函数名: hos_init_instance
|
|
|
|
|
|
* 输入参数: conf_path 配置文件路径
|
|
|
|
|
|
* thread_num 线程数
|
|
|
|
|
|
* 返回值: hos 实例创建结果
|
2021-03-29 18:42:20 +08:00
|
|
|
|
*************************************************************************************/
|
2021-04-23 09:57:58 +08:00
|
|
|
|
hos_instance hos_init_instance(const char *conf_path, const char *module, size_t thread_num, const char *bucket);
|
2020-09-21 19:19:18 +08:00
|
|
|
|
/*************************************************************************************
|
2021-04-26 13:59:36 +08:00
|
|
|
|
* 函数名: hos_get_instance
|
|
|
|
|
|
* 返回值: hos_instance 成功,result 为true
|
2020-09-21 19:19:18 +08:00
|
|
|
|
*************************************************************************************/
|
2021-04-26 13:59:36 +08:00
|
|
|
|
hos_instance hos_get_instance();
|
2020-09-14 19:19:50 +08:00
|
|
|
|
/*************************************************************************************
|
|
|
|
|
|
* 函数名: hos_create_bucket
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* 参数: const char * bucket 桶名称
|
|
|
|
|
|
* 返回值: int 成功返回0,S3错误返回s3errors错误码,hos client错误返回hoserrors错误码
|
2020-10-19 15:35:16 +08:00
|
|
|
|
*************************************************************************************/
|
2021-04-23 09:57:58 +08:00
|
|
|
|
int hos_create_bucket(hos_instance instance, const char *bucket);
|
2020-10-19 15:35:16 +08:00
|
|
|
|
/*************************************************************************************
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* 函数名: hos_upload_file
|
|
|
|
|
|
* 参数: hos_instance instance 非空句柄
|
2020-09-14 19:19:50 +08:00
|
|
|
|
* const char * bucket 桶名称
|
2020-10-09 14:20:39 +08:00
|
|
|
|
* const char * file_path 上传对象路径
|
2020-09-21 19:19:18 +08:00
|
|
|
|
* put_finished_callback callback upload操作结束时调用的回调函数
|
2020-10-09 14:20:39 +08:00
|
|
|
|
* void *userdata 用户自定义数据
|
|
|
|
|
|
* size_t thread_id 当前线程id
|
2020-09-21 19:19:18 +08:00
|
|
|
|
* 返回值 int 成功返回0,失败返回hoserros错误码
|
|
|
|
|
|
*************************************************************************************/
|
2021-04-23 09:57:58 +08:00
|
|
|
|
int hos_upload_file(hos_instance instance, const char *bucket, const char *file_path, put_finished_callback callback, void* userdata, size_t thread_id);
|
2020-09-21 19:19:18 +08:00
|
|
|
|
/*************************************************************************************
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* 函数名: hos_upload_buf
|
|
|
|
|
|
* 参数: hos_instance instance 非空句柄
|
2020-09-21 19:19:18 +08:00
|
|
|
|
* const char * bucket 桶名称
|
|
|
|
|
|
* const char * object 上传对象名称
|
2020-10-09 14:20:39 +08:00
|
|
|
|
* const char *buf 上传的buf
|
|
|
|
|
|
* size_t buf_len 上传的buf的长度
|
2020-09-21 19:19:18 +08:00
|
|
|
|
* put_finished_callback callback upload操作结束时调用的回调函数
|
2020-10-09 14:20:39 +08:00
|
|
|
|
* void *userdata 用户自定义数据
|
|
|
|
|
|
* size_t thread_id 当前线程id
|
2020-09-21 19:19:18 +08:00
|
|
|
|
* 返回值 int 成功返回0,失败返回hoserros错误码
|
|
|
|
|
|
*************************************************************************************/
|
2021-04-23 09:57:58 +08:00
|
|
|
|
int hos_upload_buf(hos_instance instance, const char *bucket, const char *object, const char *buf, size_t buf_len, put_finished_callback callback, void *userdata, size_t thread_id);
|
2020-09-21 19:19:18 +08:00
|
|
|
|
/*************************************************************************************
|
|
|
|
|
|
* 函数名: hos_open_fd
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* 参数: const char * bucket 桶名称
|
2020-09-21 19:19:18 +08:00
|
|
|
|
* const char * object 上传对象名称
|
|
|
|
|
|
* put_finished_callback callback upload操作结束时调用的回调函数
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* void *data 用户回调函数自定义数据
|
2020-09-21 19:19:18 +08:00
|
|
|
|
* size_t thread_id 线程ID
|
|
|
|
|
|
* int mode 模式 (FILE OR BUFFER, APPEND OR NOT)
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* 返回值 int 成功返回fd(fd >=3),失败返回hoserros错误码
|
2020-09-21 19:19:18 +08:00
|
|
|
|
*************************************************************************************/
|
2021-04-23 09:57:58 +08:00
|
|
|
|
int hos_open_fd(const char *bucket, const char *object, put_finished_callback callback, void *userdata, size_t thread_id, int mode);
|
2020-09-21 19:19:18 +08:00
|
|
|
|
/*************************************************************************************
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* 函数名: hos_write
|
|
|
|
|
|
* 参数: size_t fd hos_open_fd返回的fd
|
2020-09-21 19:19:18 +08:00
|
|
|
|
* const char * stream 待上传的数据
|
|
|
|
|
|
* size_t stream 待上传的数据长度
|
|
|
|
|
|
* size_t thread_id 线程ID
|
2020-10-09 14:20:39 +08:00
|
|
|
|
* size_t position append模式下的每段内容编号
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* 返回值 int 成功返回0,失败返回hoserror
|
2020-09-21 19:19:18 +08:00
|
|
|
|
*************************************************************************************/
|
2020-10-19 15:35:16 +08:00
|
|
|
|
int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id);
|
2020-09-21 19:19:18 +08:00
|
|
|
|
/*************************************************************************************
|
|
|
|
|
|
* 函数名: hos_close_fd
|
|
|
|
|
|
* 参数: size_t fd fd
|
|
|
|
|
|
* size_t thread_id 线程ID
|
|
|
|
|
|
* 返回值 int 成功返回0,失败返回hoserros错误码
|
2020-09-14 19:19:50 +08:00
|
|
|
|
*************************************************************************************/
|
2020-09-21 19:19:18 +08:00
|
|
|
|
int hos_close_fd(size_t fd, size_t thread_id);
|
2020-09-14 19:19:50 +08:00
|
|
|
|
/*************************************************************************************
|
2021-04-23 09:57:58 +08:00
|
|
|
|
* 函数名: hos_shutdown_instance
|
2020-09-21 19:19:18 +08:00
|
|
|
|
* 返回值 int 成功返回0,失败返回hoserros错误码
|
2020-09-14 19:19:50 +08:00
|
|
|
|
*************************************************************************************/
|
2021-04-23 09:57:58 +08:00
|
|
|
|
int hos_shutdown_instance();
|
2020-09-11 16:13:02 +08:00
|
|
|
|
#endif
|