2024-11-24 stan
下面我将对三个命令字(CMD_ORDER_DETAIL、CMD_MARKET_LIST和CMD_MARKET_SUMMARY)进行综合分析。
market_name和order_id)参考代码:
static int on_cmd_order_detail(nw_ses *ses, rpc_pkg *pkg, json_t *params)
{
if (json_array_size(params) != 2)
return reply_error_invalid_argument(ses, pkg);
// market
if (!json_is_string(json_array_get(params, 0)))
return reply_error_invalid_argument(ses, pkg);
const char *market_name = json_string_value(json_array_get(params, 0));
market_t *market = get_market(market_name);
if (market == NULL)
return reply_error_invalid_argument(ses, pkg);
// order_id
if (!json_is_integer(json_array_get(params, 1)))
return reply_error_invalid_argument(ses, pkg);
uint64_t order_id = json_integer_value(json_array_get(params, 1));
order_t *order = market_get_order(market, order_id);
json_t *result = NULL;
if (order == NULL) {
result = json_null();
} else {
result = get_order_info(order);
}
int ret = reply_result(ses, pkg, result);
json_decref(result);
return ret;
}
主要数据结构:
// 订单结构
typedef struct order_t {
uint64_t id; // 订单ID
uint32_t type; // 订单类型
uint32_t side; // 买卖方向
uint32_t create_time; // 创建时间
uint32_t update_time; // 更新时间
uint32_t user_id; // 用户ID
char *market; // 市场
mpd_t *price; // 价格
mpd_t *amount; // 数量
mpd_t *left; // 剩余数量
// ...其他字段
} order_t;
主要依赖函数:
get_market():获取市场信息market_get_order():获取订单信息get_order_info():获取订单详情O(1) - 哈希表查询