summaryrefslogtreecommitdiff
path: root/include/ipc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ipc.h')
-rw-r--r--include/ipc.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/include/ipc.h b/include/ipc.h
new file mode 100644
index 0000000..90a2bcc
--- /dev/null
+++ b/include/ipc.h
@@ -0,0 +1,78 @@
+#ifndef IPC_H
+#define IPC_H
+
+// NOT TRUE IPC: I REALISED I AM STUPID AND COULD HAVE JUST USED THREADS
+
+#include <sys/mman.h>
+#include <stdlib.h>
+
+#include "fen.h"
+#include "uci/state.h"
+
+typedef struct {
+ struct uci_move *moves;
+ int count;
+ int capacity;
+} comm_moves;
+
+struct engine_message {
+ int id;
+
+ int ready;
+
+ int depth;
+ int seldepth;
+ int multipv;
+ int score_cp;
+ int nodes;
+ int nps;
+ int hashfull;
+ int tbhits;
+ int time;
+
+ int mate;
+ bool node_limit;
+ comm_moves pv;
+
+ struct uci_move best_move;
+ struct uci_move ponder;
+
+ struct engine_message *next;
+};
+
+typedef struct {
+ struct engine_message **data;
+ int count;
+} engine_messages;
+
+enum { MESSAGE_FILLED, MESSAGE_READ, MESSAGE_PROCESSED };
+typedef struct {
+ engine_messages *engine_messages;
+ uci_state state;
+ int uci_state_initialized;
+ int uci_message_ready;
+ struct fen_load from_position;
+ comm_moves moves;
+} comms;
+
+comm_moves comm_moves_init();
+void add_comm_move(comm_moves *moves, struct uci_move move);
+
+struct go_args {
+ comm_moves searchmoves;
+ bool ponder;
+ int wtime;
+ int btime;
+ int winc;
+ int binc;
+ int movestogo;
+ int depth;
+ int nodes;
+ int mate;
+ int movetime;
+ bool infinite;
+ int perft;
+};
+bool should_continue(struct engine_message *message, struct go_args* go);
+
+#endif // IPC_H