1*40e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0 2*40e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors 38dab0f58SEd Tanous #pragma once 4f7a26073SMyung Bae #include "registries.hpp" 58dab0f58SEd Tanous #include "registries/base_message_registry.hpp" 6fb546105SMyung Bae #include "registries/heartbeat_event_message_registry.hpp" 78dab0f58SEd Tanous #include "registries/openbmc_message_registry.hpp" 8f7a26073SMyung Bae #include "registries/resource_event_message_registry.hpp" 98dab0f58SEd Tanous #include "registries/task_event_message_registry.hpp" 10f7a26073SMyung Bae #include "registries/telemetry_message_registry.hpp" 118dab0f58SEd Tanous 12f7a26073SMyung Bae #include <optional> 138dab0f58SEd Tanous #include <span> 148dab0f58SEd Tanous #include <string_view> 158dab0f58SEd Tanous 168dab0f58SEd Tanous namespace redfish::registries 178dab0f58SEd Tanous { 18f7a26073SMyung Bae struct HeaderAndUrl 198dab0f58SEd Tanous { 20f7a26073SMyung Bae const Header& header; 21f7a26073SMyung Bae const char* url; 22f7a26073SMyung Bae }; 23f7a26073SMyung Bae 24f7a26073SMyung Bae inline std::optional<registries::HeaderAndUrl> 25f7a26073SMyung Bae getRegistryHeaderAndUrlFromPrefix(std::string_view registryName) 268dab0f58SEd Tanous { 27f7a26073SMyung Bae if (base::header.registryPrefix == registryName) 28f7a26073SMyung Bae { 29f7a26073SMyung Bae return HeaderAndUrl{base::header, base::url}; 30f7a26073SMyung Bae } 31f7a26073SMyung Bae if (heartbeat_event::header.registryPrefix == registryName) 32f7a26073SMyung Bae { 33f7a26073SMyung Bae return HeaderAndUrl{heartbeat_event::header, heartbeat_event::url}; 348dab0f58SEd Tanous } 358dab0f58SEd Tanous if (openbmc::header.registryPrefix == registryName) 368dab0f58SEd Tanous { 37f7a26073SMyung Bae return HeaderAndUrl{openbmc::header, openbmc::url}; 38f7a26073SMyung Bae } 39f7a26073SMyung Bae if (resource_event::header.registryPrefix == registryName) 40f7a26073SMyung Bae { 41f7a26073SMyung Bae return HeaderAndUrl{resource_event::header, resource_event::url}; 42f7a26073SMyung Bae } 43f7a26073SMyung Bae if (task_event::header.registryPrefix == registryName) 44f7a26073SMyung Bae { 45f7a26073SMyung Bae return HeaderAndUrl{task_event::header, task_event::url}; 46f7a26073SMyung Bae } 47f7a26073SMyung Bae if (telemetry::header.registryPrefix == registryName) 48f7a26073SMyung Bae { 49f7a26073SMyung Bae return HeaderAndUrl{telemetry::header, telemetry::url}; 50f7a26073SMyung Bae } 51f7a26073SMyung Bae return std::nullopt; 52f7a26073SMyung Bae } 53f7a26073SMyung Bae 54f7a26073SMyung Bae inline std::span<const MessageEntry> 55f7a26073SMyung Bae getRegistryFromPrefix(std::string_view registryName) 56f7a26073SMyung Bae { 57f7a26073SMyung Bae if (base::header.registryPrefix == registryName) 58f7a26073SMyung Bae { 59f7a26073SMyung Bae return {base::registry}; 608dab0f58SEd Tanous } 61fb546105SMyung Bae if (heartbeat_event::header.registryPrefix == registryName) 62fb546105SMyung Bae { 63fb546105SMyung Bae return {heartbeat_event::registry}; 64fb546105SMyung Bae } 65f7a26073SMyung Bae if (openbmc::header.registryPrefix == registryName) 668dab0f58SEd Tanous { 67f7a26073SMyung Bae return {openbmc::registry}; 68f7a26073SMyung Bae } 69f7a26073SMyung Bae if (resource_event::header.registryPrefix == registryName) 70f7a26073SMyung Bae { 71f7a26073SMyung Bae return {resource_event::registry}; 72f7a26073SMyung Bae } 73f7a26073SMyung Bae if (task_event::header.registryPrefix == registryName) 74f7a26073SMyung Bae { 75f7a26073SMyung Bae return {task_event::registry}; 76f7a26073SMyung Bae } 77f7a26073SMyung Bae if (telemetry::header.registryPrefix == registryName) 78f7a26073SMyung Bae { 79f7a26073SMyung Bae return {telemetry::registry}; 808dab0f58SEd Tanous } 818dab0f58SEd Tanous return {openbmc::registry}; 828dab0f58SEd Tanous } 838dab0f58SEd Tanous } // namespace redfish::registries 84