blob: b750907eadcbfcd008a1a15b91a666e2887ba488 [file] [log] [blame]
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
//
// stupid-interest-sink.h
// Abstraction
//
// Created by Ilya Moiseenko on 10.08.11.
// Copyright 2011 UCLA. All rights reserved.
//
#include "ns3/application.h"
#include "ns3/event-id.h"
#include "ns3/ptr.h"
#include "ns3/traced-callback.h"
#include "ns3/address.h"
namespace ns3
{
class Address;
class Socket;
class Packet;
class StupidInterestSink : public Application
{
public:
static TypeId GetTypeId (void);
StupidInterestSink ();
virtual ~StupidInterestSink ();
/**
* \return the total bytes received in this sink app
*/
uint32_t GetTotalRx () const;
/**
* \return pointer to listening socket
*/
Ptr<Socket> GetListeningSocket (void) const;
/**
* \return list of pointers to accepted sockets
*/
std::list<Ptr<Socket> > GetAcceptedSockets (void) const;
protected:
virtual void DoDispose (void);
private:
// inherited from Application base class.
virtual void StartApplication (void); // Called at time specified by Start
virtual void StopApplication (void); // Called at time specified by Stop
void HandleRead (Ptr<Socket>);
void HandleAccept (Ptr<Socket>, const Address& from);
void HandlePeerClose (Ptr<Socket>);
void HandlePeerError (Ptr<Socket>);
// In the case of TCP, each socket accept returns a new socket, so the
// listening socket is stored seperately from the accepted sockets
Ptr<Socket> m_socket; // Listening socket
std::list<Ptr<Socket> > m_socketList; //the accepted sockets
Address m_local; // Local address to bind to
uint32_t m_totalRx; // Total bytes received
TypeId m_tid; // Protocol TypeId
TracedCallback<Ptr<const Packet>, const Address &> m_rxTrace;
};
}