subscription_queue.h
Go to the documentation of this file.
1 #include "sick_scan/sick_scan_base.h" /* Base definitions included in all header files, added by add_sick_scan_base_header.py. Do not edit this line. */
2 /*
3  * Copyright (C) 2009, Willow Garage, Inc.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * * Redistributions of source code must retain the above copyright notice,
8  * this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the names of Willow Garage, Inc. nor the names of its
13  * contributors may be used to endorse or promote products derived from
14  * this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26  * POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #ifndef ROSCPP_SUBSCRIPTION_QUEUE_H
30 #define ROSCPP_SUBSCRIPTION_QUEUE_H
31 
32 #include "forwards.h"
33 #include "common.h"
34 #include "ros/message_event.h"
36 
37 //#include <boost/thread/recursive_mutex.hpp>
38 #include <mutex>
39 #include <memory>
40 #include <deque>
41 
42 namespace roswrap
43 {
44 
45 class MessageDeserializer;
46 typedef std::shared_ptr<MessageDeserializer> MessageDeserializerPtr;
47 
48 class SubscriptionCallbackHelper;
49 typedef std::shared_ptr<SubscriptionCallbackHelper> SubscriptionCallbackHelperPtr;
50 
51 class ROSCPP_DECL SubscriptionQueue : public CallbackInterface, public std::enable_shared_from_this<SubscriptionQueue>
52 {
53 private:
54  struct Item
55  {
58 
61 
64  };
65  typedef std::deque<Item> D_Item;
66 
67 public:
68  SubscriptionQueue(const std::string& topic, int32_t queue_size, bool allow_concurrent_callbacks);
70 
71  void push(const SubscriptionCallbackHelperPtr& helper, const MessageDeserializerPtr& deserializer,
72  bool has_tracked_object, const VoidConstWPtr& tracked_object, bool nonconst_need_copy,
73  ros::Time receipt_time = ros::Time(), bool* was_full = 0);
74  void clear();
75 
77  virtual bool ready();
78  bool full();
79 
80 private:
81  bool fullNoLock();
82  std::string topic_;
83  int32_t size_;
84  bool full_;
85 
86  std::mutex queue_mutex_;
88  uint32_t queue_size_;
90 
91  boost::recursive_mutex callback_mutex_;
92 };
93 
94 }
95 
96 #endif // ROSCPP_SUBSCRIPTION_QUEUE_H
callback_queue_interface.h
forwards.h
roswrap::SubscriptionQueue::Item::tracked_object
VoidConstWPtr tracked_object
Definition: subscription_queue.h:60
roswrap::MessageDeserializerPtr
std::shared_ptr< MessageDeserializer > MessageDeserializerPtr
Definition: message_deserializer.h:62
roswrap::SubscriptionQueue::full_
bool full_
Definition: subscription_queue.h:84
roswrap::SubscriptionQueue::Item::nonconst_need_copy
bool nonconst_need_copy
Definition: subscription_queue.h:62
roswrap::SubscriptionQueue::Item::deserializer
MessageDeserializerPtr deserializer
Definition: subscription_queue.h:57
roswrap::VoidConstWPtr
std::weak_ptr< void const > VoidConstWPtr
Definition: forwards.h:55
roswrap::CallbackInterface::CallResult
CallResult
Possible results for the call() method.
Definition: callback_queue_interface.h:55
roswrap::SubscriptionQueue::queue_size_
uint32_t queue_size_
Definition: subscription_queue.h:88
roswrap::SubscriptionQueue::callback_mutex_
boost::recursive_mutex callback_mutex_
Definition: subscription_queue.h:91
roswrap::SubscriptionQueue::size_
int32_t size_
Definition: subscription_queue.h:83
roswrap::SubscriptionQueue::topic_
std::string topic_
Definition: subscription_queue.h:82
roswrap::SubscriptionCallbackHelperPtr
std::shared_ptr< SubscriptionCallbackHelper > SubscriptionCallbackHelperPtr
Definition: message_deserializer.h:43
sick_scan_xd_api_test.queue_size
queue_size
Definition: sick_scan_xd_api_test.py:353
roswrap::SubscriptionQueue::Item
Definition: subscription_queue.h:54
roswrap
Definition: param_modi.cpp:41
roswrap::SubscriptionQueue
Definition: subscription_queue.h:51
common.h
ros::Time
roswrap::SubscriptionQueue::queue_
D_Item queue_
Definition: subscription_queue.h:87
roswrap::SubscriptionQueue::D_Item
std::deque< Item > D_Item
Definition: subscription_queue.h:65
roswrap::SubscriptionQueue::queue_mutex_
std::mutex queue_mutex_
Definition: subscription_queue.h:86
sick_scan_base.h
roswrap::CallbackInterface
Abstract interface for items which can be added to a CallbackQueueInterface.
Definition: callback_queue_interface.h:49
ROSCPP_DECL
#define ROSCPP_DECL
Definition: roswrap/src/cfgsimu/sick_scan/ros/common.h:63
roswrap::service::call
bool call(const std::string &service_name, MReq &req, MRes &res)
Invoke an RPC service.
Definition: service.h:66
roswrap::SubscriptionQueue::Item::receipt_time
ros::Time receipt_time
Definition: subscription_queue.h:63
roswrap::SubscriptionQueue::Item::has_tracked_object
bool has_tracked_object
Definition: subscription_queue.h:59
roswrap::SubscriptionQueue::Item::helper
SubscriptionCallbackHelperPtr helper
Definition: subscription_queue.h:56
roswrap::SubscriptionQueue::allow_concurrent_callbacks_
bool allow_concurrent_callbacks_
Definition: subscription_queue.h:89


sick_scan_xd
Author(s): Michael Lehning , Jochen Sprickerhof , Martin Günther
autogenerated on Fri Oct 25 2024 02:47:12