WIP on client and clean up the binned range data structures
This commit is contained in:
7
disk/src/cache/pbv.rs
vendored
7
disk/src/cache/pbv.rs
vendored
@@ -10,7 +10,7 @@ use futures_core::Stream;
|
||||
use futures_util::{FutureExt, StreamExt, TryStreamExt};
|
||||
use netpod::log::*;
|
||||
use netpod::{
|
||||
AggKind, BinSpecDimT, Channel, NanoRange, NodeConfig, PreBinnedPatchCoord, PreBinnedPatchIterator,
|
||||
AggKind, BinSpecDimT, BinnedRange, Channel, NanoRange, NodeConfig, PreBinnedPatchCoord, PreBinnedPatchIterator,
|
||||
PreBinnedPatchRange,
|
||||
};
|
||||
use std::future::{ready, Future};
|
||||
@@ -135,12 +135,13 @@ impl PreBinnedValueStream {
|
||||
// TODO use a ctor, remove from BinSpecDimT the redundant variable.
|
||||
// If given a timestamp range, verify that it divides.
|
||||
// For ranges, use a range type.
|
||||
let spec = BinSpecDimT {
|
||||
let _spec = BinSpecDimT {
|
||||
bs: self.patch_coord.bin_t_len(),
|
||||
ts1: self.patch_coord.patch_beg(),
|
||||
ts2: self.patch_coord.patch_end(),
|
||||
count,
|
||||
};
|
||||
let range = BinnedRange::covering_range(evq.range.clone(), count).unwrap();
|
||||
let s1 = MergedFromRemotes::new(evq, self.node_config.cluster.clone());
|
||||
let s2 = s1
|
||||
.map(|k| {
|
||||
@@ -151,7 +152,7 @@ impl PreBinnedValueStream {
|
||||
}
|
||||
k
|
||||
})
|
||||
.into_binned_t(spec)
|
||||
.into_binned_t(range)
|
||||
.map_ok({
|
||||
let mut a = MinMaxAvgScalarBinBatch::empty();
|
||||
move |k| {
|
||||
|
||||
11
disk/src/cache/pbvfs.rs
vendored
11
disk/src/cache/pbvfs.rs
vendored
@@ -15,6 +15,8 @@ pub struct PreBinnedValueFetchedStream {
|
||||
uri: http::Uri,
|
||||
resfut: Option<hyper::client::ResponseFuture>,
|
||||
res: Option<InMemoryFrameAsyncReadStream<HttpBodyAsAsyncRead>>,
|
||||
errored: bool,
|
||||
completed: bool,
|
||||
}
|
||||
|
||||
impl PreBinnedValueFetchedStream {
|
||||
@@ -44,6 +46,8 @@ impl PreBinnedValueFetchedStream {
|
||||
uri,
|
||||
resfut: None,
|
||||
res: None,
|
||||
errored: false,
|
||||
completed: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -58,6 +62,13 @@ impl Stream for PreBinnedValueFetchedStream {
|
||||
|
||||
fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Option<Self::Item>> {
|
||||
use Poll::*;
|
||||
if self.completed {
|
||||
panic!("poll_next on completed");
|
||||
}
|
||||
if self.errored {
|
||||
self.completed = true;
|
||||
return Ready(None);
|
||||
}
|
||||
'outer: loop {
|
||||
break if let Some(res) = self.res.as_mut() {
|
||||
pin_mut!(res);
|
||||
|
||||
Reference in New Issue
Block a user