コード例 #1
0
 public ClaptrapAppProvider(
     IClaptrapDesignStore claptrapDesignStore,
     ILoggerFactory loggerFactory)
 {
     _claptrapDesignStore = claptrapDesignStore;
     _loggerFactory       = loggerFactory;
 }
コード例 #2
0
ファイル: Startup.cs プロジェクト: tky753/Newbe.Claptrap
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
            var loggerFactory = new ServiceCollection()
                                .AddLogging(logging => logging.AddConsole())
                                .BuildServiceProvider()
                                .GetRequiredService <ILoggerFactory>();

            var bootstrapperBuilder = new AutofacClaptrapBootstrapperBuilder(loggerFactory);

            _claptrapBootstrapper = (AutofacClaptrapBootstrapper)bootstrapperBuilder
                                    .ScanClaptrapModule()
                                    .AddConfiguration(configuration)
                                    .ScanClaptrapDesigns(new[]
            {
                typeof(IAccount),
                typeof(Account),
                typeof(IAccountBalanceMinion),
                typeof(AccountBalanceMinion),
                typeof(IAccountHistoryBalanceMinion),
                typeof(AccountHistoryBalanceMinion)
            })
                                    .ConfigureClaptrapDesign(x =>
                                                             x.ClaptrapOptions.EventCenterOptions.EventCenterType = EventCenterType.None)
                                    .Build();
            _claptrapDesignStore = _claptrapBootstrapper.DumpDesignStore();
        }
コード例 #3
0
 public ClaptrapCustomizationModule(
     IClaptrapDesignStore claptrapDesignStore,
     ILogger <ClaptrapCustomizationModule> logger)
 {
     _logger = logger;
     _claptrapDesignStore = claptrapDesignStore;
 }
コード例 #4
0
 public AutofacClaptrapBootstrapper(
     ContainerBuilder builder,
     IEnumerable <Module> modules,
     IClaptrapDesignStore claptrapDesignStore)
 {
     _modules             = modules;
     _builder             = builder;
     _claptrapDesignStore = claptrapDesignStore;
 }
コード例 #5
0
 public MQSenderManager(
     IClaptrapDesignStore claptrapDesignStore,
     IConnectionManager connectionManager,
     MqSender.Factory mqSenderFactory)
 {
     _claptrapDesignStore = claptrapDesignStore;
     _connectionManager   = connectionManager;
     _mqSenderFactory     = mqSenderFactory;
 }
コード例 #6
0
 public AutofacClaptrapBootstrapper(
     Type[] providers,
     IEnumerable <Module> modules,
     IClaptrapDesignStore claptrapDesignStore)
 {
     _modules            = modules;
     _providers          = providers;
     ClaptrapDesignStore = claptrapDesignStore;
     Design.ClaptrapDesignStore.Instance = claptrapDesignStore;
 }
コード例 #7
0
 public DaprMinionActivator(
     ILogger <DaprMinionActivator> logger,
     IActorProxyFactory actorProxyFactory,
     IClaptrapDesignStore claptrapDesignStore)
 {
     _logger            = logger;
     _actorProxyFactory = actorProxyFactory;
     _minionLookUp      = claptrapDesignStore.Where(x => x.ClaptrapMasterDesign != null)
                          .ToLookup(x => x.ClaptrapMasterDesign !.ClaptrapTypeCode)
                          .ToDictionary(x => x.Key, x => x.ToArray());
 }
コード例 #8
0
 public DaprEventCenter(
     IClaptrapDesignStore designStore,
     IMinionLocator minionLocator,
     ILogger <DaprEventCenter> logger)
 {
     _minionLocator       = minionLocator;
     _logger              = logger;
     _minionDesignsLookup = designStore
                            .Where(x => x.IsMinion())
                            .ToLookup(x => x.ClaptrapMasterDesign !.ClaptrapTypeCode);
 }
コード例 #9
0
 public OrleansMinionActivator(
     ILogger <OrleansMinionActivator> logger,
     IGrainFactory grainFactory,
     IClaptrapDesignStore claptrapDesignStore)
 {
     _logger       = logger;
     _grainFactory = grainFactory;
     _minionLookUp = claptrapDesignStore.Where(x => x.ClaptrapMasterDesign != null)
                     .ToLookup(x => x.ClaptrapMasterDesign.ClaptrapTypeCode)
                     .ToDictionary(x => x.Key, x => x.ToArray());
 }
