ONU_Rx_Report Class Reference

#include <ONU_Rx_Report.h>

Inheritance diagram for ONU_Rx_Report:

cSimpleModule cModule cComponent cDefaultList cNoncopyableOwnedObject cOwnedObject noncopyable cNamedObject cObject

List of all members.

Public Attributes

ONU_SISTqueueonu_queue
long sumpacketextrac
long sumextract
long tamsumqueue
int_vector_t sumpacket
int_vector_t sumqueuepop
int_vector_t bytes_queue
double_vector_t media
std::vector< Analysismedia_bytes_queue
FILE * media_queue_onu

Protected Member Functions

virtual void initialize ()
virtual void handleMessage (cMessage *msg)
virtual void strictpriorityqueue (cMessage *msg)
virtual void centralizedmethod (cMessage *msg)
virtual void finish ()


Detailed Description

Definition at line 29 of file ONU_Rx_Report.h.


Member Function Documentation

void ONU_Rx_Report::centralizedmethod ( cMessage msg  )  [protected, virtual]

Definition at line 219 of file ONU_Rx_Report.cc.

00220 {
00221 
00222         // EJECUTAMOS EL METODO DE EXTRACCION DE COLAS CENTRALIZADO
00223         REPORTmsg *reportmsg=check_and_cast<REPORTmsg*>(msg); // CHEQUEAMOS EL PAQUETE REPORT
00224 
00225         // RECORREMOS LAS COLAS PARA COMPROBAR SI TIENEN PAQUETES Y EXTRAER LOS BYTES QUE NOS PROPORCION EL OLT
00226         for(int i=0; i<(int)par("numqueue"); i++)
00227         {
00228                 // VARIABLES PARA PODER ENTRAR DESTE ESTE MODULO AL MODULO ONU_SISTQUEUE Y PODER OBTENER INFORMACION SOBRE LAS COLAS
00229                 cModule *c_onu_queue;
00230                 c_onu_queue = getParentModule()->getParentModule()->getSubmodule("onu_squeue")->getSubmodule("onu_sistqueue",i);
00231                 onu_queue = check_and_cast<ONU_SISTqueue *>(c_onu_queue);
00232 
00233                 // COMPARAMOS SI LA COLA EN LA QUE NOS ENCONTRAMOS TIENE PAQUETES INSERTADOS EN ELLA,
00234                 // ADEMAS COMPARAMOS SI EL ANCHO DE BANDA ASIGANDO POR EL OLT ES MAYOR O IGUAL A LA SUMA DE PAQUETES QUE EXTRAEMOS EN LA COLA EN LA QUE NOS ENCONTRAMOS MAS EL TAMANYO DEL PAQUETE REPORT QUE SE MANDA EN ESE ANCHO DE BANDA ASIGNADO HACIA LA ONU
00235                 if(onu_queue->queue.getLength()>0 && reportmsg->getBandwitch(i) >= sumpacket[i] + reportmsg->getByteLength())
00236                 {
00237                         // RECORREMOS TODOS LOS PAQUETES DE LA COLA DESDE EL MAS ANTIGUO PARA EXTRAERLOS
00238                         for(int j=0; (j=onu_queue->queue.getLength()); j++)
00239                         {
00240                                 // LLAMAMOS A LA FUNCION CHEQUEAR PAQUETE PARA COMPROBAR QUE PODEMOS EXTRAERLO Y LO VISUALIZAMOS POR LA PANTALLA
00241                                 onu_queue->checkpacket();
00242                                 //ev<<" "<<endl;
00243                                 //ev<<" Tamaño paquete chequeado cola "<<i<<"-> "<< onu_queue->tamqueueextract<<"Bytes"<<endl;
00244                                 // SUMA DE LOS PAQUETES QUE SE CHEQUEAN EN LA COLA QUE NOS ENCONTRAMOS
00245                                 sumpacket[i] = sumpacket[i] + onu_queue->tamqueueextract;
00246                                 //ev<<" Suma paquetes que se extraen en la cola "<<i<<"-> "<<sumpacket[i]<<"Bytes"<<endl;
00247 
00248                                 // COMPROBAMOS SI EL ANCHO DE BANDA ASIGANDO POR EL OLT ES MAYOR O MENOR QUE LA SUMA DE PAQUETES QUE EXTRAEMOS EN LA COLA EN LA QUE NOS ENCONTRAMOS MAS EL TAMANYO DEL PAQUETE REPORT QUE SE MANDA EN ESE ANCHO DE BANDA ASIGNADO HACIA LA ONU
00249                                 if(reportmsg->getBandwitch(i) >= sumpacket[i] + reportmsg->getByteLength())
00250                                 {
00251                                         // SI EL ANCHO DE BANDA ASIGNADO ES MAYOR, SE EXTRAE EL PAQUETE Y SE ENVIA HACIA EL OLT
00252                                         //ev<<" Extraemos y enviamos paquete a la Onu."<<endl;
00253                                         onu_queue->extractionelement(i); // LLAMAMOS DE FORMA REMOTA A LA FUNCION EXTRAER PAQUETES IMPLEMENTADA EN EL MODULO ONU_SISTQUEUE
00254                                         // SUMA DE LOS PAQUETES QUE EXTRAEMOS EN TODAS LAS COLAS Y LO VISUALIZAMOS POR PANTALLA
00255                                         sumextract = sumextract + onu_queue->tamextract;
00256                                         //ev<<" Suma total de Bytes Extraidos-> "<<sumextract<<"Bytes"<<endl;
00257                                         // SUMA TOTAL DEL TAMANYO DE LOS PAQUETES EXTRAIDOS EN LA COLA EN LA QUE NOS ENCONTRAMOS Y LO VISUALIZAMOS POR PANTALLA
00258                                         sumqueuepop[i] = sumqueuepop[i] + onu_queue->tamextract;
00259                                         //ev<<" Suma total de Bytes Extraidos de la cola "<<i<<"-> "<<sumqueuepop[i]<<"Bytes"<<endl;
00260                                 }
00261                                 else if(reportmsg->getBandwitch(i) < sumpacket[i] + reportmsg->getByteLength())
00262                                 {
00263                                         // SI EL ANCHO DE BANDA ASIGNADO ES MENOR, NO SE EXTRAEN MAS PAQUETES
00264                                         //ev<<" No extraemos más paquetes porque no entra en el Ancho de Banda de Slot."<<endl;
00265                                         break; // SALIMOS DEL BUCLE FOR QUE RECORRE TODOS LOS PAQUETES DE LA COLA EN LA QUE NOS ENCONTRAMOS
00266                                 }
00267                         }
00268                 }
00269         }
00270 
00271 
00272         // RESTAMOS EL TAMANYO DE LOS PAQUETES QUE HEMOS EXTRAIDO A LA SUMA DEL TAMANYO DE LOS PAQUETES DE LAS COLAS
00273         tamsumqueue = tamsumqueue - sumextract;
00274 
00275         //ev<<"             "<<endl;
00276         //ev<<" Actualizamos el tamaño de las colas y lo reescribimos en el Report."<<endl;
00277 
00278         // ACTUALIZAMOS EL VALOR DE LAS COLAS QUE LLEVARA EL REPORT HASTA EL OLT Y LO VISUALIZAMOS POR PANTALLA
00279         for(int i=0; i<(int)par("numqueue"); i++)
00280         {
00281                 // VARIABLES PARA PODER ENTRAR DESTE ESTE MODULO AL MODULO ONU_SISTQUEUE Y PODER OBTENER INFORMACION SOBRE LAS COLAS
00282                 cModule *c_onu_queue;
00283                 c_onu_queue = getParentModule()->getParentModule()->getSubmodule("onu_squeue")->getSubmodule("onu_sistqueue",i);
00284                 onu_queue = check_and_cast<ONU_SISTqueue *>(c_onu_queue);
00285 
00286                 // VISUALIZAMOS POR PANTALLA EL TAMANYO DE LAS COLAS Y LO INTRODUCIMOS EN EL PAQUETE REPORT PARA MANDARLO HACIA EL OLT
00287                 //ev<<" Tamaño cola "<<i<<"-> "<<onu_queue->tamqueue[i]<<"Bytes"<<endl;
00288                 reportmsg->setQueue_estado(i,onu_queue->tamqueue[i]);
00289                 //reportmsg->setQueue_size(i,(int)onu_queue->queue.getLength()); // INTRODUCIMOS EL VALOR OBTENIDO ANTERIORMENTE PARA MANDARLO EN EL PAQUETE REPORT
00290                 bytes_queue[i] = reportmsg->getQueue_estado(i); // INTRODUCIMOS EN LA VARIABLE bytes_queue[] EL VALOR DEL TAMANYO DE LOS BYTES QUE QUEDAN LA COLA
00291                 //ev<<" Bytes que quedan en la cola"<<i<<": "<<bytes_queue[i]<<endl; // VISUALIZAMOS EL VALOR POR PANTALLA
00292         }
00293 
00294         // CALCULAMOS LA MEDIA DE LOS BYTES QUE SE QUEDAN EN LA COLA CADA CICLO
00295         if(simTime()>=1)
00296         {
00297                 // BUCLE FOR PARA RECORRER TODAS LAS COLAS QUE TENGAMOS Y GUARDAR EN LA VARIABLE media[] LOS BYTES QUE QUEDAN EN LAS COLAS DESPUES DE CADA CICLO
00298                 // BUCLE FOR PARA RECORRER TODAS LAS COLAS QUE TENGAMOS Y GUARDAR EN LA VARIABLE media[] LOS BYTES QUE QUEDAN EN LAS COLAS DESPUES DE CADA CICLO
00299                 for(int i=0; i<(int)par("numqueue"); i++)
00300                 {
00301                         media[i] = bytes_queue[i]; // GUARDAMOS EN LA VARIABLE media[] LOS BYTES QUE QUEDAN EN LAS COLAS DESPUES DE CADA CICLO
00302                         media_bytes_queue[i].analyze(media[i]);
00303                 }
00304 
00305                 // SI QUEREMOS QUE LA SIMULACION TERMINE Y LLAME A LA FUNCION FINISH() PARA RECOGER LAS ESTADASTICAS DE LA MEDIA DE LOS
00306                 // BYTES QUE QUEDAN EN LAS COLAS DESPUES DE CADA CICLO.
00307                 // PARA PARAR LA SIMULACION EL VALOR DEL NUMERO DE ITERACIONES DE LA CLASE ANALISIS DEL PARAMETRO QUE CALCULA LA MEDIA
00308                 // DEBE SER IGUAL O MAYOR AL QUE INTRODUZCAMOS MANUALMENTE
00309                 // DEPENDIENDO DEL NUMERO DE COLAS QUE TENGAMOS, DEBEMOS INTRODUCIR LAS VARIABLES CORESPONDIENTES
00310 
00311                 //if( media_bytes_queue[0].number_iterations() >= 30)
00312                 //{
00313                 //      endSimulation(); // LLAMAMOS A LA FUNCION TERMINAR SIMULACION
00314                 //      callFinish(); // LLAMAMOS A LA FUNCION FINISH()
00315                 //}
00316         }
00317 
00318         //ENVIAMOS EL PAQUETE REPORTR HACIA LA COLA DE ALMACENAMIENTO DE ESTOS PAQUETES DESPUES DE ACTUALIZAR EL ESTADO DE LAS COLAS
00319         send(reportmsg, "rxqueuereportOut");//, (int)par("numqueue"));
00320 
00321 }

