From 3fe66618194eec28fed727b7ea2ed5bdebaf8812 Mon Sep 17 00:00:00 2001 From: brianc Date: Tue, 19 Oct 2010 23:49:55 -0500 Subject: [PATCH] refactor sending simple messages --- lib/client.js | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/lib/client.js b/lib/client.js index ed8ac769..e0b234ec 100644 --- a/lib/client.js +++ b/lib/client.js @@ -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);