Template Class Chain

Nested Relationships

Nested Types

Inheritance Relationships

Base Types

Class Documentation

template<typename M>
class Chain : public message_filters::ChainBase, public message_filters::SimpleFilter<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(std::make_shared<PassThrough<Msg> >());
c.addFilter(std::make_shared<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);

Public Types

typedef std::shared_ptr<M const> MConstPtr
typedef MessageEvent<M const> EventType

Public Functions

inline Chain()

Default constructor.

template<typename F>
inline Chain(F &f)

Constructor with filter. Calls connectInput(f)

template<class F>
inline 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>
inline size_t addFilter(const std::shared_ptr<F> &filter)

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

template<typename F>
inline std::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.

Parameters:
  • F – [template] The type of the filter

  • index – The index of the filter (returned by addFilter())

template<class F>
inline void connectInput(F &f)

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

inline void add(const MConstPtr &msg)

Add a message to the start of this chain.

inline void add(const EventType &evt)

Protected Functions

inline virtual std::shared_ptr<void> getFilterForIndex(size_t index) const
struct NullDeleter

Public Functions

inline void operator()(void const*) const