@@ -25,6 +25,7 @@ import {
25
25
MessageName ,
26
26
AuthenticationMD5Password ,
27
27
NoticeMessage ,
28
+ ParserError ,
28
29
} from './messages'
29
30
import { BufferReader } from './buffer-reader'
30
31
@@ -152,53 +153,57 @@ export class Parser {
152
153
}
153
154
154
155
private handlePacket ( offset : number , code : number , length : number , bytes : Buffer ) : BackendMessage {
155
- switch ( code ) {
156
- case MessageCodes . BindComplete :
157
- return bindComplete
158
- case MessageCodes . ParseComplete :
159
- return parseComplete
160
- case MessageCodes . CloseComplete :
161
- return closeComplete
162
- case MessageCodes . NoData :
163
- return noData
164
- case MessageCodes . PortalSuspended :
165
- return portalSuspended
166
- case MessageCodes . CopyDone :
167
- return copyDone
168
- case MessageCodes . ReplicationStart :
169
- return replicationStart
170
- case MessageCodes . EmptyQuery :
171
- return emptyQuery
172
- case MessageCodes . DataRow :
173
- return this . parseDataRowMessage ( offset , length , bytes )
174
- case MessageCodes . CommandComplete :
175
- return this . parseCommandCompleteMessage ( offset , length , bytes )
176
- case MessageCodes . ReadyForQuery :
177
- return this . parseReadyForQueryMessage ( offset , length , bytes )
178
- case MessageCodes . NotificationResponse :
179
- return this . parseNotificationMessage ( offset , length , bytes )
180
- case MessageCodes . AuthenticationResponse :
181
- return this . parseAuthenticationResponse ( offset , length , bytes )
182
- case MessageCodes . ParameterStatus :
183
- return this . parseParameterStatusMessage ( offset , length , bytes )
184
- case MessageCodes . BackendKeyData :
185
- return this . parseBackendKeyData ( offset , length , bytes )
186
- case MessageCodes . ErrorMessage :
187
- return this . parseErrorMessage ( offset , length , bytes , 'error' )
188
- case MessageCodes . NoticeMessage :
189
- return this . parseErrorMessage ( offset , length , bytes , 'notice' )
190
- case MessageCodes . RowDescriptionMessage :
191
- return this . parseRowDescriptionMessage ( offset , length , bytes )
192
- case MessageCodes . ParameterDescriptionMessage :
193
- return this . parseParameterDescriptionMessage ( offset , length , bytes )
194
- case MessageCodes . CopyIn :
195
- return this . parseCopyInMessage ( offset , length , bytes )
196
- case MessageCodes . CopyOut :
197
- return this . parseCopyOutMessage ( offset , length , bytes )
198
- case MessageCodes . CopyData :
199
- return this . parseCopyData ( offset , length , bytes )
200
- default :
201
- return new DatabaseError ( 'received invalid response: ' + code . toString ( 16 ) , length , 'error' )
156
+ try {
157
+ switch ( code ) {
158
+ case MessageCodes . BindComplete :
159
+ return bindComplete
160
+ case MessageCodes . ParseComplete :
161
+ return parseComplete
162
+ case MessageCodes . CloseComplete :
163
+ return closeComplete
164
+ case MessageCodes . NoData :
165
+ return noData
166
+ case MessageCodes . PortalSuspended :
167
+ return portalSuspended
168
+ case MessageCodes . CopyDone :
169
+ return copyDone
170
+ case MessageCodes . ReplicationStart :
171
+ return replicationStart
172
+ case MessageCodes . EmptyQuery :
173
+ return emptyQuery
174
+ case MessageCodes . DataRow :
175
+ return this . parseDataRowMessage ( offset , length , bytes )
176
+ case MessageCodes . CommandComplete :
177
+ return this . parseCommandCompleteMessage ( offset , length , bytes )
178
+ case MessageCodes . ReadyForQuery :
179
+ return this . parseReadyForQueryMessage ( offset , length , bytes )
180
+ case MessageCodes . NotificationResponse :
181
+ return this . parseNotificationMessage ( offset , length , bytes )
182
+ case MessageCodes . AuthenticationResponse :
183
+ return this . parseAuthenticationResponse ( offset , length , bytes )
184
+ case MessageCodes . ParameterStatus :
185
+ return this . parseParameterStatusMessage ( offset , length , bytes )
186
+ case MessageCodes . BackendKeyData :
187
+ return this . parseBackendKeyData ( offset , length , bytes )
188
+ case MessageCodes . ErrorMessage :
189
+ return this . parseErrorMessage ( offset , length , bytes , 'error' )
190
+ case MessageCodes . NoticeMessage :
191
+ return this . parseErrorMessage ( offset , length , bytes , 'notice' )
192
+ case MessageCodes . RowDescriptionMessage :
193
+ return this . parseRowDescriptionMessage ( offset , length , bytes )
194
+ case MessageCodes . ParameterDescriptionMessage :
195
+ return this . parseParameterDescriptionMessage ( offset , length , bytes )
196
+ case MessageCodes . CopyIn :
197
+ return this . parseCopyInMessage ( offset , length , bytes )
198
+ case MessageCodes . CopyOut :
199
+ return this . parseCopyOutMessage ( offset , length , bytes )
200
+ case MessageCodes . CopyData :
201
+ return this . parseCopyData ( offset , length , bytes )
202
+ default :
203
+ return new DatabaseError ( 'received invalid response: ' + code . toString ( 16 ) , length , 'error' )
204
+ }
205
+ } catch ( error ) {
206
+ return new ParserError ( `unexpected error handling packet: ${ error } ` , length , 'error' )
202
207
}
203
208
}
204
209
0 commit comments