void Parse()
 {
     _requestHeader = new BinaryRequestHeader(_rawData);
     this.State = ParserState.WaitingForData;
     ProcessHeader();
 }
        void ProcessHeader()
        {
            bool valid = true;
            if (_requestHeader.TotalBodyLenght < _requestHeader.KeyLength + _requestHeader.ExtraLength)
                valid = false;
            if (_requestHeader.MagicByte != Magic.Request)
                valid = false;
            if (!valid)
            {
                _requestHeader = new BinaryRequestHeader();
                _requestHeader.Opcode = Opcode.Invalid_Command;
                this.State = ParserState.ReadyToDispatch;
            }

            if (_requestHeader.TotalBodyLenght == 0)
                this.Build();
        }