diff options
| author | Aargh Rai <aargh.rai+git@gmail.com> | 2026-05-29 13:57:07 +0530 |
|---|---|---|
| committer | Aargh Rai <aargh.rai+git@gmail.com> | 2026-05-29 13:57:07 +0530 |
| commit | 26df2f9a8cbe3a249d54baa090edaf6a13ec883d (patch) | |
| tree | 736318d0b4f168660d8e7dab843c8002555db41f | |
| parent | c38475eb5d82f6e587faf2956a7eba3085890e99 (diff) | |
crazy working logging system, we are back to where we were yesterday, just with logs
| -rw-r--r-- | assets/board.js | 8 | ||||
| -rw-r--r-- | build.c | 5 | ||||
| -rw-r--r-- | src/engine.c | 58 | ||||
| -rw-r--r-- | src/ipc.c | 2 | ||||
| -rw-r--r-- | src/log.c | 1 | ||||
| -rw-r--r-- | src/logger/logger.h | 4 | ||||
| -rw-r--r-- | src/server.c | 23 | ||||
| -rw-r--r-- | src/server/comms.c | 16 |
8 files changed, 66 insertions, 51 deletions
diff --git a/assets/board.js b/assets/board.js index e53e285..1ef6689 100644 --- a/assets/board.js +++ b/assets/board.js @@ -100,6 +100,7 @@ window.onload = () => { const socket = new WebSocket("ws://localhost:3456"); let data = []; socket.onmessage = e => { + console.log(e); if (e.data == "END-TRANSMISSION") { handleTransmission(data); data = []; @@ -107,6 +108,13 @@ window.onload = () => { data.push(e.data); } socket.onopen = () => socket.send("hello"); + socket.onerror = e => { + console.log("error", e); + }; + + socket.onclose = e => { + console.log("closed", e.code, e.reason); + }; const output = document.getElementById("output"); const board = document.getElementById("board"); @@ -69,16 +69,17 @@ int main(int argc, char** argv) { RUN_CMD({"rm", "/dev/mqueue/logs", NULL}); RUN_CMD({"mkdir", "-p", "output", NULL}); - RUN_CMD({"gcc", "src/log.c", "-o", LOG_O, NULL}); if (argc > 1) { if (strcmp(argv[1], "test") == 0) { return test_mode(); } if (strcmp(argv[1], "server") == 0) { + RUN_CMD({"gcc", "src/log.c", "-o", LOG_O, NULL}); return server_mode(); } if (strcmp(argv[1], "clean") == 0) { + RUN_CMD({"gcc", "src/log.c", "-o", LOG_O, NULL}); return clean_mode(); } } @@ -98,7 +99,7 @@ int test_mode() { printf("\n"); RUN_CMD({"gcc", "tests/main.c", LOGGER_C, "-o", "output/test.o", NULL}); - char* args[] = {LOG_O, "./output/test.o", NULL}; + char* args[] = {"./output/test.o", NULL}; print_cmd(args); execvp(args[0], args); return 0; diff --git a/src/engine.c b/src/engine.c index 3c55146..e33a256 100644 --- a/src/engine.c +++ b/src/engine.c @@ -16,35 +16,35 @@ struct sqrstr sqr_to_str(int i) { int main(void) { mqd_t logging = mq_open("/logs", O_WRONLY); - log_infof("Hello World"); - // mqd_t tx = mq_open("/engine_to_server", O_WRONLY); - // mqd_t rx = mq_open("/server_to_engine", O_RDONLY); - // - // while (1) { - // char* x = read_queue(rx); - // log_infof("Engine received: %s", x); - // free(x); - // - // send_queue(tx, "Sending", 8); - // - // moves_t moves = moves_init(); - // position_t position = position_starting(); - // - // get_moves(&moves, position); - // char buf[128]; - // for (int i = 0; i <= moves.length / 32; i++) { - // for (int ii = 0; ii < 32; ii++) { - // if (moves.length <= 4 * i + ii) continue; - // struct sqrstr from_str = sqr_to_str(moves.moves[4 * i + ii].from); - // struct sqrstr to_str = sqr_to_str(moves.moves[4 * i + ii].to); - // buf[4 * ii + 0] = from_str.data[0]; - // buf[4 * ii + 1] = from_str.data[1]; - // buf[4 * ii + 2] = to_str.data[0]; - // buf[4 * ii + 3] = to_str.data[1]; - // } - // send_queue(tx, buf, sizeof(buf)); - // } - // } + mqd_t tx = mq_open("/engine_to_server", O_WRONLY); + mqd_t rx = mq_open("/server_to_engine", O_RDONLY); + + while (1) { + char* x = read_queue(rx); + log_infof("Engine received: %s", x); + free(x); + + send_queue(tx, "Sending", 8); + + moves_t moves = moves_init(); + position_t position = position_starting(); + + get_moves(&moves, position); + char buf[128]; + for (int i = 0; i <= moves.length / 32; i++) { + for (int ii = 0; ii < 32; ii++) { + if (moves.length <= 4 * i + ii) continue; + struct sqrstr from_str = sqr_to_str(moves.moves[4 * i + ii].from); + struct sqrstr to_str = sqr_to_str(moves.moves[4 * i + ii].to); + buf[4 * ii + 0] = from_str.data[0]; + buf[4 * ii + 1] = from_str.data[1]; + buf[4 * ii + 2] = to_str.data[0]; + buf[4 * ii + 3] = to_str.data[1]; + buf[4 * ii + 4] = 0; + } + send_queue(tx, buf, sizeof(buf)); + } + } return 0; } @@ -2,6 +2,7 @@ #define IPC_C #include <mqueue.h> +#include <stdio.h> #include <stdlib.h> struct mq_attr attr = { @@ -15,6 +16,7 @@ char* read_queue(mqd_t target) { char* buf = malloc(attr.mq_msgsize); int n = mq_receive(target, buf, attr.mq_msgsize, NULL); if (n == -1) { + perror("mq_receive"); free(buf); return NULL; } @@ -11,6 +11,7 @@ int main(int argc, char** argv) { char* new_argv[] = {argv[i], NULL}; execvp(argv[i], new_argv); } + sleep(1); } while (1) { diff --git a/src/logger/logger.h b/src/logger/logger.h index ed265e9..d79c09b 100644 --- a/src/logger/logger.h +++ b/src/logger/logger.h @@ -11,14 +11,14 @@ #define log_warnf(...) do { \ char log_buf[1024]; \ log_buf[0] = 'w'; \ - snprintf(log_buf, 1023, __VA_ARGS__); \ + snprintf(log_buf + 1, 1023, __VA_ARGS__); \ send_log(logging, log_buf, 1024) \ } while(0); #define log_errof(...) do { \ char log_buf[1024]; \ log_buf[0] = 'e'; \ - snprintf(log_buf, 1023, __VA_ARGS__); \ + snprintf(log_buf + 1, 1023, __VA_ARGS__); \ send_log(logging, log_buf, 1024) \ } while(0); diff --git a/src/server.c b/src/server.c index 8b39d38..bf26970 100644 --- a/src/server.c +++ b/src/server.c @@ -31,9 +31,17 @@ int main(void) { .sin_port = htons(PORT) }; - bind(server_fd, (struct sockaddr *)&addr, sizeof(addr)); - listen(server_fd, 16); - log_infof("Listening on %d\n", PORT); + if (bind(server_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + perror("bind"); + return 1; + } + + if (listen(server_fd, 16) < 0) { + perror("listen"); + return 1; + } + + log_infof("Listening on %d", PORT); for (;;) { int client = accept(server_fd, NULL, NULL); @@ -74,7 +82,7 @@ int main(void) { ); send(client, response, strlen(response), 0); - printf("WebSocket connected\n"); + log_infof("WebSocket connected\n"); for (;;) { unsigned char hdr[2]; @@ -106,14 +114,15 @@ int main(void) { for (unsigned i = 0; i < len; i++) payload[i] ^= mask[i % 4]; - char* payload_ptr = payload; - struct strs response = handle_input(tx, rx, payload_ptr, len); - + char* payload_ptr = (char*)payload; + struct strs response = handle_input(logging, tx, rx, payload_ptr, len); + unsigned char out[128]; out[0] = 0x81; for (int i = 0; i < response.count; i++) { struct str item = response.data[i]; out[1] = item.len; + assert(item.len <= 125); memcpy(out + 2, item.msg, item.len); send(client, out, item.len + 2, 0); diff --git a/src/server/comms.c b/src/server/comms.c index 5580ef5..a25752b 100644 --- a/src/server/comms.c +++ b/src/server/comms.c @@ -1,5 +1,7 @@ #include <assert.h> +#include <string.h> #include "../ipc.c" +#include "../logger/logger.h" struct str { char msg[126]; @@ -42,9 +44,8 @@ void add_str(struct strs* strs, char* str) { strs->count++; } -struct strs handle_input(mqd_t tx, mqd_t rx, char* payload, int len) { - printf("Message: %.*s", len, payload); - fflush(stdout); +struct strs handle_input(mqd_t logging, mqd_t tx, mqd_t rx, char* payload, int len) { + log_infof("Received %.*s from frontend", len, payload); send_queue(tx, payload, len); char* buf = read_queue(rx); @@ -60,13 +61,6 @@ struct strs handle_input(mqd_t tx, mqd_t rx, char* payload, int len) { n--; if (n == 0) n = get_num_messages(rx); } - printf(" -> done\n"); - // if (buf) free(buf); - // - // buf = read_queue(rx); - // printf("%p\n", buf); - // add_str(&output, buf); - // if (buf) free(buf); - + log_infof("Handled the request"); return output; } |
