EofPacket ParseEOF() { EofPacket eofPacket = new EofPacket(_conn.IsProtocol41);//if temp[4]=0xfe then eof packet eofPacket.ParsePacketHeader(_parser); _receiveBuffer = CheckLimit(eofPacket.GetPacketLength(), _receiveBuffer, DEFAULT_BUFFER_SIZE); eofPacket.ParsePacket(_parser); CheckBeforeParseHeader(_receiveBuffer); return(eofPacket); }
bool Parse_Field_EOF(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) //check if length is enough to parse { return(_needMoreData = true); } var eofPacket = new EofPacket(_currentHeader, this._isProtocol41); eofPacket.ParsePacketContent(reader); _parsingState = ResultPacketState.Row_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_Row_EOF(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) //check if length is enough to parse { return(_needMoreData = true); } //finish all of each row var eofPacket = new EofPacket(_currentHeader, this._isProtocol41); eofPacket.ParsePacketContent(reader); if (((eofPacket.serverStatus & (int)MySqlServerStatus.SERVER_MORE_RESULTS_EXISTS)) != 0) { var tableResult = new MySqlTableResult(_tableHeader, _rows); _rows = null;//reset //more than one result table //mu if (_currentMultResultSet != null) { _currentMultResultSet.AddTableResult(tableResult); } else { //first time _currentMultResultSet = new MySqlMultiTableResult(); _currentMultResultSet.AddTableResult(tableResult);; //not set _parseResult*** because this not finish } //-------------------- //see: https://dev.mysql.com/doc/internals/en/multi-resultset.html //may has more than 1 result _parsingState = ResultPacketState.Header_Header; return(false); } else { //after finish we create a result table //the move rows into the table _parseResult = new MySqlTableResult(_tableHeader, _rows); //not link to the rows anymore _rows = null; _currentMultResultSet = null; _parsingState = ResultPacketState.ShouldEnd; //*** return(true); //end } }
public bool ReadRow() { if (_tableHeader == null) { return(_hasSomeRow = false); } switch (_receiveBuffer[_parser.Position + 4]) { case ERROR_CODE: { LoadError = new ErrPacket(); LoadError.ParsePacket(_parser); return(_hasSomeRow = false); } case EOF_CODE: { EofPacket rowDataEof = ParseEOF(); return(_hasSomeRow = false); } default: { if (_prepareContext != null) { _lastPrepareRow.ReuseSlots(); _lastPrepareRow.ParsePacketHeader(_parser); _receiveBuffer = CheckLimit(_lastPrepareRow.GetPacketLength(), _receiveBuffer, DEFAULT_BUFFER_SIZE); _lastPrepareRow.ParsePacket(_parser); CheckBeforeParseHeader(_receiveBuffer); } else { _lastRow.ReuseSlots(); _lastRow.ParsePacketHeader(_parser); _receiveBuffer = CheckLimit(_lastRow.GetPacketLength(), _receiveBuffer, DEFAULT_BUFFER_SIZE); _lastRow.ParsePacket(_parser); CheckBeforeParseHeader(_receiveBuffer); } return(_hasSomeRow = true); } } }
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); } }
void ParseResultSet() { ResultSetHeaderPacket resultPacket = new ResultSetHeaderPacket(); resultPacket.ParsePacket(_parser); this._tableHeader = new TableHeader(); _tableHeader.TypeCast = typeCast; _tableHeader.NestTables = nestTables; _tableHeader.ConnConfig = _conn.config; bool protocol41 = _conn.IsProtocol41; while (_receiveBuffer[_parser.Position + 4] != EOF_CODE) { FieldPacket fieldPacket = ParseColumn(); _tableHeader.AddField(fieldPacket); } EofPacket fieldEof = ParseEOF(); //----- _lastRow = new RowDataPacket(_tableHeader); }
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_Row_EOF(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) //check if length is enough to parse { return _needMoreData = true; } //finish all of each row var eofPacket = new EofPacket(_currentHeader, this._isProtocol41); eofPacket.ParsePacketContent(reader); if (((eofPacket.serverStatus & (int)MySqlServerStatus.SERVER_MORE_RESULTS_EXISTS)) != 0) { var tableResult = new MySqlTableResult(_tableHeader, _rows); _rows = null;//reset //more than one result table //mu if (_currentMultResultSet != null) { _currentMultResultSet.AddTableResult(tableResult); } else { //first time _currentMultResultSet = new MySqlMultiTableResult(); _currentMultResultSet.AddTableResult(tableResult); ; //not set _parseResult*** because this not finish } //-------------------- //see: https://dev.mysql.com/doc/internals/en/multi-resultset.html //may has more than 1 result _parsingState = ResultPacketState.Header_Header; return false; } else { //after finish we create a result table //the move rows into the table _parseResult = new MySqlTableResult(_tableHeader, _rows); //not link to the rows anymore _rows = null; _currentMultResultSet = null; _parsingState = ResultPacketState.ShouldEnd;//*** return true;//end } }
bool Parse_Field_EOF(MySqlStreamReader reader) { if (!reader.Ensure(_currentHeader.ContentLength)) //check if length is enough to parse { return _needMoreData = true; } var eofPacket = new EofPacket(_currentHeader, this._isProtocol41); eofPacket.ParsePacketContent(reader); _parsingState = ResultPacketState.Row_Header; return false; }