From 0cb4f2b1acb16c1ee1bd86a40116300ea2e2cdaa Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期二, 26 一月 2021 10:18:30 +0800
Subject: [PATCH] update

---
 src/socket/bus_server_socket.cpp |  104 +++++-----------------------------------------------
 1 files changed, 10 insertions(+), 94 deletions(-)

diff --git a/src/socket/bus_server_socket.cpp b/src/socket/bus_server_socket.cpp
index e66a709..462fd9d 100644
--- a/src/socket/bus_server_socket.cpp
+++ b/src/socket/bus_server_socket.cpp
@@ -22,17 +22,7 @@
 		}
 	}
 }
-
-// bool BusServerSocket::include_in_keys(int key, int keys[], size_t length) {
-// 	if(length == 0) {
-// 		return false;
-// 	}
-// 	for(int i = 0; i < length; i++) {
-// 		if(keys[i] == key) 
-// 			return true;
-// 	}
-// 	return false;
-// }
+ 
 
 size_t BusServerSocket::remove_subscripters(int keys[], size_t length) {
 	size_t count = 0;
@@ -71,9 +61,7 @@
 	SHMKeySet *subscripter_set;
 	SHMTopicSubMap::iterator map_iter;
 
-	logger->debug("BusServerSocket destory 1");
 	stop();
-	logger->debug("BusServerSocket destory 2");
 	 
 	if(topic_sub_map != NULL) {
 		for (map_iter = topic_sub_map->begin(); map_iter != topic_sub_map->end(); map_iter++) {
@@ -121,7 +109,6 @@
 
 int  BusServerSocket::stop(){
 	int ret;
-	logger->debug("====>stopping");
 	if( shm_socket->key <= 0) {
 		return -1;
 	}
@@ -132,10 +119,11 @@
 	head.topic_size = 0;
 	head.content_size = 0;
 
+  ShmModSocket client;
 	void *buf;
 	int size = ShmModSocket::get_bus_sendbuf(head, NULL, 0, NULL,  0, &buf);
 	if(size > 0) {
-		ret = shm_sendandrecv_unsafe(shm_socket, buf, size, shm_socket->key, NULL, NULL);
+		ret = client.sendandrecv_unsafe( buf, size, shm_socket->key, NULL, NULL);
 		free(buf);
 		return ret;
 	} else {
@@ -212,12 +200,12 @@
 		subscripter_set = map_iter->second;
 		for(set_iter = subscripter_set->begin(); set_iter != subscripter_set->end(); set_iter++) {
 			send_key = *set_iter;
- printf("_proxy_pub send before %d \n", send_key);
+ // printf("_proxy_pub send before %d \n", send_key);
 			if (shm_sendto(shm_socket, buf, size, send_key, &timeout) == EBUS_CLOSED ) {
 				//瀵规柟宸插叧闂殑杩炴帴鏀惧埌寰呭垹闄ら槦鍒楅噷銆傚鏋滅洿鎺ュ垹闄や細璁﹊ter鎸囬拡鍑虹幇閿欎贡
 				subscripter_to_del.push_back(send_key);
 			} else {
-printf("_proxy_pub send after: %d \n", send_key);
+// printf("_proxy_pub send after: %d \n", send_key);
 			}
 
 			
@@ -247,15 +235,15 @@
 	const char *topic_delim = ",";
 // printf("run_pubsub_proxy server receive before\n");
 	while(shm_recvfrom(shm_socket, (void **)&buf, &size, &key) == 0) {
-printf("run_pubsub_proxy server recvfrom %d after: %s \n", key, buf);
+// printf("run_pubsub_proxy server recvfrom %d after: %s \n", key, buf);
 		head = ShmModSocket::decode_bus_head(buf);
 		topics = buf + BUS_HEAD_SIZE;
 		action = head.action;
-  printf("run_pubsub_proxy : %s, %s \n", action, topics);
+  // printf("run_pubsub_proxy : %s\n", action);
 		if(strcmp(action, "sub") == 0) {
 			// 璁㈤槄鏀寔澶氫富棰樿闃�
 			topic = strtok(topics, topic_delim);
-printf("run_pubsub_proxy topic = %s\n", topic);
+// printf("run_pubsub_proxy topic = %s\n", topic);
 		  while(topic) {
        _proxy_sub(trim(topic, 0), key);
         topic =  strtok(NULL, topic_delim);
@@ -283,89 +271,17 @@
 
 		}  
 		else if(strcmp(action, "stop") == 0) {
-			
+			logger->info( "Stopping Bus...");			
 			free(buf);
 			break;
 		} else {
 			logger->error( "BusServerSocket::run_pubsub_proxy : unrecognized action %s", action);
 		}
-		
 		free(buf);
 	}
 
-	logger->info( "Stopping Bus...");
+
 	shm_sendto(shm_socket, "stop_finished", strlen( "stop_finished") +1, key);
 
 	return NULL;
 }
-
-
-
-// /**
-//  * deprecate
-//  * @str "<**sub**>{缁忔祹}"
-//  */
-
-// int BusServerSocket::parse_pubsub_topic(char *str, size_t size, char **_action, char **_topic, size_t *head_len ) {
-//  char *ptr = str;
-//  char *str_end_ptr = str + size;
-//  char *action_start_ptr;
-//  char *action_end_ptr;
-//  size_t action_len = 0;
-
-//  char *topic_start_ptr;
-//  char *topic_end_ptr;
-//  size_t topic_len = 0;
-
-//  // if (strlen(identifier) > strlen(str)) {
-//  //  return 0;
-//  // }
-
-//  if (strncmp(ptr, ACTION_LIDENTIFIER, strlen(ACTION_LIDENTIFIER)) == 0) {
-//   ptr += strlen(ACTION_LIDENTIFIER);
-//   action_start_ptr = ptr;
-//   while(strncmp(++ptr, ACTION_RIDENTIFIER, strlen(ACTION_RIDENTIFIER)) != 0) {
-//     if(ptr >= str_end_ptr) {
-//       return 0;
-//     }
-//   }
-// // printf("%s\n", ptr);
-//   action_end_ptr = ptr;
-//   action_len = action_end_ptr - action_start_ptr;
-//   ptr += strlen(ACTION_RIDENTIFIER);
-// // printf("%s\n", ptr);
-// // printf("%s\n", str_end_ptr-1);
-//   if(strncmp(ptr, TOPIC_LIDENTIFIER, strlen(TOPIC_LIDENTIFIER)) == 0 ) {
-//     topic_start_ptr = ptr+strlen(TOPIC_LIDENTIFIER);
-   
-
-//     while(strncmp(++ptr, TOPIC_RIDENTIFIER, strlen(TOPIC_RIDENTIFIER)) != 0) {
-//       if(ptr >= str_end_ptr) {
-//         return 0;
-//       }
-//     }
-//     topic_end_ptr = ptr;
-//     topic_len = topic_end_ptr - topic_start_ptr;
-    
-//     ptr += strlen(TOPIC_RIDENTIFIER);
-   
-//   } else {
-//     return 0;
-//   }
-//  } else {
-//   return 0;
-//  }
-
-//  char *topic = (char *)malloc(topic_len+1);
-//  strncpy(topic, topic_start_ptr, topic_len);
-//  *(topic+topic_len) = '\0';
-//  *_topic = topic;
-
-//  char *action = (char *)malloc(action_len+1);
-//  strncpy(action, action_start_ptr, action_len);
-//  *(action+action_len) = '\0';
-//  *_action = action;
-//  *head_len = ptr-str;
-
-//  return 1;
-// }
\ No newline at end of file

--
Gitblit v1.8.0