SPLITTER Class Reference

#include <SPLITTER.h>

Inheritance diagram for SPLITTER:

cSimpleModule cModule cComponent cDefaultList cNoncopyableOwnedObject cOwnedObject noncopyable cNamedObject cObject

List of all members.

Protected Member Functions

virtual void initialize ()
virtual void handleMessage (cMessage *msg)


Detailed Description

Definition at line 21 of file SPLITTER.h.


Member Function Documentation

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

Reimplemented from cSimpleModule.

Definition at line 38 of file SPLITTER.cc.

00039 {
00040         // VARIABLES
00041         int type = msg->getKind(); // VARIABLE TYPE PARA IDENTIFICAR LOS MENSAJES DE LA RED
00042 
00043         // ESTRUCTURA CONDICIONAL SWITCH QUE NOS DIFERENCIA LOS MENSAJES QUE LLEGUEN A ESTE MODULO
00044         switch(type)
00045         {
00046                 case 0:
00047                         // LLEGA UN PAQUETE GATE CON IDENTIFICADOR = 0
00048                         if(msg->getKind()==0)
00049                         {
00050                                 GATEmsg *gatemsg=check_and_cast<GATEmsg*>(msg); // CHEQUEAMOS EL PAQUETE GATE
00051 
00052 
00053                                 // BUCLE FOR PARA GENERAR UNA COPIA DEL MENSAJE GATE QUE SE MANDA A TODAS LAS ONUS DE LA RED
00054                                 for( int k=gatemsg->getLambdagate(); k<gateSize("splitterOut"); k=k+(int)par("numlong"))
00055                                 {
00056                                         GATEmsg *copy = gatemsg->dup(); // DUPLICAMOS EL PAQUETE GATE QUE SE MANDA A TODAS LAS ONUS DE LA RED
00057                                         send(copy, "splitterOut$o", k); // ENVIAMOS TODAS LAS COPIAS DEL PAQUETE GATE HACIA TODAS LAS ONUS DE LA RED
00058                                 }
00059 
00060                                 delete msg; // BORRAMOS EL MENSAJE
00061                         }
00062                         break;
00063 
00064                 case 1:
00065                         // LLEGA UN PAQUETE ETHERNET CON IDENTIFICADOR = 1
00066                         if(msg->getKind()==1)
00067                         {
00068                                 ETHERNETmsg *ethernetmsg=check_and_cast<ETHERNETmsg*>(msg); // CHEQUEAMOS EL PAQUETE ETHERNET
00069 
00070                                 // COMPARAMOS SI LA EL IDENTIFICADOR DE LA DIRECCION DE DESTINO ES IGUAL AL IDENTIFICADOR = 9 QUE CORRESPONDE CON EL OLT
00071                                 if(ethernetmsg->getDestAddress()==9)
00072                                 {
00073                                         // VISUALIZAMOS EL TAMANYO DEL PAQUETE ETHERNET QUE SE MANDA HACIA EL OLT
00074                                         // //ev<<" Longitud del paquete Ethernet que se manda hacia el OLT: " << ethernetmsg->getByteLength() << " Bytes" << endl;
00075                                         // ENVIAMOS EL PAQUETE ETHERNET POR LA SALIDA DEL MODULO SPLITTER HACIA EL OLT
00076                                         if(ethernetmsg->getIsWireless()==1)
00077                                         {
00078                                                 ev<<" Envio de paquete Ethernet de origen inalambrico al modulo 'OLT_WDMSplitter'."<<endl;
00079                                         }
00080                                         else
00081                                         {
00082                                                 //ev<<" Envio mensaje Ethernet (Id. " << ethernetmsg->getId() << ") al modulo 'OLT_WDMSplitter'." << endl;
00083                                         }
00084                                         send(ethernetmsg, "splitterIn$o", ethernetmsg->getLambdaethernet());
00085                                 }
00086                                 else
00087                                 {
00088                                         // BUCLE FOR PARA GENERAR UNA COPIA DEL MENSAJE ETHERNET QUE SE MANDA A TODAS LAS ONUS DE LA RED
00089                                         for( int k=ethernetmsg->getLambdaethernet(); k<gateSize("splitterOut"); k=k+(int)par("numlong"))
00090                                         {
00091                                                 ETHERNETmsg *copy = ethernetmsg->dup(); // DUPLICAMOS EL PAQUETE ETHERNET QUE SE MANDA A TODAS LAS ONUS DE LA RED
00092                                                 send(copy, "splitterOut$o", k); // ENVIAMOS TODAS LAS COPIAS DEL PAQUETE ETHERNET HACIA TODAS LAS ONUS DE LA RED
00093                                         }
00094 
00095                                         delete msg; // BORRAMOS EL MENSAJE
00096                                 }
00097                         }
00098                         break;
00099 
00100                 case 2:
00101                         // LLEGA UN PAQUETE REPORT CON IDENTIFICADOR = 2
00102                         if(msg->getKind()==2)
00103                         {
00104 
00105                                 REPORTmsg *reportmsg=check_and_cast<REPORTmsg*>(msg); // CHEQUEAMOS EL PAQUETE REPORT
00106                                 // ENVIAMOS EL PAQUETE REPORT POR LA SALIDA DEL MODULO SPLITTER HACIA EL OLT
00107                                 send(reportmsg, "splitterIn$o", reportmsg->getLambdareport());
00108                         }
00109                         break;
00110 
00111                 default:
00112                         delete msg;
00113                         break;
00114         }
00115 }

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

Reimplemented from cComponent.

Definition at line 27 of file SPLITTER.cc.

00028 {
00029 }


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

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