![]() |
libfilezilla
|
#include <writer.hpp>
Public Member Functions | |
buffer_writer (buffer &buffer, std::wstring const &name, aio_buffer_pool &pool, size_t size_limit, progress_cb_t &&progress_cb=nullptr) | |
virtual aio_result | preallocate (uint64_t size) override |
Instructs writer to preallocate storage. May be a noop. | |
![]() | |
writer_base (writer_base const &)=delete | |
writer_base & | operator= (writer_base const &)=delete |
aio_result | add_buffer (buffer_lease &&b, aio_waiter &h) |
Pass a buffer to be written out. More... | |
aio_result | add_buffer (buffer_lease &&b, event_handler &h) |
aio_result | finalize (aio_waiter &h) |
Finalizes the writer. More... | |
aio_result | finalize (event_handler &h) |
virtual bool | set_mtime (datetime const &) |
Must be finalized already. | |
void | close () |
![]() | |
void | remove_waiter (aio_waiter &h) |
void | remove_waiter (event_handler &h) |
Additional Inherited Members | |
![]() | |
using | progress_cb_t = std::function< void(writer_base const *, uint64_t written)> |
![]() | |
using | size_type = uint64_t |
![]() | |
static constexpr auto | nosize = static_cast<size_type>(-1) |
![]() | |
writer_base (std::wstring &&name, aio_buffer_pool &pool, progress_cb_t &&progress_cb, size_t max_buffers) noexcept | |
writer_base (std::wstring_view name, aio_buffer_pool &pool, progress_cb_t &&progress_cb, size_t max_buffers) noexcept | |
virtual void | do_close (scoped_lock &) |
![]() | |
void | remove_waiters () |
Call in destructor of most-derived class. | |
void | add_waiter (aio_waiter &h) |
void | add_waiter (event_handler &h) |
void | signal_availibility () |
![]() | |
mutex | mtx_ |
aio_buffer_pool & | buffer_pool_ |
std::wstring const | name_ |
progress_cb_t | progress_cb_ |
size_t const | max_buffers_ {} |
std::list< buffer_lease > | buffers_ |
bool | error_ {} |
uint8_t | finalizing_ {} |
A simple buffer writer.
The buffer must live longer than the writer. Note that there is no synchronization. Never open two writers for the same buffer in different threads, or access the buffer from any other thread while there is a writer.