Clean up and modernize //aos/network
Change-Id: Iadc1ff1eb7156a350403fdfb7cab684e38a69029
diff --git a/aos/network/team_number.cc b/aos/network/team_number.cc
index 1b90079..b031299 100644
--- a/aos/network/team_number.cc
+++ b/aos/network/team_number.cc
@@ -5,16 +5,15 @@
#include <unistd.h>
#include <stdlib.h>
-#include <string>
+#include "glog/logging.h"
-#include "absl/base/call_once.h"
-#include "aos/logging/logging.h"
#include "aos/util/string_to_num.h"
namespace aos {
namespace network {
-namespace internal {
-int ParseTeamNumber(const std::string &hostname, uint16_t *teamnumber) {
+namespace team_number_internal {
+
+std::optional<uint16_t> ParseRoborioTeamNumber(const std::string &hostname) {
for (size_t i = 0; i < hostname.size(); i++) {
if (hostname[i] == '-') {
const std::string num_as_s =
@@ -24,45 +23,49 @@
int num;
if (!::aos::util::StringToNumber(num_as_s, &num)) {
- return -1;
+ return std::nullopt;
}
if (hostname.substr(0, i) == "roboRIO" &&
std::to_string(num) == num_as_s) {
- *teamnumber = num;
- return 0;
- } else {
- return -1;
+ return num;
}
+ return std::nullopt;
}
}
- return -1;
+ return std::nullopt;
}
-} // namespace internal
+
+} // namespace team_number_internal
namespace {
uint16_t override_team;
-void DoGetTeamNumber(uint16_t *result) {
+uint16_t DoGetTeamNumber() {
if (override_team != 0) {
- *result = override_team;
- return;
+ return override_team;
}
const char *override_number = getenv("AOS_TEAM_NUMBER");
if (override_number != nullptr) {
- if (!::aos::util::StringToNumber(override_number, result)) {
- AOS_LOG(FATAL, "error parsing AOS_TEAM_NUMBER '%s'\n", override_number);
+ uint16_t result;
+ if (!::aos::util::StringToNumber(override_number, &result)) {
+ LOG(FATAL) << "Error parsing AOS_TEAM_NUMBER: " << override_number;
}
- AOS_LOG(WARNING,
- "team number overridden by AOS_TEAM_NUMBER to %" PRIu16 "\n", *result);
- } else {
- int error = internal::ParseTeamNumber(GetHostname(), result);
- if (error) {
- AOS_LOG(FATAL, "Invalid hostname %s\n", GetHostname().c_str());
- }
- AOS_LOG(INFO, "team number is %" PRIu16 "\n", *result);
+ LOG(WARNING)
+ << "Team number overriden by AOS_TEAM_NUMBER environment variable to "
+ << result;
+ return result;
}
+ const auto hostname = GetHostname();
+ {
+ const auto result = team_number_internal::ParseRoborioTeamNumber(hostname);
+ if (result) {
+ LOG(INFO) << "roboRIO hostname team number is: " << *result;
+ return *result;
+ }
+ }
+ LOG(FATAL) << "Failed to parse a team number from hostname: " << hostname;
}
} // namespace
@@ -70,14 +73,12 @@
::std::string GetHostname() {
char buf[256];
buf[sizeof(buf) - 1] = '\0';
- AOS_PCHECK(gethostname(buf, sizeof(buf) - 1));
+ PCHECK(gethostname(buf, sizeof(buf) - 1) == 0);
return buf;
}
uint16_t GetTeamNumber() {
- static absl::once_flag once;
- static uint16_t result;
- absl::call_once(once, DoGetTeamNumber, &result);
+ const static uint16_t result = DoGetTeamNumber();
return result;
}