76 lines
1.7 KiB
C++
76 lines
1.7 KiB
C++
#include "communicator.h"
|
|
#include "defines.h"
|
|
#include "localclient.h"
|
|
#include "utils.h"
|
|
|
|
Communicator::Communicator(QObject* parent) : QObject(parent),
|
|
m_localClient(nullptr)
|
|
{
|
|
connectToServer();
|
|
}
|
|
|
|
Communicator::~Communicator()
|
|
{
|
|
|
|
}
|
|
|
|
void Communicator::connectToServer()
|
|
{
|
|
if (m_localClient) {
|
|
delete m_localClient;
|
|
}
|
|
|
|
m_localClient = new LocalClient(this);
|
|
connect(m_localClient, &LocalClient::connected, this, &Communicator::onConnected);
|
|
connect(m_localClient, &LocalClient::lineAvailable, this, &Communicator::onLineAvailable);
|
|
|
|
m_localClient->connectToServer(Utils::serverName());
|
|
}
|
|
|
|
void Communicator::onConnected()
|
|
{
|
|
qDebug().noquote() << QString("Connected to local server '%1'").arg(m_localClient->serverName());
|
|
Message message(Message::State::Initialize, QStringList({"Client"}));
|
|
sendMessage(message);
|
|
}
|
|
|
|
void Communicator::onLineAvailable(const QString& line)
|
|
{
|
|
Message message(line);
|
|
if (!message.isValid()) {
|
|
qDebug() << "Message is not valid";
|
|
return;
|
|
}
|
|
|
|
emit messageReceived(message);
|
|
}
|
|
|
|
bool Communicator::isConnected() const
|
|
{
|
|
if (!m_localClient) {
|
|
return false;
|
|
}
|
|
|
|
return m_localClient->connectedState();
|
|
}
|
|
|
|
QString Communicator::readData()
|
|
{
|
|
return QString();
|
|
}
|
|
|
|
bool Communicator::writeData(const QString& data)
|
|
{
|
|
return m_localClient->write(data.toUtf8());
|
|
}
|
|
|
|
void Communicator::sendMessage(const Message& message)
|
|
{
|
|
if (!isConnected()) {
|
|
return;
|
|
}
|
|
const QString data = message.toString();
|
|
bool status = writeData(data + "\n");
|
|
|
|
qDebug().noquote() << QString("Send message '%1', status '%2'").arg(data).arg(Utils::toString(status));
|
|
}
|