diff options
Diffstat (limited to 'src/server/comms.c')
| -rw-r--r-- | src/server/comms.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/server/comms.c b/src/server/comms.c new file mode 100644 index 0000000..7b8001b --- /dev/null +++ b/src/server/comms.c @@ -0,0 +1,52 @@ +#include <assert.h> + +struct str { + char msg[126]; + int len; +}; + +void set_output(struct str* output, char* msg) { + int i = 0; + while (msg[i] != 0) { + assert(i < 126); + output->msg[i] = msg[i]; + i++; + } + output->len = i; +} + +struct strs { + struct str* data; + int capacity; + int count; +}; + +struct strs init_strs() { + return (struct strs) { + .data = malloc(sizeof(struct str) * 10), + .count = 0, + .capacity = 10, + }; +} +void add_str(struct strs* strs, char* str) { + if (strs->count + 1 > strs->capacity) { + strs->capacity += 30; + strs->data = realloc(strs->data, sizeof(struct str) * strs->capacity); + } + + struct str item; + set_output(&item, str); + + strs->data[strs->count] = item; + strs->count++; +} + +struct strs handle_input(char* payload, int len) { + printf("Message: %.*s\n", len, payload); + struct strs output = init_strs(); + + add_str(&output, "nigga"); + add_str(&output, "nigga2"); + + return output; +} |
