diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-03-16 15:25:02 +0100 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-03-16 15:25:02 +0100 |
| commit | df2be9eb678f12b6107d582d8ebd2ca2b4b7e92b (patch) | |
| tree | 71c49e292e7bd000e2363b40ac6e83cd17a31a1e /src/Xpl2Client.h | |
| parent | 50034b142dc851da7118032f7218cb1d25ea98e4 (diff) | |
| download | QtXpl2-df2be9eb678f12b6107d582d8ebd2ca2b4b7e92b.tar.gz QtXpl2-df2be9eb678f12b6107d582d8ebd2ca2b4b7e92b.zip | |
Refactor CN_ response handlers into data-driven dispatch table
Diffstat (limited to 'src/Xpl2Client.h')
| -rw-r--r-- | src/Xpl2Client.h | 34 |
1 files changed, 23 insertions, 11 deletions
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 <QHash> #include <QObject> #include <QQmlEngine> #include <QTcpSocket> +#include <functional> + 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<void (Xpl2Client *, const QVariantList &)> emitter; + }; + + static const QHash<QByteArray, ResponseEntry> s_responseTable; + + bool dispatchResponse (const QByteArray &command, const QVariantList ¶ms, + const QTcpSocket *socket); void updateConnectedState (); QString logTag (const QTcpSocket *socket) const; |
