diff options
| author | Eric Reed <ebr@mediabrowser3.com> | 2013-05-22 09:09:44 -0400 |
|---|---|---|
| committer | Eric Reed <ebr@mediabrowser3.com> | 2013-05-22 09:09:44 -0400 |
| commit | 07802a5b6d9abf7f67376e05c5bdaa96a0ac9337 (patch) | |
| tree | 02b7c251fd5f3e0b2b1f3fb4995ca5c0a1ceda3b /MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs | |
| parent | 212e696f7e76c37b8134acf87f7354baabcb63d4 (diff) | |
| parent | 07b7ab9a0b64d51646addc9a2a75189c2981a854 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs index a45804f69..f8e47434e 100644 --- a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs +++ b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs @@ -36,6 +36,14 @@ namespace MediaBrowser.Server.Implementations.ServerManager /// The web socket connections /// </summary> private readonly List<IWebSocketConnection> _webSocketConnections = new List<IWebSocketConnection>(); + /// <summary> + /// Gets the web socket connections. + /// </summary> + /// <value>The web socket connections.</value> + public IEnumerable<IWebSocketConnection> WebSocketConnections + { + get { return _webSocketConnections; } + } /// <summary> /// Gets or sets the external web socket server. @@ -83,6 +91,9 @@ namespace MediaBrowser.Server.Implementations.ServerManager /// <value>The web socket listeners.</value> private readonly List<IWebSocketListener> _webSocketListeners = new List<IWebSocketListener>(); + /// <summary> + /// The _kernel + /// </summary> private readonly Kernel _kernel; /// <summary> @@ -240,7 +251,26 @@ namespace MediaBrowser.Server.Implementations.ServerManager /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> /// <exception cref="System.ArgumentNullException">messageType</exception> - public async Task SendWebSocketMessageAsync<T>(string messageType, Func<T> dataFunction, CancellationToken cancellationToken) + public Task SendWebSocketMessageAsync<T>(string messageType, Func<T> dataFunction, CancellationToken cancellationToken) + { + return SendWebSocketMessageAsync(messageType, dataFunction, _webSocketConnections, cancellationToken); + } + + /// <summary> + /// Sends the web socket message async. + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="messageType">Type of the message.</param> + /// <param name="dataFunction">The data function.</param> + /// <param name="connections">The connections.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + /// <exception cref="System.ArgumentNullException">messageType + /// or + /// dataFunction + /// or + /// cancellationToken</exception> + public async Task SendWebSocketMessageAsync<T>(string messageType, Func<T> dataFunction, IEnumerable<IWebSocketConnection> connections, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(messageType)) { @@ -259,16 +289,16 @@ namespace MediaBrowser.Server.Implementations.ServerManager cancellationToken.ThrowIfCancellationRequested(); - var connections = _webSocketConnections.Where(s => s.State == WebSocketState.Open).ToList(); + var connectionsList = connections.Where(s => s.State == WebSocketState.Open).ToList(); - if (connections.Count > 0) + if (connectionsList.Count > 0) { _logger.Info("Sending web socket message {0}", messageType); var message = new WebSocketMessage<T> { MessageType = messageType, Data = dataFunction() }; var bytes = _jsonSerializer.SerializeToBytes(message); - var tasks = connections.Select(s => Task.Run(() => + var tasks = connectionsList.Select(s => Task.Run(() => { try { |
