rust/lib-hedgewars-engine/src/ipc.rs
changeset 14272 3152d9fdb499
parent 14261 1b8c889027a3
child 14294 21be7838a127
equal deleted inserted replaced
14271:1aac8a62be6f 14272:3152d9fdb499
    15         }
    15         }
    16     }
    16     }
    17 
    17 
    18     pub fn send_message(&mut self, message: &EngineMessage) {
    18     pub fn send_message(&mut self, message: &EngineMessage) {
    19         self.out_buffer.write(&message.to_bytes()).unwrap();
    19         self.out_buffer.write(&message.to_bytes()).unwrap();
       
    20     }
       
    21 
       
    22     pub fn iter(& mut self) -> IPCMessagesIterator {
       
    23         IPCMessagesIterator::new(self)
    20     }
    24     }
    21 }
    25 }
    22 
    26 
    23 impl Write for IPC {
    27 impl Write for IPC {
    24     fn write(&mut self, buf: &[u8]) -> Result<usize> {
    28     fn write(&mut self, buf: &[u8]) -> Result<usize> {
    38 
    42 
    39         Ok(read_bytes)
    43         Ok(read_bytes)
    40     }
    44     }
    41 }
    45 }
    42 
    46 
    43 impl Iterator for IPC {
    47 pub struct IPCMessagesIterator<'a> {
       
    48     ipc: &'a mut IPC
       
    49 }
       
    50 
       
    51 impl<'a> IPCMessagesIterator<'a> {
       
    52     pub fn new(ipc: &'a mut IPC) -> Self {
       
    53         Self {
       
    54             ipc
       
    55         }
       
    56     }
       
    57 }
       
    58 
       
    59 impl<'a> Iterator for IPCMessagesIterator<'a> {
    44     type Item = EngineMessage;
    60     type Item = EngineMessage;
    45 
    61 
    46     fn next(&mut self) -> Option<Self::Item> {
    62     fn next(&mut self) -> Option<Self::Item> {
    47         let (consumed, message) = extract_message(&self.in_buffer[..])?;
    63         let (consumed, message) = extract_message(&self.ipc.in_buffer[..])?;
    48 
    64 
    49         self.in_buffer.consume(consumed);
    65         self.ipc.in_buffer.consume(consumed);
    50 
    66 
    51         Some(message)
    67         Some(message)
    52     }
    68     }
    53 }
    69 }