/// <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);
        }
 /// <summary>
 ///     Constructor.
 /// </summary>
 /// <param name="gameRoundDataManager">Game Round Data manager</param>
 /// <param name="gameRoundLockManager">Game Lock manager.</param>
 /// <param name="gameStatisticsPublisher">Game stats publisher.</param>
 /// <param name="logger">Logging.</param>
 public NoMoreBetsEventHandler(IGameRoundDataManager gameRoundDataManager,
                               IObjectLockManager <GameRoundId> gameRoundLockManager,
                               IGameStatisticsPublisher gameStatisticsPublisher,
                               ILogger <NoMoreBetsEventHandler> logger)
     : base(gameRoundDataManager: gameRoundDataManager, gameRoundLockManager: gameRoundLockManager, logger: logger)
 {
     this._gameStatisticsPublisher = gameStatisticsPublisher ?? throw new ArgumentNullException(nameof(gameStatisticsPublisher));
 }
 /// <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));
 }
 /// <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));
 }
示例#5
0
        /// <summary>
        ///     Constructor.
        /// </summary>
        /// <param name="gameRoundDataManager">Game round data manager</param>
        /// <param name="randomSource">Random source</param>
        /// <param name="transactionService">Transaction service</param>
        /// <param name="hasher">Hasher</param>
        /// <param name="contractInfoRegistry">Contract info registry.</param>
        /// <param name="gameStatisticsPublisher">The game stats publisher</param>
        /// <param name="lowBalanceWatcher">Low balance watcher</param>
        /// <param name="logger">Logger</param>
        public GameManager(IGameRoundDataManager gameRoundDataManager,
                           IRandomSource randomSource,
                           ITransactionService transactionService,
                           IHasher hasher,
                           IContractInfoRegistry contractInfoRegistry,
                           IGameStatisticsPublisher gameStatisticsPublisher,
                           ILowBalanceWatcher lowBalanceWatcher,
                           ILogger <GameManager> logger)
        {
            this._gameRoundDataManager = gameRoundDataManager ?? throw new ArgumentNullException(nameof(gameRoundDataManager));
            this._randomSource         = randomSource ?? throw new ArgumentNullException(nameof(randomSource));
            this._transactionService   = transactionService ?? throw new ArgumentNullException(nameof(transactionService));
            this._hasher = hasher ?? throw new ArgumentNullException(nameof(hasher));
            this._logger = logger ?? throw new ArgumentNullException(nameof(logger));
            this._gameStatisticsPublisher = gameStatisticsPublisher ?? throw new ArgumentNullException(nameof(gameStatisticsPublisher));
            this._lowBalanceWatcher       = lowBalanceWatcher ?? throw new ArgumentNullException(nameof(lowBalanceWatcher));

            this._gameManager = contractInfoRegistry.FindContractInfo(WellKnownContracts.GameManager);
        }
 /// <summary>
 ///     Constructor
 /// </summary>
 /// <param name="ethereumNetworkRegistry">Ethereum network registry</param>
 /// <param name="groupNameGenerator">The group name generator</param>
 /// <param name="environment">Execution environment</param>
 /// <param name="subscriptionManager">Subscription manager</param>
 /// <param name="playerCountManager">Player counter.</param>
 /// <param name="gameRoundDataManager">Game Round Manager.</param>
 /// <param name="gameRoundTimeCalculator">Game round time calculator.</param>
 /// <param name="startRoundGameHistoryBuilder">Game Round history builder.</param>
 /// <param name="ethereumBlockStatus">Ethereum block status.</param>
 /// <param name="rateLimiter">Rate limiter</param>
 /// <param name="logger">Logger</param>
 public AuthenticatedHub(IEthereumNetworkRegistry ethereumNetworkRegistry,
                         IGroupNameGenerator groupNameGenerator,
                         ExecutionEnvironment environment,
                         ISubscriptionManager subscriptionManager,
                         IPlayerCountManager playerCountManager,
                         IGameRoundDataManager gameRoundDataManager,
                         IGameRoundTimeCalculator gameRoundTimeCalculator,
                         IStartRoundGameHistoryBuilder startRoundGameHistoryBuilder,
                         IEthereumBlockStatus ethereumBlockStatus,
                         IRateLimiter rateLimiter,
                         ILogger <AuthenticatedHub> logger)
     : base(ethereumNetworkRegistry: ethereumNetworkRegistry, groupNameGenerator: groupNameGenerator, environment: environment, subscriptionManager: subscriptionManager, logger: logger)
 {
     this._playerCountManager           = playerCountManager ?? throw new ArgumentNullException(nameof(playerCountManager));
     this._gameRoundDataManager         = gameRoundDataManager ?? throw new ArgumentNullException(nameof(gameRoundDataManager));
     this._gameRoundTimeCalculator      = gameRoundTimeCalculator ?? throw new ArgumentNullException(nameof(gameRoundTimeCalculator));
     this._startRoundGameHistoryBuilder = startRoundGameHistoryBuilder ?? throw new ArgumentNullException(nameof(startRoundGameHistoryBuilder));
     this._ethereumBlockStatus          = ethereumBlockStatus ?? throw new ArgumentNullException(nameof(ethereumBlockStatus));
     this._rateLimiter = rateLimiter ?? throw new ArgumentNullException(nameof(rateLimiter));
 }
