73 lines
1.8 KiB
JavaScript
73 lines
1.8 KiB
JavaScript
var mysql = require('../index.js');
|
|
var flags = require('../lib/constants/client');
|
|
var Packets = require('../lib/packets/index.js');
|
|
var Packet = require('../lib/packets/packet');
|
|
|
|
function prepareReply(columns, row, n) {
|
|
var length = 0;
|
|
var rsHeader = Packets.ResultSetHeader.toPacket(columns.length);
|
|
length += rsHeader.length();
|
|
var columnPackets = [];
|
|
columns.forEach(function(column) {
|
|
var packet = Packets.ColumnDefinition.toPacket(column);
|
|
length += packet.length();
|
|
columnPackets.push(packet);
|
|
});
|
|
var eof = Packets.EOF.toPacket();
|
|
length += 2*eof.length();
|
|
var rowPacket = Packets.TextRow.toPacket(row);
|
|
length += n*rowPacket.length();
|
|
|
|
var replyBuffer = new Buffer(length);
|
|
var offset = 0;
|
|
var id = 1;
|
|
function add(packet) {
|
|
packet.writeHeader(id);
|
|
id = id + 1;
|
|
packet.buffer.copy(replyBuffer, offset);
|
|
offset += packet.length();
|
|
}
|
|
|
|
var i;
|
|
add(rsHeader);
|
|
for (i=0; i < columns.length; ++i)
|
|
add(columnPackets[i]);
|
|
add(eof);
|
|
for (i=0; i < n; ++i)
|
|
add(rowPacket);
|
|
add(eof);
|
|
|
|
return replyBuffer;
|
|
}
|
|
|
|
var buff = prepareReply([{
|
|
catalog: 'def',
|
|
schema: 'test',
|
|
table: 'test_table',
|
|
orgTable: 'test_table',
|
|
name: 'beta',
|
|
orgName: 'beta',
|
|
characterSet: 33,
|
|
columnLength: 384,
|
|
columnType: 3, //253,
|
|
flags: 0,
|
|
decimals: 0
|
|
}], ['12345'], 1);
|
|
|
|
var server = mysql.createServer();
|
|
server.listen('/tmp/mybench3.sock');
|
|
server.on('connection', function(conn) {
|
|
conn.serverHandshake({
|
|
protocolVersion: 10,
|
|
serverVersion: 'node.js rocks',
|
|
connectionId: 1234,
|
|
statusFlags: 2,
|
|
characterSet: 8,
|
|
capabilityFlags: 0xffffff
|
|
});
|
|
conn.on('query', function(query) {
|
|
//console.log(query);
|
|
conn.write(buff);
|
|
});
|
|
});
|