Thrill
0.1
|
Request object encapsulating basic properties like file and offset.
Definition at line 49 of file request.hpp.
#include <request.hpp>
Public Member Functions | |
request (const completion_handler &on_complete, file *file, void *buffer, offset_type offset, size_type bytes, read_or_write op) | |
request (const request &)=delete | |
non-copyable: delete copy-constructor More... | |
request (request &&)=default | |
move-constructor: default More... | |
virtual | ~request () |
request & | operator= (const request &)=delete |
non-copyable: delete assignment operator More... | |
request & | operator= (request &&)=default |
move-assignment operator: default More... | |
Accessors | |
file * | get_file () const |
void * | buffer () const |
offset_type | offset () const |
size_type | bytes () const |
read_or_write | op () const |
void | check_alignment () const |
std::ostream & | print (std::ostream &out) const final |
Dumps properties of a request. More... | |
void | error_occured (const char *msg) |
void | error_occured (const std::string &msg) |
void | check_errors () |
Rises an exception if there were error with the I/O. More... | |
const char * | io_type () const override |
Identifies the type of I/O implementation. More... | |
void | release_file_reference () |
Public Member Functions inherited from request_interface | |
request_interface ()=default | |
request_interface (const request_interface &)=delete | |
non-copyable: delete copy-constructor More... | |
virtual | ~request_interface () |
virtual bool | add_waiter (onoff_switch *sw)=0 |
virtual bool | cancel ()=0 |
Cancel a request. More... | |
virtual void | delete_waiter (onoff_switch *sw)=0 |
request_interface & | operator= (const request_interface &)=delete |
non-copyable: delete assignment operator More... | |
virtual bool | poll ()=0 |
virtual void | wait (bool measure_time=true)=0 |
Suspends calling thread until completion of the request. More... | |
Public Member Functions inherited from ReferenceCounter | |
ReferenceCounter () noexcept | |
new objects have zero reference count More... | |
ReferenceCounter (const ReferenceCounter &) noexcept | |
coping still creates a new object with zero reference count More... | |
~ReferenceCounter () | |
bool | dec_reference () const noexcept |
Call whenever resetting (i.e. More... | |
void | inc_reference () const noexcept |
Call whenever setting a pointer to the object. More... | |
ReferenceCounter & | operator= (const ReferenceCounter &) noexcept |
assignment operator, leaves pointers unchanged More... | |
size_t | reference_count () const noexcept |
Return the number of references to this object (for debugging) More... | |
bool | unique () const noexcept |
Test if the ReferenceCounter is referenced by only one CountingPtr. More... | |
Protected Member Functions | |
void | check_nref (bool after=false) |
Protected Member Functions inherited from request_interface | |
virtual void | completed (bool canceled)=0 |
virtual void | notify_waiters ()=0 |
Protected Attributes | |
std::unique_ptr< io_error > | error_ |
completion_handler | on_complete_ |
Base Parameter of an I/O Request | |
file * | file_ |
file implementation to perform I/O with More... | |
void * | buffer_ |
data buffer to transfer More... | |
offset_type | offset_ |
offset within file More... | |
size_type | bytes_ |
number of bytes at buffer_ to transfer More... | |
read_or_write | op_ |
READ or WRITE. More... | |
Private Member Functions | |
void | check_nref_failed (bool after) |
Static Private Attributes | |
static constexpr bool | debug = false |
Additional Inherited Members | |
Public Types inherited from request_interface | |
using | offset_type = uint64_t |
type for offsets within a file More... | |
enum | read_or_write { READ, WRITE } |
using | size_type = size_t |
type for block transfer sizes More... | |
request | ( | const completion_handler & | on_complete, |
file * | file, | ||
void * | buffer, | ||
offset_type | offset, | ||
size_type | bytes, | ||
read_or_write | op | ||
) |
Definition at line 23 of file request.cpp.
References file::add_request_ref(), request::file_, ReferenceCounter::reference_count(), and TLX_LOG.
|
virtual |
Definition at line 35 of file request.cpp.
References ReferenceCounter::reference_count(), and TLX_LOG.
|
inline |
Definition at line 96 of file request.hpp.
References request::buffer_.
|
inline |
Definition at line 98 of file request.hpp.
References request::bytes_.
void check_alignment | ( | ) | const |
Definition at line 40 of file request.cpp.
References foxxll::BlockAlignment, request::buffer_, request::bytes_, request::offset_, and TLX_LOG1.
Referenced by request::op(), and serving_request::serving_request().
|
inline |
Rises an exception if there were error with the I/O.
Definition at line 114 of file request.hpp.
References request::io_type(), and request::release_file_reference().
Referenced by BlockPool::OnReadComplete(), BlockPool::OnWriteComplete(), request_with_state::poll(), and request_with_state::wait().
|
inlineprotected |
Definition at line 127 of file request.hpp.
References request::check_nref_failed(), foxxll::operator<<(), and ReferenceCounter::reference_count().
Referenced by serving_request::serve().
|
private |
Definition at line 56 of file request.cpp.
References request::buffer_, request::bytes_, request::file_, file::io_type(), request::offset_, request::op_, request_interface::READ, ReferenceCounter::reference_count(), and TLX_LOG1.
Referenced by request::check_nref().
void error_occured | ( | const char * | msg | ) |
Inform the request object that an error occurred during the I/O execution.
Definition at line 80 of file request.cpp.
References request::error_.
Referenced by request::op(), and serving_request::serve().
void error_occured | ( | const std::string & | msg | ) |
Inform the request object that an error occurred during the I/O execution.
Definition at line 85 of file request.cpp.
References request::error_.
|
inline |
Definition at line 95 of file request.hpp.
References request::file_.
|
overridevirtual |
Identifies the type of I/O implementation.
Implements request_interface.
Reimplemented in serving_request.
Definition at line 90 of file request.cpp.
References request::file_, and file::io_type().
Referenced by request::check_errors().
|
inline |
Definition at line 97 of file request.hpp.
References request::offset_.
|
inline |
Definition at line 99 of file request.hpp.
References request::check_alignment(), request::error_occured(), request::op_, and request::print().
|
finalvirtual |
Dumps properties of a request.
Implements request_interface.
Definition at line 70 of file request.cpp.
References request::buffer_, request::bytes_, request::file_, request::offset_, request::op_, and request_interface::READ.
Referenced by request::op(), and foxxll::operator<<().
void release_file_reference | ( | ) |
Definition at line 95 of file request.cpp.
References file::delete_request_ref(), and request::file_.
Referenced by request::check_errors(), request_with_state::completed(), and BlockPool::OnReadComplete().
|
protected |
data buffer to transfer
Definition at line 65 of file request.hpp.
Referenced by request::buffer(), request_with_state::cancel(), request::check_alignment(), request::check_nref_failed(), request::print(), and serving_request::serve().
|
protected |
number of bytes at buffer_ to transfer
Definition at line 69 of file request.hpp.
Referenced by request::bytes(), request::check_alignment(), request::check_nref_failed(), request::print(), and serving_request::serve().
|
staticprivate |
Definition at line 51 of file request.hpp.
|
protected |
Definition at line 56 of file request.hpp.
Referenced by request::error_occured().
|
protected |
file implementation to perform I/O with
Definition at line 63 of file request.hpp.
Referenced by request_with_state::cancel(), request::check_nref_failed(), request::get_file(), serving_request::io_type(), request::io_type(), request::print(), request::release_file_reference(), request::request(), and serving_request::serve().
|
protected |
offset within file
Definition at line 67 of file request.hpp.
Referenced by request_with_state::cancel(), request::check_alignment(), request::check_nref_failed(), request::offset(), request::print(), and serving_request::serve().
|
protected |
Definition at line 55 of file request.hpp.
Referenced by request_with_state::cancel(), and request_with_state::completed().
|
protected |
READ or WRITE.
Definition at line 71 of file request.hpp.
Referenced by request::check_nref_failed(), request::op(), request::print(), serving_request::serve(), and request_with_state::wait().