@@ -79,13 +79,11 @@ export class Parser {
79
79
private bufferLength : number = 0
80
80
private bufferOffset : number = 0
81
81
private reader = new BufferReader ( )
82
- private mode : Mode
83
82
84
83
constructor ( opts ?: StreamOptions ) {
85
84
if ( opts ?. mode === 'binary' ) {
86
85
throw new Error ( 'Binary mode not supported yet' )
87
86
}
88
- this . mode = opts ?. mode || 'text'
89
87
}
90
88
91
89
public parse ( buffer : Buffer , callback : MessageCallback ) {
@@ -152,53 +150,57 @@ export class Parser {
152
150
}
153
151
154
152
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' )
202
204
}
203
205
}
204
206
0 commit comments