rtt_rostopic_ros_publish_activity.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  tag: Ruben Smits Tue Nov 16 09:19:02 CET 2010 ros_publish_activity.cpp
3 
4  ros_publish_activity.cpp - description
5  -------------------
6  begin : Tue November 16 2010
7  copyright : (C) 2010 Ruben Smits
8  email : first.last@mech.kuleuven.be
9 
10  ***************************************************************************
11  * This library is free software; you can redistribute it and/or *
12  * modify it under the terms of the GNU Lesser General Public *
13  * License as published by the Free Software Foundation; either *
14  * version 2.1 of the License, or (at your option) any later version. *
15  * *
16  * This library is distributed in the hope that it will be useful, *
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
19  * Lesser General Public License for more details. *
20  * *
21  * You should have received a copy of the GNU Lesser General Public *
22  * License along with this library; if not, write to the Free Software *
23  * Foundation, Inc., 59 Temple Place, *
24  * Suite 330, Boston, MA 02111-1307 USA *
25  * *
26  ***************************************************************************/
27 
28 
29 
31 
32 namespace rtt_roscomm {
33 
34  using namespace RTT;
35 
37 
38  RosPublishActivity::RosPublishActivity( const std::string& name)
39  : Activity(ORO_SCHED_OTHER, RTT::os::LowestPriority, 0.0, 0, name)
40  {
41  Logger::In in("RosPublishActivity");
42  log(Debug)<<"Creating RosPublishActivity"<<endlog();
43  }
44 
47  for(iterator it = publishers.begin(); it != publishers.end(); ++it) {
48  (*it)->publish();
49  }
50  }
51 
53  shared_ptr ret = ros_pub_act.lock();
54  if ( !ret ) {
55  ret.reset(new RosPublishActivity("RosPublishActivity"));
56  ros_pub_act = ret;
57  ret->start();
58  }
59  return ret;
60  }
61 
64  publishers.insert(pub);
65  }
66 
69  publishers.erase(pub);
70  }
71 
73  Logger::In in("RosPublishActivity");
74  log(Info) << "RosPublishActivity cleans up: no more work."<<endlog();
75  stop();
76  }
77 
78 }
static weak_ptr ros_pub_act
This pointer may not be refcounted since it would prevent cleanup.
virtual bool stop()
boost::weak_ptr< RosPublishActivity > weak_ptr
const int LowestPriority
#define ORO_SCHED_OTHER


rtt_roscomm
Author(s): Ruben Smits, Jonathan Bohren
autogenerated on Sat Jun 8 2019 18:05:17