/// <summary>
        /// Initializes a new instance of the <see cref="WorkflowBase{TStatus, TActivity, TTask, TActor}"/> class.
        /// </summary>
        /// <param name="versionKey">Workflow instance version key</param>
        /// <param name="statusObject">The loan application.</param>
        /// <param name="actorProvider">The actor provider.</param>
        protected WorkflowBase(string versionKey, IStateObject <TStatus> statusObject, IActorProvider <TActor> actorProvider)
        {
            versionKey
            .ThrowIfNull("versionKey");

            // Init object version if it is empty
            if (String.IsNullOrWhiteSpace(statusObject.WorkflowVersionKey))
            {
                statusObject.WorkflowVersionKey = versionKey;
            }

            if (!versionKey.Equals(statusObject.WorkflowVersionKey))
            {
                throw new WrongWorkflowVersionException(statusObject.WorkflowVersionKey, versionKey);
            }

            VersionKey     = versionKey;
            StatusObject   = statusObject;
            _actorProvider = actorProvider;

            Machine = new StateMachine <TStatus, TActivity>(
                () => StatusObject.Status,
                s => StatusObject.Status = s);

            TaskRestrictionsByActor =
                new Dictionary <TActor, RestrictionList <TStatus, TTask> >();

            _triggersWithParameters =
                new Dictionary <string, StateMachine <TStatus, TActivity> .TriggerWithParameters>();

            Configure();

            Machine
            .OnTransitioned(LogTransition);
        }
 public PrivateApiController(
     IActorProvider <SimulationActor> simulationActorProvider,
     ILogger <PublicApiController> logger)
 {
     this.simulationActorRef = simulationActorProvider.Get();
     this.logger             = logger;
 }
Beispiel #3
0
 public EventProcessor(
     IActorProvider <ProcessingCoordinatorActor> processingCoordinatorActorProvider,
     IMapper mapper)
 {
     this.processingCoordinatorActor = processingCoordinatorActorProvider.Get();
     this.mapper = mapper;
 }
 protected SimpleAuditDbContext(DbContextOptions options, IActorProvider <T> actorProvider, IClock clock)
     : base(options)
 {
     _auditor       = new Auditor(ChangeTracker);
     _actorProvider = actorProvider;
     _clock         = clock;
 }
Beispiel #5
0
 public DataManager(IActorProvider actorProvider, IUserProvider userProvider, IFilmProvider filmProvider, IDirectorProvider directorProvider, IPrizeProvider prizeProvider)
 {
     this._actorProvider    = actorProvider;
     this._userProvider     = userProvider;
     this._filmProvider     = filmProvider;
     this._directorProvider = directorProvider;
     this._prizeProvider    = prizeProvider;
 }
 public ActorUnderTest(
     IActorProvider <HttpRequestActor> httpRequestActorProvider,
     IOptions <ServiceSettings> serviceSettings,
     TestProbe parentTestProbe)
     : base(httpRequestActorProvider, serviceSettings)
 {
     this.parentTestProbe = parentTestProbe;
 }
        public CompetitionOpenedStateMachineConfigurator(IActorProvider actorProvider)
        {
            if (actorProvider == null)
            {
                throw new ArgumentNullException(nameof(actorProvider));
            }

            _actorProvider = actorProvider;
        }
        public WarehouseSendActor(
            IActorProvider <HttpRequestActor> httpRequestActorProvider,
            IOptions <ServiceSettings> serviceSettings)
        {
            this.httpRequestActor = httpRequestActorProvider.Get();
            this.serviceSettings  = serviceSettings.Value;

            Receive <Models.WarehouseOrderModel>(Handle);
        }
Beispiel #9
0
 public PrivateApiController(
     IActorProvider <PrinterActor> printerActorProvider,
     ILogger <PrivateApiController> logger,
     IMapper mapper)
 {
     this.printerActorRef = printerActorProvider.Get();
     this.logger          = logger;
     this.mapper          = mapper;
 }
 public ExternalOrderProcessor(
     IActorProvider <HttpRequestActor> httpRequestActorProvider,
     IOptions <ServiceSettings> serviceSettings,
     IMapper mapper)
 {
     this.httpRequestActor = httpRequestActorProvider.Get();
     this.serviceSettings  = serviceSettings.Value;
     this.mapper           = mapper;
 }
