diff --git a/src/ipc.rs b/src/ipc.rs index 452945899c..4c20a3541f 100644 --- a/src/ipc.rs +++ b/src/ipc.rs @@ -36,6 +36,23 @@ impl AudioQueue { }, } } + + pub fn drain_size(&self, size: usize) -> Option> { + match self.queue.write() { + Ok(mut queue) => { + if queue.len() < size { + return None; + } + let vec = queue.drain(0..size) + .collect::>(); + + return Some(vec); + }, + Err(_) => { + unreachable!("This shouldn't happen (drain)"); + }, + } + } } pub struct QueueSender { diff --git a/src/main.rs b/src/main.rs index db857cb3d9..bde1237db0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -60,10 +60,23 @@ fn run_audio() -> Result<(), AudioError> { let mut fail_count = 0; loop { - let mut drained = audio_queue_2.drain(); + let mut drained = match audio_queue_2.drain_size(1000) { + None => { continue; }, + Some(d) => d, + }; + println!("Len drained: {}", drained.len()); + let mut bytes: Vec = Vec::with_capacity(drained.len()*2); for val in drained { + let byte_pair = val.to_be_bytes(); + bytes.push(byte_pair[0]); + bytes.push(byte_pair[1]); + } + + socket.send(bytes, 0); + + /*for val in drained { let bytes = val.to_be_bytes(); loop { if reconnect { @@ -98,7 +111,8 @@ fn run_audio() -> Result<(), AudioError> { }, } } - } + }*/ + } });