-
Notifications
You must be signed in to change notification settings - Fork 0
/
messages.cpp
80 lines (62 loc) · 1.93 KB
/
messages.cpp
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
76
77
78
79
#include <stdio.h>
#include <string.h>
#define ERR_BAD_USERNAME 100
#define ERR_NOT_REGISTERED 101
#define ERR_CANT_SEND 102
#define ERR_INCOMPLETE_HEADER 103
#define USER_CLIENT 0
#define USER_SERVER 1
#define ACTION_SEND 0
#define ACTION_RECV 1
#define ACTION_FORWARD 2
int create_error_message(int error_code, char *message) {
const char *error_message;
if (error_code == ERR_BAD_USERNAME)
error_message = "Malformed username";
else if (error_code == ERR_NOT_REGISTERED)
error_message = "No user registered";
else if (error_code == ERR_CANT_SEND)
error_message = "Unable to send";
else if (error_code == ERR_INCOMPLETE_HEADER)
error_message = "Header incomplete";
else
return -1;
sprintf(message, "ERROR %d %s\n\n", error_code, error_message);
return strlen(message);
}
int create_register_message(int user, int action, const char *username, char *message) {
if (user == USER_CLIENT)
sprintf(message, "REGISTER ");
else if (user == USER_SERVER)
sprintf(message, "REGISTERED ");
else
return -1;
if (action == ACTION_SEND)
sprintf(message + strlen(message), "TOSEND ");
else if (action == ACTION_RECV)
sprintf(message + strlen(message), "TORECV ");
else
return -1;
sprintf(message + strlen(message), "%s\n\n", username);
return strlen(message);
}
int create_user_message(int action, char *username, char *message, char *content) {
if (action == ACTION_SEND)
sprintf(message, "SEND ");
else if (action == ACTION_FORWARD)
sprintf(message, "FORWARD ");
else
return -1;
sprintf(message + strlen(message), "%s\nContent-length: %d\n\n%s", username, (int)strlen(content), content);
return strlen(message);
}
int create_user_response(int action, const char *username, char *message) {
if (action == ACTION_SEND)
sprintf(message, "SEND ");
else if (action == ACTION_RECV)
sprintf(message, "RECEIVED ");
else
return -1;
sprintf(message + strlen(message), "%s\n\n", username);
return strlen(message);
}