public void PassToInModule(object oSender, object received, int destPort) { try { InPort inPort; int destinationPort; if (received.GetType() == typeof(Packet)) { Packet receivedPacket = (Packet)received; MPLSPacket packet = SetLabelAndPort(receivedPacket, destPort); destinationPort = GetPortNumber(packet); inPort = GetInPort(destinationPort); //LogClass.WhiteLog("Passing MPLSPacket to inPort " + inPort.GetPortNumber()); MPLSPacket processedPacket = inPort.ProcessPacket(packet); Commutate(processedPacket); } else if (received.GetType() == typeof(MPLSPack)) { MPLSPack receivedPack = (MPLSPack)received; destinationPort = destPort; inPort = GetInPort(destinationPort); //LogClass.WhiteLog("Passing MPLSPack to inPort " + destinationPort); ThreadSafeList <MPLSPacket> processedPackets = inPort.ProcessPack(receivedPack, destPort); foreach (MPLSPacket packet in processedPackets) { Commutate(packet); } } } catch (Exception e) { LogClass.MagentaLog("Connection doesn't exist"); } }
private void OnTimedEvent(object source, ElapsedEventArgs e) { int portNumber; sendingTimer.Stop(); foreach (OutPort outPort in outPorts) { if (outPort.GetBufferLength() > 0) { portNumber = outPort.GetPortNumber(); if (outPort.SendingToClient()) { while (outPort.GetBufferLength() > 0) { Packet bufferObject = outPort.PrepareIPPacketFromBuffer(0); OutputManager.sendIPPacket(bufferObject, outPort, portNumber); LogClass.WhiteLog("Sending IPPacket from outPort " + portNumber); } } else { MPLSPack bufferContent = outPort.PrepareMPLSPackFromBuffer(); OutputManager.sendMPLSPack(bufferContent, portNumber, outPort); LogClass.WhiteLog("Sending MPLSPack from outPort " + portNumber); } } } sendingTimer.Start(); }
public List <MPLSPacket> processPack(MPLSPack mplsPack) { List <MPLSPacket> packets = UnpackPack(mplsPack); packets.ForEach(ChangeLabel); return(packets); }
private static byte[] getSerializedPack(MPLSPack pack) { BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, pack); byte[] serialized = ms.ToArray(); return(serialized); }
public static void sendMPLSPack(MPLSPack mplsPack, int outPort, OutPort port) { byte[] serializedMPLSPack = getSerializedPack(mplsPack); int packSize = serializedMPLSPack.Length + 8; outputSocket.Send(BitConverter.GetBytes(packSize)); outputSocket.Send(BitConverter.GetBytes(packSize)); outputSocket.Send(BitConverter.GetBytes(outPort)); outputSocket.Send(serializedMPLSPack); }
public MPLSPack PrepareMPLSPackFromBuffer() { ThreadSafeList <MPLSPacket> currentBuffer = packetBuffer; packetBuffer = new ThreadSafeList <MPLSPacket>(); MPLSPack pack = new MPLSPack(currentBuffer); pack.DestinationPort = currentBuffer[0].DestinationPort; return(pack); }
public ThreadSafeList <MPLSPacket> ProcessPack(MPLSPack mplsPack, int destPort) { LogClass.WhiteLog("MPLSPack added to inPort " + destPort); ThreadSafeList <MPLSPacket> packets = UnpackPack(mplsPack); LogClass.WhiteLog("MPLSPack unpacked, comutating MPLSPackets"); foreach (MPLSPacket packet in packets) { Program.count++; packet.DestinationPort = destPort; } packets.ForEach(ChangeLabel); return(packets); }
public void RouteIncoming(object oSender, object received) //jak to nazwać? { InPort inPort; int destinationPort; if (received.GetType() == typeof(Packet)) { Packet receivedPacket = (Packet)received; destinationPort = GetPortNumber(receivedPacket); inPort = GetInPort(destinationPort); MPLSPacket processedPacket = inPort.processPacket(receivedPacket); } else if (received.GetType() == typeof(MPLSPack)) { MPLSPack receivedPack = (MPLSPack)received; destinationPort = receivedPack.destinationPort; inPort = GetInPort(destinationPort); List <MPLSPacket> processedPackets = inPort.processPack(receivedPack); foreach (MPLSPacket packet in processedPackets) { Commutate(packet); } } }
public ThreadSafeList <MPLSPacket> UnpackPack(MPLSPack pack) { return(pack.Unpack()); }
public List <MPLSPacket> UnpackPack(MPLSPack pack) { return(pack.Unpack()); }