Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

TrafficGenerator Class Reference

#include <trafgen.h>

Inheritance diagram for TrafficGenerator:

Inheritance graph
[legend]
Collaboration diagram for TrafficGenerator:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TrafficGenerator ()
virtual double next_interval (int &)=0
virtual void init ()
virtual double interval ()
virtual int on ()
virtual void timeout ()
virtual void recv ()
virtual void resume ()
virtual void send (int nbytes)
virtual void recv (int nbytes)
Process *& target ()
virtual void process_data (int size, AppData *data)
virtual AppDataget_data (int &size, AppData *req_data=0)
virtual void send_data (int size, AppData *data=0)

Protected Member Functions

virtual void start ()
virtual void stop ()
virtual int command (int argc, const char *const *argv)

Protected Attributes

double nextPkttime_
int size_
int running_
TrafficTimer timer_
Agentagent_
int enableRecv_
int enableResume_
Processtarget_

Constructor & Destructor Documentation

TrafficGenerator::TrafficGenerator  ) 
 

Definition at line 44 of file trafgen.cc.

00044                                    : nextPkttime_(-1), running_(0), timer_(this)
00045 {
00046 }


Member Function Documentation

int Application::command int  argc,
const char *const *  argv
[protected, virtual, inherited]
 

Reimplemented from Process.

Reimplemented in MediaApp, QA, EXPOO_Traffic, POO_Traffic, TrafficTrace, HttpUInvalAgent, and TcpApp.

Definition at line 56 of file app.cc.

References Application::agent_, Agent::attachApp(), Process::command(), Application::enableRecv_, Application::enableResume_, Application::send(), Application::start(), and Application::stop().

Referenced by TrafficTrace::command(), TcpApp::command(), POO_Traffic::command(), MediaApp::command(), and EXPOO_Traffic::command().

00057 {
00058         Tcl& tcl = Tcl::instance();
00059 
00060         if (argc == 2) {
00061                 if (strcmp(argv[1], "start") == 0) {
00062                         // enableRecv_ only if recv() exists in Tcl
00063                         tcl.evalf("[%s info class] info instprocs", name_);
00064                         char result[1024];
00065                         sprintf(result, " %s ", tcl.result());
00066                         enableRecv_ = (strstr(result, " recv ") != 0);
00067                         enableResume_ = (strstr(result, " resume ") != 0);
00068                         start();
00069                         return (TCL_OK);
00070                 }
00071                 if (strcmp(argv[1], "stop") == 0) {
00072                         stop();
00073                         return (TCL_OK);
00074                 }
00075                 if (strcmp(argv[1], "agent") == 0) {
00076                         tcl.resultf("%s", agent_->name());
00077                         return (TCL_OK);
00078                 }
00079         }
00080         else if (argc == 3) {
00081                 if (strcmp(argv[1], "attach-agent") == 0) {
00082                         agent_ = (Agent*) TclObject::lookup(argv[2]);
00083                         if (agent_ == 0) {
00084                                 tcl.resultf("no such agent %s", argv[2]);
00085                                 return(TCL_ERROR);
00086                         }
00087                         agent_->attachApp(this);
00088                         return(TCL_OK);
00089                 }
00090                 if (strcmp(argv[1], "send") == 0) {
00091                         send(atoi(argv[2]));
00092                         return(TCL_OK);
00093                 }
00094         }
00095         return (Process::command(argc, argv));
00096 }

Here is the call graph for this function:

AppData * Process::get_data int &  size,
AppData req_data = 0
[virtual, inherited]
 

Reimplemented in MediaApp, QA, HttpApp, HttpUInvalAgent, MediaCache, MediaServer, and TcpApp.

Definition at line 46 of file ns-process.cc.

References abort().

Referenced by QA::check_availability(), MediaApp::get_data(), RapAgent::IpgTimeout(), and QA::output().

00047 {
00048         abort();
00049         /* NOTREACHED */
00050         return NULL; // Make msvc happy 
00051 }

Here is the call graph for this function:

virtual void TrafficGenerator::init  )  [inline, virtual]
 

Reimplemented in CBR_PP_Traffic, RA_Traffic, CBR_Traffic, EXPOO_Traffic, POO_Traffic, and TrafficTrace.

Definition at line 62 of file trafgen.h.

Referenced by start(), and SA_Agent::start().

00062 {}

virtual double TrafficGenerator::interval  )  [inline, virtual]
 

Reimplemented in CBR_PP_Traffic, and CBR_Traffic.

Definition at line 63 of file trafgen.h.

Referenced by SA_Agent::sendpkt().

00063 { return 0; }

virtual double TrafficGenerator::next_interval int &   )  [pure virtual]
 

Implemented in CBR_PP_Traffic, RA_Traffic, CBR_Traffic, EXPOO_Traffic, POO_Traffic, and TrafficTrace.

Referenced by SA_Agent::recv(), start(), timeout(), and SA_Agent::timeout().

virtual int TrafficGenerator::on  )  [inline, virtual]
 

Reimplemented in POO_Traffic.

Definition at line 64 of file trafgen.h.

Referenced by SA_Agent::stoponidle(), and SA_Agent::timeout().

00064 { return 0; }

void Process::process_data int  size,
AppData data
[virtual, inherited]
 

Reimplemented in MediaApp, HttpApp, HttpMInvalCache, HttpUInvalAgent, MediaCache, MediaClient, and TcpApp.

Definition at line 41 of file ns-process.cc.

References abort().

Referenced by HttpUInvalAgent::process_data(), UdpAgent::recv(), RapAgent::recv(), and Process::send_data().

00042 {
00043         abort();
00044 }

Here is the call graph for this function:

void Application::recv int  nbytes  )  [virtual, inherited]
 

Reimplemented in TcpApp.

Definition at line 115 of file app.cc.

References Application::enableRecv_.

Referenced by SimpleTcpAgent::recv(), Agent::recv(), and Agent::recvBytes().

00116 {
00117         if (! enableRecv_)
00118                 return;
00119         Tcl& tcl = Tcl::instance();
00120         tcl.evalf("%s recv %d", name_, nbytes);
00121 }

virtual void TrafficGenerator::recv  )  [inline, virtual]
 

Definition at line 67 of file trafgen.h.

00067 {}

virtual void TrafficGenerator::resume void   )  [inline, virtual]
 

Reimplemented from Application.

Definition at line 68 of file trafgen.h.

00068 {}

void Application::send int  nbytes  )  [virtual, inherited]
 

Definition at line 109 of file app.cc.

References Application::agent_, and Agent::sendmsg().

Referenced by Application::command(), TcpApp::send(), and timeout().

00110 {
00111         agent_->sendmsg(nbytes);
00112 }

Here is the call graph for this function:

virtual void Process::send_data int  size,
AppData data = 0
[inline, virtual, inherited]
 

Definition at line 106 of file ns-process.h.

References Process::process_data(), and Process::target_.

Referenced by TcpApp::process_data(), and MediaApp::process_data().

00106                                                             {
00107                 if (target_)
00108                         target_->process_data(size, data);
00109         }

Here is the call graph for this function:

void TrafficGenerator::start  )  [protected, virtual]
 

Reimplemented from Application.

Reimplemented in CBR_PP_Traffic, and CBR_Traffic.

Definition at line 49 of file trafgen.cc.

References init(), next_interval(), nextPkttime_, TimerHandler::resched(), running_, size_, and timer_.

00050 {
00051         init();
00052         running_ = 1;
00053         nextPkttime_ = next_interval(size_);
00054         timer_.resched(nextPkttime_);
00055         // Enable line below if you want to send immediately upon start
00056         //timeout(); 
00057 }

Here is the call graph for this function:

void TrafficGenerator::stop  )  [protected, virtual]
 

Reimplemented from Application.

Definition at line 60 of file trafgen.cc.

References TimerHandler::cancel(), running_, and timer_.

00061 {
00062         if (running_)
00063                 timer_.cancel();
00064         running_ = 0;
00065 }

Here is the call graph for this function:

Process*& Process::target  )  [inline, inherited]
 

Definition at line 97 of file ns-process.h.

References Process::target_.

Referenced by QA::check_availability(), Process::command(), HttpApp::command(), MediaApp::get_data(), QA::output(), and TcpApp::process_data().

00097 { return target_; }

void TrafficGenerator::timeout  )  [virtual]
 

Reimplemented in CBR_PP_Traffic, EXPOO_Traffic, and TrafficTrace.

Definition at line 68 of file trafgen.cc.

References next_interval(), nextPkttime_, TimerHandler::resched(), running_, Application::send(), size_, and timer_.

Referenced by TrafficTimer::expire(), and CBR_Traffic::start().

00069 {
00070         if (! running_)
00071                 return;
00072 
00073         /* send a packet */
00074         send(size_);
00075         /* figure out when to send the next one */
00076         nextPkttime_ = next_interval(size_);
00077         /* schedule it */
00078         if (nextPkttime_ > 0)
00079                 timer_.resched(nextPkttime_);
00080         else
00081                 running_ = 0;
00082 }

Here is the call graph for this function:


Member Data Documentation

Agent* Application::agent_ [protected, inherited]
 

Definition at line 60 of file app.h.

Referenced by Application::command(), RA_Traffic::init(), POO_Traffic::init(), EXPOO_Traffic::init(), CBR_Traffic::init(), CBR_PP_Traffic::init(), QA::rap(), MediaApp::rap(), Application::send(), TcpApp::TcpApp(), TrafficTrace::timeout(), TelnetApp::timeout(), EXPOO_Traffic::timeout(), CBR_PP_Traffic::timeout(), and TcpApp::~TcpApp().

int Application::enableRecv_ [protected, inherited]
 

Definition at line 61 of file app.h.

Referenced by Application::command(), and Application::recv().

int Application::enableResume_ [protected, inherited]
 

Definition at line 62 of file app.h.

Referenced by Application::command(), and Application::resume().

double TrafficGenerator::nextPkttime_ [protected]
 

Definition at line 74 of file trafgen.h.

Referenced by start(), timeout(), TrafficTrace::timeout(), EXPOO_Traffic::timeout(), and CBR_PP_Traffic::timeout().

int TrafficGenerator::running_ [protected]
 

Definition at line 76 of file trafgen.h.

Referenced by start(), CBR_Traffic::start(), CBR_PP_Traffic::start(), stop(), timeout(), TrafficTrace::timeout(), EXPOO_Traffic::timeout(), and CBR_PP_Traffic::timeout().

int TrafficGenerator::size_ [protected]
 

Definition at line 75 of file trafgen.h.

Referenced by CBR_PP_Traffic::CBR_PP_Traffic(), CBR_Traffic::CBR_Traffic(), EXPOO_Traffic::EXPOO_Traffic(), RA_Traffic::init(), POO_Traffic::init(), EXPOO_Traffic::init(), CBR_Traffic::init(), CBR_PP_Traffic::init(), RA_Traffic::next_interval(), POO_Traffic::next_interval(), EXPOO_Traffic::next_interval(), CBR_Traffic::next_interval(), CBR_PP_Traffic::next_interval(), POO_Traffic::POO_Traffic(), RA_Traffic::RA_Traffic(), start(), timeout(), TrafficTrace::timeout(), EXPOO_Traffic::timeout(), and CBR_PP_Traffic::timeout().

Process* Process::target_ [protected, inherited]
 

Definition at line 113 of file ns-process.h.

Referenced by HttpUInvalAgent::command(), Process::Process(), HttpUInvalAgent::process_data(), Process::send_data(), and Process::target().

TrafficTimer TrafficGenerator::timer_ [protected]
 

Definition at line 77 of file trafgen.h.

Referenced by start(), stop(), timeout(), TrafficTrace::timeout(), EXPOO_Traffic::timeout(), and CBR_PP_Traffic::timeout().


The documentation for this class was generated from the following files:
Generated on Tue Apr 20 13:33:54 2004 for NS2.26SourcesOriginal by doxygen 1.3.3