コード例 #10
0
 public DesignBaseEventHandlerFactory(
     IClaptrapIdentity identity,
     ILifetimeScope lifetimeScope,
     IClaptrapDesignStore claptrapDesignStore,
     ILogger <DesignBaseEventHandlerFactory> logger)
 {
     _lifetimeScope       = lifetimeScope;
     _claptrapDesignStore = claptrapDesignStore;
     _logger  = logger;
     Identity = identity;
 }
コード例 #11
0
 public ClaptrapHandler(IActorProxyFactory actorProxyFactory,
                        IClaptrapDesignStore claptrapDesignStore,
                        IEventSerializer <EventJsonModel> eventSerializer,
                        IEventStringSerializer eventStringSerializer)
 {
     _actorProxyFactory     = actorProxyFactory;
     _eventSerializer       = eventSerializer;
     _eventStringSerializer = eventStringSerializer;
     _minionTypeCodes       = claptrapDesignStore.Where(x => x.IsMinion())
                              .GroupBy(x => x.ClaptrapMasterDesign !.ClaptrapTypeCode)
                              .ToDictionary(x => x.Key, x => x.Select(a => a.ClaptrapTypeCode));
 }
コード例 #12
0
        public string Format(IClaptrapDesignStore claptrapDesignStore)
        {
            var designs = claptrapDesignStore
                          .OrderBy(x => x.MasterOfSelfTypeCode())
                          .ThenBy(x => x.IsMinion())
                          .ToArray();
            var sb = new StringBuilder();

            sb.AppendLine("# claptrap");
            foreach (var design in designs)
            {
                sb.AppendLine(OneDesign(design));
            }

            sb.AppendLine("# events");

            var eventDefs = designs.SelectMany(design => design.EventHandlerDesigns
                                               .Select(eventHandlerDesign => new
            {
                design,
                eventHandlerDesign,
                masterClaptrapTypeCode = design.ClaptrapMasterDesign != null
                            ? design.ClaptrapMasterDesign.ClaptrapTypeCode
                            : design.ClaptrapTypeCode,
                eventTypeCode = eventHandlerDesign.Key
            }))
                            .GroupBy(x => x.masterClaptrapTypeCode + x.eventTypeCode)
                            .Select(x =>
            {
                var first = x.First();
                return(new EventDef
                {
                    EventTypeCode = first.eventHandlerDesign.Key,
                    MasterClaptrapTypeCode = first.masterClaptrapTypeCode,
                    EventHandlerDefs = x.Select(a => new EventHandlerDef
                    {
                        Handler = a.eventHandlerDesign.Value.EventHandlerType.Name,
                        ClaptrapTypeCode = a.design.ClaptrapTypeCode,
                    })
                                       .ToArray(),
                });
            });

            foreach (var eventDef in eventDefs)
            {
                sb.AppendLine(OneEvent(eventDef));
            }

            var re = sb.ToString();

            return(re);
        }
コード例 #13
0
 public MinionLocator(
     IClaptrapDesignStore designStore,
     IGrainFactory grainFactory,
     GrainMinionProxy.Factory grainMinionProxyFactory,
     ILogger <OrleansEventCenter> logger)
 {
     _grainFactory            = grainFactory;
     _grainMinionProxyFactory = grainMinionProxyFactory;
     _logger           = logger;
     _minionDesignsDic = designStore
                         .Where(x => x.IsMinion())
                         .ToDictionary(x => x.ClaptrapTypeCode);
 }
コード例 #14
0
 public ClaptrapFactory(
     ILogger <ClaptrapFactory> logger,
     IClaptrapDesignStore claptrapDesignStore,
     ILifetimeScope lifetimeScope,
     IL l,
     IEnumerable <IClaptrapModuleProvider> claptrapModuleProviders)
 {
     _logger = logger;
     _claptrapDesignStore = claptrapDesignStore;
     _lifetimeScope       = lifetimeScope;
     _l = l;
     _claptrapModuleProviders = claptrapModuleProviders;
 }
コード例 #15
0
 public void Configure(IClaptrapDesignStore designStore)
 {
     _designStore = designStore;
     AddConfig(
         x => x.ClaptrapOptions.EventCenterOptions == null !,
         x => x.ClaptrapOptions.EventCenterOptions = new EventCenterOptions
     {
         EventCenterType = EventCenterType.OrleansClient,
     });
     AddConfig(
         x => x.ClaptrapOptions.EventCenterOptions.EventCenterType == EventCenterType.None,
         x => x.ClaptrapOptions.EventCenterOptions.EventCenterType = EventCenterType.OrleansClient);
 }
