index.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. 'binlog_dump register_slave ssl_request handshake handshake_response query resultset_header column_definition text_row binary_row prepare_statement close_statement prepared_statement_header execute change_user'.split(' ').forEach(function(name) {
  2. var ctor = require('./' + name + '.js');
  3. module.exports[ctor.name] = ctor;
  4. // monkey-patch it to include name if debug is on
  5. if (process.env.NODE_DEBUG) {
  6. if (ctor.prototype.toPacket) {
  7. var old = ctor.prototype.toPacket;
  8. ctor.prototype.toPacket = function() {
  9. var p = old.call(this);
  10. p._name = ctor.name;
  11. return p;
  12. }
  13. }
  14. }
  15. });
  16. // simple packets:
  17. var Packet = require('./packet');
  18. module.exports.Packet = Packet;
  19. module.exports.OK = function OK() {
  20. };
  21. module.exports.OK.toPacket = function(args) {
  22. args = args || {};
  23. var affectedRows = args.affectedRows || 0;
  24. var insertId = args.insertId || 0;
  25. var serverStatus = args.serverStatus || 0;
  26. var warningCount = args.warningCount || 0;
  27. var message = args.message || "";
  28. var length = 9 + Packet.lengthCodedNumberLength(affectedRows);
  29. length += Packet.lengthCodedNumberLength(insertId);
  30. var buffer = new Buffer(length);
  31. var packet = new Packet(0, buffer, 0, length);
  32. packet.offset = 4;
  33. packet.writeInt8(0);
  34. packet.writeLengthCodedNumber(affectedRows);
  35. packet.writeLengthCodedNumber(insertId);
  36. packet.writeInt16(serverStatus);
  37. packet.writeInt16(warningCount);
  38. packet.writeString(message);
  39. packet._name = "OK";
  40. return packet;
  41. };
  42. // warnings, statusFlags
  43. module.exports.EOF = function EOF() {
  44. };
  45. module.exports.EOF.toPacket = function(warnings, statusFlags) {
  46. if (typeof warnings == 'undefined')
  47. warnings = 0;
  48. if (typeof statusFlags == 'undefined')
  49. statusFlags = 0;
  50. var packet = new Packet(0, new Buffer(9), 0, 9);
  51. packet.offset = 4;
  52. packet.writeInt8(0xfe);
  53. packet.writeInt16(warnings);
  54. packet.writeInt16(statusFlags);
  55. packet._name = "EOF";
  56. return packet;
  57. };
  58. module.exports.Error = function Error() {
  59. };
  60. module.exports.Error.toPacket = function(args) {
  61. var length = 13 + Buffer.byteLength(args.message, 'utf8');
  62. var packet = new Packet(0, new Buffer(length), 0, length);
  63. packet.offset = 4;
  64. packet.writeInt8(0xff);
  65. packet.writeInt16(args.code);
  66. packet.writeString('#_____');
  67. packet.writeString(args.message);
  68. packet._name = "Error";
  69. return packet;
  70. };