# HG changeset patch # User Tom Henderson # Date 1211311015 25200 # Node ID b0b0abb911cd14cc17865c74a3ec4aa899f033bb # Parent d82336dfd269ce30f4d33129ec844a2a86622e8e move Tcp to TcpSocketFactory diff -r d82336dfd269 -r b0b0abb911cd examples/tcp-large-transfer.cc --- a/examples/tcp-large-transfer.cc Tue May 20 11:52:25 2008 -0700 +++ b/examples/tcp-large-transfer.cc Tue May 20 12:16:55 2008 -0700 @@ -169,15 +169,15 @@ uint16_t servPort = 50000; // Create a packet sink to receive these packets - PacketSinkHelper sink ("ns3::Tcp", + PacketSinkHelper sink ("ns3::TcpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), servPort)); ApplicationContainer apps = sink.Install (c1.Get (1)); apps.Start (Seconds (0.0)); // and generate traffic to remote sink. - //TypeId tid = TypeId::LookupByName ("ns3::Tcp"); - Ptr localSocket = Socket::CreateSocket (c0.Get (0), Tcp::GetTypeId ()); + //TypeId tid = TypeId::LookupByName ("ns3::TcpSocketFactory"); + Ptr localSocket = Socket::CreateSocket (c0.Get (0), TcpSocketFactory::GetTypeId ()); localSocket->Bind (); Simulator::ScheduleNow (&StartFlow, localSocket, nBytes, ipInterfs.GetAddress (1), servPort); diff -r d82336dfd269 -r b0b0abb911cd src/helper/packet-sink-helper.cc --- a/src/helper/packet-sink-helper.cc Tue May 20 11:52:25 2008 -0700 +++ b/src/helper/packet-sink-helper.cc Tue May 20 12:16:55 2008 -0700 @@ -47,7 +47,7 @@ void PacketSinkHelper::SetTcpLocal (Ipv4Address ip, uint16_t port) { - m_factory.Set ("Protocol", String ("ns3::Tcp")); + m_factory.Set ("Protocol", String ("ns3::TcpSocketFactory")); m_factory.Set ("Local", Address (InetSocketAddress (ip, port))); } #endif diff -r d82336dfd269 -r b0b0abb911cd src/internet-node/tcp-header.h --- a/src/internet-node/tcp-header.h Tue May 20 11:52:25 2008 -0700 +++ b/src/internet-node/tcp-header.h Tue May 20 12:16:55 2008 -0700 @@ -24,7 +24,7 @@ #include #include "ns3/header.h" #include "ns3/buffer.h" -#include "ns3/tcp.h" +#include "ns3/tcp-socket-factory.h" #include "ns3/ipv4-address.h" #include "ns3/sequence-number.h" diff -r d82336dfd269 -r b0b0abb911cd src/internet-node/tcp-impl.cc --- a/src/internet-node/tcp-impl.cc Tue May 20 11:52:25 2008 -0700 +++ b/src/internet-node/tcp-impl.cc Tue May 20 12:16:55 2008 -0700 @@ -48,7 +48,7 @@ TcpImpl::DoDispose (void) { m_tcp = 0; - Tcp::DoDispose (); + TcpSocketFactory::DoDispose (); } } // namespace ns3 diff -r d82336dfd269 -r b0b0abb911cd src/internet-node/tcp-impl.h --- a/src/internet-node/tcp-impl.h Tue May 20 11:52:25 2008 -0700 +++ b/src/internet-node/tcp-impl.h Tue May 20 12:16:55 2008 -0700 @@ -20,7 +20,7 @@ #ifndef TCP_IMPL_H #define TCP_IMPL_H -#include "ns3/tcp.h" +#include "ns3/tcp-socket-factory.h" #include "ns3/ptr.h" namespace ns3 { @@ -39,7 +39,7 @@ * * Most of the logic is in class ns3::TcpSocketImpl. */ -class TcpImpl : public Tcp +class TcpImpl : public TcpSocketFactory { public: TcpImpl (); diff -r d82336dfd269 -r b0b0abb911cd src/internet-node/tcp-socket-impl.cc --- a/src/internet-node/tcp-socket-impl.cc Tue May 20 11:52:25 2008 -0700 +++ b/src/internet-node/tcp-socket-impl.cc Tue May 20 12:16:55 2008 -0700 @@ -176,7 +176,7 @@ TcpSocketImpl::SetNode (Ptr node) { m_node = node; - Ptr t = node->GetObject (); + Ptr t = node->GetObject (); m_segmentSize = t->GetDefaultSegSize (); m_rxWindowSize = t->GetDefaultAdvWin (); m_advertisedWindowSize = t->GetDefaultAdvWin (); diff -r d82336dfd269 -r b0b0abb911cd src/node/tcp-socket-factory.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/node/tcp-socket-factory.cc Tue May 20 12:16:55 2008 -0700 @@ -0,0 +1,140 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2007 Georgia Tech Research Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Raj Bhattacharjea + */ +#include "tcp-socket-factory.h" +#include "ns3/uinteger.h" +#include "ns3/double.h" + +namespace ns3 { + +NS_OBJECT_ENSURE_REGISTERED (TcpSocketFactory); + +TypeId +TcpSocketFactory::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::TcpSocketFactory") + .SetParent () + .AddAttribute ("DefaultSegmentSize", + "Default TCP maximum segment size in bytes (may be adjusted based on MTU discovery)", + UintegerValue (536), + MakeUintegerAccessor (&TcpSocketFactory::m_defaultSegSize), + MakeUintegerChecker ()) + .AddAttribute ("DefaultAdvertisedWindowSize", + "Default TCP advertised window size (bytes)", + UintegerValue (0xffff), + MakeUintegerAccessor (&TcpSocketFactory::m_defaultAdvWin), + MakeUintegerChecker ()) + .AddAttribute ("DefaultSlowStartThreshold", + "Default TCP slow start threshold (bytes)", + UintegerValue (0xffff), + MakeUintegerAccessor (&TcpSocketFactory::m_defaultSsThresh), + MakeUintegerChecker ()) + .AddAttribute ("DefaultTxBufferSize", + "Default TCP maximum transmit buffer size (bytes)", + UintegerValue (0xffffffffl), + MakeUintegerAccessor (&TcpSocketFactory::m_defaultTxBuffer), + MakeUintegerChecker ()) + .AddAttribute ("DefaultRxBufferSize", + "Default TCP maximum receive buffer size (bytes)", + UintegerValue (0xffffffffl), + MakeUintegerAccessor (&TcpSocketFactory::m_defaultRxBuffer), + MakeUintegerChecker ()) + .AddAttribute ("DefaultInitialCongestionWindowSize", + "Default TCP initial congestion window size (segments)", + UintegerValue (1), + MakeUintegerAccessor (&TcpSocketFactory::m_defaultInitialCwnd), + MakeUintegerChecker ()) + .AddAttribute ("DefaultConnTimeout", + "Default TCP retransmission timeout when opening connection (seconds)", + UintegerValue (3), + MakeUintegerAccessor (&TcpSocketFactory::m_defaultConnTimeout), + MakeUintegerChecker ()) + .AddAttribute ("DefaultConnCount", + "Default number of connection attempts (SYN retransmissions) before returning failure", + UintegerValue (6), + MakeUintegerAccessor (&TcpSocketFactory::m_defaultConnCount), + MakeUintegerChecker ()) + .AddAttribute ("DefaultDelAckTimeout", + "Default timeout value for TCP delayed acks, in seconds", + DoubleValue (0.2), + MakeDoubleAccessor (&TcpSocketFactory::m_defaultDelAckTimeout), + MakeDoubleChecker ()) + .AddAttribute ("DefaultDelAckCount", + "Default number of packets to wait before sending a TCP ack", + UintegerValue (2), + MakeUintegerAccessor (&TcpSocketFactory::m_defaultDelAckCount), + MakeUintegerChecker ()) + ; + return tid; +} + +uint32_t +TcpSocketFactory::GetDefaultSegSize (void) const +{ + return m_defaultSegSize; +} +uint32_t +TcpSocketFactory::GetDefaultAdvWin (void) const +{ + return m_defaultAdvWin; +} +uint32_t +TcpSocketFactory::GetDefaultSsThresh (void) const +{ + return m_defaultSsThresh; +} +uint32_t +TcpSocketFactory::GetDefaultTxBuffer (void) const +{ + return m_defaultTxBuffer; +} +uint32_t +TcpSocketFactory::GetDefaultRxBuffer (void) const +{ + return m_defaultRxBuffer; +} +uint32_t +TcpSocketFactory::GetDefaultInitialCwnd (void) const +{ + return m_defaultInitialCwnd; +} +uint32_t +TcpSocketFactory::GetDefaultConnTimeout (void) const +{ + return m_defaultConnTimeout; +} +uint32_t +TcpSocketFactory::GetDefaultConnCount (void) const +{ + return m_defaultConnCount; +} + +double +TcpSocketFactory::GetDefaultDelAckTimeout (void) const +{ + return m_defaultDelAckTimeout; +} + +uint32_t +TcpSocketFactory::GetDefaultDelAckCount (void) const +{ + return m_defaultDelAckCount; +} + +} // namespace ns3 diff -r d82336dfd269 -r b0b0abb911cd src/node/tcp-socket-factory.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/node/tcp-socket-factory.h Tue May 20 12:16:55 2008 -0700 @@ -0,0 +1,78 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2007 Georgia Tech Research Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Raj Bhattacharjea + */ +#ifndef TCP_SOCKET_FACTORY_H +#define TCP_SOCKET_FACTORY_H + +#include "socket-factory.h" + +namespace ns3 { + +class Socket; + +/** + * \brief API to create TCP socket instances + * + * This abstract class defines the API for TCP sockets. + * This class also holds the global default variables used to + * initialize newly created sockets, such as values that are + * set through the sysctl or proc interfaces in Linux. + + * All TCP socket factory implementations must provide an implementation + * of CreateSocket + * below, and should make use of the default values configured below. + * + * \see TcpSocketFactoryImpl + * + */ +class TcpSocketFactory : public SocketFactory +{ +public: + static TypeId GetTypeId (void); + + virtual Ptr CreateSocket (void) = 0; + + uint32_t GetDefaultSegSize (void) const; + uint32_t GetDefaultAdvWin (void) const; + uint32_t GetDefaultSsThresh (void) const; + uint32_t GetDefaultTxBuffer (void) const; + uint32_t GetDefaultRxBuffer (void) const; + uint32_t GetDefaultInitialCwnd (void) const; + uint32_t GetDefaultConnTimeout (void) const; + uint32_t GetDefaultConnCount (void) const; + double GetDefaultDelAckTimeout (void) const; + uint32_t GetDefaultDelAckCount (void) const; + +private: + uint32_t m_defaultSegSize; + uint32_t m_defaultAdvWin; + uint32_t m_defaultSsThresh; + uint32_t m_defaultTxBuffer; + uint32_t m_defaultRxBuffer; + uint32_t m_defaultInitialCwnd; + uint32_t m_defaultConnTimeout; + uint32_t m_defaultConnCount; + double m_defaultDelAckTimeout; + uint32_t m_defaultDelAckCount; + +}; + +} // namespace ns3 + +#endif /* TCP_SOCKET_FACTORY_H */ diff -r d82336dfd269 -r b0b0abb911cd src/node/tcp.cc --- a/src/node/tcp.cc Tue May 20 11:52:25 2008 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ -/* - * Copyright (c) 2007 Georgia Tech Research Corporation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation; - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Author: Raj Bhattacharjea - */ -#include "tcp.h" -#include "ns3/uinteger.h" -#include "ns3/double.h" - -namespace ns3 { - -NS_OBJECT_ENSURE_REGISTERED (Tcp); - -TypeId -Tcp::GetTypeId (void) -{ - static TypeId tid = TypeId ("ns3::Tcp") - .SetParent () - .AddAttribute ("DefaultSegmentSize", - "Default TCP maximum segment size in bytes (may be adjusted based on MTU discovery)", - UintegerValue (536), - MakeUintegerAccessor (&Tcp::m_defaultSegSize), - MakeUintegerChecker ()) - .AddAttribute ("DefaultAdvertisedWindowSize", - "Default TCP advertised window size (bytes)", - UintegerValue (0xffff), - MakeUintegerAccessor (&Tcp::m_defaultAdvWin), - MakeUintegerChecker ()) - .AddAttribute ("DefaultSlowStartThreshold", - "Default TCP slow start threshold (bytes)", - UintegerValue (0xffff), - MakeUintegerAccessor (&Tcp::m_defaultSsThresh), - MakeUintegerChecker ()) - .AddAttribute ("DefaultTxBufferSize", - "Default TCP maximum transmit buffer size (bytes)", - UintegerValue (0xffffffffl), - MakeUintegerAccessor (&Tcp::m_defaultTxBuffer), - MakeUintegerChecker ()) - .AddAttribute ("DefaultRxBufferSize", - "Default TCP maximum receive buffer size (bytes)", - UintegerValue (0xffffffffl), - MakeUintegerAccessor (&Tcp::m_defaultRxBuffer), - MakeUintegerChecker ()) - .AddAttribute ("DefaultInitialCongestionWindowSize", - "Default TCP initial congestion window size (segments)", - UintegerValue (1), - MakeUintegerAccessor (&Tcp::m_defaultInitialCwnd), - MakeUintegerChecker ()) - .AddAttribute ("DefaultConnTimeout", - "Default TCP retransmission timeout when opening connection (seconds)", - UintegerValue (3), - MakeUintegerAccessor (&Tcp::m_defaultConnTimeout), - MakeUintegerChecker ()) - .AddAttribute ("DefaultConnCount", - "Default number of connection attempts (SYN retransmissions) before returning failure", - UintegerValue (6), - MakeUintegerAccessor (&Tcp::m_defaultConnCount), - MakeUintegerChecker ()) - .AddAttribute ("DefaultDelAckTimeout", - "Default timeout value for TCP delayed acks, in seconds", - DoubleValue (0.2), - MakeDoubleAccessor (&Tcp::m_defaultDelAckTimeout), - MakeDoubleChecker ()) - .AddAttribute ("DefaultDelAckCount", - "Default number of packets to wait before sending a TCP ack", - UintegerValue (2), - MakeUintegerAccessor (&Tcp::m_defaultDelAckCount), - MakeUintegerChecker ()) - ; - return tid; -} - -uint32_t -Tcp::GetDefaultSegSize (void) const -{ - return m_defaultSegSize; -} -uint32_t -Tcp::GetDefaultAdvWin (void) const -{ - return m_defaultAdvWin; -} -uint32_t -Tcp::GetDefaultSsThresh (void) const -{ - return m_defaultSsThresh; -} -uint32_t -Tcp::GetDefaultTxBuffer (void) const -{ - return m_defaultTxBuffer; -} -uint32_t -Tcp::GetDefaultRxBuffer (void) const -{ - return m_defaultRxBuffer; -} -uint32_t -Tcp::GetDefaultInitialCwnd (void) const -{ - return m_defaultInitialCwnd; -} -uint32_t -Tcp::GetDefaultConnTimeout (void) const -{ - return m_defaultConnTimeout; -} -uint32_t -Tcp::GetDefaultConnCount (void) const -{ - return m_defaultConnCount; -} - -double -Tcp::GetDefaultDelAckTimeout (void) const -{ - return m_defaultDelAckTimeout; -} - -uint32_t -Tcp::GetDefaultDelAckCount (void) const -{ - return m_defaultDelAckCount; -} - -} // namespace ns3 diff -r d82336dfd269 -r b0b0abb911cd src/node/tcp.h --- a/src/node/tcp.h Tue May 20 11:52:25 2008 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ -/* - * Copyright (c) 2007 Georgia Tech Research Corporation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation; - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Author: Raj Bhattacharjea - */ -#ifndef TCP_H -#define TCP_H - -#include "socket-factory.h" - -namespace ns3 { - -class Socket; - -/** - * \brief API to create TCP socket instances - * - * This abstract class defines the API for TCP sockets. - * This class also holds the global default variables used to - * initialize newly created sockets, such as values that are - * set through the sysctl or proc interfaces in Linux. - - * All TCP implementations must provide an implementation of CreateSocket - * below, and should make use of the default values configured below. - * - * \see TcpImpl - * - */ -class Tcp : public SocketFactory -{ -public: - static TypeId GetTypeId (void); - - virtual Ptr CreateSocket (void) = 0; - - uint32_t GetDefaultSegSize (void) const; - uint32_t GetDefaultAdvWin (void) const; - uint32_t GetDefaultSsThresh (void) const; - uint32_t GetDefaultTxBuffer (void) const; - uint32_t GetDefaultRxBuffer (void) const; - uint32_t GetDefaultInitialCwnd (void) const; - uint32_t GetDefaultConnTimeout (void) const; - uint32_t GetDefaultConnCount (void) const; - double GetDefaultDelAckTimeout (void) const; - uint32_t GetDefaultDelAckCount (void) const; - -private: - uint32_t m_defaultSegSize; - uint32_t m_defaultAdvWin; - uint32_t m_defaultSsThresh; - uint32_t m_defaultTxBuffer; - uint32_t m_defaultRxBuffer; - uint32_t m_defaultInitialCwnd; - uint32_t m_defaultConnTimeout; - uint32_t m_defaultConnCount; - double m_defaultDelAckTimeout; - uint32_t m_defaultDelAckCount; - -}; - -} // namespace ns3 - -#endif /* TCP_H */ diff -r d82336dfd269 -r b0b0abb911cd src/node/wscript --- a/src/node/wscript Tue May 20 11:52:25 2008 -0700 +++ b/src/node/wscript Tue May 20 12:16:55 2008 -0700 @@ -27,7 +27,7 @@ 'packet-socket.cc', 'udp-socket.cc', 'udp-socket-factory.cc', - 'tcp.cc', + 'tcp-socket-factory.cc', 'ipv4.cc', 'application.cc', 'simple-channel.cc', @@ -60,7 +60,7 @@ 'packet-socket-factory.h', 'udp-socket.h', 'udp-socket-factory.h', - 'tcp.h', + 'tcp-socket-factory.h', 'ipv4.h', 'application.h', 'simple-channel.h', diff -r d82336dfd269 -r b0b0abb911cd utils/print-introspected-doxygen.cc --- a/utils/print-introspected-doxygen.cc Tue May 20 11:52:25 2008 -0700 +++ b/utils/print-introspected-doxygen.cc Tue May 20 12:16:55 2008 -0700 @@ -236,7 +236,7 @@ NodeContainer c; c.Create (1); StaticInformation info; - info.RecordAggregationInfo ("ns3::Node", "ns3::Tcp"); + info.RecordAggregationInfo ("ns3::Node", "ns3::TcpSocketFactory"); info.RecordAggregationInfo ("ns3::Node", "ns3::UdpSocketFactory"); info.RecordAggregationInfo ("ns3::Node", "ns3::PacketSocketFactory"); info.RecordAggregationInfo ("ns3::Node", "ns3::olsr::Agent");