aboutsummaryrefslogtreecommitdiff
path: root/include/protocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/protocol.h')
-rw-r--r--include/protocol.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/include/protocol.h b/include/protocol.h
index 7b5eb07..16ba818 100644
--- a/include/protocol.h
+++ b/include/protocol.h
@@ -1,6 +1,14 @@
#ifndef PROTOCOL_H
#define PROTOCOL_H
+#include <time.h>
+#include <stdbool.h>
+
+#include <array.h>
+#include <better_string.h>
+#include <hash_table.h>
+#include <openssl/sha.h>
+
#define MAX_OP_LEN 10
#define MAX_ARG_LEN 50
#define MAX_ARGS 5
@@ -11,4 +19,50 @@
#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