my_teams
server.h File Reference
#include "events_structures.h"
#include "protocol.h"
Include dependency graph for server.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  s_user_s
 
struct  s_team_s
 
struct  s_channel_s
 
struct  s_thread_s
 
struct  s_reply_s
 
struct  s_private_message_s
 
struct  s_subscribe_s
 
struct  logged_user_t
 
struct  s_logged_user_s
 
struct  s_server_t
 

Macros

#define SEND_TYPE   (void)p_server_send_packet_type
 
#define COMBINE(x, y)   (x << 8) + y
 
#define ERROR_PACKET(x, y)   COMBINE(x, y), payload->fd, server->socket
 
#define SAVE_FILE   ".save.out"
 

Typedefs

typedef struct s_user_s s_user_t
 
typedef struct s_team_s s_team_t
 
typedef struct s_channel_s s_channel_t
 
typedef struct s_thread_s s_thread_t
 
typedef struct s_reply_s s_reply_t
 
typedef struct s_private_message_s s_private_message_t
 
typedef struct s_subscribe_s s_subscribe_t
 
typedef struct s_logged_user_s s_logged_user_t
 

Functions

void server (const char *str_port)
 Create a server. More...
 
char * get_uuid (void)
 Get a UUID (version 4) More...
 
char * get_uuid_no_malloc (char *uuid)
 Get a UUID (version 4) without malloc. More...
 
bool save (s_server_t *server)
 Save the server. More...
 
void load (s_server_t *server)
 Load the server. More...
 
void clear_server (s_server_t *server)
 Clear the server. More...
 
void s_server_event_logged_in (s_server_t *server, const p_payload_t *payload)
 Handle login event. More...
 
void s_server_event_logged_out (s_server_t *server, const p_payload_t *payload)
 Handle disconnect event. More...
 
void s_server_event_list_users (s_server_t *server, const p_payload_t *payload)
 Handle list users event. More...
 
void s_server_event_send_message (s_server_t *server, const p_payload_t *payload)
 Handle send message event. More...
 
void s_server_event_list_messages (s_server_t *server, const p_payload_t *payload)
 Handle list messages event. More...
 
void s_server_event_subscribe (s_server_t *server, const p_payload_t *payload)
 Handle subscribe event. More...
 
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. More...
 
void s_server_event_list_subscribed_teams (s_server_t *server, const p_payload_t *payload)
 Handle list subscribed teams event. More...
 
void s_server_event_unsubscribe (s_server_t *server, const p_payload_t *payload)
 Handle unsubscribe event. More...
 
void s_server_event_team_created (s_server_t *server, const p_payload_t *payload)
 Handle create team event. More...
 
void s_server_event_channel_created (s_server_t *server, const p_payload_t *payload)
 Handle create channel event. More...
 
void s_server_event_thread_created (s_server_t *server, const p_payload_t *payload)
 Handle create thread event. More...
 
void s_server_event_reply_created (s_server_t *server, const p_payload_t *payload)
 Handle create reply event. More...
 
void s_server_event_list_teams (s_server_t *server, const p_payload_t *payload)
 Handle list teams event. More...
 
void s_server_event_list_channels (s_server_t *server, const p_payload_t *payload)
 Handle list channels event. More...
 
void s_server_event_list_threads (s_server_t *server, const p_payload_t *payload)
 Handle list threads event. More...
 
void s_server_event_list_replies (s_server_t *server, const p_payload_t *payload)
 Handle list replies event. More...
 
void s_server_event_get_user_info (s_server_t *server, const p_payload_t *payload)
 Handle get user info event. More...
 
void s_server_event_get_team_info (s_server_t *server, const p_payload_t *payload)
 Handle get team info event. More...
 
void s_server_event_get_channel_info (s_server_t *server, const p_payload_t *payload)
 Handle get channel info event. More...
 
