#ifndef ASYNC_MSG_H
#define ASYNC_MSG_H
#include "util.h"
#include "tool.h"

#define GATE_MAX 8
#define RETRY_COUNT 3
#define GATE_ACK_TIMEOUT 500

/**
 * 写入异步命令
 *
 * @param[cookid] json 报文中mi的值
 * @param[data] 写入数据指针，函数调用完可直接free此内存
 * @param[size] 写入数据长度
 * @retval  0：写入成功;-1：写入失败
 * @par 标识符
 *      保留
 * @par 其它
 *      保留
 * @par 修改日志
 *      张国宏于2019-08-23创建
 */
int async_msg_add(int cookid,char *data,int size);

/**
 * 当收到一条回复命令，删除异步队列中，存储的命令
 *
 * @param[cookid] json 报文中mi的值
 * @retval  void
 * @par 标识符
 *      保留
 * @par 其它
 *      保留
 * @par 修改日志
 *      张国宏于2019-08-23创建
 */
void async_msg_clean(int cookid);
/**
 * 查询队列中是否由数据需要发出
 *
 * @param[data] 写入数据指针，函数调用完，用户不能free
 * @retval  0：没有任何数据，发送缓存空; >0：数据长度
 * @par 标识符
 *      保留
 * @par 其它
 *      保留
 * @par 修改日志
 *      张国宏于2019-08-23创建
 */
int async_msg_needsend(char **data);

#endif // ASYNC_MSG_H
