Skip to content

refactor(gateway): cyclic-subscription samplers and the bulk-data store come from the core - #760

Open
bburda wants to merge 4 commits into
feat/gateway-core-8-build-splitfrom
feat/gateway-core-9-core-sampling-bulkdata
Open

bburda wants to merge 4 commits into
feat/gateway-core-8-build-splitfrom
feat/gateway-core-9-core-sampling-bulkdata

Conversation

@bburda

@bburda bburda commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

Pull Request

Summary

The built-in cyclic-subscription samplers (data, faults, configurations, logs, updates) move from the node into the core: register_builtin_samplers(GatewayServices &). The data sampler reads an item the same way GET /{entity}/data/{id} does, so data served by a plugin DataProvider can be sampled too.

The core builds the bulk-data store from BulkDataConfig (the bulk_data.* names and defaults). The rosbags category is listed only when the fault manager serves rosbags (FaultServiceTransport::serves_rosbags(), default true), and otherwise answers like an unknown category. GET / reports bulk_data and cyclic_subscriptions from the services the host provides. The ROS 2 node keeps its behaviour.


Issue


Type

  • Bug fix
  • New feature or tests
  • Breaking change
  • Documentation only

Testing

  • scripts/check_cores_without_ros/run.sh builds the core with gcc 9 and no ROS, starts its REST server and checks subscriptions on topic data, plugin data and faults (two SSE events with changing values), bulk-data upload, list, download and delete, the rosbags answer and the capabilities.
  • ./scripts/test.sh integ --packages-select ros2_medkit_integration_tests covers the ROS 2 node path (subscriptions and bulk-data tests).

Checklist

  • Breaking changes are clearly described (and announced in docs / changelog if needed)
  • Tests were added or updated if needed
  • Docs were updated if behavior or public API changed

…n samplers

register_builtin_samplers() registers data, faults, configurations, logs and updates from GatewayServices, so a program that hosts the core gets samplers without the ROS node. The data sampler reads through the same provider resolution as GET /{entity}/data/{item}, so plugin-served data can be subscribed to.
…he categories the host serves

BulkDataConfig and make_bulk_data_store() build the store from the bulk_data settings, and the node uses them. The rosbags category is listed only when the fault manager transport serves rosbags, and GET / reports bulk_data and cyclic_subscriptions only when the host provides a store or rosbags, and a transport and a sampler.
…an unknown category

The bulk-data list and download routes take the rosbags path only when the fault manager serves rosbags. Otherwise the category falls through to the store check and answers 404 Unknown category.
@bburda bburda self-assigned this Oct 26, 2026
@bburda
bburda added this pull request to stack #759 October 26, 2026 19:47

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant