prepare for selectable backends
This commit is contained in:
65
backend.cpp
Normal file
65
backend.cpp
Normal file
@ -0,0 +1,65 @@
|
||||
#include "backend.h"
|
||||
|
||||
AiBackend::Request::Request(const QString& textIn, void* userPtrIn):
|
||||
text(textIn),
|
||||
userPtr(userPtrIn)
|
||||
{
|
||||
id = idCounter++;
|
||||
}
|
||||
|
||||
const QString& AiBackend::Request::getText() const
|
||||
{
|
||||
return text;
|
||||
}
|
||||
|
||||
uint32_t AiBackend::Request::getId() const
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
void* AiBackend::Request::getUserPtr() const
|
||||
{
|
||||
return userPtr;
|
||||
}
|
||||
|
||||
bool AiBackend::Request::operator==(const Request& in)
|
||||
{
|
||||
return id == in.id;
|
||||
}
|
||||
|
||||
AiBackend::Response::Response(QString textIn, uint32_t idIn, bool finishedIn, void* userPtrIn):
|
||||
AiBackend::Request::Request(textIn, userPtrIn),
|
||||
finished(finishedIn)
|
||||
{
|
||||
id = idIn;
|
||||
}
|
||||
|
||||
bool AiBackend::Response::isFinished() const
|
||||
{
|
||||
return finished;
|
||||
}
|
||||
|
||||
void AiBackend::Response::setUserPtr(void* ptr)
|
||||
{
|
||||
userPtr = ptr;
|
||||
}
|
||||
|
||||
void AiBackend::generate(const Request& request)
|
||||
{
|
||||
m_requests.insert(request.getId(), request);
|
||||
generateImpl(request);
|
||||
}
|
||||
|
||||
bool AiBackend::isValidId(uint32_t id)
|
||||
{
|
||||
return m_requests.find(id) != m_requests.end();
|
||||
}
|
||||
|
||||
void AiBackend::feedResponse(Response response)
|
||||
{
|
||||
response.setUserPtr(m_requests[response.getId()].getUserPtr());
|
||||
if(response.isFinished())
|
||||
m_requests.remove(response.getId());
|
||||
|
||||
gotResponse(response);
|
||||
}
|
Reference in New Issue
Block a user