You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.2 KiB
65 lines
2.2 KiB
module.exports = FieldPacket;
|
|
function FieldPacket(options) {
|
|
options = options || {};
|
|
|
|
this.catalog = options.catalog;
|
|
this.db = options.db;
|
|
this.table = options.table;
|
|
this.orgTable = options.orgTable;
|
|
this.name = options.name;
|
|
this.orgName = options.orgName;
|
|
this.filler1 = undefined;
|
|
this.charsetNr = options.charsetNr;
|
|
this.length = options.length;
|
|
this.type = options.type;
|
|
this.flags = options.flags;
|
|
this.decimals = options.decimals;
|
|
this.filler2 = undefined;
|
|
this.default = options.default;
|
|
this.zeroFill = options.zeroFill;
|
|
}
|
|
|
|
FieldPacket.prototype.parse = function(parser) {
|
|
this.catalog = parser.parseLengthCodedString();
|
|
this.db = parser.parseLengthCodedString();
|
|
this.table = parser.parseLengthCodedString();
|
|
this.orgTable = parser.parseLengthCodedString();
|
|
this.name = parser.parseLengthCodedString();
|
|
this.orgName = parser.parseLengthCodedString();
|
|
this.filler1 = parser.parseFiller(1);
|
|
this.charsetNr = parser.parseUnsignedNumber(2);
|
|
this.fieldLength = parser.parseUnsignedNumber(4);
|
|
this.type = parser.parseUnsignedNumber(1);
|
|
this.flags = parser.parseUnsignedNumber(2);
|
|
this.decimals = parser.parseUnsignedNumber(1);
|
|
this.filler2 = parser.parseFiller(2);
|
|
|
|
// parsed flags
|
|
this.zeroFill = (this.flags & 0x0040 ? true : false);
|
|
|
|
if (parser.reachedPacketEnd()) {
|
|
return;
|
|
}
|
|
|
|
this.default = parser.parseLengthCodedNumber();
|
|
};
|
|
|
|
FieldPacket.prototype.write = function(writer) {
|
|
writer.writeLengthCodedString(this.catalog);
|
|
writer.writeLengthCodedString(this.db);
|
|
writer.writeLengthCodedString(this.table);
|
|
writer.writeLengthCodedString(this.orgTable);
|
|
writer.writeLengthCodedString(this.name);
|
|
writer.writeLengthCodedString(this.orgName);
|
|
writer.writeFiller(1);
|
|
writer.writeUnsignedNumber(2, this.charsetNr || 0);
|
|
writer.writeUnsignedNumber(4, this.fieldLength || 0);
|
|
writer.writeUnsignedNumber(1, this.type) || 0;
|
|
writer.writeUnsignedNumber(2, this.flags || 0);
|
|
writer.writeUnsignedNumber(1, this.decimals || 0);
|
|
writer.writeFiller(2);
|
|
|
|
if (this.default !== undefined) {
|
|
writer.writeLengthCodedString(this.default);
|
|
}
|
|
};
|