class ugcs::vsm::Write_request

Overview

Baser I/O write request. More…

#include <io_request.h>

class Write_request: public ugcs::vsm::Io_request
{
public:
    // typedefs

    typedef std::shared_ptr<Write_request> Ptr;

    // construction

    template <typename... Args>
    Write_request(Io_buffer::Ptr buffer, Args&&... args);

    // methods

    Io_buffer::Ptr& Data_buffer();

    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

Baser I/O write request.

Typedefs

typedef std::shared_ptr<Write_request> Ptr

Shared pointer to write request.

Construction

template <typename... Args>
Write_request(Io_buffer::Ptr buffer, Args&&... args)

Construct write request.

Parameters:

buffer

Buffer with data to write.

args

Arguments pack for Io_request constructor.

Methods

Io_buffer::Ptr& Data_buffer()

Access the buffer with data to write.

template <typename... Args>
static Ptr Create(Args&&... args)

Create an instance of the request.