From b45d0496c642d5b153f65c4f45ae5a17ce62e381 Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Sat, 17 Oct 2026 21:30:44 +0200 Subject: [PATCH] =?UTF-8?q?feat(moteur):=20listes=20ferm=C3=A9es=20du=20pr?= =?UTF-8?q?otocole=20expos=C3=A9es=20par=20le=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OptimizerPlan::kinds() (désormais appliquée par convertirAction) et verdictCodes(), dans l'ordre des contrôles ; SocketScheduler::knownTriggers() (appliquée par rangDeclencheur), knownFallbackCodes(), knownLastErrorCodes() ; OptimizerClient::knownErrorCodes(). Le contrat OpenRPC en régénère ses énumérations. Aucun comportement changé : mêmes listes, mêmes ordres. Co-Authored-By: Claude Opus 5.5 --- .../etm/scheduler/optimizerclient.cpp | 12 ++++++ energyplugin/etm/scheduler/optimizerclient.h | 8 ++++ energyplugin/etm/scheduler/optimizerplan.cpp | 42 +++++++++++++++++-- energyplugin/etm/scheduler/optimizerplan.h | 20 +++++++++ .../etm/scheduler/socketscheduler.cpp | 24 +++++++++-- energyplugin/etm/scheduler/socketscheduler.h | 20 +++++++++ 6 files changed, 119 insertions(+), 7 deletions(-) diff --git a/energyplugin/etm/scheduler/optimizerclient.cpp b/energyplugin/etm/scheduler/optimizerclient.cpp index 12834c3..d337979 100644 --- a/energyplugin/etm/scheduler/optimizerclient.cpp +++ b/energyplugin/etm/scheduler/optimizerclient.cpp @@ -200,6 +200,18 @@ bool OptimizerClient::writeToken(const QString &path, const QByteArray &token, Q return true; } +QStringList OptimizerClient::knownErrorCodes() +{ + return {QStringLiteral("invalid-endpoint"), QStringLiteral("token-too-short"), + QStringLiteral("connect-failed"), QStringLiteral("closed-during-handshake"), + QStringLiteral("connection-lost"), QStringLiteral("handshake-timeout"), + QStringLiteral("handshake-refused"), QStringLiteral("invalid-handshake"), + QStringLiteral("major-mismatch"), QStringLiteral("line-too-long"), + QStringLiteral("invalid-json"), QStringLiteral("missing-id"), QStringLiteral("unknown-id"), + QStringLiteral("timeout"), QStringLiteral("rpc-error"), QStringLiteral("invalid-response"), + QStringLiteral("disconnected")}; +} + int OptimizerClient::tokenLength(const QByteArray &token) { return int(QString::fromUtf8(token).toUcs4().size()); diff --git a/energyplugin/etm/scheduler/optimizerclient.h b/energyplugin/etm/scheduler/optimizerclient.h index 5aed674..3c81ab0 100644 --- a/energyplugin/etm/scheduler/optimizerclient.h +++ b/energyplugin/etm/scheduler/optimizerclient.h @@ -165,6 +165,14 @@ public: */ static constexpr int kMinTokenChars = 16; + /*! + * \brief Les codes d'erreur que le client peut retenir (\c lastErrorCode()) ou émettre + * (\c planFailed(), \c protocolError()). + * \return Connexion, handshake, ligne écartée, requête. La suite \c etm-powersync-protocolschema + * confronte la liste au code source du client. + */ + static QStringList knownErrorCodes(); + /*! \brief Longueur d'un token, comparée à \c kMinTokenChars. * \param token Le token, en UTF-8. \return Son nombre de caractères (points de code). */ static int tokenLength(const QByteArray &token); diff --git a/energyplugin/etm/scheduler/optimizerplan.cpp b/energyplugin/etm/scheduler/optimizerplan.cpp index 06dec95..dab0ea8 100644 --- a/energyplugin/etm/scheduler/optimizerplan.cpp +++ b/energyplugin/etm/scheduler/optimizerplan.cpp @@ -103,9 +103,7 @@ QString convertirAction(const QVariant &brut, const QHash