// // Created by Antoine Bartuccio on 05/06/2018. // #ifndef LO41_ELEVATOR_H #define LO41_ELEVATOR_H #include #include "../Objects.h" #include "../List/List.h" #define MAX_ELEVATOR_CAPACITY 10 typedef enum {running, waiting, sleeping, broken} ELEVATOR_STATE; typedef struct o_Elevator { PRIVATE ELEVATOR_STATE state; PRIVATE List * passenger_ids; PRIVATE char * name; PRIVATE int floor; PRIVATE pthread_mutex_t mutex_passenger; PRIVATE pthread_mutex_t mutex_state; PRIVATE pthread_mutex_t mutex_floor; PUBLIC void * (*runnable)(void * void_this); SYNCHRONIZE PRIVATE void (*set_state)(_THIS(Elevator), ELEVATOR_STATE var); SYNCHRONIZE PRIVATE void (*set_floor)(_THIS(Elevator), int var); SYNCHRONIZE PUBLIC void (*repair)(_THIS(Elevator)); SYNCHRONIZE PUBLIC int (*get_number_of_passengers)(_THIS(Elevator)); SYNCHRONIZE PUBLIC ELEVATOR_STATE (*get_state)(_THIS(Elevator)); SYNCHRONIZE PUBLIC int (*get_floor)(_THIS(Elevator)); SYNCHRONIZE PUBLIC int (*can_get_more_passengers)(_THIS(Elevator)); DESTRUCTOR(Elevator); } Elevator; FRIENDLY(state, Building) Elevator *_init_Elevator(char* name); #endif //LO41_ELEVATOR_H