node-query/node_modules/mysql2/lib/packets/resultset_header.js

44 lines
1.4 KiB
JavaScript

// TODO: rename to OK packet
var Packet = require('../packets/packet');
function ResultSetHeader(packet, bigNumberStrings)
{
if (packet.buffer[packet.offset] !== 0) {
this.fieldCount = packet.readLengthCodedNumber();
} else {
this.fieldCount = packet.readInt8(); // skip OK byte
this.affectedRows = packet.readLengthCodedNumber(bigNumberStrings);
this.insertId = packet.readLengthCodedNumber(bigNumberStrings);
this.serverStatus = packet.readInt16();
this.warningStatus = packet.readInt16();
}
if (this.fieldCount === null) {
this.infileName = packet.readString();
}
// snippet from mysql-native:
// res.affected_rows = this.lcnum();
// res.insert_id = this.lcnum();
// res.server_status = this.num(2);
// res.warning_count = this.num(2);
// TODO: extra
}
// TODO: should be consistent instance member, but it's just easier here to have just function
ResultSetHeader.toPacket = function(fieldCount, insertId, sequenceId) {
var length = 4 + Packet.lengthCodedNumberLength(fieldCount);
if (typeof(insertId) != 'undefined')
length += Packet.lengthCodedNumberLength(insertId);
var buffer = new Buffer(length);
var packet = new Packet(0, buffer, 0, length);
packet.offset = 4;
packet.writeLengthCodedNumber(fieldCount);
if (typeof(insertId) != 'undefined')
packet.writeLengthCodedNumber(insertId);
return packet;
};
module.exports = ResultSetHeader;