class ugcs::vsm::Read_request¶
Overview¶
Basic I/O read request. More…
#include <io_request.h> class Read_request: public ugcs::vsm::Io_request { public: // typedefs typedef std::shared_ptr<Read_request> Ptr; // construction template <typename... Args> Read_request( Io_buffer::Ptr& buffer_arg, size_t max_to_read, size_t min_to_read, Args&&... args ); // methods void Set_buffer_arg(Io_buffer::Ptr buffer, const Request::Locker& lock = Request::Locker()); Io_buffer::Ptr Get_last_read_buffer(); size_t Get_max_to_read() const; size_t Get_min_to_read() const; template <typename... Args> static Ptr Create(Args&&... args); };
Inherited Members¶
public: // typedefs typedef std::shared_ptr<Request> Ptr; typedef std::weak_ptr<Request> Weak_ptr; typedef Callback_base<void>::Ptr<> Handler; typedef std::unique_lock<std::mutex> Locker; typedef std::shared_ptr<Io_request> Ptr; typedef std::weak_ptr<Io_request> Weak_ptr; // enums enum Status; // methods template <typename... Args> static Ptr Create(Args&&... args); void Set_processing_handler(const Handler& handler); void Set_processing_handler(Handler&& handler); void Set_completion_handler(const Request_container::Ptr& context, const Handler& handler); void Set_completion_handler(const Request_container::Ptr& context, Handler&& handler); void Set_cancellation_handler(const Handler& handler); void Set_cancellation_handler(Handler&& handler); void Set_done_handler(Handler& handler); void Set_done_handler(Handler&& handler); Request_container::Ptr Get_completion_context(Locker locker = Locker()) const; void Process(bool process_request); void Complete(Status status = Status::OK, Locker locker = Locker()); void Cancel(Locker locker = Locker()); void Abort(Locker locker = Locker()); Locker Lock(bool acquire = true) const; Status Get_status() const; bool Is_completed() const; bool Is_request_processing_needed() const; bool Is_aborted() const; bool Is_processing() const; bool Is_completion_delivered() const; bool Is_completion_delivering_started() const; bool Is_done() const; bool Wait_done( bool process_ctx = true, std::chrono::milliseconds timeout = std::chrono::milliseconds::zero() ); bool& Timed_out(); template <typename... Args> static Ptr Create(Args&&... args); Io_stream::Ptr Get_stream() const; Io_stream::Offset& Offset(); void Set_result_arg(Io_result result, const Request::Locker& lock = Request::Locker()); Io_result Get_last_result();
Detailed Documentation¶
Basic I/O read request.
Typedefs¶
typedef std::shared_ptr<Read_request> Ptr
Shared pointer to read request.
Construction¶
template <typename... Args> Read_request( Io_buffer::Ptr& buffer_arg, size_t max_to_read, size_t min_to_read, Args&&... args )
Constructor.
Parameters:
buffer_arg |
Reference to the I/O buffer argument of the completion handler. Resulting data should be read into this buffer. |
max_to_read |
Maximal number of bytes to read. |
min_to_read |
Minimal number of bytes to read. |
args |
Argument for the base class constructor. |
Methods¶
void Set_buffer_arg(Io_buffer::Ptr buffer, const Request::Locker& lock = Request::Locker())
Sets the buffer argument.
Parameters:
buffer |
Buffer to set. |
lock |
If present, should be the already acquired lock for the request (will not be unlocked by the method), otherwise new lock is acquired and released inside the method. |
Io_buffer::Ptr Get_last_read_buffer()
Get the most recently set read buffer.
XXX Return nullptr if the read buffer was never set.
size_t Get_max_to_read() const
Get maximal number of bytes to read.
size_t Get_min_to_read() const
Get minimal number of bytes to read.
template <typename... Args> static Ptr Create(Args&&... args)
Create an instance of read request.