From 29ed03b11b4d39f36f602ed7b2f73714214470ed Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期六, 30 一月 2021 14:40:16 +0800 Subject: [PATCH] update --- src/socket/shm_socket.cpp | 46 ++++++++++++++++++---------------------------- 1 files changed, 18 insertions(+), 28 deletions(-) diff --git a/src/socket/shm_socket.cpp b/src/socket/shm_socket.cpp index 25c3930..785eb4d 100644 --- a/src/socket/shm_socket.cpp +++ b/src/socket/shm_socket.cpp @@ -2,6 +2,7 @@ #include "hashtable.h" #include "logger_factory.h" #include <map> +#include <cassert> #include "bus_error.h" static Logger *logger = LoggerFactory::getLogger(); @@ -384,9 +385,6 @@ } } -int shm_recvfrom2(shm_socket_t *socket, void **buf, int *size, int *key, const struct timespec *timeout, int flag) { - return 501; -} // 鐭繛鎺ユ柟寮忔帴鍙� int shm_recvfrom(shm_socket_t *sokt, void **buf, int *size, int *key, const struct timespec *timeout, int flag) { @@ -423,9 +421,7 @@ shm_msg_t src; -printf ("====== before ======\n"); rv = sokt->queue->pop(src, timeout, flag); -printf ("====== after ======\n %d", rv); if (rv == 0) { if(buf != NULL) { @@ -523,6 +519,10 @@ if ((rv = shm_sendto(tmp_socket, send_buf, send_size, send_key, timeout, flags)) == 0) { rv = shm_recvfrom(tmp_socket, recv_buf, recv_size, &recv_key, timeout, flags); +printf("======send key =%d , recv key=%d\n", send_key, recv_key); + assert( send_key == recv_key); + if(send_key != recv_key) + err_exit(0, "send key need to equal to recv key! send key =%d , recv key=%d", send_key, recv_key); return rv; } else { return rv; @@ -551,39 +551,29 @@ if ((rv = shm_sendto(tmp_socket, send_buf, send_size, send_key, timeout, flags)) == 0) { rv = shm_recvfrom(tmp_socket, recv_buf, recv_size, &recv_key, timeout, flags); + printf("======send key =%d , recv key=%d\n", send_key, recv_key); + + if(rv != 0) { + printf("_shm_sendandrecv_alloc_new shm_recvfrom : %s\n", bus_strerror(rv)); + } + else if(rv == 0 ) { + assert( send_key == recv_key); + if(send_key != recv_key) { + err_exit(0, "send key need to equal to recv key! send key =%d , recv key=%d", send_key, recv_key); + } + + } } shm_close_socket(tmp_socket); return rv; } - -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, int flags) { - if (socket->socket_type != SHM_SOCKET_DGRAM) { - logger->error( "shm_socket.shm_sendandrecv_unsafe : Can't invoke shm_sendandrecv method in a %d type socket " - "which is not a SHM_SOCKET_DGRAM socket ", - socket->socket_type); - exit(1); - } - int recv_key; - int rv; - - if ((rv = shm_sendto(socket, send_buf, send_size, send_key, timeout, flags)) == 0) { - rv = shm_recvfrom(socket, recv_buf, recv_size, &recv_key, timeout, flags); - return rv; - } else { - return rv; - } - return -1; -} - 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, int flags) { - return _shm_sendandrecv_thread_local(socket, send_buf, send_size, send_key,recv_buf, recv_size, timeout, flags); + return _shm_sendandrecv_alloc_new(socket, send_buf, send_size, send_key,recv_buf, recv_size, timeout, flags); } -- Gitblit v1.8.0