From aa09395ed7136d2b16c8f7d61535d058054f740b Mon Sep 17 00:00:00 2001 From: Dan Ambrosio <dan.ambrosio@stratom.com> Date: Wed, 29 Mar 2017 14:31:01 -0700 Subject: [PATCH] Enhancments to rosjava/rosjava_core#237 fix. This moves shutdown responsibility to the topicParticipantManager. --- .../java/org/ros/internal/node/DefaultNode.java | 9 +-------- .../node/topic/TopicParticipantManager.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/rosjava/src/main/java/org/ros/internal/node/DefaultNode.java b/rosjava/src/main/java/org/ros/internal/node/DefaultNode.java index 9dbe4089..a1572cb3 100644 --- a/rosjava/src/main/java/org/ros/internal/node/DefaultNode.java +++ b/rosjava/src/main/java/org/ros/internal/node/DefaultNode.java @@ -405,14 +405,7 @@ public class DefaultNode implements ConnectedNode { // NOTE(damonkohler): We don't want to raise potentially spurious // exceptions during shutdown that would interrupt the process. This is // simply best effort cleanup. - for (DefaultPublisher<?> publisher : topicParticipantManager.getPublishers()) { - publisher.shutdown(); - topicParticipantManager.removePublisher(publisher); - } - for (DefaultSubscriber<?> subscriber : topicParticipantManager.getSubscribers()) { - subscriber.shutdown(); - topicParticipantManager.removeSubscriber(subscriber); - } + topicParticipantManager.shutdown(); for (ServiceServer<?, ?> serviceServer : serviceManager.getServers()) { try { Response<Integer> response = diff --git a/rosjava/src/main/java/org/ros/internal/node/topic/TopicParticipantManager.java b/rosjava/src/main/java/org/ros/internal/node/topic/TopicParticipantManager.java index 85181412..c481c854 100644 --- a/rosjava/src/main/java/org/ros/internal/node/topic/TopicParticipantManager.java +++ b/rosjava/src/main/java/org/ros/internal/node/topic/TopicParticipantManager.java @@ -136,6 +136,19 @@ public class TopicParticipantManager { publisherConnections.remove(publisher, subscriberIdentifier); } + public void shutdown(){ + for(DefaultPublisher<?> publisher : publishers.values()){ + publisher.shutdown(); + removePublisher(publisher); + } + subscriberConnections.clear(); + for(DefaultSubscriber<?> subscriber : subscribers.values()){ + subscriber.shutdown(); + removeSubscriber(subscriber); + } + publisherConnections.clear(); + } + public Collection<DefaultSubscriber<?>> getSubscribers() { return ImmutableList.copyOf(subscribers.values()); } -- GitLab