public MinuteDayChangeMonitor(
     IDateTimeSource dateTimeSource,
     IMinuteDayChangeMonitorStrategy monitorStrategy)  //TODO: call a method instead.
 {
     this.dateTimeSource  = dateTimeSource;
     this.monitorStrategy = monitorStrategy;
 }
        /// <summary>
        ///     Constructor,
        /// </summary>
        /// <param name="gameRoundDataManager">Game Round Data Manager</param>
        /// <param name="gameManager">Game manager</param>
        /// <param name="ethereumAccountManager">Ethereum account manager.</param>
        /// <param name="transactionLoader">Transaction Loader.</param>
        /// <param name="contractInfoRegistry">Contract info registry.</param>
        /// <param name="eventSignatureFactory">Event signature factory.</param>
        /// <param name="eventHandlerFactory">Event Handler Factory.</param>
        /// <param name="eventDataManager">Event data manager.</param>
        /// <param name="eventDecoder">Event Decoder.</param>
        /// <param name="confirmationsReadinessChecker">Confirmations readiness checker.</param>
        /// <param name="dateTimeSource">Source of time.</param>
        /// <param name="logger">Logging.</param>
        public BrokenGameRecovery(IGameRoundDataManager gameRoundDataManager,
                                  IGameManager gameManager,
                                  IEthereumAccountManager ethereumAccountManager,
                                  ITransactionLoader transactionLoader,
                                  IContractInfoRegistry contractInfoRegistry,
                                  IEventSignatureFactory eventSignatureFactory,
                                  IEventHandlerFactory eventHandlerFactory,
                                  IEventDataManager eventDataManager,
                                  IEventDecoder eventDecoder,
                                  IConfirmationsReadinessChecker confirmationsReadinessChecker,
                                  IDateTimeSource dateTimeSource,
                                  ILogger <BrokenGameRecovery> logger)
        {
            this._gameRoundDataManager          = gameRoundDataManager ?? throw new ArgumentNullException(nameof(gameRoundDataManager));
            this._gameManager                   = gameManager ?? throw new ArgumentNullException(nameof(gameManager));
            this._ethereumAccountManager        = ethereumAccountManager ?? throw new ArgumentNullException(nameof(ethereumAccountManager));
            this._transactionLoader             = transactionLoader ?? throw new ArgumentNullException(nameof(transactionLoader));
            this._eventSignatureFactory         = eventSignatureFactory ?? throw new ArgumentNullException(nameof(eventSignatureFactory));
            this._eventHandlerFactory           = eventHandlerFactory ?? throw new ArgumentNullException(nameof(eventHandlerFactory));
            this._eventDataManager              = eventDataManager ?? throw new ArgumentNullException(nameof(eventDataManager));
            this._eventDecoder                  = eventDecoder ?? throw new ArgumentNullException(nameof(eventDecoder));
            this._confirmationsReadinessChecker = confirmationsReadinessChecker ?? throw new ArgumentNullException(nameof(confirmationsReadinessChecker));
            this._dateTimeSource                = dateTimeSource ?? throw new ArgumentNullException(nameof(dateTimeSource));
            this._logger = logger ?? throw new ArgumentNullException(nameof(logger));

            this._contractInfo = contractInfoRegistry.FindContractInfo(WellKnownContracts.GameManager);
        }
예제 #3
0
        /// <summary>
        ///     Constructor.
        /// </summary>
        /// <param name="ethereumBlockStatus">Ethereum block status.</param>
        /// <param name="dateTimeSource">Source of date/time.</param>
        public GameRoundTimeCalculator(IEthereumBlockStatus ethereumBlockStatus, IDateTimeSource dateTimeSource)
        {
            this._ethereumBlockStatus = ethereumBlockStatus ?? throw new ArgumentNullException(nameof(ethereumBlockStatus));
            this._dateTimeSource      = dateTimeSource ?? throw new ArgumentNullException(nameof(dateTimeSource));

            this._blockStatus = new ConcurrentDictionary <EthereumNetwork, BlockStatus>();
            this._ethereumBlockStatus.OnNewLatestBlock += (_, networkBlockHeader) => this.NewBlockReceived(networkBlockHeader);
        }
