parser now parses all messages at once

This commit is contained in:
brianc 2010-09-30 00:40:06 -05:00
parent d852f7f1c4
commit 6ba4575385
2 changed files with 17 additions and 9 deletions

View File

@ -47,10 +47,9 @@ Client.prototype.connect = function() {
var parser = new Parser(data);
con.end();
var result = parser.parse();
while(result) {
console.log(result);
result = parser.parse();
}
result.forEach(function(msg) {
console.log(msg);
});
});
};
@ -61,7 +60,16 @@ var Parser = function(buffer) {
var p = Parser.prototype;
p.parse = function() {
p.parse = function() {
var messages = [];
var message = this.parseMessage();
while(message) {
messages.push(message);
message = this.parseMessage();
}
return messages;
};
p.parseMessage = function() {
if(this.buffer.length == this.offset) {
return false;
}

View File

@ -41,22 +41,22 @@ test('Parser on single messages', function() {
};
test('parses AuthenticationOk message', function() {
var result = new Parser(authenticationOkBuffer).parse();
var result = new Parser(authenticationOkBuffer).parse()[0];
assert.same(result, expectedAuthenticationOkayMessage);
});
test('parses ParameterStatus message', function() {
var result = new Parser(parameterStatusBuffer).parse();
var result = new Parser(parameterStatusBuffer).parse()[0];
assert.same(result, expectedParameterStatusMessage);
});
test('parses BackendKeyData message', function() {
var result = new Parser(backendKeyDataBuffer).parse();
var result = new Parser(backendKeyDataBuffer).parse()[0];
assert.same(result, expectedBackendKeyDataMessage);
});
test('parses ReadyForQuery message', function() {
var result = new Parser(readyForQueryBuffer).parse();
var result = new Parser(readyForQueryBuffer).parse()[0];
assert.same(result, expectedReadyForQueryMessage);
});