11 #ifndef _UGCS_VSM_IO_REQUEST_H_
12 #define _UGCS_VSM_IO_REQUEST_H_
36 stream(stream), offset(offset), result_arg(result_arg)
111 typedef std::shared_ptr<Write_request>
Ptr;
117 template <
typename... Args>
119 Io_request(std::forward<Args>(args)...), buffer(buffer)
123 template <
typename... Args>
127 return std::make_shared<Write_request>(std::forward<Args>(args)...);
147 typedef std::shared_ptr<Read_request>
Ptr;
157 template <
typename... Args>
161 buffer_arg(buffer_arg), max_to_read(max_to_read), min_to_read(min_to_read)
165 template <
typename... Args>
169 return std::make_shared<Read_request>(std::forward<Args>(args)...);
192 last_read_buffer = buffer;
202 return last_read_buffer;
void Set_buffer_arg(Io_buffer::Ptr buffer, const Request::Locker &lock=Request::Locker())
Sets the buffer argument.
Definition: io_request.h:179
Generic request for implementing inter-threads communications and asynchronous operations.
Definition: request_container.h:37
Io_stream::Ptr Get_stream() const
Locks and gets the associated stream.
Definition: io_request.h:41
static Ptr Create(Args &&...args)
Create an instance of the request.
Definition: io_request.h:125
int64_t Offset
Offset for read/write operations.
Definition: io_stream.h:75
Baser I/O write request.
Definition: io_request.h:107
Io_result Get_last_result()
Get the most recently set result value.
Definition: io_request.h:81
Abstract stream for I/O operations.
Write_request(Io_buffer::Ptr buffer, Args &&...args)
Construct write request.
Definition: io_request.h:118
size_t Get_max_to_read() const
Get maximal number of bytes to read.
Definition: io_request.h:207
Basic I/O read request.
Definition: io_request.h:143
bool Is_completion_handler_present()
Checks the availability of the completion handler.
Io_result
Result of I/O operation.
Definition: io_stream.h:37
#define ASSERT(x)
No action in release.
Definition: debug.h:68
Io_buffer::Ptr & Data_buffer()
Access the buffer with data to write.
Definition: io_request.h:132
Various common utilities.
Abstract I/O stream interface.
Definition: io_stream.h:66
std::shared_ptr< Io_request > Ptr
Pointer type.
Definition: io_request.h:22
Some other system failure.
size_t Get_min_to_read() const
Get minimal number of bytes to read.
Definition: io_request.h:214
Locker Lock(bool acquire=true) const
Acquire lock for request internal state.
Read_request(Io_buffer::Ptr &buffer_arg, size_t max_to_read, size_t min_to_read, Args &&...args)
Constructor.
Definition: io_request.h:158
Io_stream::Offset & Offset()
Get I/O operation offset value.
Definition: io_request.h:48
Base request for I/O operations.
Definition: io_request.h:21
std::shared_ptr< Read_request > Ptr
Shared pointer to read request.
Definition: io_request.h:147
void Set_result_arg(Io_result result, const Request::Locker &lock=Request::Locker())
Sets the result argument.
Definition: io_request.h:60
std::unique_lock< std::mutex > Locker
Smart lock object for request external locking.
Definition: request_container.h:88
std::shared_ptr< Write_request > Ptr
Shared pointer to write request.
Definition: io_request.h:111
std::shared_ptr< Io_buffer > Ptr
Pointer type.
Definition: io_buffer.h:34
#define DEFINE_COMMON_CLASS(__class_name,...)
Use this macro to define some common attributes for a class.
Definition: utils.h:25
std::shared_ptr< Io_stream > Ptr
Pointer type.
Definition: io_stream.h:67
Io_buffer::Ptr Get_last_read_buffer()
Get the most recently set read buffer.
Definition: io_request.h:200
static Ptr Create(Args &&...args)
Create an instance of read request.
Definition: io_request.h:167