No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-11-25
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Maintainers

  • Jaycee Lock

Authors

No additional authors.

HTTP Client (cl_http)

SMACC2 client library for making HTTP/HTTPS requests using Boost.Beast.

Architecture

/home/brettpac/workspaces/isaac_ros-dev/src/SMACC2/smacc2_client_library/cl_http The cl_http follows a pure component-based architecture with three specialized components:

ClHttp (Client - Orchestrator)
├── CpHttpConnectionManager - io_context and thread management
├── CpHttpSessionManager - SSL context and session creation
└── CpHttpRequestExecutor - Request execution and response handling

Components

CpHttpConnectionManager

Responsibility: Manages the asynchronous I/O infrastructure

  • Owns boost::asio::io_context
  • Manages worker thread lifecycle
  • Provides strand for thread-safe operations

Lifetime: State machine scoped (created with ClHttp, destroyed with state machine)

CpHttpSessionManager

Responsibility: Manages HTTP/HTTPS session configuration

  • Parses server URLs (protocol, host, port)
  • Manages SSL context for HTTPS connections
  • Creates session objects (http_session or ssl_http_session)

Lifetime: State machine scoped

CpHttpRequestExecutor

Responsibility: Coordinates HTTP request execution

  • Accepts request parameters (method, path, body, headers)
  • Acquires strand from CpHttpConnectionManager
  • Acquires session from CpHttpSessionManager
  • Executes requests and emits response signals

Lifetime: State machine scoped

Signal Flow

User Code (Behavior)
    ↓
CpHttpRequestExecutor::executeRequest()
    ↓
Session created (http_session/ssl_http_session)
    ↓
Request executed asynchronously
    ↓
Response received
    ↓
CpHttpRequestExecutor::onResponseReceived_ (SmaccSignal)
    ↓ (backward compatibility)
ClHttp::onResponseReceived_ (forwarded)
    ↓
Behavior callback

Usage

Quick Start: Using Base Behaviors

The easiest way to make HTTP requests is using the provided base behaviors:

#include <cl_http/client_behaviors/cb_http_get_request.hpp>

class StHttpRequest : public smacc2::SmaccState<StHttpRequest, SmExample>
{
public:
  using SmaccState::SmaccState;

  void runtimeConfigure() override
  {
    auto behavior = this->configure<cl_http::CbHttpGetRequest>();
  }
};

Custom Behaviors: Component-Based Approach

For custom HTTP behavior, inherit from base class and override response handling:

```cpp #include <cl_http/client_behaviors/cb_http_request.hpp>

class CbCustomRequest : public cl_http::CbHttpRequestBase { public: CbCustomRequest() : CbHttpRequestBase(CpHttpRequestExecutor::HttpMethod::GET) {}

void onResponseReceived(const CpHttpRequestExecutor::TResponse& response) override {

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package cl_http

2.3.19 (2025-06-17)

  • OpenAI example client ported to SMACC (#557)

    • initial commit for openAI example
    • Replaced get with post, added key fetch logic
    • Added ability to modify the body of an http request for the http client
    • Added functionality to encode and send image data to ChatGPT
    • Added APIs to add headers to an outgoing HTTP request
    • HTTP requests can now deal with CDNs

    * Expanded example openAI node to submit a more sophisticated request with an image

    • Using env variable for test iamge location
    • Fixed commit errors
    • Renamed instantiation of HTTP request CB to something more specific to OpenAI
  • Moved HTTP client behaviour to client library. Also added GET and POS… (#549)

    • Moved HTTP client behaviour to client library. Also added GET and POST-specific versions of the smacc HTTP client behaviour to make them easier to use
    • Added copyrights
    • Fixed typos
  • Http client (#522)

    • Ported http work over from smacc1
    • Added example showasing http requests
    • Fixed some typos in the HTTP example
    • Made provision for HTTP GET/POST in the HTTP client
    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update smacc_action_client_base.hpp Pretty sure this change was made accidently.

    * Update smacc_action_client_base.hpp Messed up first commit

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Ported http work over from smacc1

    • Added example showasing http requests

    • Fixed some typos in the HTTP example

    • Made provision for HTTP GET/POST in the HTTP client

    • Moved HTTP client into the client_libraries folder and made separate compilation units. Modified examples to use this new client

    * Update http_client.cpp Added License to file to clean up format error

    * Update http_client.cpp Found better Copyright & License for CI Format error.

    * Update cb_http_request.hpp Another little format error

    * Update sm_atomic_http.py Somehow a bracket became a cNode

      • Fixed errors with HTTP requests not triggering,
    • Fixed response callback not triggering correctly and causing a crash

    • Fixed example not transitioning back to state 1 after a response has been received

    • Added helper class to handle server name related interactions

    • Added SSL implementation, need to make provision for SSL and non-SSLD requests

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
sm_atomic_http

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_http at Robotics Stack Exchange