mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-03 03:01:44 +00:00
[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:
@@ -5,10 +5,10 @@
|
||||
#include <cstdio>
|
||||
#include <thread>
|
||||
|
||||
#include <fmt/format.h>
|
||||
#include <hal/DriverStation.h>
|
||||
#include <hal/HALBase.h>
|
||||
#include <hal/Main.h>
|
||||
#include <wpi/print.h>
|
||||
|
||||
extern "C" int HALSIM_InitExtension(void);
|
||||
|
||||
@@ -24,7 +24,7 @@ int main() {
|
||||
while (cycleCount < 1000) {
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
cycleCount++;
|
||||
fmt::print("Count: {}\n", cycleCount);
|
||||
wpi::print("Count: {}\n", cycleCount);
|
||||
}
|
||||
|
||||
std::puts("DONE");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#include <fmt/format.h>
|
||||
#include <wpi/SmallString.h>
|
||||
#include <wpi/print.h>
|
||||
#include <wpinet/raw_uv_ostream.h>
|
||||
#include <wpinet/uv/util.h>
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace wpilibws {
|
||||
// Create Web Socket and specify event callbacks
|
||||
void WebServerClientTest::InitializeWebSocket(const std::string& host, int port,
|
||||
const std::string& uri) {
|
||||
fmt::print("Will attempt to connect to: {}:{}{}\n", host, port, uri);
|
||||
wpi::print("Will attempt to connect to: {}:{}{}\n", host, port, uri);
|
||||
m_websocket = wpi::WebSocket::CreateClient(*m_tcp_client.get(), uri,
|
||||
fmt::format("{}:{}", host, port));
|
||||
|
||||
@@ -46,7 +46,7 @@ void WebServerClientTest::InitializeWebSocket(const std::string& host, int port,
|
||||
} catch (const wpi::json::parse_error& e) {
|
||||
std::string err("JSON parse failed: ");
|
||||
err += e.what();
|
||||
fmt::print(stderr, "{}\n", err);
|
||||
wpi::print(stderr, "{}\n", err);
|
||||
m_websocket->Fail(1003, err);
|
||||
return;
|
||||
}
|
||||
@@ -65,7 +65,7 @@ void WebServerClientTest::InitializeWebSocket(const std::string& host, int port,
|
||||
// Create tcp client, specify callbacks, and create timers for loop
|
||||
bool WebServerClientTest::Initialize() {
|
||||
m_loop.error.connect(
|
||||
[](uv::Error err) { fmt::print(stderr, "uv Error: {}\n", err.str()); });
|
||||
[](uv::Error err) { wpi::print(stderr, "uv Error: {}\n", err.str()); });
|
||||
|
||||
m_tcp_client = uv::Tcp::Create(m_loop);
|
||||
if (!m_tcp_client) {
|
||||
@@ -106,7 +106,7 @@ bool WebServerClientTest::Initialize() {
|
||||
|
||||
void WebServerClientTest::AttemptConnect() {
|
||||
m_connect_attempts++;
|
||||
fmt::print("Test Client Connection Attempt {}\n", m_connect_attempts);
|
||||
wpi::print("Test Client Connection Attempt {}\n", m_connect_attempts);
|
||||
|
||||
if (m_connect_attempts >= 5) {
|
||||
std::fputs("Test Client Timeout. Unable to connect\n", stderr);
|
||||
@@ -144,7 +144,7 @@ void WebServerClientTest::SendMessage(const wpi::json& msg) {
|
||||
m_buffers->Release(bufs);
|
||||
}
|
||||
if (err) {
|
||||
fmt::print(stderr, "{}\n", err.str());
|
||||
wpi::print(stderr, "{}\n", err.str());
|
||||
std::fflush(stderr);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
#include <thread>
|
||||
|
||||
#include <fmt/format.h>
|
||||
#include <gtest/gtest.h>
|
||||
#include <hal/DriverStation.h>
|
||||
#include <hal/HALBase.h>
|
||||
#include <hal/Main.h>
|
||||
#include <hal/simulation/DIOData.h>
|
||||
#include <wpi/print.h>
|
||||
#include <wpinet/uv/Loop.h>
|
||||
|
||||
#include "HALSimWSServer.h"
|
||||
@@ -55,7 +55,7 @@ TEST_F(WebServerIntegrationTest, DISABLED_DigitalOutput) {
|
||||
return;
|
||||
}
|
||||
if (IsConnectedClientWS()) {
|
||||
fmt::print("***** Setting DIO value for pin {} to {}\n", PIN,
|
||||
wpi::print("***** Setting DIO value for pin {} to {}\n", PIN,
|
||||
(EXPECTED_VALUE ? "true" : "false"));
|
||||
HALSIM_SetDIOValue(PIN, EXPECTED_VALUE);
|
||||
done = true;
|
||||
@@ -83,7 +83,7 @@ TEST_F(WebServerIntegrationTest, DISABLED_DigitalOutput) {
|
||||
test_value = it.value();
|
||||
}
|
||||
} 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());
|
||||
}
|
||||
|
||||
// Compare results
|
||||
@@ -109,7 +109,7 @@ TEST_F(WebServerIntegrationTest, DISABLED_DigitalInput) {
|
||||
wpi::json msg = {{"type", "DIO"},
|
||||
{"device", std::to_string(PIN)},
|
||||
{"data", {{"<>value", EXPECTED_VALUE}}}};
|
||||
fmt::print("***** Input JSON: {}\n", msg.dump());
|
||||
wpi::print("***** Input JSON: {}\n", msg.dump());
|
||||
m_webserverClient->SendMessage(msg);
|
||||
done = true;
|
||||
}
|
||||
@@ -144,7 +144,7 @@ TEST_F(WebServerIntegrationTest, DriverStation) {
|
||||
{"type", "DriverStation"},
|
||||
{"device", ""},
|
||||
{"data", {{">enabled", EXPECTED_VALUE}, {">new_data", true}}}};
|
||||
fmt::print("***** Input JSON: {}\n", msg.dump());
|
||||
wpi::print("***** Input JSON: {}\n", msg.dump());
|
||||
m_webserverClient->SendMessage(msg);
|
||||
done = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user