Skip to content

Commit

Permalink
Restructure
Browse files Browse the repository at this point in the history
  • Loading branch information
AnnsAnns committed Jun 18, 2024
1 parent d2a4620 commit 821c289
Show file tree
Hide file tree
Showing 11 changed files with 286 additions and 0 deletions.
30 changes: 30 additions & 0 deletions docs/modelle/SocketHandler.uxf
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<diagram program="umletino" version="15.1"><zoom_level>11</zoom_level><element><id>UMLSpecialState</id><coordinates><x>362</x><y>20</y><w>22</w><h>22</h></coordinates><panel_attributes>type=initial</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLNote</id><coordinates><x>120</x><y>9</y><w>154</w><h>77</h></coordinates><panel_attributes>Socket Handler
v1.0
By: Tom
bg=blue</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLState</id><coordinates><x>285</x><y>108</y><w>176</w><h>66</h></coordinates><panel_attributes>Wait for Incoming</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>362</x><y>31</y><w>33</w><h>99</h></coordinates><panel_attributes>lt=-&gt;</panel_attributes><additional_attributes>10;10;10;70</additional_attributes></element><element><id>Relation</id><coordinates><x>362</x><y>163</y><w>176</w><h>132</h></coordinates><panel_attributes>lt=-&gt;
INCOMING_MESSAGE \
read_to_end(&amp;bytes)
get_type(&amp;bytes)</panel_attributes><additional_attributes>10;10;10;100</additional_attributes></element><element><id>UMLSpecialState</id><coordinates><x>351</x><y>273</y><w>44</w><h>44</h></coordinates><panel_attributes>type=decision</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLState</id><coordinates><x>560</x><y>262</y><w>198</w><h>66</h></coordinates><panel_attributes>Handle Connection Packet
--
entry: addRoutingTable()
sendConnectionPacket()</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>384</x><y>273</y><w>198</w><h>44</h></coordinates><panel_attributes>lt=-&gt;
CONNECTION_PACKET</panel_attributes><additional_attributes>10;20;160;20</additional_attributes></element><element><id>Relation</id><coordinates><x>450</x><y>141</y><w>231</w><h>143</h></coordinates><panel_attributes>lt=-&gt;
SUCCESS</panel_attributes><additional_attributes>190;110;190;20;10;20</additional_attributes></element><element><id>UMLSpecialState</id><coordinates><x>351</x><y>658</y><w>22</w><h>22</h></coordinates><panel_attributes>type=final</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>461</x><y>317</y><w>275</w><h>231</h></coordinates><panel_attributes>lt=-&gt;
FAILURE</panel_attributes><additional_attributes>180;10;180;190;10;190</additional_attributes></element><element><id>UMLState</id><coordinates><x>274</x><y>504</y><w>198</w><h>77</h></coordinates><panel_attributes>Cleanup
--
entry: removeRoutingEntry()</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>351</x><y>570</y><w>209</w><h>110</h></coordinates><panel_attributes>lt=-&gt;
ROUTING_ENTRY_REMOVED</panel_attributes><additional_attributes>10;10;10;80</additional_attributes></element><element><id>UMLState</id><coordinates><x>274</x><y>372</y><w>198</w><h>77</h></coordinates><panel_attributes>Handle Message Packet
--
entry: printMessage(bytes)</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>362</x><y>306</y><w>143</w><h>88</h></coordinates><panel_attributes>lt=-&gt;
MESSAGE_PACKET</panel_attributes><additional_attributes>10;10;10;60</additional_attributes></element><element><id>Relation</id><coordinates><x>351</x><y>438</y><w>88</w><h>88</h></coordinates><panel_attributes>lt=-&gt;
FAILURE</panel_attributes><additional_attributes>10;10;10;60</additional_attributes></element><element><id>Relation</id><coordinates><x>373</x><y>53</y><w>121</w><h>77</h></coordinates><panel_attributes>lt=-&gt;
PACKET_FAULTY</panel_attributes><additional_attributes>40;50;40;20;60;20;60;50</additional_attributes></element><element><id>Relation</id><coordinates><x>450</x><y>108</y><w>528</w><h>473</h></coordinates><panel_attributes>lt=-&gt;
CONNECTION
_DROPPED</panel_attributes><additional_attributes>10;10;380;10;380;410;20;410</additional_attributes></element><element><id>UMLState</id><coordinates><x>32</x><y>251</y><w>187</w><h>77</h></coordinates><panel_attributes>Handle Routing Update
--
entry: updateRoutingTable()</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>208</x><y>273</y><w>165</w><h>44</h></coordinates><panel_attributes>lt=-&gt;
ROUTING_PACKET</panel_attributes><additional_attributes>130;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>450</x><y>130</y><w>407</w><h>308</h></coordinates><panel_attributes>lt=-&gt;
SUCCESSS
cbase=ru</panel_attributes><additional_attributes>20;260;290;260;290;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>120</x><y>119</y><w>187</w><h>154</h></coordinates><panel_attributes>lt=-&gt;
SUCCESS</panel_attributes><additional_attributes>10;120;10;20;150;20</additional_attributes></element><element><id>Relation</id><coordinates><x>120</x><y>317</y><w>176</w><h>253</h></coordinates><panel_attributes>lt=-&gt;
FAILURE</panel_attributes><additional_attributes>10;10;10;210;140;210</additional_attributes></element></diagram>
13 changes: 13 additions & 0 deletions docs/modelle/SocketListener.uxf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<diagram program="umletino" version="15.1"><zoom_level>10</zoom_level><help_text>Space for diagram notes</help_text><element><id>UMLState</id><coordinates><x>300</x><y>350</y><w>160</w><h>80</h></coordinates><panel_attributes>Wait for Connection
--
entry: listen(socket)</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLSpecialState</id><coordinates><x>370</x><y>140</y><w>20</w><h>20</h></coordinates><panel_attributes>type=initial</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLSpecialState</id><coordinates><x>200</x><y>540</y><w>20</w><h>20</h></coordinates><panel_attributes>type=final</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>370</x><y>150</y><w>30</w><h>60</h></coordinates><panel_attributes>lt=-&gt;</panel_attributes><additional_attributes>10;10;10;40</additional_attributes></element><element><id>Relation</id><coordinates><x>70</x><y>380</y><w>250</w><h>180</h></coordinates><panel_attributes>lt=-&gt;
SHUTDOWN_RECEIVED
cbase=l</panel_attributes><additional_attributes>230;10;140;10;140;160</additional_attributes></element><element><id>Relation</id><coordinates><x>370</x><y>370</y><w>270</w><h>220</h></coordinates><panel_attributes>lt=-&gt;
ACCEPT_CONNECTION /
addToWorkerPool(connection)</panel_attributes><additional_attributes>10;60;10;190;180;190;180;10;90;10</additional_attributes></element><element><id>UMLNote</id><coordinates><x>140</x><y>270</y><w>140</w><h>70</h></coordinates><panel_attributes>Socket Listener
v1.0
By: Tom
bg=blue</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLState</id><coordinates><x>300</x><y>190</y><w>160</w><h>80</h></coordinates><panel_attributes>Create Socket
--
entry: createSocket(Port)</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>370</x><y>260</y><w>130</w><h>110</h></coordinates><panel_attributes>lt=-&gt;
SOCKET_OPENED</panel_attributes><additional_attributes>10;10;10;90</additional_attributes></element></diagram>
31 changes: 31 additions & 0 deletions docs/modelle/TUI.uxf
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<diagram program="umletino" version="15.1"><zoom_level>10</zoom_level><help_text>Space for diagram notes</help_text><element><id>UMLState</id><coordinates><x>370</x><y>210</y><w>140</w><h>60</h></coordinates><panel_attributes>Handle Input
--
entry: getInput(stdio)</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLSpecialState</id><coordinates><x>430</x><y>130</y><w>20</w><h>20</h></coordinates><panel_attributes>type=initial</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>430</x><y>260</y><w>90</w><h>150</h></coordinates><panel_attributes>lt=-&gt;
CMD_EXIT</panel_attributes><additional_attributes>10;10;10;130</additional_attributes></element><element><id>Relation</id><coordinates><x>430</x><y>140</y><w>30</w><h>90</h></coordinates><panel_attributes>lt=-&gt;
</panel_attributes><additional_attributes>10;10;10;70</additional_attributes></element><element><id>UMLSpecialState</id><coordinates><x>430</x><y>520</y><w>20</w><h>20</h></coordinates><panel_attributes>type=final</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLState</id><coordinates><x>800</x><y>310</y><w>160</w><h>70</h></coordinates><panel_attributes>Send Message
--
entry: sendMessage(input)</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>460</x><y>110</y><w>490</w><h>220</h></coordinates><panel_attributes>lt=-&gt;
CMD_SEND</panel_attributes><additional_attributes>10;100;10;20;470;20;470;200</additional_attributes></element><element><id>UMLState</id><coordinates><x>580</x><y>310</y><w>160</w><h>70</h></coordinates><panel_attributes>Connect To
--
entry: connectTo(
input[1], input[2])</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>500</x><y>210</y><w>220</w><h>120</h></coordinates><panel_attributes>lt=-&gt;
CMD_CONNECT</panel_attributes><additional_attributes>10;20;200;20;200;100</additional_attributes></element><element><id>Relation</id><coordinates><x>490</x><y>140</y><w>370</w><h>190</h></coordinates><panel_attributes>lt=-&gt;
SUCCESS</panel_attributes><additional_attributes>350;170;350;20;10;20;10;70</additional_attributes></element><element><id>Relation</id><coordinates><x>500</x><y>230</y><w>150</w><h>100</h></coordinates><panel_attributes>lt=-&gt;
SUCCESS</panel_attributes><additional_attributes>130;80;130;20;10;20</additional_attributes></element><element><id>UMLState</id><coordinates><x>380</x><y>390</y><w>120</w><h>70</h></coordinates><panel_attributes>Handle Error
--
entry: cleanup()</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>430</x><y>450</y><w>100</w><h>90</h></coordinates><panel_attributes>lt=-&gt;
SHUTDOWN</panel_attributes><additional_attributes>10;10;10;70</additional_attributes></element><element><id>Relation</id><coordinates><x>210</x><y>130</y><w>220</w><h>100</h></coordinates><panel_attributes>lt=-&gt;
CMD_PRINT_ROUTINGTABLE \
println!("[#:?}", rounting_table)
cbase=lu</panel_attributes><additional_attributes>200;80;200;30;170;30;170;80</additional_attributes></element><element><id>Relation</id><coordinates><x>490</x><y>370</y><w>190</w><h>60</h></coordinates><panel_attributes>lt=-&gt;
ERROR</panel_attributes><additional_attributes>170;10;170;40;10;40</additional_attributes></element><element><id>Relation</id><coordinates><x>490</x><y>370</y><w>410</w><h>90</h></coordinates><panel_attributes>lt=-&gt;
ERROR</panel_attributes><additional_attributes>390;10;390;70;10;70</additional_attributes></element><element><id>UMLNote</id><coordinates><x>200</x><y>390</y><w>140</w><h>70</h></coordinates><panel_attributes>TUI FSM
v1.1
By: Tom
bg=blue</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>200</x><y>200</y><w>190</w><h>60</h></coordinates><panel_attributes>lt=-&gt;
CMD_HELP \
print_help()
cbase=lu</panel_attributes><additional_attributes>170;20;80;20;80;40;170;40</additional_attributes></element><element><id>Relation</id><coordinates><x>180</x><y>260</y><w>260</w><h>90</h></coordinates><panel_attributes>lt=-&gt;
CMD_INVALID \
println!("Invalid Command")
cbase=lu</panel_attributes><additional_attributes>210;10;210;50;160;50;160;70;240;70;240;10</additional_attributes></element></diagram>
83 changes: 83 additions & 0 deletions docs/rdt/RDT.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
% !TeX root = RDT.tex
\documentclass[a4paper, 11pt]{article}

