2
3
6
7
13#include <restinio/sendfile.hpp>
40 std::function<
void (
const asio_ns::error_code & , file_size_t ) >;
47template <
typename Socket >
56 default_asio_executor executor,
86template<
typename Error_Type>
90 return asio_ns::error_code{
static_cast<
int>(e), asio_ns::error::get_system_category() };
98
99
101#if defined(RESTINIO_OS_WINDOWS)
102 #include "sendfile_operation_win.ipp"
103#elif defined(RESTINIO_OS_UNIX
) || defined(RESTINIO_OS_APPLE)
104 #include "sendfile_operation_posix.ipp"
106 #if defined (RESTINIO_ENABLE_SENDFILE_DEFAULT_IMPL)
107 #include "sendfile_operation_default.ipp"
109 #error "Sendfile not supported, to enable default implementation define RESTINIO_ENABLE_SENDFILE_DEFAULT_IMPL macro"
Base class for storing sendfile operation context.
virtual ~sendfile_operation_base_t()=default
A base runner of sendfile operation (keeps all the data).
after_sendfile_cb_t m_after_sendfile_cb
sendfile_operation_runner_base_t()=delete
auto expires_after() const noexcept
const file_size_t m_chunk_size
file_size_t m_remained_size
file_offset_t m_next_write_offset
file_descriptor_t m_file_descriptor
default_asio_executor m_executor
sendfile_operation_runner_base_t(const sendfile_t &sf, default_asio_executor executor, Socket &socket, after_sendfile_cb_t after_sendfile_cb)
const std::chrono::steady_clock::time_point m_expires_after
file_size_t m_transfered_size
Send file write operation description.
file_descriptor_t file_descriptor() const noexcept
Get the file descriptor of a given sendfile operation.
auto size() const noexcept
Get size of data to write.
auto chunk_size() const noexcept
auto offset() const noexcept
Get offset of data to write.
std::function< void(const asio_ns::error_code &, file_size_t) > after_sendfile_cb_t
Callback type for invocation when sendfile operation completes.
std::shared_ptr< sendfile_operation_base_t > sendfile_operation_shared_ptr_t
auto make_error_code(const Error_Type &e) noexcept
std::FILE * file_descriptor_t