From 68d23225a38a35f1325eb39fa4ed5a005d5de473 Mon Sep 17 00:00:00 2001
From: fujuntang <fujuntang@aiot.com>
Date: 星期三, 11 八月 2021 09:50:20 +0800
Subject: [PATCH] fix from 3.1 first commit

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

diff --git a/src/socket/bus_server_socket.cpp b/src/socket/bus_server_socket.cpp
index 657941b..7a45696 100644
--- a/src/socket/bus_server_socket.cpp
+++ b/src/socket/bus_server_socket.cpp
@@ -39,7 +39,6 @@
 				subscripter_set = map_iter->second;
 				if(subscripter_set != NULL && (set_iter = subscripter_set->find(key) ) != subscripter_set->end()) {
 					subscripter_set->erase(set_iter);
-// printf("remove_subscripter %s, %d\n", map_iter->first, key);
 					count++;
 				}
 			}
@@ -201,7 +200,6 @@
 		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);
 			rv = shm_sendto(shm_socket, buf, size, send_key, &timeout, BUS_TIMEOUT_FLAG);
 			if(rv == 0) {
 				continue;
@@ -232,26 +230,28 @@
 	char resp_buf[128];
 	bus_head_t head;
 
+  int rv;
+  char send_buf[512] = { 0x00 };
+
 	const char *topic_delim = ",";
-// logger.debug("_run_proxy_ server receive before\n");
+
 	while(shm_recvfrom(shm_socket, (void **)&buf, &size, &key) == 0) {
-// 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_proxy_ : %s\n", action);
+
 		if(strcmp(action, "sub") == 0) {
 			// 璁㈤槄鏀寔澶氫富棰樿闃�
 			topic = strtok(topics, topic_delim);
-// logger.debug("_run_proxy_ topic = %s\n", topic);
 		  while(topic) {
+
        _proxy_sub(trim(topic, 0), key);
         topic =  strtok(NULL, topic_delim);
 		  }
 
 		} 
 		else if(strcmp(action, "desub") == 0) {
-// logger.debug("desub topic=%s,%s,%d\n", topics, trim(topics, 0), strcmp(trim(topics, 0), ""));
+
 			if(strcmp(trim(topics, 0), "") == 0) {
 				// 鍙栨秷鎵�鏈夎闃�
 				_proxy_desub_all(key);
@@ -259,6 +259,7 @@
 			 
 				topic = strtok(topics, topic_delim);
 			  while(topic) {
+
 	       _proxy_desub(trim(topic, 0), key);
 	        topic =  strtok(NULL, topic_delim);
 			  }
@@ -270,7 +271,16 @@
 			_proxy_pub(topics, content, head.content_size, key);
 
 		}  
-		else if(strcmp(action, "stop") == 0) {
+		else if (strncmp(buf, "request", strlen("request")) == 0) {
+      sprintf(send_buf, "%4d", key);
+      strncpy(send_buf + 4, buf, (sizeof(send_buf) - 4) >= (strlen(buf) + 1) ? strlen(buf) : (sizeof(send_buf) - 4));
+      
+      rv = shm_sendto(shm_socket, send_buf, strlen(send_buf) + 1, key);
+      if(rv != 0) {
+        logger->error( "BusServerSocket::_run_proxy_ : requst answer fail!\n");
+      }
+    }
+    else if(strcmp(action, "stop") == 0) {
 			logger->info( "Stopping Bus...");			
 			free(buf);
 			break;

--
Gitblit v1.8.0