From 8e8a7a018f5724e3f645ff6186879e6dcc195c94 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期六, 30 一月 2021 14:55:43 +0800
Subject: [PATCH] update

---
 src/socket/shm_socket.cpp |   47 ++++++++++++++++++++++++-----------------------
 1 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/src/socket/shm_socket.cpp b/src/socket/shm_socket.cpp
index 9a13a85..daa7f1a 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();
@@ -518,6 +519,16 @@
 
   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);
+    if(rv != 0) {
+      printf("_shm_sendandrecv_thread_local : %s\n", bus_strerror(rv));
+    }
+    else if(rv == 0 ) {
+      assert( send_key == recv_key);
+      if(send_key != recv_key) {
+         err_exit(0, "_shm_sendandrecv_thread_local: send key expect to equal to recv key! send key =%d , recv key=%d", send_key, recv_key);
+      }
+     
+    }
     return rv;
   } else {
     return rv;
@@ -546,39 +557,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 : %s\n", bus_strerror(rv));
+    }
+    else if(rv == 0 ) {
+      assert( send_key == recv_key);
+      if(send_key != recv_key) {
+         err_exit(0, "_shm_sendandrecv_alloc_new: send key expect 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