publisher_manager.h
Go to the documentation of this file.
1 /*********************************************************************
2 * Software License Agreement (BSD License)
3 *
4 * Copyright (c) 2010, Willow Garage, Inc.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17 * * Neither the name of the Willow Garage nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 *********************************************************************/
34 
35 #ifndef ROSRT_PUBLISHER_MANAGER_H
36 #define ROSRT_PUBLISHER_MANAGER_H
37 
38 #include "mwsr_queue.h"
39 
40 #include <ros/atomic.h>
41 #include <ros/publisher.h>
42 #include <rosrt/publisher.h>
43 #include <lockfree/object_pool.h>
44 #include <boost/thread.hpp>
45 
46 namespace rosrt
47 {
48 
49 struct InitOptions;
50 
51 namespace detail
52 {
54 {
55 public:
56  struct PubItem
57  {
62  };
63 
64  PublishQueue(uint32_t size);
65 
67  uint32_t publishAll();
68 
69 private:
71 };
72 
74 {
75 public:
76  PublisherManager(const InitOptions& ops);
79 
80 private:
81  void publishThread();
82 
85  boost::mutex cond_mutex_;
86  boost::thread pub_thread_;
87  ros::atomic<uint32_t> pub_count_;
88  volatile bool running_;
89 };
90 
91 } // namespace detail
92 } // namespace rosrt
93 
94 #endif // ROSRT_PUBLISHER_MANAGER_H
95 
boost::condition_variable cond_
ros::atomic< uint32_t > pub_count_
VoidConstPtr(* CloneFunc)(const VoidConstPtr &msg)
Definition: publisher.h:51
Definition: managers.h:38
void publishThread(Publisher< std_msgs::UInt32 > &pub, bool &done)
void(* PublishFunc)(const ros::Publisher &pub, const VoidConstPtr &msg)
Definition: publisher.h:50
bool publish(const ros::Publisher &pub, const VoidConstPtr &msg, PublishFunc pub_func, CloneFunc clone_func)
Definition: publisher.cpp:50
MWSRQueue< PubItem > queue_
PublishQueue(uint32_t size)
Definition: publisher.cpp:55
bool push(const ros::Publisher &pub, const VoidConstPtr &msg, PublishFunc pub_func, CloneFunc clone_func)
Definition: publisher.cpp:60


rosrt
Author(s): Josh Faust
autogenerated on Fri Apr 5 2019 02:16:39