예제 #4
0
        //---------------------------------------------------------------------------------------------

        public GoalAttemptStore(IGoalAttemptDb goalAttemptDb,
                                IGoalStore goalStore,
                                IDateTimeSource dateTimeSource)
        {
            _goalAttemptDb  = goalAttemptDb;
            _goalStore      = goalStore;
            _dateTimeSource = dateTimeSource;
        }
예제 #5
0
        //---------------------------------------------------------------------------------------------

        public TokenStore(ITokenDb tokenDb,
                          ITokenSettings settings,
                          IDateTimeSource dateTimeSource,
                          ILogger log)
        {
            _tokenDb                = tokenDb;
            _dateTimeSource         = dateTimeSource;
            _log                    = log;
            _tokenLifetimeInMinutes = settings.TokenLifetimeInMinutes;
        }
 /// <summary>
 ///     Constructor.
 /// </summary>
 /// <param name="gameStatisticsPublisher">Game stats web socket publisher</param>
 /// <param name="gameRoundDataManager">Game Round Data manager</param>
 /// <param name="gameRoundLockManager">Game Round Lock manager.</param>
 /// <param name="gameRoundTimeCalculator">Game Round time calculator.</param>
 /// <param name="dateTimeSource">Source of time.</param>
 /// <param name="logger">Logging.</param>
 public StartGameRoundEventHandler(IGameStatisticsPublisher gameStatisticsPublisher,
                                   IGameRoundDataManager gameRoundDataManager,
                                   IObjectLockManager <GameRoundId> gameRoundLockManager,
                                   IGameRoundTimeCalculator gameRoundTimeCalculator,
                                   IDateTimeSource dateTimeSource,
                                   ILogger <StartGameRoundEventHandler> logger)
     : base(gameRoundDataManager: gameRoundDataManager, gameRoundLockManager: gameRoundLockManager, logger: logger)
 {
     this._gameStatisticsPublisher = gameStatisticsPublisher ?? throw new ArgumentNullException(nameof(gameStatisticsPublisher));
     this._gameRoundTimeCalculator = gameRoundTimeCalculator ?? throw new ArgumentNullException(nameof(gameRoundTimeCalculator));
     this._dateTimeSource          = dateTimeSource ?? throw new ArgumentNullException(nameof(dateTimeSource));
 }
