XROAD
mdata_book.h
Go to the documentation of this file.
1 #pragma once
7 #include <cache/xroad_objects.h>
8 #include <stdbool.h>
9 
10 #include "mdata_proto.h"
11 
12 typedef struct mdata_book_s mdata_book_t;
13 
14 typedef enum
15 {
16  book_order_add = 1,
17  book_order_update = 2,
18  book_order_delete = 3,
19  book_add = 4,
20  book_update = 5,
21  book_delete = 6,
22  book_order_filled = 7
23 } mdata_book_action_t;
24 
25 
26 #ifdef __cplusplus
27 extern "C"
28 {
29 #endif
35 mdata_book_t* mdata_book_create(xroad_instr_t* instr);
36 
41 void mdata_book_destroy(mdata_book_t* book);
42 
47 void mdata_book_clear(mdata_book_t* book);
48 
58 int32_t mdata_book_update(mdata_book_t* book, mdata_book_action_t action, xroad_price_t price, xroad_qty_t qty,
59  xroad_side_t side, xroad_timestamp_t ts);
60 
71 int32_t mdata_book_order_update(mdata_book_t* book, mdata_book_action_t action, int64_t order_id,
72  xroad_price_t price, xroad_qty_t qty, xroad_side_t side, xroad_timestamp_t ts);
73 
79 xroad_instr_t* mdata_book_get_instr(mdata_book_t* book);
80 
85 bool mdata_book_is_crossed(mdata_book_t* book);
86 
91 bool mdata_book_is_empty(mdata_book_t* book);
92 
96 typedef void (*book_order_func_t)(xroad_object_id_t, int64_t, xroad_side_t, xroad_price_t, xroad_qty_t, xroad_timestamp_t ts, void*);
97 
102 void mdata_book_get_orders(mdata_book_t* book, book_order_func_t cback, void* ctx);
103 
107 typedef void (*book_level_func_t)(int32_t, xroad_side_t, xroad_price_t, xroad_qty_t, void*);
108 
113 void mdata_book_get_levels(mdata_book_t* book, xroad_side_t side, int32_t num, book_level_func_t cback, void* ctx);
114 
119 void mdata_book_print(mdata_book_t* book);
120 
126 void mdata_quote_update_book(mdata_quote_t* quote, mdata_book_t* book);
127 
134 void mdata_book_20_update_book(mdata_book_20_t* book_20, mdata_book_t* book, bool auto_fix);
135 
136 /*
137  * gets quote flag if quote were changed after updat
138  */
139 int mdata_book_get_qflag(mdata_book_t* book);
140 
141 /*
142  * resets quote flag
143  */
144 void mdata_book_reset_qflag(mdata_book_t* book);
145 
146 #ifdef __cplusplus
147 }
148 #endif
void mdata_book_print(mdata_book_t *book)
bool mdata_book_is_crossed(mdata_book_t *book)
void mdata_book_get_orders(mdata_book_t *book, book_order_func_t cback, void *ctx)
void mdata_book_get_levels(mdata_book_t *book, xroad_side_t side, int32_t num, book_level_func_t cback, void *ctx)
mdata_book_t * mdata_book_create(xroad_instr_t *instr)
void mdata_quote_update_book(mdata_quote_t *quote, mdata_book_t *book)
void mdata_book_20_update_book(mdata_book_20_t *book_20, mdata_book_t *book, bool auto_fix)
bool mdata_book_is_empty(mdata_book_t *book)
int32_t mdata_book_update(mdata_book_t *book, mdata_book_action_t action, xroad_price_t price, xroad_qty_t qty, xroad_side_t side, xroad_timestamp_t ts)
void mdata_book_destroy(mdata_book_t *book)
void(* book_order_func_t)(xroad_object_id_t, int64_t, xroad_side_t, xroad_price_t, xroad_qty_t, xroad_timestamp_t ts, void *)
Definition: mdata_book.h:96
void(* book_level_func_t)(int32_t, xroad_side_t, xroad_price_t, xroad_qty_t, void *)
Definition: mdata_book.h:107
int32_t mdata_book_order_update(mdata_book_t *book, mdata_book_action_t action, int64_t order_id, xroad_price_t price, xroad_qty_t qty, xroad_side_t side, xroad_timestamp_t ts)
void mdata_book_clear(mdata_book_t *book)
xroad_instr_t * mdata_book_get_instr(mdata_book_t *book)
Definition: mdata_proto.h:107
Definition: mdata_proto.h:118
CAUTION: do not change this file - it is autogenerated.
int64_t xroad_qty_t
Definition: xroad_objects_types.h:159