#ifndef IPC_STATE_H #define IPC_STATE_H #include #include "bitboard.h" #include "ipc/moves.h" #include "ipc/engine_message.h" #include "uci/state.h" enum { EVENT_INIT, EVENT_STATE_INITIALISED, EVENT_UCI_STATE_INITIALISED, EVENT_UCI_RUNNING, EVENT_UCI_STOP, EVENT_UCI_QUIT, EVENT_ENGINE_GO, EVENT_ENGINE_RUNNING, EVENT_ENGINE_STOP, EVENTS_COUNT }; typedef struct { atomic_int event; engine_messages_t engine_messages; uci_state_t uci_state; // reset on new game position_t from_position; ipc_moves_t moves; } ipc_state_t; void ipc_state_init(ipc_state_t *state); void ipc_state_deinit(ipc_state_t *state); void ipc_state_game_reset(ipc_state_t *state); void ipc_state_wait_for_event(ipc_state_t *state, size_t event); bool ipc_state_is_event(ipc_state_t *state, size_t event); void ipc_state_set_event(ipc_state_t *state, size_t event); #endif // IPC_STATE_H