Classes | Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes
message_filters::Chain< M > Class Template Reference

Chains a dynamic number of simple filters together. Allows retrieval of filters by index after they are added. More...

#include <chain.h>

Inheritance diagram for message_filters::Chain< M >:
Inheritance graph
[legend]

List of all members.

Classes

struct  FilterInfo
struct  NullDeleter

Public Types

typedef ros::MessageEvent< M
const > 
EventType
typedef boost::shared_ptr< M
const > 
MConstPtr

Public Member Functions

void add (const MConstPtr &msg)
 Add a message to the start of this chain.
void add (const EventType &evt)
template<class F >
size_t addFilter (F *filter)
 Add a filter to this chain, by bare pointer. Returns the index of that filter in the chain.
template<class F >
size_t addFilter (const boost::shared_ptr< F > &filter)
 Add a filter to this chain, by shared_ptr. Returns the index of that filter in the chain.
 Chain ()
 Default constructor.
template<typename F >
 Chain (F &f)
 Constructor with filter. Calls connectInput(f)
template<class F >
void connectInput (F &f)
 Connect this filter's input to another filter's output.
template<typename F >
boost::shared_ptr< F > getFilter (size_t index) const
 Retrieve a filter from this chain by index. Returns an empty shared_ptr if the index is greater than the size of the chain. NOT type-safe.

Protected Member Functions

virtual boost::shared_ptr< void > getFilterForIndex (size_t index) const

Private Types

typedef std::vector< FilterInfoV_FilterInfo

Private Member Functions

void incomingCB (const EventType &evt)
void lastFilterCB (const EventType &evt)

Private Attributes

V_FilterInfo filters_
Connection incoming_connection_
Connection last_filter_connection_

Detailed Description

template<typename M>
class message_filters::Chain< M >

Chains a dynamic number of simple filters together. Allows retrieval of filters by index after they are added.

The Chain filter provides a container for simple filters. It allows you to store an N-long set of filters inside a single structure, making it much easier to manage them.

Adding filters to the chain is done by adding shared_ptrs of them to the filter. They are automatically connected to each other and the output of the last filter in the chain is forwarded to the callback you've registered with Chain::registerCallback

Example:

void myCallback(const MsgConstPtr& msg)
{
}

Chain<Msg> c;
c.addFilter(boost::shared_ptr<PassThrough<Msg> >(new PassThrough<Msg>));
c.addFilter(boost::shared_ptr<PassThrough<Msg> >(new PassThrough<Msg>));
c.registerCallback(myCallback);

It is also possible to pass bare pointers in, which will not be automatically deleted when Chain is destructed:

Chain<Msg> c;
PassThrough<Msg> p;
c.addFilter(&p);
c.registerCallback(myCallback);

Definition at line 111 of file chain.h.


Member Typedef Documentation

template<typename M>
typedef ros::MessageEvent<M const> message_filters::Chain< M >::EventType

Reimplemented from message_filters::SimpleFilter< M >.

Definition at line 115 of file chain.h.

template<typename M>
typedef boost::shared_ptr<M const> message_filters::Chain< M >::MConstPtr

Reimplemented from message_filters::SimpleFilter< M >.

Definition at line 114 of file chain.h.

template<typename M>
typedef std::vector<FilterInfo> message_filters::Chain< M >::V_FilterInfo [private]

Definition at line 246 of file chain.h.


Constructor & Destructor Documentation

template<typename M>
message_filters::Chain< M >::Chain ( ) [inline]

Default constructor.

Definition at line 120 of file chain.h.

template<typename M>
template<typename F >
message_filters::Chain< M >::Chain ( F &  f) [inline]

Constructor with filter. Calls connectInput(f)

Definition at line 128 of file chain.h.


Member Function Documentation

template<typename M>
void message_filters::Chain< M >::add ( const MConstPtr msg) [inline]

Add a message to the start of this chain.

Definition at line 205 of file chain.h.

template<typename M>
void message_filters::Chain< M >::add ( const EventType evt) [inline]

Definition at line 210 of file chain.h.

template<typename M>
template<class F >
size_t message_filters::Chain< M >::addFilter ( F *  filter) [inline]

Add a filter to this chain, by bare pointer. Returns the index of that filter in the chain.

Definition at line 144 of file chain.h.

template<typename M>
template<class F >
size_t message_filters::Chain< M >::addFilter ( const boost::shared_ptr< F > &  filter) [inline]

Add a filter to this chain, by shared_ptr. Returns the index of that filter in the chain.

Definition at line 154 of file chain.h.

template<typename M>
template<class F >
void message_filters::Chain< M >::connectInput ( F &  f) [inline]

Connect this filter's input to another filter's output.

Definition at line 196 of file chain.h.

template<typename M>
template<typename F >
boost::shared_ptr<F> message_filters::Chain< M >::getFilter ( size_t  index) const [inline]

Retrieve a filter from this chain by index. Returns an empty shared_ptr if the index is greater than the size of the chain. NOT type-safe.

Parameters:
F[template] The type of the filter
indexThe index of the filter (returned by addFilter())

Reimplemented from message_filters::ChainBase.

Definition at line 182 of file chain.h.

template<typename M>
virtual boost::shared_ptr<void> message_filters::Chain< M >::getFilterForIndex ( size_t  index) const [inline, protected, virtual]

Implements message_filters::ChainBase.

Definition at line 219 of file chain.h.

template<typename M>
void message_filters::Chain< M >::incomingCB ( const EventType evt) [inline, private]

Definition at line 230 of file chain.h.

template<typename M>
void message_filters::Chain< M >::lastFilterCB ( const EventType evt) [inline, private]

Definition at line 235 of file chain.h.


Member Data Documentation

template<typename M>
V_FilterInfo message_filters::Chain< M >::filters_ [private]

Definition at line 248 of file chain.h.

template<typename M>
Connection message_filters::Chain< M >::incoming_connection_ [private]

Definition at line 250 of file chain.h.

template<typename M>
Connection message_filters::Chain< M >::last_filter_connection_ [private]

Definition at line 251 of file chain.h.


The documentation for this class was generated from the following file:


message_filters
Author(s): Josh Faust, Vijay Pradeep
autogenerated on Fri Aug 28 2015 12:34:12