diff --git a/nw_constants.h b/nw_constants.h index 8e39454..48a44bb 100644 --- a/nw_constants.h +++ b/nw_constants.h @@ -31,7 +31,7 @@ const int TIMEOUT_SYM_IHU = 300; // s const int TIMEOUT_DATA = 35*60; // s const int TIME_RESEND_IHU = 90; // s const int TIME_RESEND_EMPTY = 30; // s -const int TIME_REPUBLISH_DATA = 25*60; // s +const int TIME_REPUBLISH_DATA = 15*60; // s const int TIME_PEER_PEEK = 30; // s const int TIME_SEND_NR = 60; // s const int TIME_RESEND_FLOOD = 3; // s diff --git a/report/report.tex b/report/report.tex index ddb0db9..6e98d24 100644 --- a/report/report.tex +++ b/report/report.tex @@ -22,7 +22,6 @@ \maketitle \begin{abstract} - L'implémentation du protocole en C++ respecte la spécification sur tous les cas observés. De plus, les paquets sont agrégés tant que possible pour éviter une surcharge du réseau, l'inondation est un peu optimisée et @@ -58,7 +57,7 @@ arguments. \item \lstbash{bootstrap [ID du nœud] [adresse IPv6 du nœud] [port]}~: déclare le nœud comme nœud de bootstrap. L'adresse peut être - IPv4-mapped, eg. `::FFFF:42.42.42.42`. + IPv4-mapped, eg. \texttt{::FFFF:42.42.42.42}. \item \lstbash{data [donnée]}~: déclare une donnée à propager. La donnée peut contenir des espaces, et s'étend jusqu'à la fin de la ligne. @@ -76,6 +75,8 @@ d'erreur (stderr). Le programme affiche son état actuel (voisins + infos sur eux, données + infos sur elles) lors d'un appui sur \textsc{return}. +Un \textsc{sigint} (ctrl+C) permet l'arrêt propre du programme. + %%%%%%%%%%%%%%%%%%%%%%%%%% \section{Implémentation} @@ -83,6 +84,30 @@ Tout d'abord, mon code est très --- trop --- long pour le programme demandé. J'ai manqué de temps pour ce projet (beaucoup de choses à faire en parallèle) et j'ai donc plus produit du code rapidement qu'intelligemment\ldots +\subsection{Classes et fichiers} + +\begin{itemize} + \item \lstcpp{Bytes}~: utilisé pour stocker des paquets. Permet une + extraction/insertion facile de types \og{}classiques~\fg~: \lstcpp{u8}, + \lstcpp{u16}, \ldots + \item \lstcpp{ConfigFile}~: lit et écrit le fichier de configuration. + \item \lstcpp{DataStore}~: stocke les données inondées et les maintient à + jour. + \item \lstcpp{Flooder}~: inonde une donnée vers une liste de pairs, en + réessayant un nombre de fois défini (ici, 3). + \item \lstcpp{Neighbours}~: gère les voisins du nœud courant, leur + changement de type (potentiel, unidirectionnel, symétrique) et l'envoi + de paquets nécessaires (IHU, \ldots). + \item \lstcpp{PacketParser}~: reçoit les paquets entrants et les traite. + \item \lstcpp{Protocol}~: gère le réseau de \og{}bas niveau~\fg, permet + l'envoi de paquets de types donnés et gère le thread de réception de + paquets. + \item \lstcpp{data.h}~: définit les types de données et structures utiles + un peu partout. + \item \lstcpp{nw\_constants.h}~: définit les constantes relatives au réseau + et au protocole. +\end{itemize} + \subsection{Threads} Le programme contient deux threads~: \begin{itemize}