#include "turns/core/participant.hpp" #include "turns/core/json_ext.hpp" #include #include #include #include #include namespace turns::core { auto participant::create(Glib::ustring name, float priority, core::disposition disposition) -> Glib::RefPtr { return Glib::make_refptr_for_instance(new participant{name, priority, disposition}); } auto participant::create(nlohmann::json const & serialized) -> Glib::RefPtr { auto active = serialized.value("active", false); auto disposition = serialized.value("disposition", disposition::neutral); auto priority = serialized.value("priority", 0.0f); auto name = serialized.value("name", std::string{}); auto instance = create(name, priority, disposition); instance->is_active() = active; return instance; } participant::participant() : Glib::ObjectBase{typeid(participant)} , Glib::Object{} { } participant::participant(Glib::ustring name, float priority, core::disposition disposition) : participant() { m_name = name; m_priority = priority; m_disposition = disposition; } auto participant::operator<=>(participant const & other) const noexcept -> std::partial_ordering { return m_priority <=> other.m_priority; } auto participant::serialize() -> nlohmann::json { return nlohmann::json{ {"active", m_is_active }, {"disposition", m_disposition}, {"name", m_name }, {"priority", m_priority }, }; } } // namespace turns::core