SmartSpectra C++ SDK
Measure human vitals from video with SmartSpectra C++ SDK.
Loading...
Searching...
No Matches
redis_ipc_configuration.hpp
1// redis_ipc_configuration.hpp
2// Created by Greg on 1/26/25.
3// Copyright (C) 2025 Presage Security, Inc.
4//
5// SPDX-License-Identifier: LGPL-3.0-or-later
6
7#pragma once
8
9#include <string>
10#include <chrono>
11#include <optional>
12#include <filesystem>
13#include <nlohmann/json.hpp>
14#include <absl/status/status.h>
15#include <absl/status/statusor.h>
16#include <glog/logging.h>
17
18namespace presage::smartspectra::redis_ipc {
19
31 std::string host = "localhost";
32
37 int port = 6379;
38
43 std::optional<std::string> password;
44
49 int database = 0;
50
59 std::string key_prefix = "physiology";
60
65 std::chrono::milliseconds connection_timeout{1500};
66
71 std::chrono::milliseconds operation_timeout{1000};
72
77 std::chrono::milliseconds reconnect_interval{5000};
78
84
89 struct Channels {
90 std::string core_metrics = "core_metrics";
91 std::string edge_metrics = "edge_metrics";
92 std::string status = "status";
93 std::string hud_frame = "hud_frame";
94 std::string recording_commands = "recording_commands";
95 } channels;
96
101 struct Keys {
102 std::string recording_state = "recording_state";
103 std::string command_queue = "command_queue";
104 } keys;
105
111 size_t max_list_size = 10000;
112
118 std::chrono::seconds frame_ttl{300};
119
124 bool enable_pipelining = true;
125
131
137 bool use_streams = false;
138
143 size_t stream_max_entries = 100000;
144
149 size_t max_bulk_string_bytes = 134217728;
150
155 size_t max_array_elements = 1000000;
156
162 static absl::StatusOr<RedisIpcConfig> LoadFromJson(const std::filesystem::path& path);
163
170 static absl::Status SaveToJson(const RedisIpcConfig& config, const std::filesystem::path& path);
171
176 [[nodiscard]] nlohmann::json ToJson() const;
177
183 static absl::StatusOr<RedisIpcConfig> FromJson(const nlohmann::json& j);
184};
185
189void to_json(nlohmann::json& j, const RedisIpcConfig& config);
190void from_json(const nlohmann::json& j, RedisIpcConfig& config);
191
196 using ConfigType = RedisIpcConfig;
197 static constexpr const char* backend_name = "Redis IPC";
198 static constexpr const char* config_filename = "redis_ipc_config.json";
199 static constexpr const char* save_default_flag_name = "save_default_redis_ipc_config";
200 static constexpr const char* config_path_flag_name = "redis_ipc_config_path";
201
202 static void LogFinalConfig(const ConfigType& config) {
203 LOG(INFO) << backend_name << " configuration prepared: host=" << config.host
204 << ", port=" << config.port
205 << ", key_prefix=" << config.key_prefix;
206 }
207};
208
209} // namespace presage::smartspectra::redis_ipc
Definition redis_ipc_configuration.hpp:89
Definition redis_ipc_configuration.hpp:101
Definition redis_ipc_configuration.hpp:26
static absl::Status SaveToJson(const RedisIpcConfig &config, const std::filesystem::path &path)
Definition redis_ipc_configuration.cpp:176
bool enable_debug_logging
Definition redis_ipc_configuration.hpp:130
size_t max_bulk_string_bytes
Definition redis_ipc_configuration.hpp:149
int port
Definition redis_ipc_configuration.hpp:37
int database
Definition redis_ipc_configuration.hpp:49
size_t max_array_elements
Definition redis_ipc_configuration.hpp:155
bool use_streams
Definition redis_ipc_configuration.hpp:137
std::chrono::milliseconds reconnect_interval
Definition redis_ipc_configuration.hpp:77
std::string key_prefix
Definition redis_ipc_configuration.hpp:59
size_t stream_max_entries
Definition redis_ipc_configuration.hpp:143
nlohmann::json ToJson() const
Definition redis_ipc_configuration.cpp:213
std::chrono::milliseconds operation_timeout
Definition redis_ipc_configuration.hpp:71
std::chrono::milliseconds connection_timeout
Definition redis_ipc_configuration.hpp:65
std::chrono::seconds frame_ttl
Definition redis_ipc_configuration.hpp:118
static absl::StatusOr< RedisIpcConfig > LoadFromJson(const std::filesystem::path &path)
Definition redis_ipc_configuration.cpp:140
static absl::StatusOr< RedisIpcConfig > FromJson(const nlohmann::json &j)
Definition redis_ipc_configuration.cpp:219
std::string host
Definition redis_ipc_configuration.hpp:31
size_t max_reconnect_attempts
Definition redis_ipc_configuration.hpp:83
size_t max_list_size
Definition redis_ipc_configuration.hpp:111
bool enable_pipelining
Definition redis_ipc_configuration.hpp:124
std::optional< std::string > password
Definition redis_ipc_configuration.hpp:43
Definition redis_ipc_configuration.hpp:195