C_TrafficModel Class Reference

Inheritance diagram for C_TrafficModel:

C_TrafficDistribBestEffort C_TrafficDistribPoisson C_TrafficDistribUniform List of all members.

Public Member Functions

 C_TrafficModel ()
virtual ~C_TrafficModel ()
int init (long P_averageRate, long P_maxCreationPerPeriod, long P_setupTime, long P_rateScale)
void start ()
void call_created ()
virtual int authorize_new_call ()=0
long get_current_period_duration ()
unsigned long get_desired_rate ()
void change_desired_rate (unsigned long P_rate)
void increase_desired_rate ()
void decrease_desired_rate ()
void change_max_created_calls (unsigned long P_max)
void change_rate_scale (long P_rateScale)

Protected Member Functions

void update ()
void reset ()
void re_init ()

Protected Attributes

C_Semaphorem_sem_desired
C_Semaphorem_sem_max
C_Semaphorem_sem_created_call
C_Semaphorem_sem_created_call_period
long m_currentTrafficDuration
long m_desiredAverageRate
long m_createdCallNb
long m_currentPeriodDuration
long m_maxNbCreationPerPeriod
long m_periodDuration
long m_nbCallCreatedInPeriod
timeval m_startTrafficDate
timeval m_startPeriodDate
timeval m_currentTimeval
long ms_setup_time
long m_rateScale

Detailed Description

Definition at line 27 of file C_TrafficModel.hpp.


Constructor & Destructor Documentation

C_TrafficModel::C_TrafficModel  ) 
 

authorize_new_call

The following internal variables are used (see also update()):

  • m_desiredAverageRate (in)
  • m_createdCallNb (in)
  • m_maxNbCreationPerPeriod (in)
  • m_periodDuration (in)
  • m_currentTrafficDuration (in)

Definition at line 248 of file C_TrafficModel.cpp.

References m_sem_created_call, m_sem_created_call_period, m_sem_desired, and m_sem_max.

00249 {
00250   NEW_VAR(m_sem_desired, C_Semaphore());
00251   NEW_VAR(m_sem_max, C_Semaphore());
00252   NEW_VAR(m_sem_created_call, C_Semaphore());
00253   NEW_VAR(m_sem_created_call_period, C_Semaphore());
00254 }


Member Function Documentation

virtual int C_TrafficModel::authorize_new_call  )  [pure virtual]
 

authorize_new_call.

Parameters:
P_cot : (out)
Returns:
a positive value if new calls are allowed, and zero if not

Implemented in C_TrafficDistribBestEffort, C_TrafficDistribPoisson, and C_TrafficDistribUniform.

void C_TrafficModel::call_created  ) 
 

Indicates a new call has effectively been created

Definition at line 124 of file C_TrafficModel.cpp.

References m_createdCallNb, m_nbCallCreatedInPeriod, m_sem_created_call, m_sem_created_call_period, C_Semaphore::P(), and C_Semaphore::V().

Referenced by C_CallControlClient::makeCallContextUnavailable().

int C_TrafficModel::init long  P_averageRate,
long  P_maxCreationPerPeriod,
long  P_setupTime,
long  P_rateScale
 

Initialization

This method initializes the traffic model manager.

Parameters:
P_averageRate : desired average call creation rate per second
P_maxCreationPerPeriod : maximum number of calls created per period (1s)
P_cotRate : percentage of COT among created calls
Note : in order to manage properly burst mechanism, the max number of call creation within a period shall be superior to the average rate, or 0 for no limit

Returns:
0 if success and -1 if failure

Definition at line 97 of file C_TrafficModel.cpp.

References m_createdCallNb, m_currentPeriodDuration, m_currentTrafficDuration, m_desiredAverageRate, m_maxNbCreationPerPeriod, m_nbCallCreatedInPeriod, m_periodDuration, m_rateScale, and ms_setup_time.

00101 {
00102    m_desiredAverageRate = P_averageRate;
00103    m_maxNbCreationPerPeriod = P_maxCreationPerPeriod; 
00104    m_periodDuration = 1000;
00105    m_nbCallCreatedInPeriod = 0;
00106    m_currentTrafficDuration = 0;
00107    m_createdCallNb = 0;
00108    m_currentPeriodDuration = 0;
00109    ms_setup_time = P_setupTime * 1000;
00110    m_rateScale = P_rateScale ;
00111 
00112    return (0);
00113 }

void C_TrafficModel::start  ) 
 

Start

This method must be called just before traffic start.

Definition at line 116 of file C_TrafficModel.cpp.

References m_currentTimeval, m_startPeriodDate, and m_startTrafficDate.

Referenced by C_CallControlClient::init_done(), and C_CallControlClient::start_traffic().

00117 {
00118    GET_TIME (&m_startTrafficDate);
00119    GET_TIME (&m_startPeriodDate);
00120    GET_TIME (&m_currentTimeval);
00121 }

void C_TrafficModel::update  )  [protected]
 

Update internal variables

The following global variables are used :

  • m_currentTimeval

The following internal variables are used :

  • m_currentTrafficDuration (out)
  • m_startTrafficDate (in)
  • m_currentPeriodDuration (out)
  • m_startPeriodDate (in)
  • m_periodDuration (in)
  • m_nbCallCreatedInPeriod (out)

Definition at line 54 of file C_TrafficModel.cpp.

References m_currentPeriodDuration, m_currentTimeval, m_currentTrafficDuration, m_sem_created_call, m_startPeriodDate, m_startTrafficDate, C_Semaphore::P(), and C_Semaphore::V().

Referenced by C_TrafficDistribUniform::authorize_new_call(), C_TrafficDistribPoisson::authorize_new_call(), and C_TrafficDistribBestEffort::authorize_new_call().

00055 {
00056   GET_TIME(&m_currentTimeval);
00057   // Period duration : ti - tp in mili-seconds
00058   m_sem_created_call->P();
00059   m_currentPeriodDuration = (m_currentTimeval.tv_sec - 
00060                              m_startPeriodDate.tv_sec)*1000 + 
00061                             (m_currentTimeval.tv_usec - 
00062                              m_startPeriodDate.tv_usec)/1000;
00063 
00064 
00065   //std::cerr <<  "update  m_currentPeriodDuration " << m_currentPeriodDuration << std::endl;
00066 
00067   // Traffic duration : ti - T0 in mili-seconds
00068   m_currentTrafficDuration = (m_currentTimeval.tv_sec - 
00069                              m_startTrafficDate.tv_sec ) * 1000 + 
00070                             (m_currentTimeval.tv_usec - 
00071                              m_startTrafficDate.tv_usec ) / 1000;
00072 
00073   m_sem_created_call->V();
00074 
00075 } /* end of update */


The documentation for this class was generated from the following files:
Generated on Wed Mar 7 14:57:56 2007 for Seagull by  doxygen 1.4.6