XROAD
order_book.h File Reference
#include "order_fwd.h"
#include <props/props.h>
#include <logger/xroad_logger.h>
Include dependency graph for order_book.h:

Go to the source code of this file.

Classes

struct  order_book_callback_t
 
struct  order_book_replace_args_t
 
struct  order_book_create_args_t
 
struct  order_book_destroy_args_t
 

Macros

#define order_book_create(instr, size, ...)
 
#define order_book_replace(order_book, ...)
 
#define order_book_destroy(book, ...)
 

Enumerations

enum  order_book_state_t {
  order_book_state_initial = 0 , order_book_state_active = 1 , order_book_state_destroyed = 2 , order_book_state_canceled = 3 ,
  order_book_state_rejected = 4 , order_book_state_awaiting_active = 5 , order_book_state_awaiting_destroy = 6 , order_book_state_awaiting_cancel = 7 ,
  order_book_state_awaiting_replace = 8 , order_book_state_awaiting_reject = 9 , order_book_state_error = 10 , order_book_state_awaiting_cancel_replace = 11
}
 
enum  order_book_side_t { order_book_side_none = 0 , order_book_side_buy = 1 , order_book_side_sell = 2 , order_book_side_both = 3 }
 
enum  order_book_replace_mask_t { order_book_replace_best_bid = 1 , order_book_replace_best_ask = 2 , order_book_replace_size = 4 , order_book_replace_side = 8 }
 

Functions

xroad_str_t order_book_state_to_str (order_book_state_t state)
 
xroad_str_t order_book_side_to_str (order_book_side_t side)
 
order_book_t * order_book_create_ex (xroad_instr_t *instr, xroad_qty_t size, uint32_t levels, order_book_side_t side, xroad_price_t best_bid, xroad_price_t best_ask, uint32_t price_step, xroad_str_t trader_order_book, xroad_str_t account_buy, xroad_str_t account_sell, xroad_str_t client_code_buy, xroad_str_t client_code_sell, xroad_broker_t *broker_buy, xroad_broker_t *broker_sell, order_book_callback_t cback, xroad_logger_t *logger, xroad_sstream_t *ss, int32_t flags, int32_t order_flags, xroad_currency_t *hedge_currency, uint32_t destroy_timeout_ms)
 
void order_book_print (order_book_t *order_book)
 
xroad_instr_t * order_book_get_instr (order_book_t *order_book)
 
xroad_price_t order_book_get_size (order_book_t *order_book)
 
void * order_book_get_ctx (order_book_t *)
 
const order_t * order_book_get_order (order_book_t *order_book, order_book_side_t side, uint32_t idx)
 
xroad_errno_t order_book_replace_ex (order_book_t *order_book, xroad_qty_t size, order_book_side_t side, xroad_price_t best_bid, xroad_price_t best_ask, int32_t mask, xroad_sstream_t *ss)
 
xroad_errno_t order_book_send (order_book_t *order_book)
 
xroad_errno_t order_book_cancel (order_book_t *order_book)
 
void order_book_destroy_ex (order_book_t *order_book, bool force)
 
order_book_state_t order_book_get_state (order_book_t *order_book)
 

Detailed Description

Macro Definition Documentation

◆ order_book_create

#define order_book_create (   instr,
  size,
  ... 
)
Value:
({ \
order_book_create_args_t args = {.levels = 1, .price_step = 1U, .destroy_timeout_ms = 5000, ## __VA_ARGS__}; \
order_book_create_ex(instr, size, args.levels, args.side, args.best_bid, args.best_ask, \
args.price_step, args.trader_book, args.account_buy, args.account_sell, \
args.client_code_buy, args.client_code_sell, args.broker_buy, args.broker_sell, \
args.cback, args.logger, args.ss, args.flags, args.order_flags, args.hedge_currency, \
args.destroy_timeout_ms); \
})

◆ order_book_destroy

#define order_book_destroy (   book,
  ... 
)
Value:
({ \
order_book_destroy_args_t args = (order_book_destroy_args_t){__VA_ARGS__}; \
order_book_destroy_ex(book, args.force); \
})
Definition: order_book.h:97

◆ order_book_replace

