public void BroadcastFsxData(FsxValueBag valueBag) { UdpResponseMessage msg = new UdpResponseMessage { MsgType = UdpResponseMessage.Types.MsgType.TransmissionData, TransmissionDataBody = new UdpResponseMessage.Types.TransmissionDataBody { XAcceleration = valueBag.XAcceleration, YAcceleration = valueBag.YAcceleration, ZAcceleration = valueBag.ZAcceleration, PitchVelocity = valueBag.PitchVelocity, RollVelocity = valueBag.RollVelocity, YawVelocity = valueBag.YawVelocity, }, }; using (ValueBag.HexiClientsLock.WriterLock()) { foreach (var client in ValueBag.HexiClients) { if (client.Valid) { client.SendMessage(msg); } } } }
public async Task SendMessageAsync(UdpResponseMessage message) { // No need to add length prefix since packet size < MTU SerialNumber = SerialNumber + 1; message.Token = Token; message.SerialNumber = SerialNumber; var body = message.ToByteArray(); await SendAsync(body, body.Length); }
public void SendMessage(UdpResponseMessage message) { Task.Run(() => SendMessageAsync(message)); }