wangzhengquan
2021-02-05 14c345b38d57fd814f217eb8465963a08ca79f7e
src/socket/bus_server_socket.cpp
@@ -58,25 +58,7 @@
}
BusServerSocket::~BusServerSocket() {
   SHMKeySet *subscripter_set;
   SHMTopicSubMap::iterator map_iter;
   stop();
   if(topic_sub_map != NULL) {
      for (map_iter = topic_sub_map->begin(); map_iter != topic_sub_map->end(); map_iter++) {
         subscripter_set = map_iter->second;
         if(subscripter_set != NULL) {
            subscripter_set->clear();
            mm_free((void *)subscripter_set);
         }
      }
      topic_sub_map->clear();
      mem_pool_free_by_key(SHM_BUS_MAP_KEY);
   }
   shm_close_socket(shm_socket);
   logger->debug("BusServerSocket destory 3");
   destroy();
}
@@ -111,8 +93,6 @@
   if( shm_socket->key <= 0) {
      return -1;
   }
   // snprintf(buf, 128, "%sstop%s%s%s%s", ACTION_LIDENTIFIER, ACTION_RIDENTIFIER, TOPIC_LIDENTIFIER, "", TOPIC_RIDENTIFIER);
   // return shm_sendto(shm_socket, buf, strlen(buf), shm_socket->key, NULL, 0);
   bus_head_t head = {};
   memcpy(head.action, "stop", sizeof(head.action));
   head.topic_size = 0;
@@ -122,13 +102,33 @@
   void *buf;
   int size = ShmModSocket::get_bus_sendbuf(head, NULL, 0, NULL,  0, &buf);
   if(size > 0) {
      ret = client.sendandrecv( buf, size, shm_socket->key, NULL, NULL);
      ret = client.sendto( buf, size, shm_socket->key);
      free(buf);
      return ret;
   } else {
      return -1;
   }
}
int  BusServerSocket::destroy() {
   SHMKeySet *subscripter_set;
   SHMTopicSubMap::iterator map_iter;
   if(topic_sub_map != NULL) {
      for (map_iter = topic_sub_map->begin(); map_iter != topic_sub_map->end(); map_iter++) {
         subscripter_set = map_iter->second;
         if(subscripter_set != NULL) {
            subscripter_set->clear();
            mm_free((void *)subscripter_set);
         }
      }
      topic_sub_map->clear();
      mem_pool_free_by_key(SHM_BUS_MAP_KEY);
   }
   shm_close_socket(shm_socket);
   logger->debug("BusServerSocket destory 3");
   return 0;
}
/*
@@ -280,8 +280,6 @@
      free(buf);
   }
   shm_sendto(shm_socket, "stop_finished", strlen( "stop_finished") +1, key);
   return NULL;
}