CentralMine.NET.US_Stratum.ThreadUpdate C# (CSharp) Method

ThreadUpdate() private method

private ThreadUpdate ( ) : void
return void
        void ThreadUpdate()
        {
            while (true)
            {
                try
                {
                    ReadNetwork();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Disconnect();
                }

                switch (mStatus)
                {
                    case Status.Disconnected:
                        if (mURL != null && mPort != 0)
                        {
                            // We have something to try to connect to, do it now
                            mSocketAsync = mSocket.BeginConnect(mURL, (int)mPort, null, null);
                            mStatus = Status.Connecting;
                        }
                        break;
                    case Status.Connecting:
                        {
                            if (mSocketAsync.IsCompleted)
                            {
                                mSocket.EndConnect(mSocketAsync);
                                if (mSocket.Connected)
                                {
                                    mStatus = Status.Connected;
                                    mRPCID = 1;
                                }
                                else
                                    Disconnect();
                                mSocketAsync = null;
                            }
                        }
                        break;
                    case Status.Connected:
                        {
                            // Now connected, subscribe for mining
                            SendRPC("mining.subscribe", null);
                            mExtraNOnceSize = -1;
                            mStatus = Status.Subscribing;
                        }
                        break;
                    case Status.Subscribing:
                        if (mExtraNOnceSize >= 0 && mUser != null && mPass != null)
                        {
                            // Done subscribing for mining, now authorize the worker
                            // {"params": ["slush.miner1", "password"], "id": 2, "method": "mining.authorize"}
                            string[] parms = new string[2];
                            parms[0] = mUser;
                            parms[1] = mPass;
                            SendRPC("mining.authorize", parms);
                            mStatus = Status.Authorizing;
                        }
                        break;
                    case Status.Authorizing:
                        if( mAuthorized )
                        {
                            mStatus = Status.Ready;
                        }
                        break;
                    case Status.Ready:
                        break;
                }

                Thread.Sleep(50);
            }
        }