Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 #ifndef ROSCPP_SUBSCRIBE_OPTIONS_H
00029 #define ROSCPP_SUBSCRIBE_OPTIONS_H
00030 
00031 #include "ros/forwards.h"
00032 #include "common.h"
00033 #include "ros/transport_hints.h"
00034 #include "ros/message_traits.h"
00035 #include "subscription_callback_helper.h"
00036 
00037 namespace ros
00038 {
00039 
00043 struct ROSCPP_DECL SubscribeOptions
00044 {
00048   SubscribeOptions()
00049   : queue_size(1)
00050   , callback_queue(0)
00051   , allow_concurrent_callbacks(false)
00052   {
00053   }
00054 
00064   SubscribeOptions(const std::string& _topic, uint32_t _queue_size, const std::string& _md5sum, const std::string& _datatype)
00065   : topic(_topic)
00066   , queue_size(_queue_size)
00067   , md5sum(_md5sum)
00068   , datatype(_datatype)
00069   , callback_queue(0)
00070   , allow_concurrent_callbacks(false)
00071   {}
00072 
00081   template<class P>
00082   void initByFullCallbackType(const std::string& _topic, uint32_t _queue_size,
00083        const boost::function<void (P)>& _callback,
00084        const boost::function<boost::shared_ptr<typename ParameterAdapter<P>::Message>(void)>& factory_fn = DefaultMessageCreator<typename ParameterAdapter<P>::Message>())
00085   {
00086     typedef typename ParameterAdapter<P>::Message MessageType;
00087     topic = _topic;
00088     queue_size = _queue_size;
00089     md5sum = message_traits::md5sum<MessageType>();
00090     datatype = message_traits::datatype<MessageType>();
00091     helper = boost::make_shared<SubscriptionCallbackHelperT<P> >(_callback, factory_fn);
00092   }
00093 
00102   template<class M>
00103   void init(const std::string& _topic, uint32_t _queue_size,
00104        const boost::function<void (const boost::shared_ptr<M const>&)>& _callback,
00105        const boost::function<boost::shared_ptr<M>(void)>& factory_fn = DefaultMessageCreator<M>())
00106   {
00107     typedef typename ParameterAdapter<M>::Message MessageType;
00108     topic = _topic;
00109     queue_size = _queue_size;
00110     md5sum = message_traits::md5sum<MessageType>();
00111     datatype = message_traits::datatype<MessageType>();
00112     helper = boost::make_shared<SubscriptionCallbackHelperT<const boost::shared_ptr<MessageType const>&> >(_callback, factory_fn);
00113   }
00114 
00115   std::string topic;                                                
00116   uint32_t queue_size;                                              
00117 
00118   std::string md5sum;                                               
00119   std::string datatype;                                             
00120 
00121   SubscriptionCallbackHelperPtr helper;                              
00122 
00123   CallbackQueueInterface* callback_queue;                           
00124 
00127   bool allow_concurrent_callbacks;
00128 
00139   VoidConstPtr tracked_object;
00140 
00141   TransportHints transport_hints;                                   
00142 
00153   template<class M>
00154   static SubscribeOptions create(const std::string& topic, uint32_t queue_size,
00155                                  const boost::function<void (const boost::shared_ptr<M const>&)>& callback,
00156                                  const VoidConstPtr& tracked_object, CallbackQueueInterface* queue)
00157   {
00158     SubscribeOptions ops;
00159     ops.init<M>(topic, queue_size, callback);
00160     ops.tracked_object = tracked_object;
00161     ops.callback_queue = queue;
00162     return ops;
00163   }
00164 };
00165 
00166 }
00167 
00168 #endif
00169 
00170 
 
roscpp
Author(s): Morgan Quigley, Josh Faust, Brian Gerkey, Troy Straszheim
autogenerated on Tue Mar 7 2017 03:44:47