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