From df2be9eb678f12b6107d582d8ebd2ca2b4b7e92b Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Mon, 16 Mar 2026 15:25:02 +0100 Subject: Refactor CN_ response handlers into data-driven dispatch table --- src/Xpl2Client.h | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'src/Xpl2Client.h') diff --git a/src/Xpl2Client.h b/src/Xpl2Client.h index c6a7c07..c9da25d 100644 --- a/src/Xpl2Client.h +++ b/src/Xpl2Client.h @@ -6,10 +6,13 @@ #include "Xpl2Protocol.h" +#include #include #include #include +#include + class Xpl2Client : public QObject { Q_OBJECT @@ -155,17 +158,26 @@ private: void handleKaPing (QTcpSocket &socket); void handleGsJcVersion (const QVariantList ¶ms); void handleGsPhVersion (const QVariantList ¶ms); - void handleJcSuccessResponse (const QByteArray &command, - const QVariantList ¶ms); - void handlePhSuccessResponse (const QByteArray &command, - const QVariantList ¶ms); - void handleCnPhCalibrationData (const QVariantList ¶ms); - void handleCnPhCalibrationRawData (const QVariantList ¶ms); - void handleCnPhCalibratedBaseFrequency (const QVariantList ¶ms); - void handleCnJcStatusMessagingStart (const QVariantList ¶ms); - void handleCnJcStatusMessagingStop (const QVariantList ¶ms); - void handleCnPhStatusMessagingStart (const QVariantList ¶ms); - void handleCnPhStatusMessagingStop (const QVariantList ¶ms); + enum class ResponseShape + { + JcSuccess, + PhSuccess, + CalData, + BaseFreq, + StatusStart + }; + + struct ResponseEntry + { + ResponseShape shape; + int minParams; + std::function emitter; + }; + + static const QHash s_responseTable; + + bool dispatchResponse (const QByteArray &command, const QVariantList ¶ms, + const QTcpSocket *socket); void updateConnectedState (); QString logTag (const QTcpSocket *socket) const; -- cgit v1.2.3