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