void ONU_Rx_Report::finish (  )  [protected, virtual]

Reimplemented from cComponent.

Definition at line 323 of file ONU_Rx_Report.cc.

00324 {
00325 
00326         // RECOGIDA DE ESTADISTICAS DE LAS MEDIAS DE LOS BYTES QUE QUEDAN EN LAS COLAS DESPUES DE CADA CICLO CON LA CLASE ANALISIS Y LO GUARDAMOS LOS DATOS EN UN ARCHIVO
00327         // SE PONE LA RUTA DONDE SE VAN A CREAR LOS ARCHIVOS
00328         media_queue_onu=fopen("results/media_queue_onu.txt", "a+"); // ABRIMOS EL ARCHIVO EN EL QUE GUARDAREMOS LOS RESULTADOS
00329         if(this->getParentModule()->getParentModule()->getIndex()==0)
00330         {
00331                 fprintf(media_queue_onu,"Cantidad promedio de Bytes que quedan en las colas tras cada ciclo: \n");
00332                 for(int i=0; i<(int)par("numqueue"); i++)
00333                 {
00334                         fprintf(media_queue_onu,"P%i \t\t\t",i);
00335                 }
00336                 fprintf(media_queue_onu,"\n");
00337         }
00338         for(int i=0; i<(int)par("numqueue"); i++)
00339         {
00340                 fprintf(media_queue_onu,"%g\t", (double)media_bytes_queue[i].average()); // MEDIA DE LOS BYTES QUE QUEDAN EN LAS COLAS DESPUES DE CADA CICLO
00341         }
00342         fprintf(media_queue_onu,"\n");
00343         fclose(media_queue_onu); // CERRAMOS EL ARCHIVO EN EL QUE GUARDAMOS LOS DATOS
00344 }

