9 #ifndef _UGCS_VSM_VEHICLE_REQUEST_H_
10 #define _UGCS_VSM_VEHICLE_REQUEST_H_
52 explicit operator bool()
const;
55 Fail(
const char *format =
nullptr, ...)
__FORMAT(printf, 2, 3);
58 Fail_v(
const char *format, va_list fmt_args)
__FORMAT(printf, 2, 0);
61 Fail(
const std::string& reason);
130 std::atomic_int ref_count = { 0 };
136 template <
class Payload>
145 template<typename... Args>
150 payload(std::forward<Args>(args)...)
198 template<typename... Args>
Payload payload
Specific payload of the request.
Definition: vehicle_request.h:189
void Assign_result(Result result, const std::string &status_text=std::string())
Assignment operator implementation.
Result Get_completion_result()
Get current completion result.
Debugging and troubleshooting helpers.
void Add_ref()
Add reference from user handle.
Vehicle_request(Completion_handler completion_handler, Request_completion_context::Ptr completion_ctx)
Construct base request instance.
Reference_guard< Vehicle_request::Ptr > vehicle_request
Managed vehicle request.
Definition: vehicle_request.h:72
Reference guard class definition.
std::shared_ptr< Vehicle_request > Ptr
Pointer type.
Definition: vehicle_request.h:22
std::shared_ptr< Request > Ptr
Pointer type.
Definition: request_container.h:38
Operation completed successfully.
Request execution context.
Request execution context.
Definition: request_context.h:24
#define __FORMAT(type, fmt_idx, arg_idx)
Specify that a function has format arguments (like printf or scanf).
Definition: defs.h:24
Result
Request completion result.
Definition: vehicle_request.h:26
virtual ~Vehicle_request()
Make sure class is polymorphic.
Payload & operator*()
Access payload using dereference semantics.
Definition: vehicle_request.h:176
Handle of a specific vehicle request.
Definition: vehicle_request.h:156
void Complete()
Should be called when vehicle request is completed by the user.
bool Is_completed() const
Check if the request was completed.
void Set_completion_result(Result result, const std::string &)
Set completion result to be used when Complete method is called.
Base class of a generic request for a vehicle.
Definition: vehicle_request.h:21
void Abort()
Abort the request.
std::shared_ptr< Request_context > Ptr
Pointer type.
Definition: request_context.h:25
Callback_proxy< void, Result, std::string > Completion_handler
Completion handler type of the request.
Definition: vehicle_request.h:76
#define DEFINE_COMMON_CLASS(__class_name,...)
Use this macro to define some common attributes for a class.
Definition: utils.h:25
Vehicle request with specific payload.
Definition: vehicle_request.h:137
Handle()
Construct initially invalid handle.
Reference guard objects keep references for managed objects.
Definition: reference_guard.h:31
Payload * operator->()
Access payload using pointer semantics.
Definition: vehicle_request.h:162
Handle of the request passed to the SDK user.
Definition: vehicle_request.h:38
void Release_ref()
Release reference from user handle.
Base class for user-defined vehicles.
Definition: vehicle.h:39