summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAargh Rai <aargh.rai+git@gmail.com>2026-05-29 13:57:07 +0530
committerAargh Rai <aargh.rai+git@gmail.com>2026-05-29 13:57:07 +0530
commit26df2f9a8cbe3a249d54baa090edaf6a13ec883d (patch)
tree736318d0b4f168660d8e7dab843c8002555db41f /src
parentc38475eb5d82f6e587faf2956a7eba3085890e99 (diff)
crazy working logging system, we are back to where we were yesterday, just with logs
Diffstat (limited to 'src')
-rw-r--r--src/engine.c58
-rw-r--r--src/ipc.c2
-rw-r--r--src/log.c1
-rw-r--r--src/logger/logger.h4
-rw-r--r--src/server.c23
-rw-r--r--src/server/comms.c16
6 files changed, 55 insertions, 49 deletions
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;
}
diff --git a/src/ipc.c b/src/ipc.c
index a55e22e..9c12ed4 100644
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -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;
}
diff --git a/src/log.c b/src/log.c
index f921d52..53198cd 100644
--- a/src/log.c
+++ b/src/log.c
@@ -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;
}