refactor sending simple messages

This commit is contained in:
brianc 2010-10-19 23:49:55 -05:00
parent 406e8a56a9
commit 3fe6661819

View File

@ -28,18 +28,14 @@ p.connect = function() {
var self = this;
this.stream.on('connect', function() {
var data = ['user',self.user,'database', self.database, '\0'].join('\0');
var dataBuffer = Buffer(data);
var fullBuffer = Buffer(8 + dataBuffer.length);
fullBuffer[0] = fullBuffer.length >>> 24;
fullBuffer[1] = fullBuffer.length >>> 16;
fullBuffer[2] = fullBuffer.length >>> 8;
fullBuffer[3] = fullBuffer.length >>> 0;
fullBuffer[4] = 0;
fullBuffer[5] = 3;
fullBuffer[6] = 0;
fullBuffer[7] = 0;
fullBuffer.write(data,8);
self.stream.write(fullBuffer);
var dataBuffer = Buffer(data,'utf8');
var fullBuffer = Buffer(4 + dataBuffer.length);
fullBuffer[0] = 0;
fullBuffer[1] = 3;
fullBuffer[2] = 0;
fullBuffer[3] = 0;
dataBuffer.copy(fullBuffer, 4, 0);
self.send(null, fullBuffer);
});
var parser = new Parser();
this.stream.on('data', function(buffer) {
@ -53,16 +49,8 @@ p.connect = function() {
});
this.on('authenticationCleartextPassword', function() {
console.log(self);
var stringBuffer = new Buffer(self.password + '\0', 'utf8');
var buffer = Buffer(stringBuffer.length + 5);
buffer[0] = 0x70;
buffer[1] = 0;
buffer[2] = 0;
buffer[3] = 0;
buffer[4] = buffer.length - 1;
buffer.write(self.password, 5)
self.stream.write(buffer);
self.send('p', stringBuffer);
});
this.on('readyForQuery', function() {
@ -71,6 +59,21 @@ p.connect = function() {
});
};
p.send = function(code, bodyBuffer) {
var length = bodyBuffer.length + 4;
var buffer = Buffer(length + (code ? 1 : 0));
var offset = 0;
if(code) {
buffer[offset++] = Buffer(code,'utf8') [0];
}
buffer[offset++] = length >>> 24 & 0xFF;
buffer[offset++] = length >>> 16 & 0xFF;
buffer[offset++] = length >>> 8 & 0xFF;
buffer[offset++] = length >>> 0 & 0xFF;
bodyBuffer.copy(buffer, offset, 0);
return this.stream.write(buffer);
};
p.disconnect = function() {
var terminationBuffer = new Buffer([88,0,0,0,4]);
this.stream.write(terminationBuffer);