Пример #1
0
        // ReSharper disable once MemberCanBePrivate.Global
        // public constructor required for akka
        public Competitor(
            ICompetitorFactory playerAgentActorFactory
            , IActorRef playerLobby
            , IUser creator
            , IScript script
            , IActorRef resultRepository
            , CompetitorState initialState)
        {
            _playerAgentActorFactory = playerAgentActorFactory;
            _playerLobby             = playerLobby;
            _creator                   = creator;
            _script                    = script;
            _resultRepository          = resultRepository;
            _statusSubscriptions       = new HashSet <IActorRef>();
            _methodCallsFailureCounter = new Counter(MaxMethodCallsFailures);
            _state = initialState;

            if (_script.Exception != null)
            {
                _failureStateInfo = new AgentFailureState(new DeserializedException(_script.Exception));
                Faulted();
            }
            else
            {
                Active();
            }
        }
Пример #2
0
 public static Props Props(
     IActorRef scriptRepository
     , ICompetitionInfo competitionInfo
     , IActorRef lobby
     , ICompetitorFactory factory
     , IActorRef resultRepository)
 {
     return(Akka.Actor.Props.Create(() => new Competition(scriptRepository, competitionInfo, lobby, factory, resultRepository)));
 }
Пример #3
0
        public Competition(
            IActorRef scriptRepository
            , ICompetitionInfo competitionInfo
            , IActorRef lobby
            , ICompetitorFactory competitorFactory
            , IActorRef resultsRepository)
        {
            _scriptRepository  = scriptRepository;
            _competitionInfo   = competitionInfo;
            _lobby             = lobby;
            _competitorFactory = competitorFactory;
            _resultsRepository = resultsRepository;

            EnsureSubscription(_scriptRepository);

            Receive <IEnumerable <Script> >(OnScriptBatchReceived);
            Receive <Data.Entities.Messages.AddedEvent <Script> >(OnNewScriptAdded);
            Receive <Data.Entities.Messages.UpdatedEvent <Script> >(OnScriptUpdated);
            Receive <Data.Entities.Messages.DeletedEvent <Script> >(OnScriptDeleted);
        }
Пример #4
0
 public static Props Props(ICompetitorFactory factory, IActorRef playerLobby, IUser creator, IScript script,
                           IActorRef resultRepository, CompetitorState initialState)
 {
     return(Akka.Actor.Props.Create(() =>
                                    new Competitor(factory, playerLobby, creator, script, resultRepository, initialState)));
 }