From 91ea20d03ebb5a8d20150d3ecc28a13c51ce93f1 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期五, 22 一月 2021 19:17:06 +0800
Subject: [PATCH] update

---
 src/socket/shm_mod_socket.cpp |   56 ++++++++++++++++++++++++--------------------------------
 1 files changed, 24 insertions(+), 32 deletions(-)

diff --git a/src/socket/shm_mod_socket.cpp b/src/socket/shm_mod_socket.cpp
index 6e622a8..6501f1e 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>;
 }
@@ -52,39 +51,32 @@
 }
 // 鍙戦�佷俊鎭珛鍒昏繑鍥炪��
 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);
+	return shm_sendto(shm_socket, buf, size, key, NULL, (int)BUS_NOWAIT_FLAG);
 }
+ 
 
-
-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, BUS_TIMEOUT_FLAG);
+ 	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, BUS_NOWAIT_FLAG);
+	// logger->error(rv, "ShmModSocket::recvfrom_nowait failed!");
+  return rv;
 }
 
 /**
@@ -100,7 +92,7 @@
 	return shm_sendandrecv(shm_socket, send_buf, send_size, send_key, recv_buf, recv_size, timeout, 0);
 }
 int ShmModSocket::sendandrecv_nowait(const void *send_buf, const int send_size, const int send_key, void **recv_buf, int *recv_size){
-	return shm_sendandrecv(shm_socket, send_buf, send_size, send_key, recv_buf, recv_size, 0, (int)SHM_MSG_NOWAIT);
+	return shm_sendandrecv(shm_socket, send_buf, send_size, send_key, recv_buf, recv_size, 0, (int)BUS_NOWAIT_FLAG);
 }
 
 int ShmModSocket::sendandrecv_unsafe( const void *send_buf, const int send_size, const int send_key, void **recv_buf, int *recv_size){
@@ -111,7 +103,7 @@
 	return shm_sendandrecv_unsafe(shm_socket, send_buf, send_size, send_key, recv_buf, recv_size, timeout, 0);
 }
 int ShmModSocket::sendandrecv_unsafe_nowait(const void *send_buf, const int send_size, const int send_key, void **recv_buf, int *recv_size){
-	return shm_sendandrecv_unsafe(shm_socket, send_buf, send_size, send_key, recv_buf, recv_size, 0, (int)SHM_MSG_NOWAIT);
+	return shm_sendandrecv_unsafe(shm_socket, send_buf, send_size, send_key, recv_buf, recv_size, 0, (int)BUS_NOWAIT_FLAG);
 }
 
 
@@ -131,7 +123,7 @@
 	return _sub_(topic, size, key, timeout, 0);
 }
 int  ShmModSocket::sub_nowait(char *topic, int size, int key) {
-	return _sub_(topic, size, key, NULL,  (int)SHM_MSG_NOWAIT);
+	return _sub_(topic, size, key, NULL,  (int)BUS_NOWAIT_FLAG);
 }
 
 
@@ -150,7 +142,7 @@
 	return _desub_(topic, size, key, timeout, 0);
 }
 int  ShmModSocket::desub_nowait(char *topic, int size, int key) {
-	return _desub_(topic, size, key, NULL,  (int)SHM_MSG_NOWAIT);
+	return _desub_(topic, size, key, NULL,  (int)BUS_NOWAIT_FLAG);
 }
 
 
@@ -169,7 +161,7 @@
 	return _pub_( topic, topic_size, content, content_size, key, timeout, 0);
 }
 int  ShmModSocket::pub_nowait(char *topic, int topic_size, void *content, int content_size, int key){
-	return _pub_(topic, topic_size, content, content_size, key, NULL, (int)SHM_MSG_NOWAIT);
+	return _pub_(topic, topic_size, content, content_size, key, NULL, (int)BUS_NOWAIT_FLAG);
 }
 
 
@@ -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