diff options
Diffstat (limited to 'Mono.Nat/Upnp/Mappers/UpnpMapper.cs')
| -rw-r--r-- | Mono.Nat/Upnp/Mappers/UpnpMapper.cs | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/Mono.Nat/Upnp/Mappers/UpnpMapper.cs b/Mono.Nat/Upnp/Mappers/UpnpMapper.cs deleted file mode 100644 index ddacb4b11..000000000 --- a/Mono.Nat/Upnp/Mappers/UpnpMapper.cs +++ /dev/null @@ -1,117 +0,0 @@ -// -// Authors: -// Nicholas Terry <nick.i.terry@gmail.com> -// -// Copyright (C) 2014 Nicholas Terry -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Net; -using System.Net.Sockets; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Common.Net; -using MediaBrowser.Model.Logging; - -namespace Mono.Nat.Upnp.Mappers -{ - internal class UpnpMapper : Upnp, IMapper - { - public event EventHandler<DeviceEventArgs> DeviceFound; - - public UdpClient Client { get; set; } - - public UpnpMapper(ILogger logger, IHttpClient httpClient) - : base(logger, httpClient) - { - //Bind to local port 1900 for ssdp responses - Client = new UdpClient(1900); - } - - public void Map(IPAddress gatewayAddress) - { - //Get the httpu request payload - byte[] data = DiscoverDeviceMessage.EncodeUnicast(gatewayAddress); - - Client.Send(data, data.Length, new IPEndPoint(gatewayAddress, 1900)); - - new Thread(Receive).Start(); - } - - public async void Receive() - { - while (true) - { - IPEndPoint received = new IPEndPoint(IPAddress.Parse("192.168.0.1"), 5351); - if (Client.Available > 0) - { - IPAddress localAddress = ((IPEndPoint)Client.Client.LocalEndPoint).Address; - byte[] data = Client.Receive(ref received); - - await Handle(localAddress, data, received); - } - } - } - - public void Handle(IPAddress localAddres, byte[] response) - { - } - - public override async Task<UpnpNatDevice> Handle(IPAddress localAddress, byte[] response, IPEndPoint endpoint) - { - // No matter what, this method should never throw an exception. If something goes wrong - // we should still be in a position to handle the next reply correctly. - try - { - var d = await base.Handle(localAddress, response, endpoint).ConfigureAwait(false); - var result = await d.GetServicesList().ConfigureAwait(false); - - if (result) - { - DeviceSetupComplete(d); - } - - return d; - } - catch (Exception ex) - { - Logger.ErrorException("Error mapping port. Data string: {0}", ex, Encoding.UTF8.GetString(response)); - return null; - } - } - - private void DeviceSetupComplete(INatDevice device) - { - OnDeviceFound(new DeviceEventArgs(device)); - } - - private void OnDeviceFound(DeviceEventArgs args) - { - if (DeviceFound != null) - DeviceFound(this, args); - } - } -} |
