CentralMine.NET.ClientManager.WorkComplete C# (CSharp) Méthode

WorkComplete() public méthode

public WorkComplete ( Client solver, bool solutionFound, uint solution ) : void
solver Client
solutionFound bool
solution uint
Résultat void
        public void WorkComplete(Client solver, bool solutionFound, uint solution)
        {
            mEventLog.RecordClientWork(solver);
            WorkBlock block = solver.mCurrentBlock;
            block.mHashMan.FinishBlock(solver.mHashBlock);
            solver.mHashBlock = null;

            if (solutionFound && mBlock == block)
            {
                mBlocksSubmitted++;
                bool success = mUpstream.SubmitWork(block, solution);
                //if (!success)
                //    success = mUpstream.SubmitWork(block, (uint)IPAddress.HostToNetworkOrder((int)solution));

                // Start a new block
                if (success)
                {
                    // Send email notification about this found solution
                    /*
                    TimeSpan span = DateTime.Now - block.mHashMan.mStartTime;
                    string hashrate = string.Format("{0:N}", block.mHashMan.mHashesDone / span.TotalSeconds);
                    string body = "Found solution for " + block.mCurrency + " block: \n" + block.ToString() + "\n\n";
                    body += "Solution string: " + data + "\n";
                    body += "Block Accepted: " + success.ToString() + "\n";
                    body += "Hashes Done: " + block.mHashMan.mHashesDone + "\n";
                    body += "Time Spent: " + span.ToString() + "\n";
                    body += "Hashrate: " + hashrate + "\n";
                    body += "Clients: " + mClients.Count + "\n";
                    body += "\n\n";
                    //mMailer.SendEmail(body);
                    */
                    //mMailer.SendEmail("Block Accepted");

                    string data = block.GetSolutionString(solution);
                    mEventLog.RecordEvent(EventLog.EventType.Upstream, string.Format("Work accepted! solution: {0}, dataString: {1}", solution, data));

                    BeginBlock();
                    mBlocksAccepted++;
                }
                else
                {
                    string data = block.GetSolutionString(solution);
                    mEventLog.RecordEvent(EventLog.EventType.Upstream, string.Format("Work not accepted. solution: {0}, dataString: {1}", solution, data));
                }
            }
        }

Usage Example

Exemple #1
0
        void ProcessWorkComplete(Stream stream, bool byteswap = false)
        {
            TimeSpan elapsed = DateTime.Now - mWorkSent;

            BinaryReader br = new BinaryReader(stream);

            bool solutionFound = (br.ReadByte() != 0);
            uint solutionValue = br.ReadUInt32();

            mHashesDone = br.ReadUInt32();

            if (byteswap)
            {
                solutionValue = (uint)IPAddress.NetworkToHostOrder((int)solutionValue);
                mHashesDone   = (uint)IPAddress.NetworkToHostOrder((int)mHashesDone);
            }

            mTotalHashesDone += mHashesDone;
            mTheMan.WorkComplete(this, solutionFound, solutionValue);

            mHashrate      = mHashesDone / elapsed.TotalSeconds;
            mDesiredHashes = Math.Max((uint)mHashrate * 5, 50);
            //Console.WriteLine("Hashes: {0}  Time: {1}  Hashrate: {0:N}", mHashesDone, elapsed.TotalSeconds, mHashrate);
            mState = State.Ready;
        }