コード例 #16
0
 public void Configure(IClaptrapDesignStore designStore)
 {
     _designStore = designStore;
     AddConfig(
         x => x.ClaptrapOptions.StateSavingOptions == null !,
         x => x.ClaptrapOptions.StateSavingOptions = new StateSavingOptions
     {
         SavingWindowTime         = TimeSpan.FromSeconds(10),
         SaveWhenDeactivateAsync  = true,
         SavingWindowVersionLimit = 1000,
     });
     AddConfig(
         x => x.ClaptrapOptions.MinionActivationOptions == null !,
         x => x.ClaptrapOptions.MinionActivationOptions = new MinionActivationOptions
     {
         ActivateMinionsAtMasterStart = false
     });
     AddConfig(
         x => x.ClaptrapOptions.EventLoadingOptions == null !,
         x => x.ClaptrapOptions.EventLoadingOptions = new EventLoadingOptions
     {
         LoadingCountInOneBatch = 1000
     });
     AddConfig(
         x => x.ClaptrapOptions.StateRecoveryOptions == null !,
         x => x.ClaptrapOptions.StateRecoveryOptions = new StateRecoveryOptions
     {
         StateRecoveryStrategy = StateRecoveryStrategy.FromStore
     });
     AddConfig(
         x => x.InitialStateDataFactoryType == null,
         x => x.InitialStateDataFactoryType = typeof(DefaultInitialStateDataFactory));
     AddConfig(
         x => x.StateHolderFactoryType == null,
         x => x.StateHolderFactoryType = typeof(NoChangeStateHolderFactory));
     AddConfig(
         x => x.EventHandlerFactoryFactoryType == null,
         x => x.EventHandlerFactoryFactoryType = typeof(EventHandlerFactoryFactory));
     AddConfig(
         x => x.EventNotifierFactoryType == null,
         x => x.EventNotifierFactoryType = typeof(CompoundEventNotifierFactory));
     AddConfig(
         x => true,
         DisplayInfoFiller.FillDisplayInfo);
     AddConfig(
         x => x.ClaptrapOptions.EventCenterOptions == null !,
         x => x.ClaptrapOptions.EventCenterOptions = new EventCenterOptions
     {
         EventCenterType = EventCenterType.None,
     });
 }
コード例 #17
0
        public static ActorRuntimeOptions AddClaptrapDesign(this ActorRuntimeOptions options,
                                                            IClaptrapDesignStore store)
        {
            foreach (var claptrapDesign in store)
            {
                var actorTypeInformation =
                    ActorTypeInformation.Get(claptrapDesign.ClaptrapBoxImplementationType);
                options.Actors.Add(
                    new ActorRegistration(
                        actorTypeInformation));
            }

            return(options);
        }
コード例 #18
0
        private IClaptrapDesignStore ValidateStore(
            IClaptrapDesignStore claptrapDesignStore,
            IClaptrapDesignStoreValidator validator)
        {
            _logger.LogDebug(_l.Value[LK.start_to_validate_all_design_in_claptrap_design_store]);
            var(isOk, errorMessage) = validator.Validate(claptrapDesignStore);
            if (!isOk)
            {
                throw new ClaptrapDesignStoreValidationFailException(errorMessage);
            }

            _logger.LogInformation(_l.Value[LK.all_design_validated_ok]);
            return(claptrapDesignStore);
        }
コード例 #19
0
 public void Configure(IClaptrapDesignStore designStore)
 {
     designStore.AddOrReplaceFactory(SagaCodes.ClaptrapTypeCode, (identity, design) =>
     {
         var sagaClaptrapIdentity = (ISagaClaptrapIdentity)identity;
         var userDataType         = sagaClaptrapIdentity.UserDataType;
         var stateDataType        = typeof(SagaStateData <>);
         var finalType            = stateDataType.MakeGenericType(userDataType);
         var newDesign            = new ClaptrapDesign(design)
         {
             StateDataType = finalType,
         };
         return(newDesign);
     });
 }
