From 447d7b70fd972ab1bb98544093bd70b9335e75ae Mon Sep 17 00:00:00 2001
From: Martin Hustoles <martin.hustoles@student.reutlingen-university.de>
Date: Wed, 8 Nov 2023 09:30:31 +0100
Subject: [PATCH] added further implementation

---
 CPClient_main.txt                  | 10 +++-------
 pom.xml                            |  5 +++++
 src/main/java/cp/CPCommandMsg.java | 25 ++++++++++++++++++++++++-
 src/main/java/cp/CPProtocol.java   | 26 +++++++++++++++++++++++++-
 4 files changed, 57 insertions(+), 9 deletions(-)

diff --git a/CPClient_main.txt b/CPClient_main.txt
index f0f86aa..41d578f 100644
--- a/CPClient_main.txt
+++ b/CPClient_main.txt
@@ -16,16 +16,12 @@ participant PhyMsg
 participant CPMsg
 
 participant CPCookieRequestMsg
-
 participant CPCookieResponseMsg
-participant Protocol
 
 #To-Do
 #Sort into Blocks
 #Add Datagram Socket
 
-participant [
-
 [->CPClient:main
 activate CPClient
 
@@ -104,13 +100,13 @@ CPProtocol->CPMsg:<<create>>
 activate CPMsg
 CPMsg-->CPProtocol:
 deactivate CPMsg
-CPProtocol->PhyProtocol:receive
+CPProtocol->PhyProtocol:receive()
 activate PhyProtocol
 PhyProtocol->DatagramSocket:setSoTimeout()
 activate DatagramSocket
 DatagramSocket-->PhyProtocol:
 deactivate DatagramSocket
-PhyProtocol->PhyProtocol:receive
+PhyProtocol->PhyProtocol:receive()
 activate PhyProtocol
 PhyProtocol->DatagramPacket:<<create>>
 activate DatagramPacket
@@ -169,7 +165,7 @@ deactivate CPProtocol
 CPProtocol-->CPClient:
 
 deactivate CPProtocol
-CPClient->CPProtocol:receive
+CPClient->CPProtocol:receive()
 activate CPProtocol
 CPProtocol-->CPClient:
 deactivate CPProtocol
diff --git a/pom.xml b/pom.xml
index 0a62eb6..2c1b211 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,11 @@
             <artifactId>junit-jupiter-engine</artifactId>
             <version>5.9.0</version>
         </dependency>
+        <dependency>
+            <groupId>net.bytebuddy</groupId>
+            <artifactId>byte-buddy</artifactId>
+            <version>1.14.6</version>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/src/main/java/cp/CPCommandMsg.java b/src/main/java/cp/CPCommandMsg.java
index 8b615dc..20a4fb7 100644
--- a/src/main/java/cp/CPCommandMsg.java
+++ b/src/main/java/cp/CPCommandMsg.java
@@ -1,2 +1,25 @@
-package cp;public class CPCommandMsg {
+package cp;
+
+import java.util.zip.CRC32;
+
+public class CPCommandMsg extends CPMsg{
+
+    private String cmd;
+    private long crc;
+    protected static final String HEADER = "command";
+
+    public CPCommandMsg(String cookie, String cmd){
+        this.cmd = cmd;
+        this.crc = calcCRC(cookie, cmd);
+    }
+
+    public long getCRC(){
+        return this.crc;
+    }
+
+    private long calcCRC(String cookie, String cmd) {
+        CRC32 crc = new CRC32();
+        //crc.update();
+        return 0;
+    }
 }
diff --git a/src/main/java/cp/CPProtocol.java b/src/main/java/cp/CPProtocol.java
index fc58dad..3a075e2 100644
--- a/src/main/java/cp/CPProtocol.java
+++ b/src/main/java/cp/CPProtocol.java
@@ -44,12 +44,36 @@ public class CPProtocol extends Protocol {
             requestCookie(0);
         }
 
+        //1.2: 1 a
+        if(cookie != null) {
 
+            //1.2: 1 b
+            CPCommandMsg cmdMsg = new CPCommandMsg(cookie, s);
+
+            //1.2: 1 c
+            PhyProto.send(s, this.PhyConfig);
+        }
     }
 
     @Override
     public Msg receive() throws IOException {
-        return null;
+
+        //1.2: 2 a
+        Msg in = this.PhyProto.receive(CP_TIMEOUT);
+
+        //1.2: 2 b
+        CPMsg cpmsg = new CPMsg();
+        cpmsg.create(in.getData());
+
+        try {
+            //1.2: 2 b
+            in = cpmsg.parse(in.getData());
+        } catch (Exception e) {
+            //Discard Message
+            return null;
+        }
+
+        return in;
     }
 
 
-- 
GitLab