src/common/packet.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 01 Jul 2010 12:50:22 +0200
changeset 6397 a1608a9a11f3
parent 6291 8b3cd8b4d560
child 6455 e17da5733c0b
permissions -rw-r--r--
run check-style.py
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2005,2006 INRIA
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
#include "packet.h"
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 239
diff changeset
    21
#include "ns3/assert.h"
3158
2a4305eeca93 add logging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3057
diff changeset
    22
#include "ns3/log.h"
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
    23
#include "ns3/simulator.h"
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
    24
#include "ns3/test.h"
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
    25
#include <string>
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
    26
#include <stdarg.h>
3158
2a4305eeca93 add logging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3057
diff changeset
    27
2a4305eeca93 add logging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3057
diff changeset
    28
NS_LOG_COMPONENT_DEFINE ("Packet");
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 9
diff changeset
    30
namespace ns3 {
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
463
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
    32
uint32_t Packet::m_globalUid = 0;
91
8066ef8d9274 add packet uid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 90
diff changeset
    33
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    34
TypeId 
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    35
ByteTagIterator::Item::GetTypeId (void) const
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    36
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    37
  return m_tid;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    38
}
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    39
uint32_t 
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    40
ByteTagIterator::Item::GetStart (void) const
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    41
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    42
  return m_start;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    43
}
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    44
uint32_t 
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    45
ByteTagIterator::Item::GetEnd (void) const
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    46
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    47
  return m_end;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    48
}
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    49
void 
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    50
ByteTagIterator::Item::GetTag (Tag &tag) const
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    51
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    52
  if (tag.GetInstanceTypeId () != GetTypeId ())
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    53
    {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    54
      NS_FATAL_ERROR ("The tag you provided is not of the right type.");
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    55
    }
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    56
  tag.Deserialize (m_buffer);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    57
}
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    58
ByteTagIterator::Item::Item (TypeId tid, uint32_t start, uint32_t end, TagBuffer buffer)
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    59
  : m_tid (tid),
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    60
    m_start (start),
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    61
    m_end (end),
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    62
    m_buffer (buffer)
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    63
{
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    64
}
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    65
bool
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    66
ByteTagIterator::HasNext (void) const
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    67
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    68
  return m_current.HasNext ();
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    69
}
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    70
ByteTagIterator::Item
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    71
ByteTagIterator::Next (void)
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    72
{
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    73
  ByteTagList::Iterator::Item i = m_current.Next ();
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    74
  return ByteTagIterator::Item (i.tid,
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    75
                                i.start-m_current.GetOffsetStart (),
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    76
                                i.end-m_current.GetOffsetStart (),
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    77
                                i.buf);
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    78
}
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    79
ByteTagIterator::ByteTagIterator (ByteTagList::Iterator i)
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    80
  : m_current (i)
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    81
{
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    82
}
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    83
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
    84
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    85
PacketTagIterator::PacketTagIterator (const struct PacketTagList::TagData *head)
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    86
  : m_current (head)
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    87
{
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    88
}
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    89
bool
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    90
PacketTagIterator::HasNext (void) const
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    91
{
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    92
  return m_current != 0;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    93
}
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
    94
PacketTagIterator::Item
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    95
PacketTagIterator::Next (void)
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    96
{
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    97
  NS_ASSERT (HasNext ());
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    98
  const struct PacketTagList::TagData *prev = m_current;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
    99
  m_current = m_current->next;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   100
  return PacketTagIterator::Item (prev);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   101
}
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   102
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   103
PacketTagIterator::Item::Item (const struct PacketTagList::TagData *data)
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   104
  : m_data (data)
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   105
{
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   106
}
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   107
TypeId
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   108
PacketTagIterator::Item::GetTypeId (void) const
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   109
{
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   110
  return m_data->tid;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   111
}
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   112
void
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   113
PacketTagIterator::Item::GetTag (Tag &tag) const
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   114
{
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   115
  NS_ASSERT (tag.GetInstanceTypeId () == m_data->tid);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   116
  tag.Deserialize (TagBuffer ((uint8_t*)m_data->data, (uint8_t*)m_data->data+PACKET_TAG_MAX_SIZE));
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   117
}
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   118
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   119
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   120
Ptr<Packet> 
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   121
Packet::Copy (void) const
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   122
{
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   123
  // we need to invoke the copy constructor directly
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   124
  // rather than calling Create because the copy constructor
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   125
  // is private.
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   126
  return Ptr<Packet> (new Packet (*this), false);
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   127
}
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   128
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
Packet::Packet ()
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
   130
  : m_buffer (),
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   131
    m_byteTagList (),
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   132
    m_packetTagList (),
6167
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   133
    /* The upper 32 bits of the packet id in 
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   134
     * metadata is for the system id. For non-
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   135
     * distributed simulations, this is simply 
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   136
     * zero.  The lower 32 bits are for the 
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   137
     * global UID
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   138
     */
6291
8b3cd8b4d560 change casts to c++ style
Josh Pelkey <jpelkey@gatech.edu>
parents: 6167
diff changeset
   139
    m_metadata (static_cast<uint64_t> (Simulator::GetSystemId ()) << 32 | m_globalUid, 0),
5505
c0ac392289c3 replace RefCountBase with SimpleRefCount<> to avoid duplicate refcounting implementations.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5334
diff changeset
   140
    m_nixVector (0)
91
8066ef8d9274 add packet uid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 90
diff changeset
   141
{
463
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   142
  m_globalUid++;
91
8066ef8d9274 add packet uid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 90
diff changeset
   143
}
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   145
Packet::Packet (const Packet &o)
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   146
  : m_buffer (o.m_buffer),
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   147
    m_byteTagList (o.m_byteTagList),
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   148
    m_packetTagList (o.m_packetTagList),
5505
c0ac392289c3 replace RefCountBase with SimpleRefCount<> to avoid duplicate refcounting implementations.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5334
diff changeset
   149
    m_metadata (o.m_metadata)
5224
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   150
{
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   151
  o.m_nixVector ? m_nixVector = o.m_nixVector->Copy () 
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   152
    : m_nixVector = 0;
5224
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   153
}
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   154
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   155
Packet &
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   156
Packet::operator = (const Packet &o)
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   157
{
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   158
  if (this == &o)
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   159
    {
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   160
      return *this;
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   161
    }
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   162
  m_buffer = o.m_buffer;
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   163
  m_byteTagList = o.m_byteTagList;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   164
  m_packetTagList = o.m_packetTagList;
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   165
  m_metadata = o.m_metadata;
5224
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   166
  o.m_nixVector ? m_nixVector = o.m_nixVector->Copy () 
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   167
    : m_nixVector = 0;
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   168
  return *this;
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   169
}
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   170
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
Packet::Packet (uint32_t size)
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
   172
  : m_buffer (size),
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   173
    m_byteTagList (),
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   174
    m_packetTagList (),
6167
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   175
    /* The upper 32 bits of the packet id in 
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   176
     * metadata is for the system id. For non-
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   177
     * distributed simulations, this is simply 
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   178
     * zero.  The lower 32 bits are for the 
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   179
     * global UID
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   180
     */
6291
8b3cd8b4d560 change casts to c++ style
Josh Pelkey <jpelkey@gatech.edu>
parents: 6167
diff changeset
   181
    m_metadata (static_cast<uint64_t> (Simulator::GetSystemId ()) << 32 | m_globalUid, size),
5505
c0ac392289c3 replace RefCountBase with SimpleRefCount<> to avoid duplicate refcounting implementations.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5334
diff changeset
   182
    m_nixVector (0)
91
8066ef8d9274 add packet uid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 90
diff changeset
   183
{
463
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   184
  m_globalUid++;
91
8066ef8d9274 add packet uid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 90
diff changeset
   185
}
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   186
Packet::Packet (uint8_t const *buffer, uint32_t size, bool magic)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   187
  : m_buffer (0, false),
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   188
    m_byteTagList (),
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   189
    m_packetTagList (),
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   190
    m_metadata (0,0),
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   191
    m_nixVector (0)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   192
{
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   193
  NS_ASSERT (magic);
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   194
  Deserialize (buffer, size);
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   195
}
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   196
239
e194d619534b add packet constructor which accepts payload buffer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   197
Packet::Packet (uint8_t const*buffer, uint32_t size)
e194d619534b add packet constructor which accepts payload buffer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   198
  : m_buffer (),
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   199
    m_byteTagList (),
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   200
    m_packetTagList (),
6167
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   201
    /* The upper 32 bits of the packet id in 
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   202
     * metadata is for the system id. For non-
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   203
     * distributed simulations, this is simply 
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   204
     * zero.  The lower 32 bits are for the 
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   205
     * global UID
b920710704c9 Add clarifying comments
Josh Pelkey <jpelkey@gatech.edu>
parents: 6132
diff changeset
   206
     */
6291
8b3cd8b4d560 change casts to c++ style
Josh Pelkey <jpelkey@gatech.edu>
parents: 6167
diff changeset
   207
    m_metadata (static_cast<uint64_t> (Simulator::GetSystemId ()) << 32 | m_globalUid, size),
5505
c0ac392289c3 replace RefCountBase with SimpleRefCount<> to avoid duplicate refcounting implementations.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5334
diff changeset
   208
    m_nixVector (0)
239
e194d619534b add packet constructor which accepts payload buffer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   209
{
463
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   210
  m_globalUid++;
239
e194d619534b add packet constructor which accepts payload buffer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   211
  m_buffer.AddAtStart (size);
e194d619534b add packet constructor which accepts payload buffer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   212
  Buffer::Iterator i = m_buffer.Begin ();
e194d619534b add packet constructor which accepts payload buffer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   213
  i.Write (buffer, size);
e194d619534b add packet constructor which accepts payload buffer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   214
}
e194d619534b add packet constructor which accepts payload buffer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 150
diff changeset
   215
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   216
Packet::Packet (const Buffer &buffer,  const ByteTagList &byteTagList, 
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   217
                const PacketTagList &packetTagList, const PacketMetadata &metadata)
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
   218
  : m_buffer (buffer),
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   219
    m_byteTagList (byteTagList),
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   220
    m_packetTagList (packetTagList),
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   221
    m_metadata (metadata),
5505
c0ac392289c3 replace RefCountBase with SimpleRefCount<> to avoid duplicate refcounting implementations.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5334
diff changeset
   222
    m_nixVector (0)
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   223
{
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   224
}
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   225
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   226
Ptr<Packet>
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   227
Packet::CreateFragment (uint32_t start, uint32_t length) const
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   228
{
3158
2a4305eeca93 add logging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3057
diff changeset
   229
  NS_LOG_FUNCTION (this << start << length);
463
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   230
  Buffer buffer = m_buffer.CreateFragment (start, length);
819
3bae75040589 calculate the correct size of header and trailer to remove from buffer
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 806
diff changeset
   231
  NS_ASSERT (m_buffer.GetSize () >= start + length);
3bae75040589 calculate the correct size of header and trailer to remove from buffer
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 806
diff changeset
   232
  uint32_t end = m_buffer.GetSize () - (start + length);
888
f882ee7eaccf history -> metadata
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 887
diff changeset
   233
  PacketMetadata metadata = m_metadata.CreateFragment (start, end);
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   234
  // again, call the constructor directly rather than
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   235
  // through Create because it is private.
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   236
  return Ptr<Packet> (new Packet (buffer, m_byteTagList, m_packetTagList, metadata), false);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   237
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   238
5224
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   239
void
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   240
Packet::SetNixVector (Ptr<NixVector> nixVector)
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   241
{
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   242
  m_nixVector = nixVector;
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   243
}
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   244
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   245
Ptr<NixVector>
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   246
Packet::GetNixVector (void) const
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   247
{
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   248
  return m_nixVector;
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   249
} 
06f639d05b8f Merge NixVector Routing code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5074
diff changeset
   250
2663
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   251
void
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   252
Packet::AddHeader (const Header &header)
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   253
{
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   254
  uint32_t size = header.GetSerializedSize ();
4484
e179b5d9dea8 improve logging output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4483
diff changeset
   255
  NS_LOG_FUNCTION (this << header.GetInstanceTypeId ().GetName () << size);
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   256
  uint32_t orgStart = m_buffer.GetCurrentStartOffset ();
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   257
  bool resized = m_buffer.AddAtStart (size);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   258
  if (resized)
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   259
    {
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   260
      m_byteTagList.AddAtStart (m_buffer.GetCurrentStartOffset () + size - orgStart,
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   261
                                m_buffer.GetCurrentStartOffset () + size);
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   262
    }
2663
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   263
  header.Serialize (m_buffer.Begin ());
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   264
  m_metadata.AddHeader (header, size);
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   265
}
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   266
uint32_t
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   267
Packet::RemoveHeader (Header &header)
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   268
{
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   269
  uint32_t deserialized = header.Deserialize (m_buffer.Begin ());
4484
e179b5d9dea8 improve logging output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4483
diff changeset
   270
  NS_LOG_FUNCTION (this << header.GetInstanceTypeId ().GetName () << deserialized);
2663
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   271
  m_buffer.RemoveAtStart (deserialized);
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   272
  m_metadata.RemoveHeader (header, deserialized);
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   273
  return deserialized;
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   274
}
3364
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   275
uint32_t
3738
011897c60e9c bug 331: constify Packet::PeekHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3553
diff changeset
   276
Packet::PeekHeader (Header &header) const
3364
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   277
{
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   278
  uint32_t deserialized = header.Deserialize (m_buffer.Begin ());
4484
e179b5d9dea8 improve logging output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4483
diff changeset
   279
  NS_LOG_FUNCTION (this << header.GetInstanceTypeId ().GetName () << deserialized);
3364
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   280
  return deserialized;
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   281
}
2663
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   282
void
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   283
Packet::AddTrailer (const Trailer &trailer)
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   284
{
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   285
  uint32_t size = trailer.GetSerializedSize ();
4484
e179b5d9dea8 improve logging output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4483
diff changeset
   286
  NS_LOG_FUNCTION (this << trailer.GetInstanceTypeId ().GetName () << size);
3237
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
   287
  uint32_t orgStart = m_buffer.GetCurrentStartOffset ();
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   288
  bool resized = m_buffer.AddAtEnd (size);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   289
  if (resized)
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   290
    {
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   291
      m_byteTagList.AddAtEnd (m_buffer.GetCurrentStartOffset () - orgStart,
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   292
                              m_buffer.GetCurrentEndOffset () - size);
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   293
    }
2663
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   294
  Buffer::Iterator end = m_buffer.End ();
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   295
  trailer.Serialize (end);
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   296
  m_metadata.AddTrailer (trailer, size);
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   297
}
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   298
uint32_t
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   299
Packet::RemoveTrailer (Trailer &trailer)
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   300
{
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   301
  uint32_t deserialized = trailer.Deserialize (m_buffer.End ());
4484
e179b5d9dea8 improve logging output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4483
diff changeset
   302
  NS_LOG_FUNCTION (this << trailer.GetInstanceTypeId ().GetName () << deserialized);
2663
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   303
  m_buffer.RemoveAtEnd (deserialized);
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   304
  m_metadata.RemoveTrailer (trailer, deserialized);
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   305
  return deserialized;
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   306
}
3364
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   307
uint32_t
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   308
Packet::PeekTrailer (Trailer &trailer)
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   309
{
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   310
  uint32_t deserialized = trailer.Deserialize (m_buffer.End ());
4484
e179b5d9dea8 improve logging output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4483
diff changeset
   311
  NS_LOG_FUNCTION (this << trailer.GetInstanceTypeId ().GetName () << deserialized);
3364
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   312
  return deserialized;
8e6ac6061680 implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3301
diff changeset
   313
}
2663
dc5314da50aa remove template methods.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2660
diff changeset
   314
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   315
void 
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   316
Packet::AddAtEnd (Ptr<const Packet> packet)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   317
{
4484
e179b5d9dea8 improve logging output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4483
diff changeset
   318
  NS_LOG_FUNCTION (this << packet << packet->GetSize ());
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   319
  uint32_t aStart = m_buffer.GetCurrentStartOffset ();
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   320
  uint32_t bEnd = packet->m_buffer.GetCurrentEndOffset ();
2992
ba52f937610c move Packet::AddAtEnd implementation to the Buffer code.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2834
diff changeset
   321
  m_buffer.AddAtEnd (packet->m_buffer);
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   322
  uint32_t appendPrependOffset = m_buffer.GetCurrentEndOffset () - packet->m_buffer.GetSize ();
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   323
  m_byteTagList.AddAtEnd (m_buffer.GetCurrentStartOffset () - aStart, 
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   324
                          appendPrependOffset);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   325
  ByteTagList copy = packet->m_byteTagList;
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   326
  copy.AddAtStart (m_buffer.GetCurrentEndOffset () - bEnd,
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   327
                   appendPrependOffset);
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   328
  m_byteTagList.Add (copy);
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
   329
  m_metadata.AddAtEnd (packet->m_metadata);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   330
}
463
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   331
void
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   332
Packet::AddPaddingAtEnd (uint32_t size)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   333
{
3158
2a4305eeca93 add logging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3057
diff changeset
   334
  NS_LOG_FUNCTION (this << size);
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   335
  uint32_t orgEnd = m_buffer.GetCurrentEndOffset ();
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   336
  bool resized = m_buffer.AddAtEnd (size);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   337
  if (resized)
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   338
    {
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   339
      m_byteTagList.AddAtEnd (m_buffer.GetCurrentEndOffset () - orgEnd,
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   340
                              m_buffer.GetCurrentEndOffset () - size);
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   341
    }
888
f882ee7eaccf history -> metadata
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 887
diff changeset
   342
  m_metadata.AddPaddingAtEnd (size);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   343
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   344
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   345
Packet::RemoveAtEnd (uint32_t size)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   346
{
3158
2a4305eeca93 add logging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3057
diff changeset
   347
  NS_LOG_FUNCTION (this << size);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
   348
  m_buffer.RemoveAtEnd (size);
888
f882ee7eaccf history -> metadata
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 887
diff changeset
   349
  m_metadata.RemoveAtEnd (size);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   350
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   351
void 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   352
Packet::RemoveAtStart (uint32_t size)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   353
{
3158
2a4305eeca93 add logging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3057
diff changeset
   354
  NS_LOG_FUNCTION (this << size);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
   355
  m_buffer.RemoveAtStart (size);
888
f882ee7eaccf history -> metadata
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 887
diff changeset
   356
  m_metadata.RemoveAtStart (size);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   357
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   358
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   359
void 
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   360
Packet::RemoveAllByteTags (void)
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   361
{
3158
2a4305eeca93 add logging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3057
diff changeset
   362
  NS_LOG_FUNCTION (this);
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   363
  m_byteTagList.RemoveAll ();
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   364
}
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   365
90
d670ba9f726e replace pointers with references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 54
diff changeset
   366
uint8_t const *
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   367
Packet::PeekData (void) const
90
d670ba9f726e replace pointers with references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 54
diff changeset
   368
{
4483
b7faa7398d1e add missing log call
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4448
diff changeset
   369
  NS_LOG_FUNCTION (this);
4486
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
   370
  uint32_t oldStart = m_buffer.GetCurrentStartOffset ();
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
   371
  uint8_t const * data = m_buffer.PeekData ();
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
   372
  uint32_t newStart = m_buffer.GetCurrentStartOffset ();
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   373
 
4486
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
   374
  // Update tag offsets if buffer offsets were changed
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   375
  const_cast<ByteTagList &>(m_byteTagList).AddAtStart (newStart - oldStart, newStart);
4486
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
   376
  return data;
90
d670ba9f726e replace pointers with references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 54
diff changeset
   377
}
d670ba9f726e replace pointers with references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 54
diff changeset
   378
91
8066ef8d9274 add packet uid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 90
diff changeset
   379
uint32_t 
3764
64f1310350e4 add API to get bytes out of a packet without calling PeekData
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3738
diff changeset
   380
Packet::CopyData (uint8_t *buffer, uint32_t size) const
64f1310350e4 add API to get bytes out of a packet without calling PeekData
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3738
diff changeset
   381
{
5938
69bcae35bc81 avoid copying bytes one after the other.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5505
diff changeset
   382
  return m_buffer.CopyData (buffer, size);
3764
64f1310350e4 add API to get bytes out of a packet without calling PeekData
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3738
diff changeset
   383
}
64f1310350e4 add API to get bytes out of a packet without calling PeekData
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3738
diff changeset
   384
4518
31f2881aa214 avoid extra memory allocations when using PcapWriter
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4502
diff changeset
   385
void
31f2881aa214 avoid extra memory allocations when using PcapWriter
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4502
diff changeset
   386
Packet::CopyData(std::ostream *os, uint32_t size) const
31f2881aa214 avoid extra memory allocations when using PcapWriter
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4502
diff changeset
   387
{
31f2881aa214 avoid extra memory allocations when using PcapWriter
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4502
diff changeset
   388
  return m_buffer.CopyData (os, size);
31f2881aa214 avoid extra memory allocations when using PcapWriter
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4502
diff changeset
   389
}
31f2881aa214 avoid extra memory allocations when using PcapWriter
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4502
diff changeset
   390
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   391
uint64_t 
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 111
diff changeset
   392
Packet::GetUid (void) const
91
8066ef8d9274 add packet uid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 90
diff changeset
   393
{
888
f882ee7eaccf history -> metadata
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 887
diff changeset
   394
  return m_metadata.GetUid ();
91
8066ef8d9274 add packet uid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 90
diff changeset
   395
}
8066ef8d9274 add packet uid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 90
diff changeset
   396
463
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   397
void 
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   398
Packet::PrintByteTags (std::ostream &os) const
1241
66f126692f5e add Packet::PrintTags and move tag documentation to tag.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1150
diff changeset
   399
{
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   400
  ByteTagIterator i = GetByteTagIterator ();
3208
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   401
  while (i.HasNext ())
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   402
    {
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   403
      ByteTagIterator::Item item = i.Next ();
3208
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   404
      os << item.GetTypeId ().GetName () << " [" << item.GetStart () << "-" << item.GetEnd () << "]";
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   405
      Callback<ObjectBase *> constructor = item.GetTypeId ().GetConstructor ();
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   406
      if (constructor.IsNull ())
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   407
        {
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   408
          if (i.HasNext ())
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   409
            {
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   410
              os << " ";
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   411
            }
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   412
          continue;
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   413
        }
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   414
      Tag *tag = dynamic_cast<Tag *> (constructor ());
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   415
      NS_ASSERT (tag != 0);
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   416
      os << " ";
3230
e59680767a04 bug 212: Packet::PrintTags fails
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3208
diff changeset
   417
      item.GetTag (*tag);
3208
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   418
      tag->Print (os);
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   419
      if (i.HasNext ())
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   420
        {
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   421
          os << " ";
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   422
        }
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   423
      delete tag;
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   424
    }
1241
66f126692f5e add Packet::PrintTags and move tag documentation to tag.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1150
diff changeset
   425
}
66f126692f5e add Packet::PrintTags and move tag documentation to tag.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1150
diff changeset
   426
66f126692f5e add Packet::PrintTags and move tag documentation to tag.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1150
diff changeset
   427
void 
463
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   428
Packet::Print (std::ostream &os) const
789
1e19322e9012 merge unfinished packet history code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 463
diff changeset
   429
{
2660
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   430
  PacketMetadata::ItemIterator i = m_metadata.BeginItem (m_buffer);
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   431
  while (i.HasNext ())
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   432
    {
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   433
      PacketMetadata::Item item = i.Next ();
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   434
      if (item.isFragment)
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   435
        {
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   436
          switch (item.type) {
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   437
            case PacketMetadata::Item::PAYLOAD:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   438
              os << "Payload";
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   439
              break;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   440
            case PacketMetadata::Item::HEADER:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   441
            case PacketMetadata::Item::TRAILER:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   442
              os << item.tid.GetName ();
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   443
              break;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   444
            }
2660
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   445
          os << " Fragment [" << item.currentTrimedFromStart<<":"
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   446
             << (item.currentTrimedFromStart + item.currentSize) << "]";
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   447
        }
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   448
      else
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   449
        {
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   450
          switch (item.type) {
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   451
            case PacketMetadata::Item::PAYLOAD:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   452
              os << "Payload (size=" << item.currentSize << ")";
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   453
              break;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   454
            case PacketMetadata::Item::HEADER:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   455
            case PacketMetadata::Item::TRAILER:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   456
              os << item.tid.GetName () << " (";
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   457
              {
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   458
                NS_ASSERT (item.tid.HasConstructor ());
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   459
                Callback<ObjectBase *> constructor = item.tid.GetConstructor ();
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   460
                NS_ASSERT (!constructor.IsNull ());
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   461
                ObjectBase *instance = constructor ();
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   462
                NS_ASSERT (instance != 0);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   463
                Chunk *chunk = dynamic_cast<Chunk *> (instance);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   464
                NS_ASSERT (chunk != 0);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   465
                chunk->Deserialize (item.current);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   466
                chunk->Print (os);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   467
                delete chunk;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   468
              }
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   469
              os << ")";
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   470
              break;
2660
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   471
            }
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   472
        }
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   473
      if (i.HasNext ())
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   474
        {
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   475
          os << " ";
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   476
        }
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   477
    }
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   478
#if 0
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   479
  // The code below will work only if headers and trailers
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   480
  // define the right attributes which is not the case for
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   481
  // now. So, as a temporary measure, we use the 
1d54065d728a convert Packet::Print to use Chunk::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2647
diff changeset
   482
  // headers' and trailers' Print method as shown above.
2647
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   483
  PacketMetadata::ItemIterator i = m_metadata.BeginItem (m_buffer);
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   484
  while (i.HasNext ())
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   485
    {
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   486
      PacketMetadata::Item item = i.Next ();
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   487
      if (item.isFragment)
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   488
        {
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   489
          switch (item.type) {
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   490
            case PacketMetadata::Item::PAYLOAD:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   491
              os << "Payload";
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   492
              break;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   493
            case PacketMetadata::Item::HEADER:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   494
            case PacketMetadata::Item::TRAILER:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   495
              os << item.tid.GetName ();
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   496
              break;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   497
            }
2647
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   498
          os << " Fragment [" << item.currentTrimedFromStart<<":"
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   499
             << (item.currentTrimedFromStart + item.currentSize) << "]";
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   500
        }
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   501
      else
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   502
        {
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   503
          switch (item.type) {
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   504
            case PacketMetadata::Item::PAYLOAD:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   505
              os << "Payload (size=" << item.currentSize << ")";
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   506
              break;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   507
            case PacketMetadata::Item::HEADER:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   508
            case PacketMetadata::Item::TRAILER:
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   509
              os << item.tid.GetName () << "(";
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   510
              {
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   511
                NS_ASSERT (item.tid.HasConstructor ());
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   512
                Callback<ObjectBase *> constructor = item.tid.GetConstructor ();
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   513
                NS_ASSERT (constructor.IsNull ());
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   514
                ObjectBase *instance = constructor ();
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   515
                NS_ASSERT (instance != 0);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   516
                Chunk *chunk = dynamic_cast<Chunk *> (instance);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   517
                NS_ASSERT (chunk != 0);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   518
                chunk->Deserialize (item.current);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   519
                for (uint32_t j = 0; j < item.tid.GetAttributeN (); j++)
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   520
                  {
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   521
                    std::string attrName = item.tid.GetAttributeName (j);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   522
                    std::string value;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   523
                    bool ok = chunk->GetAttribute (attrName, value);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   524
                    NS_ASSERT (ok);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   525
                    os << attrName << "=" << value;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   526
                    if ((j + 1) < item.tid.GetAttributeN ())
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   527
                      {
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   528
                        os << ",";
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   529
                      }
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   530
                  }
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   531
              }
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   532
              os << ")";
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   533
              break;
2647
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   534
            }
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   535
        }
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   536
      if (i.HasNext ())
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   537
        {
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   538
          os << " ";
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   539
        }
3e9474e1d77b implement Packet::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2640
diff changeset
   540
    }
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   541
#endif
789
1e19322e9012 merge unfinished packet history code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 463
diff changeset
   542
}
463
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   543
2639
588221b7f892 replace PacketPrinter with an iterator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1865
diff changeset
   544
PacketMetadata::ItemIterator 
588221b7f892 replace PacketPrinter with an iterator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1865
diff changeset
   545
Packet::BeginItem (void) const
806
0190f1b49dc8 re-implement PacketHistory to use the PacketPrinter and work on ItemList::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 790
diff changeset
   546
{
2639
588221b7f892 replace PacketPrinter with an iterator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1865
diff changeset
   547
  return m_metadata.BeginItem (m_buffer);
806
0190f1b49dc8 re-implement PacketHistory to use the PacketPrinter and work on ItemList::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 790
diff changeset
   548
}
0190f1b49dc8 re-implement PacketHistory to use the PacketPrinter and work on ItemList::Print
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 790
diff changeset
   549
875
4ebee6ceebb5 rename History::Enable to Packet::EnableMetadata
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 824
diff changeset
   550
void
3553
065488d0420c bug 279: Packets need metadata support for printing without header checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3364
diff changeset
   551
Packet::EnablePrinting (void)
065488d0420c bug 279: Packets need metadata support for printing without header checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3364
diff changeset
   552
{
065488d0420c bug 279: Packets need metadata support for printing without header checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3364
diff changeset
   553
  NS_LOG_FUNCTION_NOARGS ();
883
4d2da35c09b0 PacketHistory -> PacketMetadata
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 875
diff changeset
   554
  PacketMetadata::Enable ();
875
4ebee6ceebb5 rename History::Enable to Packet::EnableMetadata
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 824
diff changeset
   555
}
463
c2082308e01a merge Packet API changes needed for Packet pretty printing.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 286
diff changeset
   556
3553
065488d0420c bug 279: Packets need metadata support for printing without header checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3364
diff changeset
   557
void
065488d0420c bug 279: Packets need metadata support for printing without header checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3364
diff changeset
   558
Packet::EnableChecking (void)
065488d0420c bug 279: Packets need metadata support for printing without header checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3364
diff changeset
   559
{
065488d0420c bug 279: Packets need metadata support for printing without header checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3364
diff changeset
   560
  NS_LOG_FUNCTION_NOARGS ();
065488d0420c bug 279: Packets need metadata support for printing without header checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3364
diff changeset
   561
  PacketMetadata::EnableChecking ();
065488d0420c bug 279: Packets need metadata support for printing without header checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3364
diff changeset
   562
}
065488d0420c bug 279: Packets need metadata support for printing without header checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3364
diff changeset
   563
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   564
uint32_t Packet::GetSerializedSize (void) const
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   565
{
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   566
  uint32_t size = 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   567
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   568
  if (m_nixVector)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   569
    {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   570
      // increment total size by the size of the nix-vector
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   571
      // ensuring 4-byte boundary
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   572
      size += ((m_nixVector->GetSerializedSize () + 3) & (~3));
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   573
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   574
      // add 4-bytes for entry of total length of nix-vector
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   575
      size += 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   576
    }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   577
  else
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   578
    {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   579
      // if no nix-vector, still have to add 4-bytes
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   580
      // to account for the entry of total size for 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   581
      // nix-vector in the buffer
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   582
      size += 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   583
    }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   584
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   585
  //Tag size
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   586
  //XXX
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   587
  //size += m_tags.GetSerializedSize ();
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   588
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   589
  // increment total size by size of meta-data 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   590
  // ensuring 4-byte boundary
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   591
  size += ((m_metadata.GetSerializedSize () + 3) & (~3));
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   592
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   593
  // add 4-bytes for entry of total length of meta-data
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   594
  size += 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   595
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   596
  // increment total size by size of buffer 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   597
  // ensuring 4-byte boundary
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   598
  size += ((m_buffer.GetSerializedSize () + 3) & (~3));
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   599
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   600
  // add 4-bytes for entry of total length of buffer 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   601
  size += 4;
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   602
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   603
  return size;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   604
}
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   605
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   606
uint32_t 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   607
Packet::Serialize (uint8_t* buffer, uint32_t maxSize) const
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   608
{
6291
8b3cd8b4d560 change casts to c++ style
Josh Pelkey <jpelkey@gatech.edu>
parents: 6167
diff changeset
   609
  uint32_t* p = reinterpret_cast<uint32_t *> (buffer);
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   610
  uint32_t size = 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   611
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   612
  // if nix-vector exists, serialize it
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   613
  if (m_nixVector)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   614
    {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   615
      uint32_t nixSize = m_nixVector->GetSerializedSize ();
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   616
      if (size + nixSize <= maxSize)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   617
        {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   618
          // put the total length of nix-vector in the
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   619
          // buffer. this includes 4-bytes for total 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   620
          // length itself
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   621
          *p++ = nixSize + 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   622
          size += nixSize;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   623
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   624
          // serialize the nix-vector
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   625
          uint32_t serialized = 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   626
            m_nixVector->Serialize (p, nixSize);
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   627
          if (serialized)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   628
            {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   629
              // increment p by nixSize bytes
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   630
              // ensuring 4-byte boundary
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   631
              p += ((nixSize+3) & (~3)) / 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   632
            }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   633
          else
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   634
            {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   635
              return 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   636
            }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   637
        }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   638
      else 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   639
        {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   640
          return 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   641
        }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   642
    }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   643
  else
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   644
    { 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   645
      // no nix vector, set zero length, 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   646
      // ie 4-bytes, since it must include 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   647
      // length for itself
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   648
      if (size + 4 <= maxSize)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   649
        {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   650
          size += 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   651
          *p++ = 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   652
        }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   653
      else
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   654
        {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   655
          return 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   656
        }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   657
    }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   658
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   659
  // Serialize Tags
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   660
  // XXX
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   661
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   662
  // Serialize Metadata
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   663
  uint32_t metaSize = m_metadata.GetSerializedSize ();
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   664
  if (size + metaSize <= maxSize)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   665
    {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   666
      // put the total length of metadata in the
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   667
      // buffer. this includes 4-bytes for total 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   668
      // length itself
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   669
      *p++ = metaSize + 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   670
      size += metaSize;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   671
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   672
      // serialize the metadata
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   673
      uint32_t serialized = 
6291
8b3cd8b4d560 change casts to c++ style
Josh Pelkey <jpelkey@gatech.edu>
parents: 6167
diff changeset
   674
        m_metadata.Serialize (reinterpret_cast<uint8_t *> (p), metaSize); 
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   675
      if (serialized)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   676
        {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   677
          // increment p by metaSize bytes
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   678
          // ensuring 4-byte boundary
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   679
          p += ((metaSize+3) & (~3)) / 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   680
        }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   681
      else
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   682
        {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   683
          return 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   684
        }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   685
    }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   686
  else
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   687
    {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   688
      return 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   689
    }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   690
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   691
  // Serialize the packet contents
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   692
  uint32_t bufSize = m_buffer.GetSerializedSize ();
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   693
  if (size + bufSize <= maxSize)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   694
    {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   695
      // put the total length of the buffer in the
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   696
      // buffer. this includes 4-bytes for total 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   697
      // length itself
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   698
      *p++ = bufSize + 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   699
      size += bufSize;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   700
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   701
      // serialize the buffer
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   702
      uint32_t serialized = 
6291
8b3cd8b4d560 change casts to c++ style
Josh Pelkey <jpelkey@gatech.edu>
parents: 6167
diff changeset
   703
        m_buffer.Serialize (reinterpret_cast<uint8_t *> (p), bufSize);
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   704
      if (serialized)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   705
        {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   706
          // increment p by bufSize bytes
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   707
          // ensuring 4-byte boundary
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   708
          p += ((bufSize+3) & (~3)) / 4;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   709
        }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   710
      else 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   711
        {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   712
          return 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   713
        }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   714
    }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   715
  else
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   716
    {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   717
      return 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   718
    }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   719
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   720
  // Serialized successfully
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   721
  return 1;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   722
}
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   723
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   724
uint32_t 
6291
8b3cd8b4d560 change casts to c++ style
Josh Pelkey <jpelkey@gatech.edu>
parents: 6167
diff changeset
   725
Packet::Deserialize (const uint8_t* buffer, uint32_t size)
1138
27245d50e5e0 use CreateFullCopy and implement Serialize/Deserialize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 896
diff changeset
   726
{
3158
2a4305eeca93 add logging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3057
diff changeset
   727
  NS_LOG_FUNCTION (this);
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   728
6291
8b3cd8b4d560 change casts to c++ style
Josh Pelkey <jpelkey@gatech.edu>
parents: 6167
diff changeset
   729
  const uint32_t* p = reinterpret_cast<const uint32_t *> (buffer);
1144
6442e000420b finish packet serialization/deserialization
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1142
diff changeset
   730
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   731
  // read nix-vector
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   732
  NS_ASSERT (!m_nixVector);
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   733
  uint32_t nixSize = *p++;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   734
  size -= nixSize;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   735
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   736
  // if size less than zero, the buffer 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   737
  // will be overrun, assert
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   738
  NS_ASSERT (size >= 0);
1144
6442e000420b finish packet serialization/deserialization
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1142
diff changeset
   739
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   740
  if (nixSize > 4)
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   741
    {
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   742
      Ptr<NixVector> nix = CreateObject<NixVector> ();
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   743
      uint32_t nixDeserialized = nix->Deserialize (p, nixSize);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   744
      if (!nixDeserialized)
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   745
        {
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   746
          // nix-vector not deserialized
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   747
          // completely
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   748
          return 0;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   749
        }
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   750
      m_nixVector = nix;
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   751
      // increment p by nixSize ensuring
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   752
      // 4-byte boundary
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   753
      p += ((((nixSize - 4) + 3) & (~3)) / 4);
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   754
    }
1144
6442e000420b finish packet serialization/deserialization
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1142
diff changeset
   755
6442e000420b finish packet serialization/deserialization
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1142
diff changeset
   756
  // read tags
3039
722cf749a9e3 remove now-unused Tags class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3035
diff changeset
   757
  //XXX
722cf749a9e3 remove now-unused Tags class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3035
diff changeset
   758
  //uint32_t tagsDeserialized = m_tags.Deserialize (buffer.Begin ());
722cf749a9e3 remove now-unused Tags class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3035
diff changeset
   759
  //buffer.RemoveAtStart (tagsDeserialized);
1144
6442e000420b finish packet serialization/deserialization
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1142
diff changeset
   760
6442e000420b finish packet serialization/deserialization
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1142
diff changeset
   761
  // read metadata
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   762
  uint32_t metaSize = *p++;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   763
  size -= metaSize;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   764
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   765
  // if size less than zero, the buffer 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   766
  // will be overrun, assert
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   767
  NS_ASSERT (size >= 0);
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   768
1144
6442e000420b finish packet serialization/deserialization
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1142
diff changeset
   769
  uint32_t metadataDeserialized = 
6291
8b3cd8b4d560 change casts to c++ style
Josh Pelkey <jpelkey@gatech.edu>
parents: 6167
diff changeset
   770
    m_metadata.Deserialize (reinterpret_cast<const uint8_t *> (p), metaSize);
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   771
  if (!metadataDeserialized)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   772
    {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   773
      // meta-data not deserialized 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   774
      // completely
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   775
      return 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   776
    }
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   777
  // increment p by metaSize ensuring 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   778
  // 4-byte boundary
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   779
  p += ((((metaSize - 4) + 3) & (~3)) / 4);
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   780
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   781
  // read buffer contents
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   782
  uint32_t bufSize = *p++;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   783
  size -= bufSize;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   784
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   785
  // if size less than zero, the buffer 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   786
  // will be overrun, assert
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   787
  NS_ASSERT (size >= 0);
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   788
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   789
  uint32_t bufferDeserialized =
6291
8b3cd8b4d560 change casts to c++ style
Josh Pelkey <jpelkey@gatech.edu>
parents: 6167
diff changeset
   790
    m_buffer.Deserialize (reinterpret_cast<const uint8_t *> (p), bufSize);
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   791
  if (!bufferDeserialized)
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   792
    {
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   793
      // buffer not deserialized 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   794
      // completely
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   795
      return 0;
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   796
    }
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   797
6113
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   798
  // return zero if did not deserialize the 
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   799
  // number of expected bytes
0ce37bf4f1c1 Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents: 5938
diff changeset
   800
  return (size == 0);
1138
27245d50e5e0 use CreateFullCopy and implement Serialize/Deserialize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 896
diff changeset
   801
}
27245d50e5e0 use CreateFullCopy and implement Serialize/Deserialize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 896
diff changeset
   802
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   803
void 
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   804
Packet::AddByteTag (const Tag &tag) const
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   805
{
4484
e179b5d9dea8 improve logging output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4483
diff changeset
   806
  NS_LOG_FUNCTION (this << tag.GetInstanceTypeId ().GetName () << tag.GetSerializedSize ());
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   807
  ByteTagList *list = const_cast<ByteTagList *> (&m_byteTagList);
3040
e11e106c7c19 Mtag -> Tag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3039
diff changeset
   808
  TagBuffer buffer = list->Add (tag.GetInstanceTypeId (), tag.GetSerializedSize (), 
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   809
                                m_buffer.GetCurrentStartOffset (),
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   810
                                m_buffer.GetCurrentEndOffset ());
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   811
  tag.Serialize (buffer);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   812
}
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   813
ByteTagIterator 
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   814
Packet::GetByteTagIterator (void) const
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   815
{
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   816
  return ByteTagIterator (m_byteTagList.Begin (m_buffer.GetCurrentStartOffset (), m_buffer.GetCurrentEndOffset ()));
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   817
}
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   818
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   819
bool 
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   820
Packet::FindFirstMatchingByteTag (Tag &tag) const
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   821
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   822
  TypeId tid = tag.GetInstanceTypeId ();
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   823
  ByteTagIterator i = GetByteTagIterator ();
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   824
  while (i.HasNext ())
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   825
    {
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   826
      ByteTagIterator::Item item = i.Next ();
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   827
      if (tid == item.GetTypeId ())
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   828
        {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   829
          item.GetTag (tag);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   830
          return true;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   831
        }
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   832
    }
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   833
  return false;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   834
}
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   835
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   836
void 
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   837
Packet::AddPacketTag (const Tag &tag) const
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   838
{
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   839
  NS_LOG_FUNCTION (this << tag.GetInstanceTypeId ().GetName () << tag.GetSerializedSize ());
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   840
  m_packetTagList.Add (tag);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   841
}
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   842
bool 
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   843
Packet::RemovePacketTag (Tag &tag)
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   844
{
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   845
  NS_LOG_FUNCTION (this << tag.GetInstanceTypeId ().GetName () << tag.GetSerializedSize ());
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   846
  bool found = m_packetTagList.Remove (tag);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   847
  return found;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   848
}
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   849
bool 
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   850
Packet::PeekPacketTag (Tag &tag) const
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   851
{
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   852
  bool found = m_packetTagList.Peek (tag);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   853
  return found;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   854
}
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   855
void 
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   856
Packet::RemoveAllPacketTags (void)
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   857
{
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   858
  NS_LOG_FUNCTION (this);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   859
  m_packetTagList.RemoveAll ();
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   860
}
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   861
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   862
void 
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   863
Packet::PrintPacketTags (std::ostream &os) const
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   864
{
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   865
  PacketTagIterator i = GetPacketTagIterator ();
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   866
  while (i.HasNext ())
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   867
    {
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   868
      PacketTagIterator::Item item = i.Next ();
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   869
      NS_ASSERT (item.GetTypeId ().HasConstructor ());
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   870
      Callback<ObjectBase *> constructor = item.GetTypeId ().GetConstructor ();
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   871
      NS_ASSERT (!constructor.IsNull ());
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   872
      ObjectBase *instance = constructor ();
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   873
      Tag *tag = dynamic_cast<Tag *> (instance);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   874
      NS_ASSERT (tag != 0);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   875
      item.GetTag (*tag);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   876
      tag->Print (os);
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   877
      delete tag;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   878
      if (i.HasNext ())
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   879
        {
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   880
          os << " ";
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   881
        }
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   882
    }
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   883
}
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   884
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   885
PacketTagIterator 
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   886
Packet::GetPacketTagIterator (void) const
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   887
{
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   888
  return PacketTagIterator (m_packetTagList.Head ());
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   889
}
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
   890
1360
7686e996bd1d add operator << for Packet and TraceContext
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1241
diff changeset
   891
std::ostream& operator<< (std::ostream& os, const Packet &packet)
7686e996bd1d add operator << for Packet and TraceContext
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1241
diff changeset
   892
{
7686e996bd1d add operator << for Packet and TraceContext
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1241
diff changeset
   893
  packet.Print (os);
7686e996bd1d add operator << for Packet and TraceContext
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1241
diff changeset
   894
  return os;
7686e996bd1d add operator << for Packet and TraceContext
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1241
diff changeset
   895
}
7686e996bd1d add operator << for Packet and TraceContext
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1241
diff changeset
   896
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
   897
//-----------------------------------------------------------------------------
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
   898
// Unit tests
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
   899
//-----------------------------------------------------------------------------
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   900
namespace {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   901
3040
e11e106c7c19 Mtag -> Tag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3039
diff changeset
   902
class ATestTagBase : public Tag
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   903
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   904
public:
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   905
  ATestTagBase () : m_error (false) {}
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   906
  bool m_error;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   907
};
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   908
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   909
template <int N>
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   910
class ATestTag : public ATestTagBase
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   911
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   912
public:
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   913
  static TypeId GetTypeId (void) {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   914
    std::ostringstream oss;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   915
    oss << "anon::ATestTag<" << N << ">";
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   916
    static TypeId tid = TypeId (oss.str ().c_str ())
3040
e11e106c7c19 Mtag -> Tag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3039
diff changeset
   917
      .SetParent<Tag> ()
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   918
      .AddConstructor<ATestTag<N> > ()
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   919
      .HideFromDocumentation ()
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   920
    ;
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   921
    return tid;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   922
  }
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   923
  virtual TypeId GetInstanceTypeId (void) const {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   924
    return GetTypeId ();
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   925
  }
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   926
  virtual uint32_t GetSerializedSize (void) const {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   927
    return N;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   928
  }
3040
e11e106c7c19 Mtag -> Tag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3039
diff changeset
   929
  virtual void Serialize (TagBuffer buf) const {
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   930
    for (uint32_t i = 0; i < N; ++i)
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   931
      {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   932
        buf.WriteU8 (N);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   933
      }
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   934
  }
3040
e11e106c7c19 Mtag -> Tag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3039
diff changeset
   935
  virtual void Deserialize (TagBuffer buf) {
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   936
    for (uint32_t i = 0; i < N; ++i)
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   937
      {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   938
        uint8_t v = buf.ReadU8 ();
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   939
        if (v != N)
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   940
          {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   941
            m_error = true;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   942
          }
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   943
      }
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   944
  }
3208
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   945
  virtual void Print (std::ostream &os) const {
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   946
    os << N;
1a754d09c4ba bug 200: Packet::PrintTags is not implemented.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3158
diff changeset
   947
  }
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   948
  ATestTag ()
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   949
    : ATestTagBase () {}
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   950
};
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
   951
3048
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   952
class ATestHeaderBase : public Header
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   953
{
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   954
public:
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   955
  ATestHeaderBase () : Header (), m_error (false) {}
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   956
  bool m_error;
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   957
};
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   958
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   959
template <int N>
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   960
class ATestHeader : public ATestHeaderBase
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   961
{
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   962
public:
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   963
  static TypeId GetTypeId (void) {
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   964
    std::ostringstream oss;
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   965
    oss << "anon::ATestHeader<" << N << ">";
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   966
    static TypeId tid = TypeId (oss.str ().c_str ())
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   967
      .SetParent<Header> ()
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   968
      .AddConstructor<ATestHeader<N> > ()
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   969
      .HideFromDocumentation ()
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
   970
    ;
3048
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   971
    return tid;
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   972
  }
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   973
  virtual TypeId GetInstanceTypeId (void) const {
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   974
    return GetTypeId ();
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   975
  }
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   976
  virtual uint32_t GetSerializedSize (void) const {
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   977
    return N;
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   978
  }
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   979
  virtual void Serialize (Buffer::Iterator iter) const {
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   980
    for (uint32_t i = 0; i < N; ++i)
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   981
      {
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   982
        iter.WriteU8 (N);
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   983
      }
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   984
  }
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   985
  virtual uint32_t Deserialize (Buffer::Iterator iter) {
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   986
    for (uint32_t i = 0; i < N; ++i)
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   987
      {
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   988
        uint8_t v = iter.ReadU8 ();
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   989
        if (v != N)
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   990
          {
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   991
            m_error = true;
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   992
          }
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   993
      }
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   994
    return N;
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   995
  }
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   996
  virtual void Print (std::ostream &os) const {
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   997
  }
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   998
  ATestHeader ()
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
   999
    : ATestHeaderBase () {}
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1000
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1001
};
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1002
3237
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1003
class ATestTrailerBase : public Trailer
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1004
{
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1005
public:
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1006
  ATestTrailerBase () : Trailer (), m_error (false) {}
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1007
  bool m_error;
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1008
};
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1009
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1010
template <int N>
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1011
class ATestTrailer : public ATestTrailerBase
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1012
{
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1013
public:
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1014
  static TypeId GetTypeId (void) {
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1015
    std::ostringstream oss;
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1016
    oss << "anon::ATestTrailer<" << N << ">";
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1017
    static TypeId tid = TypeId (oss.str ().c_str ())
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1018
      .SetParent<Header> ()
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1019
      .AddConstructor<ATestTrailer<N> > ()
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1020
      .HideFromDocumentation ()
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
  1021
    ;
3237
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1022
    return tid;
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1023
  }
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1024
  virtual TypeId GetInstanceTypeId (void) const {
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1025
    return GetTypeId ();
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1026
  }
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1027
  virtual uint32_t GetSerializedSize (void) const {
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1028
    return N;
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1029
  }
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1030
  virtual void Serialize (Buffer::Iterator iter) const {
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1031
    iter.Prev (N);
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1032
    for (uint32_t i = 0; i < N; ++i)
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1033
      {
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1034
        iter.WriteU8 (N);
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1035
      }
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1036
  }
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1037
  virtual uint32_t Deserialize (Buffer::Iterator iter) {
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1038
    iter.Prev (N);
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1039
    for (uint32_t i = 0; i < N; ++i)
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1040
      {
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1041
        uint8_t v = iter.ReadU8 ();
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1042
        if (v != N)
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1043
          {
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1044
            m_error = true;
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1045
          }
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1046
      }
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1047
    return N;
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1048
  }
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1049
  virtual void Print (std::ostream &os) const {
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1050
  }
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1051
  ATestTrailer ()
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1052
    : ATestTrailerBase () {}
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1053
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1054
};
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1055
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1056
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1057
struct Expected
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1058
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1059
  Expected (uint32_t n_, uint32_t start_, uint32_t end_)
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1060
    : n (n_), start (start_), end (end_) {}
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
  1061
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1062
  uint32_t n;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1063
  uint32_t start;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1064
  uint32_t end;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1065
};
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1066
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1067
}
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1068
3237
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1069
// tag name, start, end
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1070
#define E(a,b,c) a,b,c
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1071
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1072
#define CHECK(p, n, ...)                                \
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1073
  DoCheck (p, __FILE__, __LINE__, n, __VA_ARGS__)
772
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1074
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
  1075
class PacketTest : public TestCase
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1076
{
772
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1077
public:
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1078
  PacketTest ();
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1079
  virtual bool DoRun (void);
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1080
private:
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1081
  void DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...);
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1082
};
772
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1083
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1084
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1085
PacketTest::PacketTest ()
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
  1086
  : TestCase ("Packet") {
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
  1087
}
772
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1088
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1089
void
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1090
PacketTest::DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...)
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1091
{
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1092
  std::vector<struct Expected> expected;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1093
  va_list ap;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1094
  va_start (ap, n);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1095
  for (uint32_t k = 0; k < n; ++k)
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1096
    {
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1097
      uint32_t N = va_arg (ap, uint32_t);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1098
      uint32_t start = va_arg (ap, uint32_t);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1099
      uint32_t end = va_arg (ap, uint32_t);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1100
      expected.push_back (Expected (N, start, end));
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1101
    }
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1102
  va_end (ap);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1103
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1104
  ByteTagIterator i = p->GetByteTagIterator ();
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1105
  uint32_t j = 0;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1106
  while (i.HasNext () && j < expected.size ())
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1107
    {
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1108
      ByteTagIterator::Item item = i.Next ();
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1109
      struct Expected e = expected[j];
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1110
      std::ostringstream oss;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1111
      oss << "anon::ATestTag<" << e.n << ">";
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1112
      NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetTypeId ().GetName (), oss.str (), "trivial", file, line);
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1113
      NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetStart (), e.start, "trivial", file, line);
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1114
      NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetEnd (), e.end, "trivial", file, line);
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1115
      ATestTagBase *tag = dynamic_cast<ATestTagBase *> (item.GetTypeId ().GetConstructor () ());
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1116
      NS_TEST_EXPECT_MSG_NE (tag, 0, "trivial");
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1117
      item.GetTag (*tag);
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1118
      NS_TEST_EXPECT_MSG_EQ (tag->m_error, false, "trivial");
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1119
      delete tag;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1120
      j++;
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1121
    }
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1122
  NS_TEST_EXPECT_MSG_EQ (i.HasNext (), false, "Nothing left");
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1123
  NS_TEST_EXPECT_MSG_EQ (j, expected.size (), "Size match");
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1124
}
772
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1125
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1126
bool
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1127
PacketTest::DoRun (void)
772
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1128
{
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
  1129
  Ptr<Packet> pkt1 = Create<Packet> (reinterpret_cast<const uint8_t*> ("hello"), 5);
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
  1130
  Ptr<Packet> pkt2 = Create<Packet> (reinterpret_cast<const uint8_t*> (" world"), 6);
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
  1131
  Ptr<Packet> packet = Create<Packet> ();
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
  1132
  packet->AddAtEnd (pkt1);
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
  1133
  packet->AddAtEnd (pkt2);
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
  1134
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1135
  NS_TEST_EXPECT_MSG_EQ (packet->GetSize (), 11, "trivial");
772
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1136
1865
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
  1137
  std::string msg = std::string (reinterpret_cast<const char *>(packet->PeekData ()),
829dc1815014 add Packet::Ref/Unref methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1493
diff changeset
  1138
                                 packet->GetSize ());
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1139
  NS_TEST_EXPECT_MSG_EQ (msg, "hello world", "trivial");
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1140
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1141
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1142
  Ptr<const Packet> p = Create<Packet> (1000);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1143
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1144
  p->AddByteTag (ATestTag<1> ());
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1145
  CHECK (p, 1, E (1, 0, 1000));
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1146
  Ptr<const Packet> copy = p->Copy ();
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1147
  CHECK (copy, 1, E (1, 0, 1000));
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1148
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1149
  p->AddByteTag (ATestTag<2> ());
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1150
  CHECK (p, 2, E (1, 0, 1000), E(2, 0, 1000));
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1151
  CHECK (copy, 1, E (1, 0, 1000));
772
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1152
3046
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1153
  {
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1154
    Packet c0 = *copy;
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1155
    Packet c1 = *copy;
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1156
    c0 = c1;
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1157
    CHECK (&c0, 1, E (1, 0, 1000));
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1158
    CHECK (&c1, 1, E (1, 0, 1000));
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1159
    CHECK (copy, 1, E (1, 0, 1000));
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1160
    c0.AddByteTag (ATestTag<10> ());
3046
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1161
    CHECK (&c0, 2, E (1, 0, 1000), E (10, 0, 1000));
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1162
    CHECK (&c1, 1, E (1, 0, 1000));
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1163
    CHECK (copy, 1, E (1, 0, 1000));
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1164
  }
a03270ebc161 test self-assignment of packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3040
diff changeset
  1165
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1166
  Ptr<Packet> frag0 = p->CreateFragment (0, 10);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1167
  Ptr<Packet> frag1 = p->CreateFragment (10, 90);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1168
  Ptr<const Packet> frag2 = p->CreateFragment (100, 900);
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1169
  frag0->AddByteTag (ATestTag<3> ());
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1170
  CHECK (frag0, 3, E (1, 0, 10), E(2, 0, 10), E (3, 0, 10));
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1171
  frag1->AddByteTag (ATestTag<4> ());
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1172
  CHECK (frag1, 3, E (1, 0, 90), E(2, 0, 90), E (4, 0, 90));
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1173
  frag2->AddByteTag (ATestTag<5> ());
3035
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1174
  CHECK (frag2, 3, E (1, 0, 900), E(2, 0, 900), E (5, 0, 900));
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1175
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1176
  frag1->AddAtEnd (frag2);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1177
  CHECK (frag1, 6, E (1, 0, 90), E(2, 0, 90), E (4, 0, 90), E (1, 90, 990), E(2, 90, 990), E (5, 90, 990));
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1178
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1179
  CHECK (frag0, 3, E (1, 0, 10), E(2, 0, 10), E (3, 0, 10));
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1180
  frag0->AddAtEnd (frag1);
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1181
  CHECK (frag0, 9, 
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1182
         E (1, 0, 10), E(2, 0, 10), E (3, 0, 10),
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1183
         E (1, 10, 100), E(2, 10, 100), E (4, 10, 100), 
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1184
         E (1, 100, 1000), E(2, 100, 1000), E (5, 100, 1000));
644bfc099992 a new tag implementation: Mtag
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2992
diff changeset
  1185
3048
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1186
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1187
  // force caching a buffer of the right size.
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1188
  frag0 = Create<Packet> (1000);
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1189
  frag0->AddHeader (ATestHeader<10> ());
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1190
  frag0 = 0;
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1191
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1192
  p = Create<Packet> (1000);
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1193
  p->AddByteTag (ATestTag<20> ());
3048
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1194
  CHECK (p, 1, E (20, 0, 1000));
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1195
  frag0 = p->CreateFragment (10, 90);
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1196
  CHECK (p, 1, E (20, 0, 1000));
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1197
  CHECK (frag0, 1, E (20, 0, 90));
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1198
  p = 0;
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1199
  frag0->AddHeader (ATestHeader<10> ());
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1200
  CHECK (frag0, 1, E (20, 10, 100));
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1201
3237
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1202
  {
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1203
    Ptr<Packet> tmp = Create<Packet> (100);
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1204
    tmp->AddByteTag (ATestTag<20> ());
3237
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1205
    CHECK (tmp, 1, E (20, 0, 100));
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1206
    tmp->AddHeader (ATestHeader<10> ());
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1207
    CHECK (tmp, 1, E (20, 10, 110));
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1208
    ATestHeader<10> h;
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1209
    tmp->RemoveHeader (h);
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1210
    CHECK (tmp, 1, E (20, 0, 100));
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1211
    tmp->AddHeader (ATestHeader<10> ());
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1212
    CHECK (tmp, 1, E (20, 10, 110));
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1213
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1214
    tmp = Create<Packet> (100);
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1215
    tmp->AddByteTag (ATestTag<20> ());
3237
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1216
    CHECK (tmp, 1, E (20, 0, 100));
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1217
    tmp->AddTrailer (ATestTrailer<10> ());
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1218
    CHECK (tmp, 1, E (20, 0, 100));
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1219
    ATestTrailer<10> t;
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1220
    tmp->RemoveTrailer (t);
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1221
    CHECK (tmp, 1, E (20, 0, 100));
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1222
    tmp->AddTrailer (ATestTrailer<10> ());
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1223
    CHECK (tmp, 1, E (20, 0, 100));
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
  1224
3237
57d9fc10f15d a few new testcases, bug fixes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3230
diff changeset
  1225
  }
3298
f7839ed0ce9d bug 217: add failing testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3237
diff changeset
  1226
f7839ed0ce9d bug 217: add failing testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3237
diff changeset
  1227
  {
f7839ed0ce9d bug 217: add failing testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3237
diff changeset
  1228
    Ptr<Packet> tmp = Create<Packet> (0);
f7839ed0ce9d bug 217: add failing testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3237
diff changeset
  1229
    tmp->AddHeader (ATestHeader<156> ());
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1230
    tmp->AddByteTag (ATestTag<20> ());
3298
f7839ed0ce9d bug 217: add failing testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3237
diff changeset
  1231
    CHECK (tmp, 1, E (20, 0, 156));
f7839ed0ce9d bug 217: add failing testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3237
diff changeset
  1232
    tmp->RemoveAtStart (120);
f7839ed0ce9d bug 217: add failing testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3237
diff changeset
  1233
    CHECK (tmp, 1, E (20, 0, 36));
f7839ed0ce9d bug 217: add failing testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3237
diff changeset
  1234
    Ptr<Packet> a = Create<Packet> (0);
f7839ed0ce9d bug 217: add failing testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3237
diff changeset
  1235
    a->AddAtEnd (tmp);
f7839ed0ce9d bug 217: add failing testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3237
diff changeset
  1236
    CHECK (a, 1, E (20, 0, 36));
3300
c8011a2a0c60 another testcase for bug 217. Make sure we do not report tags outside of the current range
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3298
diff changeset
  1237
  }
c8011a2a0c60 another testcase for bug 217. Make sure we do not report tags outside of the current range
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3298
diff changeset
  1238
c8011a2a0c60 another testcase for bug 217. Make sure we do not report tags outside of the current range
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3298
diff changeset
  1239
  {
c8011a2a0c60 another testcase for bug 217. Make sure we do not report tags outside of the current range
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3298
diff changeset
  1240
    Ptr<Packet> tmp = Create<Packet> (0);
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1241
    tmp->AddByteTag (ATestTag<20> ());
3300
c8011a2a0c60 another testcase for bug 217. Make sure we do not report tags outside of the current range
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3298
diff changeset
  1242
    CHECK (tmp, 0, E (20, 0, 0));
c8011a2a0c60 another testcase for bug 217. Make sure we do not report tags outside of the current range
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3298
diff changeset
  1243
  }
3301
60edfd1060ff bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3300
diff changeset
  1244
  {
60edfd1060ff bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3300
diff changeset
  1245
    Ptr<Packet> tmp = Create<Packet> (1000);
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1246
    tmp->AddByteTag (ATestTag<20> ());
3301
60edfd1060ff bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3300
diff changeset
  1247
    CHECK (tmp, 1, E (20, 0, 1000));
60edfd1060ff bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3300
diff changeset
  1248
    tmp->RemoveAtStart (1000);
60edfd1060ff bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3300
diff changeset
  1249
    CHECK (tmp, 0,  E (0,0,0));
60edfd1060ff bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3300
diff changeset
  1250
    Ptr<Packet> a = Create<Packet> (10);
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1251
    a->AddByteTag (ATestTag<10> ());
3301
60edfd1060ff bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3300
diff changeset
  1252
    CHECK (a, 1, E (10, 0, 10));
60edfd1060ff bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3300
diff changeset
  1253
    tmp->AddAtEnd (a);
60edfd1060ff bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3300
diff changeset
  1254
    CHECK (tmp, 1, E (10, 0, 10));
60edfd1060ff bug 217: yet another testcase: make sure we handle degenerate testcases with tags which refer to non-existant data.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3300
diff changeset
  1255
  }
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1256
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1257
  {
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1258
    Packet p;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1259
    ATestTag<10> a;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1260
    p.AddPacketTag (a);
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1261
    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), true, "trivial");
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1262
    ATestTag<11> b;
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1263
    p.AddPacketTag (b);
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1264
    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), true, "trivial");
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1265
    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), true, "trivial");
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1266
    Packet copy = p;
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1267
    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), true, "trivial");
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1268
    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1269
    ATestTag<12> c;
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1270
    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), false, "trivial");
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1271
    copy.AddPacketTag (c);
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1272
    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), true, "trivial");
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1273
    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), true, "trivial");
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1274
    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1275
    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (c), false, "trivial");
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1276
    copy.RemovePacketTag (b);
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1277
    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), false, "trivial");
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1278
    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), true, "trivial");
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1279
    p.RemovePacketTag (a);
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1280
    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), false, "trivial");
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1281
    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1282
    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (c), false, "trivial");
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1283
    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), true, "trivial");
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1284
    p.RemoveAllPacketTags ();
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1285
    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), false, "trivial");
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1286
  }
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1287
4486
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
  1288
  {
6397
a1608a9a11f3 run check-style.py
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6291
diff changeset
  1289
    // bug 572
4486
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
  1290
    Ptr<Packet> tmp = Create<Packet> (1000);
4502
07d34c0d8d18 new tags
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4488
diff changeset
  1291
    tmp->AddByteTag (ATestTag<20> ());
4486
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
  1292
    CHECK (tmp, 1, E (20, 0, 1000));
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
  1293
    tmp->AddHeader (ATestHeader<2> ());
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
  1294
    CHECK (tmp, 1, E (20, 2, 1002));
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
  1295
    tmp->RemoveAtStart (1);
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
  1296
    CHECK (tmp, 1, E (20, 1, 1001));
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
  1297
    tmp->PeekData ();
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
  1298
    CHECK (tmp, 1, E (20, 1, 1001));
e12cbd513b47 bug 572: Tag offsets not updated in Packet::PeekData
Pavel Boyko <boyko@iitp.ru>
parents: 4484
diff changeset
  1299
  }
3048
0c66462c3406 a couple more tests.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3046
diff changeset
  1300
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1301
  return GetErrorStatus ();
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1302
}
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1303
//-----------------------------------------------------------------------------
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1304
class PacketTestSuite : public TestSuite
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1305
{
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1306
public:
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1307
  PacketTestSuite ();
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1308
};
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1309
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1310
PacketTestSuite::PacketTestSuite ()
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1311
  : TestSuite ("packet", UNIT)
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1312
{
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1313
  AddTestCase (new PacketTest);
772
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1314
}
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1315
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1316
PacketTestSuite g_packetTestSuite;
772
1e4fde8c1249 Add a Packet::AddAtEnd unit test.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 463
diff changeset
  1317
5334
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1318
92aafeab5e4f packet test suite ported to new framework
Pavel Boyko <boyko@iitp.ru>
parents: 5224
diff changeset
  1319
} // namespace ns3