Ajout de commentaires dans bal.h pour préciser ce que chaque structure/fonction font.

This commit is contained in:
Yohan Boujon 2023-01-23 14:01:01 +01:00
parent 28970838a2
commit 9fed5740f9

View file

@ -3,55 +3,209 @@
#include "tsock.h" #include "tsock.h"
/**
* @brief Fonction de test pour les différentes primitive de bal.h
* Inutilisée sur le programme final.
*
* @return int -> 0 si réussite
*/
int bal(void); int bal(void);
/**
* @struct messageBAL
* @brief definition de la structure d'un message BAL
*
* @var messageBAL::data
* Messgae sous forme d'un tableau de caractère
* @var messageBAL::tailleData
* Taille du message
* @var messageBAL::idEmetteur
* Numéro de l'émetteur qui a envoyé le message
*/
typedef struct{ typedef struct{
char *data; char *data;
int tailleData; int tailleData;
int idEmetteur; int idEmetteur;
}messageBAL; }messageBAL;
/**
* @struct elementMessage
* @brief Element dans une liste de Messages
*
* @var elementMessage::messageBALActuel
* Pointeur vers le message de l'élément
* @var elementMessage::suiv
* Pointeur vers le prochain élément
*/
struct elementMessage{ struct elementMessage{
messageBAL * messageBALActuel; messageBAL * messageBALActuel;
struct elementMessage * suiv; struct elementMessage * suiv;
}; };
/**
* @struct listeMessage
* @brief Liste d'éléments messages
*
* @var listeMessage::debut
* Pointeur vers le premier élément
* @var listeMessage::courant
* Pointeur vers l'élément sélectionné
* @var listeMessage::fin
* Pointeur vers l'élément final
*/
struct listeMessage{ struct listeMessage{
struct elementMessage * debut; struct elementMessage * debut;
struct elementMessage * courant; struct elementMessage * courant;
struct elementMessage * fin; struct elementMessage * fin;
}; };
/**
* @struct BAL
* @brief definition de la structure d'une Boite aux Lettres
*
* @var BAL::idRecepteur
* Numéro du recepteur ayant reçu les messages
* @var BAL::actualMessages
* Liste pointant sur les messages reçus
*/
typedef struct{ typedef struct{
int idRecepteur; int idRecepteur;
struct listeMessage * actualMessages; struct listeMessage * actualMessages;
}BAL; }BAL;
/**
* @struct elementBAL
* @brief Element dans une liste de Messages
*
* @var elementBAL::BALActuel
* Pointeur vers la boite aux lettres de l'élément
* @var elementBAL::suiv
* Pointeur vers le prochain élément
*/
struct elementBAL{ struct elementBAL{
BAL * BALActuel; BAL * BALActuel;
struct elementBAL * suiv; struct elementBAL * suiv;
}; };
/**
* @struct listeBAL
* @brief Liste d'éléments BAL
*
* @var listeBAL::debut
* Pointeur vers le premier élément
* @var listeBAL::courant
* Pointeur vers l'élément sélectionné
* @var listeBAL::fin
* Pointeur vers l'élément final
*/
struct listeBAL{ struct listeBAL{
struct elementBAL * debut; struct elementBAL * debut;
struct elementBAL * courant; struct elementBAL * courant;
struct elementBAL * fin; struct elementBAL * fin;
}; };
/**
* @brief Permet l'initialisation d'une struture messageBAL avec un message et un idEmetteur donné.
*
* @param data char*, chaîne de caractère de la donnée.
* @param idEmetteur int, numéro de l'émetteur du message.
* @return messageBAL* message initialisé avec les paramètres donnés.
*/
messageBAL * creeMessage(char *data,int idEmetteur); messageBAL * creeMessage(char *data,int idEmetteur);
struct elementMessage * initElementMessage(void);
struct listeMessage * initListeMessage(void);
void ajoutListeMessage(struct listeMessage * listeActuel,messageBAL * leMessage);
void afficheListeMessage(struct listeMessage listeActuel);
int bal(void);
/**
* @brief Initialise la structure elementMessage avec un malloc.
* L'élément crée renvoi vers une adresse NULL.
*
* @return struct elementMessage* element initialisé
*/
struct elementMessage * initElementMessage(void);
/**
* @brief Initialise plusieurs éléments (debut,courant et fin) avec initElementMessage().
*
* @return struct listeMessage* liste de message NULL mais alloué.
*/
struct listeMessage * initListeMessage(void);
/**
* @brief Ajoute un message dans la liste de message :
* Mets à jour le pointeur courant ainsi que debut.
*
* @param listeActuel struct listeMessage *,la liste à modifier.
* @param leMessage messageBAL*, pointeur sur le message à ajouter à la liste.
*/
void ajoutListeMessage(struct listeMessage * listeActuel,messageBAL * leMessage);
/**
* @brief Affiche l'intégralité des Messages pour tous les Emetteurs.
*
* @param listeActuel struct listeMessage, liste à afficher.
*/
void afficheListeMessage(struct listeMessage listeActuel);
/**
* @brief Permet l'initialisation d'une struture BAL avec un idRecepteur et un messageRecepteur donné.
*
* @param idRecepteur int, numéro du recepteur.
* @param messageRecepteur struct listeMessage*, liste des messages du recepteur.
* @return BAL* boite aux lettres initialisée avec les paramètres donnés.
*/
BAL * creerBAL(int idRecepteur, struct listeMessage * messageRecepteur); BAL * creerBAL(int idRecepteur, struct listeMessage * messageRecepteur);
/**
* @brief Initialise la structure elementBAL avec un malloc.
* L'élément crée renvoi vers une adresse NULL.
*
* @return struct elementBAL* element initialisé
*/
struct elementBAL * initElementBAL(void); struct elementBAL * initElementBAL(void);
/**
* @brief Initialise plusieurs éléments (debut,courant et fin) avec initElementBAL().
*
* @return struct listeBAL liste de Boite aux lettres NULLes mais allouées.
*/
struct listeBAL initListeBAL(void); struct listeBAL initListeBAL(void);
/**
* @brief Ajoute une boite aux letres dans la liste de BAL :
* Mets à jour le pointeur courant ainsi que debut.
*
* @param listeActuel struct listeBAL *,la liste à modifier.
* @param leMessage BAL*, pointeur sur la boite aux lettres à ajouter à la liste.
*/
void ajoutListeBAL(struct listeBAL * listeActuel,BAL * laBoiteAuxLettres); void ajoutListeBAL(struct listeBAL * listeActuel,BAL * laBoiteAuxLettres);
/**
* @brief Affiche l'intégralité de la Boite Aux Lettres pour tous les Récepteurs.
* Utilisation de la fonction afficheListeMessage
*
* @param listeActuel struct listeBAL, liste à afficher.
*/
void afficheListeBAL(struct listeBAL listeActuel); void afficheListeBAL(struct listeBAL listeActuel);
/**
* @brief Permet de vérifier si un idRecepteur existe dans une liste de Boite Aux Lettres donnée
* Ne modifie pas le pointeur courant mais parcours toute la liste. Modifie le boolRetour pour savoir si c'est vrai ou non.
* Renvoi l'élément correspondant si c'est le cas. Renvoi un élément vide sinon.
*
* @param listeActuel struct listeBAL, la liste à vérifier
* @param idRecepteur int, idRecepteur à vérifier.
* @param boolRetour bool*, 1->Element retourné trouvé dans la liste, 0->Element NULL, non trouvé dans la liste
* @return struct elementBAL*, element trouvé si dans la liste, NULL sinon.
*/
struct elementBAL * existInListBAL(struct listeBAL listeActuel, int idRecepteur, bool * boolRetour); struct elementBAL * existInListBAL(struct listeBAL listeActuel, int idRecepteur, bool * boolRetour);
/**
* @brief Crée un nouveau message dans la liste de Boite Aux Lettres.
* Utilisation de la fonction existInListBAL() -> Créer une nouvelle BAL si le recepteur n'existe pas.
*
* @param b struct listeBAL*, la liste à modifier.
* @param idEmetteur int, le numéro de l'émetteur qui a envoyé le message.
* @param idRecepteur int, le numéro du recepteur qui va recevoir ce message.
* @param data char*, le message reçu.
*/
void nouveauMessage(struct listeBAL * b,int idEmetteur,int idRecepteur,char *data); void nouveauMessage(struct listeBAL * b,int idEmetteur,int idRecepteur,char *data);
/** /**
@ -65,7 +219,12 @@ void nouveauMessage(struct listeBAL * b,int idEmetteur,int idRecepteur,char *dat
*/ */
struct listeMessage * getMessages(struct listeBAL b, int idRecepteur); struct listeMessage * getMessages(struct listeBAL b, int idRecepteur);
/**
* @brief [WIP] Permet de renvoyer les trames de chaque messages présentent dans la boîte aux lettres
* suivant le protocole de l'application.
*
* @param l struct listeMessage, la liste à envoye via TCP.
*/
void formatListMessage(struct listeMessage l); void formatListMessage(struct listeMessage l);
#endif #endif