XROAD
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
order.h File Reference
#include "order_fwd.h"
#include <common/xroad_string.h>
#include <common/xroad_date.h>
#include <cache/xroad_objects.h>
#include <stdbool.h>
Include dependency graph for order.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  order_replace_args_t
 
struct  order_create_args_t
 
struct  order_cancel_args_t
 
struct  order_callback_t
 

Macros

#define order_create(instr, side, callback, ...)
 
#define order_cancel(o, ...)
 
#define order_replace(o, ...)
 

Enumerations

enum  order_state_t {
  order_state_initial = 0 , order_state_active = 1 , order_state_destroyed = 2 , order_state_canceled = 3 ,
  order_state_rejected = 4 , order_state_filled = 5 , order_state_expired = 6 , order_state_awaiting_active = 7 ,
  order_state_awaiting_destroy = 8 , order_state_awaiting_cancel = 9 , order_state_awaiting_replace = 10
}
 
enum  order_exec_t { order_exec_check_role = 1 , order_exec_delay_replace = 2 , order_exec_fix_qty = 4 , order_exec_replace_send = 8 }
 
enum  order_replace_mask_t { order_replace_qty = 1 , order_replace_price = 2 }
 

Functions

xroad_str_t order_state_to_str (order_state_t state)
 
order_t * order_create_ex (xroad_instr_t *instr, xroad_side_t side, order_callback_t callback, xroad_str_t name, xroad_str_t account, xroad_str_t client_code, xroad_ord_type_t type, xroad_qty_t qty, xroad_price_t price, xroad_str_t trader_book, int32_t flags, xroad_tif_t tif, xroad_date_t till_date, uint32_t max_cancel_attempts, uint32_t cancel_timeout_ms, int32_t exec_flags, xroad_str_t comment, void *ctx, xroad_str_t *err)
 
xroad_errno_t order_destroy (order_t *o, bool force)
 
xroad_errno_t order_restore (order_t *o, xroad_order_t *xo)
 
xroad_errno_t order_send (order_t *o)
 
xroad_errno_t order_cancel_ex (order_t *o, bool send)
 
xroad_errno_t order_pre_trade_ack (order_t *o, xroad_pre_trade_t *pre_trade, xroad_pre_trade_status_t status)
 
xroad_errno_t order_replace_ex (order_t *o, xroad_qty_t qty, xroad_price_t price, int32_t mask)
 
void order_reset (order_t *o)
 
xroad_str_t order_get_name (const order_t *o)
 
xroad_instr_t * order_get_instr (const order_t *o)
 
xroad_side_t order_get_side (const order_t *o)
 
xroad_qty_t order_get_qty (const order_t *o)
 
xroad_qty_t order_get_leaves_qty (const order_t *o)
 
xroad_price_t order_get_price (const order_t *o)
 
xroad_price_t order_get_replace_price (const order_t *o)
 
xroad_qty_t order_get_replace_qty (const order_t *o)
 
void * order_get_ctx (const order_t *o)
 
order_state_t order_get_state (const order_t *o)
 
xroad_qty_t order_get_total_qty (const order_t *o)
 
xroad_price_t order_get_avg_price (const order_t *o)
 
xroad_ord_type_t order_get_type (const order_t *o)
 
xroad_str_t order_print (const order_t *o)
 
xroad_order_t * order_get_xorder (const order_t *o)
 
int32_t order_get_flags (const order_t *o)
 
void order_log_debug (order_t *o, char *title)
 
uint64_t * order_trace_init (xroad_str_t path, size_t max_rec)
 Allocates and initializes structures for orders tracing. More...
 

Detailed Description

Macro Definition Documentation

◆ order_cancel

#define order_cancel (   o,
  ... 
)
Value:
({ \
order_cancel_args_t args = {.send = true, ## __VA_ARGS__}; \
order_cancel_ex(o, args.send); \
})

◆ order_create

#define order_create (   instr,
  side,
  callback,
  ... 
)
Value:
({ \
xroad_str_t def_account = xroad_str("XXXX"); \
order_create_args_t args = {.account = def_account, .type = xroad_ord_type_limit, .tif = xroad_tif_day, \
__VA_ARGS__}; \
if (args.till_date.year == 0 && args.till_date.month == 0 && args.till_date.day == 0) \
{ \
args.till_date = xroad_date_null; \
} \
order_create_ex(instr, side, callback, args.name, args.account, args.client_code, args.type, args.qty, \
args.price, args.trader_book, args.flags, args.tif, args.till_date, args.max_cancel_attempts, \
args.cancel_timeout_ms, args.exec_flags, args.comment, args.ctx, args.err); \
})
@ xroad_ord_type_limit
limit order
Definition: xroad_objects_types.h:256
#define xroad_str(str)
Definition: xroad_string.h:165

◆ order_replace

#define order_replace (   o,
  ... 
)
Value:
({ \
xroad_qty_t def_qty = -99999; \
xroad_price_t def_price = -99999.0; \
order_replace_args_t args = (order_replace_args_t){.qty = def_qty, .price = def_price, ## __VA_ARGS__}; \
int32_t mask = 0; \
mask |= (args.qty == def_qty) ? 0 : order_replace_qty; \
mask |= !xroad_dbl_cmp(args.price, def_price) ? 0 : order_replace_price; \
order_replace_ex(o, args.qty, args.price, mask); \
})
@ order_replace_price
replace price
Definition: order.h:51
@ order_replace_qty
replace qty
Definition: order.h:50
Definition: order.h:65
#define xroad_dbl_cmp(lhs, rhs)
Definition: xroad_aux.h:51

Enumeration Type Documentation

◆ order_replace_mask_t

replace mask

Enumerator
order_replace_qty 

replace qty

order_replace_price 

replace price

◆ order_state_t

order state

Enumerator
order_state_initial 

order is in initial state

order_state_active 

order is in active state

order_state_destroyed 

order is in destroyed state

order_state_canceled 

order is in canceled state

order_state_rejected 

order is in rejected state

order_state_filled 

order is in filled state

order_state_expired 

order is in expired state

order_state_awaiting_active 

order is in awaiting active state

order_state_awaiting_destroy 

order is in awaiting destroyed state

order_state_awaiting_cancel 

order is in awaiting cancel state

order_state_awaiting_replace 

order is in awaiting replace state

Function Documentation

◆ order_cancel_ex()

xroad_errno_t order_cancel_ex ( order_t *  o,
bool  send 
)

cancel order. order will be cancelled

Parameters
[in]o- order to cancel
[in]send- if - true, cancel will be send to exchange, else just switch order to awaiting_cancel state
Returns
XROAD_OK - cancel operation applied, else failed

◆ order_create_ex()

order_t* order_create_ex ( xroad_instr_t *  instr,
xroad_side_t  side,
order_callback_t  callback,
xroad_str_t  name,
xroad_str_t  account,
xroad_str_t  client_code,
xroad_ord_type_t  type,
xroad_qty_t  qty,
xroad_price_t  price,
xroad_str_t  trader_book,
int32_t  flags,
xroad_tif_t  tif,
xroad_date_t  till_date,
uint32_t  max_cancel_attempts,
uint32_t  cancel_timeout_ms,
int32_t  exec_flags,
xroad_str_t  comment,
void *  ctx,
xroad_str_t err 
)

create new order

Parameters
[in]instr- instrument
[in]side- order side
[in]callback- order callback
[in]name- order name. Must be unique. Can be null, in this case name will be autogenerated
[in]account- order account
[in]client_code- order client_code
[in]type- order type, limit/market
[in]qty- order qty
[in]price- order price
[in]trader_book- order book
[in]flags- order flags (see xroad_order_flags_t for details)
[in]tif- order time-in-force
[in]till_date- till date (for GTD only)
[in]max_cancel_attempts- max cancel attempts
[in]cancel_timeout_ms- cancel timeout in milliseconds
[in]exec_flags- order exec flags, changed behaviour (see order_exec_t)
[in]comment- order comment, which will be sent with order
[in]ctx- order ctx
[out]err- error description is any
Returns
pointer to order, in case of error - NULL (see errno)

◆ order_destroy()

xroad_errno_t order_destroy ( order_t *  o,
bool  force 
)

destroy order

Parameters
[in]o- order to destory
[in]force- force order destruction (don't wait for exchange ack, if any)
Returns
XROAD_OK - destroy operation applied, else failed

◆ order_get_avg_price()

xroad_price_t order_get_avg_price ( const order_t *  o)

get order avg price

Parameters
[in]o- order
Returns
order avg price

◆ order_get_ctx()

void* order_get_ctx ( const order_t *  o)

get order context

Parameters
[in]o- order
Returns
order context

◆ order_get_flags()

int32_t order_get_flags ( const order_t *  o)

get order flags

Parameters
[in]o- order
Returns
order flags

◆ order_get_instr()

xroad_instr_t* order_get_instr ( const order_t *  o)

get order instrument

Parameters
[in]o- order
Returns
order instrument

◆ order_get_leaves_qty()

xroad_qty_t order_get_leaves_qty ( const order_t *  o)

get order leaves qty

Parameters
[in]o- order
Returns
order qty

◆ order_get_name()

xroad_str_t order_get_name ( const order_t *  o)

get order name

Parameters
[in]o- order
Returns
order name

◆ order_get_price()

xroad_price_t order_get_price ( const order_t *  o)

get order price

Parameters
[in]o- order
Returns
order price

◆ order_get_qty()

xroad_qty_t order_get_qty ( const order_t *  o)

get order qty

Parameters
[in]o- order
Returns
order qty

◆ order_get_replace_price()

xroad_price_t order_get_replace_price ( const order_t *  o)

get order pending price (replace)

Parameters
[in]o- order
Returns
order replace price

◆ order_get_replace_qty()

xroad_qty_t order_get_replace_qty ( const order_t *  o)

get order pending qty (replace)

Parameters
[in]o- order
Returns
order replace qty

◆ order_get_side()

xroad_side_t order_get_side ( const order_t *  o)

get order side

Parameters
[in]o- order
Returns
order side

◆ order_get_state()

order_state_t order_get_state ( const order_t *  o)

get order state

Parameters
[in]o- order
Returns
order state

◆ order_get_total_qty()

xroad_qty_t order_get_total_qty ( const order_t *  o)

get order total qty

Parameters
[in]o- order
Returns
order total qty

◆ order_get_type()

xroad_ord_type_t order_get_type ( const order_t *  o)

get order type

Parameters
[in]o- order
Returns
order type

◆ order_get_xorder()

xroad_order_t* order_get_xorder ( const order_t *  o)

return xroad_order_t* pointer, if any

Parameters
[in]o- pointer to order return xroad_order_t* pointer if any

◆ order_pre_trade_ack()

xroad_errno_t order_pre_trade_ack ( order_t *  o,
xroad_pre_trade_t *  pre_trade,
xroad_pre_trade_status_t  status 
)
Parameters
[in]o- order
[in]pre_trade- pre_trade
[in]status- if - xroad_pre_trade_status_accept, accept, else reject
Returns
XROAD_OK - pre_trade_ack sent, else failed

◆ order_print()

xroad_str_t order_print ( const order_t *  o)

print order

Parameters
[in]o- order to print
Returns
order strint representation

◆ order_replace_ex()

xroad_errno_t order_replace_ex ( order_t *  o,
xroad_qty_t  qty,
xroad_price_t  price,
int32_t  mask 
)

replace order

Parameters
[in]o- order to replace
[in]qty- order new qty
[in]price- order new price
[in]mask- replace mask (see order_replace_mask_t)
[in]send- send order, if qty > 0
Returns
XROAD_OK - replace operation applied, else failed

◆ order_reset()

void order_reset ( order_t *  o)

reset order statistic

Parameters
[in]o- order to reset

◆ order_restore()

xroad_errno_t order_restore ( order_t *  o,
xroad_order_t *  xo 
)

restore order from xorder obj

Parameters
[in]o- order
[in]xo- xroad_order_t
Returns
XROAD_OK - operation applied, else failed

◆ order_send()

xroad_errno_t order_send ( order_t *  o)

send order. order will be send to exchange

Parameters
[in]o- order to send
Returns
XROAD_OK - send operation applied, else failed

◆ order_state_to_str()

xroad_str_t order_state_to_str ( order_state_t  state)

convert order state to string representation

Parameters
[in]state- order state
Returns
string representation

◆ order_trace_init()

uint64_t* order_trace_init ( xroad_str_t  path,
size_t  max_rec 
)

Allocates and initializes structures for orders tracing.

Parameters
pathmemory-mapped file path
max_recmaximum number of records to be written
Returns
pointer to correlation ID. The ID must be populated by a client before calling the Order library.