@@ -61,11 +61,11 @@ use std::mem;
61
61
use std:: result;
62
62
use std:: sync:: Arc ;
63
63
use std:: time:: Duration ;
64
+ use postgres_protocol:: message:: backend:: { self , RowDescriptionEntry } ;
64
65
use postgres_protocol:: message:: frontend;
65
66
66
67
use error:: { Error , ConnectError , SqlState , DbError } ;
67
68
use io:: TlsHandshake ;
68
- use message:: { Backend , RowDescriptionEntry } ;
69
69
use notification:: { Notifications , Notification } ;
70
70
use params:: { ConnectParams , IntoConnectParams , UserInfo } ;
71
71
use priv_io:: MessageStream ;
@@ -79,7 +79,6 @@ mod macros;
79
79
80
80
mod feature_check;
81
81
mod md5;
82
- mod message;
83
82
mod priv_io;
84
83
mod url;
85
84
pub mod error;
@@ -289,29 +288,29 @@ impl InnerConnection {
289
288
290
289
loop {
291
290
match try!( conn. read_message ( ) ) {
292
- Backend :: BackendKeyData { process_id, secret_key } => {
291
+ backend :: Message :: BackendKeyData { process_id, secret_key } => {
293
292
conn. cancel_data . process_id = process_id;
294
293
conn. cancel_data . secret_key = secret_key;
295
294
}
296
- Backend :: ReadyForQuery { .. } => break ,
297
- Backend :: ErrorResponse { fields } => return DbError :: new_connect ( fields) ,
295
+ backend :: Message :: ReadyForQuery { .. } => break ,
296
+ backend :: Message :: ErrorResponse { fields } => return DbError :: new_connect ( fields) ,
298
297
_ => return Err ( ConnectError :: Io ( bad_response ( ) ) ) ,
299
298
}
300
299
}
301
300
302
301
Ok ( conn)
303
302
}
304
303
305
- fn read_message_with_notification ( & mut self ) -> std_io:: Result < Backend > {
304
+ fn read_message_with_notification ( & mut self ) -> std_io:: Result < backend :: Message > {
306
305
debug_assert ! ( !self . desynchronized) ;
307
306
loop {
308
307
match try_desync ! ( self , self . stream. read_message( ) ) {
309
- Backend :: NoticeResponse { fields } => {
308
+ backend :: Message :: NoticeResponse { fields } => {
310
309
if let Ok ( err) = DbError :: new_raw ( fields) {
311
310
self . notice_handler . handle_notice ( err) ;
312
311
}
313
312
}
314
- Backend :: ParameterStatus { parameter, value } => {
313
+ backend :: Message :: ParameterStatus { parameter, value } => {
315
314
self . parameters . insert ( parameter, value) ;
316
315
}
317
316
val => return Ok ( val) ,
@@ -321,44 +320,44 @@ impl InnerConnection {
321
320
322
321
fn read_message_with_notification_timeout ( & mut self ,
323
322
timeout : Duration )
324
- -> std:: io:: Result < Option < Backend > > {
323
+ -> std:: io:: Result < Option < backend :: Message > > {
325
324
debug_assert ! ( !self . desynchronized) ;
326
325
loop {
327
326
match try_desync ! ( self , self . stream. read_message_timeout( timeout) ) {
328
- Some ( Backend :: NoticeResponse { fields } ) => {
327
+ Some ( backend :: Message :: NoticeResponse { fields } ) => {
329
328
if let Ok ( err) = DbError :: new_raw ( fields) {
330
329
self . notice_handler . handle_notice ( err) ;
331
330
}
332
331
}
333
- Some ( Backend :: ParameterStatus { parameter, value } ) => {
332
+ Some ( backend :: Message :: ParameterStatus { parameter, value } ) => {
334
333
self . parameters . insert ( parameter, value) ;
335
334
}
336
335
val => return Ok ( val) ,
337
336
}
338
337
}
339
338
}
340
339
341
- fn read_message_with_notification_nonblocking ( & mut self ) -> std:: io:: Result < Option < Backend > > {
340
+ fn read_message_with_notification_nonblocking ( & mut self ) -> std:: io:: Result < Option < backend :: Message > > {
342
341
debug_assert ! ( !self . desynchronized) ;
343
342
loop {
344
343
match try_desync ! ( self , self . stream. read_message_nonblocking( ) ) {
345
- Some ( Backend :: NoticeResponse { fields } ) => {
344
+ Some ( backend :: Message :: NoticeResponse { fields } ) => {
346
345
if let Ok ( err) = DbError :: new_raw ( fields) {
347
346
self . notice_handler . handle_notice ( err) ;
348
347
}
349
348
}
350
- Some ( Backend :: ParameterStatus { parameter, value } ) => {
349
+ Some ( backend :: Message :: ParameterStatus { parameter, value } ) => {
351
350
self . parameters . insert ( parameter, value) ;
352
351
}
353
352
val => return Ok ( val) ,
354
353
}
355
354
}
356
355
}
357
356
358
- fn read_message ( & mut self ) -> std_io:: Result < Backend > {
357
+ fn read_message ( & mut self ) -> std_io:: Result < backend :: Message > {
359
358
loop {
360
359
match try!( self . read_message_with_notification ( ) ) {
361
- Backend :: NotificationResponse { process_id, channel, payload } => {
360
+ backend :: Message :: NotificationResponse { process_id, channel, payload } => {
362
361
self . notifications . push_back ( Notification {
363
362
process_id : process_id,
364
363
channel : channel,
@@ -372,15 +371,15 @@ impl InnerConnection {
372
371
373
372
fn handle_auth ( & mut self , user : UserInfo ) -> result:: Result < ( ) , ConnectError > {
374
373
match try!( self . read_message ( ) ) {
375
- Backend :: AuthenticationOk => return Ok ( ( ) ) ,
376
- Backend :: AuthenticationCleartextPassword => {
374
+ backend :: Message :: AuthenticationOk => return Ok ( ( ) ) ,
375
+ backend :: Message :: AuthenticationCleartextPassword => {
377
376
let pass = try!( user. password . ok_or_else ( || {
378
377
ConnectError :: ConnectParams ( "a password was requested but not provided" . into ( ) )
379
378
} ) ) ;
380
379
try!( self . stream . write_message ( & frontend:: PasswordMessage { password : & pass } ) ) ;
381
380
try!( self . stream . flush ( ) ) ;
382
381
}
383
- Backend :: AuthenticationMD5Password { salt } => {
382
+ backend :: Message :: AuthenticationMD5Password { salt } => {
384
383
let pass = try!( user. password . ok_or_else ( || {
385
384
ConnectError :: ConnectParams ( "a password was requested but not provided" . into ( ) )
386
385
} ) ) ;
@@ -395,20 +394,20 @@ impl InnerConnection {
395
394
try!( self . stream . write_message ( & frontend:: PasswordMessage { password : & output } ) ) ;
396
395
try!( self . stream . flush ( ) ) ;
397
396
}
398
- Backend :: AuthenticationKerberosV5 |
399
- Backend :: AuthenticationSCMCredential |
400
- Backend :: AuthenticationGSS |
401
- Backend :: AuthenticationSSPI => {
397
+ backend :: Message :: AuthenticationKerberosV5 |
398
+ backend :: Message :: AuthenticationSCMCredential |
399
+ backend :: Message :: AuthenticationGSS |
400
+ backend :: Message :: AuthenticationSSPI => {
402
401
return Err ( ConnectError :: Io ( std_io:: Error :: new ( std_io:: ErrorKind :: Other ,
403
402
"unsupported authentication" ) ) )
404
403
}
405
- Backend :: ErrorResponse { fields } => return DbError :: new_connect ( fields) ,
404
+ backend :: Message :: ErrorResponse { fields } => return DbError :: new_connect ( fields) ,
406
405
_ => return Err ( ConnectError :: Io ( bad_response ( ) ) ) ,
407
406
}
408
407
409
408
match try!( self . read_message ( ) ) {
410
- Backend :: AuthenticationOk => Ok ( ( ) ) ,
411
- Backend :: ErrorResponse { fields } => DbError :: new_connect ( fields) ,
409
+ backend :: Message :: AuthenticationOk => Ok ( ( ) ) ,
410
+ backend :: Message :: ErrorResponse { fields } => DbError :: new_connect ( fields) ,
412
411
_ => Err ( ConnectError :: Io ( bad_response ( ) ) ) ,
413
412
}
414
413
}
@@ -433,22 +432,22 @@ impl InnerConnection {
433
432
try!( self . stream . flush ( ) ) ;
434
433
435
434
match try!( self . read_message ( ) ) {
436
- Backend :: ParseComplete => { }
437
- Backend :: ErrorResponse { fields } => {
435
+ backend :: Message :: ParseComplete => { }
436
+ backend :: Message :: ErrorResponse { fields } => {
438
437
try!( self . wait_for_ready ( ) ) ;
439
438
return DbError :: new ( fields) ;
440
439
}
441
440
_ => bad_response ! ( self ) ,
442
441
}
443
442
444
443
let raw_param_types = match try!( self . read_message ( ) ) {
445
- Backend :: ParameterDescription { types } => types,
444
+ backend :: Message :: ParameterDescription { types } => types,
446
445
_ => bad_response ! ( self ) ,
447
446
} ;
448
447
449
448
let raw_columns = match try!( self . read_message ( ) ) {
450
- Backend :: RowDescription { descriptions } => descriptions,
451
- Backend :: NoData => vec ! [ ] ,
449
+ backend :: Message :: RowDescription { descriptions } => descriptions,
450
+ backend :: Message :: NoData => vec ! [ ] ,
452
451
_ => bad_response ! ( self ) ,
453
452
} ;
454
453
@@ -471,30 +470,30 @@ impl InnerConnection {
471
470
let more_rows;
472
471
loop {
473
472
match try!( self . read_message ( ) ) {
474
- Backend :: EmptyQueryResponse |
475
- Backend :: CommandComplete { .. } => {
473
+ backend :: Message :: EmptyQueryResponse |
474
+ backend :: Message :: CommandComplete { .. } => {
476
475
more_rows = false ;
477
476
break ;
478
477
}
479
- Backend :: PortalSuspended => {
478
+ backend :: Message :: PortalSuspended => {
480
479
more_rows = true ;
481
480
break ;
482
481
}
483
- Backend :: DataRow { row } => buf. push_back ( row) ,
484
- Backend :: ErrorResponse { fields } => {
482
+ backend :: Message :: DataRow { row } => buf. push_back ( row) ,
483
+ backend :: Message :: ErrorResponse { fields } => {
485
484
try!( self . wait_for_ready ( ) ) ;
486
485
return DbError :: new ( fields) ;
487
486
}
488
- Backend :: CopyInResponse { .. } => {
487
+ backend :: Message :: CopyInResponse { .. } => {
489
488
try!( self . stream . write_message ( & frontend:: CopyFail {
490
489
message : "COPY queries cannot be directly executed" ,
491
490
} ) ) ;
492
491
try!( self . stream . write_message ( & frontend:: Sync ) ) ;
493
492
try!( self . stream . flush ( ) ) ;
494
493
}
495
- Backend :: CopyOutResponse { .. } => {
494
+ backend :: Message :: CopyOutResponse { .. } => {
496
495
loop {
497
- if let Backend :: ReadyForQuery { .. } = try!( self . read_message ( ) ) {
496
+ if let backend :: Message :: ReadyForQuery { .. } = try!( self . read_message ( ) ) {
498
497
break ;
499
498
}
500
499
}
@@ -550,8 +549,8 @@ impl InnerConnection {
550
549
try!( self . stream . flush ( ) ) ;
551
550
552
551
match try!( self . read_message ( ) ) {
553
- Backend :: BindComplete => Ok ( ( ) ) ,
554
- Backend :: ErrorResponse { fields } => {
552
+ backend :: Message :: BindComplete => Ok ( ( ) ) ,
553
+ backend :: Message :: ErrorResponse { fields } => {
555
554
try!( self . wait_for_ready ( ) ) ;
556
555
DbError :: new ( fields)
557
556
}
@@ -608,8 +607,8 @@ impl InnerConnection {
608
607
try!( self . stream . write_message ( & frontend:: Sync ) ) ;
609
608
try!( self . stream . flush ( ) ) ;
610
609
let resp = match try!( self . read_message ( ) ) {
611
- Backend :: CloseComplete => Ok ( ( ) ) ,
612
- Backend :: ErrorResponse { fields } => DbError :: new ( fields) ,
610
+ backend :: Message :: CloseComplete => Ok ( ( ) ) ,
611
+ backend :: Message :: ErrorResponse { fields } => DbError :: new ( fields) ,
613
612
_ => bad_response ! ( self ) ,
614
613
} ;
615
614
try!( self . wait_for_ready ( ) ) ;
@@ -797,7 +796,7 @@ impl InnerConnection {
797
796
#[ allow( needless_return) ]
798
797
fn wait_for_ready ( & mut self ) -> Result < ( ) > {
799
798
match try!( self . read_message ( ) ) {
800
- Backend :: ReadyForQuery { .. } => Ok ( ( ) ) ,
799
+ backend :: Message :: ReadyForQuery { .. } => Ok ( ( ) ) ,
801
800
_ => bad_response ! ( self ) ,
802
801
}
803
802
}
@@ -811,20 +810,20 @@ impl InnerConnection {
811
810
let mut result = vec ! [ ] ;
812
811
loop {
813
812
match try!( self . read_message ( ) ) {
814
- Backend :: ReadyForQuery { .. } => break ,
815
- Backend :: DataRow { row } => {
813
+ backend :: Message :: ReadyForQuery { .. } => break ,
814
+ backend :: Message :: DataRow { row } => {
816
815
result. push ( row. into_iter ( )
817
816
. map ( |opt| opt. map ( |b| String :: from_utf8_lossy ( & b) . into_owned ( ) ) )
818
817
. collect ( ) ) ;
819
818
}
820
- Backend :: CopyInResponse { .. } => {
819
+ backend :: Message :: CopyInResponse { .. } => {
821
820
try!( self . stream . write_message ( & frontend:: CopyFail {
822
821
message : "COPY queries cannot be directly executed" ,
823
822
} ) ) ;
824
823
try!( self . stream . write_message ( & frontend:: Sync ) ) ;
825
824
try!( self . stream . flush ( ) ) ;
826
825
}
827
- Backend :: ErrorResponse { fields } => {
826
+ backend :: Message :: ErrorResponse { fields } => {
828
827
try!( self . wait_for_ready ( ) ) ;
829
828
return DbError :: new ( fields) ;
830
829
}
0 commit comments