This commit is contained in:
brianc 2010-10-31 17:46:33 -05:00
parent 75da13a4b9
commit 6764af30eb

View File

@ -189,23 +189,6 @@ p.setBuffer = function(buffer) {
this.offset = 0;
};
var messageNames = {
R: 'authenticationOk',
S: 'parameterStatus',
K: 'backendKeyData',
C: 'commandComplete',
Z: 'readyForQuery',
T: 'rowDescription',
D: 'dataRow',
E: 'error',
N: 'notice',
1: 'parseComplete',
2: 'bindComplete',
A: 'notification',
n: 'noData',
I: 'emptyQuery'
};
p.parseMessage = function() {
var remaining = this.buffer.length - (this.offset);
if(remaining < 5) {
@ -213,13 +196,12 @@ p.parseMessage = function() {
//just abort the read now
this.lastBuffer = this.buffer;
this.lastOffset = this.offset;
return;
return false;
}
var id = this.readChar();
var messageType = this.buffer[this.offset++];
var message = {
name: messageNames[id],
length: this.parseInt32()
};
@ -229,8 +211,72 @@ p.parseMessage = function() {
this.lastOffset = this.offset-5;
return false;
}
return this["parse"+id](message);
switch(messageType)
{
case 0x52: //R
message.name = 'authenticationOk';
return this.parseR(message);
case 0x53: //S
message.name = 'parameterStatus';
return this.parseS(message);
case 0x4b: //K
message.name = 'backendKeyData';
return this.parseK(message);
case 0x43: //C
message.name = 'commandComplete';
return this.parseC(message);
case 0x5a: //Z
message.name = 'readyForQuery';
return this.parseZ(message);
case 0x54: //T
message.name = 'rowDescription';
return this.parseT(message);
case 0x44: //D
message.name = 'dataRow';
return this.parseD(message);
case 0x45: //E
message.name = 'error';
return this.parseE(message);
case 0x4e: //N
message.name = 'notice';
return this.parseN(message);
case 0x31: //1
message.name = 'parseComplete';
return this.parse1(message);
case 0x32: //2
message.name = 'bindComplete';
return this.parse2(message);
case 0x41: //A
message.name = 'notification';
return this.parseA(message);
case 0x6e: //n
message.name = 'noData';
return this.parsen(message);
case 0x49: //I
message.name = 'emptyQuery';
return this.parseI(message);
default:
throw new Error("Unrecognized message code " + messageType);
}
};
p.parseR = function(msg) {