src/common/tag.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Wed, 07 May 2008 13:45:57 -0700
changeset 3049 519a31d1729f
parent 3045 895cb1b6a903
child 3050 9cc612c6cd32
permissions -rw-r--r--
typos
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3049
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3045
diff changeset
     1
#ifndef TAG_H
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3045
diff changeset
     2
#define TAG_H
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
#include "ns3/object-base.h"
3041
a624276a897b mtag -> tag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
     5
#include "tag-buffer.h"
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
#include <stdint.h>
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
namespace ns3 {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
3045
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    10
/**
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    11
 * \brief tag a set of bytes in a packet
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    12
 *
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    13
 * New kinds of tags can be created by subclassing this base class.
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    14
 */
3040
e11e106c7c19 Mtag -> Tag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3035
diff changeset
    15
class Tag : public ObjectBase
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
public:
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
  static TypeId GetTypeId (void);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
3045
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    20
  /**
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    21
   * \returns the number of bytes required to serialize the data of the tag.
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    22
   *
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    23
   * This method is typically invoked by Packet::AddTag just prior to calling
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    24
   * Tag::Serialize.
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    25
   */
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
  virtual uint32_t GetSerializedSize (void) const = 0;
3045
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    27
  /**
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    28
   * \param i the buffer to write data into.
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    29
   *
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    30
   * Write the content of the tag in the provided tag buffer.
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    31
   */
3040
e11e106c7c19 Mtag -> Tag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3035
diff changeset
    32
  virtual void Serialize (TagBuffer i) const = 0;
3045
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    33
  /**
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    34
   * \param i the buffer to read data from.
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    35
   *
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    36
   * Read the content of the tag from the provided tag buffer.
895cb1b6a903 add dox doc
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3041
diff changeset
    37
   */
3040
e11e106c7c19 Mtag -> Tag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3035
diff changeset
    38
  virtual void Deserialize (TagBuffer i) = 0;
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
};
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
} // namespace ns3
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
3049
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3045
diff changeset
    43
#endif /* TAG_H */