14 #define SEND_TYPE (void)p_server_send_packet_type
15 #define COMBINE(x, y) (x << 8) + y
16 #define ERROR_PACKET(x, y) COMBINE(x, y), payload->fd, server->socket
18 #define SAVE_FILE ".save.out"
84 void server(
const char *str_port);
296 const char *team_uuid);
306 const char *channel_uuid);
316 const char *thread_uuid);
#define MAX_NAME_LENGTH
Definition: commands.h:15
#define UUID_LENGTH
Definition: events_structures.h:11
uint16_t type
Definition: logger.h:152
void clear_server(s_server_t *server)
Clear the server.
Definition: clear.c:89
void s_server_event_list_channels(s_server_t *server, const p_payload_t *payload)
Handle list channels event.
Definition: list_team.c:36
void s_server_event_channel_created(s_server_t *server, const p_payload_t *payload)
Handle create channel event.
Definition: created.c:60
bool is_in_teams(const s_server_t *server, const char *user_uuid, const char *team_uuid)
Check if a user is in a team.
Definition: is_in.c:12
struct s_reply_s s_reply_t
void load(s_server_t *server)
Load the server.
Definition: load.c:117
char * get_uuid_no_malloc(char *uuid)
Get a UUID (version 4) without malloc.
Definition: uuid.c:26
void s_server_event_reply_created(s_server_t *server, const p_payload_t *payload)
Handle create reply event.
Definition: created.c:160
void s_server_event_unsubscribe(s_server_t *server, const p_payload_t *payload)
Handle unsubscribe event.
Definition: miscellaneous.c:79
bool check_uuid(const s_server_t *server, int fd, char **uuid, uint16_t type)
Check if a UUID is allocated.
Definition: check.c:66
void s_server_event_get_thread_info(s_server_t *server, const p_payload_t *payload)
Handle get thread info event.
Definition: info.c:71
void s_server_event_list_messages(s_server_t *server, const p_payload_t *payload)
Handle list messages event.
Definition: list.c:46
void s_server_event_thread_created(s_server_t *server, const p_payload_t *payload)
Handle create thread event.
Definition: created.c:109
void s_server_event_subscribe(s_server_t *server, const p_payload_t *payload)
Handle subscribe event.
Definition: miscellaneous.c:55
struct s_channel_s s_channel_t
char * get_uuid(void)
Get a UUID (version 4)
Definition: uuid.c:13
void s_server_event_get_user_info(s_server_t *server, const p_payload_t *payload)
Handle get user info event.
Definition: info.c:13
struct s_private_message_s s_private_message_t
void s_server_event_ping(s_server_t *server, const p_payload_t *payload)
Handle ping event.
Definition: miscellaneous.c:15
void server(const char *str_port)
Create a server.
Definition: server.c:56
struct s_subscribe_s s_subscribe_t
bool as_channel(const s_server_t *server, const char *channel_uuid)
Check if a channel with a UUID exists.
Definition: check.c:27
void s_server_event_list_users(s_server_t *server, const p_payload_t *payload)
Handle list users event.
Definition: list.c:22
void s_server_event_logged_out(s_server_t *server, const p_payload_t *payload)
Handle disconnect event.
Definition: logged.c:71
bool as_user(const s_server_t *server, const char *user_uuid)
Check if a user with a UUID exists.
Definition: check.c:53
void s_server_event_get_team_info(s_server_t *server, const p_payload_t *payload)
Handle get team info event.
Definition: info.c:35
bool is_in_channels(const s_server_t *server, const char *user_uuid, const char *channel_uuid)
Check if a user is in a channel.
Definition: is_in.c:24
void s_server_event_list_threads(s_server_t *server, const p_payload_t *payload)
Handle list threads event.
Definition: list_team.c:60
void s_server_event_send_message(s_server_t *server, const p_payload_t *payload)
Handle send message event.
Definition: miscellaneous.c:35
struct s_logged_user_s s_logged_user_t
void s_server_event_team_created(s_server_t *server, const p_payload_t *payload)
Handle create team event.
Definition: created.c:26
bool save(s_server_t *server)
Save the server.
Definition: save.c:125
bool as_thread(const s_server_t *server, const char *thread_uuid)
Check if a thread with a UUID exists.
Definition: check.c:40
void s_server_event_get_channel_info(s_server_t *server, const p_payload_t *payload)
Handle get channel info event.
Definition: info.c:53
void s_server_event_list_subscribed_teams(s_server_t *server, const p_payload_t *payload)
Handle list subscribed teams event.
Definition: list.c:95
bool as_team(const s_server_t *server, const char *team_uuid)
Check if a team with a UUID exists.
Definition: check.c:14
void s_server_event_list_teams(s_server_t *server, const p_payload_t *payload)
Handle list teams event.
Definition: list_team.c:14
void s_server_event_logged_in(s_server_t *server, const p_payload_t *payload)
Handle login event.
Definition: logged.c:48
bool is_logged(const s_server_t *server, const char *user_uuid)
Check if a user is logged.
Definition: is_in.c:47
struct s_thread_s s_thread_t
void s_server_event_list_replies(s_server_t *server, const p_payload_t *payload)
Handle list replies event.
Definition: list_team.c:84
bool is_in_threads(const s_server_t *server, const char *user_uuid, const char *thread_uuid)
Check if a user is in a thread.
Definition: is_in.c:35
void s_server_event_list_subscribed_users_in_team(s_server_t *server, const p_payload_t *payload)
Handle list subscribed users in team event.
Definition: list.c:71
Definition: events_structures.h:126
int socket
Definition: server.h:58
Represents a payload containing packet, network data, and actual data.
Definition: protocol.h:41
Represents a server with network data, file descriptor set, and list of clients.
Definition: protocol.h:67
Definition: events_structures.h:52
Definition: events_structures.h:168
TAILQ_ENTRY(s_channel_s) entries
channel_t channel
Definition: server.h:31
logged_user_t user
Definition: server.h:62
TAILQ_ENTRY(s_logged_user_s) entries
TAILQ_ENTRY(s_private_message_s) entries
private_message_t message
Definition: server.h:46
TAILQ_ENTRY(s_reply_s) entries
reply_t reply
Definition: server.h:41
TAILQ_HEAD(, s_reply_s) replies
p_server_t * socket
Definition: server.h:76
int current_fd
Definition: server.h:77
TAILQ_HEAD(, s_thread_s) threads
TAILQ_HEAD(, s_subscribe_s) subscribes
TAILQ_HEAD(, s_user_s) users
TAILQ_HEAD(, s_logged_user_s) logged
TAILQ_HEAD(, s_private_message_s) private_messages
TAILQ_HEAD(, s_channel_s) channels
TAILQ_HEAD(, s_team_s) teams
subscribe_t subscribe
Definition: server.h:51
TAILQ_ENTRY(s_subscribe_s) entries
TAILQ_ENTRY(s_team_s) entries
team_t team
Definition: server.h:26
TAILQ_ENTRY(s_thread_s) entries
thread_t thread
Definition: server.h:36
TAILQ_ENTRY(s_user_s) entries
user_t user
Definition: server.h:21
Definition: events_structures.h:64
Definition: events_structures.h:43
Definition: events_structures.h:147
Definition: events_structures.h:25