updated nuget

This commit is contained in:
Luke Pulverenti
2014-05-17 14:37:40 -04:00
parent c8e4889ac7
commit 715119b525
21 changed files with 134 additions and 23 deletions

View File

@@ -1,4 +1,5 @@
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Events;
using MediaBrowser.Common.Net;
using MediaBrowser.Model.Logging;
using System;
using System.Net.WebSockets;
@@ -19,6 +20,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer
/// </summary>
private readonly ILogger _logger;
public event EventHandler<EventArgs> Closed;
/// <summary>
/// Gets or sets the web socket.
/// </summary>
@@ -97,6 +100,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
if (bytes == null)
{
// Connection closed
EventHelper.FireEventIfNotNull(Closed, this, EventArgs.Empty, _logger);
break;
}

View File

@@ -84,7 +84,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv
{
_services.AddRange(services);
SetActiveService(_services.FirstOrDefault());
SetActiveService(_config.Configuration.LiveTvOptions.ActiveService);
}
private void SetActiveService(string name)
{
var service = _services.FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase)) ??
_services.FirstOrDefault();
SetActiveService(service);
}
private void SetActiveService(ILiveTvService service)

View File

@@ -1,4 +1,5 @@
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Events;
using MediaBrowser.Common.Net;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Serialization;
@@ -14,6 +15,8 @@ namespace MediaBrowser.Server.Implementations.ServerManager
/// </summary>
public class WebSocketConnection : IWebSocketConnection
{
public event EventHandler<EventArgs> Closed;
/// <summary>
/// The _socket
/// </summary>
@@ -96,6 +99,13 @@ namespace MediaBrowser.Server.Implementations.ServerManager
_socket.OnReceive = OnReceiveInternal;
RemoteEndPoint = remoteEndPoint;
_logger = logger;
socket.Closed += socket_Closed;
}
void socket_Closed(object sender, EventArgs e)
{
EventHelper.FireEventIfNotNull(Closed, this, EventArgs.Empty, _logger);
}
/// <summary>

View File

@@ -45,6 +45,11 @@ namespace MediaBrowser.Server.Implementations.Session
}
}
public bool SupportsMediaControl
{
get { return true; }
}
private Task SendMessage(object obj, CancellationToken cancellationToken)
{
var json = _json.SerializeToString(obj);

View File

@@ -1164,7 +1164,7 @@ namespace MediaBrowser.Server.Implementations.Session
SupportedCommands = session.SupportedCommands,
UserName = session.UserName,
NowPlayingItem = session.NowPlayingItem,
SupportsRemoteControl = session.SupportsMediaControl,
PlayState = session.PlayState
};

View File

@@ -138,10 +138,10 @@ namespace MediaBrowser.Server.Implementations.Session
if (controller == null)
{
controller = new WebSocketController(session, _appHost, _logger);
controller = new WebSocketController(session, _appHost, _logger, _sessionManager);
}
controller.Sockets.Add(message.Connection);
controller.AddWebSocket(message.Connection);
session.SessionController = controller;
}

View File

@@ -17,16 +17,19 @@ namespace MediaBrowser.Server.Implementations.Session
public class WebSocketController : ISessionController
{
public SessionInfo Session { get; private set; }
public List<IWebSocketConnection> Sockets { get; private set; }
public IReadOnlyList<IWebSocketConnection> Sockets { get; private set; }
private readonly IServerApplicationHost _appHost;
private readonly ILogger _logger;
public WebSocketController(SessionInfo session, IServerApplicationHost appHost, ILogger logger)
private readonly ISessionManager _sessionManager;
public WebSocketController(SessionInfo session, IServerApplicationHost appHost, ILogger logger, ISessionManager sessionManager)
{
Session = session;
_appHost = appHost;
_logger = logger;
_sessionManager = sessionManager;
Sockets = new List<IWebSocketConnection>();
}
@@ -38,6 +41,11 @@ namespace MediaBrowser.Server.Implementations.Session
}
}
public bool SupportsMediaControl
{
get { return GetActiveSockets().Any(); }
}
private IEnumerable<IWebSocketConnection> GetActiveSockets()
{
return Sockets
@@ -45,6 +53,28 @@ namespace MediaBrowser.Server.Implementations.Session
.Where(i => i.State == WebSocketState.Open);
}
public void AddWebSocket(IWebSocketConnection connection)
{
var sockets = Sockets.ToList();
sockets.Add(connection);
Sockets = sockets;
connection.Closed += connection_Closed;
}
void connection_Closed(object sender, EventArgs e)
{
var capabilities = new SessionCapabilities
{
PlayableMediaTypes = Session.PlayableMediaTypes,
SupportedCommands = Session.SupportedCommands,
SupportsMediaControl = SupportsMediaControl
};
_sessionManager.ReportCapabilities(Session.Id, capabilities);
}
private IWebSocketConnection GetActiveSocket()
{
var socket = GetActiveSockets()

View File

@@ -1,4 +1,5 @@
using Alchemy.Classes;
using MediaBrowser.Common.Events;
using MediaBrowser.Common.Net;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
@@ -18,6 +19,8 @@ namespace MediaBrowser.Server.Implementations.WebSocket
/// </summary>
private readonly ILogger _logger;
public event EventHandler<EventArgs> Closed;
/// <summary>
/// Gets or sets the web socket.
/// </summary>
@@ -66,6 +69,8 @@ namespace MediaBrowser.Server.Implementations.WebSocket
private void OnDisconnected(UserContext context)
{
_disconnected = true;
EventHelper.FireEventIfNotNull(Closed, this, EventArgs.Empty, _logger);
}
/// <summary>