fujuntang
2021-08-11 68d23225a38a35f1325eb39fa4ed5a005d5de473
src/net/net_mod_socket_wrapper.h
@@ -18,6 +18,7 @@
#endif
 
typedef void (*recvandsend_callback_wrapper_fn)(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void * user_data);
@@ -28,12 +29,16 @@
 */
void * net_mod_socket_open();
/**
 * @brief 关闭 net_mod_socket
 */
void net_mod_socket_close(void *_sockt);
/**
 * @brief 停止 net_mod_socket
 */
int net_mod_socket_stop(void *_sockt);
/**
 * @brief 绑定端口到socket, 如果不绑定则系统自动分配一个
@@ -122,51 +127,6 @@
/**
 * @brief 接受消息,并把callback函数返回的数据发送回对方,一直等待完成
 *
 * @param recvbuf 接受到的消息存放的缓存地址,该buf使用完成后需要手动释放
 * @param recvsize 接受到消息的长度
 * @param key 从谁哪里收到的信息
 * @callback  void (*recv_callback_fn)(void **sendbuf, int *sendsize)
 *            sendbuf 和 sendsize是callbak_fn回调函数的返回值, 分别表示返回的数据,和返回数据的长度。
 *
 * @return 0是成功, 其他值是失败的错误码
 */
int net_mod_socket_recvandsend(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback);
/**
 * @brief 接受消息,并把callback函数返回的数据发送回对方,在指定的时间内即使没有完成也返回
 *
 * @param recvbuf 接受到的消息存放的缓存地址,该buf使用完成后需要手动释放
 * @param recvsize 接受到消息的长度
 * @param key 从谁哪里收到的信息
 * @callback  void (*recv_callback_fn)(void **sendbuf, int *sendsize)
 *            sendbuf 和 sendsize是callbak_fn回调函数的返回值, 分别表示返回的数据,和返回数据的长度。
 *
 * @param sec 秒
 * @param nsec 纳秒
 *
 * @return 0是成功, 其他值是失败的错误码
 */
int net_mod_socket_recvandsend_timeout(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
                                      int sec, int nsec ) ;
/**
 * @brief 接受消息,并把callback函数返回的数据发送回对方,无论成功与否立刻返回
 *
 * @param recvbuf 接受到的消息存放的缓存地址,该buf使用完成后需要手动释放
 * @param recvsize 接受到消息的长度
 * @param key 从谁哪里收到的信息
 * @callback  void (*recv_callback_fn)(void **sendbuf, int *sendsize)
 *            sendbuf 和 sendsize是callbak_fn回调函数的返回值, 分别表示返回的数据,和返回数据的长度。
 *
 * @return 0是成功, 其他值是失败的错误码
 */
int net_mod_socket_recvandsend_nowait(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback) ;
/**
 * @brief 跨机器发送消息并接受返回的应答消息,直到发送完成才返回
@@ -205,6 +165,56 @@
  net_mod_recv_msg_t ** recv_arr, int *recv_arr_size, int timeout);
/**
 * @brief 接受消息,并把callback函数返回的数据发送回对方,一直等待完成
 *
 * @callback  void (*recvandsend_callback_wrapper_fn)(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void * user_data)
 *                  @recvbuf 收到的数据, 该recvbuf使用完成后需要手动释放
 *                  @recvsize 收到的数据的大小
 *                  @key 接受数据并发送数据的对象
 *                  @sendbuf 存储返回值的地址,表示返回的数据
 *                  @sendsize 存储返回值的地址, 返回数据的长度
 *
 * @return 0是成功, 其他值是失败的错误码
 */
int net_mod_socket_recvandsend(void *_socket,  recvandsend_callback_wrapper_fn callback, void * user_data);
/**
 * @brief 接受消息,并把callback函数返回的数据发送回对方,在指定的时间内即使没有完成也返回
 *
 * @callback  void (*recvandsend_callback_wrapper_fn)(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void * user_data)
 *                  @recvbuf 收到的数据, 该recvbuf使用完成后需要手动释放
 *                  @recvsize 收到的数据的大小
 *                  @key 接受数据并发送数据的对象
 *                  @sendbuf 存储返回值的地址,表示返回的数据
 *                  @sendsize 存储返回值的地址, 返回数据的长度
 *
 * @param sec 秒
 * @param nsec 纳秒
 *
 * @return 0是成功, 其他值是失败的错误码
 */
int net_mod_socket_recvandsend_timeout(void *_socket, recvandsend_callback_wrapper_fn callback,
                                       int sec, int nsec, void * user_data ) ;
/**
 * @brief 接受消息,并把callback函数返回的数据发送回对方,无论成功与否立刻返回
 *
 * @callback  void (*recvandsend_callback_wrapper_fn)(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void * user_data)
 *                  @recvbuf 收到的数据, 该recvbuf使用完成后需要手动释放
 *                  @recvsize 收到的数据的大小
 *                  @key 接受数据并发送数据的对象
 *                  @sendbuf 存储返回值的地址,表示返回的数据
 *                  @sendsize 存储返回值的地址, 返回数据的长度
 *
 * @return 0是成功, 其他值是失败的错误码
 */
int net_mod_socket_recvandsend_nowait(void *_socket, recvandsend_callback_wrapper_fn callback, void * user_data) ;
/**
 * @brief 跨机器发送消息并接受返回的应答消息,不管是否发送完成立刻返回
 *
@@ -235,7 +245,7 @@
   *
   * @return 成功发布的节点的个数
   */
int net_mod_socket_pub(void *_sockt, net_node_t *node_arr, int node_arr_len, char *topic, int topic_size, void *content, int content_size);
int net_mod_socket_pub(void *_sockt, net_node_t *node_arr, int node_arr_len, const char *topic, int topic_size, const void *content, int content_size);
/**
@@ -250,7 +260,7 @@
  *
  * @return 成功发布的节点的个数
  */
int net_mod_socket_pub_timeout(void *_sockt, net_node_t *node_arr, int node_arr_len, char *topic, int topic_size, void *content, int content_size, int msec);
int net_mod_socket_pub_timeout(void *_sockt, net_node_t *node_arr, int node_arr_len, const char *topic, int topic_size, const void *content, int content_size, int msec);
/**
@@ -264,7 +274,7 @@
  *
  * @return 成功发布的节点的个数
  */
int net_mod_socket_pub_nowait(void *_sockt, net_node_t *node_arr, int node_arr_len, char *topic, int topic_size, void *content, int content_size);
int net_mod_socket_pub_nowait(void *_sockt, net_node_t *node_arr, int node_arr_len, const char *topic, int topic_size, const void *content, int content_size);
/**
 * @brief 订阅感兴趣主题的消息