void ONU_Rx_Report::handleMessage ( cMessage msg  )  [protected, virtual]

Reimplemented from cSimpleModule.

Definition at line 50 of file ONU_Rx_Report.cc.

00051 {
00052         // VARIABLES
00053         int type = msg->getKind(); // VARIABLE TYPE PARA IDENTIFICAR LOS MENSAJES DE LA RED
00054         int extraction = (int)par("extractionmethod_StrictPQ0_Centralized1"); // PARAMETRO PARA ELEGIR EL METODO DE EXTRACCION DE COLAS ( METODO DE EXTRACCION DE COLAS DE PRIORIDAD EXTRICTA O METODO DE EXTRACCION DE COLAS CENTRALIZADO )
00055 
00056         // ESTRUCTURA CONDICIONAL SWITCH QUE NOS DIFERENCIA LOS MENSAJES QUE LLEGUEN A ESTE MODULO
00057         switch(type)
00058         {
00059                 case 2:
00060                         // LLEGA UN PAQUETE REPORT CON IDENTIFICADOR = 2
00061                         if(msg->getKind()==2)
00062                         {
00063                                 //ev<<" Recibimos paquete Report y sacamos paquetes de las colas."<<endl;
00064 
00065                                 // ESTRUCTURA CONDICIONAL SWITCH QUE NOS DIFERENCIA EL METODO DE EXTRACCION DE PAQUETES DE LAS COLAS
00066                                 switch(extraction)
00067                                         {
00068                                                 case 0:
00069                                                         //ev<<" Metodo de Extracción de Colas de Prioridad Estricta."<<endl;
00070                                                         strictpriorityqueue(msg); // LLAMADA A LA FUNCION DEL METODO DE EXTRACCION DE PAQUETES DE COLAS DE PRIORIDAD ESTRICTA
00071                                                         break;
00072 
00073                                                 case 1:
00074                                                         //ev<<" Metodo de Extracción de Colas Centralizado."<<endl;
00075                                                         centralizedmethod(msg); // LLAMADA A LA FUNCION DEL METODO DE EXTRACCION DE PAQUETES DE COLAS CENTRALIZADO
00076                                                         break;
00077 
00078                                                 default:
00079                                                         ev<<" ERROR AL ELEGIR EL METODO DE EXTRACCION DE PAQUETES DE COLAS, ELEGIR 0 ó 1."<<endl;
00080                                                         delete msg;
00081                                                         break;
00082                                         }
00083                         }
00084                         break;
00085         }
00086 }

