BS_queue Class Reference

#include <BS_queue.h>

Inheritance diagram for BS_queue:

cSimpleModule cModule cComponent cDefaultList cNoncopyableOwnedObject cOwnedObject noncopyable cNamedObject cObject

List of all members.

Public Member Functions

virtual const char * getTarget () const
virtual void setTarget (const char *target)
virtual void deleteElement (cMessage *msg, int priority)
virtual void strictpriorityqueue ()
virtual void centralizedmethod ()
void chequeoPaquete (int index)
void envioPaquete (int priority)
virtual void volcadoFicheros ()

Public Attributes

int esPasarela
int uso
int usado
int Testigo
simtime_t Interval
int colas_salida
int colas_totales
int prioridades
double txrate
double t_slot
int used_index
simtime_t tiempo_slot
simtime_t timepacket
double t_frame
simtime_t tiempo_frame
int used_bs_queues
BS_tableTabla
cQueue_vector_t queue
cTopology top
cTopology::Nodetop_node
double bandwidth
double remaining_bw
double bw_left
double bw_tx
double bw_tx_anterior
double time_tx
double time_resto
long paquetes_recibidos
long paquetes_colas
long_vector_t tamqueue
long_vector_t user_tamqueuepop
long_vector_t user_tamqueueextract
long_vector_t user_tamextract
long sumcheckedpacket
long sumextractedpacket
long tamsumcola
long_vector_t sumpaquete
long_vector_t sumcolapop
long_vector_t bytes_cola
double_vector_t media
int volcado
int contador

Protected Member Functions

virtual void initialize ()
virtual void handleMessage (cMessage *msg)
virtual int se_repite (char *nombre)
virtual void finish ()

Protected Attributes

opp_string target

Private Attributes

FILE * Parametros_slot_BSqueue
FILE * Longitud_colas


Detailed Description

Definition at line 33 of file BS_queue.h.


Member Function Documentation

void BS_queue::centralizedmethod (  )  [virtual]

Definition at line 305 of file BS_queue.cc.

00305                                  {
00306         //ev << " **Metodo centralizado de extraccion de paquetes de las colas**" << endl;
00307         double capacidad_real = (double) bandwidth/prioridades;
00308         // Se recorren todas las colas 'cQueue' para ver si tienen paquetes y extraer los Bytes que se puedan:
00309         int i = 0, salir = -1; //
00310         while (i < prioridades && salir < 0)
00311         {
00312                 sumpaquete[i] = 0; // Suma de los paquetes checkeados en las colas
00313                 sumcolapop[i] = 0; // Suma de los bytes extraidos de las colas
00314                 // Se comprueba que la cola i tiene contiene paquetes y se compara el
00315                 // ancho de banda total con la suma de todos los paqutes extraidos:
00316                 if (queue[i].getLength() > 0 && capacidad_real >= sumpaquete[i])
00317                 {
00318                         // ... Si el BW es mayor que los bytes extraidos Y quedan paquetes en la cola i, se extraen paquetes:
00319                         int acabar = -1; //
00320                         while (queue[i].getLength() > 0 && acabar < 0)
00321                         {
00322                                 // Llamada a la funcion 'chequeoPaquete()' para ver si podemos extraerlo:
00323                                 chequeoPaquete(i);
00324                                 //ev << "       Suma de los paquetes chequeados en la cola P" << i << ": " << sumpaquete[i] << " Bytes" << endl;
00325                                 // Se comprueba el ancho de banda de la cola con la suma de los paquetes extraidos (y este ultimo):
00326                                 if (capacidad_real >= sumpaquete[i])
00327                                 {
00328                                         // ... si el BW es mayor, se extrae un paquete 'DATA' y se envia:
00329                                         //ev << "       EXTRACCION y ENVIO de un paquete inalambrico de prioridad P" << i << " al siguiente nodo: " << this->getTarget() << endl;
00330                                         // Llamada a la funcion para extraer paquetes:
00331                                         envioPaquete(i);
00332                                 }
00333                                 else if (capacidad_real < sumpaquete[i])
00334                                 {
00335                                         // ... Si el BW es menor, no se extraen mas paquetes:
00336                                         //ev << "       NO se extraen mas paquetes porque no entra en el ancho de banda de slot de la cola P" << i << endl;
00337                                         acabar = 1;
00338                                         // Salida del bucle que recorre los paquetes de la cola i
00339                                 }
00340                         }
00341                 }
00342                 else if (capacidad_real < sumpaquete[i])
00343                 {
00344                         // ... Si el BW es menor que los bytes extraidos:
00345                         tamsumcola = tamsumcola - sumextractedpacket; // RESTAMOS EL TAMANYO DE LOS PAQUETES QUE HEMOS EXTRAIDO A LA SUMA DEL TAMANYO DE LOS PAQUETES DE LAS COLAS
00346                         //ev << "       NO se envian mas paquetes porque con el ultimo que se ha checkeado se excede el ancho de banda disponible para esta subcola (" << capacidad_real << ")." << endl;
00347                         salir = 1; //
00348                 }
00349                 i++;
00350         }
00351         // Si se han recorrido todas las colas, y aun queda BW para transmitir:
00352         if (bandwidth >= sumcheckedpacket)
00353         {
00354                 // Se restan los bytes de los paquetes extraidos a la suma de bytes en las colas:
00355                 tamsumcola = tamsumcola - sumextractedpacket;
00356                 //ev << "       NO se envian mas paquetes porque las colas estan vacias." << endl;
00357         }
00358         else if (bandwidth < sumcheckedpacket)
00359         {
00360                 tamsumcola = tamsumcola - sumextractedpacket; // RESTAMOS EL TAMANYO DE LOS PAQUETES QUE HEMOS EXTRAIDO A LA SUMA DEL TAMANYO DE LOS PAQUETES DE LAS COLAS
00361                 //ev << "       NO se envian mas paquetes porque con el ultimo que se ha checkeado se excede el ancho de banda disponible(" << bandwidth << ")." << endl;
00362         }
00363 }

