Está en la página 1de 4

*

* STP.cc

* Created on: 18 feb. 2020

* Author: frnd_

*/

#include <string.h>

#include <omnetpp.h>

using namespace omnetpp;

#include "mensajeSS7_m.h"

class STP : public cSimpleModule{

private:

int identificador;

int SSPA;

int SSPB;

int pSSPA;

int pSSPB;

protected:

virtual void initialize() override;

virtual void handleMessage(cMessage *msg) override;

};

Define_Module(STP);
void STP :: initialize(){

this->identificador = par("identificador");

this->SSPA = par("SSPA");

this->SSPB = par("SSPB");

this->pSSPA = par("pSSPA");

this->pSSPB = par("pSSPB");

EV << "Hola STP"<<endl;

void STP :: handleMessage(cMessage *msg){

//Para este caso, "da igual" saber de donde vienen los mensajes, ya que en cualquier caso

//se procederá de la misma manera, la cual será la siguiente:

//Se leerá el vector de ruteo teniendo en cuenta que las tres primeras posiciones pertenecen a
STPs

//y que los STPs impares tendrán salida por el puerto 0, mientras que los pares por el puerto 1

//La cuarta posición es la del SSP, como por cada para de STPs conectamos 2 SSPs, se asignará el
puerto 0

//para una y el puerto 1 ara otr de manera arbitraria

MensajeSS7 *Msg = check_and_cast<MensajeSS7 *>(msg);

int i = 0;

int j=0;

int len = Msg->getRutaArraySize();


int puertoSalida;

Msg->setTipoFuente(4);

while(j < 5){

puertoSalida = Msg->getRuta(0);

if(puertoSalida == 0 || puertoSalida == 1){

for(i = 0; i< len-2; i++){

Msg->setRuta(i, Msg->getRuta(i+2));

send(Msg,"puertoSTP$o",puertoSalida);

j = 6;

}else if(puertoSalida == -1){

for(i = 0; i< len-1; i++){

Msg->setRuta(i, Msg->getRuta(i+1));

j++;

}else{

if(puertoSalida == SSPA){

puertoSalida = pSSPA;

}else if(puertoSalida == SSPB){

puertoSalida = pSSPB;

send(Msg,"puertoSSP$o",puertoSalida);

j = 6;

}
}

También podría gustarte