blob: 2c1871b25d51e5e3cfbaf96698b383968566213d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#ifndef ENGINE_MESSAGE_H
#define ENGINE_MESSAGE_H
#include "ipc/moves.h"
#include <stdatomic.h>
typedef struct engine_message {
atomic_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;
ipc_moves_t pv;
ipc_move_t best_move;
ipc_move_t ponder;
struct engine_message *next;
} engine_message_t;
typedef struct {
engine_message_t *oldest_valid;
engine_message_t *newest_valid;
int count;
// mainly for debugging purposes
int popped_count;
int pushed_count;
} engine_message_handler_t;
typedef struct {
engine_message_handler_t **data;
int count;
int capacity;
} engine_messages_t;
void engine_message_handler_init(engine_message_handler_t *handle);
void engine_message_handler_deinit(engine_message_handler_t *handle);
void engine_message_handler_acquire(engine_message_handler_t *handle);
void engine_message_handler_release(engine_message_handler_t *handle);
bool engine_message_handler_can_pop(engine_message_handler_t *handle);
engine_message_t *engine_message_handler_pop(
engine_message_handler_t *handle
);
engine_message_t *engine_message_handler_push(
engine_message_handler_t *handle
);
void engine_messages_init(engine_messages_t *messages);
void engine_messages_deinit(engine_messages_t *messages);
void engine_message_init(engine_message_t *message);
void engine_messages_refresh(engine_messages_t *messages);
void engine_message_mark_ready(engine_message_t *message);
bool engine_message_is_ready(engine_message_t *message);
void engine_message_deinit(engine_message_t *message);
#endif // ENGINE_MESSAGE_H
|