Esempio n. 1
0
 public static FusionBuilder AddBackendStatus <TBackendStatus>(this FusionBuilder fusion)
     where TBackendStatus : class, IBackendStatus
 {
     fusion.AddComputeService <TBackendStatus>();
     fusion.Services.TryAddSingleton <IBackendStatus>(c => c.GetRequiredService <TBackendStatus>());
     return(fusion);
 }
Esempio n. 2
0
        private static void RegisterFusionDb(FusionBuilder fusion)
        {
            var listTypeDefinition = typeof(IKubernetesObject <V1ListMeta>);
            var listTypes          = AppDomain.CurrentDomain.GetAssemblies()
                                     .SelectMany(s => s.GetTypes())
                                     .Where(p => listTypeDefinition.IsAssignableFrom(p))
                                     .ToList();

            var typeDefinition = typeof(IKubernetesObject <V1ObjectMeta>);
            var types          = AppDomain.CurrentDomain.GetAssemblies()
                                 .SelectMany(s => s.GetTypes())
                                 .Where(p => typeDefinition.IsAssignableFrom(p))
                                 .ToList();

            foreach (var listType in listTypes)
            {
                try
                {
                    var selectedSingleType = types.Single(type => listType.Name.Replace("List", "") == type.Name);
                    var serviceType        = typeof(KubernetesRepository <,>);
                    var typeToAdd          = serviceType.MakeGenericType(listType, selectedSingleType);
                    fusion.AddComputeService(typeToAdd);
                }
                catch (Exception)
                {
                    // ignored
                }
            }
        }
Esempio n. 3
0
    public static FusionBuilder AddFusionTime(this FusionBuilder fusion,
                                              Action <IServiceProvider, FusionTime.Options>?optionsBuilder = null)
    {
        var services = fusion.Services;

        services.TryAddSingleton(c => {
            var options = new FusionTime.Options();
            optionsBuilder?.Invoke(c, options);
            return(options);
        });
        fusion.AddComputeService <IFusionTime, Internal.FusionTime>();
        return(fusion);
    }
Esempio n. 4
0
    public static FusionBuilder AddSandboxedKeyValueStore(this FusionBuilder fusion,
                                                          Action <IServiceProvider, SandboxedKeyValueStore.Options>?optionsBuilder = null)
    {
        var services = fusion.Services;

        services.TryAddSingleton(c => {
            var options = new SandboxedKeyValueStore.Options();
            optionsBuilder?.Invoke(c, options);
            return(options);
        });
        fusion.AddComputeService <ISandboxedKeyValueStore, SandboxedKeyValueStore>();
        return(fusion);
    }
Esempio n. 5
0
    public static FusionBuilder AddInMemoryKeyValueStore(this FusionBuilder fusion,
                                                         Action <IServiceProvider, InMemoryKeyValueStore.Options>?optionsBuilder = null)
    {
        var services = fusion.Services;

        services.TryAddSingleton(c => {
            var options = new InMemoryKeyValueStore.Options();
            optionsBuilder?.Invoke(c, options);
            return(options);
        });
        fusion.AddComputeService <IKeyValueStore, InMemoryKeyValueStore>();
        services.AddHostedService(c => (InMemoryKeyValueStore)c.GetRequiredService <IKeyValueStore>());
        return(fusion);
    }
        public static FusionBuilder AddLiveClock(this FusionBuilder fusion,
                                                 Action <IServiceProvider, LiveClock.Options>?liveTimeOptionsBuilder = null)
        {
            var services = fusion.Services;

            services.TryAddSingleton <IPluralize>(new Pluralizer());
            services.TryAddSingleton(c => {
                var options = new LiveClock.Options();
                liveTimeOptionsBuilder?.Invoke(c, options);
                return(options);
            });
            fusion.AddComputeService <ILiveClock, LiveClock>();
            return(fusion);
        }