\usepackage[ngerman]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage[top=2.5cm,bottom=2.5cm,left=2cm,right=2cm,marginparwidth=1.75cm]{geometry}

% Load useful packages
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{xcolor}
\definecolor{custom-blue}{RGB}{0,99,166}
\usepackage{hyperref}
\hypersetup{colorlinks=true, allcolors=custom-blue}
\usepackage[default]{sourcesanspro}
\usepackage[T1]{fontenc}
\usepackage{wrapfig}
\usepackage{fancyhdr}
\usepackage{longtable}
\usepackage{lastpage}
\usepackage{float}
\usepackage{tabularx}
\usepackage[normalem]{ulem}
\useunder{\uline}{\ul}{}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage{color}
\usepackage{tabularray}
\usepackage{enumitem}


\pagestyle{myheadings}
\pagestyle{fancy}

\definecolor{Alto}{rgb}{0.878,0.878,0.878}
\definecolor{Nobel}{rgb}{0.701,0.701,0.701}

\setlength{\headheight}{30pt}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}

\fancyhead[C]{}
\fancyhead[R]{}
\fancyfoot[L]{}
\fancyfoot[C]{}
\fancyfoot[R]{\thepage/\pageref{LastPage}}


% Set title, author, date
\title{
Requirements, Design and Test Documentation\\
Chat Client für RNP2
}
\author{
Hert, Tom\\
\texttt{Tom.Hert@haw-hamburg.de}
\and
Zacharias, Laurin\\
\texttt{Laurin.Zacharias@haw-hamburg.de}
}

