Esempio n. 1
0
        /// <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();
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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();
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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();
        }
Esempio n. 6
0
        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());
        }
Esempio n. 7
0
        /// <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();
        }