node-query/node_modules/mysql2/benchmarks/benchmark-server.js

73 lines
1.8 KiB
JavaScript
Raw Normal View History

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);
});
});