From 42d1c7ef91627d5ac920c8fa35573970ac1bd2d5 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期五, 15 一月 2021 16:27:55 +0800
Subject: [PATCH] Merge branch 'dev' into rdma

---
 src/socket/shm_socket.cpp |   39 +++++++++++++++++----------------------
 1 files changed, 17 insertions(+), 22 deletions(-)

diff --git a/src/socket/shm_socket.cpp b/src/socket/shm_socket.cpp
index 672a9a7..1b7721d 100644
--- a/src/socket/shm_socket.cpp
+++ b/src/socket/shm_socket.cpp
@@ -31,7 +31,7 @@
    void *tmp_ptr = mm_get_by_key(socket->key);
     if (tmp_ptr!= NULL && tmp_ptr != (void *)1 && !socket->force_bind ) {
       bus_errno = ESHM_BUS_KEY_INUSED;
-      logger->error("%s. key = %d ", bus_strerror(bus_errno), socket->key);
+      logger->error("%s. key = %d ", bus_strerror(ESHM_BUS_KEY_INUSED), socket->key);
       return 0;
     }
     return 1;
@@ -318,7 +318,7 @@
                const int key, const struct timespec *timeout, const int flags) {
 
   int s;
-  bool rv;
+  int rv;
 
   if (socket->socket_type != SHM_SOCKET_DGRAM) {
     logger->error( "shm_socket.shm_sendto: Can't invoke shm_sendto method in a %d type socket  which is "
@@ -350,10 +350,10 @@
   if ((s = pthread_mutex_unlock(&(socket->mutex))) != 0)
     err_exit(s, "shm_sendto : pthread_mutex_unlock");
   
-  // if (key == socket->key) {
-  //   logger->error( "can not send to your self!");
-  //   return -1;
-  // }
+  if (key == socket->key) {
+    logger->error( "can not send to your self!");
+    return -1;
+  }
 
   SHMQueue<shm_msg_t> *remoteQueue;
   if ((remoteQueue = _attach_remote_queue(key)) == NULL) {
@@ -385,14 +385,13 @@
   } else {
     delete remoteQueue;
     mm_free(dest.buf);
-    if(rv == EBUS_TIMEOUT) {
+    if(rv > EBUS_BASE) {
       // bus_errno = EBUS_TIMEOUT;
-      // logger->error("sendto key %d failed, %s", key, bus_strerror(EBUS_TIMEOUT));
-      return EBUS_TIMEOUT;
+      logger->debug("sendto key %d failed %s", key, bus_strerror(rv));
     } else {
-      //logger->error(errno, "sendto key %d failed!", key);
-      return rv;
+      logger->error(rv, "sendto key %d failed", key);
     }
+    return rv;
    
    
   }
@@ -401,7 +400,7 @@
 // 鐭繛鎺ユ柟寮忔帴鍙�
 int shm_recvfrom(shm_socket_t *socket, void **buf, int *size, int *key,  struct timespec *timeout,  int flags) {
   int s;
-  bool rv;
+  int rv;
 
   if (socket->socket_type != SHM_SOCKET_DGRAM) {
     logger->error("shm_socket.shm_recvfrom: Can't invoke shm_recvfrom method in a %d type socket  which "
@@ -437,6 +436,7 @@
     rv = socket->queue->pop_nowait(src);
   } else if(timeout != NULL) {
     rv = socket->queue->pop_timeout(src, timeout);
+// printf("0 shm_recvfrom====%d\n", rv);
   } else {
     rv = socket->queue->pop(src);
   }
@@ -457,14 +457,12 @@
     mm_free(src.buf);
     return 0;
   } else {
-
-    if(rv == EBUS_TIMEOUT) {
-      // logger->error("shm_recvfrom  failed, %s", bus_strerror(EBUS_TIMEOUT));
-      return EBUS_TIMEOUT;
+    if(rv > EBUS_BASE) {
+      logger->debug("shm_recvfrom failed %s", bus_strerror(rv));
     } else {
-      // logger->error(rv, "shm_recvfrom  failed!");
-      return rv;
+      logger->error(rv, "shm_recvfrom failed");
     }
+    return rv;
 
   }
 }
@@ -531,7 +529,7 @@
   if (tmp_socket == NULL)
   {
     /* If first call from this thread, allocate buffer for thread, and save its location */
-    logger->debug("%d create tmp socket\n", pthread_self() );
+    logger->debug("%ld create tmp socket\n", (long)pthread_self() );
     tmp_socket = shm_open_socket(SHM_SOCKET_DGRAM);
 
     rv =  pthread_setspecific(_tmp_recv_socket_key_, tmp_socket);
@@ -543,13 +541,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);
-    
     return rv;
   } else {
-     
     return rv;
   }
-  return -1;
 }
 
 int _shm_sendandrecv_alloc_new(shm_socket_t *socket, const void *send_buf,

--
Gitblit v1.8.0