#define order_book_replace (   order_book,
  ... 
)
Value:
({ \
xroad_qty_t def_size = -99999999999; \
xroad_price_t def_price = - 99999999999.0; \
order_book_replace_args_t args = (order_book_replace_args_t){ \
.size = def_size, .best_bid = def_price, .best_ask = def_price, .side = (order_book_side_t)-1, ## __VA_ARGS__}; \
int32_t mask = 0; \
mask |= !xroad_dbl_cmp(args.best_bid, def_price) ? 0 : order_book_replace_best_bid; \
mask |= !xroad_dbl_cmp(args.best_ask, def_price) ? 0 : order_book_replace_best_ask; \
mask |= args.side == (order_book_side_t)-1 ? 0 : order_book_replace_side; \
mask |= args.size == def_size ? 0 : order_book_replace_size; \
order_book_replace_ex(order_book, args.size, args.side, args.best_bid, args.best_ask, mask, args.ss); \
})
@ order_book_replace_best_ask
replace best ask
Definition: order_book.h:59
@ order_book_replace_side
replace side
Definition: order_book.h:61
@ order_book_replace_best_bid
replace best bid
Definition: order_book.h:58
@ order_book_replace_size
replace size
Definition: order_book.h:60
Definition: order_book.h:65
#define xroad_dbl_cmp(lhs, rhs)
Definition: xroad_aux.h:51

Enumeration Type Documentation

◆ order_book_replace_mask_t

replace mask

Enumerator
order_book_replace_best_bid 

replace best bid

order_book_replace_best_ask 

replace best ask

order_book_replace_size 

replace size

order_book_replace_side 

replace side

◆ order_book_state_t

Enumerator
order_book_state_initial 

order_book is in initial state

order_book_state_active 

order_book is in active state

order_book_state_destroyed 

order_book is in destroyed state

order_book_state_canceled 

order_book is in canceled state

order_book_state_rejected 

order_book is in rejected state

order_book_state_awaiting_active 

order_book is in awaiting active state

order_book_state_awaiting_destroy 

order_book is in awaiting destroyed state

order_book_state_awaiting_cancel 

order_book is in awaiting cancel state

order_book_state_awaiting_replace 

order_book is in awaiting replace state

order_book_state_awaiting_reject 

order_book is awaiting to cancel all after reject

order_book_state_error 

order_book is in errorneus state

order_book_state_awaiting_cancel_replace 

order_book is in awaiting cancel/replace state

Function Documentation

◆ order_book_create_ex()

order_book_t* order_book_create_ex ( xroad_instr_t *  instr,
xroad_qty_t  size,
uint32_t  levels,
order_book_side_t  side,
xroad_price_t  best_bid,
xroad_price_t  best_ask,
uint32_t  price_step,
xroad_str_t  trader_order_book,
xroad_str_t  account_buy,
xroad_str_t  account_sell,
xroad_str_t  client_code_buy,
xroad_str_t  client_code_sell,
xroad_broker_t *  broker_buy,
xroad_broker_t *  broker_sell,
order_book_callback_t  cback,
xroad_logger_t *  logger,
xroad_sstream_t *  ss,
int32_t  flags,
int32_t  order_flags,
xroad_currency_t *  hedge_currency,
uint32_t  destroy_timeout_ms 
)

creates new order_book instance

Parameters
[in]instr- instrument
[in]size- order_book size
[in]levels- count of levels at one side
[in]side-order_book side(see order_book_side_t)
[in]best_bid- best bid level price
[in]best_ask- best ask level price
[in]price_step- price increment in terms of tick size
[in]trader_order_book- trader order_book
[in]account_buy- buy account
[in]account_sell- sell account
[in]client_code_buy- client code for buy orders
[in]client_code_sell- client code for sell orders
[in]broker_buy- broker buy
[in]broker_sell- broker sell
[in]cback- order_book callback (see order_book_callback_t)
[in]logger- optional logger instance
[out]ss- stream for error storing
[in]pullout_time- order_book cancel/resend timeout, when trade received
[in]flags- order_book flags (reserved)
[in]order_flags- order flags (see xroad_order_flags_t)
[in]hedge_currency- hedge currency
[in]destroy_timeout_ms- optional destroy timeout
Returns
order_book instance, else NULL (failed)

◆ order_book_get_state()

order_book_state_t order_book_get_state ( order_book_t *  order_book)

return book state

Parameters
[in]order_book- order book instance
Returns
book state

◆ order_book_side_to_str()

xroad_str_t order_book_side_to_str ( order_book_side_t  side)

convert order_book side to string

Parameters
[in]side- side to convert
Returns
string representation

◆ order_book_state_to_str()

xroad_str_t order_book_state_to_str ( order_book_state_t  state)

order book state to string

Parameters
[in]state- order book state
Returns
state string representation