Skip to content
Snippets Groups Projects
Commit 4e616144 authored by Ernesto Corbellini's avatar Ernesto Corbellini
Browse files

Added finish function for the client.

parent 1da83d81
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,7 @@ import org.ros.node.topic.Subscriber; ...@@ -8,6 +8,7 @@ import org.ros.node.topic.Subscriber;
import org.ros.node.topic.Publisher; import org.ros.node.topic.Publisher;
import org.ros.message.MessageListener; import org.ros.message.MessageListener;
import org.ros.internal.message.Message; import org.ros.internal.message.Message;
import java.util.concurrent.TimeUnit;
public class ActionClient<T_ACTION_GOAL extends Message, public class ActionClient<T_ACTION_GOAL extends Message,
T_ACTION_FEEDBACK extends Message, T_ACTION_FEEDBACK extends Message,
...@@ -17,12 +18,12 @@ public class ActionClient<T_ACTION_GOAL extends Message, ...@@ -17,12 +18,12 @@ public class ActionClient<T_ACTION_GOAL extends Message,
String actionGoalType; String actionGoalType;
String actionResultType; String actionResultType;
String actionFeedbackType; String actionFeedbackType;
Publisher<T_ACTION_GOAL> goalPublisher; Publisher<T_ACTION_GOAL> goalPublisher = null;
//Publisher<actionlib_msgs.cancel> clientCancel; //Publisher<actionlib_msgs.cancel> clientCancel;
//Suscriber<actionlib_msgs.status> serverStatus; //Suscriber<actionlib_msgs.status> serverStatus;
Subscriber<T_ACTION_RESULT> serverResult; Subscriber<T_ACTION_RESULT> serverResult = null;
Subscriber<T_ACTION_FEEDBACK> serverFeedback; Subscriber<T_ACTION_FEEDBACK> serverFeedback = null;
ConnectedNode node; ConnectedNode node = null;
String actionName; String actionName;
ActionClientListener callbackTarget = null; ActionClientListener callbackTarget = null;
...@@ -51,6 +52,12 @@ public class ActionClient<T_ACTION_GOAL extends Message, ...@@ -51,6 +52,12 @@ public class ActionClient<T_ACTION_GOAL extends Message,
// actionlib_msgs.cancel._TYPE); // actionlib_msgs.cancel._TYPE);
} }
private void unpublishClient() {
if (goalPublisher != null) {
goalPublisher.shutdown(5, TimeUnit.SECONDS);
}
}
public T_ACTION_GOAL newGoalMessage() { public T_ACTION_GOAL newGoalMessage() {
return goalPublisher.newMessage(); return goalPublisher.newMessage();
} }
...@@ -86,6 +93,15 @@ public class ActionClient<T_ACTION_GOAL extends Message, ...@@ -86,6 +93,15 @@ public class ActionClient<T_ACTION_GOAL extends Message,
actionlib_tutorials.FibonacciActionFeedback._TYPE);*/ actionlib_tutorials.FibonacciActionFeedback._TYPE);*/
} }
private void unsubscribeToServer() {
if (serverFeedback != null) {
serverFeedback.shutdown(5, TimeUnit.SECONDS);
}
if (serverResult != null) {
serverResult.shutdown(5, TimeUnit.SECONDS);
}
}
public void gotResult(T_ACTION_RESULT message) { public void gotResult(T_ACTION_RESULT message) {
// Propagate the callback // Propagate the callback
if (callbackTarget != null) { if (callbackTarget != null) {
...@@ -108,4 +124,12 @@ public class ActionClient<T_ACTION_GOAL extends Message, ...@@ -108,4 +124,12 @@ public class ActionClient<T_ACTION_GOAL extends Message,
subscribeToServer(node); subscribeToServer(node);
} }
/**
* Finish the action client. Unregister publishers and listeners.
*/
public void finish() {
callbackTarget = null;
unpublishClient();
unsubscribeToServer();
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment