Skip to content

Commit 7a84ac6

Browse files
committed
commconstants.h uses std::string_view instead of char*
1 parent 437d21d commit 7a84ac6

File tree

6 files changed

+40
-37
lines changed

6 files changed

+40
-37
lines changed

vpr/src/server/commconstants.h

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@
55

66
namespace comm {
77

8-
constexpr const char* KEY_JOB_ID = "JOB_ID";
9-
constexpr const char* KEY_CMD = "CMD";
10-
constexpr const char* KEY_OPTIONS = "OPTIONS";
11-
constexpr const char* KEY_DATA = "DATA";
12-
constexpr const char* KEY_STATUS = "STATUS";
8+
constexpr const std::string_view KEY_JOB_ID = "JOB_ID";
9+
constexpr const std::string_view KEY_CMD = "CMD";
10+
constexpr const std::string_view KEY_OPTIONS = "OPTIONS";
11+
constexpr const std::string_view KEY_DATA = "DATA";
12+
constexpr const std::string_view KEY_STATUS = "STATUS";
1313
constexpr const std::string_view ECHO_DATA{"ECHO"};
1414

1515
const unsigned char ZLIB_COMPRESSOR_ID = 'z';
1616
const unsigned char NONE_COMPRESSOR_ID = '\x0';
1717

18-
constexpr const char* OPTION_PATH_NUM = "path_num";
19-
constexpr const char* OPTION_PATH_TYPE = "path_type";
20-
constexpr const char* OPTION_DETAILS_LEVEL = "details_level";
21-
constexpr const char* OPTION_IS_FLAT_ROUTING = "is_flat_routing";
22-
constexpr const char* OPTION_PATH_ELEMENTS = "path_elements";
23-
constexpr const char* OPTION_HIGHLIGHT_MODE = "high_light_mode";
24-
constexpr const char* OPTION_DRAW_PATH_CONTOUR = "draw_path_contour";
18+
constexpr const std::string_view OPTION_PATH_NUM = "path_num";
19+
constexpr const std::string_view OPTION_PATH_TYPE = "path_type";
20+
constexpr const std::string_view OPTION_DETAILS_LEVEL = "details_level";
21+
constexpr const std::string_view OPTION_IS_FLAT_ROUTING = "is_flat_routing";
22+
constexpr const std::string_view OPTION_PATH_ELEMENTS = "path_elements";
23+
constexpr const std::string_view OPTION_HIGHLIGHT_MODE = "high_light_mode";
24+
constexpr const std::string_view OPTION_DRAW_PATH_CONTOUR = "draw_path_contour";
2525

2626
// please don't change values as they are involved in socket communication
27-
constexpr const char* KEY_SETUP_PATH_LIST = "setup";
28-
constexpr const char* KEY_HOLD_PATH_LIST = "hold";
27+
constexpr const std::string_view KEY_SETUP_PATH_LIST = "setup";
28+
constexpr const std::string_view KEY_HOLD_PATH_LIST = "hold";
2929
//
3030

3131
enum CMD {

vpr/src/server/taskresolver.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ bool TaskResolver::update(ezgl::application* app) {
8484
}
8585

8686
void TaskResolver::processGetPathListTask(ezgl::application*, const TaskPtr& task) {
87-
TelegramOptions options{task->options(), {comm::OPTION_PATH_NUM, comm::OPTION_PATH_TYPE, comm::OPTION_DETAILS_LEVEL, comm::OPTION_IS_FLAT_ROUTING}};
87+
static const std::vector<std::string_view> keys{comm::OPTION_PATH_NUM, comm::OPTION_PATH_TYPE, comm::OPTION_DETAILS_LEVEL, comm::OPTION_IS_FLAT_ROUTING};
88+
TelegramOptions options{task->options(), keys};
8889
if (!options.hasErrors()) {
8990
ServerContext& server_ctx = g_vpr_ctx.mutable_server(); // shortcut
9091

vpr/src/server/telegramoptions.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace server {
1010

11-
TelegramOptions::TelegramOptions(const std::string& data, const std::vector<std::string>& expectedKeys)
11+
TelegramOptions::TelegramOptions(const std::string& data, const std::vector<std::string_view>& expectedKeys)
1212
{
1313
// parse data string
1414
std::vector<std::string> options = vtr::split(data, ";");
@@ -31,7 +31,7 @@ TelegramOptions::TelegramOptions(const std::string& data, const std::vector<std:
3131
checkKeysPresence(expectedKeys);
3232
}
3333

34-
std::map<std::size_t, std::set<std::size_t>> TelegramOptions::getMapOfSets(const std::string& name)
34+
std::map<std::size_t, std::set<std::size_t>> TelegramOptions::getMapOfSets(const std::string_view& name)
3535
{
3636
std::map<std::size_t, std::set<std::size_t>> result;
3737
std::string dataStr = getString(name);
@@ -64,7 +64,7 @@ std::map<std::size_t, std::set<std::size_t>> TelegramOptions::getMapOfSets(const
6464
return result;
6565
}
6666

67-
std::string TelegramOptions::getString(const std::string& name)
67+
std::string TelegramOptions::getString(const std::string_view& name)
6868
{
6969
std::string result;
7070
if (auto it = m_options.find(name); it != m_options.end()) {
@@ -73,27 +73,27 @@ std::string TelegramOptions::getString(const std::string& name)
7373
return result;
7474
}
7575

76-
int TelegramOptions::getInt(const std::string& name, int failValue)
76+
int TelegramOptions::getInt(const std::string_view& name, int failValue)
7777
{
7878
if (std::optional<int> opt = tryConvertToInt(m_options[name].value)) {
7979
return opt.value();
8080
} else {
81-
m_errors.emplace_back("cannot get int value for option " + name);
81+
m_errors.emplace_back("cannot get int value for option " + std::string(name));
8282
return failValue;
8383
}
8484
}
8585

86-
bool TelegramOptions::getBool(const std::string& name, bool failValue)
86+
bool TelegramOptions::getBool(const std::string_view& name, bool failValue)
8787
{
8888
if (std::optional<int> opt = tryConvertToInt(m_options[name].value)) {
8989
return opt.value();
9090
} else {
91-
m_errors.emplace_back("cannot get bool value for option " + name);
91+
m_errors.emplace_back("cannot get bool value for option " + std::string(name));
9292
return failValue;
9393
}
9494
}
9595

96-
std::string TelegramOptions::errorsStr() const
96+
std::string TelegramOptions::errorsStr() const
9797
{
9898
std::string result;
9999
for (const std::string& error: m_errors) {
@@ -102,18 +102,18 @@ std::string TelegramOptions::errorsStr() const
102102
return result;
103103
}
104104

105-
bool TelegramOptions::isDataTypeSupported(const std::string& type) const
105+
bool TelegramOptions::isDataTypeSupported(const std::string& type) const
106106
{
107107
static const std::set<std::string> supportedTypes{"int", "string", "bool"};
108108
return supportedTypes.count(type) != 0;
109109
}
110110

111-
bool TelegramOptions::checkKeysPresence(const std::vector<std::string>& keys)
111+
bool TelegramOptions::checkKeysPresence(const std::vector<std::string_view>& keys)
112112
{
113113
bool result = true;
114-
for (const std::string& key: keys) {
114+
for (const std::string_view& key: keys) {
115115
if (m_options.find(key) == m_options.end()) {
116-
m_errors.emplace_back("cannot find required option " + key);
116+
m_errors.emplace_back("cannot find required option " + std::string(key));
117117
result = false;
118118
}
119119
}

vpr/src/server/telegramoptions.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <unordered_map>
77
#include <map>
88
#include <string>
9+
#include <string_view>
910

1011
namespace server {
1112

@@ -32,27 +33,27 @@ class TelegramOptions {
3233
};
3334

3435
public:
35-
TelegramOptions(const std::string& data, const std::vector<std::string>& expectedKeys);
36+
TelegramOptions(const std::string& data, const std::vector<std::string_view>& expectedKeys);
3637
~TelegramOptions()=default;
3738

3839
bool hasErrors() const { return !m_errors.empty(); }
3940

40-
std::map<std::size_t, std::set<std::size_t>> getMapOfSets(const std::string& name);
41+
std::map<std::size_t, std::set<std::size_t>> getMapOfSets(const std::string_view& name);
4142

42-
std::string getString(const std::string& name);
43+
std::string getString(const std::string_view& name);
4344

44-
int getInt(const std::string& name, int failValue);
45+
int getInt(const std::string_view& name, int failValue);
4546

46-
bool getBool(const std::string& name, bool failValue);
47+
bool getBool(const std::string_view& name, bool failValue);
4748

4849
std::string errorsStr() const;
4950

5051
private:
51-
std::unordered_map<std::string, Option> m_options;
52+
std::unordered_map<std::string_view, Option> m_options;
5253
std::vector<std::string> m_errors;
5354

5455
bool isDataTypeSupported(const std::string& type) const;
55-
bool checkKeysPresence(const std::vector<std::string>& keys);
56+
bool checkKeysPresence(const std::vector<std::string_view>& keys);
5657
};
5758

5859
} // namespace server

vpr/src/server/telegramparser.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55

66
namespace comm {
77

8-
std::optional<std::string> TelegramParser::tryExtractJsonValueStr(const std::string& jsonString, const std::string& key)
8+
std::optional<std::string> TelegramParser::tryExtractJsonValueStr(const std::string& jsonString, const std::string_view& key)
99
{
1010
// Find the position of the key
11-
size_t keyPos = jsonString.find("\"" + key + "\":");
11+
size_t keyPos = jsonString.find("\"" + std::string(key) + "\":");
1212

1313
if (keyPos == std::string::npos) {
1414
// Key not found

vpr/src/server/telegramparser.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define TELEGRAMPARSER_H
33

44
#include <string>
5+
#include <string_view>
56
#include <optional>
67

78
namespace comm {
@@ -21,7 +22,7 @@ class TelegramParser {
2122
static std::optional<int> tryExtractFieldStatus(const std::string& message);
2223

2324
private:
24-
static std::optional<std::string> tryExtractJsonValueStr(const std::string& jsonString, const std::string& key);
25+
static std::optional<std::string> tryExtractJsonValueStr(const std::string& jsonString, const std::string_view& key);
2526
};
2627

2728
} // namespace comm

0 commit comments

Comments
 (0)