44#if defined( RESTINIO_FREEBSD_TARGET ) || defined( RESTINIO_MACOS_TARGET )
45 auto const n = ::lseek(
this->m_file_descriptor,
this->m_next_write_offset, SEEK_SET );
47 auto const n = ::lseek64(
this->m_file_descriptor,
this->m_next_write_offset, SEEK_SET );
50 if(
static_cast< off_t >( -1 ) != n )
56 const asio_ns::error_code ec{ errno, asio_ns::error::get_system_category() };
57 this->m_after_sendfile_cb( ec,
this->m_transfered_size );
77 auto const n = ::read(
78 this->m_file_descriptor,
80 std::min< file_size_t >(
81 this->m_remained_size,
this->m_chunk_size ) );
88 this->m_after_sendfile_cb(
91 asio_ns::error::get_system_category() },
92 this->m_transfered_size );
96 this->m_after_sendfile_cb(
99 asio_ns::error::get_system_category() },
100 this->m_transfered_size );
107 asio_ns::async_write(
109 asio_ns::const_buffer{
110 this->m_buffer.get(),
111 static_cast< std::size_t >( n ) },
112 asio_ns::bind_executor(
114 make_async_write_handler() ) );
118 this->m_after_sendfile_cb(
119 make_asio_compaible_error(
120 asio_convertible_error_t::async_write_call_failed ),
121 this->m_transfered_size );