private void StartWorkOnDevice(IMiningDevice device, object[] param, string extranonce1, int extraNonce2Size, int diff) { string extranonce2 = string.Empty; lock (extraNonce2Lock) { extranonce2 = string.Format("{0:X8}", currentExtraNonce2); if (currentExtraNonce2 != int.MaxValue) { currentExtraNonce2++; } else { currentExtraNonce2 = 0; } } StratumWork deviceWork = new StratumWork(param, extranonce1, extraNonce2Size, extranonce2, diff); #if DEBUG string previous = deviceWork.Timestamp; #endif deviceWork.SetTimestamp(lastReceivedNTime + (uint)DateTime.Now.Subtract(lastWorkRecievedTime).TotalSeconds); #if DEBUG LogHelper.DebugConsoleLog(string.Format("Update timestamp from {0} to {1}.", previous, deviceWork.Timestamp), ConsoleColor.DarkYellow, LogVerbosity.Quiet); #endif device.StartWork(deviceWork); }
protected override void NoWork(IPoolWork oldWork, IMiningDevice device, bool requested) { StratumWork stratumWork = oldWork as StratumWork; if (stratumWork != null) { LogHelper.DebugConsoleLog("No new work, making new work."); StartWorkOnDevice(stratumWork, device, false, requested); } }
private void StartWorkOnDevice(StratumWork work, IMiningDevice device, bool restartWork, bool requested) { if (!restartWork && device != null && requested) { StartWorkOnDevice(device, work.CommandArray, work.Extranonce1, work.ExtraNonce2Size, work.Diff); } else if (restartWork) { StartWorking(work.CommandArray, work.Extranonce1, work.ExtraNonce2Size, work.Diff); } }
protected override void StartWork(IPoolWork work, IMiningDevice device, bool restartAll, bool requested) { StratumWork stratumWork = work as StratumWork; if (stratumWork != null) { LogHelper.DebugConsoleLog("Starting new work on devices."); currentExtraNonce2 = Random.Next(); StartWorkOnDevice(stratumWork, device, (restartAll || (AlwaysForceRestart && (mostRecentWork == null || mostRecentWork.JobId != work.JobId))), requested); mostRecentWork = stratumWork; } }