samples/main-packet.cc
changeset 122 6b8f1eda5c57
parent 111 ad64f88919b5
child 126 2bd1d886a97d
equal deleted inserted replaced
121:f8bc1a370b82 122:6b8f1eda5c57
    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 }