Source Class Reference

#include <source.h>

Inheritance diagram for Source:

DLinkable SourceCBR SourceExpon SourcePareto

List of all members.

Public Member Functions

 Source (int16u id, int16u prior, pct_size_t pct_sz, pct_size_t preamble)
virtual ~Source ()
void Reset (void)
virtual void SetLoad (DOUBLE load)=0
bytestamp_t GetID (void)
bytestamp_t GetPriority (void)
bytestamp_t GetArrival (void)
pct_size_t GetPctSize (void)
Trace GetTrace (void)
void GetTrace (Trace &trc)
void ExtractPacket (Trace &trc)
void ExtractPacket (void)

Protected Member Functions

virtual int32u GetBurstSize (void)=0
virtual bytestamp_t GetGapSize (void)=0
bytestamp_t SetGap (bytestamp_t gap)

Protected Attributes

pct_size_t PctSize
pct_size_t Preamble
pct_size_t PctSpace
int32u BurstSize

Private Attributes

int16u ID
int16u Priority
bytestamp_t Elapsed


Detailed Description

Definition at line 29 of file source.h.


Constructor & Destructor Documentation

Source::Source ( int16u  id,
int16u  prior,
pct_size_t  pct_sz,
pct_size_t  preamble 
) [inline]

Definition at line 49 of file source.h.

00049                                                                               : DLinkable()
00050     { 
00051         ID        = id;
00052         Priority  = prior;
00053         PctSize   = pct_sz;
00054         Preamble  = preamble;
00055         PctSpace  = PctSize + Preamble;
00056     }

virtual Source::~Source (  )  [inline, virtual]

Definition at line 58 of file source.h.

00058 {}


Member Function Documentation

void Source::ExtractPacket ( void   )  [inline]

Definition at line 112 of file source.h.

00113     {
00114         if( BurstSize == 0 )
00115         {
00116             BurstSize = GetBurstSize();
00117                 //ev<<"BurstSize es cero "<<endl;
00118                 //ev<<"BurstSize nueva generada: "<<BurstSize<<endl;
00119                 //ev<<"Elapsed: "<<Elapsed<<endl;
00120             Elapsed  += GetGapSize();
00121                 //ev<<"Elapsed nuevo creado"<<Elapsed<<endl;
00122         }
00123         BurstSize--;
00124         Elapsed += PctSpace;
00125                 //ev<<"Al Elapsed debemos sumarle el PctSpace: "<<Elapsed<<" BurstSize: "<<BurstSize<<endl;
00126     }

void Source::ExtractPacket ( Trace trc  )  [inline]

Definition at line 106 of file source.h.

00107     {
00108         GetTrace( trc );
00109         ExtractPacket();
00110     }

bytestamp_t Source::GetArrival ( void   )  [inline]

Definition at line 88 of file source.h.

00088 { return Elapsed;  }

virtual int32u Source::GetBurstSize ( void   )  [inline, protected, pure virtual]

Implemented in SourcePareto, SourceExpon, and SourceCBR.

virtual bytestamp_t Source::GetGapSize ( void   )  [inline, protected, pure virtual]

Implemented in SourcePareto, SourceExpon, and SourceCBR.

bytestamp_t Source::GetID ( void   )  [inline]

Definition at line 86 of file source.h.

00086 { return ID; }

pct_size_t Source::GetPctSize ( void   )  [inline]

Definition at line 89 of file source.h.

00089 { return PctSize;  } 

bytestamp_t Source::GetPriority ( void   )  [inline]

Definition at line 87 of file source.h.

00087 { return Priority; }

void Source::GetTrace ( Trace trc  )  [inline]

Definition at line 91 of file source.h.

00091                                                  { trc.SourceID   = ID;
00092                                                    trc.QueueID    = Priority;
00093                                                    trc.ByteStamp  = Elapsed;
00094                                                    trc.PacketSize = PctSize;
00095                                                  }

Trace Source::GetTrace ( void   )  [inline]

Definition at line 90 of file source.h.

00090 { return Trace( ID, Priority, Elapsed, PctSize ); }

void Source::Reset ( void   )  [inline]

Definition at line 62 of file source.h.

00063     {
00064         // quick start: simulate start at random time during ON- or OFF- period
00065         bytestamp_t burst_size = GetBurstSize() * PctSpace;
00066         bytestamp_t period     = burst_size + GetGapSize();
00067         bytestamp_t start_time = _uniform_real_( 0, period );
00068         //ev<<"burst_size: "<<burst_size<<endl;
00069         //ev<<"period: "<<period<<endl;
00070         //ev<<"start_time: "<<start_time<<endl;
00071 
00072         if( start_time > burst_size )   // time started during OFF period
00073         {
00074             BurstSize = GetBurstSize(); 
00075             Elapsed   = period - start_time;
00076         }
00077         else                            // time started during ON period 
00078         {
00079             BurstSize = (int32s)( ( burst_size - start_time )/PctSpace + 1 );
00080             Elapsed   = 0.0;
00081         }
00082     }

bytestamp_t Source::SetGap ( bytestamp_t  gap  )  [inline, protected]

Definition at line 45 of file source.h.

00045 { return gap < Preamble? Preamble : gap; }

virtual void Source::SetLoad ( DOUBLE  load  )  [inline, pure virtual]

Implemented in SourcePareto, SourceExpon, and SourceCBR.


Member Data Documentation

Definition at line 40 of file source.h.

Definition at line 34 of file source.h.

int16u Source::ID [private]

Definition at line 32 of file source.h.

Definition at line 37 of file source.h.

Definition at line 39 of file source.h.

Definition at line 38 of file source.h.

Definition at line 33 of file source.h.


The documentation for this class was generated from the following file:

Generated on Thu Nov 28 14:47:25 2013 for red_wireless by  doxygen 1.5.7.1