void BS_queue::chequeoPaquete ( int  index  ) 

Definition at line 387 of file BS_queue.cc.

00388 {
00389         //ETHERNETmsg *msgdata;
00390         DATA *msgdata;
00391         // Obtencion de informacion del primer paquete de la cola 'index', sin extraerlo:
00392         //msgdata = (ETHERNETmsg *)queue[index].front();
00393         msgdata = (DATA *) queue[index].front();
00394         // Almacenamiento en la posicion 'index' de la variable 'user_tamqueueextract' de la longitud del paquete:
00395         user_tamqueueextract[index] = (long) msgdata->getByteLength();
00396         // Suma de los paquetes chequeados:
00397         //sumcheckedpacket = sumcheckedpacket + user_tamqueueextract[index];
00398         sumcheckedpacket = sumcheckedpacket + (long) msgdata->getByteLength();
00399         sumpaquete[index] = sumpaquete[index] + (long) msgdata->getByteLength();
00400 }

void BS_queue::deleteElement ( cMessage msg,
int  priority 
) [virtual]

Definition at line 368 of file BS_queue.cc.

00368                                                         {
00369         //ETHERNETmsg *msgdata = check_and_cast<ETHERNETmsg*>(msg);
00370         DATA *msgdata = check_and_cast<DATA*> (msg);
00371         // Extraccion del primer paquete ETHERNET de la cola de la prioridad indicada:
00372         //msgdata = (ETHERNETmsg *)queue[priority].pop();
00373         msgdata = (DATA *) queue[priority].pop();
00374         // Obtencion de la longitud del paquete extraido:
00375         user_tamqueuepop[priority] = (long) msgdata->getByteLength();
00376         // Resta de los bytes del paquete borrado al total de bytes de esta cola:
00377         tamqueue[priority] = tamqueue[priority] - user_tamqueuepop[priority];
00378         // Borrado del paquete 'DATA':
00379         //ev << " MENSAJE 'DATA' (Id." << msgdata->getId() << ") BORRADO" << endl;
00380         delete msgdata;
00381 }

void BS_queue::envioPaquete ( int  priority  ) 

Definition at line 405 of file BS_queue.cc.

