@@ -332,11 +332,6 @@ impl WinHandle {
332332 }
333333}
334334
335- enum GetMessageResult {
336- NoMessage ,
337- Message ( Vec < u8 > , Vec < OsOpaqueIpcChannel > , Vec < OsIpcSharedMemory > ) ,
338- }
339-
340335/// Main object keeping track of a receive handle and its associated state.
341336///
342337/// Implements blocking/nonblocking reads of messages from the handle.
@@ -489,7 +484,8 @@ impl MessageReader {
489484 // This is split between get_message and get_message_inner, so that
490485 // this function can handle removing bytes from the buffer, since
491486 // get_message_inner borrows the buffer.
492- fn get_message ( & mut self ) -> Result < GetMessageResult , WinError > {
487+ fn get_message ( & mut self ) -> Result < Option < ( Vec < u8 > , Vec < OsOpaqueIpcChannel > , Vec < OsIpcSharedMemory > ) > ,
488+ WinError > {
493489 let drain_bytes;
494490 let result;
495491 if let Some ( message) = Message :: from_bytes ( & self . read_buf ) {
@@ -524,10 +520,10 @@ impl MessageReader {
524520 win32_trace ! ( "[$ {:?}] get_message success -> {} bytes, {} channels, {} shmems" ,
525521 self . handle, buf_data. len( ) , channels. len( ) , shmems. len( ) ) ;
526522 drain_bytes = Some ( message. size ( ) ) ;
527- result = GetMessageResult :: Message ( buf_data, channels, shmems) ;
523+ result = Some ( ( buf_data, channels, shmems) ) ;
528524 } else {
529525 drain_bytes = None ;
530- result = GetMessageResult :: NoMessage ;
526+ result = None ;
531527 }
532528
533529 if let Some ( size) = drain_bytes {
@@ -698,9 +694,9 @@ impl OsIpcReceiver {
698694 // First, try to fetch a message, in case we have one pending
699695 // in the reader's receive buffer
700696 match try!( reader. get_message ( ) ) {
701- GetMessageResult :: Message ( data, channels, shmems) =>
697+ Some ( ( data, channels, shmems) ) =>
702698 return Ok ( ( data, channels, shmems) ) ,
703- GetMessageResult :: NoMessage =>
699+ None =>
704700 { } ,
705701 }
706702
@@ -1221,11 +1217,11 @@ impl OsIpcReceiverSet {
12211217 // then drain as many messages as we can
12221218 loop {
12231219 match try!( reader. get_message ( ) ) {
1224- GetMessageResult :: Message ( data, channels, shmems) => {
1220+ Some ( ( data, channels, shmems) ) => {
12251221 win32_trace ! ( "[# {:?}] receiver {:?} ({}) got a message" , * self . iocp, * reader. handle, reader. set_id. unwrap( ) ) ;
12261222 selection_results. push ( OsIpcSelectionResult :: DataReceived ( reader. set_id . unwrap ( ) , data, channels, shmems) ) ;
12271223 } ,
1228- GetMessageResult :: NoMessage => {
1224+ None => {
12291225 win32_trace ! ( "[# {:?}] receiver {:?} ({}) -- no message" , * self . iocp, * reader. handle, reader. set_id. unwrap( ) ) ;
12301226 break ;
12311227 } ,
0 commit comments