summaryrefslogtreecommitdiff
path: root/src/hos_client.cpp
diff options
context:
space:
mode:
authorpengxuanzheng <[email protected]>2020-09-23 19:06:09 +0800
committerpengxuanzheng <[email protected]>2020-11-02 18:59:51 +0800
commitb3e7de2b213931626a3c856355d44bb112b83274 (patch)
treee2bfa4b7bbaa4e45d12dc9f6f7880ee7c8a3403e /src/hos_client.cpp
parent10e17cb043eb408b726aa51c51c092674e5db4a1 (diff)
线程池支持
Diffstat (limited to 'src/hos_client.cpp')
-rw-r--r--src/hos_client.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/hos_client.cpp b/src/hos_client.cpp
index 7c19b8d6..797a075d 100644
--- a/src/hos_client.cpp
+++ b/src/hos_client.cpp
@@ -12,6 +12,7 @@ extern "C"
#include <aws/s3/model/PutObjectRequest.h>
#include <aws/s3/model/CreateBucketRequest.h>
#include <aws/core/auth/AWSCredentials.h>
+#include <aws/core/utils/threading/Executor.h>
#include <fstream>
#include <iostream>
#include <mutex>
@@ -24,6 +25,7 @@ typedef struct hos_client_handle_s
Aws::S3::S3Client *S3Client;
size_t append_size;
size_t thread_sum;
+ Aws::SDKOptions *options;
Aws::Vector<Aws::S3::Model::Bucket> buckets;
}hos_client_handle_t;
@@ -60,6 +62,14 @@ static void PutObjectAsyncFinished(const Aws::S3::S3Client* S3Client,
//put_finished_callback& callback = *(put_finished_callback *)hos_info->callback;
put_finished_callback callback = (put_finished_callback)hos_info->callback;
callback(result, error, hos_info->userdata);
+ if (hos_info->mode & APPEND_MODE)
+ {
+ //APPEND MODE 保留fd
+ }else
+ {
+ //完整上传 删除fd
+ hos_close_fd(fd, thread_id);
+ }
}
hos_client_handle hos_client_create(const char *endpoint, const char *accesskeyid, const char *secretkey, size_t thread_sum)
@@ -68,6 +78,7 @@ hos_client_handle hos_client_create(const char *endpoint, const char *accesskeyi
{
return NULL;
}
+ //Aws::SDKOptions *options = (Aws::SDKOptions *)malloc(sizeof(Aws::SDKOptions));
Aws::SDKOptions options;
Aws::InitAPI(options);
@@ -79,10 +90,16 @@ hos_client_handle hos_client_create(const char *endpoint, const char *accesskeyi
config.endpointOverride = endpoint;
config.verifySSL = false;
config.enableEndpointDiscovery = true;
+ //std::shared_ptr<Aws::Utils::Threading::Executor> pooled_thread = Aws::MakeShared<Aws::Utils::Threading::PooledThreadExecutor>("ClientConfigration");
+ //std::shared_ptr<Aws::Utils::Threading::Executor> test = std::make_shared<Aws::Utils::Threading::PooledThreadExecutor>(1000);
+ //config.executor(Aws::MakeShared<Aws::Utils::Threading::PooledThreadExecutor>("ClientConfiguration"));
+ //config.executor = std::dynamic_pointer_cast<Aws::Utils::Threading::PooledThreadExecutor>(config.executor);
+ config.executor = std::shared_ptr<Aws::Utils::Threading::PooledThreadExecutor>(std::make_shared<Aws::Utils::Threading::PooledThreadExecutor>(100));
handle->S3Client = new Aws::S3::S3Client(credentials, config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false);
handle->append_size = 30 * 1024 * 1024;
handle->thread_sum = thread_sum;
+ handle->options = &options;
/* 获取当前用户的所有的buckets */
Aws::S3::Model::ListBucketsOutcome outcome = handle->S3Client->ListBuckets();
@@ -305,7 +322,7 @@ int hos_close_fd(size_t fd, size_t thread_id)
return HOS_PARAMETER_ERROR;
}
- delete_info_by_fd(hash_hos_info[thread_id], fd);
+ delete_info_by_fd(&hash_hos_info[thread_id], fd);
return HOS_CLIENT_OK;
}
@@ -320,11 +337,14 @@ int hos_client_destory(hos_client_handle handle)
delete handle->S3Client;
+ Aws::Vector<Aws::S3::Model::Bucket>().swap(handle->buckets);
+ Aws::ShutdownAPI(*(handle->options));
+
for (i = 0; i < handle->thread_sum; i++)
{
- delete_all(hash_hos_info[i]);
+ delete_all(&hash_hos_info[i]);
}
-
+ //free(handle->options);
free(handle);
return HOS_CLIENT_OK;