Projet d'ascenseurs intelligents multi threads pour l'UV LO41
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

81 lines
2.7 KiB

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include "Objects.h"
#include "List/List.h"
#include "Building/Building.h"
#include "SharedData/SharedData.h"
#include "Visitor/Visitor.h"
#include "Resident/Resident.h"
pthread_cond_t cond;
void * test_sub(void *bite){
usleep(2000000);
printf("Je relache le programme\n");
pthread_cond_signal(&cond);
return bite;
}
void clean_exit(int error_code){
printf("Signal %d received, exiting app\n", error_code);
DELETE(GET_INSTANCE(SharedData));
exit(0);
}
int main() {
List *l = NEW(List);
Visitor * roger = NEW(Visitor, 8, "Roger", "Sli");
Resident * sli = NEW(Resident, 1, "Sli", 2, 2);
char text1[30] = "Patate";
char text2[30] = "Patator";
pthread_mutex_t mutex;
pthread_t thread;
GET_INSTANCE(SharedData);
signal(SIGINT, clean_exit);
pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&cond, NULL);
printf("La taille est de %d\n", l->get_size(l));
pthread_create(&thread, 0, test_sub, NULL);
printf("FREEEZZZE\n");
pthread_cond_wait(&cond, &mutex);
pthread_cond_destroy(&cond);
l->insert_tail(l, text1, sizeof(char) * 30);
l->insert_head(l, text2, sizeof(char) * 30);
l->insert_head(l, "Bite", sizeof(char) * 30);
printf("La taille est de %d\n", l->get_size(l));
printf("%s\n", (char *) l->get_head_data(l));
printf("%s\n", (char *) l->get_tail_data(l));
printf("%s\n", (char *) l->get_element_data(l, 0));
printf("%s\n", (char *) l->get_element_data(l, 1));
l->insert_inside(l, "Rigolo", sizeof(char) * 30, 2);
printf("%s\n", (char *) l->get_element_data(l, 1));
printf("%s\n", (char *) l->get_element_data(l, 3));
l->remove_tail(l);
printf("La taille est de %d\n", l->get_size(l));
DELETE(l);
Building *main_building = NEW(Building, "../residents.txt", "../visitors.txt");
printf("Il y a %d étages dans l'immeuble\n", main_building->floors);
printf("%s est le second visiteur, il veut aller voir %s\n", ((Visitor *) main_building->visitors->get_element_data(main_building->visitors, 1))->name,
((Visitor *) main_building->visitors->get_element_data(main_building->visitors, 1))->contact_name);
printf("%s est le second resident, il veut aller à l'étage %d\n", ((Resident *) main_building->residents->get_element_data(main_building->residents, 1))->name,
((Resident *) main_building->residents->get_element_data(main_building->residents, 1))->destination);
for (int i=0; i < ELEVATOR_NB; i++)
printf("Ascenseur %s\n", main_building->elevators[i]->name);
DELETE(main_building);
printf("Hello, World!\n");
printf("%s veut rentrer et aller voir %s\n", roger->get_name(roger), roger->contact_name);
printf("%s habite dans l'appartement %d\n", sli->get_name(sli), sli->get_apartment_floor(sli));
DELETE(GET_INSTANCE(SharedData));
DELETE(roger);
DELETE(sli);
return 0;
}