Packets: Add StringParser ostream operation
[senf.git] / PPI / AnnotationRouter.hh
index 7eada36..705eb8d 100644 (file)
@@ -28,6 +28,7 @@
 
 // Custom includes
 #include <boost/ptr_container/ptr_map.hpp>
+#include "../Utils/String.hh"
 #include "Module.hh"
 #include "Connectors.hh"
 
@@ -38,20 +39,21 @@ namespace senf {
 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 <<' (\c OutputStreamable concept)
+        \li Output streaming to an ostream via '\c <<' (for error description purposes) (\c
+            OutputStreamable concept)
 
         The following annotation can be used to route the packets according to a mac address.
         \code
@@ -74,7 +76,7 @@ namespace module {
         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
@@ -103,7 +105,7 @@ namespace module {
         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);