mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
Moved buffer list to test directory and replaced w/ slightly cleaner
"writer" for use in the library code. BufferList was always supposed to be a test helper and the api is trash
This commit is contained in:
parent
6969eb6404
commit
0d2d6b5107
@ -4,7 +4,7 @@ var crypto = require('crypto');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
|
||||
var utils = require(__dirname + '/utils');
|
||||
var BufferList = require(__dirname + '/buffer-list');
|
||||
|
||||
var Connection = require(__dirname + '/connection');
|
||||
|
||||
var Client = function(config) {
|
||||
|
||||
@ -4,7 +4,7 @@ var crypto = require('crypto');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
|
||||
var utils = require(__dirname + '/utils');
|
||||
var BufferList = require(__dirname + '/buffer-list');
|
||||
var Writer = require(__dirname + '/writer');
|
||||
|
||||
var Connection = function(config) {
|
||||
EventEmitter.call(this);
|
||||
@ -53,7 +53,7 @@ p.connect = function(port, host) {
|
||||
};
|
||||
|
||||
p.startup = function(config) {
|
||||
var buffer = new BufferList()
|
||||
var buffer = new Writer()
|
||||
.addInt16(3)
|
||||
.addInt16(0)
|
||||
.addCString('user')
|
||||
@ -61,6 +61,7 @@ p.startup = function(config) {
|
||||
.addCString('database')
|
||||
.addCString(config.database)
|
||||
.addCString('');
|
||||
|
||||
this.send(false, buffer.join());
|
||||
};
|
||||
|
||||
@ -107,7 +108,7 @@ p.parse = function(query) {
|
||||
//normalize null type array
|
||||
query.types = query.types || [];
|
||||
var len = query.types.length;
|
||||
var buffer = new BufferList()
|
||||
var buffer = new Writer()
|
||||
.addCString(query.name) //name of query
|
||||
.addCString(query.text) //actual query text
|
||||
.addInt16(len);
|
||||
@ -127,7 +128,7 @@ p.bind = function(config) {
|
||||
config.statement = config.statement || '';
|
||||
var values = config.values || [];
|
||||
var len = values.length;
|
||||
var buffer = new BufferList()
|
||||
var buffer = new Writer()
|
||||
.addCString(config.portal)
|
||||
.addCString(config.statement)
|
||||
.addInt16(0) //always use default text format
|
||||
@ -150,7 +151,7 @@ p.execute = function(config) {
|
||||
config = config || {};
|
||||
config.portal = config.portal || '';
|
||||
config.rows = config.rows || '';
|
||||
var buffer = new BufferList()
|
||||
var buffer = new Writer()
|
||||
.addCString(config.portal)
|
||||
.addInt32(config.rows)
|
||||
.join();
|
||||
|
||||
56
lib/writer.js
Normal file
56
lib/writer.js
Normal file
@ -0,0 +1,56 @@
|
||||
var Writer = function() {
|
||||
this.buffers = [];
|
||||
};
|
||||
|
||||
var p = Writer.prototype;
|
||||
|
||||
p.add = function(buffer) {
|
||||
this.buffers.push(buffer);
|
||||
return this;
|
||||
};
|
||||
|
||||
p.addInt16 = function(val, front) {
|
||||
return this.add(Buffer([
|
||||
(val >>> 8),
|
||||
(val >>> 0)
|
||||
]));
|
||||
};
|
||||
|
||||
p.getByteLength = function(initial) {
|
||||
return this.buffers.reduce(function(previous, current){
|
||||
return previous + current.length;
|
||||
},initial || 0);
|
||||
};
|
||||
|
||||
p.addInt32 = function(val, first) {
|
||||
return this.add(Buffer([
|
||||
(val >>> 24 & 0xFF),
|
||||
(val >>> 16 & 0xFF),
|
||||
(val >>> 8 & 0xFF),
|
||||
(val >>> 0 & 0xFF)
|
||||
]));
|
||||
};
|
||||
|
||||
p.addCString = function(val) {
|
||||
return this.add(Buffer(val + '\0','utf8'));
|
||||
};
|
||||
|
||||
p.addChar = function(char, first) {
|
||||
return this.add(Buffer(char,'utf8'), first);
|
||||
};
|
||||
|
||||
p.join = function() {
|
||||
var result = Buffer(this.getByteLength());
|
||||
var index = 0;
|
||||
var buffers = this.buffers;
|
||||
var length = this.buffers.length;
|
||||
for(var i = 0; i < length; i ++) {
|
||||
var buffer = buffers[i];
|
||||
buffer.copy(result, index, 0);
|
||||
index += buffer.length;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
module.exports = Writer;
|
||||
|
||||
@ -5,7 +5,7 @@ require.paths.unshift(__dirname + '/../lib/');
|
||||
|
||||
Client = require('client');
|
||||
EventEmitter = require('events').EventEmitter;
|
||||
BufferList = require('buffer-list')
|
||||
BufferList = require(__dirname+'/buffer-list')
|
||||
buffers = require(__dirname + '/test-buffers');
|
||||
Connection = require('connection');
|
||||
var args = require(__dirname + '/cli');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user