Пример #1
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
                }
            }
        }
Пример #2
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);
 }
        internal FusionRestEaseClientBuilder(FusionBuilder fusion)
        {
            Fusion = fusion;
            if (Services.Contains(AddedTagDescriptor))
            {
                return;
            }
            // We want above Contains call to run in O(1), so...
            Services.Insert(0, AddedTagDescriptor);

            Fusion.AddReplicator();
            Services.TryAddSingleton <WebSocketChannelProvider.Options>();
            Services.TryAddSingleton <IChannelProvider, WebSocketChannelProvider>();

            // FusionHttpMessageHandler (handles Fusion headers)
            Services.AddHttpClient();
            Services.TryAddEnumerable(ServiceDescriptor.Singleton <
                                          IHttpMessageHandlerBuilderFilter,
                                          FusionHttpMessageHandlerBuilderFilter>());
            Services.TryAddTransient <FusionHttpMessageHandler>();

            // ResponseDeserializer & ReplicaResponseDeserializer
            Services.TryAddTransient <ResponseDeserializer>(c => new JsonResponseDeserializer()
            {
                JsonSerializerSettings = JsonNetSerializer.DefaultSettings
            });
            Services.TryAddTransient <RequestBodySerializer>(c => new JsonRequestBodySerializer()
            {
                JsonSerializerSettings = JsonNetSerializer.DefaultSettings
            });
        }
        public static FusionBuilder AddBlazorUIComponents(this FusionBuilder fusion)
        {
            var services = fusion.Services;

            services.TryAddTransient <CommandRunner>();
            services.TryAddScoped <BlazorModeHelper>();
            return(fusion);
        }
Пример #5
0
        public static FusionBuilder AddRestEaseClient(this FusionBuilder fusion,
                                                      Action <FusionRestEaseClientBuilder> configureClient,
                                                      Action <IServiceProvider, WebSocketChannelProvider.Options>?optionsBuilder = null)
        {
            var restEaseClient = fusion.AddRestEaseClient(optionsBuilder);

            configureClient.Invoke(restEaseClient);
            return(fusion);
        }
Пример #6
0
 internal FusionAuthenticationBuilder(FusionBuilder fusion)
 {
     Fusion = fusion;
     Services.TryAddSingleton <ISessionFactory, SessionFactory>();
     Services.TryAddScoped <ISessionProvider, SessionProvider>();
     Services.TryAddTransient(c => (ISessionResolver)c.GetRequiredService <ISessionProvider>());
     Services.TryAddTransient(c => c.GetRequiredService <ISessionProvider>().Session);
     Services.TryAddScoped <PresenceService>();
 }
Пример #7
0
    public static FusionBuilder AddBlazorUIServices(this FusionBuilder fusion)
    {
        var services = fusion.Services;

        services.TryAddScoped <UICommandRunner>();
        services.TryAddScoped <UICommandFailureList>();
        services.TryAddScoped <BlazorModeHelper>();
        services.TryAddScoped <BlazorCircuitContext>();
        return(fusion);
    }
Пример #8
0
        public static FusionRestEaseClientBuilder AddRestEaseClient(this FusionBuilder fusion,
                                                                    Action <IServiceProvider, WebSocketChannelProvider.Options>?optionsBuilder = null)
        {
            var builder = new FusionRestEaseClientBuilder(fusion);

            if (optionsBuilder != null)
            {
                builder.ConfigureWebSocketChannel(optionsBuilder);
            }
            return(builder);
        }
Пример #9
0
        public static FusionWebSocketServerBuilder AddWebSocketServer(this FusionBuilder fusion,
                                                                      Action <IServiceProvider, WebSocketServer.Options>?optionsBuilder = null)
        {
            var builder = new FusionWebSocketServerBuilder(fusion);

            if (optionsBuilder != null)
            {
                builder.ConfigureWebSocketServer(optionsBuilder);
            }
            return(builder);
        }
Пример #10
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);
    }
Пример #11
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);
    }
Пример #12
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);
    }
Пример #13
0
        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);
        }
        internal FusionWebSocketServerBuilder(FusionBuilder fusion)
        {
            Fusion = fusion;
            if (Services.Contains(AddedTagDescriptor))
            {
                return;
            }
            // We want above Contains call to run in O(1), so...
            Services.Insert(0, AddedTagDescriptor);

            Fusion.AddPublisher();
            Services.TryAddSingleton <WebSocketServer.Options>();
            Services.TryAddSingleton <WebSocketServer>();
            Services.AddMvcCore()
            .AddNewtonsoftJson(
                options => MemberwiseCopier.CopyMembers(
                    JsonNetSerializer.DefaultSettings,
                    options.SerializerSettings));
        }
Пример #15
0
 public static FusionWebServerBuilder AddWebServer(this FusionBuilder fusion,
                                                   Action <IServiceProvider, WebSocketServer.Options>?optionsBuilder = null)
 => new(fusion, optionsBuilder);
Пример #16
0
 public static FusionBuilder AddBackendStatus(this FusionBuilder fusion)
 => fusion.AddBackendStatus <BackendStatus>();