示例#7
0
        /// <summary>
        ///     Constructor
        /// </summary>
        /// <param name="ethereumAccountManager">The ethereum account manager.</param>
        /// <param name="gameManager">Game Manager.</param>
        /// <param name="gameRoundDataManager">Game round data manager.</param>
        /// <param name="ethereumBlockStatus">Ethereum block status.</param>
        /// <param name="gameManagerLockManager">Game contract lock manager.</param>
        /// <param name="contractInfoRegistry">The contract info registry.</param>
        /// <param name="gamesList">Game list.</param>
        /// <param name="playerCountManager">Player count manager.</param>
        /// <param name="logger">Logger</param>
        public StartGameService(IEthereumAccountManager ethereumAccountManager,
                                IGameManager gameManager,
                                IGameRoundDataManager gameRoundDataManager,
                                IEthereumBlockStatus ethereumBlockStatus,
                                IObjectLockManager <EthereumAddress> gameManagerLockManager,
                                IContractInfoRegistry contractInfoRegistry,
                                IGamesList gamesList,
                                IPlayerCountManager playerCountManager,
                                ILogger <StartGameService> logger)
        {
            this._ethereumAccountManager = ethereumAccountManager ?? throw new ArgumentNullException(nameof(ethereumAccountManager));

            this._gameManager            = gameManager ?? throw new ArgumentNullException(nameof(gameManager));
            this._gameRoundDataManager   = gameRoundDataManager ?? throw new ArgumentNullException(paramName: nameof(gameRoundDataManager));
            this._ethereumBlockStatus    = ethereumBlockStatus ?? throw new ArgumentNullException(nameof(ethereumBlockStatus));
            this._gameManagerLockManager = gameManagerLockManager ?? throw new ArgumentNullException(nameof(gameManagerLockManager));
            this._gamesList          = gamesList ?? throw new ArgumentNullException(nameof(gamesList));
            this._playerCountManager = playerCountManager ?? throw new ArgumentNullException(nameof(playerCountManager));
            this._logger             = logger ?? throw new ArgumentNullException(paramName: nameof(logger));

            this._contractInfo = contractInfoRegistry.FindContractInfo(WellKnownContracts.GameManager);
        }
 /// <summary>
 ///     Constructor.
 /// </summary>
 /// <param name="gameRoundDataManager">Game Round Data manager</param>
 /// <param name="gameRoundLockManager">Game Lock manager.</param>
 /// <param name="logger">Logging.</param>
 protected GameRoundEventHandlerBase(IGameRoundDataManager gameRoundDataManager, IObjectLockManager <GameRoundId> gameRoundLockManager, ILogger logger)
 {
     this.GameRoundDataManager  = gameRoundDataManager ?? throw new ArgumentNullException(nameof(gameRoundDataManager));
     this._gameRoundLockManager = gameRoundLockManager ?? throw new ArgumentNullException(nameof(gameRoundLockManager));
     this.Logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }