Thrill  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
request_with_state Class Reference

Detailed Description

Request with completion shared_state.

Definition at line 27 of file request_with_state.hpp.

+ Inheritance diagram for request_with_state:
+ Collaboration diagram for request_with_state:

#include <request_with_state.hpp>

Public Member Functions

virtual ~request_with_state ()
 
bool cancel () override
 Cancel a request. More...
 
bool poll () final
 
void wait (bool measure_time=true) final
 Suspends calling thread until completion of the request. More...
 
- Public Member Functions inherited from request_with_waiters
 request_with_waiters (const completion_handler &on_complete, file *file, void *buffer, offset_type offset, size_type bytes, read_or_write op)
 
- Public Member Functions inherited from request
 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 ()
 
requestoperator= (const request &)=delete
 non-copyable: delete assignment operator More...
 
requestoperator= (request &&)=default
 move-assignment operator: default More...
 
fileget_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 ()
 
request_interfaceoperator= (const request_interface &)=delete
 non-copyable: delete assignment operator 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...
 
ReferenceCounteroperator= (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 Types

enum  request_state { OP = 0, DONE = 1, READY2DIE = 2 }
 

Protected Member Functions

 request_with_state (const completion_handler &on_complete, file *file, void *buffer, offset_type offset, size_type bytes, read_or_write op)
 
void completed (bool canceled) override
 
- Protected Member Functions inherited from request_with_waiters
bool add_waiter (onoff_switch *sw) final
 
void delete_waiter (onoff_switch *sw) final
 
void notify_waiters () final
 
size_t num_waiters ()
 returns number of waiters More...
 
- Protected Member Functions inherited from request
void check_nref (bool after=false)
 

Protected Attributes

shared_state< request_statestate_
 
- Protected Attributes inherited from request
std::unique_ptr< io_errorerror_
 
completion_handler on_complete_
 
filefile_
 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...
 

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...
 

Member Enumeration Documentation

enum request_state
protected

states of request. OP - operating, DONE - request served, READY2DIE - can be destroyed

Enumerator
OP 
DONE 
READY2DIE 

Definition at line 34 of file request_with_state.hpp.

Constructor & Destructor Documentation

request_with_state ( const completion_handler on_complete,
file file,
void *  buffer,
offset_type  offset,
size_type  bytes,
read_or_write  op 
)
inlineprotected

Definition at line 39 of file request_with_state.hpp.

Member Function Documentation

bool cancel ( )
overridevirtual

Cancel a request.

The request is canceled unless already being processed. However, cancelation cannot be guaranteed. Canceled requests must still be waited for in order to ensure correct operation. If the request was canceled successfully, the completion handler will not be called.

Returns
true iff the request was canceled successfully

Implements request_interface.

Definition at line 46 of file request_with_state.cpp.

References request::buffer_, file::delete_request_ref(), request_with_state::DONE, request::file_, singleton< disk_queues >::get_instance(), file::get_queue_id(), LOG, request_with_waiters::notify_waiters(), request::offset_, request::on_complete_, request_with_state::READY2DIE, shared_state< ValueType >::set_to(), and request_with_state::state_.

bool poll ( )
finalvirtual

Polls the status of the request.

Returns
true if request is completed, otherwise false

Implements request_interface.

Definition at line 69 of file request_with_state.cpp.

References request::check_errors(), request_with_state::DONE, request_with_state::READY2DIE, and request_with_state::state_.

void wait ( bool  measure_time = true)
finalvirtual

Member Data Documentation

constexpr bool debug = false
staticprivate

Definition at line 29 of file request_with_state.hpp.


The documentation for this class was generated from the following files: