SmartSpectra C++ SDK
Measure human vitals from video with SmartSpectra C++ SDK.
Loading...
Searching...
No Matches
presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode > Class Template Referenceabstract

#include <ipc_stream_writer.hpp>

Inheritance diagram for presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >:
presage::smartspectra::file_ipc::FileIpcStreamWriter< TIntegrationMode > presage::smartspectra::redis_ipc::RedisIpcStreamWriter< TIntegrationMode >

Public Types

using BackgroundContainer

Public Member Functions

virtual absl::Status SwapContainer (std::shared_ptr< BackgroundContainer > new_container)
const BackgroundContainerGetContainer () const
virtual absl::Status WriteStatus (const presage::physiology::StatusValue &status)=0
virtual absl::Status WriteCoreMetrics (const presage::physiology::MetricsBuffer &metrics, int64_t timestamp_us)=0
virtual absl::Status WriteEdgeMetrics (const presage::physiology::Metrics &metrics, int64_t timestamp_us)=0
virtual absl::Status WriteFrame (const cv::Mat &frame, int64_t timestamp_us)=0
virtual void Close ()=0
virtual bool IsOperational () const =0
virtual absl::Status Flush ()=0

Protected Member Functions

virtual absl::Status RegisterCallbacks ()
virtual absl::Status SendInitialStatus ()
int64_t GetCurrentTimestampUs ()

Protected Attributes

std::shared_ptr< BackgroundContainercontainer_

Detailed Description

template<container::settings::IntegrationMode TIntegrationMode>
class presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >

Abstract interface for IPC stream writers with container management.

This interface defines the contract for writing different types of physiology data to various IPC backends (File, Redis, etc.) and manages integration with BackgroundContainer for automatic callback registration.

Implementations should be thread-safe and handle their own error logging. The template parameter allows this to work with different IntegrationModes.

Member Typedef Documentation

◆ BackgroundContainer

template<container::settings::IntegrationMode TIntegrationMode>
using presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::BackgroundContainer
Initial value:
presage::platform_independence::DeviceType::Cpu,
smartspectra::container::settings::OperationMode::Continuous,
TIntegrationMode
>
Container for background thread processing.
Definition background_container.hpp:40

Member Function Documentation

◆ Close()

template<container::settings::IntegrationMode TIntegrationMode>
virtual void presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::Close ( )
pure virtual

Close the stream and release resources. After calling this, the writer should not be used again.

Implemented in presage::smartspectra::file_ipc::FileIpcStreamWriter< TIntegrationMode >, and presage::smartspectra::redis_ipc::RedisIpcStreamWriter< TIntegrationMode >.

◆ Flush()

template<container::settings::IntegrationMode TIntegrationMode>
virtual absl::Status presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::Flush ( )
pure virtual

Flush any buffered data to the underlying stream. Some implementations may buffer data for performance.

Returns
Status indicating success or failure

Implemented in presage::smartspectra::file_ipc::FileIpcStreamWriter< TIntegrationMode >, and presage::smartspectra::redis_ipc::RedisIpcStreamWriter< TIntegrationMode >.

◆ GetContainer()

template<container::settings::IntegrationMode TIntegrationMode>
const BackgroundContainer * presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::GetContainer ( ) const
inline

Get the current container.

Returns
Pointer to the current container (may be null)

◆ IsOperational()

template<container::settings::IntegrationMode TIntegrationMode>
virtual bool presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::IsOperational ( ) const
pure virtual

Check if the writer is currently operational.

Returns
true if the writer can accept writes, false otherwise

Implemented in presage::smartspectra::file_ipc::FileIpcStreamWriter< TIntegrationMode >, and presage::smartspectra::redis_ipc::RedisIpcStreamWriter< TIntegrationMode >.

◆ RegisterCallbacks()

template<container::settings::IntegrationMode TIntegrationMode>
virtual absl::Status presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::RegisterCallbacks ( )
inlineprotectedvirtual

Register callbacks with the current container. Derived classes can override this to register additional callbacks. The base implementation registers status, core metrics, and edge metrics callbacks.

◆ SendInitialStatus()

template<container::settings::IntegrationMode TIntegrationMode>
virtual absl::Status presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::SendInitialStatus ( )
inlineprotectedvirtual

Send the initial status from the container. Called after container swap to ensure the current status is written.

Returns
Status indicating success or failure

◆ SwapContainer()

template<container::settings::IntegrationMode TIntegrationMode>
virtual absl::Status presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::SwapContainer ( std::shared_ptr< BackgroundContainer > new_container)
inlinevirtual

Swap the container being monitored. This will register callbacks with the new container and send current status immediately.

Parameters
new_containerThe new container to monitor (can be nullptr)
Returns
Status indicating success or failure

◆ WriteCoreMetrics()

template<container::settings::IntegrationMode TIntegrationMode>
virtual absl::Status presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::WriteCoreMetrics ( const presage::physiology::MetricsBuffer & metrics,
int64_t timestamp_us )
pure virtual

Write core metrics to the stream.

Parameters
metricsThe core metrics buffer to write
timestamp_usTimestamp in microseconds since epoch
Returns
Status indicating success or failure

Implemented in presage::smartspectra::file_ipc::FileIpcStreamWriter< TIntegrationMode >, and presage::smartspectra::redis_ipc::RedisIpcStreamWriter< TIntegrationMode >.

◆ WriteEdgeMetrics()

template<container::settings::IntegrationMode TIntegrationMode>
virtual absl::Status presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::WriteEdgeMetrics ( const presage::physiology::Metrics & metrics,
int64_t timestamp_us )
pure virtual

Write edge metrics to the stream.

Parameters
metricsThe edge metrics to write
Returns
Status indicating success or failure

Implemented in presage::smartspectra::file_ipc::FileIpcStreamWriter< TIntegrationMode >, and presage::smartspectra::redis_ipc::RedisIpcStreamWriter< TIntegrationMode >.

◆ WriteFrame()

template<container::settings::IntegrationMode TIntegrationMode>
virtual absl::Status presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::WriteFrame ( const cv::Mat & frame,
int64_t timestamp_us )
pure virtual

Write a video frame to the stream.

Parameters
frameThe video frame as an OpenCV Mat (RGB format expected)
timestamp_usTimestamp in microseconds since epoch
Returns
Status indicating success or failure

Implemented in presage::smartspectra::file_ipc::FileIpcStreamWriter< TIntegrationMode >, and presage::smartspectra::redis_ipc::RedisIpcStreamWriter< TIntegrationMode >.

◆ WriteStatus()

template<container::settings::IntegrationMode TIntegrationMode>
virtual absl::Status presage::smartspectra::ipc::IpcStreamWriter< TIntegrationMode >::WriteStatus ( const presage::physiology::StatusValue & status)
pure virtual

Write a status value to the stream.

Parameters
statusThe status value to write
Returns
Status indicating success or failure

Implemented in presage::smartspectra::file_ipc::FileIpcStreamWriter< TIntegrationMode >, and presage::smartspectra::redis_ipc::RedisIpcStreamWriter< TIntegrationMode >.


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