mirror of
https://github.com/yoboujon/tsock.git
synced 2025-06-08 14:00:50 +02:00
Completion de la liste de liste en boîte aux lettres. fonction nouveauMessage.
This commit is contained in:
parent
7885ac7bb6
commit
cfd79b575d
3 changed files with 128 additions and 16 deletions
33
header/bal.h
33
header/bal.h
|
@ -6,7 +6,7 @@
|
|||
typedef struct{
|
||||
char *data;
|
||||
int tailleData;
|
||||
int idEmeteur;
|
||||
int idEmetteur;
|
||||
}messageBAL;
|
||||
|
||||
struct elementMessage{
|
||||
|
@ -20,10 +20,35 @@ struct listeMessage{
|
|||
struct elementMessage * fin;
|
||||
};
|
||||
|
||||
messageBAL * creeMessage(char *data,int idEmeteur);
|
||||
typedef struct{
|
||||
int idRecepteur;
|
||||
struct listeMessage * actualMessages;
|
||||
}BAL;
|
||||
|
||||
struct elementBAL{
|
||||
BAL * BALActuel;
|
||||
struct elementBAL * suiv;
|
||||
};
|
||||
|
||||
struct listeBAL{
|
||||
struct elementBAL * debut;
|
||||
struct elementBAL * courant;
|
||||
struct elementBAL * fin;
|
||||
};
|
||||
|
||||
messageBAL * creeMessage(char *data,int idEmetteur);
|
||||
struct elementMessage * initElementMessage(void);
|
||||
struct listeMessage initListeMessage(void);
|
||||
void ajoutListe(struct listeMessage * listeActuel,messageBAL * leMessage);
|
||||
struct listeMessage * initListeMessage(void);
|
||||
void ajoutListeMessage(struct listeMessage * listeActuel,messageBAL * leMessage);
|
||||
void afficheListeMessage(struct listeMessage listeActuel);
|
||||
|
||||
BAL * creerBAL(int idRecepteur, struct listeMessage * messageRecepteur);
|
||||
struct elementBAL * initElementBAL(void);
|
||||
struct listeBAL initListeBAL(void);
|
||||
void ajoutListeBAL(struct listeBAL * listeActuel,BAL * laBoiteAuxLettres);
|
||||
void afficheListeBAL(struct listeBAL listeActuel);
|
||||
|
||||
struct elementBAL * existInListBAL(struct listeBAL listeActuel, int idRecepteur, bool * boolRetour);
|
||||
void nouveauMessage(struct listeBAL * b,int idEmetteur,int idRecepteur,char *data);
|
||||
|
||||
#endif
|
|
@ -12,6 +12,7 @@
|
|||
#include <netdb.h>
|
||||
#include <errno.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
void setNbMessage(int * nb, int source);
|
||||
void printInfo(int source, int isTCP, int nbMessage, int taille, int portNumber, char ipAddress[]);
|
||||
|
|
110
src/bal.c
110
src/bal.c
|
@ -1,18 +1,22 @@
|
|||
#include "../header/bal.h"
|
||||
|
||||
int main(void){
|
||||
struct listeMessage l = initListeMessage();
|
||||
messageBAL * messageBAL = creeMessage("Renvoi moi mon pdf asap. -Simon",1);
|
||||
ajoutListe(&l,messageBAL);
|
||||
afficheListeMessage(l);
|
||||
struct listeBAL boiteAuxLettres = initListeBAL();
|
||||
nouveauMessage(&boiteAuxLettres,2,1,"Renvoi moi mon pdf asap. -Simon");
|
||||
nouveauMessage(&boiteAuxLettres,2,1,"Mon anniversaire c'est demain !");
|
||||
nouveauMessage(&boiteAuxLettres,1,2,"Ok joyeux anniv alors !");
|
||||
nouveauMessage(&boiteAuxLettres,1,2,"ok c'est fait. -Yohan");
|
||||
nouveauMessage(&boiteAuxLettres,3,1,"C'est trop, yohan me soule");
|
||||
nouveauMessage(&boiteAuxLettres,1,3,"Yoyo l'asticot");
|
||||
afficheListeBAL(boiteAuxLettres);
|
||||
return 0;
|
||||
}
|
||||
|
||||
messageBAL * creeMessage(char *data,int idEmeteur)
|
||||
messageBAL * creeMessage(char *data,int idEmetteur)
|
||||
{
|
||||
messageBAL * message = malloc(sizeof(messageBAL));
|
||||
|
||||
message->idEmeteur=idEmeteur;
|
||||
message->idEmetteur=idEmetteur;
|
||||
message->tailleData=strlen(data);
|
||||
message->data=(char*)malloc(sizeof(char)*message->tailleData);
|
||||
strcpy(message->data,data);
|
||||
|
@ -27,16 +31,16 @@ struct elementMessage * initElementMessage(void)
|
|||
return returnElement;
|
||||
}
|
||||
|
||||
struct listeMessage initListeMessage(void)
|
||||
struct listeMessage * initListeMessage(void)
|
||||
{
|
||||
struct listeMessage l;
|
||||
l.debut=initElementMessage();
|
||||
l.fin=initElementMessage();
|
||||
l.courant=initElementMessage();
|
||||
struct listeMessage * l=malloc(sizeof(struct listeMessage));
|
||||
l->debut=initElementMessage();
|
||||
l->fin=initElementMessage();
|
||||
l->courant=initElementMessage();
|
||||
return l;
|
||||
}
|
||||
|
||||
void ajoutListe(struct listeMessage * listeActuel,messageBAL * leMessage)
|
||||
void ajoutListeMessage(struct listeMessage * listeActuel,messageBAL * leMessage)
|
||||
{
|
||||
struct elementMessage * elementActuel = malloc(sizeof(struct elementMessage));
|
||||
elementActuel->messageBALActuel=leMessage;
|
||||
|
@ -55,3 +59,85 @@ void afficheListeMessage(struct listeMessage listeActuel)
|
|||
elementCourant=elementCourant->suiv;
|
||||
}
|
||||
}
|
||||
|
||||
BAL * creerBAL(int idRecepteur, struct listeMessage * messageRecepteur)
|
||||
{
|
||||
BAL * boiteAuxLettres = malloc(sizeof(BAL));
|
||||
|
||||
boiteAuxLettres->idRecepteur=idRecepteur;
|
||||
boiteAuxLettres->actualMessages=messageRecepteur;
|
||||
return boiteAuxLettres;
|
||||
}
|
||||
|
||||
struct elementBAL * initElementBAL(void)
|
||||
{
|
||||
struct elementBAL * returnElement = malloc(sizeof(struct elementBAL));
|
||||
struct listeMessage * lVide = initListeMessage();
|
||||
returnElement->BALActuel = creerBAL(0,lVide);
|
||||
returnElement->suiv = NULL;
|
||||
return returnElement;
|
||||
}
|
||||
|
||||
struct listeBAL initListeBAL(void)
|
||||
{
|
||||
struct listeBAL l;
|
||||
l.debut=initElementBAL();
|
||||
l.fin=initElementBAL();
|
||||
l.courant=initElementBAL();
|
||||
return l;
|
||||
}
|
||||
|
||||
void ajoutListeBAL(struct listeBAL * listeActuel,BAL * laBoiteAuxLettres)
|
||||
{
|
||||
struct elementBAL * elementActuel = malloc(sizeof(struct elementBAL));
|
||||
elementActuel->BALActuel=laBoiteAuxLettres;
|
||||
elementActuel->suiv=listeActuel->courant;
|
||||
listeActuel->debut=elementActuel;
|
||||
listeActuel->courant=elementActuel;
|
||||
}
|
||||
|
||||
void afficheListeBAL(struct listeBAL listeActuel)
|
||||
{
|
||||
struct elementBAL * elementFinal = listeActuel.fin;
|
||||
struct elementBAL * elementCourant = listeActuel.courant;
|
||||
while(elementCourant->suiv != elementFinal->suiv)
|
||||
{
|
||||
printf("Recepteur : %d\n",elementCourant->BALActuel->idRecepteur);
|
||||
afficheListeMessage(*(elementCourant->BALActuel->actualMessages));
|
||||
elementCourant=elementCourant->suiv;
|
||||
}
|
||||
}
|
||||
|
||||
struct elementBAL * existInListBAL(struct listeBAL listeActuel, int idRecepteur, bool * boolRetour)
|
||||
{
|
||||
struct elementBAL * elementFinal = listeActuel.fin;
|
||||
struct elementBAL * elementCourant = listeActuel.courant;
|
||||
while(elementCourant->suiv != elementFinal->suiv)
|
||||
{
|
||||
if(elementCourant->BALActuel->idRecepteur == idRecepteur)
|
||||
{
|
||||
*boolRetour = true;
|
||||
return elementCourant;
|
||||
}
|
||||
elementCourant=elementCourant->suiv;
|
||||
};
|
||||
*boolRetour = false;
|
||||
return elementFinal;
|
||||
}
|
||||
|
||||
void nouveauMessage(struct listeBAL * b,int idEmetteur,int idRecepteur,char *data)
|
||||
{
|
||||
bool testExistInList;
|
||||
struct elementBAL * elementNouveauMessage = existInListBAL(*b,idRecepteur,&testExistInList);
|
||||
printf("testExistInList = %d\n",testExistInList);
|
||||
if(testExistInList)
|
||||
{
|
||||
ajoutListeMessage(elementNouveauMessage->BALActuel->actualMessages,creeMessage(data,idEmetteur));
|
||||
}
|
||||
else
|
||||
{
|
||||
struct listeMessage * newListMessage = initListeMessage();
|
||||
ajoutListeMessage(newListMessage,creeMessage(data,idEmetteur));
|
||||
ajoutListeBAL(b,creerBAL(idRecepteur,newListMessage));
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue