author | Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
Mon, 01 Oct 2007 14:15:56 +0200 | |
changeset 1866 | e7dbcc4df546 |
parent 1243 | c1d23e1b5891 |
child 3038 | 5962e2962fa9 |
permissions | -rw-r--r-- |
1237
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
1 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
2 |
/* |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
3 |
* Copyright (c) 2006,2007 INRIA |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
4 |
* |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
8 |
* |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
13 |
* |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
17 |
* |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
18 |
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
19 |
*/ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
20 |
#include "ns3/tag.h" |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
21 |
#include "ns3/packet.h" |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
22 |
#include <iostream> |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
23 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
24 |
using namespace ns3; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
25 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
26 |
// define this class in a public header |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
27 |
class MyTag : public Tag |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
28 |
{ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
29 |
public: |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
30 |
// we have to define a public constructor |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
31 |
MyTag (); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
32 |
// we have to define a public copy constructor |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
33 |
MyTag (const MyTag &other); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
34 |
// we have to define a public destructor |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
35 |
~MyTag (); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
36 |
// we have to define a public static GetUid method |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
37 |
static uint32_t GetUid (void); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
38 |
// we have to define a public Print method |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
39 |
void Print (std::ostream &os) const; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
40 |
// we have to define a public GetSerializedSize method |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
41 |
uint32_t GetSerializedSize (void) const; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
42 |
// we have to define a public Serialize method |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
43 |
void Serialize (Buffer::Iterator i) const; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
44 |
// we have to define a public Deserialize method |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
45 |
uint32_t Deserialize (Buffer::Iterator i); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
46 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
47 |
// these are our accessors to our tag structure |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
48 |
void SetSimpleValue (uint8_t value); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
49 |
uint8_t GetSimpleValue (void) const; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
50 |
private: |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
51 |
uint8_t m_simpleValue; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
52 |
}; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
53 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
54 |
MyTag::MyTag () |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
55 |
{} |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
56 |
MyTag::MyTag (const MyTag &other) |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
57 |
: m_simpleValue (other.m_simpleValue) |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
58 |
{} |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
59 |
MyTag::~MyTag () |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
60 |
{} |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
61 |
uint32_t |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
62 |
MyTag::GetUid (void) |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
63 |
{ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
64 |
// we input a unique string to AllocateUid |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
65 |
// to avoid name collisions. |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
66 |
static uint32_t uid = AllocateUid<MyTag> ("MyTag.tests.nsnam.org"); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
67 |
return uid; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
68 |
} |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
69 |
void |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
70 |
MyTag::Print (std::ostream &os) const |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
71 |
{ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
72 |
// print the content of this tag for Packet::PrintTags |
1243
c1d23e1b5891
improve print output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1237
diff
changeset
|
73 |
os << "MyTag=0x" << std::hex << (uint32_t)m_simpleValue << std::dec; |
1237
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
74 |
} |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
75 |
uint32_t |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
76 |
MyTag::GetSerializedSize (void) const |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
77 |
{ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
78 |
// we do not want to deal with parallel simulations |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
79 |
// so we return 0. |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
80 |
return 0; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
81 |
} |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
82 |
void |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
83 |
MyTag::Serialize (Buffer::Iterator i) const |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
84 |
{ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
85 |
// we will never be invoked because we are not doing |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
86 |
// parallel simulations so, we assert. |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
87 |
NS_ASSERT (false); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
88 |
} |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
89 |
uint32_t |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
90 |
MyTag::Deserialize (Buffer::Iterator i) |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
91 |
{ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
92 |
// we will never be invoked because we are not doing |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
93 |
// parallel simulations so, we assert. |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
94 |
NS_ASSERT (false); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
95 |
// theoretically, return the number of bytes read |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
96 |
return 0; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
97 |
} |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
98 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
99 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
100 |
void |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
101 |
MyTag::SetSimpleValue (uint8_t value) |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
102 |
{ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
103 |
m_simpleValue = value; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
104 |
} |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
105 |
uint8_t |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
106 |
MyTag::GetSimpleValue (void) const |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
107 |
{ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
108 |
return m_simpleValue; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
109 |
} |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
110 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
111 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
112 |
int main (int argc, char *argv[]) |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
113 |
{ |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
114 |
// create a tag. |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
115 |
MyTag tag; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
116 |
tag.SetSimpleValue (0x56); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
117 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
118 |
// store the tag in a packet. |
1866
e7dbcc4df546
do not use Packet objects directly. Use Ptr<Packet> instead
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1243
diff
changeset
|
119 |
Ptr<Packet> p = Create<Packet> (); |
e7dbcc4df546
do not use Packet objects directly. Use Ptr<Packet> instead
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1243
diff
changeset
|
120 |
p->AddTag (tag); |
1237
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
121 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
122 |
// create a copy of the packet |
1866
e7dbcc4df546
do not use Packet objects directly. Use Ptr<Packet> instead
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1243
diff
changeset
|
123 |
Ptr<Packet> aCopy = p->Copy (); |
1237
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
124 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
125 |
// read the tag from the packet copy |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
126 |
MyTag tagCopy; |
1866
e7dbcc4df546
do not use Packet objects directly. Use Ptr<Packet> instead
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1243
diff
changeset
|
127 |
p->PeekTag (tagCopy); |
1237
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
128 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
129 |
// the copy and the original are the same ! |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
130 |
NS_ASSERT (tagCopy.GetSimpleValue () == tag.GetSimpleValue ()); |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
131 |
|
1866
e7dbcc4df546
do not use Packet objects directly. Use Ptr<Packet> instead
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1243
diff
changeset
|
132 |
aCopy->PrintTags (std::cout); |
1243
c1d23e1b5891
improve print output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1237
diff
changeset
|
133 |
std::cout << std::endl; |
1237
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
134 |
|
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
135 |
return 0; |
636a61b111ae
sample packet tag code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
136 |
} |