SmartSpectra C++ SDK
Measure human vitals from video with SmartSpectra C++ SDK.
Loading...
Searching...
No Matches
file_ipc_configuration.hpp
1// file_ipc_configuration.hpp
2// Created by Greg on 1/26/2025.
3// Copyright (C) 2025 Presage Security, Inc.
4//
5// SPDX-License-Identifier: LGPL-3.0-or-later
6
7#pragma once
8
9// === standard library includes (if any) ===
10#include <filesystem>
11#include <string>
12#include <chrono>
13// === third-party includes (if any) ===
14#include <nlohmann/json.hpp>
15#include <absl/status/status.h>
16#include <absl/status/statusor.h>
17#include <glog/logging.h>
18
19namespace presage::smartspectra::file_ipc {
20
38 std::filesystem::path base_directory = "/tmp/physiology_ipc";
39
44 bool create_if_missing = true;
45
50 bool truncate_on_init = false;
51
57 size_t max_frame_count = 1000;
58
63 bool use_file_locking = true;
64
69 bool compress_frames = false;
70
75 size_t io_buffer_size = 8192;
76
82
88 int jpeg_quality = 85;
89
95 static absl::StatusOr<FileIpcConfiguration> LoadFromJson(const std::filesystem::path& path);
96
103 static absl::Status SaveToJson(const FileIpcConfiguration& config, const std::filesystem::path& path);
104
109 [[nodiscard]] nlohmann::json ToJson() const;
110
116 static absl::StatusOr<FileIpcConfiguration> FromJson(const nlohmann::json& j);
117};
118
122void to_json(nlohmann::json& j, const FileIpcConfiguration& config);
123void from_json(const nlohmann::json& j, FileIpcConfiguration& configuration);
124
129 using ConfigType = FileIpcConfiguration;
130 static constexpr const char* backend_name = "File IPC";
131 static constexpr const char* config_filename = "file_ipc_config.json";
132 static constexpr const char* save_default_flag_name = "save_default_file_ipc_config";
133 static constexpr const char* config_path_flag_name = "file_ipc_config_path";
134
135 static void LogFinalConfig(const ConfigType& config) {
136 LOG(INFO) << backend_name << " configuration prepared with base directory: " << config.base_directory;
137 }
138};
139
140} // namespace presage::smartspectra::file_ipc
Definition file_ipc_configuration.hpp:128
Definition file_ipc_configuration.hpp:27
bool create_if_missing
Definition file_ipc_configuration.hpp:44
int jpeg_quality
Definition file_ipc_configuration.hpp:88
bool enable_debug_logging
Definition file_ipc_configuration.hpp:81
bool truncate_on_init
Definition file_ipc_configuration.hpp:50
size_t max_frame_count
Definition file_ipc_configuration.hpp:57
static absl::Status SaveToJson(const FileIpcConfiguration &config, const std::filesystem::path &path)
Definition file_ipc_configuration.cpp:88
nlohmann::json ToJson() const
Definition file_ipc_configuration.cpp:117
static absl::StatusOr< FileIpcConfiguration > LoadFromJson(const std::filesystem::path &path)
Definition file_ipc_configuration.cpp:58
std::filesystem::path base_directory
Definition file_ipc_configuration.hpp:38
size_t io_buffer_size
Definition file_ipc_configuration.hpp:75
bool compress_frames
Definition file_ipc_configuration.hpp:69
bool use_file_locking
Definition file_ipc_configuration.hpp:63
static absl::StatusOr< FileIpcConfiguration > FromJson(const nlohmann::json &j)
Definition file_ipc_configuration.cpp:123