Merge pull request #1156 from Bond-009/sep

Small cleanups here and there
pull/1463/head
Anthony Lavado 5 years ago committed by GitHub
commit b25c08e79a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -3,12 +3,10 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Plugins; using MediaBrowser.Common.Plugins;
using MediaBrowser.Common.Updates; using MediaBrowser.Common.Updates;
using MediaBrowser.Controller; using MediaBrowser.Controller;
using MediaBrowser.Controller.Authentication; using MediaBrowser.Controller.Authentication;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Devices;
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
@ -29,31 +27,39 @@ namespace Emby.Server.Implementations.Activity
{ {
public class ActivityLogEntryPoint : IServerEntryPoint public class ActivityLogEntryPoint : IServerEntryPoint
{ {
private readonly ILogger _logger;
private readonly IInstallationManager _installationManager; private readonly IInstallationManager _installationManager;
private readonly ISessionManager _sessionManager; private readonly ISessionManager _sessionManager;
private readonly ITaskManager _taskManager; private readonly ITaskManager _taskManager;
private readonly IActivityManager _activityManager; private readonly IActivityManager _activityManager;
private readonly ILocalizationManager _localization; private readonly ILocalizationManager _localization;
private readonly ILibraryManager _libraryManager;
private readonly ISubtitleManager _subManager; private readonly ISubtitleManager _subManager;
private readonly IUserManager _userManager; private readonly IUserManager _userManager;
private readonly IServerConfigurationManager _config;
private readonly IServerApplicationHost _appHost; private readonly IServerApplicationHost _appHost;
private readonly IDeviceManager _deviceManager; private readonly IDeviceManager _deviceManager;
public ActivityLogEntryPoint(ISessionManager sessionManager, IDeviceManager deviceManager, ITaskManager taskManager, IActivityManager activityManager, ILocalizationManager localization, IInstallationManager installationManager, ILibraryManager libraryManager, ISubtitleManager subManager, IUserManager userManager, IServerConfigurationManager config, IServerApplicationHost appHost) public ActivityLogEntryPoint(
ILogger<ActivityLogEntryPoint> logger,
ISessionManager sessionManager,
IDeviceManager deviceManager,
ITaskManager taskManager,
IActivityManager activityManager,
ILocalizationManager localization,
IInstallationManager installationManager,
ISubtitleManager subManager,
IUserManager userManager,
IServerApplicationHost appHost)
{ {
_logger = logger;
_sessionManager = sessionManager; _sessionManager = sessionManager;
_deviceManager = deviceManager;
_taskManager = taskManager; _taskManager = taskManager;
_activityManager = activityManager; _activityManager = activityManager;
_localization = localization; _localization = localization;
_installationManager = installationManager; _installationManager = installationManager;
_libraryManager = libraryManager;
_subManager = subManager; _subManager = subManager;
_userManager = userManager; _userManager = userManager;
_config = config;
_appHost = appHost; _appHost = appHost;
_deviceManager = deviceManager;
} }
public Task RunAsync() public Task RunAsync()
@ -122,7 +128,7 @@ namespace Emby.Server.Implementations.Activity
if (item == null) if (item == null)
{ {
//_logger.LogWarning("PlaybackStopped reported with null media info."); _logger.LogWarning("PlaybackStopped reported with null media info.");
return; return;
} }
@ -153,7 +159,7 @@ namespace Emby.Server.Implementations.Activity
if (item == null) if (item == null)
{ {
//_logger.LogWarning("PlaybackStart reported with null media info."); _logger.LogWarning("PlaybackStart reported with null media info.");
return; return;
} }
@ -201,6 +207,7 @@ namespace Emby.Server.Implementations.Activity
{ {
return NotificationType.AudioPlayback.ToString(); return NotificationType.AudioPlayback.ToString();
} }
if (string.Equals(mediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase)) if (string.Equals(mediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
{ {
return NotificationType.VideoPlayback.ToString(); return NotificationType.VideoPlayback.ToString();
@ -215,6 +222,7 @@ namespace Emby.Server.Implementations.Activity
{ {
return NotificationType.AudioPlaybackStopped.ToString(); return NotificationType.AudioPlaybackStopped.ToString();
} }
if (string.Equals(mediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase)) if (string.Equals(mediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
{ {
return NotificationType.VideoPlaybackStopped.ToString(); return NotificationType.VideoPlaybackStopped.ToString();
@ -403,6 +411,7 @@ namespace Emby.Server.Implementations.Activity
{ {
vals.Add(e.Result.ErrorMessage); vals.Add(e.Result.ErrorMessage);
} }
if (!string.IsNullOrEmpty(e.Result.LongErrorMessage)) if (!string.IsNullOrEmpty(e.Result.LongErrorMessage))
{ {
vals.Add(e.Result.LongErrorMessage); vals.Add(e.Result.LongErrorMessage);
@ -412,7 +421,7 @@ namespace Emby.Server.Implementations.Activity
{ {
Name = string.Format(_localization.GetLocalizedString("ScheduledTaskFailedWithName"), task.Name), Name = string.Format(_localization.GetLocalizedString("ScheduledTaskFailedWithName"), task.Name),
Type = NotificationType.TaskFailed.ToString(), Type = NotificationType.TaskFailed.ToString(),
Overview = string.Join(Environment.NewLine, vals.ToArray()), Overview = string.Join(Environment.NewLine, vals),
ShortOverview = runningTime, ShortOverview = runningTime,
Severity = LogLevel.Error Severity = LogLevel.Error
}); });
@ -489,6 +498,7 @@ namespace Emby.Server.Implementations.Activity
{ {
values.Add(CreateValueString(span.Hours, "hour")); values.Add(CreateValueString(span.Hours, "hour"));
} }
// Number of minutes // Number of minutes
if (span.Minutes >= 1) if (span.Minutes >= 1)
{ {
@ -512,6 +522,7 @@ namespace Emby.Server.Implementations.Activity
builder.Append(values[i]); builder.Append(values[i]);
} }
// Return result // Return result
return builder.ToString(); return builder.ToString();
} }

@ -826,10 +826,10 @@ namespace Emby.Server.Implementations
DtoService = new DtoService(LoggerFactory, LibraryManager, UserDataManager, ItemRepository, ImageProcessor, ProviderManager, this, () => MediaSourceManager, () => LiveTvManager); DtoService = new DtoService(LoggerFactory, LibraryManager, UserDataManager, ItemRepository, ImageProcessor, ProviderManager, this, () => MediaSourceManager, () => LiveTvManager);
serviceCollection.AddSingleton(DtoService); serviceCollection.AddSingleton(DtoService);
ChannelManager = new ChannelManager(UserManager, DtoService, LibraryManager, LoggerFactory, ServerConfigurationManager, FileSystemManager, UserDataManager, JsonSerializer, LocalizationManager, HttpClient, ProviderManager); ChannelManager = new ChannelManager(UserManager, DtoService, LibraryManager, LoggerFactory, ServerConfigurationManager, FileSystemManager, UserDataManager, JsonSerializer, ProviderManager);
serviceCollection.AddSingleton(ChannelManager); serviceCollection.AddSingleton(ChannelManager);
SessionManager = new SessionManager(UserDataManager, LoggerFactory, LibraryManager, UserManager, musicManager, DtoService, ImageProcessor, JsonSerializer, this, HttpClient, AuthenticationRepository, DeviceManager, MediaSourceManager); SessionManager = new SessionManager(UserDataManager, LoggerFactory, LibraryManager, UserManager, musicManager, DtoService, ImageProcessor, this, AuthenticationRepository, DeviceManager, MediaSourceManager);
serviceCollection.AddSingleton(SessionManager); serviceCollection.AddSingleton(SessionManager);
serviceCollection.AddSingleton<IDlnaManager>( serviceCollection.AddSingleton<IDlnaManager>(
@ -1014,7 +1014,6 @@ namespace Emby.Server.Implementations
Video.LiveTvManager = LiveTvManager; Video.LiveTvManager = LiveTvManager;
Folder.UserViewManager = UserViewManager; Folder.UserViewManager = UserViewManager;
UserView.TVSeriesManager = TVSeriesManager; UserView.TVSeriesManager = TVSeriesManager;
UserView.PlaylistManager = PlaylistManager;
UserView.CollectionManager = CollectionManager; UserView.CollectionManager = CollectionManager;
BaseItem.MediaSourceManager = MediaSourceManager; BaseItem.MediaSourceManager = MediaSourceManager;
CollectionFolder.XmlSerializer = XmlSerializer; CollectionFolder.XmlSerializer = XmlSerializer;

@ -6,7 +6,6 @@ using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Progress; using MediaBrowser.Common.Progress;
using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Configuration;
@ -20,7 +19,6 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Channels; using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Dto; using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.IO; using MediaBrowser.Model.IO;
using MediaBrowser.Model.Querying; using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Serialization;
@ -40,11 +38,8 @@ namespace Emby.Server.Implementations.Channels
private readonly IServerConfigurationManager _config; private readonly IServerConfigurationManager _config;
private readonly IFileSystem _fileSystem; private readonly IFileSystem _fileSystem;
private readonly IJsonSerializer _jsonSerializer; private readonly IJsonSerializer _jsonSerializer;
private readonly IHttpClient _httpClient;
private readonly IProviderManager _providerManager; private readonly IProviderManager _providerManager;
private readonly ILocalizationManager _localization;
public ChannelManager( public ChannelManager(
IUserManager userManager, IUserManager userManager,
IDtoService dtoService, IDtoService dtoService,
@ -54,8 +49,6 @@ namespace Emby.Server.Implementations.Channels
IFileSystem fileSystem, IFileSystem fileSystem,
IUserDataManager userDataManager, IUserDataManager userDataManager,
IJsonSerializer jsonSerializer, IJsonSerializer jsonSerializer,
ILocalizationManager localization,
IHttpClient httpClient,
IProviderManager providerManager) IProviderManager providerManager)
{ {
_userManager = userManager; _userManager = userManager;
@ -66,8 +59,6 @@ namespace Emby.Server.Implementations.Channels
_fileSystem = fileSystem; _fileSystem = fileSystem;
_userDataManager = userDataManager; _userDataManager = userDataManager;
_jsonSerializer = jsonSerializer; _jsonSerializer = jsonSerializer;
_localization = localization;
_httpClient = httpClient;
_providerManager = providerManager; _providerManager = providerManager;
} }

@ -89,14 +89,11 @@ namespace Emby.Server.Implementations.Dto
var channelTuples = new List<Tuple<BaseItemDto, LiveTvChannel>>(); var channelTuples = new List<Tuple<BaseItemDto, LiveTvChannel>>();
var index = 0; var index = 0;
var allCollectionFolders = _libraryManager.GetUserRootFolder().Children.OfType<Folder>().ToList();
foreach (var item in items) foreach (var item in items)
{ {
var dto = GetBaseItemDtoInternal(item, options, allCollectionFolders, user, owner); var dto = GetBaseItemDtoInternal(item, options, user, owner);
var tvChannel = item as LiveTvChannel; if (item is LiveTvChannel tvChannel)
if (tvChannel != null)
{ {
channelTuples.Add(new Tuple<BaseItemDto, LiveTvChannel>(dto, tvChannel)); channelTuples.Add(new Tuple<BaseItemDto, LiveTvChannel>(dto, tvChannel));
} }
@ -105,9 +102,7 @@ namespace Emby.Server.Implementations.Dto
programTuples.Add(new Tuple<BaseItem, BaseItemDto>(item, dto)); programTuples.Add(new Tuple<BaseItem, BaseItemDto>(item, dto));
} }
var byName = item as IItemByName; if (item is IItemByName byName)
if (byName != null)
{ {
if (options.ContainsField(ItemFields.ItemCounts)) if (options.ContainsField(ItemFields.ItemCounts))
{ {
@ -130,8 +125,7 @@ namespace Emby.Server.Implementations.Dto
if (programTuples.Count > 0) if (programTuples.Count > 0)
{ {
var task = _livetvManager().AddInfoToProgramDto(programTuples, options.Fields, user); _livetvManager().AddInfoToProgramDto(programTuples, options.Fields, user).GetAwaiter().GetResult();
Task.WaitAll(task);
} }
if (channelTuples.Count > 0) if (channelTuples.Count > 0)
@ -144,8 +138,7 @@ namespace Emby.Server.Implementations.Dto
public BaseItemDto GetBaseItemDto(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null) public BaseItemDto GetBaseItemDto(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null)
{ {
var allCollectionFolders = _libraryManager.GetUserRootFolder().Children.OfType<Folder>().ToList(); var dto = GetBaseItemDtoInternal(item, options, user, owner);
var dto = GetBaseItemDtoInternal(item, options, allCollectionFolders, user, owner);
var tvChannel = item as LiveTvChannel; var tvChannel = item as LiveTvChannel;
if (tvChannel != null) if (tvChannel != null)
{ {
@ -188,7 +181,7 @@ namespace Emby.Server.Implementations.Dto
}); });
} }
private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, List<Folder> allCollectionFolders, User user = null, BaseItem owner = null) private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null)
{ {
var dto = new BaseItemDto var dto = new BaseItemDto
{ {
@ -312,6 +305,7 @@ namespace Emby.Server.Implementations.Dto
{ {
path = path.TrimStart('.'); path = path.TrimStart('.');
} }
if (!string.IsNullOrEmpty(path) && containers.Contains(path, StringComparer.OrdinalIgnoreCase)) if (!string.IsNullOrEmpty(path) && containers.Contains(path, StringComparer.OrdinalIgnoreCase))
{ {
fileExtensionContainer = path; fileExtensionContainer = path;
@ -325,8 +319,7 @@ namespace Emby.Server.Implementations.Dto
public BaseItemDto GetItemByNameDto(BaseItem item, DtoOptions options, List<BaseItem> taggedItems, User user = null) public BaseItemDto GetItemByNameDto(BaseItem item, DtoOptions options, List<BaseItem> taggedItems, User user = null)
{ {
var allCollectionFolders = _libraryManager.GetUserRootFolder().Children.OfType<Folder>().ToList(); var dto = GetBaseItemDtoInternal(item, options, user);
var dto = GetBaseItemDtoInternal(item, options, allCollectionFolders, user);
if (taggedItems != null && options.ContainsField(ItemFields.ItemCounts)) if (taggedItems != null && options.ContainsField(ItemFields.ItemCounts))
{ {
@ -1051,14 +1044,15 @@ namespace Emby.Server.Implementations.Dto
} }
else else
{ {
mediaStreams = dto.MediaSources.Where(i => string.Equals(i.Id, item.Id.ToString("N"), StringComparison.OrdinalIgnoreCase)) string id = item.Id.ToString("N");
mediaStreams = dto.MediaSources.Where(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase))
.SelectMany(i => i.MediaStreams) .SelectMany(i => i.MediaStreams)
.ToArray(); .ToArray();
} }
} }
else else
{ {
mediaStreams = _mediaSourceManager().GetStaticMediaSources(item, true).First().MediaStreams.ToArray(); mediaStreams = _mediaSourceManager().GetStaticMediaSources(item, true)[0].MediaStreams.ToArray();
} }
dto.MediaStreams = mediaStreams; dto.MediaStreams = mediaStreams;

@ -15,13 +15,9 @@ namespace Emby.Server.Implementations.Security
{ {
public class AuthenticationRepository : BaseSqliteRepository, IAuthenticationRepository public class AuthenticationRepository : BaseSqliteRepository, IAuthenticationRepository
{ {
private readonly IServerConfigurationManager _config;
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
public AuthenticationRepository(ILoggerFactory loggerFactory, IServerConfigurationManager config) public AuthenticationRepository(ILoggerFactory loggerFactory, IServerConfigurationManager config)
: base(loggerFactory.CreateLogger(nameof(AuthenticationRepository))) : base(loggerFactory.CreateLogger(nameof(AuthenticationRepository)))
{ {
_config = config;
DbFilePath = Path.Combine(config.ApplicationPaths.DataPath, "authentication.db"); DbFilePath = Path.Combine(config.ApplicationPaths.DataPath, "authentication.db");
} }

@ -48,7 +48,7 @@ namespace Emby.Server.Implementations.Services
foreach (var propertyInfo in RestPath.GetSerializableProperties(type)) foreach (var propertyInfo in RestPath.GetSerializableProperties(type))
{ {
var propertySetFn = TypeAccessor.GetSetPropertyMethod(type, propertyInfo); var propertySetFn = TypeAccessor.GetSetPropertyMethod(propertyInfo);
var propertyType = propertyInfo.PropertyType; var propertyType = propertyInfo.PropertyType;
var propertyParseStringFn = GetParseFn(propertyType); var propertyParseStringFn = GetParseFn(propertyType);
var propertySerializer = new PropertySerializerEntry(propertySetFn, propertyParseStringFn, propertyType); var propertySerializer = new PropertySerializerEntry(propertySetFn, propertyParseStringFn, propertyType);
@ -110,9 +110,9 @@ namespace Emby.Server.Implementations.Services
} }
} }
internal class TypeAccessor internal static class TypeAccessor
{ {
public static Action<object, object> GetSetPropertyMethod(Type type, PropertyInfo propertyInfo) public static Action<object, object> GetSetPropertyMethod(PropertyInfo propertyInfo)
{ {
if (!propertyInfo.CanWrite || propertyInfo.GetIndexParameters().Length > 0) if (!propertyInfo.CanWrite || propertyInfo.GetIndexParameters().Length > 0)
{ {

@ -7,7 +7,6 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using MediaBrowser.Common.Events; using MediaBrowser.Common.Events;
using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller; using MediaBrowser.Controller;
using MediaBrowser.Controller.Authentication; using MediaBrowser.Controller.Authentication;
using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Devices;
@ -25,7 +24,6 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Events; using MediaBrowser.Model.Events;
using MediaBrowser.Model.Library; using MediaBrowser.Model.Library;
using MediaBrowser.Model.Querying; using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Session; using MediaBrowser.Model.Session;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -53,8 +51,6 @@ namespace Emby.Server.Implementations.Session
private readonly IImageProcessor _imageProcessor; private readonly IImageProcessor _imageProcessor;
private readonly IMediaSourceManager _mediaSourceManager; private readonly IMediaSourceManager _mediaSourceManager;
private readonly IHttpClient _httpClient;
private readonly IJsonSerializer _jsonSerializer;
private readonly IServerApplicationHost _appHost; private readonly IServerApplicationHost _appHost;
private readonly IAuthenticationRepository _authRepo; private readonly IAuthenticationRepository _authRepo;
@ -96,9 +92,7 @@ namespace Emby.Server.Implementations.Session
IMusicManager musicManager, IMusicManager musicManager,
IDtoService dtoService, IDtoService dtoService,
IImageProcessor imageProcessor, IImageProcessor imageProcessor,
IJsonSerializer jsonSerializer,
IServerApplicationHost appHost, IServerApplicationHost appHost,
IHttpClient httpClient,
IAuthenticationRepository authRepo, IAuthenticationRepository authRepo,
IDeviceManager deviceManager, IDeviceManager deviceManager,
IMediaSourceManager mediaSourceManager) IMediaSourceManager mediaSourceManager)
@ -110,9 +104,7 @@ namespace Emby.Server.Implementations.Session
_musicManager = musicManager; _musicManager = musicManager;
_dtoService = dtoService; _dtoService = dtoService;
_imageProcessor = imageProcessor; _imageProcessor = imageProcessor;
_jsonSerializer = jsonSerializer;
_appHost = appHost; _appHost = appHost;
_httpClient = httpClient;
_authRepo = authRepo; _authRepo = authRepo;
_deviceManager = deviceManager; _deviceManager = deviceManager;
_mediaSourceManager = mediaSourceManager; _mediaSourceManager = mediaSourceManager;
@ -347,8 +339,7 @@ namespace Emby.Server.Implementations.Session
var runtimeTicks = libraryItem.RunTimeTicks; var runtimeTicks = libraryItem.RunTimeTicks;
MediaSourceInfo mediaSource = null; MediaSourceInfo mediaSource = null;
var hasMediaSources = libraryItem as IHasMediaSources; if (libraryItem is IHasMediaSources hasMediaSources)
if (hasMediaSources != null)
{ {
mediaSource = await GetMediaSource(libraryItem, info.MediaSourceId, info.LiveStreamId).ConfigureAwait(false); mediaSource = await GetMediaSource(libraryItem, info.MediaSourceId, info.LiveStreamId).ConfigureAwait(false);
@ -1046,6 +1037,24 @@ namespace Emby.Server.Implementations.Session
} }
} }
private static Task SendMessageToSessions<T>(IEnumerable<SessionInfo> sessions, string name, T data, CancellationToken cancellationToken)
{
IEnumerable<Task> GetTasks()
{
var messageId = Guid.NewGuid().ToString("N");
foreach (var session in sessions)
{
var controllers = session.SessionControllers;
foreach (var controller in controllers)
{
yield return controller.SendMessage(name, messageId, data, controllers, cancellationToken);
}
}
}
return Task.WhenAll(GetTasks());
}
public async Task SendPlayCommand(string controllingSessionId, string sessionId, PlayRequest command, CancellationToken cancellationToken) public async Task SendPlayCommand(string controllingSessionId, string sessionId, PlayRequest command, CancellationToken cancellationToken)
{ {
CheckDisposed(); CheckDisposed();
@ -1232,12 +1241,13 @@ namespace Emby.Server.Implementations.Session
return SendMessageToSession(session, "Playstate", command, cancellationToken); return SendMessageToSession(session, "Playstate", command, cancellationToken);
} }
private void AssertCanControl(SessionInfo session, SessionInfo controllingSession) private static void AssertCanControl(SessionInfo session, SessionInfo controllingSession)
{ {
if (session == null) if (session == null)
{ {
throw new ArgumentNullException(nameof(session)); throw new ArgumentNullException(nameof(session));
} }
if (controllingSession == null) if (controllingSession == null)
{ {
throw new ArgumentNullException(nameof(controllingSession)); throw new ArgumentNullException(nameof(controllingSession));
@ -1249,26 +1259,11 @@ namespace Emby.Server.Implementations.Session
/// </summary> /// </summary>
/// <param name="cancellationToken">The cancellation token.</param> /// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
public async Task SendRestartRequiredNotification(CancellationToken cancellationToken) public Task SendRestartRequiredNotification(CancellationToken cancellationToken)
{ {
CheckDisposed(); CheckDisposed();
var sessions = Sessions.ToList(); return SendMessageToSessions(Sessions, "RestartRequired", string.Empty, cancellationToken);
var tasks = sessions.Select(session => Task.Run(async () =>
{
try
{
await SendMessageToSession(session, "RestartRequired", string.Empty, cancellationToken).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.LogError("Error in SendRestartRequiredNotification.", ex);
}
}, cancellationToken)).ToArray();
await Task.WhenAll(tasks).ConfigureAwait(false);
} }
/// <summary> /// <summary>
@ -1280,22 +1275,7 @@ namespace Emby.Server.Implementations.Session
{ {
CheckDisposed(); CheckDisposed();
var sessions = Sessions.ToList(); return SendMessageToSessions(Sessions, "ServerShuttingDown", string.Empty, cancellationToken);
var tasks = sessions.Select(session => Task.Run(async () =>
{
try
{
await SendMessageToSession(session, "ServerShuttingDown", string.Empty, cancellationToken).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.LogError("Error in SendServerShutdownNotification.", ex);
}
}, cancellationToken)).ToArray();
return Task.WhenAll(tasks);
} }
/// <summary> /// <summary>
@ -1309,22 +1289,7 @@ namespace Emby.Server.Implementations.Session
_logger.LogDebug("Beginning SendServerRestartNotification"); _logger.LogDebug("Beginning SendServerRestartNotification");
var sessions = Sessions.ToList(); return SendMessageToSessions(Sessions, "ServerRestarting", string.Empty, cancellationToken);
var tasks = sessions.Select(session => Task.Run(async () =>
{
try
{
await SendMessageToSession(session, "ServerRestarting", string.Empty, cancellationToken).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.LogError("Error in SendServerRestartNotification.", ex);
}
}, cancellationToken)).ToArray();
return Task.WhenAll(tasks);
} }
/// <summary> /// <summary>
@ -1841,64 +1806,23 @@ namespace Emby.Server.Implementations.Session
var data = dataFn(); var data = dataFn();
var tasks = sessions.Select(session => Task.Run(async () => return SendMessageToSessions(sessions, name, data, cancellationToken);
{
try
{
await SendMessageToSession(session, name, data, cancellationToken).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.LogError("Error sending message", ex);
}
}, cancellationToken)).ToArray();
return Task.WhenAll(tasks);
} }
public Task SendMessageToUserSessions<T>(List<Guid> userIds, string name, T data, CancellationToken cancellationToken) public Task SendMessageToUserSessions<T>(List<Guid> userIds, string name, T data, CancellationToken cancellationToken)
{ {
CheckDisposed(); CheckDisposed();
var sessions = Sessions.Where(i => userIds.Any(i.ContainsUser)).ToList(); var sessions = Sessions.Where(i => userIds.Any(i.ContainsUser));
return SendMessageToSessions(sessions, name, data, cancellationToken);
var tasks = sessions.Select(session => Task.Run(async () =>
{
try
{
await SendMessageToSession(session, name, data, cancellationToken).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.LogError("Error sending message", ex);
}
}, cancellationToken)).ToArray();
return Task.WhenAll(tasks);
} }
public Task SendMessageToUserDeviceSessions<T>(string deviceId, string name, T data, CancellationToken cancellationToken) public Task SendMessageToUserDeviceSessions<T>(string deviceId, string name, T data, CancellationToken cancellationToken)
{ {
CheckDisposed(); CheckDisposed();
var sessions = Sessions.Where(i => string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase)).ToList(); var sessions = Sessions.Where(i => string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase));
return SendMessageToSessions(sessions, name, data, cancellationToken);
var tasks = sessions.Select(session => Task.Run(async () =>
{
try
{
await SendMessageToSession(session, name, data, cancellationToken).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.LogError("Error sending message", ex);
}
}, cancellationToken)).ToArray();
return Task.WhenAll(tasks);
} }
public Task SendMessageToUserDeviceAndAdminSessions<T>(string deviceId, string name, T data, CancellationToken cancellationToken) public Task SendMessageToUserDeviceAndAdminSessions<T>(string deviceId, string name, T data, CancellationToken cancellationToken)
@ -1906,23 +1830,8 @@ namespace Emby.Server.Implementations.Session
CheckDisposed(); CheckDisposed();
var sessions = Sessions var sessions = Sessions
.Where(i => string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase) || IsAdminSession(i)) .Where(i => string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase) || IsAdminSession(i));
.ToList(); return SendMessageToSessions(sessions, name, data, cancellationToken);
var tasks = sessions.Select(session => Task.Run(async () =>
{
try
{
await SendMessageToSession(session, name, data, cancellationToken).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.LogError("Error sending message", ex);
}
}, cancellationToken)).ToArray();
return Task.WhenAll(tasks);
} }
private bool IsAdminSession(SessionInfo s) private bool IsAdminSession(SessionInfo s)

@ -2,7 +2,6 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using MediaBrowser.Controller.Playlists;
using MediaBrowser.Controller.TV; using MediaBrowser.Controller.TV;
using MediaBrowser.Model.Querying; using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Serialization;
@ -17,7 +16,6 @@ namespace MediaBrowser.Controller.Entities
public Guid? UserId { get; set; } public Guid? UserId { get; set; }
public static ITVSeriesManager TVSeriesManager; public static ITVSeriesManager TVSeriesManager;
public static IPlaylistManager PlaylistManager;
[IgnoreDataMember] [IgnoreDataMember]
public string CollectionType => ViewType; public string CollectionType => ViewType;
@ -38,6 +36,7 @@ namespace MediaBrowser.Controller.Entities
{ {
list.Add(Id); list.Add(Id);
} }
return list; return list;
} }
@ -65,7 +64,7 @@ namespace MediaBrowser.Controller.Entities
parent = LibraryManager.GetItemById(ParentId) as Folder ?? parent; parent = LibraryManager.GetItemById(ParentId) as Folder ?? parent;
} }
return new UserViewBuilder(UserViewManager, LibraryManager, Logger, UserDataManager, TVSeriesManager, ConfigurationManager, PlaylistManager) return new UserViewBuilder(UserViewManager, LibraryManager, Logger, UserDataManager, TVSeriesManager, ConfigurationManager)
.GetUserItems(parent, this, CollectionType, query); .GetUserItems(parent, this, CollectionType, query);
} }

@ -5,7 +5,6 @@ using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Playlists;
using MediaBrowser.Controller.TV; using MediaBrowser.Controller.TV;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Querying; using MediaBrowser.Model.Querying;
@ -21,9 +20,14 @@ namespace MediaBrowser.Controller.Entities
private readonly IUserDataManager _userDataManager; private readonly IUserDataManager _userDataManager;
private readonly ITVSeriesManager _tvSeriesManager; private readonly ITVSeriesManager _tvSeriesManager;
private readonly IServerConfigurationManager _config; private readonly IServerConfigurationManager _config;
private readonly IPlaylistManager _playlistManager;
public UserViewBuilder(IUserViewManager userViewManager, ILibraryManager libraryManager, ILogger logger, IUserDataManager userDataManager, ITVSeriesManager tvSeriesManager, IServerConfigurationManager config, IPlaylistManager playlistManager) public UserViewBuilder(
IUserViewManager userViewManager,
ILibraryManager libraryManager,
ILogger logger,
IUserDataManager userDataManager,
ITVSeriesManager tvSeriesManager,
IServerConfigurationManager config)
{ {
_userViewManager = userViewManager; _userViewManager = userViewManager;
_libraryManager = libraryManager; _libraryManager = libraryManager;
@ -31,7 +35,6 @@ namespace MediaBrowser.Controller.Entities
_userDataManager = userDataManager; _userDataManager = userDataManager;
_tvSeriesManager = tvSeriesManager; _tvSeriesManager = tvSeriesManager;
_config = config; _config = config;
_playlistManager = playlistManager;
} }
public QueryResult<BaseItem> GetUserItems(Folder queryParent, Folder displayParent, string viewType, InternalItemsQuery query) public QueryResult<BaseItem> GetUserItems(Folder queryParent, Folder displayParent, string viewType, InternalItemsQuery query)
@ -110,6 +113,7 @@ namespace MediaBrowser.Controller.Entities
{ {
return GetResult(GetMediaFolders(user).OfType<Folder>().SelectMany(i => i.GetChildren(user, true)), queryParent, query); return GetResult(GetMediaFolders(user).OfType<Folder>().SelectMany(i => i.GetChildren(user, true)), queryParent, query);
} }
return queryParent.GetItems(query); return queryParent.GetItems(query);
} }
} }

Loading…
Cancel
Save