29 #include <kvikio/defaults.hpp>
30 #include <kvikio/error.hpp>
31 #include <kvikio/parallel_operation.hpp>
32 #include <kvikio/posix_io.hpp>
33 #include <kvikio/utils.hpp>
63 virtual std::string
str()
const = 0;
83 std::string
str()
const override;
93 std::string _aws_sigv4;
94 std::string _aws_userpwd;
109 static std::string unwrap_or_default(std::optional<std::string> aws_arg,
110 std::string
const& env_var,
111 std::string
const& err_msg =
"");
130 std::string
const& object_name,
131 std::optional<std::string>
const& aws_region,
132 std::optional<std::string> aws_endpoint_url);
142 [[nodiscard]]
static std::pair<std::string, std::string>
parse_s3_url(std::string
const& s3_url);
158 std::optional<std::string> aws_region = std::nullopt,
159 std::optional<std::string> aws_access_key = std::nullopt,
160 std::optional<std::string> aws_secret_access_key = std::nullopt);
179 std::string
const& object_name,
180 std::optional<std::string> aws_region = std::nullopt,
181 std::optional<std::string> aws_access_key = std::nullopt,
182 std::optional<std::string> aws_secret_access_key = std::nullopt,
183 std::optional<std::string> aws_endpoint_url = std::nullopt);
186 std::string
str()
const override;
195 std::unique_ptr<RemoteEndpoint> _endpoint;
229 [[nodiscard]] std::size_t
nbytes() const noexcept;
250 std::
size_t read(
void* buf, std::
size_t size, std::
size_t file_offset = 0);
264 std::future<std::
size_t>
pread(
void* buf,
266 std::
size_t file_offset = 0,
267 std::
size_t task_size =
defaults::task_size());
curl easy handle 指针及其操作的表示。
std::string str() const override
获取此远程点实例的描述。
HttpEndpoint(std::string url)
从 URL 创建一个 HTTP 端点。
void setopt(CurlHandle &curl) override
在 curl handle 上设置所需的连接选项。
virtual void setopt(CurlHandle &curl)=0
在 curl handle 上设置所需的连接选项。
virtual std::string str() const =0
获取此远程点实例的描述。
std::size_t read(void *buf, std::size_t size, std::size_t file_offset=0)
从远程源读取到缓冲区(主机内存或设备内存)。
RemoteEndpoint const & endpoint() const noexcept
获取底层远程端点的常量引用。
std::size_t nbytes() const noexcept
获取文件大小。
RemoteHandle(std::unique_ptr< RemoteEndpoint > endpoint)
从端点创建一个新的远程句柄(推断文件大小)。
std::future< std::size_t > pread(void *buf, std::size_t size, std::size_t file_offset=0, std::size_t task_size=defaults::task_size())
从远程源并行读取到缓冲区(主机内存或设备内存)。
RemoteHandle(std::unique_ptr< RemoteEndpoint > endpoint, std::size_t nbytes)
从端点和文件大小创建一个新的远程句柄。
S3Endpoint(std::string const &bucket_name, std::string const &object_name, std::optional< std::string > aws_region=std::nullopt, std::optional< std::string > aws_access_key=std::nullopt, std::optional< std::string > aws_secret_access_key=std::nullopt, std::optional< std::string > aws_endpoint_url=std::nullopt)
从存储桶和对象名称创建一个 S3 端点。
static std::string url_from_bucket_and_object(std::string const &bucket_name, std::string const &object_name, std::optional< std::string > const &aws_region, std::optional< std::string > aws_endpoint_url)
从 AWS S3 存储桶和对象名称获取 URL。
void setopt(CurlHandle &curl) override
在 curl handle 上设置所需的连接选项。
S3Endpoint(std::string url, std::optional< std::string > aws_region=std::nullopt, std::optional< std::string > aws_access_key=std::nullopt, std::optional< std::string > aws_secret_access_key=std::nullopt)
从 URL 创建一个 S3 端点。
static std::pair< std::string, std::string > parse_s3_url(std::string const &s3_url)
给定形如 "s3://<bucket>/<object>" 的 URL,返回存储桶和对象的名称。
std::string str() const override
获取此远程点实例的描述。