/// <summary> /// Receive data from receiver /// </summary> /// <param name="ip">Remote IP</param> /// <param name="data">Data</param> void r_OnReceived(string ip, byte[] data) { lock (lockThis) { /*Disassemble data*/ PacketDisassembler packetDisassembler = new PacketDisassembler(); List <DataReceived> listPackets = packetDisassembler.Disassemble(data); /*Read each packets*/ for (int i = 0; i < listPackets.Count; i++) { Command cmd = listPackets[i].cmd; switch (cmd) { /*Receive the function*/ case Command.ClientInit: DataInitServer dic = new DataInitServer(listPackets[i].data); calculation = new Calculation(); calculation.LoadSource(dic.src); Initialized.sendInitialized(serverIP, serverPort); //Send initialized data calculation.OnFinished += new Calculation.finished(calculation_OnFinished); break; case Command.Work: if (timer == null) //Start interval timer { timer = new Timer(); timer.Enabled = true; timer.Interval = 1000; timer.Start(); timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); } listTasks.Add(new Task(listPackets[i].noPacket, listPackets[i].data, listPackets[i].secondSince1970, listPackets[i].issueNumber)); //add a new task break; default: break; } } if (listPackets.Count > 0 && listPackets[0].cmd == Command.Work) //Start calculating of all received tasks { working = true; doWork(); working = false; } } }
/// <summary> /// Receive data from receiver /// </summary> /// <param name="ip">Remote IP</param> /// <param name="data">Data</param> void r_OnReceived(string ip, byte[] data) { lock (lockThis) { /*Disassemble data*/ PacketDisassembler packetDisassembler = new PacketDisassembler(); List<DataReceived> listPackets = packetDisassembler.Disassemble(data); /*Read each packets*/ for (int i = 0; i < listPackets.Count; i++) { Command cmd = listPackets[i].cmd; switch (cmd) { /*Receive the function*/ case Command.ClientInit: DataInitServer dic = new DataInitServer(listPackets[i].data); calculation = new Calculation(); calculation.LoadSource(dic.src); Initialized.sendInitialized(serverIP, serverPort); //Send initialized data calculation.OnFinished += new Calculation.finished(calculation_OnFinished); break; case Command.Work: if (timer == null) //Start interval timer { timer = new Timer(); timer.Enabled = true; timer.Interval = 1000; timer.Start(); timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); } listTasks.Add(new Task(listPackets[i].noPacket, listPackets[i].data, listPackets[i].secondSince1970, listPackets[i].issueNumber)); //add a new task break; default: break; } } if (listPackets.Count > 0 && listPackets[0].cmd == Command.Work) //Start calculating of all received tasks { working = true; doWork(); working = false; } } }