private Engine.Data.Configuration.Coin AddCoinConfiguration(CryptoCoin cryptoCoin) { //don't allow two configurations for the same coin symbol Engine.Data.Configuration.Coin configuration = configurations.SingleOrDefault(c => c.CryptoCoin.Symbol.Equals(cryptoCoin.Symbol, StringComparison.OrdinalIgnoreCase)); if (configuration == null) //don't allow two configurations for the same coin name configuration = configurations.SingleOrDefault(c => c.CryptoCoin.Name.Equals(cryptoCoin.Name, StringComparison.OrdinalIgnoreCase)); if (configuration != null) { coinListBox.SelectedIndex = configurations.IndexOf(configuration); } else { configuration = new Engine.Data.Configuration.Coin(); configuration.CryptoCoin = knownCoins.SingleOrDefault(c => c.Symbol.Equals(cryptoCoin.Symbol, StringComparison.OrdinalIgnoreCase)); //user may have manually entered a coin if (configuration.CryptoCoin == null) { configuration.CryptoCoin = new CryptoCoin(); configuration.CryptoCoin.Name = cryptoCoin.Name; configuration.CryptoCoin.Symbol = cryptoCoin.Symbol; configuration.CryptoCoin.Algorithm = cryptoCoin.Algorithm; } //at this point, configuration.CryptoCoin.Algorithm is the CoinAlgorithm.FullName //that is how data from Coin API is stored //but coin configurations are based on CoinAlgorithm.Name string algorithmFullName = configuration.CryptoCoin.Algorithm; CoinAlgorithm algorithm = MinerFactory.Instance.Algorithms.SingleOrDefault(a => a.FullName.Equals(algorithmFullName, StringComparison.OrdinalIgnoreCase)); configuration.CryptoCoin.Algorithm = algorithm.Name; MiningPool miningPool = new MiningPool() { Host = Data.Configuration.PoolDefaults.HostPrefix, Port = Data.Configuration.PoolDefaults.Port }; configuration.Pools.Add(miningPool); configurations.Add(configuration); coinListBox.Items.Add(configuration.CryptoCoin.Name); coinListBox.SelectedIndex = configurations.IndexOf(configuration); } hostEdit.Focus(); hostEdit.SelectionStart = hostEdit.SelectionLength; return configuration; }
private Engine.Data.Configuration.Coin AddCoinConfiguration(CryptoCoin cryptoCoin) { //don't allow two configurations for the same coin symbol Engine.Data.Configuration.Coin configuration = configurations.SingleOrDefault(c => c.CryptoCoin.Symbol.Equals(cryptoCoin.Symbol, StringComparison.OrdinalIgnoreCase)); if (configuration == null) //don't allow two configurations for the same coin name configuration = configurations.SingleOrDefault(c => c.CryptoCoin.Name.Equals(cryptoCoin.Name, StringComparison.OrdinalIgnoreCase)); if (configuration != null) { coinListBox.SelectedIndex = configurations.IndexOf(configuration); } else { configuration = new Engine.Data.Configuration.Coin(); configuration.CryptoCoin = knownCoins.SingleOrDefault(c => c.Symbol.Equals(cryptoCoin.Symbol, StringComparison.OrdinalIgnoreCase)); //user may have manually entered a coin if (configuration.CryptoCoin == null) { configuration.CryptoCoin = new CryptoCoin(); configuration.CryptoCoin.Name = cryptoCoin.Name; configuration.CryptoCoin.Symbol = cryptoCoin.Symbol; configuration.CryptoCoin.Algorithm = cryptoCoin.Algorithm; } MiningPool miningPool = new MiningPool() { Host = "stratum+tcp://", Port = 3333 }; configuration.Pools.Add(miningPool); configurations.Add(configuration); coinListBox.Items.Add(configuration.CryptoCoin.Name); coinListBox.SelectedIndex = configurations.IndexOf(configuration); } hostEdit.Focus(); hostEdit.SelectionStart = hostEdit.SelectionLength; return configuration; }
private void removeCoinButton_Click(object sender, EventArgs e) { DialogResult promptResult = MessageBox.Show("Remove the selected coin configuration?", "Confirm", MessageBoxButtons.YesNo); if (promptResult == System.Windows.Forms.DialogResult.Yes) { //required to clear bindings if this was the last coin in the list coinConfigurationBindingSource.DataSource = typeof(Engine.Data.Configuration.Coin); miningPoolBindingSource.DataSource = typeof(MiningPool); Engine.Data.Configuration.Coin configuration = configurations[coinListBox.SelectedIndex]; configurations.Remove(configuration); coinListBox.Items.RemoveAt(coinListBox.SelectedIndex); //select a coin - otherwise nothing will be selected if (configurations.Count > 0) { coinListBox.SelectedIndex = 0; } } }
private void AddCoinConfiguration(CryptoCoin cryptoCoin) { //don't allow two configurations for the same coin symbol Engine.Data.Configuration.Coin configuration = configurations.SingleOrDefault(c => c.CryptoCoin.Symbol.Equals(cryptoCoin.Symbol, StringComparison.OrdinalIgnoreCase)); if (configuration == null) { //don't allow two configurations for the same coin name configuration = configurations.SingleOrDefault(c => c.CryptoCoin.Name.Equals(cryptoCoin.Name, StringComparison.OrdinalIgnoreCase)); } if (configuration != null) { coinListBox.SelectedIndex = configurations.IndexOf(configuration); } else { configuration = new Engine.Data.Configuration.Coin(); configuration.CryptoCoin = knownCoins.SingleOrDefault(c => c.Symbol.Equals(cryptoCoin.Symbol, StringComparison.OrdinalIgnoreCase)); //user may have manually entered a coin if (configuration.CryptoCoin == null) { configuration.CryptoCoin = new CryptoCoin(); configuration.CryptoCoin.Name = cryptoCoin.Name; configuration.CryptoCoin.Symbol = cryptoCoin.Symbol; configuration.CryptoCoin.Algorithm = cryptoCoin.Algorithm; } configuration.Pools.Add(new MiningPool()); configurations.Add(configuration); coinListBox.Items.Add(configuration.CryptoCoin.Name); coinListBox.SelectedIndex = configurations.IndexOf(configuration); } hostEdit.Focus(); }
public MiningPool AddNewPool(CoinApi.Data.CoinInformation coin, string url, string user, string pass) { Engine.Data.Configuration.Coin coinConfig = EngineConfiguration.CoinConfigurations.SingleOrDefault(c => c.PoolGroup.Id.Equals(coin.Symbol, StringComparison.OrdinalIgnoreCase)); if (coinConfig == null) { coinConfig = new Engine.Data.Configuration.Coin(); var algorithm = coin.Algorithm; //we don't want the FullName KnownAlgorithm knownAlgorithm = KnownAlgorithms.Algorithms.SingleOrDefault(a => a.FullName.Equals(algorithm, StringComparison.OrdinalIgnoreCase)); if (knownAlgorithm != null) algorithm = knownAlgorithm.Name; coinConfig.PoolGroup = new Engine.Data.PoolGroup { Algorithm = algorithm, Id = coin.Symbol, Kind = coin.Symbol.Contains(':') ? Engine.Data.PoolGroup.PoolGroupKind.MultiCoin : Engine.Data.PoolGroup.PoolGroupKind.SingleCoin, Name = coin.Name }; EngineConfiguration.CoinConfigurations.Add(coinConfig); } Uri uri = new Uri(url); Xgminer.Data.MiningPool poolConfig = new Xgminer.Data.MiningPool { Host = uri.GetComponents(UriComponents.AbsoluteUri & ~UriComponents.Port, UriFormat.UriEscaped), Port = uri.Port, Password = pass, Username = user }; coinConfig.Pools.Add(poolConfig); EngineConfiguration.SaveCoinConfigurations(); return poolConfig; }
private Engine.Data.Configuration.Coin AddCoinConfiguration(PoolGroup poolGroup) { //don't allow two configurations for the same coin symbol Engine.Data.Configuration.Coin configuration = configurations.SingleOrDefault(c => c.PoolGroup.Id.Equals(poolGroup.Id, StringComparison.OrdinalIgnoreCase)); if (configuration == null) //don't allow two configurations for the same coin name configuration = configurations.SingleOrDefault(c => c.PoolGroup.Name.Equals(poolGroup.Name, StringComparison.OrdinalIgnoreCase)); if (configuration != null) { coinListBox.SelectedIndex = configurations.IndexOf(configuration); } else { configuration = new Engine.Data.Configuration.Coin(); configuration.PoolGroup = knownCoins.SingleOrDefault(c => c.Id.Equals(poolGroup.Id, StringComparison.OrdinalIgnoreCase)); //user may have manually entered a coin or may be using a Multipool if (configuration.PoolGroup == null) { configuration.PoolGroup = new PoolGroup(); ObjectCopier.CopyObject(poolGroup, configuration.PoolGroup); } //at this point, configuration.CryptoCoin.Algorithm MAY be the CoinAlgorithm.FullName //that is how data from Coin API is stored //but coin configurations are based on CoinAlgorithm.Name CoinAlgorithm algorithm = MinerFactory.Instance.Algorithms.SingleOrDefault(a => a.FullName.Equals(configuration.PoolGroup.Algorithm, StringComparison.OrdinalIgnoreCase)); if (algorithm != null) configuration.PoolGroup.Algorithm = algorithm.Name; MiningPool miningPool = new MiningPool() { Host = UX.Data.Configuration.PoolDefaults.HostPrefix, Port = UX.Data.Configuration.PoolDefaults.Port }; configuration.Pools.Add(miningPool); configurations.Add(configuration); coinListBox.Items.Add(configuration.PoolGroup.Name); coinListBox.SelectedIndex = configurations.IndexOf(configuration); } hostEdit.Focus(); hostEdit.SelectionStart = hostEdit.SelectionLength; return configuration; }
private Engine.Data.Configuration.Engine CreateEngineConfiguration() { Engine.Data.Configuration.Engine engineConfiguration = new Engine.Data.Configuration.Engine(); Engine.Data.Configuration.Coin coinConfiguration = new Engine.Data.Configuration.Coin(); PoolGroup coin = null; //no Internet connection - only BTC and LTC were available if (coins.Count == 0) { coin = new PoolGroup(); coin.Name = coinComboBox.Text; if (coin.Name.Equals(KnownCoins.LitecoinName, StringComparison.OrdinalIgnoreCase)) { coin.Algorithm = AlgorithmNames.Scrypt; coin.Id = KnownCoins.LitecoinSymbol; } else { coin.Algorithm = AlgorithmNames.SHA256; coin.Id = KnownCoins.BitcoinSymbol; } } else { coin = coins.Single(c => c.Name.Equals(coinComboBox.Text)); } coinConfiguration.PoolGroup = coin; coinConfiguration.Enabled = true; MiningPool miningPool = new MiningPool(); miningPool.Host = hostEdit.Text; miningPool.Port = Int32.Parse(portEdit.Text); miningPool.Username = usernameEdit.Text; miningPool.Password = passwordEdit.Text; coinConfiguration.Pools.Add(miningPool); engineConfiguration.CoinConfigurations.Add(coinConfiguration); return engineConfiguration; }