Skip to content

Commit 0d2d6b5

Browse files
committed
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
1 parent 6969eb6 commit 0d2d6b5

File tree

5 files changed

+64
-7
lines changed

5 files changed

+64
-7
lines changed

lib/client.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var crypto = require('crypto');
44
var EventEmitter = require('events').EventEmitter;
55

66
var utils = require(__dirname + '/utils');
7-
var BufferList = require(__dirname + '/buffer-list');
7+
88
var Connection = require(__dirname + '/connection');
99

1010
var Client = function(config) {

lib/connection.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var crypto = require('crypto');
44
var EventEmitter = require('events').EventEmitter;
55

66
var utils = require(__dirname + '/utils');
7-
var BufferList = require(__dirname + '/buffer-list');
7+
var Writer = require(__dirname + '/writer');
88

99
var Connection = function(config) {
1010
EventEmitter.call(this);
@@ -53,14 +53,15 @@ p.connect = function(port, host) {
5353
};
5454

5555
p.startup = function(config) {
56-
var buffer = new BufferList()
56+
var buffer = new Writer()
5757
.addInt16(3)
5858
.addInt16(0)
5959
.addCString('user')
6060
.addCString(config.user)
6161
.addCString('database')
6262
.addCString(config.database)
6363
.addCString('');
64+
6465
this.send(false, buffer.join());
6566
};
6667

@@ -107,7 +108,7 @@ p.parse = function(query) {
107108
//normalize null type array
108109
query.types = query.types || [];
109110
var len = query.types.length;
110-
var buffer = new BufferList()
111+
var buffer = new Writer()
111112
.addCString(query.name) //name of query
112113
.addCString(query.text) //actual query text
113114
.addInt16(len);
@@ -127,7 +128,7 @@ p.bind = function(config) {
127128
config.statement = config.statement || '';
128129
var values = config.values || [];
129130
var len = values.length;
130-
var buffer = new BufferList()
131+
var buffer = new Writer()
131132
.addCString(config.portal)
132133
.addCString(config.statement)
133134
.addInt16(0) //always use default text format
@@ -150,7 +151,7 @@ p.execute = function(config) {
150151
config = config || {};
151152
config.portal = config.portal || '';
152153
config.rows = config.rows || '';
153-
var buffer = new BufferList()
154+
var buffer = new Writer()
154155
.addCString(config.portal)
155156
.addInt32(config.rows)
156157
.join();

lib/writer.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
var Writer = function() {
2+
this.buffers = [];
3+
};
4+
5+
var p = Writer.prototype;
6+
7+
p.add = function(buffer) {
8+
this.buffers.push(buffer);
9+
return this;
10+
};
11+
12+
p.addInt16 = function(val, front) {
13+
return this.add(Buffer([
14+
(val >>> 8),
15+
(val >>> 0)
16+
]));
17+
};
18+
19+
p.getByteLength = function(initial) {
20+
return this.buffers.reduce(function(previous, current){
21+
return previous + current.length;
22+
},initial || 0);
23+
};
24+
25+
p.addInt32 = function(val, first) {
26+
return this.add(Buffer([
27+
(val >>> 24 & 0xFF),
28+
(val >>> 16 & 0xFF),
29+
(val >>> 8 & 0xFF),
30+
(val >>> 0 & 0xFF)
31+
]));
32+
};
33+
34+
p.addCString = function(val) {
35+
return this.add(Buffer(val + '\0','utf8'));
36+
};
37+
38+
p.addChar = function(char, first) {
39+
return this.add(Buffer(char,'utf8'), first);
40+
};
41+
42+
p.join = function() {
43+
var result = Buffer(this.getByteLength());
44+
var index = 0;
45+
var buffers = this.buffers;
46+
var length = this.buffers.length;
47+
for(var i = 0; i < length; i ++) {
48+
var buffer = buffers[i];
49+
buffer.copy(result, index, 0);
50+
index += buffer.length;
51+
}
52+
return result;
53+
};
54+
55+
module.exports = Writer;
56+
File renamed without changes.

test/test-helper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ require.paths.unshift(__dirname + '/../lib/');
55

66
Client = require('client');
77
EventEmitter = require('events').EventEmitter;
8-
BufferList = require('buffer-list')
8+
BufferList = require(__dirname+'/buffer-list')
99
buffers = require(__dirname + '/test-buffers');
1010
Connection = require('connection');
1111
var args = require(__dirname + '/cli');

0 commit comments

Comments
 (0)