Beispiel #11
0
 public PublicApiController(
     IActorProvider <OrderActor> orderActorProvider,
     ILogger <PublicApiController> logger,
     IMapper mapper)
 {
     this.orderActorRef = orderActorProvider.Get();
     this.logger        = logger;
     this.mapper        = mapper;
 }
Beispiel #12
0
        public static IActor ExtractActor(object obj)
        {
            IActorProvider provider = obj as IActorProvider;

            if (provider == null)
            {
                return(null);
            }
            return(provider.GetActor());
        }
Beispiel #13
0
        public ActorsModule(IActorProvider actorProvider)
        {
            this.Get("/actors", async(req, res, routeData) =>
            {
                var people = actorProvider.Get();
                await res.AsJson(people);
            });

            this.Get("/actors/{id:int}", async(req, res, routeData) =>
            {
                var person = actorProvider.Get(routeData.As <int>("id"));
                await res.Negotiate(person);
            });

            this.Put("/actors/{id:int}", async(req, res, routeData) =>
            {
                var result = req.BindAndValidate <Actor>();

                if (!result.ValidationResult.IsValid)
                {
                    res.StatusCode = 422;
                    await res.Negotiate(result.ValidationResult.GetFormattedErrors());
                    return;
                }

                //Update the user in your database

                res.StatusCode = 204;
            });

            this.Post("/actors", async(req, res, routeData) =>
            {
                var result = req.BindAndValidate <Actor>();

                if (!result.ValidationResult.IsValid)
                {
                    res.StatusCode = 422;
                    await res.Negotiate(result.ValidationResult.GetFormattedErrors());
                    return;
                }

                //Save the user in your database

                res.StatusCode = 201;
                await res.Negotiate(result.Data);
            });

            this.Get("/actors/download", async(request, response, routeData) =>
            {
                using (var video = new FileStream("earth.mp4", FileMode.Open)) //24406813
                {
                    await response.FromStream(video, "video/mp4");
                }
            });
        }
        public ProcessingUnitActor(
            IActorProvider <HttpRequestActor> httpRequestActorProvider,
            IOptions <ServiceSettings> serviceSettings,
            IMapper mapper)
        {
            this.httpRequestActor = httpRequestActorProvider.Get();
            this.serviceSettings  = serviceSettings.Value;
            this.mapper           = mapper;

            Receive <StartProcessing>(Handle);
        }
Beispiel #15
0
    private void MoveAsRay(float delta)
    {
        Transform t       = GlobalTransform;
        Vector3   origin  = t.origin;
        Vector3   forward = -t.basis.z;
        Vector3   dest    = origin;

        dest += (forward * _def.launchSpeed) * delta;
        uint mask = uint.MaxValue;
        PhysicsDirectSpaceState space = GetWorld().DirectSpaceState;

        Godot.Collections.Array arr = null;
        if (_ignoreBody != null)
        {
            arr = new Godot.Collections.Array();
            arr.Add(_ignoreBody);
        }
        Dictionary hitResult = space.IntersectRay(origin, dest, arr, mask);

        if (hitResult.Keys.Count > 0)
        {
            _touch.damage    = _def.damage;
            _touch.teamId    = 0;
            _touch.touchType = TouchType.Bullet;
            IActorProvider actorProvider = hitResult["collider"] as IActorProvider;
            if (actorProvider != null)
            {
                IActor actor = actorProvider.GetActor();
                if (actor != null)
                {
                    TouchResponseData response = actor.ActorTouch(_touch);
                    Console.WriteLine($"Prj hit actor for {response.damageTaken}");
                }
                else
                {
                    Console.WriteLine($"Prj hit provider but actor is null!");
                }
            }
            else
            {
                //Node hitObj = (hitResult["collider"] as Node);
                //Console.WriteLine($"Prj hit non-actor node {hitObj.Name}");
            }
            Vector3  gfxOrigin = (Vector3)hitResult["position"];
            GFXQuick gfx       = Main.i.factory.SpawnGFX(GameFactory.Path_GFXImpact);
            gfx.Spawn(gfxOrigin);
            Die();
            return;
        }
        t.origin        = dest;
        GlobalTransform = t;
    }
 public ActorTask(
     IJsonSerializationService jsonSerializationService,
     IActorProvider <TActor> fundingActorProvider,
     IKeyValuePersistenceService keyValuePersistenceService,
     IFundingOutputCondenserService <TActorReturn> fundingOutputCondenserService,
     ILogger logger,
     string actorName)
 {
     _jsonSerializationService      = jsonSerializationService;
     _fundingActorProvider          = fundingActorProvider;
     _keyValuePersistenceService    = keyValuePersistenceService;
     _fundingOutputCondenserService = fundingOutputCondenserService;
     _logger    = logger;
     _actorName = actorName;
 }
