Apollo  6.0
Open source self driving car software
Public Types | Public Member Functions | List of all members
apollo::cyber::Client< Request, Response > Class Template Reference

Client get Response from a responding Service by sending a Request. More...

#include <client.h>

Inheritance diagram for apollo::cyber::Client< Request, Response >:
Inheritance graph
Collaboration diagram for apollo::cyber::Client< Request, Response >:
Collaboration graph

Public Types

using SharedRequest = typename std::shared_ptr< Request >
 
using SharedResponse = typename std::shared_ptr< Response >
 
using Promise = std::promise< SharedResponse >
 
using SharedPromise = std::shared_ptr< Promise >
 
using SharedFuture = std::shared_future< SharedResponse >
 
using CallbackType = std::function< void(SharedFuture)>
 

Public Member Functions

 Client (const std::string &node_name, const std::string &service_name)
 Construct a new Client object. More...
 
 Client ()=delete
 forbid Constructing a new Client object with empty params More...
 
virtual ~Client ()
 
bool Init ()
 Init the Client. More...
 
SharedResponse SendRequest (SharedRequest request, const std::chrono::seconds &timeout_s=std::chrono::seconds(5))
 Request the Service with a shared ptr Request type. More...
 
SharedResponse SendRequest (const Request &request, const std::chrono::seconds &timeout_s=std::chrono::seconds(5))
 Request the Service with a Request object. More...
 
SharedFuture AsyncSendRequest (SharedRequest request)
 Send Request shared ptr asynchronously. More...
 
SharedFuture AsyncSendRequest (const Request &request)
 Send Request object asynchronously. More...
 
SharedFuture AsyncSendRequest (SharedRequest request, CallbackType &&cb)
 Send Request shared ptr asynchronously and invoke cb after we get response. More...
 
bool ServiceIsReady () const
 Is the Service is ready? More...
 
void Destroy ()
 destroy this Client More...
 
template<typename RatioT = std::milli>
bool WaitForService (std::chrono::duration< int64_t, RatioT > timeout=std::chrono::duration< int64_t, RatioT >(-1))
 wait for the connection with the Service established More...
 
- Public Member Functions inherited from apollo::cyber::ClientBase
 ClientBase (const std::string &service_name)
 Construct a new Client Base object. More...
 
virtual ~ClientBase ()
 
const std::string & ServiceName () const
 Get the service name. More...
 

Additional Inherited Members

- Protected Member Functions inherited from apollo::cyber::ClientBase
bool WaitForServiceNanoseconds (std::chrono::nanoseconds time_out)
 
- Protected Attributes inherited from apollo::cyber::ClientBase
std::string service_name_
 

Detailed Description

template<typename Request, typename Response>
class apollo::cyber::Client< Request, Response >

Client get Response from a responding Service by sending a Request.

Template Parameters
Requestthe Service request type
Responsethe Service response type
Warning
One Client can only request one Service

Member Typedef Documentation

◆ CallbackType

template<typename Request, typename Response>
using apollo::cyber::Client< Request, Response >::CallbackType = std::function<void(SharedFuture)>

◆ Promise

template<typename Request, typename Response>
using apollo::cyber::Client< Request, Response >::Promise = std::promise<SharedResponse>

◆ SharedFuture

template<typename Request, typename Response>
using apollo::cyber::Client< Request, Response >::SharedFuture = std::shared_future<SharedResponse>

◆ SharedPromise

template<typename Request, typename Response>
using apollo::cyber::Client< Request, Response >::SharedPromise = std::shared_ptr<Promise>

◆ SharedRequest

template<typename Request, typename Response>
using apollo::cyber::Client< Request, Response >::SharedRequest = typename std::shared_ptr<Request>

◆ SharedResponse

template<typename Request, typename Response>
using apollo::cyber::Client< Request, Response >::SharedResponse = typename std::shared_ptr<Response>

Constructor & Destructor Documentation

◆ Client() [1/2]

template<typename Request, typename Response>
apollo::cyber::Client< Request, Response >::Client ( const std::string &  node_name,
const std::string &  service_name 
)
inline

Construct a new Client object.

Parameters
node_nameused to fill RoleAttribute
service_nameservice name the Client can request

◆ Client() [2/2]

template<typename Request, typename Response>
apollo::cyber::Client< Request, Response >::Client ( )
delete

forbid Constructing a new Client object with empty params

◆ ~Client()

template<typename Request, typename Response>
virtual apollo::cyber::Client< Request, Response >::~Client ( )
inlinevirtual

Member Function Documentation

◆ AsyncSendRequest() [1/3]

template<typename Request , typename Response >
Client< Request, Response >::SharedFuture Client::AsyncSendRequest ( SharedRequest  request)

Send Request shared ptr asynchronously.

◆ AsyncSendRequest() [2/3]

template<typename Request , typename Response >
Client< Request, Response >::SharedFuture Client::AsyncSendRequest ( const Request &  request)

Send Request object asynchronously.

◆ AsyncSendRequest() [3/3]

template<typename Request , typename Response >
Client< Request, Response >::SharedFuture Client::AsyncSendRequest ( SharedRequest  request,
CallbackType &&  cb 
)

Send Request shared ptr asynchronously and invoke cb after we get response.

Parameters
requestRequest shared ptr
cbcallback function after we get response
Returns
SharedFuture a std::future shared ptr

◆ Destroy()

template<typename Request , typename Response >
void Client::Destroy ( )
virtual

destroy this Client

Implements apollo::cyber::ClientBase.

◆ Init()

template<typename Request , typename Response >
bool Client::Init ( )

Init the Client.

Returns
true if init successfully
false if init failed

◆ SendRequest() [1/2]

template<typename Request , typename Response >
Client< Request, Response >::SharedResponse Client::SendRequest ( SharedRequest  request,
const std::chrono::seconds &  timeout_s = std::chrono::seconds(5) 
)

Request the Service with a shared ptr Request type.

Parameters
requestshared ptr of Request type
timeout_srequest timeout, if timeout, response will be empty
Returns
SharedResponse result of this request

◆ SendRequest() [2/2]

template<typename Request , typename Response >
Client< Request, Response >::SharedResponse Client::SendRequest ( const Request &  request,
const std::chrono::seconds &  timeout_s = std::chrono::seconds(5) 
)

Request the Service with a Request object.

Parameters
requestRequest object
timeout_srequest timeout, if timeout, response will be empty
Returns
SharedResponse result of this request

◆ ServiceIsReady()

template<typename Request , typename Response >
bool Client::ServiceIsReady ( ) const
virtual

Is the Service is ready?

Implements apollo::cyber::ClientBase.

◆ WaitForService()

template<typename Request, typename Response>
template<typename RatioT = std::milli>
bool apollo::cyber::Client< Request, Response >::WaitForService ( std::chrono::duration< int64_t, RatioT >  timeout = std::chrono::duration<int64_t, RatioT>(-1))
inline

wait for the connection with the Service established

Template Parameters
RatioTtimeout unit, default is std::milli
Parameters
timeoutwait time in unit of RatioT
Returns
true if the connection established
false if timeout

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