private IAsyncResult BeginReadVerifyReply(AsyncCallback cb, object state)
        {
            ReadVerifyReply_SO y_so = new ReadVerifyReply_SO(cb, state);

            this.BeginReadWhole(y_so.Phase1Data, 0, 5, new AsyncCallback(this.Phase1_End), y_so);
            return(y_so);
        }
        private void Phase2_End(IAsyncResult ar)
        {
            ReadVerifyReply_SO asyncState = (ReadVerifyReply_SO)ar.AsyncState;

            try
            {
                asyncState.UpdateContext();
                this.EndReadWhole(ar);
            }
            catch (Exception exception)
            {
                asyncState.Exception = exception;
            }
            asyncState.SetCompleted();
        }
        private void Phase1_End(IAsyncResult ar)
        {
            ReadVerifyReply_SO asyncState = (ReadVerifyReply_SO)ar.AsyncState;

            try
            {
                asyncState.UpdateContext();
                this.EndReadWhole(ar);
                int size = this.VerifyReplyAndGetLeftBytes(asyncState.Phase1Data);
                asyncState.Reply = new byte[5 + size];
                asyncState.Phase1Data.CopyTo(asyncState.Reply, 0);
                this.BeginReadWhole(asyncState.Reply, 5, size, new AsyncCallback(this.Phase2_End), asyncState);
            }
            catch (Exception exception)
            {
                asyncState.Exception = exception;
                asyncState.SetCompleted();
            }
        }
 IAsyncResult BeginReadVerifyReply(AsyncCallback cb, object state)
 {
     ReadVerifyReply_SO stateObj = new ReadVerifyReply_SO(cb, state);
     BeginReadWhole(stateObj.Phase1Data, 0, 5, 
         new AsyncCallback(Phase1_End), stateObj);
     return stateObj;
 }