blob: dfc0df361788e017ff429da2e66e467af9b03bd8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
#ifndef FSCORD_MESSAGES_H
#define FSCORD_MESSAGES_H
// Todo: Currently every user is identified via his name. Can we change it to an id?
#include <basic/basic.h>
#include <basic/string32.h>
#include <os/os.h>
#include <crypto/aes_gcm.h>
#define MESSAGES_MAX_USER_COUNT 128
#define MESSAGES_MAX_USERNAME_LEN 32
#define MESSAGES_MAX_PASSWORD_LEN 32
#define MESSAGES_MAX_MESSAGE_LEN 1024
#define MESSAGES_MAX_PACKAGE_SIZE 1408
typedef struct {
u32 size;
u32 type;
} MessageHeader;
enum {
C2S_LOGIN,
C2S_CHAT_MESSAGE,
};
enum {
S2C_LOGIN,
S2C_USER_UPDATE,
S2C_CHAT_MESSAGE,
};
enum {
S2C_LOGIN_ERROR,
S2C_LOGIN_SUCCESS
};
enum {
S2C_USER_UPDATE_OFFLINE,
S2C_USER_UPDATE_ONLINE,
};
typedef struct {
MessageHeader header;
String32 *username;
String32 *password;
} C2S_Login;
typedef struct {
MessageHeader header;
String32 *content;
} C2S_ChatMessage;
typedef struct {
MessageHeader header;
u32 login_result;
} S2C_Login;
typedef struct {
MessageHeader header;
u32 status;
String32 *username;
} S2C_UserUpdate;
typedef struct {
MessageHeader header;
i64 epoch_time_seconds;
i64 epoch_time_nanoseconds;
String32 *username;
String32 *content;
} S2C_ChatMessage;
#endif // FSCORD_MESSAGES_H
|