summaryrefslogtreecommitdiff
path: root/src/client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/client.cc')
-rw-r--r--src/client.cc20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/client.cc b/src/client.cc
index 4d1bb7f..91f16d3 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -28,16 +28,28 @@ bool Client::connectToHost(const QString& host)
return true;
}
-bool Client::writeData(const QByteArray& data)
+bool Client::writeData(const QString& title, const QByteArray& data)
{
if(socket->state() != QAbstractSocket::ConnectedState)
{
return false;
}
- std::uint32_t size = data.size();
- socket->write((char*)&size, sizeof(std::uint32_t));
+ auto title_data = title.toUtf8();
+ std::uint32_t title_size = title_data.size();
+ std::uint32_t data_size = data.size();
+
+ // firt write size of the entire payload (without the payload size)
+ std::uint32_t payload_size = data_size + title_size + sizeof(std::uint32_t);
+ socket->write((char*)&payload_size, sizeof(std::uint32_t));
+
+ // then write title size and title
+ socket->write((char*)&title_size, sizeof(std::uint32_t));
+ socket->write(title_data);
+
+ // finally write the rest of the payload
socket->write(data);
+
return socket->waitForBytesWritten(100); // wait at most 100ms
}
@@ -77,5 +89,5 @@ void Client::timeout()
void Client::retryConnect()
{
- socket->connectToHost(host, 1024);
+ socket->connectToHost(host, 10024);
}