From bb90d170cf7e30336842ceaec2ad7289fa240d37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20H=C3=B6ppner?= <jonas.hoeppner@garz-fricke.com> Date: Fri, 17 Jun 2022 10:27:17 +0200 Subject: [PATCH] Cleanup: Add common header for client and server, remove unused code --- compositor-message-common.h | 27 +++++++ compositor-message/compositor-message.cpp | 70 ++----------------- compositor-message/compositor-message.h | 1 - compositor.pro | 3 + multiscreen-compositor/message-server.cpp | 6 +- .../message-serverconnection.cpp | 25 +------ .../message-serverconnection.h | 3 +- 7 files changed, 43 insertions(+), 92 deletions(-) create mode 100644 compositor-message-common.h diff --git a/compositor-message-common.h b/compositor-message-common.h new file mode 100644 index 0000000..6048457 --- /dev/null +++ b/compositor-message-common.h @@ -0,0 +1,27 @@ +#ifndef COMPOSITORMESSAGECOMMON_H +#define COMPOSITORMESSAGECOMMON_H + +#include <QtCore/QDataStream> + +#define COMPOSITOR_MESSAGE_SOCKET "qt-compositor" +#define COMPOSITOR_MESSAGE_START_SEQUENCE 0xDEADBEEF + +inline bool searchMessageHeader(QDataStream *stream){ + + // The message needs to begin with a magic + int headerstate = 0; + char header[4] = { (char)0xDE, (char)0xAD, (char)0xBE, (char)0xEF }; + while(headerstate < 4){ // four bytes of header need to match + char byte; + if(stream->readRawData(&byte, 1) == -1){ + return false; + } + if(byte == header[headerstate]) + headerstate++; + else + headerstate=0; + }; + return true; +} + +#endif // COMPOSITORMESSAGECOMMON_H diff --git a/compositor-message/compositor-message.cpp b/compositor-message/compositor-message.cpp index 7a2c141..39a6951 100644 --- a/compositor-message/compositor-message.cpp +++ b/compositor-message/compositor-message.cpp @@ -1,8 +1,9 @@ #include <QThread> #include "compositor-message.h" +#include "../compositor-message-common.h" -const QString CompositorMessage::socketName = "serversocket"; +const QString CompositorMessage::socketName = COMPOSITOR_MESSAGE_SOCKET; CompositorMessage::CompositorMessage(QObject *parent) : QObject{parent}, socket(new QLocalSocket(this)) @@ -38,75 +39,16 @@ int CompositorMessage::sendMessage(QString msg, qint32 windowid, qint32 screenid return -1; } - out << quint32(0xDEADBEEF) << msg << windowid << screenid; + out << quint32(COMPOSITOR_MESSAGE_START_SEQUENCE) << msg << windowid << screenid; socket->write(data); socket->flush(); return 0; } -void CompositorMessage::sendSomething(void){ - QByteArray data; - QDataStream out(&data, QIODevice::WriteOnly); - - if( ! socket->isValid()){ - qWarning() << "Can't send something. Socket not valid"; - return; - } - - out << QString("This is to be skipped"); - out << quint32(0xDEADBEEF); - out << QString("This is my message"); - socket->write(data); - socket->flush(); - qDebug() << "Data length" << data.length(); - data.clear(); - qDebug() << "Data length" << data.length(); - QThread::sleep(1); // seconds - - { - QByteArray data2; - QDataStream out2(&data2, QIODevice::WriteOnly); - out2 << quint32(42); - out2 << quint32(2); - qDebug() << "Data length" << data2.length(); - socket->write(data2); - socket->flush(); - - } - - - { - QByteArray data2; - QDataStream out2(&data2, QIODevice::WriteOnly); - out2 << quint16(42); - out2 << quint32(0xDEADBEEF); - qDebug() << "Data length" << data2.length(); - socket->write(data2); - socket->flush(); - } -} - -bool CompositorMessage::searchHeader(QDataStream *stream){ - // The message needs to begin with a magic - int headerstate = 0; - char header[4] = { (char)0xDE, (char)0xAD, (char)0xBE, (char)0xEF }; - while(headerstate < 4){ // four bytes of header need to match - char byte; - if(stream->readRawData(&byte, 1) == -1){ - qDebug() << "End of data, bytes magic byte not found"; - return false; - } - if(byte == header[headerstate]) - headerstate++; - else - headerstate=0; - }; - return true; -} - void CompositorMessage::readData(void){ QString message; quint32 status; + quint32 value; qDebug() << "Server send data: " << socket->bytesAvailable(); @@ -114,10 +56,10 @@ void CompositorMessage::readData(void){ // Use transaction to make sure to receive a complete message socketReadData.startTransaction(); - if(!searchHeader(&socketReadData)) + if(!searchMessageHeader(&socketReadData)) return; - socketReadData >> message >> status; + socketReadData >> message >> status >> value; if(!socketReadData.commitTransaction()){ qDebug() << "Message incomplete, continue waiting"; return; diff --git a/compositor-message/compositor-message.h b/compositor-message/compositor-message.h index c70a362..9d57d5a 100644 --- a/compositor-message/compositor-message.h +++ b/compositor-message/compositor-message.h @@ -25,7 +25,6 @@ private: static const QString socketName; QLocalSocket *socket; QDataStream socketReadData; - bool searchHeader(QDataStream *stream); }; #endif // COMPOSITOR-MSG-CLIENT_H diff --git a/compositor.pro b/compositor.pro index 5b58e7a..18307df 100644 --- a/compositor.pro +++ b/compositor.pro @@ -5,3 +5,6 @@ TEMPLATE = subdirs SUBDIRS += \ compositor-message/compositor-message.pro \ multiscreen-compositor/multiscreen-compositor.pro + +HEADERS += \ + compositor-message-common.h diff --git a/multiscreen-compositor/message-server.cpp b/multiscreen-compositor/message-server.cpp index edf5935..9b4a85a 100644 --- a/multiscreen-compositor/message-server.cpp +++ b/multiscreen-compositor/message-server.cpp @@ -1,12 +1,12 @@ +#include "message-server.h" +#include "../compositor-message-common.h" #include <QtNetwork> #include <QList> #include <QAbstractSocket> - -#include "message-server.h" #include <QDebug> -const QString MessageServer::socketName = "serversocket"; +const QString MessageServer::socketName = COMPOSITOR_MESSAGE_SOCKET; MessageServer::MessageServer(QObject *parent) : QObject{parent} diff --git a/multiscreen-compositor/message-serverconnection.cpp b/multiscreen-compositor/message-serverconnection.cpp index 2b6284d..7b10b29 100644 --- a/multiscreen-compositor/message-serverconnection.cpp +++ b/multiscreen-compositor/message-serverconnection.cpp @@ -1,5 +1,6 @@ #include "message-serverconnection.h" +#include "../compositor-message-common.h" MessageServerConnection::MessageServerConnection(QLocalSocket *socket, QObject *parent) @@ -15,24 +16,6 @@ MessageServerConnection::MessageServerConnection(QLocalSocket *socket, QObject * socketReadData.setVersion(QDataStream::Qt_5_10); } -bool MessageServerConnection::searchHeader(QDataStream *stream){ - // The message needs to begin with a magic - int headerstate = 0; - char header[4] = { (char)0xDE, (char)0xAD, (char)0xBE, (char)0xEF }; - while(headerstate < 4){ // four bytes of header need to match - char byte; - if(stream->readRawData(&byte, 1) == -1){ - qDebug() << "End of data, bytes magic byte not found"; - return false; - } - if(byte == header[headerstate]) - headerstate++; - else - headerstate=0; - }; - return true; -} - void MessageServerConnection::readData(void){ QString message; quint32 value0; @@ -43,7 +26,7 @@ void MessageServerConnection::readData(void){ // Use transaction to make sure to receive a complete message socketReadData.startTransaction(); - if(!searchHeader(&socketReadData)) + if(!searchMessageHeader(&socketReadData)) return; socketReadData >> message >> value0 >> value1; @@ -74,9 +57,7 @@ void MessageServerConnection::sendStatus(int status) return; } - out << quint32(0xDEADBEEF); - out << QString("Status"); - out << quint32(status); + out << quint32(COMPOSITOR_MESSAGE_START_SEQUENCE) << QString("Status") << quint32(status) << quint32(0); socket->write(data); socket->flush(); } diff --git a/multiscreen-compositor/message-serverconnection.h b/multiscreen-compositor/message-serverconnection.h index f628965..15981ab 100644 --- a/multiscreen-compositor/message-serverconnection.h +++ b/multiscreen-compositor/message-serverconnection.h @@ -23,8 +23,7 @@ private: QLocalSocket *socket; QDataStream socketReadData; - void sendStatus(int status); - bool searchHeader(QDataStream *stream); + void sendStatus(int status); }; #endif // SERVERCONNECTION_H -- GitLab