16 #ifndef FLEX_UTILS_REMOTE_OSS_STORAGE_H_
17 #define FLEX_UTILS_REMOTE_OSS_STORAGE_H_
23 #include "flex/third_party/aliyun-oss-cpp-sdk/sdk/include/alibabacloud/oss/OssClient.h"
24 #include "flex/third_party/aliyun-oss-cpp-sdk/sdk/include/alibabacloud/oss/client/ClientConfiguration.h"
31 static constexpr
const char* kOSSAccessKeyId =
"OSS_ACCESS_KEY_ID";
32 static constexpr
const char* kOSSAccessKeySecret =
"OSS_ACCESS_KEY_SECRET";
33 static constexpr
const char* kOSSEndpoint =
"OSS_ENDPOINT";
34 static constexpr
const char* kOSSBucketName =
"OSS_BUCKET_NAME";
35 static constexpr
const char* kOSSConcurrency =
"OSS_CONCURRENCY";
37 std::string accesskey_id_;
38 std::string accesskey_secret_;
39 std::string endpoint_;
40 std::string bucket_name_;
41 int32_t concurrency_ = 4;
42 uint64_t partition_size_ = 1024 * 1024 * 128;
43 AlibabaCloud::OSS::ClientConfiguration client_conf_;
45 void load_conf_from_env();
48 class OSSRemoteStorageUploader :
public RemoteStorageUploader {
50 OSSRemoteStorageUploader(OSSConf conf = {}) : conf_(conf) {}
52 ~OSSRemoteStorageUploader()
override =
default;
56 Status Open()
override;
58 Status Put(
const std::string& local_path,
const std::string& remote_path,
59 bool override =
false)
override;
61 Status Delete(
const std::string& remote_path)
override;
63 Status Close()
override;
67 std::shared_ptr<AlibabaCloud::OSS::OssClient> client_;
70 class OSSRemoteStorageDownloader :
public RemoteStorageDownloader {
72 OSSRemoteStorageDownloader(OSSConf conf = {}) : conf_(conf) {}
74 ~OSSRemoteStorageDownloader()
override =
default;
76 Status Open()
override;
78 Status Get(
const std::string& remote_path,
79 const std::string& local_path)
override;
81 Status List(
const std::string& remote_path,
82 std::vector<std::string>& list)
override;
84 Status Close()
override;
87 bool get_metadata_etag(
const std::string& remote_path, std::string& etag);
89 std::shared_ptr<AlibabaCloud::OSS::OssClient> client_;
Definition: adj_list.h:23