C_TrafficDistribUniform Class Reference

Inheritance diagram for C_TrafficDistribUniform:

C_TrafficModel List of all members.

Public Member Functions

 C_TrafficDistribUniform ()
 ~C_TrafficDistribUniform ()
int authorize_new_call ()

Detailed Description

Definition at line 26 of file C_TrafficDistribUniform.hpp.


Member Function Documentation

int C_TrafficDistribUniform::authorize_new_call  )  [virtual]
 

authorize_new_call.

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

Implements C_TrafficModel.

Definition at line 34 of file C_TrafficDistribUniform.cpp.

References C_TrafficModel::m_createdCallNb, C_TrafficModel::m_currentPeriodDuration, C_TrafficModel::m_currentTrafficDuration, C_TrafficModel::m_desiredAverageRate, C_TrafficModel::m_nbCallCreatedInPeriod, C_TrafficModel::m_sem_created_call, C_TrafficModel::m_sem_created_call_period, C_TrafficModel::m_sem_desired, C_TrafficModel::ms_setup_time, C_Semaphore::P(), C_TrafficModel::reset(), C_TrafficModel::update(), and C_Semaphore::V().

00035 {
00036   int           L_callLimit;
00037   float         L_NB1;
00038 
00039   long          L_desiredAverageRate    ;
00040   long          L_createdCallNb         ;
00041   long          L_nbCallCreatedInPeriod ;
00042   long          L_currentPeriodDuration ;
00043 
00044 
00045   update ();
00046 
00047   m_sem_desired->P();
00048   L_desiredAverageRate = m_desiredAverageRate ;
00049   m_sem_desired->V();
00050 
00051   m_sem_created_call->P();
00052   L_createdCallNb = m_createdCallNb ;
00053   L_currentPeriodDuration = m_currentPeriodDuration ;
00054 
00055   m_sem_created_call->V();
00056 
00057   m_sem_created_call_period->P();
00058   L_nbCallCreatedInPeriod = m_nbCallCreatedInPeriod ;
00059   m_sem_created_call_period->V();
00060 
00061   if (m_currentTrafficDuration <= ms_setup_time) {
00062     return (0);
00063   }
00064 
00065   L_NB1 = ( (L_currentPeriodDuration * L_desiredAverageRate) /
00066             (float) 1000.0) ;
00067 
00068 
00069   L_callLimit = (int) (floor (L_NB1)) - L_nbCallCreatedInPeriod ;
00070 
00071   reset () ;
00072 
00073   return ((L_callLimit < 0) ? 0 : L_callLimit );
00074   
00075 } /* end of authorize_new_call */


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