class ugcs::vsm::Vehicle_request

Overview

Base class of a generic request for a vehicle. More…

#include <vehicle_request.h>

class Vehicle_request: public std::enable_shared_from_this< Vehicle_request >
{
public:
    // typedefs

    typedef std::shared_ptr<Vehicle_request> Ptr;
    typedef std::weak_ptr<Vehicle_request> Weak_ptr;
    typedef Callback_proxy<void, Result, std::string> Completion_handler;

    // enums

    enum Result;

    // classes

    class Handle;

    // construction

    Vehicle_request(Completion_handler completion_handler, Request_completion_context::Ptr completion_ctx);

    // methods

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

    void Set_completion_result(Result result, const std::string&);
    void Complete();
    void Abort();
    Result Get_completion_result();
    bool Is_completed() const;
    void Add_ref();
    void Release_ref();
};

// direct descendants

template <class Payload>
class Vehicle_request_spec;

template <>
class Vehicle_request_spec<void>;

Detailed Documentation

Base class of a generic request for a vehicle.

It provides reference management methods for associated handles.

Typedefs

typedef std::shared_ptr<Vehicle_request> Ptr

Pointer type.

typedef std::weak_ptr<Vehicle_request> Weak_ptr

Pointer type.

typedef Callback_proxy<void, Result, std::string> Completion_handler

Completion handler type of the request.

Construction

Vehicle_request(Completion_handler completion_handler, Request_completion_context::Ptr completion_ctx)

Construct base request instance.

Methods

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

Create an instance.

void Set_completion_result(Result result, const std::string&)

Set completion result to be used when Complete method is called.

Parameters:

result

Result for Complete method.

void Complete()

Should be called when vehicle request is completed by the user.

Result, previously set by Set_completion_result is used.

void Abort()

Abort the request.

Any pending or submitted processing or completion handler is aborted, if it is not yet being executed.

Result Get_completion_result()

Get current completion result.

bool Is_completed() const

Check if the request was completed.

void Add_ref()

Add reference from user handle.

void Release_ref()

Release reference from user handle.

When last references is released, request is automatically completed with currently set result.