void s_server_event_get_thread_info (s_server_t *server, const p_payload_t *payload)
 Handle get thread info event. More...
 
void s_server_event_ping (s_server_t *server, const p_payload_t *payload)
 Handle ping event. More...
 
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. More...
 
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. More...
 
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. More...
 
bool is_logged (const s_server_t *server, const char *user_uuid)
 Check if a user is logged. More...
 
bool as_team (const s_server_t *server, const char *team_uuid)
 Check if a team with a UUID exists. More...
 
bool as_channel (const s_server_t *server, const char *channel_uuid)
 Check if a channel with a UUID exists. More...
 
bool as_thread (const s_server_t *server, const char *thread_uuid)
 Check if a thread with a UUID exists. More...
 
bool as_user (const s_server_t *server, const char *user_uuid)
 Check if a user with a UUID exists. More...
 
bool check_uuid (const s_server_t *server, int fd, char **uuid, uint16_t type)
 Check if a UUID is allocated. More...
 

Macro Definition Documentation

◆ COMBINE

#define COMBINE (   x,
 
)    (x << 8) + y

◆ ERROR_PACKET

#define ERROR_PACKET (   x,
 
)    COMBINE(x, y), payload->fd, server->socket

◆ SAVE_FILE

#define SAVE_FILE   ".save.out"

◆ SEND_TYPE

#define SEND_TYPE   (void)p_server_send_packet_type

Typedef Documentation

◆ s_channel_t

typedef struct s_channel_s s_channel_t

◆ s_logged_user_t

◆ s_private_message_t

◆ s_reply_t

typedef struct s_reply_s s_reply_t

◆ s_subscribe_t

typedef struct s_subscribe_s s_subscribe_t

◆ s_team_t

typedef struct s_team_s s_team_t

◆ s_thread_t

typedef struct s_thread_s s_thread_t

◆ s_user_t

typedef struct s_user_s s_user_t

Function Documentation

◆ as_channel()

bool as_channel ( const s_server_t server,
const char *  channel_uuid 
)

Check if a channel with a UUID exists.

Parameters
serverThe server
channel_uuidThe channel UUID
Returns
true if the channel exists, false otherwise
Here is the call graph for this function:

◆ as_team()

bool as_team ( const s_server_t server,
const char *  team_uuid 
)

Check if a team with a UUID exists.

Parameters
serverThe server
team_uuidThe team UUID
Returns
true if the team exists, false otherwise
Here is the call graph for this function:

◆ as_thread()

bool as_thread ( const s_server_t server,
const char *  thread_uuid 
)

Check if a thread with a UUID exists.

Parameters
serverThe server
thread_uuidThe thread UUID
Returns
true if the thread exists, false otherwise
Here is the call graph for this function:

◆ as_user()

bool as_user ( const s_server_t server,
const char *  user_uuid 
)

Check if a user with a UUID exists.

Parameters
serverThe server
user_uuidThe user UUID
Returns
true if the user exists, false otherwise
Here is the call graph for this function:

◆ check_uuid()

bool check_uuid ( const s_server_t server,
int  fd,
char **  uuid,
uint16_t  type 
)

Check if a UUID is allocated.

Parameters
serverThe server
fdThe client file descriptor
uuidThe UUID
typeThe packet type
Here is the call graph for this function:

◆ clear_server()

void clear_server ( s_server_t server)

Clear the server.

Parameters
serverThe server

◆ get_uuid()

char* get_uuid ( void  )

Get a UUID (version 4)

Returns
The UUID

◆ get_uuid_no_malloc()

char* get_uuid_no_malloc ( char *  uuid)

Get a UUID (version 4) without malloc.

Parameters
uuidThe UUID
Returns
The UUID

◆ is_in_channels()

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.

Parameters
serverThe server
user_uuidThe user UUID
channel_uuidThe channel UUID
Returns
true if the user is in the channel, false otherwise
Here is the call graph for this function:

◆ is_in_teams()

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.