Beispiel #17
0
 public FM70ActorTask(
     IJsonSerializationService jsonSerializationService,
     IActorProvider <IFM70Actor> fundingActorProvider,
     IFilePersistanceService filePersistanceService,
     IFundingOutputCondenserService <FM70Global> fundingOutputCondenserService,
     ILogger logger,
     string actorName)
 {
     _jsonSerializationService      = jsonSerializationService;
     _fundingActorProvider          = fundingActorProvider;
     _filePersistanceService        = filePersistanceService;
     _fundingOutputCondenserService = fundingOutputCondenserService;
     _logger    = logger;
     _actorName = actorName;
 }
        public CompetitionOnModerationStateMachineConfigurator(IUserPrincipalProvider userPrincipalProvider,
                                                               IActorProvider actorProvider)
        {
            if (userPrincipalProvider == null)
            {
                throw new ArgumentNullException(nameof(userPrincipalProvider));
            }
            if (actorProvider == null)
            {
                throw new ArgumentNullException(nameof(actorProvider));
            }

            _userPrincipalProvider = userPrincipalProvider;
            _actorProvider         = actorProvider;
        }
Beispiel #19
0
        private PrivateApiControllerSpec()
        {
            progProductActor = Kit.CreateProgrammableActor <ProductActor>("product-actor");
            IActorProvider <ProductActor> productActorProvider = An <IActorProvider <ProductActor> >();

            productActorProvider.Get().Returns(progProductActor.TestProbe);

            var config = new MapperConfiguration(cfg => cfg.AddProfile(new ProductMapping()));

            config.AssertConfigurationIsValid();

            Subject = new PrivateApiController(
                productActorProvider,
                An <ILogger <PrivateApiController> >(),
                config.CreateMapper());
        }
Beispiel #20
0
        private PublicApiControllerSpec()
        {
            progOrderActor = Kit.CreateProgrammableActor <OrderActor>("order-actor");
            IActorProvider <OrderActor> orderActorProvider = An <IActorProvider <OrderActor> >();

            orderActorProvider.Get().Returns(progOrderActor.TestProbe);

            var config = new MapperConfiguration(cfg => cfg.AddProfile(new OrderMapping()));

            config.AssertConfigurationIsValid();

            Subject = new PublicApiController(
                orderActorProvider,
                An <ILogger <PublicApiController> >(),
                config.CreateMapper());
        }
 private ALBActorTask NewTask(
     IJsonSerializationService jsonSerializationService = null,
     IActorProvider <IALBActor> fundingActorProvider    = null,
     IFilePersistanceService filePersistanceService     = null,
     IFundingOutputCondenserService <ALBGlobal> fundingOutputCondenserService = null,
     ILogger logger   = null,
     string actorName = null)
 {
     return(new ALBActorTask(
                jsonSerializationService,
                fundingActorProvider,
                filePersistanceService,
                fundingOutputCondenserService,
                logger,
                actorName));
 }
