SMACC2
Loading...
Searching...
No Matches
cl_http::CpHttpRequestExecutor Class Reference

#include <cp_http_request_executor.hpp>

Inheritance diagram for cl_http::CpHttpRequestExecutor:
Inheritance graph
Collaboration diagram for cl_http::CpHttpRequestExecutor:
Collaboration graph

Public Types

enum class  HttpMethod { GET = static_cast<int>(boost::beast::http::verb::get) , POST = static_cast<int>(boost::beast::http::verb::post) , PUT = static_cast<int>(boost::beast::http::verb::put) }
 
using TResponse = http_session_base::TResponse
 

Public Member Functions

 CpHttpRequestExecutor ()
 
virtual ~CpHttpRequestExecutor ()
 
void onInitialize () override
 
void setDependencies (CpHttpConnectionManager *connMgr, CpHttpSessionManager *sessMgr)
 
void executeRequest (const HttpMethod method, const std::string &path="/", const std::string &body="", const std::unordered_map< std::string, std::string > &headers={})
 
- Public Member Functions inherited from smacc2::ISmaccComponent
 ISmaccComponent ()
 
virtual ~ISmaccComponent ()
 
virtual std::string getName () const
 

Public Attributes

smacc2::SmaccSignal< void(const TResponse &)> onResponseReceived_
 

Private Attributes

CpHttpConnectionManagerconnectionManager_
 
CpHttpSessionManagersessionManager_
 
std::function< void(TResponse)> responseHandler_
 

Static Private Attributes

static constexpr int HTTP_VERSION = 11
 

Additional Inherited Members

- Protected Member Functions inherited from smacc2::ISmaccComponent
template<typename TOrthogonal , typename TClient >
void onComponentInitialization ()
 
template<typename EventType >
void postEvent (const EventType &ev)
 
template<typename EventType >
void postEvent ()
 
template<typename TOrthogonal , typename TSourceObject >
void onStateOrthogonalAllocation ()
 
template<typename TComponent >
void requiresComponent (TComponent *&requiredComponentStorage, ComponentRequirement requirementType=ComponentRequirement::SOFT)
 
template<typename TComponent >
void requiresComponent (std::string name, TComponent *&requiredComponentStorage, ComponentRequirement requirementType=ComponentRequirement::SOFT)
 
template<typename TClient >
void requiresClient (TClient *&requiredClientStorage)
 
template<typename SmaccComponentType , typename TOrthogonal , typename TClient , typename... TArgs>
SmaccComponentType * createSiblingComponent (TArgs... targs)
 
template<typename SmaccComponentType , typename TOrthogonal , typename TClient , typename... TArgs>
SmaccComponentType * createSiblingNamedComponent (std::string name, TArgs... targs)
 
rclcpp::Node::SharedPtr getNode ()
 
rclcpp::Logger getLogger () const
 
ISmaccStateMachinegetStateMachine ()
 
- Protected Attributes inherited from smacc2::ISmaccComponent
ISmaccStateMachinestateMachine_
 
ISmaccClientowner_
 

Detailed Description

Definition at line 36 of file cp_http_request_executor.hpp.

Member Typedef Documentation

◆ TResponse

Member Enumeration Documentation

◆ HttpMethod

Enumerator
GET 
POST 
PUT 

Definition at line 40 of file cp_http_request_executor.hpp.

41 {
42 GET = static_cast<int>(boost::beast::http::verb::get),
43 POST = static_cast<int>(boost::beast::http::verb::post),
44 PUT = static_cast<int>(boost::beast::http::verb::put),
45 };

Constructor & Destructor Documentation

◆ CpHttpRequestExecutor()

cl_http::CpHttpRequestExecutor::CpHttpRequestExecutor ( )

Definition at line 28 of file cp_http_request_executor.cpp.

29: connectionManager_(nullptr), sessionManager_(nullptr)
30{
31 responseHandler_ = [this](const TResponse & res) { onResponseReceived_(res); };
32}
smacc2::SmaccSignal< void(const TResponse &)> onResponseReceived_
std::function< void(TResponse)> responseHandler_
CpHttpConnectionManager * connectionManager_

