text_row.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. var Packet = require('../packets/packet');
  2. function TextRow(columns)
  3. {
  4. this.columns = columns || [];
  5. }
  6. TextRow.fromPacket = function(packet) {
  7. //packet.reset(); // set offset to starting point?
  8. var columns = [];
  9. while(packet.haveMoreData()) {
  10. columns.push(packet.readLengthCodedString());
  11. }
  12. return new TextRow(columns);
  13. };
  14. TextRow.toPacket = function(column) {
  15. var sequenceId = 0; // TODO remove, this is calculated now in connecton
  16. var buffer, packet;
  17. var length = 0;
  18. column.forEach(function(val) {
  19. if (val === null || typeof(val) == 'undefined') return ++length;
  20. var str = val.toString(10);
  21. length += Packet.lengthCodedNumberLength(str);
  22. length += str.length;
  23. });
  24. buffer = new Buffer(length+4);
  25. packet = new Packet(sequenceId, buffer, 0, length+4);
  26. packet.offset = 4;
  27. column.forEach(function(val) {
  28. if (val === null) return packet.writeNull();
  29. if (typeof val == 'undefined') return packet.writeInt8(0);
  30. packet.writeLengthCodedString(val.toString(10));
  31. });
  32. return packet;
  33. };
  34. module.exports = TextRow;