syncd/BreakConfigParser.cpp (41 lines of code) (raw):
#include "BreakConfigParser.h"
#include "swss/logger.h"
#include "meta/sai_serialize.h"
using namespace syncd;
std::shared_ptr<BreakConfig> BreakConfigParser::parseBreakConfig(
_In_ const std::string& filePath)
{
SWSS_LOG_ENTER();
auto config = std::make_shared<BreakConfig>();
if (filePath.size() == 0)
{
return config; // return empty config
}
std::ifstream file(filePath);
if (!file.is_open())
{
SWSS_LOG_ERROR("failed to open break config file: %s: errno: %s, returning empty config", filePath.c_str(), strerror(errno));
return config;
}
std::string line;
while (getline(file, line))
{
if (line.size() > 0 && (line[0] == '#' || line[0] == ';'))
{
continue;
}
sai_object_type_t objectType;
try
{
sai_deserialize_object_type(line, objectType);
config->insert(objectType);
SWSS_LOG_INFO("inserting %s to break config", line.c_str());
}
catch (const std::exception& e)
{
SWSS_LOG_WARN("failed to parse '%s' as sai_object_type_t", line.c_str());
}
}
SWSS_LOG_NOTICE("break config parse success, contains %zu entries", config->size());
return config;
}