35 #ifndef MESSAGE_FILTERS_SIGNAL1_H 36 #define MESSAGE_FILTERS_SIGNAL1_H 38 #include <boost/noncopyable.hpp> 44 #include <boost/bind.hpp> 45 #include <boost/thread/mutex.hpp> 60 template<
typename P,
typename M>
65 typedef boost::function<void(typename Adapter::Parameter)>
Callback;
76 callback_(Adapter::getParameter(my_event));
91 CallbackHelper1Ptr
addCallback(
const boost::function<
void(P)>& callback)
95 boost::mutex::scoped_lock lock(mutex_);
96 callbacks_.push_back(CallbackHelper1Ptr(helper));
97 return callbacks_.back();
102 boost::mutex::scoped_lock lock(mutex_);
103 typename V_CallbackHelper1::iterator it = std::find(callbacks_.begin(), callbacks_.end(), helper);
104 if (it != callbacks_.end())
106 callbacks_.erase(it);
112 boost::mutex::scoped_lock lock(mutex_);
113 bool nonconst_force_copy = callbacks_.size() > 1;
114 typename V_CallbackHelper1::iterator it = callbacks_.begin();
115 typename V_CallbackHelper1::iterator end = callbacks_.end();
116 for (; it != end; ++it)
118 const CallbackHelper1Ptr& helper = *it;
119 helper->call(event, nonconst_force_copy);
130 #endif // MESSAGE_FILTERS_SIGNAL1_H void removeCallback(const CallbackHelper1Ptr &helper)
V_CallbackHelper1 callbacks_
CallbackHelper1T(const Callback &cb)
bool nonConstWillCopy() const
boost::shared_ptr< CallbackHelper1< M > > CallbackHelper1Ptr
void call(const ros::MessageEvent< M const > &event)
virtual ~CallbackHelper1()
boost::shared_ptr< CallbackHelper1< M > > Ptr
virtual void call(const ros::MessageEvent< M const > &event, bool nonconst_need_copy)=0
CallbackHelper1Ptr addCallback(const boost::function< void(P)> &callback)
boost::function< void(typename Adapter::Parameter)> Callback
std::vector< CallbackHelper1Ptr > V_CallbackHelper1
ros::ParameterAdapter< P > Adapter
virtual void call(const ros::MessageEvent< M const > &event, bool nonconst_force_copy)