void ONU_Rx_Report::initialize (  )  [protected, virtual]

Reimplemented from cComponent.

Definition at line 30 of file ONU_Rx_Report.cc.

00031 {
00032         // INICIALIZACION AL VALOR 0 DE VARIABLES
00033         sumpacketextrac = 0; // SUMA DE LOS PAQUETES QUE SE CHEQUEAN EN EL METODO DE EXTRACION ESTRICTA DE PAQUETES
00034         sumextract = 0; // VARIABLE DE LA SUMA DE LOS PAQUETES QUE SE EXTRAEN EN EL METODO DE EXTRACION ESTRICTA DE PAQUETES
00035         tamsumqueue = 0; // TAMANYO DE LA SUMA DEL TAMANYO DE LOS PAQUETES QUE LLEGAN A LAS COLAS DE LA ONU
00036         sumpacket.resize((int)par("numqueue"),0); // RESERVAMOS TAMANYO E INICIALIZAMOS A 0 EL VECTOR DE LA SUMA DE LOS PAQUETES QUE SE CHEQUEAN EN LAS COLAS
00037         sumqueuepop.resize((int)par("numqueue"),0); // RESERVAMOS TAMANYO E INICIALIZAMOS A 0 EL VECTOR DE LA SUMA TOTAL DE BYTES EXTRAIDOS DE LAS COLAS
00038         bytes_queue.resize((int)par("numqueue"),0); // VECTOR DE LOS BYTES QUE QUEDAN EN LA COLA DESPUES DE CADA CICLO. SE INICIALIZA A 0 CON UN TAMANYO IGUAL AL NUMERO DE COLAS O SERVICIOS DE NUESTRA RED
00039         media.resize((int)par("numqueue"),0); // VECTOR QUE NOS INDICA LA MEDIA. SE INICIALIZA A 0 CON UN TAMANYO IGUAL AL NUMERO DE COLAS O SERVICIOS DE NUESTRA RED
00040         media_bytes_queue.resize((int)par("numqueue"));
00041 }

