change to tapSocketProtocol to save interface index
[senf.git] / Packets / Packet.hh
index e2e3c3f..3d51f78 100644 (file)
@@ -23,8 +23,8 @@
 /** \file
     \brief Packet public header */
 
-#ifndef HH_Packet_
-#define HH_Packet_ 1
+#ifndef HH_SENF_Packets_Packet_
+#define HH_SENF_Packets_Packet_ 1
 
 // Custom includes
 #include <boost/operators.hpp>
@@ -339,7 +339,8 @@ namespace senf {
 
                                              If an annotation is \e not a POD type (more
                                              specifically, if it's constructor or destructor is not
-                                             trivial), the \a Annotation type \e must inherit from
+                                             trivial including base classes and members), the \a
+                                             Annotation type \e must inherit from
                                              senf::ComplexAnnotation. Failing to follow this rule
                                              will result in undefined behavior and will probably
                                              lead to a program crash.
@@ -349,6 +350,9 @@ namespace senf {
                                                  std::string value;
                                              };
                                              \endcode
+                                             (This type is not POD since \c std::string is not POD)
+
+                                             \see \ref packet_usage_annotation
 
                                              \implementation The annotation system is implemented
                                                  quite efficiently since annotations are stored
@@ -358,6 +362,16 @@ namespace senf {
                                                  used). Additionally, non-complex small annotations
                                                  require no additional memory management (\c new /
                                                  \c delete).
+                                             
+                                             \idea Pool the annotation vectors: In the destructor
+                                                 swap the vector into a vector graveyard (swapping
+                                                 two vectors is an O(1) no allocation operation). In
+                                                 the constructor, if there is a vector in the
+                                                 graveyard, swap it in from there. Of course, it
+                                                 would be better to do away with the vector and just
+                                                 allocate the space together with the packet but
+                                                 that looks quite complicated to do ... especially
+                                                 considering that the packetimpl itself uses a pool.
                                           */
 
         ///@}
@@ -713,8 +727,8 @@ namespace senf {
 
 ///////////////////////////////hh.e////////////////////////////////////////
 #endif
-#if !defined(HH_Packets__decls_) && !defined(HH_Packet_i_)
-#define HH_Packet_i_
+#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_Packet_i_)
+#define HH_SENF_Packets_Packet_i_
 #include "Packet.cci"
 #include "Packet.ct"
 #include "Packet.cti"