std::string ConfigurationManager::accessOptionStringValueByMetadata()

in prod/native/libcommon/code/ConfigurationManager.cpp [33:59]


std::string ConfigurationManager::accessOptionStringValueByMetadata(OptionMetadata const &metadata, ConfigurationSnapshot const &snapshot) {
    switch (metadata.type) {
        case OptionMetadata::type::string: {
            std::string *value = reinterpret_cast<std::string *>((std::byte *)&snapshot + metadata.offset);
            return *value;
        }
        case OptionMetadata::type::boolean: {
            bool *value = reinterpret_cast<bool *>((std::byte *)&snapshot + metadata.offset);
            return *value ? "true"s : "false"s;
        }
        case OptionMetadata::type::duration: {
            auto value = reinterpret_cast<std::chrono::milliseconds *>((std::byte *)&snapshot + metadata.offset);
            return std::to_string(value->count());
        }
        case OptionMetadata::type::loglevel: {
           LogLevel *value = reinterpret_cast<LogLevel *>((std::byte *)&snapshot + metadata.offset);
           std::string_view level = utils::trim(getLogLevelName(*value));
           return {level.data(), level.length()};
        }
        case OptionMetadata::type::bytes: {
            std::size_t *value = reinterpret_cast<std::size_t *>((std::byte *)&snapshot + metadata.offset);
            return std::to_string(*value);
        }
        default:
            return {};
    }
}