10 class MyHeader : public Header { |
10 class MyHeader : public Header { |
11 public: |
11 public: |
12 MyHeader (); |
12 MyHeader (); |
13 virtual ~MyHeader (); |
13 virtual ~MyHeader (); |
14 |
14 |
15 void setData (uint16_t data); |
15 void SetData (uint16_t data); |
16 uint16_t getData (void) const; |
16 uint16_t GetData (void) const; |
17 private: |
17 private: |
18 virtual void printTo (std::ostream &os) const; |
18 virtual void PrintTo (std::ostream &os) const; |
19 virtual void serializeTo (Buffer::Iterator start) const; |
19 virtual void SerializeTo (Buffer::Iterator start) const; |
20 virtual void deserializeFrom (Buffer::Iterator start); |
20 virtual void DeserializeFrom (Buffer::Iterator start); |
21 virtual uint32_t getSerializedSize (void) const; |
21 virtual uint32_t GetSerializedSize (void) const; |
22 |
22 |
23 uint16_t m_data; |
23 uint16_t m_data; |
24 }; |
24 }; |
25 |
25 |
26 MyHeader::MyHeader () |
26 MyHeader::MyHeader () |
27 {} |
27 {} |
28 MyHeader::~MyHeader () |
28 MyHeader::~MyHeader () |
29 {} |
29 {} |
30 void |
30 void |
31 MyHeader::printTo (std::ostream &os) const |
31 MyHeader::PrintTo (std::ostream &os) const |
32 { |
32 { |
33 os << "MyHeader data=" << m_data << std::endl; |
33 os << "MyHeader data=" << m_data << std::endl; |
34 } |
34 } |
35 uint32_t |
35 uint32_t |
36 MyHeader::getSerializedSize (void) const |
36 MyHeader::GetSerializedSize (void) const |
37 { |
37 { |
38 return 2; |
38 return 2; |
39 } |
39 } |
40 void |
40 void |
41 MyHeader::serializeTo (Buffer::Iterator start) const |
41 MyHeader::SerializeTo (Buffer::Iterator start) const |
42 { |
42 { |
43 // serialize in head of buffer |
43 // serialize in head of buffer |
44 start.writeHtonU16 (m_data); |
44 start.WriteHtonU16 (m_data); |
45 } |
45 } |
46 void |
46 void |
47 MyHeader::deserializeFrom (Buffer::Iterator start) |
47 MyHeader::DeserializeFrom (Buffer::Iterator start) |
48 { |
48 { |
49 // deserialize from head of buffer |
49 // deserialize from head of buffer |
50 m_data = start.readNtohU16 (); |
50 m_data = start.ReadNtohU16 (); |
51 } |
51 } |
52 |
52 |
53 void |
53 void |
54 MyHeader::setData (uint16_t data) |
54 MyHeader::SetData (uint16_t data) |
55 { |
55 { |
56 m_data = data; |
56 m_data = data; |
57 } |
57 } |
58 uint16_t |
58 uint16_t |
59 MyHeader::getData (void) const |
59 MyHeader::GetData (void) const |
60 { |
60 { |
61 return m_data; |
61 return m_data; |
62 } |
62 } |
63 |
63 |
64 /* A sample Tag implementation |
64 /* A sample Tag implementation |
69 |
69 |
70 static TagRegistration<struct MyTag> g_MyTagRegistration ("ns3::MyTag", 0); |
70 static TagRegistration<struct MyTag> g_MyTagRegistration ("ns3::MyTag", 0); |
71 |
71 |
72 |
72 |
73 static void |
73 static void |
74 receive (Packet p) |
74 Receive (Packet p) |
75 { |
75 { |
76 MyHeader my; |
76 MyHeader my; |
77 p.peek (my); |
77 p.Peek (my); |
78 p.remove (my); |
78 p.Remove (my); |
79 std::cout << "received data=" << my.getData () << std::endl; |
79 std::cout << "received data=" << my.GetData () << std::endl; |
80 struct MyTag myTag; |
80 struct MyTag myTag; |
81 p.peekTag (myTag); |
81 p.PeekTag (myTag); |
82 } |
82 } |
83 |
83 |
84 |
84 |
85 int main (int argc, char *argv[]) |
85 int main (int argc, char *argv[]) |
86 { |
86 { |
87 Packet p; |
87 Packet p; |
88 MyHeader my; |
88 MyHeader my; |
89 my.setData (2); |
89 my.SetData (2); |
90 std::cout << "send data=2" << std::endl; |
90 std::cout << "send data=2" << std::endl; |
91 p.add (my); |
91 p.Add (my); |
92 struct MyTag myTag; |
92 struct MyTag myTag; |
93 myTag.m_streamId = 5; |
93 myTag.m_streamId = 5; |
94 p.addTag (myTag); |
94 p.AddTag (myTag); |
95 receive (p); |
95 Receive (p); |
96 return 0; |
96 return 0; |
97 } |
97 } |