From f7337200b6703c9d64f49efc0bc571a13d479973 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期四, 04 二月 2021 09:58:27 +0800
Subject: [PATCH] add void * userdata
---
src/socket/shm_mod_socket.h | 2
test_net_socket/test_recvandsend.cpp | 6 +-
src/net/net_mod_socket_wrapper.cpp | 12 +++---
src/net/net_mod_socket_wrapper.h | 12 +++---
src/net/net_mod_socket.h | 7 +--
test_net_socket/test_net_mod_socket.cpp | 4 +-
src/socket/shm_socket.h | 4 +-
src/socket/shm_mod_socket.cpp | 4 +-
src/net/net_mod_socket.cpp | 18 ++-------
src/socket/shm_socket.cpp | 4 +-
10 files changed, 31 insertions(+), 42 deletions(-)
diff --git a/src/net/net_mod_socket.cpp b/src/net/net_mod_socket.cpp
index f939c67..e1b30d7 100644
--- a/src/net/net_mod_socket.cpp
+++ b/src/net/net_mod_socket.cpp
@@ -498,22 +498,12 @@
}
+int NetModSocket::recvandsend(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
+ const struct timespec *timeout , int flag, void * user_data ) {
-int NetModSocket::recvandsend(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback) {
- return shmModSocket.recvandsend( recvbuf, recvsize, key, callback);
-
+ return shmModSocket.recvandsend( recvbuf, recvsize, key, callback, timeout, flag, user_data);
}
-
-int NetModSocket::recvandsend_timeout(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
- const struct timespec *timeout ) {
- return shmModSocket.recvandsend( recvbuf, recvsize, key, callback, timeout, BUS_TIMEOUT_FLAG);
-
-}
-
-int NetModSocket::recvandsend_nowait(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback) {
- return shmModSocket.recvandsend( recvbuf, recvsize, key, callback, NULL, BUS_NOWAIT_FLAG);
-
-}
+
/**
* 鍙戦�佽姹備俊鎭苟绛夊緟鎺ユ敹搴旂瓟
diff --git a/src/net/net_mod_socket.h b/src/net/net_mod_socket.h
index 5b2e930..7d64bb1 100644
--- a/src/net/net_mod_socket.h
+++ b/src/net/net_mod_socket.h
@@ -193,11 +193,10 @@
int sendandrecv_nowait( const void *send_buf, const int send_size, const int send_key, void **recv_buf, int *recv_size) ;
- int recvandsend(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback) ;
+
- int recvandsend_timeout(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
- const struct timespec *timeout );
- int recvandsend_nowait(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback);
+ int recvandsend(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
+ const struct timespec *timeout = NULL , int flag = 0, void * user_data = NULL );
/**
* 鍚憂ode_arr 涓殑鎵�鏈夌綉缁滆妭鐐瑰彂甯冩秷鎭�
diff --git a/src/net/net_mod_socket_wrapper.cpp b/src/net/net_mod_socket_wrapper.cpp
index 6f244af..72fd0d2 100644
--- a/src/net/net_mod_socket_wrapper.cpp
+++ b/src/net/net_mod_socket_wrapper.cpp
@@ -91,22 +91,22 @@
}
-int net_mod_socket_recvandsend(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback) {
+int net_mod_socket_recvandsend(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, void * user_data) {
NetModSocket *sockt = (NetModSocket *)_socket;
- return sockt->recvandsend( recvbuf, recvsize, key, callback);
+ return sockt->recvandsend( recvbuf, recvsize, key, callback, NULL, 0, user_data);
}
int net_mod_socket_recvandsend_timeout(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
- int sec, int nsec ) {
+ int sec, int nsec, void * user_data) {
NetModSocket *sockt = (NetModSocket *)_socket;
struct timespec timeout = {sec, nsec};
- return sockt->recvandsend_timeout( recvbuf, recvsize, key, callback, &timeout);
+ return sockt->recvandsend( recvbuf, recvsize, key, callback, &timeout, BUS_TIMEOUT_FLAG, user_data);
}
-int net_mod_socket_recvandsend_nowait(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback) {
+int net_mod_socket_recvandsend_nowait(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, void * user_data) {
NetModSocket *sockt = (NetModSocket *)_socket;
- return sockt->recvandsend_nowait( recvbuf, recvsize, key, callback);
+ return sockt->recvandsend( recvbuf, recvsize, key, callback, NULL, BUS_NOWAIT_FLAG, user_data);
}
diff --git a/src/net/net_mod_socket_wrapper.h b/src/net/net_mod_socket_wrapper.h
index 2f73c7b..deacf4a 100644
--- a/src/net/net_mod_socket_wrapper.h
+++ b/src/net/net_mod_socket_wrapper.h
@@ -128,12 +128,12 @@
* @param recvbuf 鎺ュ彈鍒扮殑娑堟伅瀛樻斁鐨勭紦瀛樺湴鍧�锛岃buf浣跨敤瀹屾垚鍚庨渶瑕佹墜鍔ㄩ噴鏀�
* @param recvsize 鎺ュ彈鍒版秷鎭殑闀垮害
* @param key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
- * @callback void (*recv_callback_fn)(void **sendbuf, int *sendsize)
+ * @callback void (*recv_callback_fn)(void **sendbuf, int *sendsize, void * user_data)
* sendbuf 鍜� sendsize鏄痗allbak_fn鍥炶皟鍑芥暟鐨勮繑鍥炲��, 鍒嗗埆琛ㄧず杩斿洖鐨勬暟鎹紝鍜岃繑鍥炴暟鎹殑闀垮害銆�
*
* @return 0鏄垚鍔燂紝 鍏朵粬鍊兼槸澶辫触鐨勯敊璇爜
*/
-int net_mod_socket_recvandsend(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback);
+int net_mod_socket_recvandsend(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, void * user_data);
/**
* @brief 鎺ュ彈娑堟伅锛屽苟鎶奵allback鍑芥暟杩斿洖鐨勬暟鎹彂閫佸洖瀵规柟锛屽湪鎸囧畾鐨勬椂闂村唴鍗充娇娌℃湁瀹屾垚涔熻繑鍥�
@@ -141,7 +141,7 @@
* @param recvbuf 鎺ュ彈鍒扮殑娑堟伅瀛樻斁鐨勭紦瀛樺湴鍧�锛岃buf浣跨敤瀹屾垚鍚庨渶瑕佹墜鍔ㄩ噴鏀�
* @param recvsize 鎺ュ彈鍒版秷鎭殑闀垮害
* @param key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
- * @callback void (*recv_callback_fn)(void **sendbuf, int *sendsize)
+ * @callback void (*recv_callback_fn)(void **sendbuf, int *sendsize, void * user_data)
* sendbuf 鍜� sendsize鏄痗allbak_fn鍥炶皟鍑芥暟鐨勮繑鍥炲��, 鍒嗗埆琛ㄧず杩斿洖鐨勬暟鎹紝鍜岃繑鍥炴暟鎹殑闀垮害銆�
*
* @param sec 绉�
@@ -150,7 +150,7 @@
* @return 0鏄垚鍔燂紝 鍏朵粬鍊兼槸澶辫触鐨勯敊璇爜
*/
int net_mod_socket_recvandsend_timeout(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
- int sec, int nsec ) ;
+ int sec, int nsec, void * user_data ) ;
/**
@@ -159,12 +159,12 @@
* @param recvbuf 鎺ュ彈鍒扮殑娑堟伅瀛樻斁鐨勭紦瀛樺湴鍧�锛岃buf浣跨敤瀹屾垚鍚庨渶瑕佹墜鍔ㄩ噴鏀�
* @param recvsize 鎺ュ彈鍒版秷鎭殑闀垮害
* @param key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
- * @callback void (*recv_callback_fn)(void **sendbuf, int *sendsize)
+ * @callback void (*recv_callback_fn)(void **sendbuf, int *sendsize, void * user_data)
* sendbuf 鍜� sendsize鏄痗allbak_fn鍥炶皟鍑芥暟鐨勮繑鍥炲��, 鍒嗗埆琛ㄧず杩斿洖鐨勬暟鎹紝鍜岃繑鍥炴暟鎹殑闀垮害銆�
*
* @return 0鏄垚鍔燂紝 鍏朵粬鍊兼槸澶辫触鐨勯敊璇爜
*/
-int net_mod_socket_recvandsend_nowait(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback) ;
+int net_mod_socket_recvandsend_nowait(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, void * user_data) ;
diff --git a/src/socket/shm_mod_socket.cpp b/src/socket/shm_mod_socket.cpp
index 097c8fb..32ff061 100644
--- a/src/socket/shm_mod_socket.cpp
+++ b/src/socket/shm_mod_socket.cpp
@@ -92,8 +92,8 @@
int ShmModSocket::recvandsend(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
- const struct timespec *timeout , int flag ) {
- int rv = shm_recvandsend(shm_socket, recvbuf, recvsize, key, callback, timeout, flag);
+ const struct timespec *timeout , int flag, void * user_data ) {
+ int rv = shm_recvandsend(shm_socket, recvbuf, recvsize, key, callback, timeout, flag, user_data);
if(rv == 0) {
logger->debug("ShmModSocket::shm_recvandsend: success. key = %d\n", *key);
return 0;
diff --git a/src/socket/shm_mod_socket.h b/src/socket/shm_mod_socket.h
index b866f0c..c0bd3d4 100644
--- a/src/socket/shm_mod_socket.h
+++ b/src/socket/shm_mod_socket.h
@@ -88,7 +88,7 @@
int recvandsend(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
- const struct timespec *timeout = NULL , int flag = 0);
+ const struct timespec *timeout = NULL , int flag = 0, void * user_data = NULL);
/**
* 璁㈤槄鎸囧畾涓婚
diff --git a/src/socket/shm_socket.cpp b/src/socket/shm_socket.cpp
index bee4622..fbb849d 100644
--- a/src/socket/shm_socket.cpp
+++ b/src/socket/shm_socket.cpp
@@ -247,7 +247,7 @@
*
*/
int shm_recvandsend(shm_socket_t *sockt, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
- const struct timespec *timeout, int flag) {
+ const struct timespec *timeout, int flag, void *user_data) {
int rv;
@@ -281,7 +281,7 @@
mm_free(recvpak.buf);
- callback(&sendbuf, &sendsize);
+ callback(&sendbuf, &sendsize, user_data);
shm_packet_t sendpak;
sendpak.key = sockt->key;
diff --git a/src/socket/shm_socket.h b/src/socket/shm_socket.h
index 377ba4e..aa5fc90 100644
--- a/src/socket/shm_socket.h
+++ b/src/socket/shm_socket.h
@@ -42,7 +42,7 @@
} 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 **sendbuf, int *sendsize, void *user_data)> recv_callback_fn;
size_t shm_socket_remove_keys(int keys[], size_t length);
@@ -72,7 +72,7 @@
*
*/
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);
+ const struct timespec *timeout = NULL, int flag = 0, void * user_data = NULL);
diff --git a/test_net_socket/test_net_mod_socket.cpp b/test_net_socket/test_net_mod_socket.cpp
index 2c69151..bdbcc9b 100644
--- a/test_net_socket/test_net_mod_socket.cpp
+++ b/test_net_socket/test_net_mod_socket.cpp
@@ -143,7 +143,7 @@
int rv;
int key;
while(true) {
- rv = net_mod_socket_recvandsend_timeout(ser, &recvbuf, &recvsize, &key, [&](void ** buf, int *size){
+ rv = net_mod_socket_recvandsend_timeout(ser, &recvbuf, &recvsize, &key, [&](void ** buf, int *size, void * user_data){
printf( "server: RECEIVED REQUEST FROM %d : %s\n", key, recvbuf);
sprintf(sendbuf, "%d RECEIVED %s", net_mod_socket_get_key(ser), (char *)recvbuf);
// buf 鍜� size鏄繑鍥炲��
@@ -151,7 +151,7 @@
*size = strlen(sendbuf) + 1;
free(recvbuf);
return;
- }, 0, 2000000 );
+ }, 0, 2000000, NULL );
}
// while ( (rv = net_mod_socket_recvfrom(ser, &recvbuf, &size, &key) ) == 0) {
// // printf( "server: RECEIVED REQUEST FROM %d NAME %s\n", key, recvbuf);
diff --git a/test_net_socket/test_recvandsend.cpp b/test_net_socket/test_recvandsend.cpp
index 2211a4e..cb2ac1e 100644
--- a/test_net_socket/test_recvandsend.cpp
+++ b/test_net_socket/test_recvandsend.cpp
@@ -8,9 +8,9 @@
#include <getopt.h>
#include "logger_factory.h"
+//娴嬭瘯浼犻�掑嚱鏁版寚閽�
-
-void sendback(void ** buf, int *size){
+void sendback(void ** buf, int *size, void * user_data){
char sendbuf[512];
printf( "server: RECEIVED REQUEST FROM \n ");
sprintf(sendbuf, "RECEIVED REQUEST \n");
@@ -30,7 +30,7 @@
int rv;
int key;
while(true) {
- rv = net_mod_socket_recvandsend_timeout(ser, &recvbuf, &recvsize, &key, sendback, 2, 2000000 );
+ rv = net_mod_socket_recvandsend_timeout(ser, &recvbuf, &recvsize, &key, sendback, 2, 2000000, NULL );
if(rv == 0)
free(recvbuf);
}
--
Gitblit v1.8.0