From cc5ab4cd0dc6a946ea2ebaf7c16775b92dc99ea3 Mon Sep 17 00:00:00 2001 From: kcudnik Date: Tue, 10 Aug 2021 17:27:19 +0200 Subject: [PATCH] Move joinFieldValues to libsaimeta --- lib/src/ClientSai.cpp | 9 +++----- lib/src/Recorder.cpp | 34 ++++++++++++++--------------- lib/src/RedisRemoteSaiInterface.cpp | 9 +++----- lib/src/Sai.cpp | 23 ------------------- lib/src/tests.cpp | 28 +++--------------------- meta/Globals.cpp | 20 +++++++++++++++++ meta/Globals.h | 4 ++++ 7 files changed, 49 insertions(+), 78 deletions(-) diff --git a/lib/src/ClientSai.cpp b/lib/src/ClientSai.cpp index dc62654a684c..3fa79bc4aa86 100644 --- a/lib/src/ClientSai.cpp +++ b/lib/src/ClientSai.cpp @@ -28,9 +28,6 @@ using namespace std::placeholders; // TODO how to tell if current SAI is in init view or apply view ? -std::string joinFieldValues( - _In_ const std::vector &values); - std::vector serialize_counter_id_list( _In_ const sai_enum_metadata_t *stats_enum, _In_ uint32_t count, @@ -646,7 +643,7 @@ sai_status_t ClientSai::objectTypeGetAvailability( SWSS_LOG_DEBUG( "Query arguments: switch: %s, attributes: %s", strSwitchId.c_str(), - joinFieldValues(entry).c_str()); + Globals::joinFieldValues(entry).c_str()); // Syncd will pop this argument off before trying to deserialize the attribute list @@ -1241,7 +1238,7 @@ sai_status_t ClientSai::bulkCreate( entry.push_back(null); } - std::string str_attr = joinFieldValues(entry); + std::string str_attr = Globals::joinFieldValues(entry); swss::FieldValueTuple fvtNoStatus(serialized_object_ids[idx] , str_attr); @@ -1537,7 +1534,7 @@ sai_status_t ClientSai::bulkSet( { auto entry = SaiAttributeList::serialize_attr_list(object_type, 1, &attr_list[idx], false); - std::string str_attr = joinFieldValues(entry); + std::string str_attr = Globals::joinFieldValues(entry); swss::FieldValueTuple value(serialized_object_ids[idx], str_attr); diff --git a/lib/src/Recorder.cpp b/lib/src/Recorder.cpp index 791c972cc5d4..2102bc475f16 100644 --- a/lib/src/Recorder.cpp +++ b/lib/src/Recorder.cpp @@ -2,6 +2,7 @@ #include "meta/sai_serialize.h" #include "meta/SaiAttributeList.h" +#include "meta/Globals.h" #include #include @@ -13,9 +14,6 @@ using namespace sairedis; using namespace saimeta; -std::string joinFieldValues( - _In_ const std::vector &values); - std::vector serialize_counter_id_list( _In_ const sai_enum_metadata_t *stats_enum, _In_ uint32_t count, @@ -307,7 +305,7 @@ void Recorder::recordFlushFdbEntries( { SWSS_LOG_ENTER(); - recordLine("f|" + key + "|" + joinFieldValues(arguments)); + recordLine("f|" + key + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordFlushFdbEntriesResponse( @@ -324,7 +322,7 @@ void Recorder::recordQueryAttributeCapability( { SWSS_LOG_ENTER(); - recordLine("q|attribute_capability|" + key + "|" + joinFieldValues(arguments)); + recordLine("q|attribute_capability|" + key + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordQueryAttributeCapabilityResponse( @@ -333,7 +331,7 @@ void Recorder::recordQueryAttributeCapabilityResponse( { SWSS_LOG_ENTER(); - recordLine("Q|attribute_capability|" + sai_serialize_status(status) + "|" + joinFieldValues(arguments)); + recordLine("Q|attribute_capability|" + sai_serialize_status(status) + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordQueryAttributeEnumValuesCapability( @@ -342,7 +340,7 @@ void Recorder::recordQueryAttributeEnumValuesCapability( { SWSS_LOG_ENTER(); - recordLine("q|attribute_enum_values_capability|" + key + "|" + joinFieldValues(arguments)); + recordLine("q|attribute_enum_values_capability|" + key + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordQueryAttributeEnumValuesCapabilityResponse( @@ -351,7 +349,7 @@ void Recorder::recordQueryAttributeEnumValuesCapabilityResponse( { SWSS_LOG_ENTER(); - recordLine("Q|attribute_enum_values_capability|" + sai_serialize_status(status) + "|" + joinFieldValues(arguments)); + recordLine("Q|attribute_enum_values_capability|" + sai_serialize_status(status) + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordObjectTypeGetAvailability( @@ -360,7 +358,7 @@ void Recorder::recordObjectTypeGetAvailability( { SWSS_LOG_ENTER(); - recordLine("q|object_type_get_availability|" + key + "|" + joinFieldValues(arguments)); + recordLine("q|object_type_get_availability|" + key + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordObjectTypeGetAvailabilityResponse( @@ -369,7 +367,7 @@ void Recorder::recordObjectTypeGetAvailabilityResponse( { SWSS_LOG_ENTER(); - recordLine("Q|object_type_get_availability|" + sai_serialize_status(status) + "|" + joinFieldValues(arguments)); + recordLine("Q|object_type_get_availability|" + sai_serialize_status(status) + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordNotifySyncd( @@ -400,7 +398,7 @@ void Recorder::recordGenericCreate( // lower case 'c' stands for create api - recordLine("c|" + key + "|" + joinFieldValues(arguments)); + recordLine("c|" + key + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordGenericCreateResponse( @@ -534,7 +532,7 @@ void Recorder::recordGenericSet( // lower case 's' stands for SET api - recordLine("s|" + key + "|" + joinFieldValues(arguments)); + recordLine("s|" + key + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordGenericSetResponse( @@ -600,7 +598,7 @@ void Recorder::recordGenericGet( // lower case 'g' stands for GET api - recordLine("g|" + key + "|" + joinFieldValues(arguments)); + recordLine("g|" + key + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordGenericGetResponse( @@ -611,7 +609,7 @@ void Recorder::recordGenericGetResponse( // capital 'G' stands for GET api response - recordLine("G|" + sai_serialize_status(status) + "|" + joinFieldValues(arguments)); + recordLine("G|" + sai_serialize_status(status) + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordGenericGetStats( @@ -647,7 +645,7 @@ void Recorder::recordGenericGetStats( if (!m_recordStats) return; - recordLine("q|get_stats|" + key + "|" + joinFieldValues(arguments)); + recordLine("q|get_stats|" + key + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordGenericGetStatsResponse( @@ -702,7 +700,7 @@ void Recorder::recordGenericClearStats( if (!m_recordStats) return; - recordLine("q|clear_stats|" + key + "|" + joinFieldValues(arguments)); + recordLine("q|clear_stats|" + key + "|" + Globals::joinFieldValues(arguments)); } void Recorder::recordGenericClearStatsResponse( @@ -723,7 +721,7 @@ void Recorder::recordNotification( { SWSS_LOG_ENTER(); - recordLine("n|" + name + "|" + serializedNotification + "|" + joinFieldValues(values)); + recordLine("n|" + name + "|" + serializedNotification + "|" + Globals::joinFieldValues(values)); } void Recorder::recordRemove( @@ -937,7 +935,7 @@ void Recorder::recordObjectTypeGetAvailability( attrList, false); - SWSS_LOG_DEBUG("Query arguments: switch: %s, attributes: %s", key.c_str(), joinFieldValues(values).c_str()); + SWSS_LOG_DEBUG("Query arguments: switch: %s, attributes: %s", key.c_str(), Globals::joinFieldValues(values).c_str()); recordObjectTypeGetAvailability(key, values); } diff --git a/lib/src/RedisRemoteSaiInterface.cpp b/lib/src/RedisRemoteSaiInterface.cpp index c91e27f127fd..da49acd8862f 100644 --- a/lib/src/RedisRemoteSaiInterface.cpp +++ b/lib/src/RedisRemoteSaiInterface.cpp @@ -21,9 +21,6 @@ using namespace saimeta; using namespace sairediscommon; using namespace std::placeholders; -std::string joinFieldValues( - _In_ const std::vector &values); - std::vector serialize_counter_id_list( _In_ const sai_enum_metadata_t *stats_enum, _In_ uint32_t count, @@ -887,7 +884,7 @@ sai_status_t RedisRemoteSaiInterface::objectTypeGetAvailability( SWSS_LOG_DEBUG( "Query arguments: switch: %s, attributes: %s", strSwitchId.c_str(), - joinFieldValues(entry).c_str()); + Globals::joinFieldValues(entry).c_str()); // Syncd will pop this argument off before trying to deserialize the attribute list @@ -1534,7 +1531,7 @@ sai_status_t RedisRemoteSaiInterface::bulkSet( { auto entry = SaiAttributeList::serialize_attr_list(object_type, 1, &attr_list[idx], false); - std::string str_attr = joinFieldValues(entry); + std::string str_attr = Globals::joinFieldValues(entry); swss::FieldValueTuple value(serialized_object_ids[idx], str_attr); @@ -1632,7 +1629,7 @@ sai_status_t RedisRemoteSaiInterface::bulkCreate( entry.push_back(null); } - std::string str_attr = joinFieldValues(entry); + std::string str_attr = Globals::joinFieldValues(entry); swss::FieldValueTuple fvtNoStatus(serialized_object_ids[idx] , str_attr); diff --git a/lib/src/Sai.cpp b/lib/src/Sai.cpp index b5f2c60a1e6e..3557de31f215 100644 --- a/lib/src/Sai.cpp +++ b/lib/src/Sai.cpp @@ -730,29 +730,6 @@ std::shared_ptr Sai::getContext( return it->second; } -std::string joinFieldValues( - _In_ const std::vector &values) -{ - SWSS_LOG_ENTER(); - - std::stringstream ss; - - for (size_t i = 0; i < values.size(); ++i) - { - const std::string &str_attr_id = fvField(values[i]); - const std::string &str_attr_value = fvValue(values[i]); - - if (i != 0) - { - ss << "|"; - } - - ss << str_attr_id << "=" << str_attr_value; - } - - return ss.str(); -} - std::vector serialize_counter_id_list( _In_ const sai_enum_metadata_t *stats_enum, _In_ uint32_t count, diff --git a/lib/src/tests.cpp b/lib/src/tests.cpp index fe4f67fae953..31588492f423 100644 --- a/lib/src/tests.cpp +++ b/lib/src/tests.cpp @@ -12,6 +12,7 @@ extern "C" { #include "meta/sai_serialize.h" #include "meta/SaiAttributeList.h" +#include "meta/Globals.h" #include @@ -578,29 +579,6 @@ void test_serialize_create_oid(int n) std::cout << "ms: " << (double)us.count()/1000 << " / " << n << std::endl; } -std::string joinFieldValues( - _In_ const std::vector &values) -{ - SWSS_LOG_ENTER(); - - std::stringstream ss; - - for (size_t i = 0; i < values.size(); ++i) - { - const std::string &str_attr_id = fvField(values[i]); - const std::string &str_attr_value = fvValue(values[i]); - - if (i != 0) - { - ss << "|"; - } - - ss << str_attr_id << "=" << str_attr_value; - } - - return ss.str(); -} - std::string serialize_bulk_create_route_entry(int per) { SWSS_LOG_ENTER(); @@ -618,7 +596,7 @@ std::string serialize_bulk_create_route_entry(int per) std::vector entry = SaiAttributeList::serialize_attr_list(SAI_OBJECT_TYPE_ROUTE_ENTRY, list->get_attr_count(), list->get_attr_list(), false); - std::string str_attr = joinFieldValues(entry); + std::string str_attr = Globals::joinFieldValues(entry); std::string str_status = sai_serialize_status(SAI_STATUS_NOT_EXECUTED); @@ -678,7 +656,7 @@ std::string serialize_bulk_create_oid(int per) std::vector entry = SaiAttributeList::serialize_attr_list(SAI_OBJECT_TYPE_VLAN, list->get_attr_count(), list->get_attr_list(), false); - std::string str_attr = joinFieldValues(entry); + std::string str_attr = Globals::joinFieldValues(entry); std::string str_status = sai_serialize_status(SAI_STATUS_NOT_EXECUTED); diff --git a/meta/Globals.cpp b/meta/Globals.cpp index aa7d2cc9291a..d2dd984a917f 100644 --- a/meta/Globals.cpp +++ b/meta/Globals.cpp @@ -68,3 +68,23 @@ std::string Globals::getHardwareInfo( return std::string((const char*)s8list.list, actualLength); } + +std::string Globals::joinFieldValues( + _In_ const std::vector& values) +{ + SWSS_LOG_ENTER(); + + std::stringstream ss; + + for (size_t i = 0; i < values.size(); ++i) + { + if (i != 0) + { + ss << "|"; + } + + ss << fvField(values[i]) << "=" << fvValue(values[i]); + } + + return ss.str(); +} diff --git a/meta/Globals.h b/meta/Globals.h index 3a9785fce71a..fc1c88a9c0c0 100644 --- a/meta/Globals.h +++ b/meta/Globals.h @@ -5,6 +5,7 @@ extern "C" { } #include "swss/logger.h" +#include "swss/table.h" #include @@ -34,6 +35,9 @@ namespace saimeta static std::string getHardwareInfo( _In_ uint32_t attrCount, _In_ const sai_attribute_t *attrList); + + static std::string joinFieldValues( + _In_ const std::vector& values); }; }