Ok::<_,io::Error>(())
});
- let max_outstanding = ic.max_requests_outstanding
- .try_into().unwrap_or(usize::MAX);
-
let tx_stream = ipif.stdout.take().unwrap();
let mut tx_stream = tokio::io::BufReader::new(tx_stream).split(SLIP_ESC);
let stream_for_rx = ipif.stdin .take().unwrap();
- let mut reqs = Vec::with_capacity(max_outstanding);
+ let mut reqs = Vec::with_capacity(ic.max_requests_outstanding.sat());
async {
loop {
select! {
packet = tx_stream.next_segment(),
- if reqs.len() < max_outstanding => {
+ if reqs.len() < ic.max_requests_outstanding.sat() => {
let packet = packet.context("read from ipif")?;
reqs.push(());
// xxx make new request
pub extra_config: Vec<PathBuf>,
}
+#[ext(pub)]
+impl u32 {
+ fn sat(self) -> usize { self.try_into().unwrap_or(usize::MAX) }
+}
+
#[ext]
impl<'s> Option<&'s str> {
#[throws(AE)]
pub use tokio::time::Duration;
pub use void::{self, Void, ResultVoidExt, ResultVoidErrExt};
-pub use crate::config::{self, InstanceConfig};
+pub use crate::config::{self, InstanceConfig, u32Ext as _};
pub use crate::utils::*;
pub use crate::types::*;