Ignition Transport

API Reference

10.0.0
ReqHandler< Req, Rep > Class Template Reference

It creates a reply handler for the specific protobuf messages used. 'Req' is a protobuf message type containing the input parameters of the service request. 'Rep' is a protobuf message type that will be filled with the service response. More...

#include <ReqHandler.hh>

Public Member Functions

 ReqHandler (const std::string &_nUuid)
 
std::shared_ptr< Rep > CreateMsg (const std::string &_data) const
 Create a specific protobuf message given its serialized data. More...
 
void NotifyResult (const std::string &_rep, const bool _result)
 Executes the callback registered for this handler and notify a potential requester waiting on a blocking call. More...
 
virtual std::string RepTypeName () const
 Get the message type name used in the service response. More...
 
virtual std::string ReqTypeName () const
 Get the message type name used in the service request. More...
 
bool Serialize (std::string &_buffer) const
 Serialize the Req protobuf message stored. More...
 
void SetCallback (const std::function< void(const Rep &_rep, const bool _result)> &_cb)
 Set the callback for this handler. More...
 
void SetMessage (const Req *_reqMsg)
 Set the REQ protobuf message for this handler. More...
 
void SetResponse (const Rep *)
 This function is only used for compatibility with SetResponse() when [REP = google::protobuf::Message]. It shouldn't do anything. More...
 
- Public Member Functions inherited from IReqHandler
 IReqHandler (const std::string &_nUuid)
 Constructor. More...
 
virtual ~IReqHandler ()=default
 Destructor. More...
 
std::string HandlerUuid () const
 Returns the unique handler UUID. More...
 
std::string NodeUuid () const
 Get the node UUID. More...
 
bool Requested () const
 Returns if this service call request has already been requested. More...
 
void Requested (const bool _value)
 Mark the service call as requested (or not). More...
 
std::string Response () const
 Get the service response as raw bytes. More...
 
bool Result () const
 Get the result of the service response. More...
 
template<typename Lock >
bool WaitUntil (Lock &_lock, const unsigned int _timeout)
 Block the current thread until the response to the service request is available or until the timeout expires. This method uses a condition variable to notify when the response is available. More...
 

Additional Inherited Members

- Public Attributes inherited from IReqHandler
bool repAvailable
 When there is a blocking service call request, the call can be unlocked when a service call REP is available. This variable captures if we have found a node that can satisty our request. More...
 
- Protected Attributes inherited from IReqHandler
std::condition_variable_any condition
 Condition variable used to wait until a service call REP is available. More...
 
std::string hUuid
 Unique handler's UUID. More...
 
std::string rep
 Stores the service response as raw bytes. More...
 
bool result
 Stores the result of the service call. More...
 

Detailed Description

template<typename Req, typename Rep>
class ignition::transport::ReqHandler< Req, Rep >

It creates a reply handler for the specific protobuf messages used. 'Req' is a protobuf message type containing the input parameters of the service request. 'Rep' is a protobuf message type that will be filled with the service response.

Constructor & Destructor Documentation

◆ ReqHandler()

ReqHandler ( const std::string _nUuid)
inlineexplicit

Member Function Documentation

◆ CreateMsg()

std::shared_ptr<Rep> CreateMsg ( const std::string _data) const
inline

Create a specific protobuf message given its serialized data.

Parameters
[in]_dataThe serialized data.
Returns
Pointer to the specific protobuf message.

References std::endl().

◆ NotifyResult()

void NotifyResult ( const std::string _rep,
const bool  _result 
)
inlinevirtual

Executes the callback registered for this handler and notify a potential requester waiting on a blocking call.

Parameters
[in]_repSerialized data containing the response coming from the service call responser.
[in]_resultContains the result of the service call coming from the service call responser.

Implements IReqHandler.

References IReqHandler::condition, condition_variable_any::notify_one(), IReqHandler::rep, IReqHandler::repAvailable, and IReqHandler::result.

◆ RepTypeName()

virtual std::string RepTypeName ( ) const
inlinevirtual

Get the message type name used in the service response.

Returns
Message type name.

Implements IReqHandler.

◆ ReqTypeName()

virtual std::string ReqTypeName ( ) const
inlinevirtual

Get the message type name used in the service request.

Returns
Message type name.

Implements IReqHandler.

◆ Serialize()

bool Serialize ( std::string _buffer) const
inlinevirtual

Serialize the Req protobuf message stored.

Parameters
[out]_bufferThe serialized data.
Returns
True if the serialization succeed or false otherwise.

Implements IReqHandler.

References std::endl().

◆ SetCallback()

void SetCallback ( const std::function< void(const Rep &_rep, const bool _result)> &  _cb)
inline

Set the callback for this handler.

Parameters
[in]_cbThe callback with the following parameters:
[in]_repProtobuf message containing the service response.
[in]_resultTrue when the service request was successful or false otherwise.

◆ SetMessage()

void SetMessage ( const Req *  _reqMsg)
inline

Set the REQ protobuf message for this handler.

Parameters
[in]_reqMsgProtofub message containing the input parameters of of the service request.

References std::endl().

◆ SetResponse()

void SetResponse ( const Rep *  )
inline

This function is only used for compatibility with SetResponse() when [REP = google::protobuf::Message]. It shouldn't do anything.

Parameters
[in]_repMsgProtofub message containing the variable where the result will be stored.

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