#ifndef PROTOCOL_H #define PROTOCOL_H #include #include #include "array.h" #include "better_string.h" #include "hash_table.h" #include #define MAX_OP_LEN 10 #define MAX_ARG_LEN 50 #define MAX_ARGS 5 #define MAX_BUFSIZE 4096 #define DEFAULT_PORT 11111 #define MAX_CONNECTIONS 32768 #define DEFAULT_TIMEOUT 6000 #define USERNAME_SIZE 30 #define KEYLEN 512 typedef struct { string_t *nick; bool is_guest; int fd; /* list of channels where user is in */ array_t *channels; array_t *dms; array_t *autojoin; unsigned char passhash[SHA256_DIGEST_LENGTH]; } user_t; typedef struct { string_t *nick; string_t *msg; time_t time; } message_t; typedef struct { array_t *messages; user_t *admin; array_t *mods; bool registered_only; bool invite_only; array_t *allowed_users; array_t *users; string_t *chan_name; string_t *desc; } channel_t; typedef struct { user_t *user1; user_t *user2; array_t *messages; } dm_t; string_t *encode_chanstate(ht_t *chans); string_t *encode_usersstate(ht_t *u); #endif