From 758438289fc45829a8f6cef1b42afed0a1a8cb60 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期三, 03 二月 2021 15:59:58 +0800 Subject: [PATCH] uuid msg --- src/socket/shm_socket.h | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/socket/shm_socket.h b/src/socket/shm_socket.h index 198d4da..377ba4e 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 { @@ -13,11 +14,13 @@ }; + typedef struct shm_packet_t { int key; size_t size; void * buf; + char uuid[64]; } shm_packet_t; @@ -33,11 +36,13 @@ 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 void (*recv_callback_fn)(void **sendbuf, int *sendsize); +typedef std::function<void(void **sendbuf, int *sendsize)> recv_callback_fn; size_t shm_socket_remove_keys(int keys[], size_t length); @@ -59,13 +64,16 @@ 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 (*recv_callback_fn)(void **sendbuf, int *sendsize) + * sendbuf 鍜� sendsize鏄痗allbak_fn鍥炶皟鍑芥暟鐨勮繑鍥炲��, 鍒嗗埆琛ㄧず鍙戦�佹暟鎹紝鍜屽彂閫佹暟鎹殑澶у皬銆� + * */ -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, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, + const struct timespec *timeout = NULL, int flag = 0); + -- Gitblit v1.8.0