feat: add mcap recorder control and cnats providers
Register an MCAP recorder service on the streamer control subjects, reuse the shared recording request and status model, and expose the zed recording preview/conversion helper. This also replaces the temporary cnats boolean with the explicit CVMMAP_CNATS_PROVIDER modes and documents the supported system and workspace build paths.
This commit is contained in:
+41
-2
@@ -8,10 +8,42 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
find_package(cppzmq QUIET)
|
||||
if (DEFINED CVMMAP_STREAMER_USE_SYSTEM_CNATS)
|
||||
message(FATAL_ERROR
|
||||
"CVMMAP_STREAMER_USE_SYSTEM_CNATS was removed; use CVMMAP_CNATS_PROVIDER=system")
|
||||
endif()
|
||||
set(
|
||||
CVMMAP_CNATS_PROVIDER
|
||||
"system"
|
||||
CACHE STRING
|
||||
"How to resolve cnats: system or workspace")
|
||||
set_property(CACHE CVMMAP_CNATS_PROVIDER PROPERTY STRINGS system workspace)
|
||||
set(_CVMMAP_STREAMER_CNATS_PROVIDER_VALUES system workspace)
|
||||
list(FIND _CVMMAP_STREAMER_CNATS_PROVIDER_VALUES "${CVMMAP_CNATS_PROVIDER}" _CVMMAP_STREAMER_CNATS_PROVIDER_INDEX)
|
||||
if (_CVMMAP_STREAMER_CNATS_PROVIDER_INDEX EQUAL -1)
|
||||
message(FATAL_ERROR
|
||||
"Invalid CVMMAP_CNATS_PROVIDER='${CVMMAP_CNATS_PROVIDER}' (expected: system|workspace)")
|
||||
endif()
|
||||
set(CVMMAP_LOCAL_ROOT "${CMAKE_CURRENT_LIST_DIR}/../cv-mmap" CACHE PATH "Path to a local cv-mmap checkout")
|
||||
set(CVMMAP_LOCAL_BUILD "${CVMMAP_LOCAL_ROOT}/build/core" CACHE PATH "Path to local cv-mmap build artifacts")
|
||||
if (cvmmap-core_DIR)
|
||||
set(CVMMAP_LOCAL_CORE_DIR "${CVMMAP_LOCAL_ROOT}/build/core" CACHE PATH "Path to local cvmmap-core package config")
|
||||
set(CVMMAP_LOCAL_NATS_STATIC "${CVMMAP_LOCAL_ROOT}/build/lib/libnats_static.a" CACHE PATH "Path to local cnats static library")
|
||||
if (CVMMAP_CNATS_PROVIDER STREQUAL "system")
|
||||
find_package(cnats CONFIG REQUIRED)
|
||||
find_package(cvmmap-core CONFIG QUIET)
|
||||
else()
|
||||
if (NOT EXISTS "${CVMMAP_LOCAL_NATS_STATIC}")
|
||||
message(FATAL_ERROR
|
||||
"workspace cnats provider requires ${CVMMAP_LOCAL_NATS_STATIC}")
|
||||
endif()
|
||||
find_package(OpenSSL REQUIRED)
|
||||
if (NOT TARGET cnats::nats_static)
|
||||
add_library(cnats::nats_static STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(cnats::nats_static PROPERTIES
|
||||
IMPORTED_LOCATION "${CVMMAP_LOCAL_NATS_STATIC}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${CVMMAP_LOCAL_ROOT}/third_party/nats.c/src"
|
||||
INTERFACE_LINK_LIBRARIES "OpenSSL::SSL;OpenSSL::Crypto;Threads::Threads")
|
||||
endif()
|
||||
endif()
|
||||
find_package(ZeroMQ QUIET)
|
||||
find_package(spdlog REQUIRED)
|
||||
@@ -33,12 +65,18 @@ if (NOT TARGET cvmmap::client)
|
||||
if (
|
||||
EXISTS "${CVMMAP_LOCAL_ROOT}/core/include/cvmmap/client.hpp"
|
||||
AND EXISTS "${CVMMAP_LOCAL_BUILD}/libcvmmap_client.a"
|
||||
AND EXISTS "${CVMMAP_LOCAL_BUILD}/libcvmmap_nats.a"
|
||||
AND EXISTS "${CVMMAP_LOCAL_BUILD}/libcvmmap_proto.a"
|
||||
AND EXISTS "${CVMMAP_LOCAL_BUILD}/libcvmmap_ipc.a"
|
||||
AND EXISTS "${CVMMAP_LOCAL_BUILD}/libcvmmap_target.a")
|
||||
add_library(cvmmap::nats INTERFACE IMPORTED)
|
||||
add_library(cvmmap::client INTERFACE IMPORTED)
|
||||
set_target_properties(cvmmap::nats PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${CVMMAP_LOCAL_ROOT}/core/include"
|
||||
INTERFACE_LINK_LIBRARIES "${CVMMAP_LOCAL_BUILD}/libcvmmap_nats.a;${CVMMAP_LOCAL_BUILD}/libcvmmap_proto.a;${CVMMAP_LOCAL_BUILD}/libcvmmap_ipc.a;${CVMMAP_LOCAL_BUILD}/libcvmmap_target.a;cnats::nats_static")
|
||||
set_target_properties(cvmmap::client PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${CVMMAP_LOCAL_ROOT}/core/include"
|
||||
INTERFACE_LINK_LIBRARIES "${CVMMAP_LOCAL_BUILD}/libcvmmap_client.a;${CVMMAP_LOCAL_BUILD}/libcvmmap_ipc.a;${CVMMAP_LOCAL_BUILD}/libcvmmap_target.a")
|
||||
INTERFACE_LINK_LIBRARIES "${CVMMAP_LOCAL_BUILD}/libcvmmap_client.a;${CVMMAP_LOCAL_BUILD}/libcvmmap_nats.a;${CVMMAP_LOCAL_BUILD}/libcvmmap_proto.a;${CVMMAP_LOCAL_BUILD}/libcvmmap_ipc.a;${CVMMAP_LOCAL_BUILD}/libcvmmap_target.a;cnats::nats_static")
|
||||
else()
|
||||
message(FATAL_ERROR "cvmmap::client target is unavailable and local cv-mmap build artifacts were not found")
|
||||
endif()
|
||||
@@ -169,6 +207,7 @@ set(CVMMAP_STREAMER_LINK_DEPS
|
||||
PkgConfig::ZSTD
|
||||
PkgConfig::LZ4
|
||||
cvmmap::client
|
||||
cvmmap::nats
|
||||
CLI11::CLI11
|
||||
tomlplusplus::tomlplusplus
|
||||
mcap::mcap)
|
||||
|
||||
Reference in New Issue
Block a user