%%% Begin document %%%
\begin{document}

\maketitle
\clearpage

\tableofcontents
\clearpage

\input{chapters/020_anforderungen.tex}
\clearpage

\input{chapters/030_design.tex}
\clearpage

\input{chapters/040_test.tex}
\clearpage

\input{chapters/050_glossar.tex}
\clearpage

\end{document}
48 changes: 48 additions & 0 deletions docs/rdt/chapters/020_anforderungen.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
\section{Anforderungen}

\begin{tabular}{|c|p{13.5cm}|}
\hline
Requirement Nr. & Beschreibung
\\ \hline

REQ\_1 & Der Client erfüllt die Vorgaben des Chatprotokolls zur Kommunikation mit anderen Clients\\
\hline
REQ\_2 & Der Client muss mindestens per Terminal als einfachstes Interface bedienbar sein \\
\hline
REQ\_3 & Der Client muss ein\- und ausschaltbar sein\\
\hline
REQ\_5 & Der Client muss Verbindungen zu anderen Clients, die das Chatprotokoll erfüllen, aufbauen können\\
\hline
REQ\_6 & Die Verbindungen zu anderen Clients muss per IPv4 und über TCP Sockets geschehen\\
\hline
REQ\_7 & Der Client muss Nachrichten an verfügbare Clients senden können\\
\hline
REQ\_8 & Der Client muss Chatnachrichten von verfügbaren Clients empfangen und diese im Terminal zusammen mit dem Sender ausgeben\\
\hline
REQ\_9 & Der Client muss alle verfügbaren Clients ausgeben können\\
\hline
REQ\_10 & Der Client muss an andere Clients addressierte Nachrichten an verbundene Clients weiterleiten können\\
\hline
REQ\_11 & Der Client muss eine Routingtabelle nach Vorgaben des Chatprotokolls pflegen um Kommunikation zu nicht direkt verbundenen Client zu ermöglichen\\
\hline
REQ\_12 & Der Client muss alle ?? Sekunden Routingupdates(siehe Chatprotokoll) nach Vorgaben des Chatprotokolls an verbundene Clients senden\\
\hline
REQ\_13 & Der Client muss die Integrität von Nachrichten mithilfe von CRC32 prüfen und bei Fehlern die Nachricht entsorgen und die Verbindung zum Sender der Nachricht beendet\\
\hline
REQ\_14 & Wenn ein Kommunikationspartner auf eine Routingtabellenanfrage nicht reagiert, muss der Client diesen in der Routingtabelle als Unerreichbar (Siehe Poise Reverse) markieren\\
\hline
REQ\_15 & Der Client muss bei fehlerfreien Routingpaketen seine Routingtabelle aktualisieren, indem neue Routen als Einträge hinzugefügt werden und ggf alte Einträge aktualisiert wenn der Hopcount der Route geringer oder gelöscht werden wenn der Hopcount der Route höher geworden ist.\\
\hline
\end{tabular}
Das Chatprotokoll ist hier zu finden: \url{/~https://github.com/HAW-Rn/protocol}

\subsection{Use Cases}

Ergänzend zu den Use Cases des Protokolls hier die Client-spezifischen Use Cases:

\begin{itemize}
\item \textbf{send message:} Bei Eingabe des Befehls 'msg <IP> <Port> <text>' verpackt der Client den in die Console eingegebenen Text in ein dem Catprotokoll ensprechenden Paket addressiert an den angegebenen Client und versendet es über die kürzeste im Routing Table vorhandene Route zum Ziel Client.
\item \textbf{receive message:} Der Client empfängt die Nachricht, verifiziert dessen Inhalt mithilfe von crc32 und prüft die Destination IP+Port. Daraufhin leidet der Client das Paket weiter wenn es nicht an den Client addressiert ist oder stellt es in der Console dar.
\item \textbf{display message:} Der Client stellt den Text zusammen mit dem Nicknamen als 'nickname: text' dar.
\item \textbf{display available participants:} Bei Eingabe des Befehls 'contacts' in das Terminal gibt der Client eine Liste von direkt erreichbaren und über direktverbundene erreichbaren Clients in der Console aus.
\end{itemize}
Loading

0 comments on commit 821c289

Please sign in to comment.