From 6ba4575385772c9184f3f7afdfe03f5b95eb0857 Mon Sep 17 00:00:00 2001 From: brianc Date: Thu, 30 Sep 2010 00:40:06 -0500 Subject: [PATCH] parser now parses all messages at once --- lib/index.js | 18 +++++++++++++----- test/parser-tests.js | 8 ++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/lib/index.js b/lib/index.js index c2b9fb31..0d6e1753 100644 --- a/lib/index.js +++ b/lib/index.js @@ -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; } diff --git a/test/parser-tests.js b/test/parser-tests.js index 69acbec3..838c0fa4 100644 --- a/test/parser-tests.js +++ b/test/parser-tests.js @@ -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); });