Program Listing for File config_loader.ixx#
↰ Return to documentation for file (Src/config_loader.ixx)
module;
#include "kataglyphis_export.h"
#include <cstdint>
#include <expected>
#include <filesystem>
#include <string>
#include <vector>
export module kataglyphis.config_loader;
export namespace kataglyphis::config {
enum class ConfigError { FileNotFound, ParseError, MissingField, InvalidValue };
struct VideoConfig
{
std::uint32_t default_width{ 1280 };
std::uint32_t default_height{ 720 };
std::uint32_t default_framerate{ 30 };
std::uint32_t default_bitrate_kbps{ 2000 };
};
struct TextureConfig
{
std::uint32_t width{ 640 };
std::uint32_t height{ 480 };
};
struct AndroidConfig
{
std::uint32_t width{ 320 };
std::uint32_t height{ 240 };
std::uint32_t fps{ 15 };
};
struct WebRTCConfig
{
std::string signaling_server_url{ "ws://127.0.0.1:8443" };
std::uint32_t reconnection_timeout_ms{ 5000 };
std::vector<std::string> stun_servers;
std::vector<std::string> turn_servers;
VideoConfig video;
TextureConfig texture;
AndroidConfig android;
};
[[nodiscard]] KATAGLYPHIS_CPP_API auto load_webrtc_config(const std::filesystem::path &config_path)
-> std::expected<WebRTCConfig, ConfigError>;
[[nodiscard]] KATAGLYPHIS_CPP_API auto parse_webrtc_config(const std::string &json_content)
-> std::expected<WebRTCConfig, ConfigError>;
[[nodiscard]] KATAGLYPHIS_CPP_API auto get_default_webrtc_config() -> WebRTCConfig;
}// namespace kataglyphis::config