A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
tcp-socket.h
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2006 Georgia Tech Research Corporation
4  * 2007 INRIA
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation;
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Authors: George F. Riley<riley@ece.gatech.edu>
20  * Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
21  */
22 
23 #ifndef TCP_SOCKET_H
24 #define TCP_SOCKET_H
25 
26 #include "ns3/socket.h"
27 #include "ns3/traced-callback.h"
28 #include "ns3/callback.h"
29 #include "ns3/ptr.h"
30 #include "ns3/object.h"
31 #include "ns3/nstime.h"
32 
33 namespace ns3 {
34 
35 class Node;
36 class Packet;
37 
38 /* Names of the 11 TCP states */
39 typedef enum {
40  CLOSED, // 0
41  LISTEN, // 1
42  SYN_SENT, // 2
43  SYN_RCVD, // 3
44  ESTABLISHED, // 4
45  CLOSE_WAIT, // 5
46  LAST_ACK, // 6
47  FIN_WAIT_1, // 7
48  FIN_WAIT_2, // 8
49  CLOSING, // 9
50  TIME_WAIT, // 10
51  LAST_STATE
52 } TcpStates_t;
53 
62 class TcpSocket : public Socket
63 {
64 public:
65  static TypeId GetTypeId (void);
66 
67  TcpSocket (void);
68  virtual ~TcpSocket (void);
69 
70  // Literal names of TCP states for use in log messages */
71  static const char* const TcpStateName[LAST_STATE];
72 
73 private:
74  // Indirect the attribute setting and getting through private virtual methods
75  virtual void SetSndBufSize (uint32_t size) = 0;
76  virtual uint32_t GetSndBufSize (void) const = 0;
77  virtual void SetRcvBufSize (uint32_t size) = 0;
78  virtual uint32_t GetRcvBufSize (void) const = 0;
79  virtual void SetSegSize (uint32_t size) = 0;
80  virtual uint32_t GetSegSize (void) const = 0;
81  virtual void SetSSThresh (uint32_t threshold) = 0;
82  virtual uint32_t GetSSThresh (void) const = 0;
83  virtual void SetInitialCwnd (uint32_t count) = 0;
84  virtual uint32_t GetInitialCwnd (void) const = 0;
85  virtual void SetConnTimeout (Time timeout) = 0;
86  virtual Time GetConnTimeout (void) const = 0;
87  virtual void SetConnCount (uint32_t count) = 0;
88  virtual uint32_t GetConnCount (void) const = 0;
89  virtual void SetDelAckTimeout (Time timeout) = 0;
90  virtual Time GetDelAckTimeout (void) const = 0;
91  virtual void SetDelAckMaxCount (uint32_t count) = 0;
92  virtual uint32_t GetDelAckMaxCount (void) const = 0;
93  virtual void SetTcpNoDelay (bool noDelay) = 0;
94  virtual bool GetTcpNoDelay (void) const = 0;
95  virtual void SetPersistTimeout (Time timeout) = 0;
96  virtual Time GetPersistTimeout (void) const = 0;
97 
98 };
99 
100 } // namespace ns3
101 
102 #endif /* TCP_SOCKET_H */
103 
104 
keep track of time unit.
Definition: nstime.h:149
(abstract) base class of all TcpSockets
Definition: tcp-socket.h:62
A low-level Socket API based loosely on the BSD Socket API.A few things to keep in mind about this ty...
Definition: socket.h:66
a unique identifier for an interface.
Definition: type-id.h:44