コード例 #1
0
ファイル: XMRig.cs プロジェクト: BitPoolMining/BitPoolMiner
        /// <summary>
        /// Collect stats from XMRig and post to API
        /// </summary>
        public override async void ReportStatsAsyc()
        {
            try
            {
                // Call RPC and get response
                XMRigTemplate xmrigTemplate = await GetRPCResponse();

                if (xmrigTemplate == null)
                {
                    return;
                }

                // Map response to BPM Statistics object
                MinerMonitorStat minerMonitorStat = new MinerMonitorStat();
                minerMonitorStat = MapRPCResponse(xmrigTemplate);

                if (minerMonitorStat == null)
                {
                    return;
                }

                System.Threading.Thread.Sleep(8000);
                PostMinerMonitorStat(minerMonitorStat);
            }
            catch (Exception e)
            {
                NLogProcessing.LogError(e, "Error reporting stats for XMRig");
            }
        }
コード例 #2
0
ファイル: XMRig.cs プロジェクト: BitPoolMining/BitPoolMiner
        /// <summary>
        /// Call RPC and get response
        /// </summary>
        /// <returns></returns>
        private async Task <XMRigTemplate> GetRPCResponse()
        {
            try
            {
                string        apiURL        = String.Format("http://{0}:{1}", HostName, ApiPort);
                XMRigTemplate xmrigTemplate = DownloadSerializedJSONData <XMRigTemplate>(apiURL);

                return(xmrigTemplate);
            }
            catch (Exception e)
            {
                NLogProcessing.LogError(e, $"Error reading RPC call from XMRig miner on port {ApiPort}");

                // Return null object;
                return(null);
            }
        }
コード例 #3
0
ファイル: XMRig.cs プロジェクト: BitPoolMining/BitPoolMiner
        /// <summary>
        /// Map XMRig response to BPM statistics objects
        /// </summary>
        /// <param name="XMRigTemplate"></param>
        /// <returns></returns>
        private MinerMonitorStat MapRPCResponse(XMRigTemplate xmrigTemplate)
        {
            try
            {
                // Create new Miner monitor stats object
                MinerMonitorStat minerMonitorStat = new MinerMonitorStat();
                minerMonitorStat.AccountGuid   = (Guid)Application.Current.Properties["AccountID"];
                minerMonitorStat.WorkerName    = Application.Current.Properties["WorkerName"].ToString();
                minerMonitorStat.CoinType      = this.CoinType;
                minerMonitorStat.MinerBaseType = MinerBaseType;


                List <GPUMonitorStat> gpuMonitorStatsList = new List <GPUMonitorStat>();

                GPUMonitorStat gpuMonitorStat = new GPUMonitorStat();
                gpuMonitorStat.AccountGuid  = (Guid)Application.Current.Properties["AccountID"];
                gpuMonitorStat.WorkerName   = Application.Current.Properties["WorkerName"].ToString();
                gpuMonitorStat.CoinType     = this.CoinType.ToString();
                gpuMonitorStat.GPUID        = 0;
                gpuMonitorStat.HardwareName = xmrigTemplate.cpu.brand;
                gpuMonitorStat.HashRate     = (decimal)xmrigTemplate.hashrate.highest;
                gpuMonitorStat.FanSpeed     = 0;
                gpuMonitorStat.Temp         = 0;
                gpuMonitorStat.Power        = 0;
                gpuMonitorStat.HardwareType = Hardware;

                // Sum up power and hashrate
                minerMonitorStat.Power    += 0;
                minerMonitorStat.HashRate += gpuMonitorStat.HashRate;

                // Add GPU stats to list
                gpuMonitorStatsList.Add(gpuMonitorStat);


                // Set list of GPU monitor stats
                minerMonitorStat.GPUMonitorStatList = gpuMonitorStatsList;


                return(minerMonitorStat);
            }
            catch (Exception e)
            {
                NLogProcessing.LogError(e, "Error mapping RPC Response for XMRig miner");
                return(null);
            }
        }