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;
                }
            });
        }
Example #2
0
 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);
         }
     });
 }