private static void RegisterFaucet(IServiceCollection services,
                                    IFaucetConfiguration faucetConfiguration,
                                    IFaucetBalanceConfiguration faucetBalanceConfiguration,
                                    IHouseBalanceConfiguration houseAlerterConfiguration)
 {
     services.AddSingleton <IFaucetManager, FaucetManager>();
     services.AddSingleton(faucetConfiguration);
     services.AddSingleton(faucetBalanceConfiguration);
     services.AddSingleton(houseAlerterConfiguration);
 }
        /// <summary>
        ///     Configures the Server logic
        /// </summary>
        /// <param name="services">The services collection to register services in.</param>
        /// <param name="faucetConfiguration">Faucet configuration</param>
        /// <param name="faucetBalanceConfiguration">Faucet balance configuration</param>
        /// <param name="houseAlerterConfiguration">House alerter configuration</param>
        public static void Configure(IServiceCollection services,
                                     IFaucetConfiguration faucetConfiguration,
                                     IFaucetBalanceConfiguration faucetBalanceConfiguration,
                                     IHouseBalanceConfiguration houseAlerterConfiguration)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            RegisterBalances(services);
            RegisterPlayers(services);
            RegisterFaucet(services: services, faucetConfiguration: faucetConfiguration, faucetBalanceConfiguration: faucetBalanceConfiguration, houseAlerterConfiguration: houseAlerterConfiguration);
            RegisterGames(services);
        }
        /// <summary>
        ///     Configures the Ethereum Contracts
        /// </summary>
        /// <param name="services">The services collection to register services in.</param>
        /// <param name="faucetConfiguration">Faucet configuration</param>
        /// <param name="faucetBalanceConfiguration">Faucet balance configuration</param>
        /// <param name="houseAlerterConfiguration">House alerter configuration</param>
        public static void Configure(IServiceCollection services,
                                     IFaucetConfiguration faucetConfiguration,
                                     IFaucetBalanceConfiguration faucetBalanceConfiguration,
                                     IHouseBalanceConfiguration houseAlerterConfiguration)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            services.AddSingleton <IDrainedFaucetAlerter, DrainedFaucetAlerter>();
            services.AddSingleton <IHouseAccountAlerter, HouseAccountAlerter>();
            services.AddHostedSingletonService <ILowBalanceWatcherService, LowBalanceWatcherService>();

            RegisterPlayers(services);
            RegisterFaucet(services: services, faucetConfiguration: faucetConfiguration, faucetBalanceConfiguration: faucetBalanceConfiguration, houseAlerterConfiguration: houseAlerterConfiguration);
        }
예제 #4
0
        /// <summary>
        ///     Constructor
        /// </summary>
        /// <param name="ethereumNetworkConfigurationManager">Ethereum network configuration manager.</param>
        /// <param name="ethereumAccountWatcher">Ethereum Account Watcher.</param>
        /// <param name="contractInfoRegistry">Contract info registry</param>
        /// <param name="alertDispatcher">Alert dispatcher.</param>
        /// <param name="faucetBalanceConfiguration">Faucet balance configuration</param>
        /// <param name="logger">Logger.</param>
        public DrainedFaucetAlerter(IEthereumNetworkConfigurationManager ethereumNetworkConfigurationManager,
                                    IEthereumAccountBalanceWatcher ethereumAccountWatcher,
                                    IContractInfoRegistry contractInfoRegistry,
                                    IAlertDispatcher alertDispatcher,
                                    IFaucetBalanceConfiguration faucetBalanceConfiguration,
                                    ILogger <DrainedFaucetAlerter> logger)
        {
            this._ethereumNetworkConfigurationManager = ethereumNetworkConfigurationManager ?? throw new ArgumentNullException(nameof(ethereumNetworkConfigurationManager));
            this._ethereumAccountWatcher     = ethereumAccountWatcher ?? throw new ArgumentNullException(nameof(ethereumAccountWatcher));
            this._contractInfoRegistry       = contractInfoRegistry ?? throw new ArgumentNullException(nameof(contractInfoRegistry));
            this._alertDispatcher            = alertDispatcher ?? throw new ArgumentNullException(nameof(alertDispatcher));
            this._faucetBalanceConfiguration = faucetBalanceConfiguration ?? throw new ArgumentNullException(nameof(faucetBalanceConfiguration));
            this._logger = logger ?? throw new ArgumentNullException(nameof(logger));

            this._tokenContract = (Erc20TokenContractInfo)contractInfoRegistry.FindContractInfo(WellKnownContracts.Token);

            this._watchedContracts = new ConcurrentDictionary <NetworkAccount, SubscriptionToken>();
        }