diff options
Diffstat (limited to 'src/server/client_connections.h')
-rw-r--r-- | src/server/client_connections.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/server/client_connections.h b/src/server/client_connections.h new file mode 100644 index 0000000..0c0a275 --- /dev/null +++ b/src/server/client_connections.h @@ -0,0 +1,44 @@ +#ifndef CLIENT_CONNECTIONS_H +#define CLIENT_CONNECTIONS_H + +#include <basic/basic.h> +#include <basic/string32.h> +#include <os/os.h> +#include <messages/messages.h> + + +#define CLIENT_CONNECTION_INVALID_ID U32_MAX + + +typedef struct { + u32 id; + u32 secure_stream_id; + u32 recv_buff_size_used; + u8 recv_buff[1408]; + + String32 *username; + u8 username_buff[sizeof(String32) + MESSAGES_MAX_USERNAME_LEN * sizeof(u32)]; +} ClientConnection; + + +typedef struct { + EVP_PKEY *server_rsa_pri; + u32 listener_id; + int epoll_fd; + + size_t max_connection_count; + ClientConnection *connections; + + u32 free_id_count; + u32 *free_ids; +} ClientConnections; + + + +ClientConnections *client_connections_create(Arena *arena, u16 port); +void client_connections_manage(ClientConnections *connections); + +ClientConnection* client_connection_id_to_ptr(ClientConnections *connections, u32 id); + + +#endif // CLIENT_CONNECTIONS_H |