From 14c345b38d57fd814f217eb8465963a08ca79f7e Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期五, 05 二月 2021 17:41:09 +0800 Subject: [PATCH] update --- src/socket/shm_socket.h | 26 +++++++++++++++++++++----- 1 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/socket/shm_socket.h b/src/socket/shm_socket.h index 198d4da..516a343 100644 --- a/src/socket/shm_socket.h +++ b/src/socket/shm_socket.h @@ -5,6 +5,7 @@ #include "usg_typedef.h" #include "shm_queue.h" #include "lock_free_queue.h" +#include <functional> enum shm_socket_type_t { @@ -14,10 +15,14 @@ }; +#define BUS_ACTION_STOP 1 + typedef struct shm_packet_t { int key; size_t size; void * buf; + char uuid[64]; + int action; } shm_packet_t; @@ -33,18 +38,22 @@ LockFreeQueue<shm_packet_t> *queue; //self queue LockFreeQueue<shm_packet_t> *remoteQueue; // peer queue + std::map<std::string, shm_packet_t> recvbuf; } shm_socket_t; - +typedef std::function<void(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void *user_data)> recvandsend_callback_fn; size_t shm_socket_remove_keys(int keys[], size_t length); +size_t shm_socket_remove_keys_exclude(int keys[], size_t length); shm_socket_t *shm_open_socket(shm_socket_type_t socket_type); int shm_close_socket(shm_socket_t * socket) ; + +int shm_socket_stop(shm_socket_t *sockt); int shm_socket_bind(shm_socket_t * socket, int key) ; @@ -59,13 +68,20 @@ int shm_recvfrom(shm_socket_t *socket, void **buf, int *size, int *key, const struct timespec * timeout = NULL, int flags=0); int shm_sendandrecv(shm_socket_t *socket, const void *send_buf, const int send_size, const int send_key, void **recv_buf, int *recv_size, - const struct timespec * timeout = NULL, int flags=0); + const struct timespec * timeout = NULL, int flags = 0); /** - * 鍔熻兘鍚宻hm_sendandrecv, 浣嗘槸涓嶆槸绾跨▼瀹夊叏鐨� + * @callback void (*recvandsend_callback_fn)(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void * user_data) + * @recvbuf 鏀跺埌鐨勬暟鎹� + * @recvsize 鏀跺埌鐨勬暟鎹殑澶у皬 + * @key 鎺ュ彈鏁版嵁骞跺苟鍙戦�佹暟鎹殑瀵硅薄 + * @sendbuf 瀛樺偍杩斿洖鍊肩殑鍦板潃锛岃〃绀鸿繑鍥炵殑鏁版嵁 + * @sendsize 瀛樺偍杩斿洖鍊肩殑鍦板潃锛� 杩斿洖鏁版嵁鐨勯暱搴� + * */ -int shm_sendandrecv_unsafe(shm_socket_t *socket, const void *send_buf, const int send_size, const int send_key, void **recv_buf, int *recv_size, - const struct timespec * timeout = NULL, int flags=0); +int shm_recvandsend(shm_socket_t *sockt, recvandsend_callback_fn callback, + const struct timespec *timeout = NULL, int flag = 0, void * user_data = NULL); + -- Gitblit v1.8.0