References onResponseReceived_, and responseHandler_.

◆ ~CpHttpRequestExecutor()

cl_http::CpHttpRequestExecutor::~CpHttpRequestExecutor ( )
virtual

Definition at line 34 of file cp_http_request_executor.cpp.

34{}

Member Function Documentation

◆ executeRequest()

void cl_http::CpHttpRequestExecutor::executeRequest ( const HttpMethod method,
const std::string & path = "/",
const std::string & body = "",
const std::unordered_map< std::string, std::string > & headers = {} )

Definition at line 41 of file cp_http_request_executor.cpp.

44{
45 auto path_used = path;
46 if (path.empty() || path[0] != '/')
47 {
48 path_used = "/" + path;
49 }
50
51 RCLCPP_INFO(
52 this->getLogger(), "Executing request: SSL=%d Server=%s Path=%s Port=%s",
53 sessionManager_->isSSL(), sessionManager_->getServerName().c_str(), path_used.c_str(),
54 sessionManager_->getPort().c_str());
55
56 auto executor = connectionManager_->getStrand();
57 auto session = sessionManager_->createSession(executor, responseHandler_);
58
59 session->setBody(body);
60 session->setHeaders(headers);
61 session->run(
62 sessionManager_->getServerName(), path_used, static_cast<boost::beast::http::verb>(method),
64}
boost::asio::any_io_executor getStrand()
std::shared_ptr< http_session_base > createSession(boost::asio::any_io_executor executor, std::function< void(const http_session_base::TResponse &)> callback)
rclcpp::Logger getLogger() const

References connectionManager_, cl_http::CpHttpSessionManager::createSession(), smacc2::ISmaccComponent::getLogger(), cl_http::CpHttpSessionManager::getPort(), cl_http::CpHttpSessionManager::getServerName(), cl_http::CpHttpConnectionManager::getStrand(), HTTP_VERSION, cl_http::CpHttpSessionManager::isSSL(), responseHandler_, and sessionManager_.

Referenced by cl_http::CbHttpRequestBase::onEntry().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ onInitialize()

void cl_http::CpHttpRequestExecutor::onInitialize ( )
overridevirtual

Reimplemented from smacc2::ISmaccComponent.

Definition at line 36 of file cp_http_request_executor.cpp.

37{
38 // Dependencies set via setDependencies() before onInitialize() is called
39}

◆ setDependencies()

void cl_http::CpHttpRequestExecutor::setDependencies ( CpHttpConnectionManager * connMgr,
CpHttpSessionManager * sessMgr )
inline

Definition at line 55 of file cp_http_request_executor.hpp.

56 {
57 connectionManager_ = connMgr;
58 sessionManager_ = sessMgr;
59 }

References connectionManager_, and sessionManager_.

Referenced by cl_http::ClHttp::onComponentInitialization().

Here is the caller graph for this function:

Member Data Documentation

◆ connectionManager_

CpHttpConnectionManager* cl_http::CpHttpRequestExecutor::connectionManager_
private

Definition at line 72 of file cp_http_request_executor.hpp.

Referenced by executeRequest(), and setDependencies().

◆ HTTP_VERSION

int cl_http::CpHttpRequestExecutor::HTTP_VERSION = 11
staticconstexprprivate

Definition at line 70 of file cp_http_request_executor.hpp.

Referenced by executeRequest().

◆ onResponseReceived_

smacc2::SmaccSignal<void(const TResponse &)> cl_http::CpHttpRequestExecutor::onResponseReceived_

◆ responseHandler_

std::function<void(TResponse)> cl_http::CpHttpRequestExecutor::responseHandler_
private

Definition at line 75 of file cp_http_request_executor.hpp.

Referenced by CpHttpRequestExecutor(), and executeRequest().

◆ sessionManager_

CpHttpSessionManager* cl_http::CpHttpRequestExecutor::sessionManager_
private

Definition at line 73 of file cp_http_request_executor.hpp.

Referenced by executeRequest(), and setDependencies().


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