SharpMiner/SharpMining.cs

78 lines
1.4 KiB
C#

using System;
using cryptonote.rpc;
using cryptonote;
using Newtonsoft.Json.Linq;
using System.IO;
using System.Collections.Generic;
using System.Linq;
namespace SharpMining
{
public class SharpMining
{
public static void Main(String[] args)
{
if (args.Length > 1){
Console.WriteLine("usage: SharpMining.exe <config.json>");
return;
}
SharpMining sm = new SharpMining(args);
sm.Run();
}
private String configFileName;
private JToken config;
List<Daemon> daemons;
public SharpMining(String[] args){
if (args.Length == 0){
configFileName = "sharpmining.json";
} else if (args.Length == 1){
configFileName = args[0];
};
this.config = JToken.Parse(File.ReadAllText(configFileName));
this.daemons = new List<Daemon>();
}
public void Run(){
CreateDaemonRPC();
WorkManager = new WorkManager(this);
}
public void CreateDaemonRPC(){
foreach (JToken dc in config["daemons"]){
Daemon daemon = new Daemon(dc["host"].ToString(), dc["port"].ToObject<int>());
daemons.Add(daemon);
}
}
public Daemon[] Daemons { get { return this.daemons.ToArray(); } }
public WorkManager WorkManager { get; private set; }
public Daemon getCheckedDaemon(){
foreach (Daemon daemon in this.daemons){
if (daemon.check()){
return daemon;
}
}
return null;
}
public String getPoolWalletAddress(){
return config["pool"]["wallet"].ToObject<string>();
}
}
}