equal
deleted
inserted
replaced
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 } |