@@ -79,13 +79,11 @@ export class Parser {
7979 private bufferLength : number = 0
8080 private bufferOffset : number = 0
8181 private reader = new BufferReader ( )
82- private mode : Mode
8382
8483 constructor ( opts ?: StreamOptions ) {
8584 if ( opts ?. mode === 'binary' ) {
8685 throw new Error ( 'Binary mode not supported yet' )
8786 }
88- this . mode = opts ?. mode || 'text'
8987 }
9088
9189 public parse ( buffer : Buffer , callback : MessageCallback ) {
@@ -152,53 +150,57 @@ export class Parser {
152150 }
153151
154152 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' )
153+ try {
154+ switch ( code ) {
155+ case MessageCodes . BindComplete :
156+ return bindComplete
157+ case MessageCodes . ParseComplete :
158+ return parseComplete
159+ case MessageCodes . CloseComplete :
160+ return closeComplete
161+ case MessageCodes . NoData :
162+ return noData
163+ case MessageCodes . PortalSuspended :
164+ return portalSuspended
165+ case MessageCodes . CopyDone :
166+ return copyDone
167+ case MessageCodes . ReplicationStart :
168+ return replicationStart
169+ case MessageCodes . EmptyQuery :
170+ return emptyQuery
171+ case MessageCodes . DataRow :
172+ return this . parseDataRowMessage ( offset , length , bytes )
173+ case MessageCodes . CommandComplete :
174+ return this . parseCommandCompleteMessage ( offset , length , bytes )
175+ case MessageCodes . ReadyForQuery :
176+ return this . parseReadyForQueryMessage ( offset , length , bytes )
177+ case MessageCodes . NotificationResponse :
178+ return this . parseNotificationMessage ( offset , length , bytes )
179+ case MessageCodes . AuthenticationResponse :
180+ return this . parseAuthenticationResponse ( offset , length , bytes )
181+ case MessageCodes . ParameterStatus :
182+ return this . parseParameterStatusMessage ( offset , length , bytes )
183+ case MessageCodes . BackendKeyData :
184+ return this . parseBackendKeyData ( offset , length , bytes )
185+ case MessageCodes . ErrorMessage :
186+ return this . parseErrorMessage ( offset , length , bytes , 'error' )
187+ case MessageCodes . NoticeMessage :
188+ return this . parseErrorMessage ( offset , length , bytes , 'notice' )
189+ case MessageCodes . RowDescriptionMessage :
190+ return this . parseRowDescriptionMessage ( offset , length , bytes )
191+ case MessageCodes . ParameterDescriptionMessage :
192+ return this . parseParameterDescriptionMessage ( offset , length , bytes )
193+ case MessageCodes . CopyIn :
194+ return this . parseCopyInMessage ( offset , length , bytes )
195+ case MessageCodes . CopyOut :
196+ return this . parseCopyOutMessage ( offset , length , bytes )
197+ case MessageCodes . CopyData :
198+ return this . parseCopyData ( offset , length , bytes )
199+ default :
200+ return new DatabaseError ( 'received invalid response: ' + code . toString ( 16 ) , length , 'error' )
201+ }
202+ } catch ( error ) {
203+ return new DatabaseError ( `exception received while handling packet: ${ error } ` , length , 'error' )
202204 }
203205 }
204206
0 commit comments