From 6efd22a3d22f8d87ad17da3a1e47ca26c5bb09f2 Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Tue, 26 Feb 2013 11:10:55 -0500 Subject: added a shutdown api method, font size fix and other decouplings --- MediaBrowser.Networking/Udp/UdpServer.cs | 40 ++++++++++++++++++++-- MediaBrowser.Networking/WebSocket/AlchemyServer.cs | 8 +++++ 2 files changed, 46 insertions(+), 2 deletions(-) (limited to 'MediaBrowser.Networking') diff --git a/MediaBrowser.Networking/Udp/UdpServer.cs b/MediaBrowser.Networking/Udp/UdpServer.cs index 9b1c254cf..00eb2a0d1 100644 --- a/MediaBrowser.Networking/Udp/UdpServer.cs +++ b/MediaBrowser.Networking/Udp/UdpServer.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.Net; +using MediaBrowser.Model.Logging; using MediaBrowser.Networking.Management; using System; using System.Net; @@ -19,6 +20,21 @@ namespace MediaBrowser.Networking.Udp /// public event EventHandler MessageReceived; + /// + /// Gets or sets the logger. + /// + /// The logger. + private ILogger Logger { get; set; } + + /// + /// Initializes a new instance of the class. + /// + /// The logger. + public UdpServer(ILogger logger) + { + Logger = logger; + } + /// /// Raises the event. /// @@ -54,8 +70,24 @@ namespace MediaBrowser.Networking.Udp private IObservable CreateObservable() { return Observable.Create(obs => - Observable.FromAsync(() => _udpClient.ReceiveAsync()) - .Subscribe(obs)) + Observable.FromAsync(() => + { + try + { + return _udpClient.ReceiveAsync(); + } + catch (ObjectDisposedException) + { + return Task.FromResult(new UdpReceiveResult(new byte[]{}, new IPEndPoint(IPAddress.Any, 0))); + } + catch (Exception ex) + { + Logger.ErrorException("Error receiving udp message", ex); + return Task.FromResult(new UdpReceiveResult(new byte[] { }, new IPEndPoint(IPAddress.Any, 0))); + } + }) + + .Subscribe(obs)) .Repeat() .Retry() .Publish() @@ -68,6 +100,10 @@ namespace MediaBrowser.Networking.Udp /// The message. private void OnMessageReceived(UdpReceiveResult message) { + if (message.RemoteEndPoint.Port == 0) + { + return; + } var bytes = message.Buffer; OnMessageReceived(new UdpMessageReceivedEventArgs diff --git a/MediaBrowser.Networking/WebSocket/AlchemyServer.cs b/MediaBrowser.Networking/WebSocket/AlchemyServer.cs index 1a3971c7f..b3d5d710e 100644 --- a/MediaBrowser.Networking/WebSocket/AlchemyServer.cs +++ b/MediaBrowser.Networking/WebSocket/AlchemyServer.cs @@ -42,6 +42,12 @@ namespace MediaBrowser.Networking.WebSocket _logger = logger; } + /// + /// Gets the port. + /// + /// The port. + public int Port { get; private set; } + /// /// Starts the specified port number. /// @@ -56,6 +62,8 @@ namespace MediaBrowser.Networking.WebSocket WebSocketServer.Start(); + Port = portNumber; + _logger.Info("Alchemy Web Socket Server started"); } -- cgit v1.2.3