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