Go to the documentation of this file.00001 #include "robodyn_utilities/GoalStatusSender.h"
00002
00007 GoalStatusSender::GoalStatusSender(const std::string& name)
00008 {
00009 goalStatusMsg.header.frame_id = name;
00010 }
00011
00012 GoalStatusSender::~GoalStatusSender()
00013 {
00014 }
00015
00021 void GoalStatusSender::sendStatusMessage(bool clear)
00022 {
00023 if (!goalStatusMsg.status_list.empty())
00024 {
00025 goalStatusMsg.header.stamp = ros::Time::now();
00026 writeStatus(goalStatusMsg);
00027
00028 if (clear)
00029 {
00030 clearStatusMessage();
00031 }
00032 }
00033 }
00034
00041 void GoalStatusSender::sendStatusMessage(const actionlib_msgs::GoalStatus& status, bool clear)
00042 {
00043 addStatus(status);
00044 sendStatusMessage(clear);
00045 }
00046
00052 void GoalStatusSender::sendStatusMessage(const ros::Time& stamp, const std::string& id,
00053 const actionlib_msgs::GoalStatus::_status_type& status,
00054 const std::string& text, bool clear)
00055 {
00056 addStatus(stamp, id, status, text);
00057 sendStatusMessage(clear);
00058 }
00059
00065 void GoalStatusSender::sendStatusMessage(const actionlib_msgs::GoalStatus::_status_type& status,
00066 const std::string& text, bool clear)
00067 {
00068 addStatus(ros::Time::now(), goalStatusMsg.header.frame_id, status, text);
00069 sendStatusMessage(clear);
00070 }
00071
00076 void GoalStatusSender::clearStatusMessage()
00077 {
00078 goalStatusMsg.status_list.clear();
00079 }
00080
00087 unsigned int GoalStatusSender::addStatus(const actionlib_msgs::GoalStatus& status)
00088 {
00089 goalStatusMsg.status_list.push_back(status);
00090 return goalStatusMsg.status_list.size() - 1;
00091 }
00092
00098 unsigned int GoalStatusSender::addStatus(const ros::Time& stamp, const std::string& id,
00099 const actionlib_msgs::GoalStatus::_status_type& status,
00100 const std::string& text)
00101 {
00102 actionlib_msgs::GoalStatus gStatus;
00103 gStatus.goal_id.stamp = stamp;
00104 gStatus.goal_id.id = id;
00105 gStatus.status = status;
00106 gStatus.text = text;
00107 return addStatus(gStatus);
00108 }
00109
00117 actionlib_msgs::GoalStatus& GoalStatusSender::status(unsigned int index)
00118 {
00119 if (index < goalStatusMsg.status_list.size())
00120 {
00121 return goalStatusMsg.status_list[index];
00122 }
00123 else
00124 {
00125 std::stringstream ss;
00126 ss << "Trying to access status " << index << " that is out of range " << goalStatusMsg.status_list.size();
00127 throw std::out_of_range(ss.str());
00128 }
00129 }
00130
00138 const actionlib_msgs::GoalStatus& GoalStatusSender::status(unsigned int index) const
00139 {
00140 if (index < goalStatusMsg.status_list.size())
00141 {
00142 return goalStatusMsg.status_list[index];
00143 }
00144 else
00145 {
00146 std::stringstream ss;
00147 ss << "Trying to access status " << index << " that is out of range " << goalStatusMsg.status_list.size();
00148 throw std::out_of_range(ss.str());
00149 }
00150 }
00151
00158 void GoalStatusSender::removeStatus(unsigned int index)
00159 {
00160 if (index < goalStatusMsg.status_list.size())
00161 {
00162 goalStatusMsg.status_list.erase(goalStatusMsg.status_list.begin() + index);
00163 }
00164 else
00165 {
00166 std::stringstream ss;
00167 ss << "Trying to remove status " << index << " that is out of range " << goalStatusMsg.status_list.size();
00168 throw std::out_of_range(ss.str());
00169 }
00170 }
00171