[wpiutil] Upgrade to fmt 10.2.1, add wpi::print (#6161)

We now use a wrapper (wpi::print) to catch exceptions since we can't patch
std::print() to not throw when we ultimately migrate to it.

fmtlib and std format/print throw the same exceptions and always have. We previously patched fmt::print() to not throw a write failure exception, but we can't do that for std::print(); wpi::print() is the migration plan.
This commit is contained in:
Tyler Veness
2024-05-12 06:25:42 -07:00
committed by GitHub
parent 6c9dcc157e
commit d88c71ffdc
99 changed files with 1374 additions and 1130 deletions

View File

@@ -8,11 +8,11 @@
#include <string_view>
#include <fmt/format.h>
#include <wpi/MemoryBuffer.h>
#include <wpi/SmallVector.h>
#include <wpi/StringExtras.h>
#include <wpi/fs.h>
#include <wpi/print.h>
#include <wpinet/MimeTypes.h>
#include <wpinet/UrlParser.h>
#include <wpinet/raw_uv_ostream.h>
@@ -83,7 +83,7 @@ void HALSimHttpConnection::OnSimValueChanged(const wpi::json& msg) {
return;
}
} catch (wpi::json::exception& e) {
fmt::print(stderr, "Error with message: {}\n", e.what());
wpi::print(stderr, "Error with message: {}\n", e.what());
}
// render json to buffers
@@ -104,7 +104,7 @@ void HALSimHttpConnection::OnSimValueChanged(const wpi::json& msg) {
}
if (err) {
fmt::print(stderr, "{}\n", err.str());
wpi::print(stderr, "{}\n", err.str());
std::fflush(stderr);
}
});
@@ -201,6 +201,6 @@ void HALSimHttpConnection::MySendError(int code, std::string_view message) {
void HALSimHttpConnection::Log(int code) {
auto method = wpi::http_method_str(m_request.GetMethod());
fmt::print(stderr, "{} {} HTTP/{}.{} {}\n", method, m_request.GetUrl(),
wpi::print(stderr, "{} {} HTTP/{}.{} {}\n", method, m_request.GetUrl(),
m_request.GetMajor(), m_request.GetMinor(), code);
}

View File

@@ -4,9 +4,9 @@
#include "HALSimWeb.h"
#include <fmt/format.h>
#include <wpi/SmallString.h>
#include <wpi/fs.h>
#include <wpi/print.h>
#include <wpinet/UrlParser.h>
#include <wpinet/WebSocketServer.h>
#include <wpinet/raw_uv_ostream.h>
@@ -25,7 +25,7 @@ HALSimWeb::HALSimWeb(wpi::uv::Loop& loop, ProviderContainer& providers,
m_providers(providers),
m_simDevicesProvider(simDevicesProvider) {
m_loop.error.connect([](uv::Error err) {
fmt::print(stderr, "HALSim WS Server libuv ERROR: {}\n", err.str());
wpi::print(stderr, "HALSim WS Server libuv ERROR: {}\n", err.str());
});
m_server = uv::Tcp::Create(m_loop);
@@ -70,7 +70,7 @@ bool HALSimWeb::Initialize() {
try {
m_port = std::stoi(port);
} catch (const std::invalid_argument& err) {
fmt::print(stderr, "Error decoding HALSIMWS_PORT ({})\n", err.what());
wpi::print(stderr, "Error decoding HALSIMWS_PORT ({})\n", err.what());
return false;
}
} else {
@@ -114,17 +114,17 @@ void HALSimWeb::Start() {
// start listening for incoming connections
m_server->Listen();
fmt::print("Listening at http://localhost:{}\n", m_port);
fmt::print("WebSocket URI: {}\n", m_uri);
wpi::print("Listening at http://localhost:{}\n", m_port);
wpi::print("WebSocket URI: {}\n", m_uri);
// Print any filters we are using
if (m_useMsgFiltering) {
fmt::print("WS Message Filters:");
wpi::print("WS Message Filters:");
for (auto filter : m_msgFilters.keys()) {
fmt::print("* \"{}\"\n", filter);
wpi::print("* \"{}\"\n", filter);
}
} else {
fmt::print("No WS Message Filters specified");
wpi::print("No WS Message Filters specified");
}
}
@@ -180,7 +180,7 @@ void HALSimWeb::OnNetValueChanged(const wpi::json& msg) {
provider->OnNetValueChanged(msg.at("data"));
}
} catch (wpi::json::exception& e) {
fmt::print(stderr, "Error with incoming message: {}\n", e.what());
wpi::print(stderr, "Error with incoming message: {}\n", e.what());
}
}