From 0d6000e8e75e45d83dfc5718bd249a11fcce45a3 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期五, 15 一月 2021 16:10:15 +0800
Subject: [PATCH] update

---
 src/socket/shm_mod_socket.cpp |   44 ++++++++++++++++++--------------------------
 1 files changed, 18 insertions(+), 26 deletions(-)

diff --git a/src/socket/shm_mod_socket.cpp b/src/socket/shm_mod_socket.cpp
index 6e622a8..4340bc4 100644
--- a/src/socket/shm_mod_socket.cpp
+++ b/src/socket/shm_mod_socket.cpp
@@ -9,7 +9,6 @@
 }
 
 ShmModSocket::ShmModSocket() {
-	mod = (socket_mod_t)0;
 	shm_socket = shm_open_socket(SHM_SOCKET_DGRAM);
 	bus_set = new std::set<int>;
 }
@@ -54,37 +53,30 @@
 int ShmModSocket::sendto_nowait( const void *buf, const int size, const int key){
 	return shm_sendto(shm_socket, buf, size, key, NULL, (int)SHM_MSG_NOWAIT);
 }
+ 
 
-
-inline int ShmModSocket::_recvfrom_(void **buf, int *size, int *key,  struct timespec *timeout, int flags) {
-
-	if(mod == BUS) {
-		logger->error("Can not use method recvfrom in a Bus");
-		exit(1);
-	}
-// printf("dgram_mod_recvfrom  before\n");
-	int rv = shm_recvfrom(shm_socket, buf, size, key, timeout, flags);
-// printf("dgram_mod_recvfrom  after\n");
-	return rv;
-}
 /**
  * 鎺ユ敹淇℃伅
  * @key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
  * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
 */
 int ShmModSocket::recvfrom(void **buf, int *size, int *key) {
-		
-		return  _recvfrom_( buf, size, key, NULL, 0);
+	int rv =  shm_recvfrom(shm_socket, buf, size, key, NULL, 0);
+   
+  return rv;
 }
 
 
 // 鎺ュ彈淇℃伅瓒呮椂杩斿洖銆� @sec 绉� 锛� @nsec 绾崇
 int ShmModSocket::recvfrom_timeout( void **buf, int *size, int *key, struct timespec *timeout) {
-	return _recvfrom_(buf, size, key, timeout, 0);
+	int rv =  shm_recvfrom(shm_socket, buf, size, key, timeout, 0);
+ 	return rv;
 }
 
 int ShmModSocket::recvfrom_nowait( void **buf, int *size, int *key){
-	return _recvfrom_(buf, size, key, NULL, (int)SHM_MSG_NOWAIT);
+	int rv =  shm_recvfrom(shm_socket, buf, size, key, NULL, (int)SHM_MSG_NOWAIT);
+	// logger->error(rv, "ShmModSocket::recvfrom_nowait failed!");
+  return rv;
 }
 
 /**
@@ -188,14 +180,7 @@
  */
 int  ShmModSocket::_sub_(char *topic, int topic_size, int key,  
 	struct timespec *timeout, int flags) {
-	// char buf[8192];
-	// int rv;
-	// snprintf(buf,  8192, "%ssub%s%s%s%s", ACTION_LIDENTIFIER, ACTION_RIDENTIFIER, TOPIC_LIDENTIFIER, topic, TOPIC_RIDENTIFIER);
-	// rv = shm_sendto(shm_socket, buf, strlen(buf) + 1, key, timeout, flags);
-	// if(rv == 0) {
-	// 	bus_set->insert(key);
-	// }
-	// return rv;
+	 
 
 	int ret;
 	bus_head_t head = {};
@@ -240,7 +225,14 @@
 	if(size > 0) {
 		ret = shm_sendto(shm_socket, buf, size, key, timeout, flags);
 		free(buf);
-		return ret;
+		if(ret == EBUS_TIMEOUT) {
+	    logger->error(ret, "ShmModSocket::_desub_ key %d failed, %s", key, bus_strerror(EBUS_TIMEOUT));
+	    return EBUS_TIMEOUT;
+	  } else {
+	    logger->error(ret, "ShmModSocket::_desub_ key %d failed!", key);
+	    return ret;
+	  }
+		
 	} else {
 		return -1;
 	}

--
Gitblit v1.8.0