void ONU_Rx_Report::strictpriorityqueue ( cMessage msg  )  [protected, virtual]

Definition at line 99 of file ONU_Rx_Report.cc.

00100 {
00101         // EJECUTAMOS EL METODO DE EXTRACCION DE COLAS DE PRIORIDAD ESTRICTA
00102         REPORTmsg *reportmsg=check_and_cast<REPORTmsg*>(msg); // CHEQUEAMOS EL PAQUETE REPORT
00103         // RECORREMOS LAS COLAS PARA VISUALIZAR POR PANTALLA EL TAMANYO DE LAS COLAS
00104         for(int i=0; i<(int)par("numqueue"); i++)
00105         {
00106                 // VARIABLES PARA PODER ENTRAR DESTE ESTE MODULO AL MODULO ONU_SISTQUEUE Y PODER OBTENER INFORMACION SOBRE LAS COLAS
00107                 cModule *c_onu_queue;
00108                 c_onu_queue = getParentModule()->getParentModule()->getSubmodule("onu_squeue")->getSubmodule("onu_sistqueue",i);
00109                 onu_queue = check_and_cast<ONU_SISTqueue *>(c_onu_queue);
00110                 tamsumqueue = tamsumqueue + onu_queue->tamqueue[i];
00112 
00113         }
00114         // RECORREMOS LAS COLAS PARA COMPROBAR SI TIENEN PAQUETES Y EXTRAER LOS BYTES QUE NOS PROPORCION EL OLT
00115         for(int i=0; i<(int)par("numqueue"); i++)
00116         {
00117                 // VARIABLES PARA PODER ENTRAR DESTE ESTE MODULO AL MODULO ONU_SISTQUEUE Y PODER OBTENER INFORMACION SOBRE LAS COLAS
00118                 cModule *c_onu_queue;
00119                 c_onu_queue = getParentModule()->getParentModule()->getSubmodule("onu_squeue")->getSubmodule("onu_sistqueue",i);
00120                 onu_queue = check_and_cast<ONU_SISTqueue *>(c_onu_queue);
00121 
00122                 // COMPARAMOS SI LA COLA EN LA QUE NOS ENCONTRAMOS TIENE PAQUETES INSERTADOS EN ELLA,
00123                 // ADEMAS COMPARAMOS SI EL ANCHO DE BANDA ASIGANDO POR EL OLT ES MAYOR O IGUAL A LA SUMA DE PAQUETES QUE EXTRAEMOS MAS EL TAMANYO DEL PAQUETE REPORT QUE SE MANDA EN ESE ANCHO DE BANDA ASIGNADO HACIA LA ONU
00124                 if(onu_queue->queue.getLength()>0 && reportmsg->getBandwitch(0) >= sumpacketextrac + reportmsg->getByteLength())
00125                 {
00126                         // RECORREMOS TODOS LOS PAQUETES DE LA COLA DESDE EL MAS ANTIGUO PARA EXTRAERLOS
00127                         for(int j=0; (j=onu_queue->queue.getLength()); j++)
00128                         {
00129                                 // LLAMAMOS A LA FUNCION CHEQUEAR PAQUETE PARA COMPROBAR QUE PODEMOS EXTRAERLO Y LO VISUALIZAMOS POR LA PANTALLA
00130                                 onu_queue->checkpacket();
00131                                 //ev<<" "<<endl;
00132                                 //ev<<" Tamaño paquete chequeado cola "<<i<<"-> "<< onu_queue->tamqueueextract<<"Bytes"<<endl;
00133                                 // SUMA DE LOS PAQUETES QUE SE CHEQUEAN Y LO VISUALIZAMOS POR PANTALLA
00134                                 sumpacketextrac = sumpacketextrac + onu_queue->tamqueueextract;
00135                                 //ev<<" Suma paquetes que se extraen-> "<<sumpacketextrac<<"Bytes"<<endl;
00136 
00137                                 // COMPROBAMOS SI EL ANCHO DE BANDA ASIGANDO POR EL OLT ES MAYOR O MENOR QUE LA SUMA DE PAQUETES QUE EXTRAEMOS MAS EL TAMANYO DEL PAQUETE REPORT QUE SE MANDA EN ESE ANCHO DE BANDA ASIGNADO HACIA LA ONU
00138                                 if(reportmsg->getBandwitch(0) >= sumpacketextrac + reportmsg->getByteLength())
00139                                 {
00140                                         // SI EL ANCHO DE BANDA ASIGNADO ES MAYOR, SE EXTRAE EL PAQUETE Y SE ENVIA HACIA EL OLT
00141                                         //ev<<" Extraemos y enviamos paquete a el OLT."<<endl;
00142                                         onu_queue->extractionelement(i); // LLAMAMOS DE FORMA REMOTA A LA FUNCION EXTRAER PAQUETES IMPLEMENTADA EN EL MODULO ONU_SISTQUEUE
00143                                         // SUMA DE LOS PAQUETES QUE EXTRAEMOS EN ESTA COLA
00144                                         sumextract = sumextract + onu_queue->tamextract;
00145                                 }
00146                                 else if(reportmsg->getBandwitch(0) < sumpacketextrac + reportmsg->getByteLength())
00147                                 {
00148                                         // SI EL ANCHO DE BANDA ASIGNADO ES MENOR, NO SE EXTRAEN MAS PAQUETES
00149                                         //ev<<" No extraemos más paquetes porque no entra en el Ancho de Banda de Slot."<<endl;
00150                                         break; // SALIMOS DEL BUCLE FOR QUE RECORRE TODOS LOS PAQUETES DE LA COLA EN LA QUE NOS ENCONTRAMOS
00151                                 }
00152                         }
00153                 }
00154                 else if(reportmsg->getBandwitch(0) < sumpacketextrac + reportmsg->getByteLength())
00155                 {
00156                         tamsumqueue = tamsumqueue - sumextract; // RESTAMOS EL TAMANYO DE LOS PAQUETES QUE HEMOS EXTRAIDO A LA SUMA DEL TAMANYO DE LOS PAQUETES DE LAS COLAS
00157                         break; // SALIMOS DEL BUCLE FOR QUE RECORRE TODAS LAS COLAS
00158                 }
00159         }
00160 
00161         // COMPROBAMOS SI EL ANCHO DE BANDA ASIGANDO POR EL OLT ES MAYOR QUE LA SUMA DE PAQUETES QUE EXTRAEMOS MAS EL TAMANYO DEL PAQUETE REPORT QUE SE MANDA EN ESE ANCHO DE BANDA ASIGNADO HACIA LA ONU
00162         if(reportmsg->getBandwitch(0) >= sumpacketextrac + reportmsg->getByteLength())
00163         {
00164                 tamsumqueue = tamsumqueue - sumextract; // RESTAMOS EL TAMANYO DE LOS PAQUETES QUE HEMOS EXTRAIDO A LA SUMA DEL TAMANYO DE LOS PAQUETES DE LAS COLAS
00165         }
00166         /* Hasta aqui es la extraccion de paquetes Ethernet */
00167 
00168         //ev<<endl<<" Actualizamos el tamaño de las colas y lo reescribimos en el Report."<<endl;
00169         // ACTUALIZAMOS EL VALOR DE LAS COLAS QUE LLEVARA EL REPORT HASTA EL OLT Y LO VISUALIZAMOS POR PANTALLA
00170         for(int i=0; i<(int)par("numqueue"); i++)
00171         {
00172                 // VARIABLES PARA PODER ENTRAR DESTE ESTE MODULO AL MODULO ONU_SISTQUEUE Y PODER OBTENER INFORMACION SOBRE LAS COLAS
00173                 cModule *c_onu_queue;
00174                 c_onu_queue = getParentModule()->getParentModule()->getSubmodule("onu_squeue")->getSubmodule("onu_sistqueue",i);
00175                 onu_queue = check_and_cast<ONU_SISTqueue *>(c_onu_queue);
00176 
00177                 // VISUALIZAMOS POR PANTALLA EL TAMANYO DE LAS COLAS Y LO INTRODUCIMOS EN EL PAQUETE REPORT PARA MANDARLO HACIA EL OLT
00178                 //ev<<" Tamaño cola "<<i<<"-> "<<onu_queue->tamqueue[i]<<"Bytes"<<endl;
00179                 reportmsg->setQueue_estado(i,onu_queue->tamqueue[i]); // INTRODUCIMOS EL VALOR OBTENIDO ANTERIORMENTE PARA MANDARLO EN EL PAQUETE REPORT
00180                 //reportmsg->setQueue_size(i,(int)onu_queue->queue.getLength()); // INTRODUCIMOS EL VALOR OBTENIDO ANTERIORMENTE PARA MANDARLO EN EL PAQUETE REPORT
00181                 bytes_queue[i] = reportmsg->getQueue_estado(i); // INTRODUCIMOS EN LA VARIABLE bytes_queue[] EL VALOR DEL TAMANYO DE LOS BYTES QUE QUEDAN LA COLA
00182                 //ev<<" Bytes que quedan en la cola"<<i<<": "<<bytes_queue[i]<<endl; // VISUALIZAMOS EL VALOR POR PANTALLA
00183         }
00184         // CALCULAMOS LA MEDIA DE LOS BYTES QUE SE QUEDAN EN LA COLA CADA CICLO
00185         if(simTime()>=1)// && getIndex()==0)
00186         {
00187                 // BUCLE FOR PARA RECORRER TODAS LAS COLAS QUE TENGAMOS Y GUARDAR EN LA VARIABLE media[] LOS BYTES QUE QUEDAN EN LAS COLAS DESPUES DE CADA CICLO
00188                 for(int i=0; i<(int)par("numqueue"); i++)
00189                 {
00190                         media[i] = bytes_queue[i]; // GUARDAMOS EN LA VARIABLE media[] LOS BYTES QUE QUEDAN EN LAS COLAS DESPUES DE CADA CICLO
00191                         media_bytes_queue[i].analyze(media[i]);
00192                 }
00193                 // SI QUEREMOS QUE LA SIMULACION TERMINE Y LLAME A LA FUNCION FINISH() PARA RECOGER LAS ESTADASTICAS DE LA MEDIA DE LOS
00194                 // BYTES QUE QUEDAN EN LAS COLAS DESPUES DE CADA CICLO.
00195                 // PARA PARAR LA SIMULACION EL VALOR DEL NUMERO DE ITERACIONES DE LA CLASE ANALISIS DEL PARAMETRO QUE CALCULA LA MEDIA
00196                 // DEBE SER IGUAL O MAYOR AL QUE INTRODUZCAMOS MANUALMENTE
00197                 // DEPENDIENDO DEL NUMERO DE COLAS QUE TENGAMOS, DEBEMOS INTRODUCIR LAS VARIABLES CORESPONDIENTES
00198 
00199                 //if( media_bytes_queue[0].number_iterations() >= 20)
00200                 //{
00201                 //      endSimulation(); // LLAMAMOS A LA FUNCION TERMINAR SIMULACION
00202                 //      callFinish(); // LLAMAMOS A LA FUNCION FINISH()
00203                 //}
00204         }
00205         //ENVIAMOS EL PAQUETE REPORT HACIA LA COLA DE ALMACENAMIENTO DE ESTOS PAQUETES DESPUES DE ACTUALIZAR EL ESTADO DE LAS COLAS
00206         send(reportmsg, "rxqueuereportOut");//, (int)par("numqueue"));
00207         sumpacketextrac = 0; // ACTUALIZAMOS EL VALOR DE LA VARIABLE sumpacketextra A UN VALOR DE 0 PARA EL PROXIMO CICLO DE EXTRACCION DE PAQUETES
00208 }


Member Data Documentation

Definition at line 38 of file ONU_Rx_Report.h.

Definition at line 39 of file ONU_Rx_Report.h.

Definition at line 44 of file ONU_Rx_Report.h.

Definition at line 45 of file ONU_Rx_Report.h.

Definition at line 32 of file ONU_Rx_Report.h.

Definition at line 34 of file ONU_Rx_Report.h.

Definition at line 36 of file ONU_Rx_Report.h.

Definition at line 33 of file ONU_Rx_Report.h.

Definition at line 37 of file ONU_Rx_Report.h.

Definition at line 35 of file ONU_Rx_Report.h.


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

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