Beispiel #22
0
        public ActorsModule(IActorProvider actorProvider)
        {
            this.Get("/actors", async(req, res, routeData) =>
            {
                var people = actorProvider.Get();
                await res.AsJson(people);
            });

            this.Get("/actors/{id:int}", async(req, res, routeData) =>
            {
                var person = actorProvider.Get(routeData.AsInt("id"));
                await res.Negotiate(person);
            });

            this.Put("/actors/{id:int}", async(req, res, routeData) =>
            {
                var result = req.BindAndValidate <Actor>();

                if (!result.ValidationResult.IsValid)
                {
                    res.StatusCode = 422;
                    await res.Negotiate(result.ValidationResult.GetFormattedErrors());
                    return;
                }

                //Update the user in your database

                res.StatusCode = 204;
            });

            this.Post("/actors", async(req, res, routeData) =>
            {
                var result = req.BindAndValidate <Actor>();

                if (!result.ValidationResult.IsValid)
                {
                    res.StatusCode = 422;
                    await res.Negotiate(result.ValidationResult.GetFormattedErrors());
                    return;
                }

                //Save the user in your database

                res.StatusCode = 201;
                await res.Negotiate(result.Data);
            });
        }
Beispiel #23
0
        public void Initiate(ICurrencyProvider currencyProvider, IActorProvider actorProvider)
        {
            Console.WriteLine("!! Actor Manger initiate...");
            ActorProvider    = actorProvider;
            CurrencyProvider = currencyProvider;
            ActorFactory     = new ActorFactory(actorProvider);

            Console.WriteLine("!!Spawn first generation...");
            // Проверки систем
            // запуск акторов
            SpawnGeneration();             // нулевое поколение


            this.ManagerTask = new Task(() =>
            {
                Console.WriteLine("!! Actor manger main task started");
                while (true)
                {
                    if (this.managerMainCancelTokenSource.IsCancellationRequested)
                    {
                        return;
                    }

                    AllActors.RemoveAll(x => !x.Data.IsAlive);

                    if (AllActors.Count == 0)
                    {
                        break;
                    }

                    if (LastGeneration > 0 && AllActors.Any(x => x.Data.Generation == LastGeneration && x.Data.CurrentTime - Const.StartActorTime > Const.NewGenerationSpawnDelay))
                    {
                        var oldActorsCount = AllActors.Count;
                        SpawnGeneration();
                        Console.WriteLine($"!! New generation spawned; Added actors: {AllActors.Count - oldActorsCount}");
                    }

                    //Thread.Sleep(1000);
                }
                Console.WriteLine("!! All actors are dead");
            });

            this.ManagerTask.Start();

            this.IsInitiated = true;
        }
Beispiel #24
0
        public void ApplyAudit <T>(
            bool applyTimeAudit,
            bool applyActorAudit,
            IClock clock = null,
            IActorProvider <T> actorProvider = null)
            where T : struct
        {
            var auditableEntityEntries = _changeTracker.Entries <IBaseSimpleAuditEntity>();

            foreach (var entry in auditableEntityEntries)
            {
                if (applyTimeAudit)
                {
                    ApplyTimeAudit(entry, clock);
                }
                if (applyActorAudit)
                {
                    ApplyActorAudit(entry, actorProvider);
                }
            }
        }
Beispiel #25
0
        private void ApplyActorAudit <T>(EntityEntry <IBaseSimpleAuditEntity> entry, IActorProvider <T> actorProvider)
            where T : struct
        {
            if (actorProvider == null)
            {
                throw new ArgumentNullException(nameof(actorProvider));
            }
            if (!(entry.Entity is ISimpleActorAuditEntity <T> simpleTimeAuditEntity))
            {
                return;
            }

            switch (entry.State)
            {
            case EntityState.Added:
                simpleTimeAuditEntity.CreatedBy = actorProvider.Provide();
                break;

            case EntityState.Modified:
                simpleTimeAuditEntity.LastModifiedBy = actorProvider.Provide();
                break;
            }
        }
 public ActorProviderHolder(IActorProvider <TActor> provider)
 {
     Provider = provider;
 }