00406 {
00407         //ETHERNETmsg *msgdata;
00408         DATA *msgdata;
00409         int num_puertas = (int) this->getParentModule()->gateSize("physicalBS");
00410         double distancia = 0, Ddistancia = 0;
00411 
00412         // Extraccion del primer paquete de la cola de indice 'priority':
00413         take(msgdata = (DATA *) queue[priority].pop());
00416         // Almacenamiento en la posicion 'priority' de la variable 'user_tamextract' de la longitud del paquete:
00417         user_tamextract[priority] = msgdata->getByteLength();
00418         // Almacenamiento en la posicion 'priority' de la variable 'user_tamqueuepop' de la longitud del paquete:
00419         user_tamqueuepop[priority] = msgdata->getByteLength();
00420         // Resta de la longitud del paquete extraido a la longitud de la cola 'priority':
00421         tamqueue[priority] = tamqueue[priority] - msgdata->getByteLength();
00422         // Suma de la longitud del paquete a los paquetes extraidos de esta cola:
00423         sumextractedpacket = sumextractedpacket + msgdata->getByteLength();
00425         // Suma total de los bytes de los paquetes extraidos de la cola i, y visualizacion:
00426         sumcolapop[priority] = sumcolapop[priority] + msgdata->getByteLength();
00428         // Actualizacion del ancho de banda disponible durante este slot:
00429         bw_left = bw_left - msgdata->getByteLength();
00431 
00432         // Busqueda del destino de este paquete 'DATA':
00433         char* nombre_puerta;
00434         cModule *destino;
00435         int x = 0, indice = -1;
00436         while (x < num_puertas && indice < 0) {
00437                 if (this->getParentModule()->gate("physicalBS$o", x)->isConnected())
00438                 {
00439                         nombre_puerta = (char*) this->getParentModule()->gate("physicalBS$o", x)->getNextGate()->getOwnerModule()->getFullName();
00440                         if (strcmp(this->getTarget(), nombre_puerta) == 0)
00441                         {
00442                                 destino = this->getParentModule()->gate("physicalBS$o", x)->getNextGate()->getOwnerModule();
00443                                 indice = x;
00444                         }
00445                 }
00446                 x++;
00447         }
00448         msgdata->setOrigen(this->getParentModule()->getFullName());
00449         distancia = (double) this->getParentModule()->gate("physicalBS$o", indice)->getChannel()->par(2);
00450         msgdata->setDestino(destino->getFullName());
00451         if(strcmp(destino->getModuleType()->getName(),"BS")==0)
00452         {
00453                 msgdata->setDestAddress(destino->par("indice"));
00454                 //msgdata->setDestAddress(destino->getIndex()); /////// CAMBIO_RED ///////
00455         }
00456         else
00457         {
00458                 msgdata->setDestAddress(destino->getIndex());
00459         }
00460         Ddistancia = distancia + (double) msgdata->getMetros();
00461         msgdata->setMetros(Ddistancia);
00462         int saltos = msgdata->getSaltos() + 1;
00463         msgdata->setSaltos(saltos);
00464         send(msgdata, "bsqueueInOut$o");
00465 }

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

Reimplemented from cComponent.

Definition at line 489 of file BS_queue.cc.

00489                       {
00490         volcadoFicheros();
00491 }

const char * BS_queue::getTarget (  )  const [virtual]

Definition at line 223 of file BS_queue.cc.

00223                                        {
00224         return target.c_str();
00225 }

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

Reimplemented from cSimpleModule.

Definition at line 187 of file BS_queue.cc.

00187                                           {
00188         int type = msg->getKind();
00189         switch (type)
00190         {
00191                 case 12: // Paquete 'Datos' (mensajes de usuarios wireless)
00192                         if(type==12)
00193                         {
00194                                 DATA *msjdatos = check_and_cast<DATA*>(msg);
00195                                 if(uso == 0)
00196                                 {
00197                                         //ev << "ERROR!!!" << endl;
00198                                         delete msjdatos;
00199                                 }
00200                                 if(usado == 0 && uso == 1)
00201                                 {
00202                                         usado = 1;
00203                                         contador = 0;
00204                                 }
00205 
00207                                 // Introducimos el paquete en la cola de prioridad correspondiente:
00208                                 tamqueue[msjdatos->getPriority()] = tamqueue[msjdatos->getPriority()] + msjdatos->getByteLength();
00209                                 msjdatos->setTime_enter_queue(simTime());
00210                                 queue[msjdatos->getPriority()].insert(msjdatos);
00211                         }
00212                 break;
00213                 default:
00214                         delete msg;
00215                         //ev << " MENSAJE BORRADO" << endl;
00216                         break;
00217         }
00218 }

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

