From 00afff988a8d000c8c660e98db90288cfc2920aa Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期一, 18 一月 2021 10:29:09 +0800
Subject: [PATCH] update

---
 src/queue/shm_queue.h                |    7 +++++--
 src/queue/lock_free_queue.h          |    3 +++
 src/bus_error.h                      |    2 +-
 src/socket/net_mod_server_socket.cpp |    2 +-
 src/socket/shm_socket.cpp            |   31 +++++++++++++++++--------------
 5 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/src/bus_error.h b/src/bus_error.h
index a951e89..d213c48 100644
--- a/src/bus_error.h
+++ b/src/bus_error.h
@@ -7,7 +7,7 @@
 #define EBUS_BASE 10000
 #define EBUS_TIMEOUT 10001
 #define EBUS_CLOSED 10002
-#define ESHM_BUS_KEY_INUSED 10003
+#define EBUS_KEY_INUSED 10003
 
 extern int bus_errno;
 
diff --git a/src/queue/lock_free_queue.h b/src/queue/lock_free_queue.h
index bb0bfb5..924537f 100644
--- a/src/queue/lock_free_queue.h
+++ b/src/queue/lock_free_queue.h
@@ -1,3 +1,6 @@
+/**
+ * encapsulate array_lock_free_queue, add semphore. populate in kernal space.
+ */
 #ifndef __LOCK_FREE_QUEUE_H__
 #define __LOCK_FREE_QUEUE_H__
 
diff --git a/src/queue/shm_queue.h b/src/queue/shm_queue.h
index 64d4600..7d98eaa 100644
--- a/src/queue/shm_queue.h
+++ b/src/queue/shm_queue.h
@@ -1,3 +1,7 @@
+/**
+ * encapsulate lock_free_queue, populate in userspace
+ */
+
 #ifndef __SHM_QUEUE_H__
 #define __SHM_QUEUE_H__
 
@@ -7,8 +11,7 @@
 #include "sem_util.h"
 #include "shm_allocator.h"
 #include "usg_common.h"
-// default Queue size
-// #define LOCK_FREE_Q_DEFAULT_SIZE 16
+
 
 template <typename ELEM_T> class SHMQueue {
 
diff --git a/src/socket/net_mod_server_socket.cpp b/src/socket/net_mod_server_socket.cpp
index cccbe9e..8324d6f 100644
--- a/src/socket/net_mod_server_socket.cpp
+++ b/src/socket/net_mod_server_socket.cpp
@@ -181,7 +181,7 @@
     }
 
     if( ret != 0) {
-      // 娌℃湁瀵瑰簲鐨刱ey
+      // 杞彂澶辫触
       response_head.code = ret;
       response_head.content_length = 0;
       if( rio_writen(connfd, NetModSocket::encode_response_head(response_head), NET_MODE_RESPONSE_HEAD_LENGTH) != NET_MODE_RESPONSE_HEAD_LENGTH )
diff --git a/src/socket/shm_socket.cpp b/src/socket/shm_socket.cpp
index 1b7721d..534202d 100644
--- a/src/socket/shm_socket.cpp
+++ b/src/socket/shm_socket.cpp
@@ -30,8 +30,8 @@
 static inline int  _shm_socket_check_key(shm_socket_t *socket) {
    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(ESHM_BUS_KEY_INUSED), socket->key);
+      bus_errno = EBUS_KEY_INUSED;
+      logger->error("%s. key = %d ", bus_strerror(EBUS_KEY_INUSED), socket->key);
       return 0;
     }
     return 1;
@@ -133,8 +133,8 @@
   } else {
 
    if(!_shm_socket_check_key(socket)) {
-     bus_errno = ESHM_BUS_KEY_INUSED;
-     return ESHM_BUS_KEY_INUSED;
+     bus_errno = EBUS_KEY_INUSED;
+     return EBUS_KEY_INUSED;
    }
   }
 
@@ -224,8 +224,8 @@
     socket->key = hashtable_alloc_key(hashtable);
   } else {
     if(!_shm_socket_check_key(socket)) {
-      bus_errno = ESHM_BUS_KEY_INUSED;
-      return ESHM_BUS_KEY_INUSED;
+      bus_errno = EBUS_KEY_INUSED;
+      return EBUS_KEY_INUSED;
     }
   }
 
@@ -338,8 +338,8 @@
     } else {
 
      if(!_shm_socket_check_key(socket)) {
-        bus_errno = ESHM_BUS_KEY_INUSED;
-        return ESHM_BUS_KEY_INUSED;
+        bus_errno = EBUS_KEY_INUSED;
+        return EBUS_KEY_INUSED;
      }
 
     }
@@ -350,10 +350,13 @@
   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;
-  }
+  // There is some case where a socket need to send to himeself, for example when bus server need to stop, he need to send himself 
+  // a top message.
+  
+  // 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) {
@@ -419,8 +422,8 @@
     } else {
 
       if(!_shm_socket_check_key(socket)) {
-        bus_errno = ESHM_BUS_KEY_INUSED;
-        return ESHM_BUS_KEY_INUSED;
+        bus_errno = EBUS_KEY_INUSED;
+        return EBUS_KEY_INUSED;
       }
     }
 

--
Gitblit v1.8.0