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

Package Summary

Tags No category tags.
Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++
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
Tags cplusplus state-machine cpp amr mobile-robots ros2 autonomy moveit2 mobilerobots ros2-foxy nav2 ros2-humble ros2-jazzy
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Additional Links

No additional links.

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

Tags No category tags.
Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++
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
Tags cplusplus state-machine cpp amr mobile-robots ros2 autonomy moveit2 mobilerobots ros2-foxy nav2 ros2-humble ros2-jazzy
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Additional Links

No additional links.

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

Tags No category tags.
Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++
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
Tags cplusplus state-machine cpp amr mobile-robots ros2 autonomy moveit2 mobilerobots ros2-foxy nav2 ros2-humble ros2-jazzy
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Additional Links

No additional links.

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

Tags No category tags.
Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++
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
Tags cplusplus state-machine cpp amr mobile-robots ros2 autonomy moveit2 mobilerobots ros2-foxy nav2 ros2-humble ros2-jazzy
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Additional Links

No additional links.

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 github showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++
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
Tags cplusplus state-machine cpp amr mobile-robots ros2 autonomy moveit2 mobilerobots ros2-foxy nav2 ros2-humble ros2-jazzy
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Additional Links

No additional links.

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

Tags No category tags.
Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++
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
Tags cplusplus state-machine cpp amr mobile-robots ros2 autonomy moveit2 mobilerobots ros2-foxy nav2 ros2-humble ros2-jazzy
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Additional Links

No additional links.

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

Tags No category tags.
Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++
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
Tags cplusplus state-machine cpp amr mobile-robots ros2 autonomy moveit2 mobilerobots ros2-foxy nav2 ros2-humble ros2-jazzy
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Additional Links

No additional links.

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

Tags No category tags.
Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++
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
Tags cplusplus state-machine cpp amr mobile-robots ros2 autonomy moveit2 mobilerobots ros2-foxy nav2 ros2-humble ros2-jazzy
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Additional Links

No additional links.

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

Tags No category tags.
Version 3.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++
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
Tags cplusplus state-machine cpp amr mobile-robots ros2 autonomy moveit2 mobilerobots ros2-foxy nav2 ros2-humble ros2-jazzy
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The cl_http package

Additional Links

No additional links.

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