From 68d23225a38a35f1325eb39fa4ed5a005d5de473 Mon Sep 17 00:00:00 2001 From: fujuntang <fujuntang@aiot.com> Date: 星期三, 11 八月 2021 09:50:20 +0800 Subject: [PATCH] fix from 3.1 first commit --- src/socket/shm_socket.h | 30 +++++++++++++++++++----------- 1 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/socket/shm_socket.h b/src/socket/shm_socket.h index 377ba4e..97d9f2c 100644 --- a/src/socket/shm_socket.h +++ b/src/socket/shm_socket.h @@ -14,13 +14,15 @@ }; - + +#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; @@ -36,20 +38,22 @@ LockFreeQueue<shm_packet_t> *queue; //self queue LockFreeQueue<shm_packet_t> *remoteQueue; // peer queue - std::map<std::string, shm_packet_t> recvbuf; - + std::map<std::string, shm_packet_t> recvbuf; // for uuid + std::map<int, shm_packet_t> recvbuf2; //for thread local } shm_socket_t; -// typedef void (*recv_callback_fn)(void **sendbuf, int *sendsize); -typedef std::function<void(void **sendbuf, int *sendsize)> recv_callback_fn; +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); +shm_socket_t *shm_socket_open(shm_socket_type_t socket_type); -int shm_close_socket(shm_socket_t * socket) ; +int shm_socket_close(shm_socket_t * sockt) ; + +int shm_socket_stop(shm_socket_t * sockt); int shm_socket_bind(shm_socket_t * socket, int key) ; @@ -67,12 +71,16 @@ const struct timespec * timeout = NULL, int flags = 0); /** - * @callback void (*recv_callback_fn)(void **sendbuf, int *sendsize) - * sendbuf 鍜� sendsize鏄痗allbak_fn鍥炶皟鍑芥暟鐨勮繑鍥炲��, 鍒嗗埆琛ㄧず鍙戦�佹暟鎹紝鍜屽彂閫佹暟鎹殑澶у皬銆� + * @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_recvandsend(shm_socket_t *sockt, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, - const struct timespec *timeout = NULL, int flag = 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