/// <inheritdoc/> protected override void RegisterServices() { // Register an image encoder bool useSkiaEncoder = SkiaEncoder.IsNativeLibAvailable(); Type imageEncoderType = useSkiaEncoder ? typeof(SkiaEncoder) : typeof(NullImageEncoder); ServiceCollection.AddSingleton(typeof(IImageEncoder), imageEncoderType); // Log a warning if the Skia encoder could not be used if (!useSkiaEncoder) { Logger.LogWarning($"Skia not available. Will fallback to {nameof(NullImageEncoder)}."); } // TODO: Set up scoping and use AddDbContextPool, // can't register as Transient since tracking transient in GC is funky // serviceCollection.AddDbContext<JellyfinDb>( // options => options // .UseSqlite($"Filename={Path.Combine(ApplicationPaths.DataPath, "jellyfin.db")}"), // ServiceLifetime.Transient); ServiceCollection.AddEventServices(); ServiceCollection.AddSingleton <IEventManager, EventManager>(); ServiceCollection.AddSingleton <JellyfinDbProvider>(); ServiceCollection.AddSingleton <IActivityManager, ActivityManager>(); ServiceCollection.AddSingleton <IUserManager, UserManager>(); ServiceCollection.AddSingleton <IDisplayPreferencesManager, DisplayPreferencesManager>(); base.RegisterServices(); }
/// <inheritdoc/> protected override void RegisterServices(IServiceCollection serviceCollection) { // Register an image encoder bool useSkiaEncoder = SkiaEncoder.IsNativeLibAvailable(); Type imageEncoderType = useSkiaEncoder ? typeof(SkiaEncoder) : typeof(NullImageEncoder); serviceCollection.AddSingleton(typeof(IImageEncoder), imageEncoderType); // Log a warning if the Skia encoder could not be used if (!useSkiaEncoder) { Logger.LogWarning($"Skia not available. Will fallback to {nameof(NullImageEncoder)}."); } // TODO: Set up scoping and use AddDbContextPool serviceCollection.AddDbContext <JellyfinDb>( options => options .UseSqlite($"Filename={Path.Combine(ApplicationPaths.DataPath, "jellyfin.db")}") .UseLazyLoadingProxies(), ServiceLifetime.Transient); serviceCollection.AddSingleton <JellyfinDbProvider>(); serviceCollection.AddSingleton <IActivityManager, ActivityManager>(); serviceCollection.AddSingleton <IUserManager, UserManager>(); base.RegisterServices(serviceCollection); }
/// <inheritdoc/> protected override void RegisterServices() { // Register an image encoder bool useSkiaEncoder = SkiaEncoder.IsNativeLibAvailable(); Type imageEncoderType = useSkiaEncoder ? typeof(SkiaEncoder) : typeof(NullImageEncoder); ServiceCollection.AddSingleton(typeof(IImageEncoder), imageEncoderType); // Log a warning if the Skia encoder could not be used if (!useSkiaEncoder) { Logger.LogWarning($"Skia not available. Will fallback to {nameof(NullImageEncoder)}."); } ServiceCollection.AddDbContextPool <JellyfinDb>( options => options.UseSqlite($"Filename={Path.Combine(ApplicationPaths.DataPath, "jellyfin.db")}")); ServiceCollection.AddEventServices(); ServiceCollection.AddSingleton <IEventManager, EventManager>(); ServiceCollection.AddSingleton <JellyfinDbProvider>(); ServiceCollection.AddSingleton <IActivityManager, ActivityManager>(); ServiceCollection.AddSingleton <IUserManager, UserManager>(); ServiceCollection.AddSingleton <IDisplayPreferencesManager, DisplayPreferencesManager>(); base.RegisterServices(); }
/// <inheritdoc/> protected override void RegisterServices(IServiceCollection serviceCollection) { // Register an image encoder bool useSkiaEncoder = SkiaEncoder.IsNativeLibAvailable(); Type imageEncoderType = useSkiaEncoder ? typeof(SkiaEncoder) : typeof(NullImageEncoder); serviceCollection.AddSingleton(typeof(IImageEncoder), imageEncoderType); // Log a warning if the Skia encoder could not be used if (!useSkiaEncoder) { Logger.LogWarning($"Skia not available. Will fallback to {nameof(NullImageEncoder)}."); } base.RegisterServices(serviceCollection); }
/// <inheritdoc/> protected override void RegisterServices() { // Register an image encoder bool useSkiaEncoder = SkiaEncoder.IsNativeLibAvailable(); Type imageEncoderType = useSkiaEncoder ? typeof(SkiaEncoder) : typeof(NullImageEncoder); ServiceCollection.AddSingleton(typeof(IImageEncoder), imageEncoderType); // Log a warning if the Skia encoder could not be used if (!useSkiaEncoder) { Logger.LogWarning($"Skia not available. Will fallback to {nameof(NullImageEncoder)}."); } ServiceCollection.AddDbContextPool <JellyfinDb>( options => options .UseLoggerFactory(LoggerFactory) .UseSqlite($"Filename={Path.Combine(ApplicationPaths.DataPath, "jellyfin.db")}")); ServiceCollection.AddEventServices(); ServiceCollection.AddSingleton <IBaseItemManager, BaseItemManager>(); ServiceCollection.AddSingleton <IEventManager, EventManager>(); ServiceCollection.AddSingleton <JellyfinDbProvider>(); ServiceCollection.AddSingleton <IActivityManager, ActivityManager>(); ServiceCollection.AddSingleton <IUserManager, UserManager>(); ServiceCollection.AddSingleton <IDisplayPreferencesManager, DisplayPreferencesManager>(); ServiceCollection.AddSingleton <IDeviceManager, DeviceManager>(); // TODO search the assemblies instead of adding them manually? ServiceCollection.AddSingleton <IWebSocketListener, SessionWebSocketListener>(); ServiceCollection.AddSingleton <IWebSocketListener, ActivityLogWebSocketListener>(); ServiceCollection.AddSingleton <IWebSocketListener, ScheduledTasksWebSocketListener>(); ServiceCollection.AddSingleton <IWebSocketListener, SessionInfoWebSocketListener>(); ServiceCollection.AddSingleton <IAuthorizationContext, AuthorizationContext>(); ServiceCollection.AddScoped <IAuthenticationManager, AuthenticationManager>(); base.RegisterServices(); }
private static IImageEncoder GetImageEncoder( IApplicationPaths appPaths, ILocalizationManager localizationManager) { try { // Test if the native lib is available SkiaEncoder.TestSkia(); return(new SkiaEncoder( _loggerFactory.CreateLogger <SkiaEncoder>(), appPaths, localizationManager)); } catch (Exception ex) { _logger.LogWarning(ex, "Skia not available. Will fallback to NullIMageEncoder."); } return(new NullImageEncoder()); }
/// <inheritdoc/> protected override void RegisterServices() { // Register an image encoder bool useSkiaEncoder = SkiaEncoder.IsNativeLibAvailable(); Type imageEncoderType = useSkiaEncoder ? typeof(SkiaEncoder) : typeof(NullImageEncoder); ServiceCollection.AddSingleton(typeof(IImageEncoder), imageEncoderType); // Log a warning if the Skia encoder could not be used if (!useSkiaEncoder) { Logger.LogWarning($"Skia not available. Will fallback to {nameof(NullImageEncoder)}."); } ServiceCollection.AddDbContextPool <JellyfinDb>( options => options.UseSqlite($"Filename={Path.Combine(ApplicationPaths.DataPath, "jellyfin.db")}")); ServiceCollection.AddEventServices(); ServiceCollection.AddSingleton <IBaseItemManager, BaseItemManager>(); ServiceCollection.AddSingleton <IEventManager, EventManager>(); ServiceCollection.AddSingleton <JellyfinDbProvider>(); ServiceCollection.AddSingleton <IActivityManager, ActivityManager>(); ServiceCollection.AddSingleton <IUserManager, UserManager>(); ServiceCollection.AddSingleton <IDisplayPreferencesManager, DisplayPreferencesManager>(); ServiceCollection.AddScoped <IWebSocketListener, SessionWebSocketListener>(); ServiceCollection.AddScoped <IWebSocketListener, ActivityLogWebSocketListener>(); ServiceCollection.AddScoped <IWebSocketListener, ScheduledTasksWebSocketListener>(); ServiceCollection.AddScoped <IWebSocketListener, SessionInfoWebSocketListener>(); // TODO fix circular dependency on IWebSocketManager ServiceCollection.AddScoped(serviceProvider => new Lazy <IEnumerable <IWebSocketListener> >(serviceProvider.GetRequiredService <IEnumerable <IWebSocketListener> >)); base.RegisterServices(); }