From 6dfb127aaac2dce6e5ed48e72053fe9ffe913fe4 Mon Sep 17 00:00:00 2001
From: Burak Hancerli <burak.hancerli@qt.io>
Date: Fri, 17 Nov 2023 17:43:50 +0100
Subject: [PATCH] add: simple protocol for transferring the project over tcp

---
 src/dsConnector.cpp | 44 ++++++++++++++++++--------------------------
 src/dsConnector.h   |  2 +-
 2 files changed, 19 insertions(+), 27 deletions(-)

diff --git a/src/dsConnector.cpp b/src/dsConnector.cpp
index 93785da..97f2c37 100644
--- a/src/dsConnector.cpp
+++ b/src/dsConnector.cpp
@@ -29,31 +29,25 @@
 
 void DesignStudioConnector::receiveProject()
 {
-    qDebug() << "Reading data from Design Studio";
-    emit networkStatusUpdated("Reading data from Design Studio");
     QByteArray data = m_tcpSocket->readAll();
-    qDebug() << "Data from Design Studio:" << data;
-    // if (data.startsWith(":qmlrc_project_starts:")) {
-    //     qDebug() << "Received qmlrc_project";
-    //     emit networkStatusUpdated("Received qmlrc_project");
-    //     m_projectData.append(data.mid(21, data.size() - 21));
-    //     m_receivingData = true;
-    // } else if (data.contains(":qmlrc_project_ends:")) {
-    //     qDebug() << "Received qmlrc_project_ends";
-    //     emit networkStatusUpdated("Received qmlrc_project_ends");
-    //     m_projectData.append(data.mid(0, data.size() - 20));
-    //     emit projectReceived(m_projectData);
-    //     m_projectData.clear();
-    //     m_receivingData = false;
-    // } else if (m_receivingData) {
-    //     qDebug() << "Received data:" << data;
-    //     emit networkStatusUpdated("Receiving project data");
-    //     m_projectData.append(data);
-    // } else {
-    //     qDebug() << "Received unknown data:" << data;
-    //     emit networkStatusUpdated("Received unknown data");
-    // }
-    m_projectData.append(data);
+    // qDebug() << "Data from Design Studio:" << data;
+    if (data.startsWith("qres")) {
+        qDebug() << "TCP:: Received project start delimeter";
+        m_projectData.clear();
+        m_projectData.append(data);
+        m_receivingData = true;
+    } else if (data.contains("::qmlrc-end::")) {
+        qDebug() << "TCP:: Received project end delimeter";
+        // qDebug() << "TCP:: Last data sequence: " << data;
+        m_projectData.append(data.mid(0, data.size() - 13));
+        emit projectReceived(m_projectData);
+        m_receivingData = false;
+    } else if (m_receivingData) {
+        qDebug() << "TCP:: Received data sequence";
+        m_projectData.append(data);
+    } else {
+        qDebug() << "TCP:: Received unknown data:" << data;
+    }
 }
 
 bool DesignStudioConnector::initTcpServer()
@@ -78,8 +72,6 @@ bool DesignStudioConnector::initTcpServer()
             emit networkStatusUpdated("\nLocal IP: " + m_ipv4Addr
                                       + "\nWaiting for Design Studio to connect...");
             m_broadcastTimer.start();
-            m_receivingData = false;
-            emit projectReceived(m_projectData);
             m_projectData.clear();
         });
 
diff --git a/src/dsConnector.h b/src/dsConnector.h
index 5e577cc..28d3f03 100644
--- a/src/dsConnector.h
+++ b/src/dsConnector.h
@@ -51,7 +51,7 @@ private:
     QUdpSocket m_udpSocket;
     QTimer m_broadcastTimer;
     QString m_ipv4Addr;
-    const quint32 m_udpPort = 39000;
+    const quint32 m_udpPort = 45000;
 
     // Other members
     QByteArray m_projectData;
-- 
GitLab