public void SerializeCableCloudMessageTest() { var message = new CableCloudMessage(1, AtmCell.Generate(1, 1, "TEST")); var data = BinarySerializer.Serialize(message); var obj = BinarySerializer.Deserialize(data); var msg = new CableCloudMessage(1, AtmCell.Generate(1, 1, "TEST")); Debug.WriteLine(msg.PortNumber); if (obj is CableCloudMessage) { msg = (CableCloudMessage)obj; } Assert.AreEqual(message.PortNumber, msg.PortNumber); Debug.WriteLine(msg.PortNumber); }
/* Wątek pobierający komórki ATM z portów wyjściowych pola komutacyjnego i wysyłający je do chmury kablowej */ private void RunThread() { while (!_timeToQuit) { var sent = false; foreach (var port in CommutationMatrix.OutputPorts) { if (port.GetAtmCellNumber() != 0 && (DateTime.Now - port.GetLastAddTime()).TotalMilliseconds > MinLastAddTime || port.GetAtmCellNumber() > CableCloudMessage.MaxAtmCellsNumber) { // OnUpdateState("Różnica czasu: " + (DateTime.Now - port.GetLastAddTime()).TotalMilliseconds + " if max: " + (port.GetAtmCellNumber() > CableCloudMessage.MaxAtmCellsNumber)); var atmCells = new List <AtmCell>(); var atmCellNumberInPort = port.GetAtmCellNumber(); int atmCellNumberInMessage; if (atmCellNumberInPort > CableCloudMessage.MaxAtmCellsNumber) { atmCellNumberInMessage = CableCloudMessage.MaxAtmCellsNumber; } else { atmCellNumberInMessage = atmCellNumberInPort; } for (var i = 0; i < atmCellNumberInMessage; i++) { atmCells.Add(port.GetAtmCell()); } //OnUpdateState(DateTime.Now.Millisecond + " Wysyłanie CableCloudMessage na port " + // message.PortNumber + " Liczba ATMCell: " + message.AtmCells.Count // + " Port: " + port.GetPortNumber()); var message = new CableCloudMessage(port.GetPortNumber(), atmCells); SendCableCloudMessage(message); sent = true; } } if (!sent) { Thread.Sleep(10); } } }
public void ReceiveCableCloudMessage(CableCloudMessage cableCloudMessage) { OnUpdateState("[RECEIVED] Port: " + cableCloudMessage.PortNumber + ", " + cableCloudMessage.ExtractAtmCells().Count + " cells"); /* foreach (var cell in ExtractAtmCells(cableCloudMessage)) * CommutationMatrix.AddAtmCellToInputPort(cell, cableCloudMessage.PortNumber); */ var message = CommutationMatrix.CommuteAllCells(cableCloudMessage.ExtractAtmCells(), cableCloudMessage.PortNumber); if (message != null) { SendCableCloudMessage(message); } else { OnUpdateState("[UNKNOWN_DESTINATION]"); } }
public void StreamSerializeCableCloudMessageTest() { var tcpListener = new TcpListener(IPAddress.Loopback, 10000); tcpListener.Start(); var acceptTask = AcceptTask(tcpListener); var client1 = new TcpClient(); client1.Connect(IPAddress.Loopback, 10000); var client2 = acceptTask.Result; var expected = new CableCloudMessage(1, AtmCell.Generate(1, 1, "TEST")); BinarySerializer.SerializeToStream(expected, client1.GetStream()); var actual = (CableCloudMessage)BinarySerializer.DeserializeFromStream(client2.GetStream()); Assert.AreEqual(expected.PortNumber, actual.PortNumber); }
private void SendCableCloudMessage(CableCloudMessage cableCloudMessage) { Send(cableCloudMessage); OnUpdateState("[" + DateTime.Now + "] Message sent on port: " + cableCloudMessage.PortNumber); OnUpdateState("[" + DateTime.Now + "] Sent " + cableCloudMessage.ExtractAtmCells().Count + " atmcells"); }
protected override void Receive(CableCloudMessage cableCloudMessage) { ReceiveCableCloudMessage(cableCloudMessage); }
protected override void Receive(CableCloudMessage cableCloudMessage) { MessageReceived(cableCloudMessage.ToString()); OnUpdateState("Received: " + cableCloudMessage.ExtractAtmCells().Count + " ATMCells."); }
protected void Send(CableCloudMessage cableCloudMessage) { _dataPlaneConnectionComponent.Send(cableCloudMessage); }
protected abstract void Receive(CableCloudMessage cableCloudMessage);