Clean up and modernize //aos/network

Change-Id: Iadc1ff1eb7156a350403fdfb7cab684e38a69029
diff --git a/aos/network/BUILD b/aos/network/BUILD
index 11eebdb..d915404 100644
--- a/aos/network/BUILD
+++ b/aos/network/BUILD
@@ -41,9 +41,8 @@
         "team_number.h",
     ],
     deps = [
-        "//aos/logging",
         "//aos/util:string_to_num",
-        "@com_google_absl//absl/base",
+        "@com_github_google_glog//:glog",
     ],
 )
 
@@ -240,11 +239,11 @@
 flatbuffer_cc_library(
     name = "web_proxy_fbs",
     srcs = ["web_proxy.fbs"],
+    gen_reflections = True,
     includes = [
         ":connect_fbs_includes",
         "//aos:configuration_fbs_includes",
     ],
-    gen_reflections = True,
 )
 
 flatbuffer_ts_library(
@@ -258,8 +257,8 @@
 
 cc_library(
     name = "web_proxy_utils",
-    hdrs = ["web_proxy_utils.h"],
     srcs = ["web_proxy_utils.cc"],
+    hdrs = ["web_proxy_utils.h"],
     deps = [
         ":connect_fbs",
         ":web_proxy_fbs",
@@ -300,25 +299,25 @@
 cc_binary(
     name = "web_proxy_main",
     srcs = ["web_proxy_main.cc"],
-    deps = [
-        ":gen_embedded",
-        ":web_proxy",
-        "//aos/events:shm_event_loop",
-        "//aos:init",
-        "//aos/seasocks:seasocks_logger",
-        "//third_party/seasocks",
-        "@com_github_google_flatbuffers//:flatbuffers"
-    ],
     copts = [
         "-DWEBRTC_POSIX",
         "-Wno-unused-parameter",
     ],
     data = [
-        "//aos/network/www:files",
-        "//aos/network/www:main_bundle",
-        "//aos/network/www:flatbuffers",
-        "@com_github_google_flatbuffers//:flatjs",
         "//aos/events:pingpong_config.json",
+        "//aos/network/www:files",
+        "//aos/network/www:flatbuffers",
+        "//aos/network/www:main_bundle",
+        "@com_github_google_flatbuffers//:flatjs",
+    ],
+    deps = [
+        ":gen_embedded",
+        ":web_proxy",
+        "//aos:init",
+        "//aos/events:shm_event_loop",
+        "//aos/seasocks:seasocks_logger",
+        "//third_party/seasocks",
+        "@com_github_google_flatbuffers//:flatbuffers",
     ],
 )
 
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;
 }
 
diff --git a/aos/network/team_number.h b/aos/network/team_number.h
index cacc2b3..6eb1335 100644
--- a/aos/network/team_number.h
+++ b/aos/network/team_number.h
@@ -3,6 +3,7 @@
 
 #include <stdint.h>
 
+#include <optional>
 #include <string>
 
 namespace aos {
@@ -23,9 +24,11 @@
 // Guaranteed to be safe to call during static initialization time.
 void OverrideTeamNumber(uint16_t team);
 
-namespace internal {
-int ParseTeamNumber(const std::string &hostname, uint16_t *teamnumber);
-}  // namespace internal
+namespace team_number_internal {
+
+std::optional<uint16_t> ParseRoborioTeamNumber(const std::string &hostname);
+
+}  // namespace team_number_internal
 }  // namespace network
 }  // namespace aos
 
diff --git a/aos/network/team_number_test.cc b/aos/network/team_number_test.cc
index ee3f2db..03001de 100644
--- a/aos/network/team_number_test.cc
+++ b/aos/network/team_number_test.cc
@@ -2,32 +2,33 @@
 
 #include "gtest/gtest.h"
 
-#include "aos/macros.h"
-
 namespace aos {
 namespace network {
-namespace internal {
 namespace testing {
 
-TEST(TeamNumberTest, Parse2015TeamNumber) {
-  uint16_t team_number;
-  EXPECT_EQ(0, ParseTeamNumber("roboRIO-971", &team_number));
-  EXPECT_EQ(971u, team_number);
+using team_number_internal::ParseRoborioTeamNumber;
 
-  EXPECT_EQ(0, ParseTeamNumber("roboRIO-8971", &team_number));
-  EXPECT_EQ(8971u, team_number);
+TEST(TeamNumberTest, Parse2015TeamNumber) {
+  EXPECT_EQ(971u, *ParseRoborioTeamNumber("roboRIO-971"));
+
+  EXPECT_EQ(8971u, ParseRoborioTeamNumber("roboRIO-8971"));
+
+  EXPECT_FALSE(ParseRoborioTeamNumber("abc"));
+  EXPECT_FALSE(ParseRoborioTeamNumber("roboRIO-8abc"));
+  EXPECT_FALSE(ParseRoborioTeamNumber("roboRIO-"));
 }
 
 TEST(TeamNumberTest, Parse2016TeamNumber) {
-  uint16_t team_number;
-  EXPECT_EQ(0, ParseTeamNumber("roboRIO-971-FRC", &team_number));
-  EXPECT_EQ(971u, team_number);
+  EXPECT_EQ(971u, *ParseRoborioTeamNumber("roboRIO-971-FRC"));
 
-  EXPECT_EQ(0, ParseTeamNumber("roboRIO-8971-FRC", &team_number));
-  EXPECT_EQ(8971u, team_number);
+  EXPECT_EQ(8971u, *ParseRoborioTeamNumber("roboRIO-8971-FRC"));
+
+  EXPECT_FALSE(ParseRoborioTeamNumber("roboRIO-8abc-FRC"));
+  EXPECT_FALSE(ParseRoborioTeamNumber("roboRIO-8971-FRC2"));
+  EXPECT_FALSE(ParseRoborioTeamNumber("roboRIO-8971-2FRC"));
+  EXPECT_FALSE(ParseRoborioTeamNumber("roboRIO--FRC"));
 }
 
 }  // namespace testing
-}  // namespace internal
 }  // namespace network
 }  // namespace aos