diff --git a/CPClient_main.txt b/CPClient_main.txt index f0f86aaf363170cf272b8847fff9683d2d8232f5..41d578f0e82bc376320837ffc1124e939f6ba6dc 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 0a62eb6da9ad9324c78dfac3a9ffaf50da07c899..2c1b211df7ed3c99736c5a81e7eda15f00e4f229 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 8b615dc297eb90636b09c8e99ef1b3d07ce088a0..20a4fb72901fe0d54da24583e96cbd0ca5be5724 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 fc58dadfef6c4d895b401e8154ad03675509d62d..3a075e2a0dd98ea74f0728403dffa44191f8f16b 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; }