GoalStatusSender.cpp
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 


robodyn_utilities
Author(s):
autogenerated on Thu Jun 6 2019 18:56:07