From d91274e74aebd1c3817808b4ac6138325a3f06b6 Mon Sep 17 00:00:00 2001 From: Arne Date: Wed, 29 Aug 2018 17:29:29 +0200 Subject: [PATCH 1/2] added autogenrated message parameters for ROS action files --- .../internal/message/GenerateInterfaces.java | 25 ++++++++++---- .../message/MessageGenerationTemplate.java | 28 +++++++++++++++ .../ActionFeedbackGenerationTemplate.java | 34 +++++++++++++++++++ .../action/ActionGoalGenerationTemplate.java | 34 +++++++++++++++++++ .../ActionResultGenerationTemplate.java | 34 +++++++++++++++++++ 5 files changed, 149 insertions(+), 6 deletions(-) create mode 100644 message_generation/src/main/java/org/ros/internal/message/MessageGenerationTemplate.java create mode 100644 message_generation/src/main/java/org/ros/internal/message/action/ActionFeedbackGenerationTemplate.java create mode 100644 message_generation/src/main/java/org/ros/internal/message/action/ActionGoalGenerationTemplate.java create mode 100644 message_generation/src/main/java/org/ros/internal/message/action/ActionResultGenerationTemplate.java diff --git a/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java b/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java index 4d3b23e2..1a53d13e 100644 --- a/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java +++ b/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java @@ -24,6 +24,9 @@ import org.ros.internal.message.definition.MessageDefinitionProviderChain; import org.ros.internal.message.definition.MessageDefinitionTupleParser; import org.ros.internal.message.action.ActionDefinitionFileProvider; +import org.ros.internal.message.action.ActionGoalGenerationTemplate; +import org.ros.internal.message.action.ActionFeedbackGenerationTemplate; +import org.ros.internal.message.action.ActionResultGenerationTemplate; import org.ros.internal.message.service.ServiceDefinitionFileProvider; import org.ros.internal.message.topic.TopicDefinitionFileProvider; import org.ros.message.MessageDeclaration; @@ -46,6 +49,10 @@ public class GenerateInterfaces { private final ActionDefinitionFileProvider actionDefinitionFileProvider; private final MessageDefinitionProviderChain messageDefinitionProviderChain; private final MessageFactory messageFactory; + private final ActionGoalGenerationTemplate actionGoalGenerationTemplate = new ActionGoalGenerationTemplate(); + private final ActionFeedbackGenerationTemplate actionFeedbackGenerationTemplate = new ActionFeedbackGenerationTemplate(); + private final ActionResultGenerationTemplate actionResultGenerationTemplate = new ActionResultGenerationTemplate(); + static private final String ROS_PACKAGE_PATH = "ROS_PACKAGE_PATH"; public GenerateInterfaces() { @@ -153,12 +160,18 @@ private void writeActionInterfaces(File outputDirectory, Collection pack writeInterface(actionDeclaration, outputDirectory, false); List goalResultAndFeedback = MessageDefinitionTupleParser.parse(definition, 3); - MessageDeclaration goalDeclaration = - MessageDeclaration.of(actionType.getType() + "Goal", goalResultAndFeedback.get(0)); - MessageDeclaration resultDeclaration = - MessageDeclaration.of(actionType.getType() + "Result", goalResultAndFeedback.get(1)); - MessageDeclaration feedbackDeclaration = - MessageDeclaration.of(actionType.getType() + "Feedback", goalResultAndFeedback.get(2)); + MessageDeclaration goalDeclaration = MessageDeclaration.of( + actionType.getType() + "Goal", + actionGoalGenerationTemplate.applyTemplate(goalResultAndFeedback.get(0)) + ); + MessageDeclaration resultDeclaration = MessageDeclaration.of( + actionType.getType() + "Result", + actionResultGenerationTemplate.applyTemplate(goalResultAndFeedback.get(1)) + ); + MessageDeclaration feedbackDeclaration = MessageDeclaration.of( + actionType.getType() + "Feedback", + actionFeedbackGenerationTemplate.applyTemplate(goalResultAndFeedback.get(2)) + ); writeInterface(goalDeclaration, outputDirectory, true); writeInterface(resultDeclaration, outputDirectory, true); diff --git a/message_generation/src/main/java/org/ros/internal/message/MessageGenerationTemplate.java b/message_generation/src/main/java/org/ros/internal/message/MessageGenerationTemplate.java new file mode 100644 index 00000000..ba1ed921 --- /dev/null +++ b/message_generation/src/main/java/org/ros/internal/message/MessageGenerationTemplate.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package org.ros.internal.message; + +/** + * @author arne.peters@tum.de (Arne Peters) + */ +public interface MessageGenerationTemplate { + + /** + * @return returns this {@link Message} as a {@link RawMessage} + */ + public String applyTemplate(String messageSource); +} diff --git a/message_generation/src/main/java/org/ros/internal/message/action/ActionFeedbackGenerationTemplate.java b/message_generation/src/main/java/org/ros/internal/message/action/ActionFeedbackGenerationTemplate.java new file mode 100644 index 00000000..2091eef6 --- /dev/null +++ b/message_generation/src/main/java/org/ros/internal/message/action/ActionFeedbackGenerationTemplate.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package org.ros.internal.message.action; + +/** + * @author arne.peters@tum.de (Arne Peters) + */ +public class ActionFeedbackGenerationTemplate { + + /** + * @return returns this {@link Message} as a {@link RawMessage} + */ + public String applyTemplate(String messageSource) { + return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" + + "\n" + + "Header header\n" + + "actionlib_msgs/GoalStatus status\n" + + messageSource; + } +} diff --git a/message_generation/src/main/java/org/ros/internal/message/action/ActionGoalGenerationTemplate.java b/message_generation/src/main/java/org/ros/internal/message/action/ActionGoalGenerationTemplate.java new file mode 100644 index 00000000..87e9b364 --- /dev/null +++ b/message_generation/src/main/java/org/ros/internal/message/action/ActionGoalGenerationTemplate.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package org.ros.internal.message.action; + +/** + * @author arne.peters@tum.de (Arne Peters) + */ +public class ActionGoalGenerationTemplate { + + /** + * @return returns this {@link Message} as a {@link RawMessage} + */ + public String applyTemplate(String messageSource) { + return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" + + "\n" + + "Header header\n" + + "actionlib_msgs/GoalID goal_id\n" + + messageSource; + } +} diff --git a/message_generation/src/main/java/org/ros/internal/message/action/ActionResultGenerationTemplate.java b/message_generation/src/main/java/org/ros/internal/message/action/ActionResultGenerationTemplate.java new file mode 100644 index 00000000..2db93a73 --- /dev/null +++ b/message_generation/src/main/java/org/ros/internal/message/action/ActionResultGenerationTemplate.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package org.ros.internal.message.action; + +/** + * @author arne.peters@tum.de (Arne Peters) + */ +public class ActionResultGenerationTemplate { + + /** + * @return returns this {@link Message} as a {@link RawMessage} + */ + public String applyTemplate(String messageSource) { + return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" + + "\n" + + "Header header\n" + + "actionlib_msgs/GoalStatus status\n" + + messageSource; + } +} From 5a2cdcb0805396adbe0e988dc06bdd031ae4314c Mon Sep 17 00:00:00 2001 From: Arne Date: Thu, 30 Aug 2018 15:48:25 +0200 Subject: [PATCH 2/2] adjusted autogenerated code to match actionlib defaults --- .../internal/message/GenerateInterfaces.java | 43 +++++++++++++++---- ...ctionGenerationTemplateActionFeedback.java | 36 ++++++++++++++++ ...> ActionGenerationTemplateActionGoal.java} | 6 ++- .../ActionGenerationTemplateActionResult.java | 36 ++++++++++++++++ .../ActionGenerationTemplateFeedback.java | 34 +++++++++++++++ ...java => ActionGenerationTemplateGoal.java} | 8 ++-- ...va => ActionGenerationTemplateResult.java} | 8 ++-- 7 files changed, 152 insertions(+), 19 deletions(-) create mode 100644 message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionFeedback.java rename message_generation/src/main/java/org/ros/internal/message/action/{ActionGoalGenerationTemplate.java => ActionGenerationTemplateActionGoal.java} (84%) create mode 100644 message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionResult.java create mode 100644 message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateFeedback.java rename message_generation/src/main/java/org/ros/internal/message/action/{ActionFeedbackGenerationTemplate.java => ActionGenerationTemplateGoal.java} (84%) rename message_generation/src/main/java/org/ros/internal/message/action/{ActionResultGenerationTemplate.java => ActionGenerationTemplateResult.java} (84%) diff --git a/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java b/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java index 1a53d13e..00bff33d 100644 --- a/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java +++ b/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java @@ -24,9 +24,12 @@ import org.ros.internal.message.definition.MessageDefinitionProviderChain; import org.ros.internal.message.definition.MessageDefinitionTupleParser; import org.ros.internal.message.action.ActionDefinitionFileProvider; -import org.ros.internal.message.action.ActionGoalGenerationTemplate; -import org.ros.internal.message.action.ActionFeedbackGenerationTemplate; -import org.ros.internal.message.action.ActionResultGenerationTemplate; +import org.ros.internal.message.action.ActionGenerationTemplateActionGoal; +import org.ros.internal.message.action.ActionGenerationTemplateActionResult; +import org.ros.internal.message.action.ActionGenerationTemplateActionFeedback; +import org.ros.internal.message.action.ActionGenerationTemplateGoal; +import org.ros.internal.message.action.ActionGenerationTemplateResult; +import org.ros.internal.message.action.ActionGenerationTemplateFeedback; import org.ros.internal.message.service.ServiceDefinitionFileProvider; import org.ros.internal.message.topic.TopicDefinitionFileProvider; import org.ros.message.MessageDeclaration; @@ -49,9 +52,14 @@ public class GenerateInterfaces { private final ActionDefinitionFileProvider actionDefinitionFileProvider; private final MessageDefinitionProviderChain messageDefinitionProviderChain; private final MessageFactory messageFactory; - private final ActionGoalGenerationTemplate actionGoalGenerationTemplate = new ActionGoalGenerationTemplate(); - private final ActionFeedbackGenerationTemplate actionFeedbackGenerationTemplate = new ActionFeedbackGenerationTemplate(); - private final ActionResultGenerationTemplate actionResultGenerationTemplate = new ActionResultGenerationTemplate(); + + private final MessageGenerationTemplate actionGenerationTemplateGoal = new ActionGenerationTemplateGoal(); + private final MessageGenerationTemplate actionGenerationTemplateResult = new ActionGenerationTemplateResult(); + private final MessageGenerationTemplate actionGenerationTemplateFeedback = new ActionGenerationTemplateFeedback(); + + private final MessageGenerationTemplate actionGenerationTemplateActionGoal = new ActionGenerationTemplateActionGoal(); + private final MessageGenerationTemplate actionGenerationTemplateActionResult = new ActionGenerationTemplateActionResult(); + private final MessageGenerationTemplate actionGenerationTemplateActionFeedback = new ActionGenerationTemplateActionFeedback(); static private final String ROS_PACKAGE_PATH = "ROS_PACKAGE_PATH"; @@ -162,20 +170,37 @@ private void writeActionInterfaces(File outputDirectory, Collection pack MessageDeclaration goalDeclaration = MessageDeclaration.of( actionType.getType() + "Goal", - actionGoalGenerationTemplate.applyTemplate(goalResultAndFeedback.get(0)) + actionGenerationTemplateGoal.applyTemplate(goalResultAndFeedback.get(0)) ); MessageDeclaration resultDeclaration = MessageDeclaration.of( actionType.getType() + "Result", - actionResultGenerationTemplate.applyTemplate(goalResultAndFeedback.get(1)) + actionGenerationTemplateResult.applyTemplate(goalResultAndFeedback.get(1)) ); MessageDeclaration feedbackDeclaration = MessageDeclaration.of( actionType.getType() + "Feedback", - actionFeedbackGenerationTemplate.applyTemplate(goalResultAndFeedback.get(2)) + actionGenerationTemplateFeedback.applyTemplate(goalResultAndFeedback.get(2)) + ); + + MessageDeclaration actionGoalDeclaration = MessageDeclaration.of( + actionType.getType() + "ActionGoal", + actionGenerationTemplateActionGoal.applyTemplate(actionType.getType()) + ); + MessageDeclaration actionResultDeclaration = MessageDeclaration.of( + actionType.getType() + "ActionResult", + actionGenerationTemplateActionResult.applyTemplate(actionType.getType()) + ); + MessageDeclaration actionFeedbackDeclaration = MessageDeclaration.of( + actionType.getType() + "ActionFeedback", + actionGenerationTemplateActionFeedback.applyTemplate(actionType.getType()) ); writeInterface(goalDeclaration, outputDirectory, true); writeInterface(resultDeclaration, outputDirectory, true); writeInterface(feedbackDeclaration, outputDirectory, true); + + writeInterface(actionGoalDeclaration, outputDirectory, true); + writeInterface(actionResultDeclaration, outputDirectory, true); + writeInterface(actionFeedbackDeclaration, outputDirectory, true); } } diff --git a/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionFeedback.java b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionFeedback.java new file mode 100644 index 00000000..239192ed --- /dev/null +++ b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionFeedback.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package org.ros.internal.message.action; + +import org.ros.internal.message.MessageGenerationTemplate; + +/** + * @author arne.peters@tum.de (Arne Peters) + */ +public class ActionGenerationTemplateActionFeedback implements MessageGenerationTemplate { + + /** + * @return returns this {@link Message} as a {@link RawMessage} + */ + public String applyTemplate(String messageSource) { + return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" + + "\n" + + "Header header\n" + + "actionlib_msgs/GoalStatus status\n" + + messageSource + "Feedback feedback"; + } +} diff --git a/message_generation/src/main/java/org/ros/internal/message/action/ActionGoalGenerationTemplate.java b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionGoal.java similarity index 84% rename from message_generation/src/main/java/org/ros/internal/message/action/ActionGoalGenerationTemplate.java rename to message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionGoal.java index 87e9b364..3ea20a36 100644 --- a/message_generation/src/main/java/org/ros/internal/message/action/ActionGoalGenerationTemplate.java +++ b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionGoal.java @@ -16,10 +16,12 @@ package org.ros.internal.message.action; +import org.ros.internal.message.MessageGenerationTemplate; + /** * @author arne.peters@tum.de (Arne Peters) */ -public class ActionGoalGenerationTemplate { +public class ActionGenerationTemplateActionGoal implements MessageGenerationTemplate { /** * @return returns this {@link Message} as a {@link RawMessage} @@ -29,6 +31,6 @@ public String applyTemplate(String messageSource) { "\n" + "Header header\n" + "actionlib_msgs/GoalID goal_id\n" + - messageSource; + messageSource + "Goal goal"; } } diff --git a/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionResult.java b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionResult.java new file mode 100644 index 00000000..0a137b9a --- /dev/null +++ b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateActionResult.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package org.ros.internal.message.action; + +import org.ros.internal.message.MessageGenerationTemplate; + +/** + * @author arne.peters@tum.de (Arne Peters) + */ +public class ActionGenerationTemplateActionResult implements MessageGenerationTemplate { + + /** + * @return returns this {@link Message} as a {@link RawMessage} + */ + public String applyTemplate(String messageSource) { + return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" + + "\n" + + "Header header\n" + + "actionlib_msgs/GoalStatus status\n" + + messageSource + "Result result"; + } +} diff --git a/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateFeedback.java b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateFeedback.java new file mode 100644 index 00000000..9a466b08 --- /dev/null +++ b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateFeedback.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package org.ros.internal.message.action; + +import org.ros.internal.message.MessageGenerationTemplate; + +/** + * @author arne.peters@tum.de (Arne Peters) + */ +public class ActionGenerationTemplateFeedback implements MessageGenerationTemplate { + + /** + * @return returns this {@link Message} as a {@link RawMessage} + */ + public String applyTemplate(String messageSource) { + return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" + + "#feedback definition\n" + + messageSource; + } +} diff --git a/message_generation/src/main/java/org/ros/internal/message/action/ActionFeedbackGenerationTemplate.java b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateGoal.java similarity index 84% rename from message_generation/src/main/java/org/ros/internal/message/action/ActionFeedbackGenerationTemplate.java rename to message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateGoal.java index 2091eef6..3a085af3 100644 --- a/message_generation/src/main/java/org/ros/internal/message/action/ActionFeedbackGenerationTemplate.java +++ b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateGoal.java @@ -16,19 +16,19 @@ package org.ros.internal.message.action; +import org.ros.internal.message.MessageGenerationTemplate; + /** * @author arne.peters@tum.de (Arne Peters) */ -public class ActionFeedbackGenerationTemplate { +public class ActionGenerationTemplateGoal implements MessageGenerationTemplate { /** * @return returns this {@link Message} as a {@link RawMessage} */ public String applyTemplate(String messageSource) { return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" + - "\n" + - "Header header\n" + - "actionlib_msgs/GoalStatus status\n" + + "#goal definition" + messageSource; } } diff --git a/message_generation/src/main/java/org/ros/internal/message/action/ActionResultGenerationTemplate.java b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateResult.java similarity index 84% rename from message_generation/src/main/java/org/ros/internal/message/action/ActionResultGenerationTemplate.java rename to message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateResult.java index 2db93a73..23452920 100644 --- a/message_generation/src/main/java/org/ros/internal/message/action/ActionResultGenerationTemplate.java +++ b/message_generation/src/main/java/org/ros/internal/message/action/ActionGenerationTemplateResult.java @@ -16,19 +16,19 @@ package org.ros.internal.message.action; +import org.ros.internal.message.MessageGenerationTemplate; + /** * @author arne.peters@tum.de (Arne Peters) */ -public class ActionResultGenerationTemplate { +public class ActionGenerationTemplateResult implements MessageGenerationTemplate { /** * @return returns this {@link Message} as a {@link RawMessage} */ public String applyTemplate(String messageSource) { return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" + - "\n" + - "Header header\n" + - "actionlib_msgs/GoalStatus status\n" + + "#result definition" + messageSource; } }