公共成员函数 | 所有成员列表
kvikio::RemoteHandle 类参考

远程文件的句柄。 更多...

#include <remote_handle.hpp>

公共成员函数

 RemoteHandle (std::unique_ptr< RemoteEndpoint > endpoint, std::size_t nbytes)
 从端点和文件大小创建一个新的远程句柄。 更多...
 
 RemoteHandle (std::unique_ptr< RemoteEndpoint > endpoint)
 从端点创建一个新的远程句柄(推断文件大小)。 更多...
 
 RemoteHandle (RemoteHandle &&o)=default
 
RemoteHandleoperator= (RemoteHandle &&o)=default
 
 RemoteHandle (RemoteHandle const &)=delete
 
RemoteHandleoperator= (RemoteHandle const &)=delete
 
std::size_t nbytes () const noexcept
 获取文件大小。 更多...
 
RemoteEndpoint const & endpoint () const noexcept
 获取底层远程端点的 const 引用。 更多...
 
std::size_t read (void *buf, std::size_t size, std::size_t file_offset=0)
 从远程源读取到缓冲区(主机或设备内存)。 更多...
 
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())
 并行地从远程源读取到缓冲区(主机或设备内存)。 更多...
 

详细描述

远程文件的句柄。

定义于文件 remote_handle.hpp193 行。

构造函数和析构函数文档

◆ RemoteHandle() [1/2]

kvikio::RemoteHandle::RemoteHandle ( std::unique_ptr< RemoteEndpoint endpoint,
std::size_t  nbytes 
)

从端点和文件大小创建一个新的远程句柄。

参数
endpoint用于后续 IO 的远程端点。
nbytes远程文件的大小(以字节为单位)。

◆ RemoteHandle() [2/2]

kvikio::RemoteHandle::RemoteHandle ( std::unique_ptr< RemoteEndpoint endpoint)

从端点创建一个新的远程句柄(推断文件大小)。

文件大小是使用 endpoint 从远程服务器接收的。

参数
endpoint用于后续 IO 的远程端点。

成员函数文档

◆ endpoint()

RemoteEndpoint const& kvikio::RemoteHandle::endpoint ( ) const
noexcept

获取底层远程端点的 const 引用。

返回值
远程端点。

◆ nbytes()

std::size_t kvikio::RemoteHandle::nbytes ( ) const
noexcept

获取文件大小。

注意,这非常快,无需通信。

返回值
字节数。

◆ pread()

std::future<std::size_t> kvikio::RemoteHandle::pread ( void *  buf,
std::size_t  size,
std::size_t  file_offset = 0,
std::size_t  task_size = defaults::task_size() 
)

并行地从远程源读取到缓冲区(主机或设备内存)。

此 API 是 .read() 的并行异步版本,它将操作划分为大小为 task_size 的任务,以便在默认线程池中执行。

参数
buf指向主机或设备内存的指针。
size要读取的字节数。
file_offset文件偏移量(以字节为单位)。
task_size每个任务的大小(以字节为单位)。
返回值
一个 future,完成后返回读取的字节数,该数值始终等于 size

◆ read()

std::size_t kvikio::RemoteHandle::read ( void *  buf,
std::size_t  size,
std::size_t  file_offset = 0 
)

从远程源读取到缓冲区(主机或设备内存)。

当读取到设备内存时,会使用一个跳板缓冲区(bounce buffer)来避免许多小的内存复制到设备。使用 kvikio::default::bounce_buffer_size_reset() 来设置此跳板缓冲区的大小(默认为 16 MiB)。

参数
buf指向主机或设备内存的指针。
size要读取的字节数。
file_offset文件偏移量(以字节为单位)。
返回值
读取的字节数,该数值始终等于 size

本类的文档生成自以下文件: