refactor: Add request id as type

This commit is contained in:
Petr Mironychev
2025-09-17 20:27:49 +02:00
parent d2b6c11569
commit 99cd79aac8
19 changed files with 122 additions and 61 deletions

View File

@ -60,19 +60,20 @@ public:
virtual void prepareNetworkRequest(QNetworkRequest &networkRequest) const = 0;
virtual ProviderID providerID() const = 0;
virtual void sendRequest(const QString &requestId, const QUrl &url, const QJsonObject &payload)
virtual void sendRequest(const RequestID &requestId, const QUrl &url, const QJsonObject &payload)
= 0;
HttpClient *httpClient() const;
public slots:
virtual void onDataReceived(const QString &requestId, const QByteArray &data) = 0;
virtual void onRequestFinished(const QString &requestId, bool success, const QString &error) = 0;
virtual void onDataReceived(const RequestID &requestId, const QByteArray &data) = 0;
virtual void onRequestFinished(const RequestID &requestId, bool success, const QString &error)
= 0;
signals:
void partialResponseReceived(const QString &requestId, const QString &partialText);
void fullResponseReceived(const QString &requestId, const QString &fullText);
void requestFailed(const QString &requestId, const QString &error);
void partialResponseReceived(const RequestID &requestId, const QString &partialText);
void fullResponseReceived(const RequestID &requestId, const QString &fullText);
void requestFailed(const RequestID &requestId, const QString &error);
protected:
QJsonObject parseEventLine(const QString &line);

View File

@ -172,7 +172,7 @@ LLMCore::ProviderID ClaudeProvider::providerID() const
}
void ClaudeProvider::sendRequest(
const QString &requestId, const QUrl &url, const QJsonObject &payload)
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload)
{
m_dataBuffers[requestId].clear();
m_requestUrls[requestId] = url;
@ -188,7 +188,8 @@ void ClaudeProvider::sendRequest(
emit httpClient()->sendRequest(request);
}
void ClaudeProvider::onDataReceived(const QString &requestId, const QByteArray &data)
void ClaudeProvider::onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data)
{
LLMCore::DataBuffers &buffers = m_dataBuffers[requestId];
QStringList lines = buffers.rawStreamBuffer.processData(data);
@ -236,7 +237,8 @@ void ClaudeProvider::onDataReceived(const QString &requestId, const QByteArray &
}
}
void ClaudeProvider::onRequestFinished(const QString &requestId, bool success, const QString &error)
void ClaudeProvider::onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId, bool success, const QString &error)
{
if (!success) {
LOG_MESSAGE(QString("ClaudeProvider request %1 failed: %2").arg(requestId, error));

View File

@ -19,7 +19,7 @@
#pragma once
#include "llmcore/Provider.hpp"
#include <llmcore/Provider.hpp>
namespace QodeAssist::Providers {
@ -42,11 +42,16 @@ public:
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
void sendRequest(const QString &requestId, const QUrl &url, const QJsonObject &payload) override;
void sendRequest(
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload) override;
public slots:
void onDataReceived(const QString &requestId, const QByteArray &data) override;
void onRequestFinished(const QString &requestId, bool success, const QString &error) override;
void onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data) override;
void onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId,
bool success,
const QString &error) override;
};
} // namespace QodeAssist::Providers

View File

@ -170,7 +170,7 @@ LLMCore::ProviderID GoogleAIProvider::providerID() const
}
void GoogleAIProvider::sendRequest(
const QString &requestId, const QUrl &url, const QJsonObject &payload)
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload)
{
m_dataBuffers[requestId].clear();
m_requestUrls[requestId] = url;
@ -187,7 +187,8 @@ void GoogleAIProvider::sendRequest(
emit httpClient()->sendRequest(request);
}
void GoogleAIProvider::onDataReceived(const QString &requestId, const QByteArray &data)
void GoogleAIProvider::onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data)
{
if (data.isEmpty()) {
return;
@ -220,7 +221,8 @@ void GoogleAIProvider::onDataReceived(const QString &requestId, const QByteArray
}
}
void GoogleAIProvider::onRequestFinished(const QString &requestId, bool success, const QString &error)
void GoogleAIProvider::onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId, bool success, const QString &error)
{
if (!success) {
LOG_MESSAGE(QString("GoogleAIProvider request %1 failed: %2").arg(requestId, error));
@ -238,7 +240,8 @@ void GoogleAIProvider::onRequestFinished(const QString &requestId, bool success,
m_requestUrls.remove(requestId);
}
bool GoogleAIProvider::handleStreamResponse(const QString &requestId, const QByteArray &data)
bool GoogleAIProvider::handleStreamResponse(
const LLMCore::RequestID &requestId, const QByteArray &data)
{
LLMCore::DataBuffers &buffers = m_dataBuffers[requestId];
QStringList lines = buffers.rawStreamBuffer.processData(data);

View File

@ -42,14 +42,19 @@ public:
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
void sendRequest(const QString &requestId, const QUrl &url, const QJsonObject &payload) override;
void sendRequest(
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload) override;
public slots:
void onDataReceived(const QString &requestId, const QByteArray &data) override;
void onRequestFinished(const QString &requestId, bool success, const QString &error) override;
void onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data) override;
void onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId,
bool success,
const QString &error) override;
private:
bool handleStreamResponse(const QString &requestId, const QByteArray &data);
bool handleStreamResponse(const LLMCore::RequestID &requestId, const QByteArray &data);
};
} // namespace QodeAssist::Providers

View File

@ -123,7 +123,7 @@ LLMCore::ProviderID LMStudioProvider::providerID() const
}
void LMStudioProvider::sendRequest(
const QString &requestId, const QUrl &url, const QJsonObject &payload)
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload)
{
m_dataBuffers[requestId].clear();
m_requestUrls[requestId] = url;
@ -140,7 +140,8 @@ void LMStudioProvider::sendRequest(
emit httpClient()->sendRequest(request);
}
void LMStudioProvider::onDataReceived(const QString &requestId, const QByteArray &data)
void LMStudioProvider::onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data)
{
LLMCore::DataBuffers &buffers = m_dataBuffers[requestId];
QStringList lines = buffers.rawStreamBuffer.processData(data);
@ -193,7 +194,8 @@ void LMStudioProvider::onDataReceived(const QString &requestId, const QByteArray
}
}
void LMStudioProvider::onRequestFinished(const QString &requestId, bool success, const QString &error)
void LMStudioProvider::onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId, bool success, const QString &error)
{
if (!success) {
LOG_MESSAGE(QString("LMStudioProvider request %1 failed: %2").arg(requestId, error));

View File

@ -42,11 +42,16 @@ public:
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
void sendRequest(const QString &requestId, const QUrl &url, const QJsonObject &payload) override;
void sendRequest(
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload) override;
public slots:
void onDataReceived(const QString &requestId, const QByteArray &data) override;
void onRequestFinished(const QString &requestId, bool success, const QString &error) override;
void onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data) override;
void onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId,
bool success,
const QString &error) override;
};
} // namespace QodeAssist::Providers

View File

@ -149,7 +149,7 @@ LLMCore::ProviderID LlamaCppProvider::providerID() const
}
void LlamaCppProvider::sendRequest(
const QString &requestId, const QUrl &url, const QJsonObject &payload)
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload)
{
m_dataBuffers[requestId].clear();
m_requestUrls[requestId] = url;
@ -166,7 +166,8 @@ void LlamaCppProvider::sendRequest(
emit httpClient()->sendRequest(request);
}
void LlamaCppProvider::onDataReceived(const QString &requestId, const QByteArray &data)
void LlamaCppProvider::onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data)
{
LLMCore::DataBuffers &buffers = m_dataBuffers[requestId];
QStringList lines = buffers.rawStreamBuffer.processData(data);
@ -231,7 +232,8 @@ void LlamaCppProvider::onDataReceived(const QString &requestId, const QByteArray
}
}
void LlamaCppProvider::onRequestFinished(const QString &requestId, bool success, const QString &error)
void LlamaCppProvider::onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId, bool success, const QString &error)
{
if (!success) {
LOG_MESSAGE(QString("LlamaCppProvider request %1 failed: %2").arg(requestId, error));

View File

@ -42,11 +42,16 @@ public:
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
void sendRequest(const QString &requestId, const QUrl &url, const QJsonObject &payload) override;
void sendRequest(
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload) override;
public slots:
void onDataReceived(const QString &requestId, const QByteArray &data) override;
void onRequestFinished(const QString &requestId, bool success, const QString &error) override;
void onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data) override;
void onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId,
bool success,
const QString &error) override;
};
} // namespace QodeAssist::Providers

View File

@ -126,7 +126,7 @@ LLMCore::ProviderID MistralAIProvider::providerID() const
}
void MistralAIProvider::sendRequest(
const QString &requestId, const QUrl &url, const QJsonObject &payload)
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload)
{
m_dataBuffers[requestId].clear();
m_requestUrls[requestId] = url;
@ -143,7 +143,8 @@ void MistralAIProvider::sendRequest(
emit httpClient()->sendRequest(request);
}
void MistralAIProvider::onDataReceived(const QString &requestId, const QByteArray &data)
void MistralAIProvider::onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data)
{
LLMCore::DataBuffers &buffers = m_dataBuffers[requestId];
QStringList lines = buffers.rawStreamBuffer.processData(data);
@ -197,7 +198,7 @@ void MistralAIProvider::onDataReceived(const QString &requestId, const QByteArra
}
void MistralAIProvider::onRequestFinished(
const QString &requestId, bool success, const QString &error)
const QodeAssist::LLMCore::RequestID &requestId, bool success, const QString &error)
{
if (!success) {
LOG_MESSAGE(QString("MistralAIProvider request %1 failed: %2").arg(requestId, error));

View File

@ -42,11 +42,16 @@ public:
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
void sendRequest(const QString &requestId, const QUrl &url, const QJsonObject &payload) override;
void sendRequest(
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload) override;
public slots:
void onDataReceived(const QString &requestId, const QByteArray &data) override;
void onRequestFinished(const QString &requestId, bool success, const QString &error) override;
void onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data) override;
void onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId,
bool success,
const QString &error) override;
};
} // namespace QodeAssist::Providers

View File

@ -186,7 +186,7 @@ LLMCore::ProviderID OllamaProvider::providerID() const
}
void OllamaProvider::sendRequest(
const QString &requestId, const QUrl &url, const QJsonObject &payload)
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload)
{
m_dataBuffers[requestId].clear();
m_requestUrls[requestId] = url;
@ -202,7 +202,8 @@ void OllamaProvider::sendRequest(
emit httpClient()->sendRequest(request);
}
void OllamaProvider::onDataReceived(const QString &requestId, const QByteArray &data)
void OllamaProvider::onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data)
{
LLMCore::DataBuffers &buffers = m_dataBuffers[requestId];
QStringList lines = buffers.rawStreamBuffer.processData(data);
@ -261,7 +262,8 @@ void OllamaProvider::onDataReceived(const QString &requestId, const QByteArray &
}
}
void OllamaProvider::onRequestFinished(const QString &requestId, bool success, const QString &error)
void OllamaProvider::onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId, bool success, const QString &error)
{
if (!success) {
LOG_MESSAGE(QString("OllamaProvider request %1 failed: %2").arg(requestId, error));

View File

@ -42,11 +42,16 @@ public:
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
void sendRequest(const QString &requestId, const QUrl &url, const QJsonObject &payload) override;
void sendRequest(
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload) override;
public slots:
void onDataReceived(const QString &requestId, const QByteArray &data) override;
void onRequestFinished(const QString &requestId, bool success, const QString &error) override;
void onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data) override;
void onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId,
bool success,
const QString &error) override;
};
} // namespace QodeAssist::Providers

View File

@ -135,7 +135,7 @@ LLMCore::ProviderID OpenAICompatProvider::providerID() const
}
void OpenAICompatProvider::sendRequest(
const QString &requestId, const QUrl &url, const QJsonObject &payload)
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload)
{
m_dataBuffers[requestId].clear();
m_requestUrls[requestId] = url;
@ -152,7 +152,8 @@ void OpenAICompatProvider::sendRequest(
emit httpClient()->sendRequest(request);
}
void OpenAICompatProvider::onDataReceived(const QString &requestId, const QByteArray &data)
void OpenAICompatProvider::onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data)
{
LLMCore::DataBuffers &buffers = m_dataBuffers[requestId];
QStringList lines = buffers.rawStreamBuffer.processData(data);
@ -206,7 +207,7 @@ void OpenAICompatProvider::onDataReceived(const QString &requestId, const QByteA
}
void OpenAICompatProvider::onRequestFinished(
const QString &requestId, bool success, const QString &error)
const QodeAssist::LLMCore::RequestID &requestId, bool success, const QString &error)
{
if (!success) {
LOG_MESSAGE(QString("OpenAICompatProvider request %1 failed: %2").arg(requestId, error));

View File

@ -42,11 +42,16 @@ public:
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
void sendRequest(const QString &requestId, const QUrl &url, const QJsonObject &payload) override;
void sendRequest(
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload) override;
public slots:
void onDataReceived(const QString &requestId, const QByteArray &data) override;
void onRequestFinished(const QString &requestId, bool success, const QString &error) override;
void onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data) override;
void onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId,
bool success,
const QString &error) override;
};
} // namespace QodeAssist::Providers

View File

@ -173,7 +173,7 @@ LLMCore::ProviderID OpenAIProvider::providerID() const
}
void OpenAIProvider::sendRequest(
const QString &requestId, const QUrl &url, const QJsonObject &payload)
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload)
{
m_dataBuffers[requestId].clear();
m_requestUrls[requestId] = url;
@ -189,7 +189,8 @@ void OpenAIProvider::sendRequest(
emit httpClient()->sendRequest(request);
}
void OpenAIProvider::onDataReceived(const QString &requestId, const QByteArray &data)
void OpenAIProvider::onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data)
{
LLMCore::DataBuffers &buffers = m_dataBuffers[requestId];
QStringList lines = buffers.rawStreamBuffer.processData(data);
@ -242,7 +243,8 @@ void OpenAIProvider::onDataReceived(const QString &requestId, const QByteArray &
}
}
void OpenAIProvider::onRequestFinished(const QString &requestId, bool success, const QString &error)
void OpenAIProvider::onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId, bool success, const QString &error)
{
if (!success) {
LOG_MESSAGE(QString("OpenAIProvider request %1 failed: %2").arg(requestId, error));

View File

@ -42,11 +42,16 @@ public:
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
void sendRequest(const QString &requestId, const QUrl &url, const QJsonObject &payload) override;
void sendRequest(
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload) override;
public slots:
void onDataReceived(const QString &requestId, const QByteArray &data) override;
void onRequestFinished(const QString &requestId, bool success, const QString &error) override;
void onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data) override;
void onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId,
bool success,
const QString &error) override;
};
} // namespace QodeAssist::Providers

View File

@ -51,7 +51,8 @@ LLMCore::ProviderID OpenRouterProvider::providerID() const
return LLMCore::ProviderID::OpenRouter;
}
void OpenRouterProvider::onDataReceived(const QString &requestId, const QByteArray &data)
void OpenRouterProvider::onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data)
{
LLMCore::DataBuffers &buffers = m_dataBuffers[requestId];
QStringList lines = buffers.rawStreamBuffer.processData(data);
@ -105,7 +106,7 @@ void OpenRouterProvider::onDataReceived(const QString &requestId, const QByteArr
}
void OpenRouterProvider::onRequestFinished(
const QString &requestId, bool success, const QString &error)
const QodeAssist::LLMCore::RequestID &requestId, bool success, const QString &error)
{
if (!success) {
LOG_MESSAGE(QString("OpenRouterProvider request %1 failed: %2").arg(requestId, error));

View File

@ -32,8 +32,12 @@ public:
LLMCore::ProviderID providerID() const override;
public slots:
void onDataReceived(const QString &requestId, const QByteArray &data) override;
void onRequestFinished(const QString &requestId, bool success, const QString &error) override;
void onDataReceived(
const QodeAssist::LLMCore::RequestID &requestId, const QByteArray &data) override;
void onRequestFinished(
const QodeAssist::LLMCore::RequestID &requestId,
bool success,
const QString &error) override;
};
} // namespace QodeAssist::Providers