コード例 #20
0
 public MQSubscriberManager(
     ILogger <MQSubscriberManager> logger,
     IConnectionManager connectionManager,
     IEventStringSerializer eventStringSerializer,
     IClaptrapDesignStore claptrapDesignStore,
     IMessageSerializer messageSerializer,
     IMinionLocator minionLocator)
 {
     _logger                = logger;
     _connectionManager     = connectionManager;
     _eventStringSerializer = eventStringSerializer;
     _claptrapDesignStore   = claptrapDesignStore;
     _messageSerializer     = messageSerializer;
     _minionLocator         = minionLocator;
 }
コード例 #21
0
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
            var loggerFactory = new ServiceCollection()
                                .AddLogging(logging => logging.AddConsole())
                                .BuildServiceProvider()
                                .GetRequiredService <ILoggerFactory>();

            var bootstrapperBuilder = new AutofacClaptrapBootstrapperBuilder(loggerFactory);

            _claptrapBootstrapper = (AutofacClaptrapBootstrapper)bootstrapperBuilder
                                    .ScanClaptrapModule()
                                    .AddConfiguration(configuration)
                                    .ScanClaptrapDesigns(new[] { typeof(SeatActor).Assembly })
                                    .Build();
            _claptrapDesignStore = _claptrapBootstrapper.DumpDesignStore();
        }
コード例 #22
0
        private IClaptrapDesignStore ConfigStore(
            IClaptrapDesignStore claptrapDesignStore,
            IEnumerable <IClaptrapDesignStoreConfigurator> configurators)
        {
            _logger.LogInformation(_l.Value[LK.claptrap_design_store_created__start_to_configure_it]);
            _logger.LogDebug(_l.Value[LK.all_designs____designs_],
                             JsonConvert.SerializeObject(claptrapDesignStore.ToArray()));

            foreach (var configurator in configurators)
            {
                _logger.LogDebug(_l.Value[LK.start_to_configure_claptrap_design_store_by__configurator_],
                                 configurator);
                configurator.Configure(claptrapDesignStore);
            }

            _logger.LogInformation(_l.Value[LK.found__actorCount__claptrap_designs],
                                   claptrapDesignStore.Count());
            _logger.LogDebug(_l.Value[LK.all_designs_after_configuration___designs_],
                             JsonConvert.SerializeObject(claptrapDesignStore.ToArray()));
            return(claptrapDesignStore);
        }
コード例 #23
0
        private (ILifetimeScope scope, IClaptrapAppProvider[] appProviders) CreateAppProviders(
            ILifetimeScope container,
            IClaptrapDesignStore claptrapDesignStore)
        {
            var scope = container.BeginLifetimeScope(innerBuilder =>
            {
                var providerTypes = Options.ModuleTypes
                                    .Where(x => x.IsClass && !x.IsAbstract)
                                    .Where(x => x.GetInterface(typeof(IClaptrapAppProvider).FullName) != null)
                                    .ToArray();
                _logger.LogDebug("Found type {providerTypes} as {name}",
                                 providerTypes,
                                 nameof(IClaptrapAppProvider));
                innerBuilder.RegisterTypes(providerTypes)
                .As <IClaptrapAppProvider>()
                .InstancePerLifetimeScope();
                innerBuilder.RegisterInstance(claptrapDesignStore);
            });
            var appProviders = scope.Resolve <IEnumerable <IClaptrapAppProvider> >();

            return(scope, appProviders.ToArray());
        }
コード例 #24
0
 public ClaptrapModuleProvider(
     IClaptrapDesignStore claptrapDesignStore)
 {
     _claptrapDesignStore = claptrapDesignStore;
 }
コード例 #25
0
 public DefaultInitialStateDataFactory(
     IClaptrapDesignStore claptrapDesignStore)
 {
     _claptrapDesignStore = claptrapDesignStore;
 }
コード例 #26
0
        public string Format(IClaptrapDesignStore claptrapDesignStore)
        {
            var re = JsonConvert.SerializeObject(claptrapDesignStore, Formatting.Indented);

            return(re);
        }
コード例 #27
0
 public void Configure(IClaptrapDesignStore designStore)
 {
     _action.Invoke(designStore);
 }
コード例 #28
0
 public ClaptrapTypeCodeFactory(
     IClaptrapDesignStore claptrapDesignStore)
 {
     _claptrapDesignStore = claptrapDesignStore;
 }
コード例 #29
0
 public JsonEventDataStringSerializer(
     IClaptrapDesignStore claptrapDesignStore)
 {
     _claptrapDesignStore = claptrapDesignStore;
 }