From e9d8a8b052150f42ea00da2c07e3f78a9b7d2061 Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Tue, 24 Mar 2026 17:25:03 +0100 Subject: Add JettingProxy relay, convert Xpl2Client to active connection model MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Insert a transparent TCP proxy between the controller and N clients: - JettingProxy listens on 9110-9112 (controller) and 9210-9212 (clients) - Broadcasts controller frames to all clients, forwards client→controller - Independent KA_PING handling on both sides Convert Xpl2Client from passive QTcpServer listener to active QTcpSocket outbound connections with auto-retry. New QML API: host/commandPort properties, connectToProxy()/disconnectFromProxy() replacing startListening()/stopListening(). --- jetting-proxy/main.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 jetting-proxy/main.cpp (limited to 'jetting-proxy/main.cpp') diff --git a/jetting-proxy/main.cpp b/jetting-proxy/main.cpp new file mode 100644 index 0000000..0e14054 --- /dev/null +++ b/jetting-proxy/main.cpp @@ -0,0 +1,37 @@ +/** + * @file main.cpp + * @brief Jetting proxy — relay between one controller and N clients. + */ +#include "JettingProxy.h" + +#include +#include + +int +main (int argc, char *argv[]) +{ + qSetMessagePattern ("Proxy [%{time HH:mm:ss.zzz}] %{message}"); + + QCoreApplication app (argc, argv); + + QCommandLineParser parser; + parser.addOption ({ "wire-debug", "Log forwarded frames to dev log" }); + parser.addOption ({ "controller-port", + "Base port for controller side (default 9110)", "port", + "9110" }); + parser.addOption ({ "client-port", + "Base port for client side (default 9210)", "port", + "9210" }); + parser.addHelpOption (); + parser.process (app); + + if (parser.isSet ("wire-debug")) + JettingProxy::enableWireDebug (); + + quint16 controllerPort = parser.value ("controller-port").toUShort (); + quint16 clientPort = parser.value ("client-port").toUShort (); + + new JettingProxy (controllerPort, clientPort, &app); + + return app.exec (); +} -- cgit v1.2.3