XROAD
mdata_book.h File Reference
#include <cache/xroad_objects.h>
#include <stdbool.h>
#include "mdata_proto.h"
Include dependency graph for mdata_book.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef struct mdata_book_s mdata_book_t
 
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 *)
 
typedef void(* book_level_func_t) (int32_t, xroad_side_t, xroad_price_t, xroad_qty_t, void *)
 

Enumerations

enum  mdata_book_action_t {
  book_order_add = 1 , book_order_update = 2 , book_order_delete = 3 , book_add = 4 ,
  book_update = 5 , book_delete = 6 , book_order_filled = 7
}
 

Functions

mdata_book_t * mdata_book_create (xroad_instr_t *instr)
 
void mdata_book_destroy (mdata_book_t *book)
 
void mdata_book_clear (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)
 
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)
 
xroad_instr_t * mdata_book_get_instr (mdata_book_t *book)
 
bool mdata_book_is_crossed (mdata_book_t *book)
 
bool mdata_book_is_empty (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)
 
void mdata_book_print (mdata_book_t *book)
 
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)
 
int mdata_book_get_qflag (mdata_book_t *book)
 
void mdata_book_reset_qflag (mdata_book_t *book)
 

Detailed Description

Typedef Documentation

◆ book_level_func_t

typedef void(* book_level_func_t) (int32_t, xroad_side_t, xroad_price_t, xroad_qty_t, void *)

map entry free function

◆ book_order_func_t

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 *)

map entry free function

Function Documentation

◆ mdata_book_20_update_book()

void mdata_book_20_update_book ( mdata_book_20_t book_20,
mdata_book_t *  book,
bool  auto_fix 
)

converts

See also
mdata_book_t to
mdata_book_20_t
Parameters
[out]book- pointer to mdata_book_20_t
[in]book- pointer to mdata_book_t
[in]auto_fix- if true fixes crossed book

◆ mdata_book_clear()

void mdata_book_clear ( mdata_book_t *  book)

removes all book entries

Parameters
[in]book- pointer to book

◆ mdata_book_create()

mdata_book_t* mdata_book_create ( xroad_instr_t *  instr)

creates book with dynamic qty of levels

Parameters
[in]instr- book instrument returns pointer to book

◆ mdata_book_destroy()

void mdata_book_destroy ( mdata_book_t *  book)

destroys book

Parameters
[in]book- pointer to book

◆ mdata_book_get_instr()

xroad_instr_t* mdata_book_get_instr ( mdata_book_t *  book)

gets instrument of the book

Parameters
[in]book- pointer to book
Returns
instument of the book

◆ mdata_book_get_levels()

void mdata_book_get_levels ( mdata_book_t *  book,
xroad_side_t  side,
int32_t  num,
book_level_func_t  cback,
void *  ctx 
)

returns true if best bid >= best ask

Parameters
[in]book- pointer to book

◆ mdata_book_get_orders()

void mdata_book_get_orders ( mdata_book_t *  book,
book_order_func_t  cback,
void *  ctx 
)

returns true if best bid >= best ask

Parameters
[in]book- pointer to book

◆ mdata_book_is_crossed()

bool mdata_book_is_crossed ( mdata_book_t *  book)

returns true if best bid >= best ask

Parameters
[in]book- pointer to book

◆ mdata_book_is_empty()

bool mdata_book_is_empty ( mdata_book_t *  book)

returns true if book is empty

Parameters
[in]book- pointer to book

◆ mdata_book_order_update()

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 
)

updates book with new data, sorts levels

Parameters
[in]book- pointer to book
[in]action- update action
[in]order_id- id of order
[in]price- the price
[in]qty- the quantity
[in]side- side[buy=1, sell=2]
Returns
1 - if best bid or best aks have changed, otherwise 0

◆ mdata_book_print()

void mdata_book_print ( mdata_book_t *  book)

prints book in log with debug log levels

Parameters
[in]book- pointer to book

◆ mdata_book_update()

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 
)

updates book with new data, sorts levels

Parameters
[in]book- pointer to book
[in]action- update action
[in]price- the price
[in]qty- the quantity
[in]side- side[buy=1, sell=2]
Returns
1 - if best bid or best aks have changed, otherwise 0

◆ mdata_quote_update_book()

void mdata_quote_update_book ( mdata_quote_t quote,
mdata_book_t *  book 
)

converts mdata_book_t to mdata_quote_t

Parameters
[out]book- quote pointer to mdata_quote_t
[in]book- pointer to mdata_book_t