From 803d392aeb11665a3e34f7be83f972a1fc7d39c0 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期四, 04 二月 2021 15:47:39 +0800 Subject: [PATCH] update --- src/socket/shm_socket.h | 32 +++++++++++++++++--------------- 1 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/socket/shm_socket.h b/src/socket/shm_socket.h index ea1ae38..03ee831 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 { @@ -12,21 +13,14 @@ SHM_SOCKET_DGRAM = 2 }; - -enum shm_packet_type_t -{ - SHM_SOCKET_OPEN = 1, - SHM_SOCKET_OPEN_REPLY = 2, - SHM_SOCKET_CLOSE = 3, - SHM_COMMON_MSG = 4 - -}; + + typedef struct shm_packet_t { int key; - shm_packet_type_t type; size_t size; void * buf; + char uuid[64]; } shm_packet_t; @@ -42,11 +36,12 @@ 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); @@ -68,13 +63,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