// Custom includes
#include <boost/ptr_container/ptr_map.hpp>
+#include "../Utils/String.hh"
#include "Module.hh"
#include "Connectors.hh"
namespace ppi {
namespace module {
- /** \brief Route packets to destination according to some annotation value
+ /** \brief %Route packets to destination according to some annotation value
This router takes packet on a single input and directs them to one of it outputs depending
- on a \link packet_usage_annotation packet annotation\endlink. Each output connected
+ on a \ref packet_usage_annotation "packet annotation". Each output connected
will be associated with a single annotation value. Incoming packets for which no matching
output is found are directed to a default output. If this output is left unconnected, those
packets will be dropped.
The \a AnnotationType template parameter defines the routing key. This annotation must
support the following operations:
- \li Comparison with '<' (\c LessThanCompatable concept)
+ \li Comparison with '<' (\c LessThanComparable concept)
\li Copy construction and copy assignment (\c Copyable und \c Assignable concepts)
(e.g. via compiler synthesized copy constructor and assignment operator)
\li Output streaming to an ostream via '\c <<' (for error description purposes) (\c
mac address and allows to pass a senf::MACAddress value as routing key directly:
\code
- senf::ppi::module::AnnotationRouter router;
+ senf::ppi::module::AnnotationRouter<TargetInterface> router;
senf::ppi::connect(router, target1, senf::MACAddress::from_string("00:1a:2b:04:06:08"));
\endcode
struct DuplicateKeyException : public senf::Exception
{ DuplicateKeyException(AnnotationType const & key)
: senf::Exception("Duplicate senf::ppi::module::AnnotationRouter routing key ")
- { append(boost::lexical_cast<std::string>(key)); } };
+ { append( senf::str(key)); } };
private:
connector::ActiveOutput<> & newOutput(AnnotationType const & key);