Reimplemented from cComponent.

Definition at line 32 of file BS_queue.cc.

00033 {
00034         // Se incluyen en la topologia los nodos que contienen el parametro 'aux' (Users, BSs y ONUs):
00035         top.extractByParameter("aux");
00036         // Se extrae el nodo correspondiente al modulo compuesto que contiene este submodulo:
00037         cModule *origen = (cModule*) this->getParentModule();
00038         top_node = top.getNodeFor(origen);
00039 
00041         Tabla = check_and_cast<BS_table *> (getParentModule()->getSubmodule("bs_table"));
00042 
00043         // Obtencion parametros del fichero omnetpp.ini:
00044         //int indice = (int) this->getParentModule()->par("indice"); // Indice de la BS
00045         //int indice = (int) this->getParentModule()->getIndex(); // Indice de la BS /////// CAMBIO_RED ///////
00046         int conexiones = (int) this->getParentModule()->par("conexiones"); // Numero de puertas de salida de la BS
00047         txrate = (double) this->par("tasabinaria"); // Tasa de transmision wireless (bps)
00048         prioridades = (int) this->getParentModule()->par("numcolas"); // Numero de colas (clases de servicio)
00049 
00050         // Inicializacion de variables:
00051         int links = top_node->getNumOutLinks(); // Total conexiones con usuario/onu/BSs
00052         int link_2 = links-1; //Total conexiones onu/BSs
00053         colas_salida = link_2; // Numero de posibles modulos BS_queue[] en uso
00054         colas_totales = conexiones-1; // Numero de modulos BS_queue que contiene en total cada BS
00055         used_bs_queues = 0;
00056         paquetes_recibidos = 0; // Cantidad de paquetes recibidos
00057         volcado = 0; // Variable auxiliar para entrar en la funcion VolcadoFicheros()
00058         contador = 0; // Variable auxiliar para gestionar la inactividad de una BS_queue
00059         remaining_bw = 0; // Ancho de banda sobrante en cada slot
00060         bw_left = 0; // Ancho de banda que aun queda para transmitir en cada slot
00061         bw_tx = 0; // Ancho de banda que se ha transmitido en un slot
00062         bw_tx_anterior = 1; // Ancho de banda que se ha transmitido en el solt anterior
00063         time_tx = 0; // Tiempo de slot consumido para transmitir
00064         time_resto = 0; // Tiempo de slot sobrante
00065         queue.resize(prioridades, 0); // Tantas subcolas como prioridades hay
00066         user_tamqueuepop.resize(prioridades, 0); // Longitud de los paquetes que se borran de cada cola
00067         user_tamqueueextract.resize(prioridades, 0); // Longitud de los paquetes que se checkean antes de sacarlos de cada cola
00068         user_tamextract.resize(prioridades, 0); // Longitud de los paquetes que se extraen de cada cola
00069         tamqueue.resize(prioridades, 0); // Longitud de cada una de las colas (inicialmente, 0 Bytes)
00070         sumcheckedpacket = 0; // Suma de los paquetes checkeados en el metodo de extraccion con prioridad estricta
00071         sumextractedpacket = 0; // Suma de los paquetes extraidos en el metodo de extraccion con prioridad estricta
00072         tamsumcola = 0; // Suma de la longitud de los paquetes que llegan a las colas de la BS_queue
00073         sumpaquete.resize(prioridades, 0); // Suma de los paquetes checkeados en las colas
00074         sumcolapop.resize(prioridades, 0); // Suma total de bytes extraidos de las colas
00075         bytes_cola.resize(prioridades, 0); //Bytes que quedan en las colas tras cada ciclo
00076         Testigo = 0; // Variable para la gestion de los tiempos de slot (TDMA)
00077         Interval = 0.0; // Intervalo de transmision permitido en cada slot (tiepo actual + tiempo de slot)
00078 
00079         // Si el enlace num.1 conecta con una ONU, es una pasarela:
00080         if(strcmp(top_node->getLinkOut(1)->getRemoteNode()->getModule()->getName(),"onu")==0)
00081         {
00082                 esPasarela = 1;
00083                 link_2 = link_2-prioridades;
00084                 if(this->getIndex() == 0)
00085                 {
00086                         //ev << " La estacion base " << origen->getFullName() << " es una pasarela con la parte optica." << endl;
00087 
00088                 }
00089         }
00090         else
00091         {
00092                 esPasarela = 0;
00093                 if (this->getIndex() == 0)
00094                 {
00095                         //ev << " La estacion base " << origen->getFullName() << " no es una pasarela con la parte optica." << endl;
00096                 }
00097         }
00098 
00099         if (this->getIndex() == 0)
00100         {
00101                 // Numero de interfaces de salida del BS que estan en uso:
00102                 //ev << " Numero total de conexiones con otras estaciones base: " << link_2 << endl;
00103                 //ev << " Total prioridades de servicio de los usuarios: " << prioridades << endl;
00104                 // Cuantas conexiones externas con BSs/usuarios/ONU hay?
00105                 //ev << " **CONEXIONES DE LA ESTACION BASE n." << indice << "** " << endl;
00106         }
00107         /*
00108         for (int j = 0; j < links; j++)
00109         {
00110                 // NOTA: Indices del array de parametros de los canales inalambricos:
00111                 //               par(0): isEnabled (bool) --> POR DEFECTO
00112                 //               par(1): delay (s) --> NULO
00113                 //               par(2): longitud (double)
00114                 //               par(3): peso (double) --> Inicialmente 0.0, cambia con DARA.
00115                 //               par(4): retardo_propagacion (double) --> longitud/3·10e8.
00116                 top_node->getLinkOut(j);
00117                 if (this->getIndex() == 0)
00118                 {
00119                         char* nombre_nodo = (char*) top_node->getLinkOut(j)->getRemoteNode()->getModule()->getFullName();
00120                         char* nombre_canal = (char*) (check_and_cast<cDelayChannel*>(top_node->getLinkOut(j)->getLocalGate()->getChannel()))->getComponentType()->getName();
00121                         char* nombre_longitud = (char*) (check_and_cast<cDelayChannel*>(top_node->getLinkOut(j)->getLocalGate()->getChannel()))->par(2).getFullName();
00122                         double longitud = (double) (check_and_cast<cDelayChannel*>(top_node->getLinkOut(j)->getLocalGate()->getChannel()))->par(2);
00123                         double retardo = (double) (check_and_cast<cDelayChannel*>(top_node->getLinkOut(j)->getLocalGate()->getChannel()))->par(4);
00124                         ev << " CANAL '" << nombre_canal << "': " << origen->getFullName() << "<-->" << nombre_nodo << endl;
00125                         // Visualizacion
00126                         ev << "  Longitud ('" << nombre_longitud << "'): " << longitud << " metros" << endl;
00127                         ev << "  Retardo de propagacion: " << retardo << " segundos." << endl;
00128                 }
00129         }
00130         */
00131         // Si es una BS_queue[] que puede contener paquetes destinados a alguna BS/onu,
00132         // se asigna el target, esto es, el nombre de la BS/ONU destino de los paquetes
00133         // que va a almacenar:
00134         if (this->getIndex() < colas_salida)
00135         {
00136                 int j = 1, fin = -1;
00137                 char* nombre_cola;
00138                 this->setTarget(" "); // Objetivo en blanco
00139 
00140                 while (j < links && fin < 0)
00141                 {
00142                         nombre_cola = (char*) top_node->getLinkOut(j)->getRemoteNode()->getModule()->getFullName();
00143                         if (this->getIndex() == 0 || se_repite(nombre_cola) == 0)
00144                         {
00145                                 // Si es el modulo BS_queue[0] o no aparece ya este nodo como Target de otro modulo BS_queue[] de esta BS,
00146                                 // se asigna como Target a este modulo BS_queue[] el nombre del nodo al otro extremo del enlace con el que
00147                                 // se asocia este modulo BS_queue[]:
00148                                 this->setTarget(nombre_cola);
00149                                 fin = 1;
00150                         }
00151                         j++;
00152                 }
00153                 // Si al final del bucle, a este modulo BS_queue[] no se le ha asignado Target, entonces
00154                 // es que no se va a usar:
00155                 if (strcmp(this->getTarget(), " ") == 0)
00156                 {
00157                         //ev << " *COLA EN DESUSO* " << endl;
00158                         uso = 0; // Esta cola no se va a usar nunca porque no se asocia con nigun enlace de salida de esta BS
00159                         usado = 0; // Esta cola no esta activa
00160                 }
00161                 else
00162                 {
00163                         //ev << " Cola BS para recibir los mensajes destinados al nodo " << this->getTarget() << endl;
00164                         uso = 1; // Esta cola puede ser usada porque corresponde a un enlace entre esta BS y otro nodo (este parametro siempre va a estar a 1)
00165                         usado = 1; // Inicialmente se considera que esta cola esta siendo usada (si luego resulta que no recibe paquetes, puede ponerse a cero esta variable y considerarse cola no activa).
00166                         if(esPasarela == 1 && getIndex()!=0)
00167                         {
00168                                 usado = 0; // Si es una pasarela, en realidad solo se usa la cola que conecta con la ONU.
00169                         }
00170                 }
00171         }
00172         else
00173         {
00174                 //ev << " *COLA EN DESUSO* " << endl;
00175                 uso = 0;
00176                 usado = 0;
00177         }
00178 }

