2014-10-23 10:52:21 -04:00
|
|
|
var Packet = require('../packets/packet');
|
|
|
|
|
|
|
|
function TextRow(columns)
|
|
|
|
{
|
|
|
|
this.columns = columns || [];
|
|
|
|
}
|
|
|
|
|
|
|
|
TextRow.fromPacket = function(packet) {
|
|
|
|
//packet.reset(); // set offset to starting point?
|
|
|
|
var columns = [];
|
|
|
|
while(packet.haveMoreData()) {
|
|
|
|
columns.push(packet.readLengthCodedString());
|
|
|
|
}
|
|
|
|
return new TextRow(columns);
|
|
|
|
};
|
|
|
|
|
|
|
|
TextRow.toPacket = function(column) {
|
|
|
|
var sequenceId = 0; // TODO remove, this is calculated now in connecton
|
|
|
|
var buffer, packet;
|
|
|
|
var length = 0;
|
|
|
|
column.forEach(function(val) {
|
|
|
|
if (val === null || typeof(val) == 'undefined') return ++length;
|
|
|
|
var str = val.toString(10);
|
|
|
|
length += Packet.lengthCodedNumberLength(str);
|
|
|
|
length += str.length;
|
|
|
|
});
|
|
|
|
buffer = new Buffer(length+4);
|
2015-01-28 15:33:44 -05:00
|
|
|
packet = new Packet(sequenceId, buffer, 0, length+4);
|
2014-10-23 10:52:21 -04:00
|
|
|
packet.offset = 4;
|
|
|
|
column.forEach(function(val) {
|
2015-01-28 15:33:44 -05:00
|
|
|
if (val === null) return packet.writeNull();
|
|
|
|
if (typeof val == 'undefined') return packet.writeInt8(0);
|
|
|
|
packet.writeLengthCodedString(val.toString(10));
|
2014-10-23 10:52:21 -04:00
|
|
|
});
|
|
|
|
return packet;
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = TextRow;
|