예제 #7
0
        //---------------------------------------------------------------------------------------------

        public GoalController(IGoalStore goalStore,
                              IGoalAttemptStore goalAttemptStore,
                              IUserStore userStore,
                              ITokenStore tokenStore,
                              IDbQuery dbQuery,
                              IDateTimeSource dateTime,
                              ILogger log)
        {
            if (goalStore == null)
            {
                throw new ArgumentException("GoalStore cannot be null.");
            }

            if (goalAttemptStore == null)
            {
                throw new ArgumentException("GoalAttemptStore cannot be null.");
            }

            if (userStore == null)
            {
                throw new ArgumentException("UserStore cannot be null.");
            }

            if (tokenStore == null)
            {
                throw new ArgumentException("TokenStore cannot be null.");
            }

            if (dbQuery == null)
            {
                throw new ArgumentException("DbQuery cannot be null.");
            }

            if (dateTime == null)
            {
                throw new ArgumentException("DateTimeSource cannot be null.");
            }

            if (log == null)
            {
                throw new ArgumentException("Logger cannot be null.");
            }

            _goalStore        = goalStore;
            _goalAttemptStore = goalAttemptStore;
            _userStore        = userStore;
            _tokenStore       = tokenStore;
            _dbQuery          = dbQuery;
            _dateTime         = dateTime;
            _log = log;
        }
 /// <summary>
 ///     Constructor.
 /// </summary>
 /// <param name="ethereumAccountManager">Ethereum account manager.</param>
 /// <param name="gameRoundDataManager">Game round data manager.</param>
 /// <param name="gameManager">Game Manager.</param>
 /// <param name="gameRoundLockManager">Game round lock manager.</param>
 /// <param name="dateTimeSource">Source of time.</param>
 /// <param name="logger">Logging.</param>
 public EndGameService(IEthereumAccountManager ethereumAccountManager,
                       IGameRoundDataManager gameRoundDataManager,
                       IGameManager gameManager,
                       IObjectLockManager <GameRoundId> gameRoundLockManager,
                       IDateTimeSource dateTimeSource,
                       ILogger <EndGameService> logger)
 {
     this._ethereumAccountManager = ethereumAccountManager ?? throw new ArgumentNullException(nameof(ethereumAccountManager));
     this._gameRoundDataManager   = gameRoundDataManager ?? throw new ArgumentNullException(nameof(gameRoundDataManager));
     this._gameManager            = gameManager ?? throw new ArgumentNullException(nameof(gameManager));
     this._gameRoundLockManager   = gameRoundLockManager ?? throw new ArgumentNullException(nameof(gameRoundLockManager));
     this._dateTimeSource         = dateTimeSource ?? throw new ArgumentNullException(nameof(dateTimeSource));
     this._logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }
예제 #9
0
 /// <summary>
 ///     Constructor.
 /// </summary>
 /// <param name="ethereumNetworkConfigurationManager"></param>
 /// <param name="ethereumBlockStatus"></param>
 /// <param name="latestBlockRetriever">Retriever of the latest blocks.</param>
 /// <param name="dateTimeSource">Source of time</param>
 /// <param name="endGameService">Game ending.</param>
 /// <param name="logger">Logging</param>
 public EndGameBackgroundService(IEthereumNetworkConfigurationManager ethereumNetworkConfigurationManager,
                                 IEthereumBlockStatus ethereumBlockStatus,
                                 IEthereumLatestBlockRetriever latestBlockRetriever,
                                 IDateTimeSource dateTimeSource,
                                 IEndGameService endGameService,
                                 ILogger <EndGameBackgroundService> logger)
     : base(ethereumNetworkConfigurationManager: ethereumNetworkConfigurationManager,
            ethereumBlockStatus: ethereumBlockStatus,
            latestBlockRetriever: latestBlockRetriever,
            processUnchangedBlocks: false,
            dateTimeSource: dateTimeSource,
            sweepInterval: TimeSpan.FromSeconds(0.5),
            blockTriggeredService: new BackgroundService(endGameService),
            logger: logger)
 {
 }
예제 #10
0
 public BlockStatus(IDateTimeSource dateTimeSource)
 {
     this._dateTimeSource = dateTimeSource ?? throw new ArgumentNullException(nameof(dateTimeSource));
     this._currentTime    = null;
 }
 /// <summary>
 ///     Constructor
 /// </summary>
 /// <param name="dateTimeSource">The IDateTimeSource</param>
 public RateLimiter(IDateTimeSource dateTimeSource)
 {
     this._memoryCache    = new MemoryCache(new MemoryCacheOptions());
     this._dateTimeSource = dateTimeSource ?? throw new ArgumentNullException(nameof(dateTimeSource));
     this._keyLock        = new KeyLock <string>(StringComparer.OrdinalIgnoreCase);
 }
예제 #12
0
 public Alerter(IDateTimeSource dateTimeSource)
 {
     _dateTimeSource = dateTimeSource;
 }
예제 #13
0
 public SharesProvider(IDateTimeSource dateTimeSource)
 {
     _dateTimeSource = dateTimeSource;
 }
예제 #14
0
 public OrderProvider(IDateTimeSource dateTimeSource)
 {
     _dateTimeSource = dateTimeSource;
 }