int BS_queue::se_repite ( char *  nombre  )  [protected, virtual]

Definition at line 238 of file BS_queue.cc.

00238                                     {
00239         int k = 0, repetido = 0;
00240         while (k < this->getIndex() && repetido == 0)
00241         {
00242                 BS_queue *cola_previa;
00243                 cola_previa = check_and_cast<BS_queue*>(this->getParentModule()->getSubmodule("bs_queue", k));
00244                 if (strcmp(nombre, cola_previa->getTarget()) == 0)
00245                 {
00246                         repetido = 1;
00247                 }
00248                 k++;
00249         }
00250         return repetido;
00251 }

void BS_queue::setTarget ( const char *  target  )  [virtual]

Definition at line 229 of file BS_queue.cc.

00229                                             {
00230         this->target = target;
00231 }

void BS_queue::strictpriorityqueue (  )  [virtual]

Definition at line 256 of file BS_queue.cc.

00256                                    {
00257         //ev << " **Metodo de extraccion de paquetes en colas con prioridad estricta**" << endl;
00258         // Se recorren todas las colas 'cQueue' para ver si tienen paquetes y extraer los Bytes que se puedan:
00259         int i = 0, salir = -1; //
00260         while (i < prioridades && salir < 0) {
00261                 // Se comprueba que la cola i tiene contiene paquetes y se compara el
00262                 // ancho de banda total con la suma de todos los paqutes extraidos:
00263                 if (queue[i].getLength() > 0 && bandwidth >= sumcheckedpacket) {
00264                         // ... Si el BW es mayor que los bytes extraidos Y quedan paquetes en la cola i, se extraen paquetes:
00265                         int acabar = -1; //
00266                         while (queue[i].getLength() > 0 && acabar < 0) {
00267                                 // Llamada a la funcion 'chequeoPaquete()' para ver si podemos extraerlo:
00268                                 chequeoPaquete(i);
00269                                 //ev << "       Suma de los paquetes chequeados: " << sumcheckedpacket << " Bytes" << endl;
00270                                 // Se comprueba el ancho de banda de la cola con la suma de los paquetes extraidos (y este ultimo):
00271                                 if (bandwidth >= sumcheckedpacket) {
00272                                         // ... si el BW es mayor, se extrae un paquete 'DATA' y se envia:
00273                                         //ev << "       EXTRACCION y ENVIO de un paquete inalambrico de prioridad P" << i << " al siguiente nodo: " << this->getTarget() << endl;
00274                                         // Llamada a la funcion para extraer paquetes:
00275                                         envioPaquete(i);
00276                                 } else if (bandwidth < sumcheckedpacket) {
00277                                         // ... Si el BW es menor, no se extraen mas paquetes:
00278                                         //ev << "       NO se extraen mas paquetes porque no entra en el ancho de banda de slot de la cola P" << i << endl;
00279                                         acabar = 1; //
00280                                         salir = 1; //
00281                                         // Salida del bucle que recorre los paquetes de la cola i
00282                                 }
00283                         }
00284                 } else if (bandwidth < sumcheckedpacket)
00285                 {
00286                         // ... Si el BW es menor que los bytes extraidos:
00287                         tamsumcola = tamsumcola - sumextractedpacket; // RESTAMOS EL TAMANYO DE LOS PAQUETES QUE HEMOS EXTRAIDO A LA SUMA DEL TAMANYO DE LOS PAQUETES DE LAS COLAS
00288                         //ev << "       NO se envian mas paquetes porque con el ultimo que se ha checkeado se excede el ancho de banda disponible(" << bandwidth << ")." << endl;
00289                         salir = 1; //
00290                 }
00291                 i++;
00292         }
00293         // Si se han recorrido todas las colas, y aun queda BW para transmitir:
00294         if (bandwidth >= sumcheckedpacket)
00295         {
00296                 // Se restan los bytes de los paquetes extraidos a la suma de bytes en las colas:
00297                 tamsumcola = tamsumcola - sumextractedpacket;
00298                 //ev << "       NO se envian mas paquetes porque las colas estan vacias." << endl;
00299         }
00300 }

void BS_queue::volcadoFicheros (  )  [virtual]

Definition at line 471 of file BS_queue.cc.

00471                                {
00472         volcado = 1;
00473         if (usado == 1) // Si es una cola que esta siendo usada, esto es, se considera activa:
00474         {
00475                 // 'LONGITUD_COLAS': NUMERO TOTAL DE PAQUETES PRESENTES EN CADA SUBMODULO BS_QUEUE[], ASOCIADO A UN ENLACE SALIENTE ACTIVO, DE CADA BS.
00476                 Longitud_colas = fopen("results/Longitud_colas.txt", "a+");
00477                 for (int p=0; p<prioridades; p++)
00478                 {
00479                         fprintf(Longitud_colas, "%s.BS_queue[%i] -> Paquetes: %li \t Bytes: %li\n", this->getParentModule()->getFullName(), this->getIndex(), (long int) queue[p].getLength(), (long int) tamqueue[p]);
00480                 }
00481                 fclose(Longitud_colas);
00482         }
00483 }


Member Data Documentation

Definition at line 71 of file BS_queue.h.

Definition at line 75 of file BS_queue.h.

Definition at line 77 of file BS_queue.h.

Definition at line 79 of file BS_queue.h.

Definition at line 97 of file BS_queue.h.

Definition at line 54 of file BS_queue.h.

Definition at line 55 of file BS_queue.h.

Definition at line 111 of file BS_queue.h.

Definition at line 49 of file BS_queue.h.

simtime_t BS_queue::Interval

Definition at line 53 of file BS_queue.h.

FILE* BS_queue::Longitud_colas [private]

Definition at line 37 of file BS_queue.h.

Definition at line 98 of file BS_queue.h.

Definition at line 86 of file BS_queue.h.

Definition at line 85 of file BS_queue.h.

Definition at line 36 of file BS_queue.h.

Definition at line 56 of file BS_queue.h.

Definition at line 66 of file BS_queue.h.

Definition at line 73 of file BS_queue.h.

Definition at line 92 of file BS_queue.h.

Definition at line 96 of file BS_queue.h.

Definition at line 93 of file BS_queue.h.

Definition at line 95 of file BS_queue.h.

Definition at line 62 of file BS_queue.h.

Definition at line 58 of file BS_queue.h.

Definition at line 65 of file BS_queue.h.

Definition at line 87 of file BS_queue.h.

Definition at line 94 of file BS_queue.h.

Definition at line 40 of file BS_queue.h.

Definition at line 52 of file BS_queue.h.

Definition at line 63 of file BS_queue.h.

Definition at line 60 of file BS_queue.h.

Definition at line 83 of file BS_queue.h.

Definition at line 81 of file BS_queue.h.

Definition at line 61 of file BS_queue.h.

Definition at line 67 of file BS_queue.h.

Definition at line 68 of file BS_queue.h.

Definition at line 57 of file BS_queue.h.

Definition at line 51 of file BS_queue.h.

Definition at line 64 of file BS_queue.h.

Definition at line 59 of file BS_queue.h.

Definition at line 90 of file BS_queue.h.

Definition at line 89 of file BS_queue.h.

Definition at line 88 of file BS_queue.h.

Definition at line 50 of file BS_queue.h.

Definition at line 110 of file BS_queue.h.


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

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