Beispiel #27
0
        public ActorModule(IActorProvider actorProvider)
        {
            Get("/actors", (req, res) =>
            {
                var actors = actorProvider.Get();
                return(res.Negotiate(actors));
            });

            Get("/actors/{id:int}", (req, res) =>
            {
                try
                {
                    var actor = actorProvider.Get(req.RouteValues.As <int>("id"));
                    return(res.Negotiate(actor));
                }
                catch (KeyNotFoundException)
                {
                    res.StatusCode = 404;
                    return(Task.CompletedTask);
                }
            });

            Post("/actors", async(req, res) =>
            {
                var result = await req.BindAndValidate <Actor>();

                if (!result.ValidationResult.IsValid)
                {
                    res.StatusCode = 422;
                    await res.Negotiate(result.ValidationResult.GetFormattedErrors());
                    return;
                }

                var actor = actorProvider.Create(result.Data);

                res.StatusCode = 201;
                await res.Negotiate(actor);
            });

            Put("/actors/{id:int}", async(req, res) =>
            {
                var result = await req.BindAndValidate <Actor>();

                if (!result.ValidationResult.IsValid)
                {
                    res.StatusCode = 422;
                    await res.Negotiate(result.ValidationResult.GetFormattedErrors());
                    return;
                }

                result.Data.Id = req.RouteValues.As <int>("id");
                actorProvider.Update(result.Data);
                res.StatusCode = 204;
            });

            Post("/actors/{id:int}/avatar", async(req, res) =>
            {
                try
                {
                    var actor = actorProvider.Get(req.RouteValues.As <int>("id"));
                    var file  = await req.BindFile();

                    actor.Avatar = file.FileName;

                    actorProvider.Update(actor);

                    await res.Negotiate(actor);
                }
                catch (KeyNotFoundException)
                {
                    res.StatusCode = 404;
                }
            });

            Delete("/actors/{id:int}", (req, res) =>
            {
                actorProvider.Delete(req.RouteValues.As <int>("id"));
                res.StatusCode = 204;
                return(Task.CompletedTask);
            });
        }
 public ControllerBootstraper(IActorProvider actorProvider, ILifetimeScope scope)
 {
     ActorProvider = actorProvider;
     Scope         = scope;
 }
Beispiel #29
0
 public AuditDbContext(DbContextOptions options, IActorProvider <int> actorProvider)
     : base(options, actorProvider)
 {
 }
Beispiel #30
0
        public ActorsModule(IActorProvider actorProvider)
        {
            this.Get <GetActors>("/actors", (req, res, routeData) =>
            {
                var people = actorProvider.Get();
                return(res.AsJson(people));
            });

            this.Get <GetActorById>("/actors/{id:int}", (req, res, routeData) =>
            {
                var person = actorProvider.Get(routeData.As <int>("id"));
                return(res.Negotiate(person));
            });

            this.Put <UpdateActor>("/actors/{id:int}", async(req, res, routeData) =>
            {
                var result = req.BindAndValidate <Actor>();

                if (!result.ValidationResult.IsValid)
                {
                    res.StatusCode = 422;
                    await res.Negotiate(result.ValidationResult.GetFormattedErrors());
                    return;
                }

                //Update the user in your database

                res.StatusCode = 204;
            });

            this.Post <AddActor>("/actors", async(req, res, routeData) =>
            {
                var result = req.BindAndValidate <Actor>();

                if (!result.ValidationResult.IsValid)
                {
                    res.StatusCode = 422;
                    await res.Negotiate(result.ValidationResult.GetFormattedErrors());
                    return;
                }

                //Save the user in your database

                res.StatusCode = 201;
                await res.Negotiate(result.Data);
            });

            this.Delete <DeleteActor>("/actors/{id:int}", (req, res, routeData) =>
            {
                actorProvider.Delete(routeData.As <int>("id"));
                res.StatusCode = 204;
                return(Task.CompletedTask);
            });

            this.Get("/actors/download", async(request, response, routeData) =>
            {
                using (var video = new FileStream("earth.mp4", FileMode.Open)) //24406813
                {
                    await response.FromStream(video, "video/mp4");
                }
            });

            this.Get <EmptyOpenApiMetaData>("/empty", (request, response, routeData) => Task.CompletedTask);

            this.Get <SampleMetaData>("/actors/sample", (request, response, routeData) => Task.CompletedTask);

            this.Post <NoValidatorMetaData>("/actors/sample", (request, response, routeData) => Task.CompletedTask);
        }