VSM C++ SDK
Vehicle Specific Modules SDK
ugcs::vsm::Io_request Class Reference

Base request for I/O operations. More...

#include <io_request.h>

Inheritance diagram for ugcs::vsm::Io_request:
ugcs::vsm::Request_container::Request ugcs::vsm::Read_request ugcs::vsm::Write_request

Public Types

typedef std::shared_ptr< Io_requestPtr
 Pointer type.
 
typedef std::weak_ptr< Io_requestWeak_ptr
 Pointer type.
 
- Public Types inherited from ugcs::vsm::Request_container::Request
enum  Status {
  Status::PENDING, Status::CANCELLATION_PENDING, Status::CANCELING, Status::PROCESSING,
  Status::ABORT_PENDING, Status::ABORTED, Status::RESULT_CODES, Status::OK = RESULT_CODES,
  Status::CANCELED
}
 Request processing status which is returned by the handler or set internally. More...
 
typedef std::shared_ptr< RequestPtr
 Pointer type.
 
typedef std::weak_ptr< RequestWeak_ptr
 Pointer type.
 
typedef Callback_base< void >::Ptr<> Handler
 Callback denoting a handler of the request. More...
 
typedef std::unique_lock< std::mutex > Locker
 Smart lock object for request external locking. More...
 

Public Member Functions

 Io_request (Io_stream::Ptr stream, Io_stream::Offset offset, Io_result &result_arg)
 Construct I/O request. More...
 
Io_stream::Ptr Get_stream () const
 Locks and gets the associated stream. More...
 
Io_stream::OffsetOffset ()
 Get I/O operation offset value. More...
 
void Set_result_arg (Io_result result, const Request::Locker &lock=Request::Locker())
 Sets the result argument. More...
 
Io_result Get_last_result ()
 Get the most recently set result value. More...
 
- Public Member Functions inherited from ugcs::vsm::Request_container::Request
void Set_processing_handler (const Handler &handler)
 Set processing handler for the request. More...
 
void Set_processing_handler (Handler &&handler)
 
void Set_completion_handler (const Request_container::Ptr &context, const Handler &handler)
 Set completion handler for the request. More...
 
void Set_completion_handler (const Request_container::Ptr &context, Handler &&handler)
 
void Set_cancellation_handler (const Handler &handler)
 Set request cancellation handler. More...
 
void Set_cancellation_handler (Handler &&handler)
 
void Set_done_handler (Handler &handler)
 Set request done handler. More...
 
void Set_done_handler (Handler &&handler)
 
Request_container::Ptr Get_completion_context (Locker locker=Locker()) const
 Get completion context associated with the request. More...
 
void Process (bool process_request)
 Process the request. More...
 
void Complete (Status status=Status::OK, Locker locker=Locker())
 Complete the request processing. More...
 
void Cancel (Locker locker=Locker())
 Cancel request processing. More...
 
void Abort (Locker locker=Locker())
 Call this method when request is not going to be processed by Process() method but is just removed from request queue. More...
 
Locker Lock (bool acquire=true) const
 Acquire lock for request internal state. More...
 
Status Get_status () const
 Get request current status. More...
 
bool Is_completed () const
 Check if request is completed. More...
 
bool Is_request_processing_needed () const
 Return true only if the request processing (i.e. More...
 
bool Is_aborted () const
 Check if request is aborted. More...
 
bool Is_processing () const
 Check if request is still processing. More...
 
bool Is_completion_delivered () const
 Check if the request completion notification is delivered. More...
 
bool Is_completion_delivering_started () const
 Check if the request completion handler already invoked (but might not be returned yet.
 
bool Is_done () const
 Check if request is fully processed, i.e. More...
 
bool Wait_done (bool process_ctx=true, std::chrono::milliseconds timeout=std::chrono::milliseconds::zero())
 Wait for request is fully processed, i.e. More...
 
bool & Timed_out ()
 Access timed_out member. More...
 

Static Public Member Functions

template<typename... Args>
static Ptr Create (Args &&...args)
 Create an instance. More...
 
- Static Public Member Functions inherited from ugcs::vsm::Request_container::Request
template<typename... Args>
static Ptr Create (Args &&...args)
 Create an instance. More...
 

Additional Inherited Members

- Protected Member Functions inherited from ugcs::vsm::Request_container::Request
bool Is_completion_handler_present ()
 Checks the availability of the completion handler. More...
 

Detailed Description

Base request for I/O operations.

Constructor & Destructor Documentation

ugcs::vsm::Io_request::Io_request ( Io_stream::Ptr  stream,
Io_stream::Offset  offset,
Io_result result_arg 
)
inline

Construct I/O request.

Parameters
streamRelated I/O stream instance.
offsetOffset for I/O operation if applicable. If the target channel does not support the seeking this parameter is ignored. If the stream is responsible for keeping current offset it should check real offset when request is handled.
result_argReference to result value which is passed as argument to the user provided completion handler.

Member Function Documentation

template<typename... Args>
static Ptr ugcs::vsm::Io_request::Create ( Args &&...  args)
inlinestatic

Create an instance.

Io_result ugcs::vsm::Io_request::Get_last_result ( )
inline

Get the most recently set result value.

XXX Return Io_result::OTHER_FAILURE if the result value was never set.

Io_stream::Ptr ugcs::vsm::Io_request::Get_stream ( ) const
inline

Locks and gets the associated stream.

Io_stream::Offset& ugcs::vsm::Io_request::Offset ( )
inline

Get I/O operation offset value.

void ugcs::vsm::Io_request::Set_result_arg ( Io_result  result,
const Request::Locker lock = Request::Locker() 
)
inline

Sets the result argument.

Parameters
resultResutl value to set.
lockIf 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.

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