src/applications/udp-echo/udp-echo-client.cc
changeset 2494 1c69ea12779c
parent 2257 71a58e70c671
child 2602 d9262bff6df2
--- a/src/applications/udp-echo/udp-echo-client.cc	Tue Feb 26 23:27:19 2008 +0100
+++ b/src/applications/udp-echo/udp-echo-client.cc	Wed Feb 27 00:05:23 2008 +0100
@@ -23,27 +23,50 @@
 #include "ns3/simulator.h"
 #include "ns3/socket-factory.h"
 #include "ns3/packet.h"
+#include "ns3/uinteger.h"
 #include "udp-echo-client.h"
 
 namespace ns3 {
 
 NS_LOG_COMPONENT_DEFINE ("UdpEchoClientApplication");
+NS_OBJECT_ENSURE_REGISTERED (UdpEchoClient);
 
-UdpEchoClient::UdpEchoClient (
-  Ptr<Node> n,
-  Ipv4Address serverAddress,
-  uint16_t serverPort,
-  uint32_t count,
-  Time interval,
-  uint32_t size)
-: 
-  Application(n)
+TypeId
+UdpEchoClient::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("UdpEchoClient")
+    .SetParent<Application> ()
+    .AddConstructor<UdpEchoClient> ()
+    .AddAttribute ("MaxPackets", "XXX",
+                   Uinteger (100),
+                   MakeUintegerAccessor (&UdpEchoClient::m_count),
+                   MakeUintegerChecker<uint32_t> ())
+    .AddAttribute ("Interval", "XXX",
+                   Seconds (1.0),
+                   MakeTimeAccessor (&UdpEchoClient::m_interval),
+                   MakeTimeChecker ())
+    .AddAttribute ("RemoteIpv4", "XXX",
+                   Ipv4Address (),
+                   MakeIpv4AddressAccessor (&UdpEchoClient::m_peerAddress),
+                   MakeIpv4AddressChecker ())
+    .AddAttribute ("RemotePort", "XXX",
+                   Uinteger (0),
+                   MakeUintegerAccessor (&UdpEchoClient::m_peerPort),
+                   MakeUintegerChecker<uint16_t> ())
+    .AddAttribute ("PacketSize", "Size of packets generated",
+                   Uinteger (100),
+                   MakeUintegerAccessor (&UdpEchoClient::m_size),
+                   MakeUintegerChecker<uint32_t> ())
+    ;
+  return tid;
+}
+
+UdpEchoClient::UdpEchoClient ()
 {
   NS_LOG_FUNCTION;
-  NS_LOG_PARAMS (this << n << serverAddress << serverPort << count
-                 << interval << size);
-
-  Construct (n, serverAddress, serverPort, count, interval, size);
+  m_sent = 0;
+  m_socket = 0;
+  m_sendEvent = EventId ();
 }
 
 UdpEchoClient::~UdpEchoClient()
@@ -52,32 +75,6 @@
 }
 
 void
-UdpEchoClient::Construct (
-  Ptr<Node> n,
-  Ipv4Address serverAddress,
-  uint16_t serverPort,
-  uint32_t count,
-  Time interval,
-  uint32_t size)
-{
-  NS_LOG_FUNCTION;
-  NS_LOG_PARAMS (this << n << serverAddress << serverPort
-                 << count << interval << size);
-
-  m_node = n;
-  m_serverAddress = serverAddress;
-  m_serverPort = serverPort;
-  m_count = count;
-  m_interval = interval;
-  m_size = size;
-
-  m_sent = 0;
-  m_socket = 0;
-  m_peer = InetSocketAddress (serverAddress, serverPort);
-  m_sendEvent = EventId ();
-}
-
-void
 UdpEchoClient::DoDispose (void)
 {
   NS_LOG_FUNCTION;
@@ -96,7 +93,7 @@
         GetNode ()->GetObject<SocketFactory> (tid);
       m_socket = socketFactory->CreateSocket ();
       m_socket->Bind ();
-      m_socket->Connect (m_peer);
+      m_socket->Connect (InetSocketAddress (m_peerAddress, m_peerPort));
     }
 
   m_socket->SetRecvCallback(MakeCallback(&UdpEchoClient::Receive, this));
@@ -136,7 +133,7 @@
   m_socket->Send (p);
   ++m_sent;
 
-  NS_LOG_INFO ("Sent " << m_size << " bytes to " << m_serverAddress);
+  NS_LOG_INFO ("Sent " << m_size << " bytes to " << m_peerAddress);
 
   if (m_sent < m_count) 
     {