using System; using System.Collections.Generic; using sharp.cryptonote.rpc; using sharp.cryptonote; using Newtonsoft.Json.Linq; namespace SharpMining { public class MiningPool { JToken poolConfig; List daemons; public Daemon[] Daemons { get { return this.daemons.ToArray(); } } public WorkManager WorkManager { get; private set; } public CryptoNoteAddress PoolWallet { get; private set; } public Dictionary assignedStratums; public MiningPool(JToken poolConfig) { this.poolConfig = poolConfig; this.daemons = new List(); this.assignedStratums = new Dictionary(); this.Coin = (CryptoNoteCoin)Enum.Parse(typeof(CryptoNoteCoin), poolConfig["pool"]["coin"].ToObject()); this.PoolWallet = new CryptoNoteAddress(poolConfig["pool"]["wallet"].ToObject()); this.WorkManager = new WorkManager(this); CreateDaemonRPC(); } public CryptoNoteCoin Coin { get; private set; } public void CreateDaemonRPC() { foreach (JToken dc in poolConfig["daemons"]) { Daemon daemon = new Daemon(dc["host"].ToString(), dc["port"].ToObject()); daemons.Add(daemon); } } public Daemon getCheckedDaemon() { foreach (Daemon daemon in this.daemons) { if (daemon.check()) { return daemon; } } return null; } public override string ToString() { return string.Format("[MiningPool: Coin={0}, PoolWallet={1}]", Coin, PoolWallet); } } }