[sim] WebSockets: don't override HAL_Main

Also clean up some other implementation aspects for cleaner shutdown and
reduce peak memory allocation.
This commit is contained in:
Peter Johnson
2020-09-04 10:57:05 -07:00
parent f1b1bdb121
commit f86a5f9b09
19 changed files with 780 additions and 851 deletions

View File

@@ -20,8 +20,6 @@ namespace uv = wpi::uv;
namespace wpilibws {
std::shared_ptr<WebServerClientTest> WebServerClientTest::g_instance;
// Create Web Socket and specify event callbacks
void WebServerClientTest::InitializeWebSocket(const std::string& host, int port,
const std::string& uri) {
@@ -59,11 +57,6 @@ void WebServerClientTest::InitializeWebSocket(const std::string& host, int port,
}
// Save last message received
m_json = j;
// If terminate flag set, end loop after message received
if (m_terminateFlag) {
m_loop->Stop();
}
});
m_websocket->closed.connect([this](uint16_t, wpi::StringRef) {
@@ -75,9 +68,8 @@ void WebServerClientTest::InitializeWebSocket(const std::string& host, int port,
}
// Create tcp client, specify callbacks, and create timers for loop
bool WebServerClientTest::Initialize(std::shared_ptr<uv::Loop>& loop) {
m_loop = loop;
m_loop->error.connect(
bool WebServerClientTest::Initialize() {
m_loop.error.connect(
[](uv::Error err) { wpi::errs() << "uv Error: " << err.str() << "\n"; });
m_tcp_client = uv::Tcp::Create(m_loop);
@@ -92,7 +84,7 @@ bool WebServerClientTest::Initialize(std::shared_ptr<uv::Loop>& loop) {
if (m_tcp_connected) {
m_tcp_connected = false;
m_connect_attempts = 0;
m_loop->Stop();
m_loop.Stop();
return;
}
@@ -124,7 +116,7 @@ void WebServerClientTest::AttemptConnect() {
if (m_connect_attempts >= 5) {
wpi::errs() << "Test Client Timeout. Unable to connect\n";
Exit();
m_loop.Stop();
return;
}
@@ -136,13 +128,6 @@ void WebServerClientTest::AttemptConnect() {
});
}
void WebServerClientTest::Exit() {
m_loop->Walk([](uv::Handle& h) {
h.SetLoopClosing(true);
h.Close();
});
}
void WebServerClientTest::SendMessage(const wpi::json& msg) {
if (msg.empty()) {
wpi::errs() << "Message to send is empty\n";