A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
packet-sink.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright 2007 University of Washington
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  * Author: Tom Henderson (tomhend@u.washington.edu)
19  */
20 
21 #ifndef PACKET_SINK_H
22 #define PACKET_SINK_H
23 
24 #include "ns3/application.h"
25 #include "ns3/event-id.h"
26 #include "ns3/ptr.h"
27 #include "ns3/traced-callback.h"
28 #include "ns3/address.h"
29 
30 namespace ns3 {
31 
32 class Address;
33 class Socket;
34 class Packet;
35 
68 class PacketSink : public Application
69 {
70 public:
71  static TypeId GetTypeId (void);
72  PacketSink ();
73 
74  virtual ~PacketSink ();
75 
79  uint32_t GetTotalRx () const;
80 
84  Ptr<Socket> GetListeningSocket (void) const;
85 
89  std::list<Ptr<Socket> > GetAcceptedSockets (void) const;
90 
91 protected:
92  virtual void DoDispose (void);
93 private:
94  // inherited from Application base class.
95  virtual void StartApplication (void); // Called at time specified by Start
96  virtual void StopApplication (void); // Called at time specified by Stop
97 
98  void HandleRead (Ptr<Socket>);
99  void HandleAccept (Ptr<Socket>, const Address& from);
102 
103  // In the case of TCP, each socket accept returns a new socket, so the
104  // listening socket is stored seperately from the accepted sockets
105  Ptr<Socket> m_socket; // Listening socket
106  std::list<Ptr<Socket> > m_socketList; //the accepted sockets
107 
108  Address m_local; // Local address to bind to
109  uint32_t m_totalRx; // Total bytes received
110  TypeId m_tid; // Protocol TypeId
112 
113 };
114 
115 } // namespace ns3
116 
117 #endif /* PACKET_SINK_H */
118 
void HandlePeerError(Ptr< Socket >)
Definition: packet-sink.cc:194
void HandleRead(Ptr< Socket >)
Definition: packet-sink.cc:154
uint32_t m_totalRx
Definition: packet-sink.h:109
forward calls to a chain of CallbackAn ns3::TracedCallback has almost exactly the same API as a norma...
TracedCallback< Ptr< const Packet >, const Address & > m_rxTrace
Definition: packet-sink.h:111
static TypeId GetTypeId(void)
Definition: packet-sink.cc:41
a polymophic address class
Definition: address.h:86
The base class for all ns3 applications.
Definition: application.h:61
virtual void StopApplication(void)
Application specific shutdown code.
Definition: packet-sink.cc:138
virtual ~PacketSink()
Definition: packet-sink.cc:67
uint32_t GetTotalRx() const
Definition: packet-sink.cc:72
std::list< Ptr< Socket > > GetAcceptedSockets(void) const
Definition: packet-sink.cc:86
std::list< Ptr< Socket > > m_socketList
Definition: packet-sink.h:106
void HandlePeerClose(Ptr< Socket >)
Definition: packet-sink.cc:189
void HandleAccept(Ptr< Socket >, const Address &from)
Definition: packet-sink.cc:200
virtual void DoDispose(void)
Definition: packet-sink.cc:92
virtual void StartApplication(void)
Application specific startup code.
Definition: packet-sink.cc:104
Receive and consume traffic generated to an IP address and port.
Definition: packet-sink.h:68
Ptr< Socket > m_socket
Definition: packet-sink.h:105
a unique identifier for an interface.
Definition: type-id.h:49
Ptr< Socket > GetListeningSocket(void) const
Definition: packet-sink.cc:79