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); }
/// <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>(); }