X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FPacket.hh;h=8b116e6978cf0f0331387c80110b43e30678c369;hb=80550046686fc160f5d7ff076f1b167a13538466;hp=7d319421accb9b0de5d7a1f9a620398be8fb1557;hpb=d00efd99445ae9cef71068f11788fbd2f4412997;p=senf.git diff --git a/senf/Packets/Packet.hh b/senf/Packets/Packet.hh index 7d31942..8b116e6 100644 --- a/senf/Packets/Packet.hh +++ b/senf/Packets/Packet.hh @@ -164,9 +164,9 @@ namespace senf { validity. */ Packet clone() const; ///< Create copy packet /**< clone() will create a complete copy of \c this - packet. The returned packet will have the same data and - packet chain. It does however not share any data with - the original packet. */ + packet. The returned packet will have the same data, + annotations and packet chain. It does however not + share any data with the original packet. */ // conversion constructors @@ -309,6 +309,10 @@ namespace senf { after \c this in the packet/header/interpreter chain. */ + void reparse() const; ///< Reparse the payload the packet + /**< This member will throw away the packet chain after the + current packet. The payload will be reparsed + automatically when calling next() */ ///@} ///\name Data access @@ -319,7 +323,6 @@ namespace senf { /**< This size does \e not include the size of any preceding headers/packets/interpreters. It does however include \c this packets payload. */ - ///@} ///\name Annotations @@ -382,12 +385,17 @@ namespace senf { considering that the packetimpl itself uses a pool. */ - ///@} - template Annotation const & annotation() const; ///< Get packet annotation /**< \see annotation() */ + void clearAnnotations(); ///< Clear all packet annotations + /**< All packet annotations will be cleared. Afterwards + the annotations equates to a new created %packet. + \warning all references to existing complex + annotations become invalid. */ + ///@} + ///\name Other methods ///@{ @@ -405,7 +413,7 @@ namespace senf { when using a packet in a boolean context. */ void finalizeThis(); ///< Update calculated fields - /**< The finalize() fammily of members will update + /**< The finalize() family of members will update calculated packet fields: checksums, size fields and so on. This includes any field, which can be set from other information in the packet. Each concrete packet @@ -420,7 +428,7 @@ namespace senf { template void finalizeTo(); ///< Update calculated fields - /**< The finalize() fammily of members will update + /**< The finalize() family of members will update calculated packet fields: checksums, size fields and so on. This includes any field, which can be set from other information in the packet. Each concrete packet @@ -439,7 +447,7 @@ namespace senf { \endcode */ void finalizeTo(Packet const & other); ///< Update calculated fields - /**< The finalize() fammily of members will update + /**< The finalize() family of members will update calculated packet fields: checksums, size fields and so on. This includes any field, which can be set from other information in the packet. Each concrete packet @@ -492,7 +500,11 @@ namespace senf { unsigned long id() const; ///< Unique packet id /**< Get a unique packet id. If two packets have the same - id, they share the internal data representation.. */ + id, they share the internal data representation. */ + + bool is_shared() const; ///< check if this packet shares data with any another packet handle. + /**< This method returns true if there is any other packet + handle pointing to any header in the packet chain. */ ///@} @@ -746,14 +758,14 @@ namespace senf { access. The parser class may have any member which is needed for full packet access (e.g. checksum validation / recreation ...) - \see \ref packetparser for the parser interface. */ + \see \ref packetparser for the %parser interface. */ Parser parser() const; ///< Access packet field parser directly /**< Access the parser of the packet. This is the same object returned by the operator->() operator. The operator however does not allow to access this object itself, only it's members. - \see \ref packetparser for the parser interface */ + \see \ref packetparser for the %parser interface */ protected: @@ -762,7 +774,7 @@ namespace senf { ConcretePacket(typename interpreter::ptr const & packet_); - typename interpreter::ptr ptr() const; + interpreter * ptr() const; friend class Packet; friend class PacketInterpreter;