1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2018 Natale Patriciello <natale.patriciello@gmail.com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  *
18  */
19 #include "tcp-tx-item.h"
20 
21 namespace ns3 {
22 
23 void
Print(std::ostream & os,Time::Unit unit) const24 TcpTxItem::Print (std::ostream &os, Time::Unit unit /* = Time::S */) const
25 {
26   bool comma = false;
27   os << "[" << m_startSeq << ";" << m_startSeq + GetSeqSize () << "|"
28      << GetSeqSize () << "]";
29 
30   if (m_lost)
31     {
32       os << "[lost]";
33       comma = true;
34     }
35   if (m_retrans)
36     {
37       if (comma)
38         {
39           os << ",";
40         }
41 
42       os << "[retrans]";
43       comma = true;
44     }
45   if (m_sacked)
46     {
47       if (comma)
48         {
49           os << ",";
50         }
51       os << "[sacked]";
52       comma = true;
53     }
54   if (comma)
55     {
56       os << ",";
57     }
58   os << "[" << m_lastSent.As (unit) << "]";
59 }
60 
61 uint32_t
GetSeqSize(void) const62 TcpTxItem::GetSeqSize (void) const
63 {
64   return m_packet && m_packet->GetSize () > 0 ? m_packet->GetSize () : 1;
65 }
66 
67 bool
IsSacked(void) const68 TcpTxItem::IsSacked (void) const
69 {
70   return m_sacked;
71 }
72 
73 bool
IsRetrans(void) const74 TcpTxItem::IsRetrans (void) const
75 {
76   return m_retrans;
77 }
78 
79 Ptr<Packet>
GetPacketCopy(void) const80 TcpTxItem::GetPacketCopy (void) const
81 {
82   return m_packet->Copy ();
83 }
84 
85 Ptr<const Packet>
GetPacket(void) const86 TcpTxItem::GetPacket (void) const
87 {
88   return m_packet;
89 }
90 
91 const Time &
GetLastSent(void) const92 TcpTxItem::GetLastSent (void) const
93 {
94   return m_lastSent;
95 }
96 
97 TcpTxItem::RateInformation &
GetRateInformation(void)98 TcpTxItem::GetRateInformation (void)
99 {
100   return m_rateInfo;
101 }
102 
103 
104 } // namespace ns3
105