Parameters
serverThe server
user_uuidThe user UUID
team_uuidThe team UUID
Returns
true if the user is in the team, false otherwise
Here is the call graph for this function:

◆ is_in_threads()

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.

Parameters
serverThe server
user_uuidThe user UUID
thread_uuidThe thread UUID
Returns
true if the user is in the thread, false otherwise
Here is the call graph for this function:

◆ is_logged()

bool is_logged ( const s_server_t server,
const char *  user_uuid 
)

Check if a user is logged.

Parameters
serverThe server
user_uuidThe user UUID
Returns
true if the user is logged, false otherwise
Here is the call graph for this function:

◆ load()

void load ( s_server_t server)

Load the server.

Parameters
serverThe server

◆ s_server_event_channel_created()

void s_server_event_channel_created ( s_server_t server,
const p_payload_t payload 
)

Handle create channel event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_get_channel_info()

void s_server_event_get_channel_info ( s_server_t server,
const p_payload_t payload 
)

Handle get channel info event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_get_team_info()

void s_server_event_get_team_info ( s_server_t server,
const p_payload_t payload 
)

Handle get team info event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_get_thread_info()

void s_server_event_get_thread_info ( s_server_t server,
const p_payload_t payload 
)

Handle get thread info event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_get_user_info()

void s_server_event_get_user_info ( s_server_t server,
const p_payload_t payload 
)

Handle get user info event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_list_channels()

void s_server_event_list_channels ( s_server_t server,
const p_payload_t payload 
)

Handle list channels event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_list_messages()

void s_server_event_list_messages ( s_server_t server,
const p_payload_t payload 
)

Handle list messages event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_list_replies()

void s_server_event_list_replies ( s_server_t server,
const p_payload_t payload 
)

Handle list replies event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_list_subscribed_teams()

void s_server_event_list_subscribed_teams ( s_server_t server,
const p_payload_t payload 
)

Handle list subscribed teams event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_list_subscribed_users_in_team()

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.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_list_teams()

void s_server_event_list_teams ( s_server_t server,
const p_payload_t payload 
)

Handle list teams event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_list_threads()

void s_server_event_list_threads ( s_server_t server,
const p_payload_t payload 
)

Handle list threads event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_list_users()

void s_server_event_list_users ( s_server_t server,
const p_payload_t payload 
)

Handle list users event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_logged_in()

void s_server_event_logged_in ( s_server_t server,
const p_payload_t payload 
)

Handle login event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_logged_out()

void s_server_event_logged_out ( s_server_t server,
const p_payload_t payload 
)

Handle disconnect event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_ping()

void s_server_event_ping ( s_server_t server,
const p_payload_t payload 
)

Handle ping event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_reply_created()

void s_server_event_reply_created ( s_server_t server,
const p_payload_t payload 
)

Handle create reply event.

Parameters
serverThe server
payloadThe payload

◆ s_server_event_send_message()

void s_server_event_send_message ( s_server_t server,
const p_payload_t payload 
)

Handle send message event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_subscribe()

void s_server_event_subscribe ( s_server_t server,
const p_payload_t payload 
)

Handle subscribe event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_team_created()

void s_server_event_team_created ( s_server_t server,
const p_payload_t payload 
)

Handle create team event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_thread_created()

void s_server_event_thread_created ( s_server_t server,
const p_payload_t payload 
)

Handle create thread event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ s_server_event_unsubscribe()

void s_server_event_unsubscribe ( s_server_t server,
const p_payload_t payload 
)

Handle unsubscribe event.

Parameters
serverThe server
payloadThe payload
Here is the call graph for this function:

◆ save()

bool save ( s_server_t server)

Save the server.

Parameters
serverThe server
Returns
true if the server was saved, false otherwise

◆ server()

void server ( const char *  str_port)

Create a server.

Parameters
str_portThe port to listen on
Here is the call graph for this function: