public async Task ReceiveLoop(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { UdpReceiveResult receiveResult = await _udpReceiver.Receive(cancellationToken).ConfigureAwait(false); byte[] rawPacked = receiveResult.Buffer; PacketHeader header = DeserializePackedHeader(rawPacked); switch (header.MPacketId) { case 0: PacketMotionData packetMotionData = Deserialize <PacketMotionData>(rawPacked); _dataSetCompositor.ProcessPacket(packetMotionData); break; case 1: PacketSessionData packetSessionData = Deserialize <PacketSessionData>(rawPacked); _dataSetCompositor.ProcessPacket(packetSessionData); break; case 2: PacketLapData packetLapData = Deserialize <PacketLapData>(rawPacked); _dataSetCompositor.ProcessPacket(packetLapData); break; case 3: PacketEventData packetEventData = Deserialize <PacketEventData>(rawPacked); _dataSetCompositor.ProcessPacket(packetEventData); break; case 4: PacketParticipantsData packetParticipantsData = Deserialize <PacketParticipantsData>(rawPacked); _dataSetCompositor.ProcessPacket(packetParticipantsData); break; case 5: PacketCarSetupData packetCarSetupData = Deserialize <PacketCarSetupData>(rawPacked); _dataSetCompositor.ProcessPacket(packetCarSetupData); break; case 6: PacketCarTelemetryData packetCarTelemetryData = Deserialize <PacketCarTelemetryData>(rawPacked); _dataSetCompositor.ProcessPacket(packetCarTelemetryData); break; case 7: PacketCarStatusData packetCarStatusData = Deserialize <PacketCarStatusData>(rawPacked); _dataSetCompositor.ProcessPacket(packetCarStatusData); break; } } }
public async Task ReceiveLoop(Action <UDPTelemetryData> handler, CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { UdpReceiveResult receiveResult = await _udpReceiver.Receive(cancellationToken); if (!IsCorrectPackageType(receiveResult.Buffer)) { continue; } UDPTelemetryData telemetryData = Deserialize(receiveResult.Buffer); handler(telemetryData); } }
public void ReceiveNotifications() { new Thread(() => { while (true) { string[] message = Encoding.ASCII.GetString(UdpReceiver.Receive(ref remoteEndPoint)).Split(' '); string request = message[0]; Guid remoteGuid = Guid.Parse(message[1]); if (request == "add") { if (!copies.ContainsKey(remoteGuid)) { copies[remoteGuid] = remoteEndPoint.Address; Console.WriteLine(string.Join("\n", GetJoinMessage(remoteGuid), CopiesCountMessage, CopiesListing, Parameters.Delimiters)); } timeouts[remoteGuid] = 0; } } }).Start(); }
private void Loop() { byteData = udp.Receive(); messageQueue.Push(byteData); System.Threading.Thread.Sleep(1); }