diff --git a/CPClient_main.txt b/CPClient_main.txt index 51113932a1c6a5afe8223499fac2fedbf77d1727..f0f86aaf363170cf272b8847fff9683d2d8232f5 100644 --- a/CPClient_main.txt +++ b/CPClient_main.txt @@ -2,29 +2,40 @@ title Internetworking WS 23/24 participant CPClient -participant PhyProtocol participant CPProtocol +participant PhyProtocol + +participant DatagramSocket + +participant DatagramPacket + participant PhyConfiguration + participant Configuration -participant CPCookieRequestMsg -participant CPMsg participant PhyMsg -participant CPCookieResponseMsg +participant CPMsg -#Questions to Schöller -#Timeout Delay? (e.g at receive) -#Classes without Constructor? (e.g at line 60 in CPProtocol) +participant CPCookieRequestMsg + +participant CPCookieResponseMsg +participant Protocol #To-Do #Sort into Blocks #Add Datagram Socket +participant [ + [->CPClient:main activate CPClient #Initializing PhyProtocol with everything in it CPClient->PhyProtocol:<<create>> activate PhyProtocol +PhyProtocol->DatagramSocket:<<create>> +activate DatagramSocket +DatagramSocket-->PhyProtocol: +deactivate DatagramSocket PhyProtocol-->CPClient: deactivate PhyProtocol CPClient->CPProtocol:<<create>> @@ -45,6 +56,14 @@ CPClient->CPProtocol:send() activate CPProtocol CPProtocol->CPProtocol:requestCookie() activate CPProtocol +CPProtocol->CPCookieRequestMsg:<<create>> +activate CPCookieRequestMsg +CPCookieRequestMsg->CPMsg:<<create>> +activate CPMsg +CPMsg-->CPCookieRequestMsg: +deactivate CPMsg +CPCookieRequestMsg-->CPProtocol: +deactivate CPCookieRequestMsg CPProtocol->CPCookieRequestMsg:create() activate CPCookieRequestMsg CPCookieRequestMsg->CPMsg:create() @@ -67,29 +86,79 @@ PhyMsg-->PhyProtocol: deactivate PhyMsg PhyProtocol->PhyProtocol:send() activate PhyProtocol +PhyProtocol->DatagramPacket:<<create>> +activate DatagramPacket +DatagramPacket-->PhyProtocol: +deactivate DatagramPacket +PhyProtocol->DatagramSocket:send() +activate DatagramSocket +DatagramSocket-->PhyProtocol: +deactivate DatagramSocket space deactivate PhyProtocol PhyProtocol-->CPProtocol: deactivate PhyProtocol #Receive with Timeout +CPProtocol->CPMsg:<<create>> +activate CPMsg +CPMsg-->CPProtocol: +deactivate CPMsg CPProtocol->PhyProtocol:receive activate PhyProtocol +PhyProtocol->DatagramSocket:setSoTimeout() +activate DatagramSocket +DatagramSocket-->PhyProtocol: +deactivate DatagramSocket PhyProtocol->PhyProtocol:receive activate PhyProtocol +PhyProtocol->DatagramPacket:<<create>> +activate DatagramPacket +DatagramPacket-->PhyProtocol: +deactivate DatagramPacket + +PhyProtocol->DatagramSocket:receive() +activate DatagramSocket +DatagramSocket-->PhyProtocol: +deactivate DatagramSocket +PhyProtocol->PhyMsg:<<create>> +activate PhyMsg +PhyMsg-->PhyProtocol: +deactivate PhyMsg +PhyProtocol->PhyMsg:parse() +activate PhyMsg +PhyMsg-->PhyProtocol: +deactivate PhyMsg +PhyProtocol->PhyConfiguration:<<create>> +activate PhyConfiguration +PhyConfiguration-->PhyProtocol: +deactivate PhyConfiguration + +PhyProtocol->PhyMsg:setConfiguration() +activate PhyMsg +PhyMsg-->PhyProtocol: +deactivate PhyMsg space deactivate PhyProtocol +PhyProtocol->DatagramSocket:setTimeout() +activate DatagramSocket +DatagramSocket-->PhyProtocol: +deactivate DatagramSocket PhyProtocol-->CPProtocol: deactivate PhyProtocol #Creates Cookie Response Msg CPProtocol->CPMsg:parse() activate CPMsg +CPCookieRequestMsg<-CPMsg:<<create>> +activate CPCookieRequestMsg +CPCookieRequestMsg-->CPMsg: +deactivate CPCookieRequestMsg CPMsg->CPCookieResponseMsg:<<create>> activate CPCookieResponseMsg CPCookieResponseMsg-->CPMsg: deactivate CPCookieResponseMsg -CPMsg->CPMsg:parse +CPMsg->CPMsg:parse() activate CPMsg space deactivate CPMsg diff --git a/CPClient_main_old.txt b/CPClient_main_old.txt new file mode 100644 index 0000000000000000000000000000000000000000..51113932a1c6a5afe8223499fac2fedbf77d1727 --- /dev/null +++ b/CPClient_main_old.txt @@ -0,0 +1,106 @@ +#https://sequencediagram.org/ +title Internetworking WS 23/24 + +participant CPClient +participant PhyProtocol +participant CPProtocol +participant PhyConfiguration +participant Configuration +participant CPCookieRequestMsg +participant CPMsg +participant PhyMsg +participant CPCookieResponseMsg + +#Questions to Schöller +#Timeout Delay? (e.g at receive) +#Classes without Constructor? (e.g at line 60 in CPProtocol) + +#To-Do +#Sort into Blocks +#Add Datagram Socket + +[->CPClient:main +activate CPClient + +#Initializing PhyProtocol with everything in it +CPClient->PhyProtocol:<<create>> +activate PhyProtocol +PhyProtocol-->CPClient: +deactivate PhyProtocol +CPClient->CPProtocol:<<create>> +activate CPProtocol +CPProtocol->PhyConfiguration:<<create>> +activate PhyConfiguration +PhyConfiguration->Configuration:<<create>> +activate Configuration +Configuration-->PhyConfiguration: +deactivate Configuration +PhyConfiguration-->CPProtocol: +deactivate PhyConfiguration +CPProtocol-->CPClient: +deactivate CPProtocol + +#Sending message from User Input +CPClient->CPProtocol:send() +activate CPProtocol +CPProtocol->CPProtocol:requestCookie() +activate CPProtocol +CPProtocol->CPCookieRequestMsg:create() +activate CPCookieRequestMsg +CPCookieRequestMsg->CPMsg:create() +activate CPMsg +CPMsg-->CPCookieRequestMsg: +deactivate CPMsg +CPCookieRequestMsg-->CPProtocol: +deactivate CPCookieRequestMsg + +#calling send() in requestCookie() +CPProtocol->PhyProtocol:send() +activate PhyProtocol +PhyProtocol->PhyMsg:<<create>> +activate PhyMsg +PhyMsg-->PhyProtocol: +deactivate PhyMsg +PhyProtocol-->PhyMsg:create() +activate PhyMsg +PhyMsg-->PhyProtocol: +deactivate PhyMsg +PhyProtocol->PhyProtocol:send() +activate PhyProtocol +space +deactivate PhyProtocol +PhyProtocol-->CPProtocol: +deactivate PhyProtocol + +#Receive with Timeout +CPProtocol->PhyProtocol:receive +activate PhyProtocol +PhyProtocol->PhyProtocol:receive +activate PhyProtocol +space +deactivate PhyProtocol +PhyProtocol-->CPProtocol: +deactivate PhyProtocol + +#Creates Cookie Response Msg +CPProtocol->CPMsg:parse() +activate CPMsg +CPMsg->CPCookieResponseMsg:<<create>> +activate CPCookieResponseMsg +CPCookieResponseMsg-->CPMsg: +deactivate CPCookieResponseMsg +CPMsg->CPMsg:parse +activate CPMsg +space +deactivate CPMsg +CPMsg-->CPProtocol: +deactivate CPMsg +space +deactivate CPProtocol +CPProtocol-->CPClient: + +deactivate CPProtocol +CPClient->CPProtocol:receive +activate CPProtocol +CPProtocol-->CPClient: +deactivate CPProtocol diff --git a/src/main/java/cp/CPProtocol.java b/src/main/java/cp/CPProtocol.java index 66e0f5e9622c0aa169e36a899b2adcc53d71ae02..fc58dadfef6c4d895b401e8154ad03675509d62d 100644 --- a/src/main/java/cp/CPProtocol.java +++ b/src/main/java/cp/CPProtocol.java @@ -37,11 +37,14 @@ public class CPProtocol extends Protocol { } @Override public void send(String s, Configuration config) throws IOException, IWProtocolException { + if (cookie == null) { // Request a new cookie from server // Either updates the cookie attribute or returns with an exception requestCookie(0); } + + } @Override