2018-06-06 01:15:23 +02:00
|
|
|
//
|
|
|
|
// Created by Antoine Bartuccio on 05/06/2018.
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef LO41_ELEVATOR_H
|
|
|
|
#define LO41_ELEVATOR_H
|
|
|
|
|
2018-06-07 22:04:30 +02:00
|
|
|
#include <pthread.h>
|
2018-06-06 01:15:23 +02:00
|
|
|
#include "../Objects.h"
|
2018-06-07 22:04:30 +02:00
|
|
|
#include "../List/List.h"
|
|
|
|
|
|
|
|
#define MAX_ELEVATOR_CAPACITY 10
|
|
|
|
|
|
|
|
typedef enum {running, waiting, sleeping} ELEVATOR_STATE;
|
2018-06-06 01:15:23 +02:00
|
|
|
|
|
|
|
typedef struct o_Elevator {
|
2018-06-07 22:04:30 +02:00
|
|
|
PRIVATE ELEVATOR_STATE state;
|
|
|
|
PRIVATE List * passenger_ids;
|
|
|
|
PRIVATE char * name;
|
|
|
|
PRIVATE pthread_mutex_t passenger_mutex;
|
2018-06-06 01:15:23 +02:00
|
|
|
|
2018-06-07 22:04:30 +02:00
|
|
|
SYNCHRONIZE PUBLIC int (*get_number_of_passengers)(_THIS(Elevator));
|
2018-06-07 22:05:39 +02:00
|
|
|
SYNCHRONIZE PUBLIC int (*can_get_more_passengers)(_THIS(Elevator));
|
2018-06-06 03:00:35 +02:00
|
|
|
DESTRUCTOR(Elevator);
|
2018-06-06 01:15:23 +02:00
|
|
|
} Elevator;
|
|
|
|
|
2018-06-07 22:04:30 +02:00
|
|
|
FRIENDLY(state, Building)
|
|
|
|
|
|
|
|
Elevator *_init_Elevator(char* name);
|
2018-06-06 03:00:35 +02:00
|
|
|
|
2018-06-06 01:15:23 +02:00
|
|
|
#endif //LO41_ELEVATOR_H
|