public async Task SendTo(long msg, TargetConnectionOption option, IPAddress reciverIpAddress = null) { await Task.Run(async() => { switch (option) { case TargetConnectionOption.LocalSelf: LastMessage = msg; break; case TargetConnectionOption.LocalBroadcast: var list = _connectionProvider.LocalNetworkDictionary.ToList(); foreach (var ipAddress in list) { if (Equals(ipAddress.Key, MacAddress)) { continue; } var datagram = new IPDatagram(IpAddress, ipAddress.Value.IpAddress, msg, msg.GetType(), PackegesSent++); await _connectionProvider.Send(datagram); } break; case TargetConnectionOption.Ethernet: if (reciverIpAddress != null) { var datagram = new IPDatagram(IpAddress, reciverIpAddress, msg, msg.GetType(), PackegesSent++); await _connectionProvider.Send(datagram); } break; } }); }
public async Task Send(IPDatagram data) { await Task.Run(() => { _messageQueue.Enqueue(data); }); }
public async Task Send(IPDatagram data) { await Task.Run(() => { if (data.Reciever.Equals(IpAddress) && data.DataType == typeof(long)) { _messageQueue.Enqueue((long)data.Data); } }); }