//---------------------------------------------------- bool Parse_ColumnField_Header(MySqlStreamReader reader) { if (!reader.Ensure(PACKET_HEADER_LENGTH + 1)) { return(_needMoreData = true); } _currentHeader = reader.ReadPacketHeader(); byte type = reader.PeekByte();//1 switch (type) { case ERROR_CODE: _parsingState = PrepareResponseParseState.Error_Content; break; case EOF_CODE: //? _parsingState = PrepareResponseParseState.ColumnField_EOF; break; default: _parsingState = PrepareResponseParseState.ColumnField_Content; break; } return(false); }
bool Parse_PrepareOk_Header(MySqlStreamReader reader) { //this is first step *** if (!reader.Ensure(PACKET_HEADER_LENGTH + 1)) { return(_needMoreData = true); } _currentHeader = reader.ReadPacketHeader(); byte type = reader.PeekByte(); switch (type) { case ERROR_CODE: _parsingState = PrepareResponseParseState.Error_Content; break; case EOF_CODE: case OK_CODE: _parsingState = PrepareResponseParseState.OkPrepare_Content; break; default: throw new NotSupportedException("Packet type don't match!!"); } return(false); }
//---------------------------------------------------- bool ParseErrorPacket(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) { return(_needMoreData = true); } var errPacket = new ErrPacket(_currentHeader); errPacket.ParsePacketContent(reader); // _finalResult = new MySqlErrorResult(errPacket); _parsingState = PrepareResponseParseState.ShouldEnd; reader.Reset(); return(true); }
bool Parse_ColumnField_Content(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) { return(_needMoreData = true); } var field = new FieldPacket(_currentHeader, _isProtocol41); field.ParsePacketContent(reader); field.FieldIndex = _tableHeader.ColumnCount; //set this before add to field list _tableHeader.AddField(field); //back to field header _parsingState = PrepareResponseParseState.ColumnField_Header; return(false); }
bool Parse_ColumnField_EOF(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) { return(_needMoreData = true); } var eofPacket = new EofPacket(_currentHeader, this._isProtocol41); eofPacket.ParsePacketContent(reader); // _finalResult = new MySqlPrepareResponseResult(_okPrepare, _tableHeader); _parsingState = PrepareResponseParseState.ShouldEnd; reader.Reset(); return(true);//finish }
bool Parse_PrepareOk_Content(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) { return(_needMoreData = true); } var okPrepare = new OkPrepareStmtPacket(_currentHeader); okPrepare.ParsePacketContent(reader); _okPrepare = okPrepare; //---------------------------------------------------- _tableHeader = new TableHeader(true); //---------------------------------------------------- //*** 3 possible way after read prepare ok header*** if (okPrepare.num_params == 0) { //if prepare stmt dosn't have binding parameters if (okPrepare.num_columns > 0) { //has some column _parsingState = PrepareResponseParseState.ColumnField_Header; } else { _finalResult = new MySqlPrepareResponseResult(okPrepare, _tableHeader); _parsingState = PrepareResponseParseState.ShouldEnd; reader.Reset(); return(true); //finish } } else { _parsingState = PrepareResponseParseState.BindingField_Header; } return(false); }
bool Parse_BindingField_EOF(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) { return(_needMoreData = true); } var eofPacket = new EofPacket(_currentHeader, _isProtocol41); eofPacket.ParsePacketContent(reader); if (_okPrepare.num_columns > 0) { _parsingState = PrepareResponseParseState.ColumnField_Header; return(false); } else { _finalResult = new MySqlPrepareResponseResult(_okPrepare, _tableHeader); _parsingState = PrepareResponseParseState.ShouldEnd; reader.Reset(); return(true); } }
//---------------------------------------------------- bool ParseErrorPacket(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) { return _needMoreData = true; } var errPacket = new ErrPacket(_currentHeader); errPacket.ParsePacketContent(reader); // _finalResult = new MySqlErrorResult(errPacket); _parsingState = PrepareResponseParseState.ShouldEnd; reader.Reset(); return true; }
bool Parse_ColumnField_EOF(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) { return _needMoreData = true; } var eofPacket = new EofPacket(_currentHeader, this._isProtocol41); eofPacket.ParsePacketContent(reader); // _finalResult = new MySqlPrepareResponseResult(_okPrepare, _tableHeader); _parsingState = PrepareResponseParseState.ShouldEnd; reader.Reset(); return true;//finish }
bool Parse_ColumnField_Content(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) { return _needMoreData = true; } var field = new FieldPacket(_currentHeader, _isProtocol41); field.ParsePacketContent(reader); field.FieldIndex = _tableHeader.ColumnCount; //set this before add to field list _tableHeader.AddField(field); //back to field header _parsingState = PrepareResponseParseState.ColumnField_Header; return false; }
//---------------------------------------------------- bool Parse_ColumnField_Header(MySqlStreamReader reader) { if (!reader.Ensure(PACKET_HEADER_LENGTH + 1)) { return _needMoreData = true; } _currentHeader = reader.ReadPacketHeader(); byte type = reader.PeekByte();//1 switch (type) { case ERROR_CODE: _parsingState = PrepareResponseParseState.Error_Content; break; case EOF_CODE: //? _parsingState = PrepareResponseParseState.ColumnField_EOF; break; default: _parsingState = PrepareResponseParseState.ColumnField_Content; break; } return false; }
bool Parse_PrepareOk_Content(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) { return _needMoreData = true; } var okPrepare = new OkPrepareStmtPacket(_currentHeader); okPrepare.ParsePacketContent(reader); _okPrepare = okPrepare; //---------------------------------------------------- _tableHeader = new TableHeader(true); //---------------------------------------------------- //*** 3 possible way after read prepare ok header*** if (okPrepare.num_params == 0) { //if prepare stmt dosn't have binding parameters if (okPrepare.num_columns > 0) { //has some column _parsingState = PrepareResponseParseState.ColumnField_Header; } else { _finalResult = new MySqlPrepareResponseResult(okPrepare, _tableHeader); _parsingState = PrepareResponseParseState.ShouldEnd; reader.Reset(); return true; //finish } } else { _parsingState = PrepareResponseParseState.BindingField_Header; } return false; }
bool Parse_PrepareOk_Header(MySqlStreamReader reader) { //this is first step *** if (!reader.Ensure(PACKET_HEADER_LENGTH + 1)) { return _needMoreData = true; } _currentHeader = reader.ReadPacketHeader(); byte type = reader.PeekByte(); switch (type) { case ERROR_CODE: _parsingState = PrepareResponseParseState.Error_Content; break; case EOF_CODE: case OK_CODE: _parsingState = PrepareResponseParseState.OkPrepare_Content; break; default: throw new NotSupportedException("Packet type don't match!!"); } return false; }