From 251bbc8b0ebd9a91d34f81186d9284f6e669b4db Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期三, 27 一月 2021 10:13:48 +0800
Subject: [PATCH] update

---
 src/socket/bus_server_socket.cpp |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/src/socket/bus_server_socket.cpp b/src/socket/bus_server_socket.cpp
index 7354f53..bea4c21 100644
--- a/src/socket/bus_server_socket.cpp
+++ b/src/socket/bus_server_socket.cpp
@@ -101,7 +101,7 @@
 int  BusServerSocket::start(){
 	topic_sub_map =	mem_pool_attach<SHMTopicSubMap>(SHM_BUS_MAP_KEY);
  
-	run_pubsub_proxy();
+	_run_proxy_();
 	return 0;
 }
 
@@ -193,19 +193,21 @@
 	std::vector<int>::iterator vector_iter;
 
 	int send_key;
+	int rv;
 	struct timespec timeout = {1,0};
 
 	if( (map_iter = topic_sub_map->find(topic) ) != topic_sub_map->end()) {
+
 		subscripter_set = map_iter->second;
 		for(set_iter = subscripter_set->begin(); set_iter != subscripter_set->end(); set_iter++) {
 			send_key = *set_iter;
 // logger->debug("_proxy_pub send before %d \n", send_key);
-			if (shm_sendto(shm_socket, buf, size, send_key, &timeout, BUS_TIMEOUT_FLAG) == EBUS_CLOSED ) {
-				//瀵规柟宸插叧闂殑杩炴帴鏀惧埌寰呭垹闄ら槦鍒楅噷銆傚鏋滅洿鎺ュ垹闄や細璁﹊ter鎸囬拡鍑虹幇閿欎贡
-				subscripter_to_del.push_back(send_key);
-			} else {
-// logger->debug("_proxy_pub send after: %d \n", send_key);
+			rv = shm_sendto(shm_socket, buf, size, send_key, &timeout, BUS_TIMEOUT_FLAG);
+			if(rv == 0) {
+				continue;
 			}
+			//瀵规柟宸插叧闂殑鎴栬�呭搴旂殑杩涚▼琚玨ill鎺夌殑杩炴帴鏀惧埌寰呭垹闄ら槦鍒楅噷銆傚鏋滅洿鎺ュ垹闄や細璁﹊ter鎸囬拡鍑虹幇閿欎贡
+			subscripter_to_del.push_back(send_key);
 		}
 
 		// 鍒犻櫎宸插叧闂殑绔�
@@ -220,7 +222,9 @@
 	}
 }
 
-void * BusServerSocket::run_pubsub_proxy() {
+
+// 杩愯浠g悊
+void * BusServerSocket::_run_proxy_() {
 	int size;
 	int key;
 	char * action, *topic, *topics, *buf, *content;
@@ -229,17 +233,17 @@
 	bus_head_t head;
 
 	const char *topic_delim = ",";
-// logger.debug("run_pubsub_proxy server receive before\n");
+// logger.debug("_run_proxy_ server receive before\n");
 	while(shm_recvfrom(shm_socket, (void **)&buf, &size, &key) == 0) {
-// logger.debug("run_pubsub_proxy server recvfrom %d after: %s \n", key, buf);
+// logger.debug("_run_proxy_ server recvfrom %d after: %s \n", key, buf);
 		head = ShmModSocket::decode_bus_head(buf);
 		topics = buf + BUS_HEAD_SIZE;
 		action = head.action;
-// logger.debug("run_pubsub_proxy : %s\n", action);
+// logger.debug("_run_proxy_ : %s\n", action);
 		if(strcmp(action, "sub") == 0) {
 			// 璁㈤槄鏀寔澶氫富棰樿闃�
 			topic = strtok(topics, topic_delim);
-// logger.debug("run_pubsub_proxy topic = %s\n", topic);
+// logger.debug("_run_proxy_ topic = %s\n", topic);
 		  while(topic) {
        _proxy_sub(trim(topic, 0), key);
         topic =  strtok(NULL, topic_delim);
@@ -271,7 +275,7 @@
 			free(buf);
 			break;
 		} else {
-			logger->error( "BusServerSocket::run_pubsub_proxy : unrecognized action %s", action);
+			logger->error( "BusServerSocket::_run_proxy_ : unrecognized action %s", action);
 		}
 		free(buf);
 	}

--
Gitblit v1.8.0