1682326a1SDeepak Kodihalli #include "config.h" 2*f18bf836SPatrick Venture 3682326a1SDeepak Kodihalli #include "elog_meta.hpp" 4682326a1SDeepak Kodihalli 5682326a1SDeepak Kodihalli namespace phosphor 6682326a1SDeepak Kodihalli { 7682326a1SDeepak Kodihalli namespace logging 8682326a1SDeepak Kodihalli { 9682326a1SDeepak Kodihalli namespace metadata 10682326a1SDeepak Kodihalli { 11682326a1SDeepak Kodihalli namespace associations 12682326a1SDeepak Kodihalli { 13682326a1SDeepak Kodihalli 14682326a1SDeepak Kodihalli #if defined PROCESS_META 15682326a1SDeepak Kodihalli 16682326a1SDeepak Kodihalli template <> 17*f18bf836SPatrick Venture void build<xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH>( 18*f18bf836SPatrick Venture const std::string& match, const std::vector<std::string>& data, 19682326a1SDeepak Kodihalli AssociationList& list) 20682326a1SDeepak Kodihalli { 21682326a1SDeepak Kodihalli std::map<std::string, std::string> metadata; 22682326a1SDeepak Kodihalli parse(data, metadata); 23682326a1SDeepak Kodihalli auto iter = metadata.find(match); 24682326a1SDeepak Kodihalli if (metadata.end() != iter) 25682326a1SDeepak Kodihalli { 26*f18bf836SPatrick Venture auto comp = [](const auto& first, const auto& second) { 27682326a1SDeepak Kodihalli return (strcmp(std::get<0>(first), second) < 0); 28682326a1SDeepak Kodihalli }; 29*f18bf836SPatrick Venture auto callout = std::lower_bound(callouts.begin(), callouts.end(), 30*f18bf836SPatrick Venture (iter->second).c_str(), comp); 31682326a1SDeepak Kodihalli if ((callouts.end() != callout) && 32682326a1SDeepak Kodihalli !strcmp((iter->second).c_str(), std::get<0>(*callout))) 33682326a1SDeepak Kodihalli { 34*f18bf836SPatrick Venture list.emplace_back(std::make_tuple( 35*f18bf836SPatrick Venture CALLOUT_FWD_ASSOCIATION, CALLOUT_REV_ASSOCIATION, 36*f18bf836SPatrick Venture std::string(INVENTORY_ROOT) + std::get<1>(*callout))); 37682326a1SDeepak Kodihalli } 38682326a1SDeepak Kodihalli } 39682326a1SDeepak Kodihalli } 40682326a1SDeepak Kodihalli 41213aaf6fSTom Joseph template <> 42*f18bf836SPatrick Venture void build< 43*f18bf836SPatrick Venture xyz::openbmc_project::Common::Callout::Inventory::CALLOUT_INVENTORY_PATH>( 44*f18bf836SPatrick Venture const std::string& match, const std::vector<std::string>& data, 45213aaf6fSTom Joseph AssociationList& list) 46213aaf6fSTom Joseph { 47213aaf6fSTom Joseph std::map<std::string, std::string> metadata; 48213aaf6fSTom Joseph parse(data, metadata); 49213aaf6fSTom Joseph auto iter = metadata.find(match); 50213aaf6fSTom Joseph if (metadata.end() != iter) 51213aaf6fSTom Joseph { 52213aaf6fSTom Joseph list.emplace_back(std::make_tuple(CALLOUT_FWD_ASSOCIATION, 53213aaf6fSTom Joseph CALLOUT_REV_ASSOCIATION, 54213aaf6fSTom Joseph std::string(iter->second.c_str()))); 55213aaf6fSTom Joseph } 56213aaf6fSTom Joseph } 57213aaf6fSTom Joseph 58682326a1SDeepak Kodihalli #endif 59682326a1SDeepak Kodihalli 60682326a1SDeepak Kodihalli } // namespace associations 61682326a1SDeepak Kodihalli } // namespace metadata 62682326a1SDeepak Kodihalli } // namespace logging 63682326a1SDeepak Kodihalli } // namespace phosphor 64