Does not compile, type issues
This commit is contained in:
@@ -9,7 +9,7 @@ use std::collections::VecDeque;
|
|||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
use std::task::{Context, Poll};
|
use std::task::{Context, Poll};
|
||||||
|
|
||||||
pub trait AggregatorTdim {
|
pub trait AggregatorTdim: Sized + Unpin {
|
||||||
type InputValue;
|
type InputValue;
|
||||||
type OutputValue: AggregatableXdim1Bin + AggregatableTdim + Unpin;
|
type OutputValue: AggregatableXdim1Bin + AggregatableTdim + Unpin;
|
||||||
fn ends_before(&self, inp: &Self::InputValue) -> bool;
|
fn ends_before(&self, inp: &Self::InputValue) -> bool;
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
use crate::agg::binnedt::{AggregatableTdim, AggregatorTdim, IntoBinnedT};
|
use crate::agg::binnedt::{AggregatableTdim, AggregatorTdim, IntoBinnedT};
|
||||||
use crate::agg::scalarbinbatch::{MinMaxAvgScalarBinBatch, MinMaxAvgScalarBinBatchAggregator};
|
use crate::agg::scalarbinbatch::{MinMaxAvgScalarBinBatch, MinMaxAvgScalarBinBatchAggregator};
|
||||||
use crate::agg::streams::{Collectable, Collected, StreamItem, ToJsonResult};
|
use crate::agg::streams::{Collectable, Collected, StreamItem, ToJsonResult};
|
||||||
use crate::agg::AggregatableXdim1Bin;
|
use crate::agg::{AggregatableXdim1Bin, FitsInside};
|
||||||
use crate::binned::scalar::{adapter_to_stream_item, binned_stream};
|
use crate::binned::scalar::{adapter_to_stream_item, binned_stream};
|
||||||
use crate::binnedstream::{BinnedScalarStreamFromPreBinnedPatches, BinnedStream};
|
use crate::binnedstream::{BinnedScalarStreamFromPreBinnedPatches, BinnedStream};
|
||||||
|
use crate::cache::pbvfs::PreBinnedScalarItem;
|
||||||
use crate::cache::{BinnedQuery, MergedFromRemotes};
|
use crate::cache::{BinnedQuery, MergedFromRemotes};
|
||||||
use crate::channelconfig::{extract_matching_config_entry, read_local_config};
|
use crate::channelconfig::{extract_matching_config_entry, read_local_config};
|
||||||
use crate::frame::makeframe::make_frame;
|
use crate::frame::makeframe::make_frame;
|
||||||
@@ -14,7 +15,9 @@ use err::Error;
|
|||||||
use futures_core::Stream;
|
use futures_core::Stream;
|
||||||
use futures_util::StreamExt;
|
use futures_util::StreamExt;
|
||||||
use netpod::log::*;
|
use netpod::log::*;
|
||||||
use netpod::{AggKind, BinnedRange, NodeConfigCached, PerfOpts, PreBinnedPatchIterator, PreBinnedPatchRange};
|
use netpod::{
|
||||||
|
AggKind, BinnedRange, NanoRange, NodeConfigCached, PerfOpts, PreBinnedPatchIterator, PreBinnedPatchRange,
|
||||||
|
};
|
||||||
use num_traits::Zero;
|
use num_traits::Zero;
|
||||||
use serde::{Deserialize, Serialize, Serializer};
|
use serde::{Deserialize, Serialize, Serializer};
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
@@ -391,10 +394,35 @@ pub async fn binned_json(node_config: &NodeConfigCached, query: &BinnedQuery) ->
|
|||||||
Ok(serde_json::to_value(ret)?)
|
Ok(serde_json::to_value(ret)?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait PreBinnedItem: Unpin {
|
||||||
|
type BinnedStreamItem: AggregatableTdim + Unpin + Send;
|
||||||
|
fn into_binned_stream_item(self, fit_range: NanoRange) -> Option<Self::BinnedStreamItem>;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PreBinnedItem for PreBinnedScalarItem {
|
||||||
|
type BinnedStreamItem = BinnedScalarStreamItem;
|
||||||
|
|
||||||
|
fn into_binned_stream_item(self, fit_range: NanoRange) -> Option<Self::BinnedStreamItem> {
|
||||||
|
match self {
|
||||||
|
Self::RangeComplete => Some(Self::BinnedStreamItem::RangeComplete),
|
||||||
|
Self::Batch(item) => {
|
||||||
|
use super::agg::{Fits, FitsInside};
|
||||||
|
match item.fits_inside(fit_range) {
|
||||||
|
Fits::Inside | Fits::PartlyGreater | Fits::PartlyLower | Fits::PartlyLowerAndGreater => {
|
||||||
|
Some(Self::BinnedStreamItem::Values(item))
|
||||||
|
}
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub trait BinnedStreamKind: Clone + Unpin + Send + Sync + 'static {
|
pub trait BinnedStreamKind: Clone + Unpin + Send + Sync + 'static {
|
||||||
type BinnedStreamItem: MakeBytesFrame;
|
type BinnedStreamItem: MakeBytesFrame;
|
||||||
type BinnedStreamType: Stream + Send + 'static;
|
type BinnedStreamType: Stream + Send + 'static;
|
||||||
type Dummy: Default + Unpin + Send;
|
type Dummy: Default + Unpin + Send;
|
||||||
|
type PreBinnedItem: PreBinnedItem + Send;
|
||||||
|
|
||||||
fn new_binned_from_prebinned(
|
fn new_binned_from_prebinned(
|
||||||
&self,
|
&self,
|
||||||
@@ -434,6 +462,7 @@ impl BinnedStreamKind for BinnedStreamKindScalar {
|
|||||||
type BinnedStreamItem = Result<StreamItem<BinnedScalarStreamItem>, Error>;
|
type BinnedStreamItem = Result<StreamItem<BinnedScalarStreamItem>, Error>;
|
||||||
type BinnedStreamType = BinnedStream<Self::BinnedStreamItem>;
|
type BinnedStreamType = BinnedStream<Self::BinnedStreamItem>;
|
||||||
type Dummy = u32;
|
type Dummy = u32;
|
||||||
|
type PreBinnedItem = PreBinnedScalarItem;
|
||||||
|
|
||||||
fn new_binned_from_prebinned(
|
fn new_binned_from_prebinned(
|
||||||
&self,
|
&self,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use crate::agg::binnedt::IntoBinnedT;
|
use crate::agg::binnedt::IntoBinnedT;
|
||||||
use crate::agg::streams::StreamItem;
|
use crate::agg::streams::StreamItem;
|
||||||
use crate::binned::{BinnedScalarStreamItem, BinnedStreamKind};
|
use crate::binned::{BinnedScalarStreamItem, BinnedStreamKind, PreBinnedItem};
|
||||||
use crate::cache::pbvfs::{PreBinnedScalarItem, PreBinnedScalarValueFetchedStream};
|
use crate::cache::pbvfs::{PreBinnedScalarItem, PreBinnedScalarValueFetchedStream};
|
||||||
use crate::cache::{CacheUsage, PreBinnedQuery};
|
use crate::cache::{CacheUsage, PreBinnedQuery};
|
||||||
use err::Error;
|
use err::Error;
|
||||||
@@ -16,8 +16,18 @@ pub struct BinnedScalarStreamFromPreBinnedPatches<BK>
|
|||||||
where
|
where
|
||||||
BK: BinnedStreamKind,
|
BK: BinnedStreamKind,
|
||||||
{
|
{
|
||||||
inp: Pin<Box<dyn Stream<Item = Result<StreamItem<BinnedScalarStreamItem>, Error>> + Send>>,
|
//inp: Pin<Box<dyn Stream<Item = Result<StreamItem<BinnedScalarStreamItem>, Error>> + Send>>,
|
||||||
_marker: BK::Dummy,
|
inp: Pin<
|
||||||
|
Box<
|
||||||
|
dyn Stream<
|
||||||
|
Item = Result<
|
||||||
|
StreamItem<<<BK as BinnedStreamKind>::PreBinnedItem as PreBinnedItem>::BinnedStreamItem>,
|
||||||
|
Error,
|
||||||
|
>,
|
||||||
|
> + Send,
|
||||||
|
>,
|
||||||
|
>,
|
||||||
|
stream_kind: BK,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<BK> BinnedScalarStreamFromPreBinnedPatches<BK>
|
impl<BK> BinnedScalarStreamFromPreBinnedPatches<BK>
|
||||||
@@ -75,34 +85,24 @@ where
|
|||||||
Ok(item) => match item {
|
Ok(item) => match item {
|
||||||
StreamItem::Log(item) => Some(Ok(StreamItem::Log(item))),
|
StreamItem::Log(item) => Some(Ok(StreamItem::Log(item))),
|
||||||
StreamItem::Stats(item) => Some(Ok(StreamItem::Stats(item))),
|
StreamItem::Stats(item) => Some(Ok(StreamItem::Stats(item))),
|
||||||
StreamItem::DataItem(item) => match item {
|
StreamItem::DataItem(item) => {
|
||||||
PreBinnedScalarItem::RangeComplete => {
|
match crate::binned::PreBinnedItem::into_binned_stream_item(item, fit_range) {
|
||||||
Some(Ok(StreamItem::DataItem(BinnedScalarStreamItem::RangeComplete)))
|
Some(item) => Some(Ok(StreamItem::DataItem(item))),
|
||||||
|
None => None,
|
||||||
}
|
}
|
||||||
PreBinnedScalarItem::Batch(item) => {
|
}
|
||||||
use super::agg::{Fits, FitsInside};
|
|
||||||
match item.fits_inside(fit_range) {
|
|
||||||
Fits::Inside
|
|
||||||
| Fits::PartlyGreater
|
|
||||||
| Fits::PartlyLower
|
|
||||||
| Fits::PartlyLowerAndGreater => {
|
|
||||||
Some(Ok(StreamItem::DataItem(BinnedScalarStreamItem::Values(item))))
|
|
||||||
}
|
|
||||||
_ => None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
Err(e) => Some(Err(e)),
|
Err(e) => Some(Err(e)),
|
||||||
};
|
};
|
||||||
ready(g)
|
ready(g)
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
.into_binned_t(range);
|
// TODO activate the T-binning via the bin-to-bin binning trait.
|
||||||
let mm = BK::Dummy::default();
|
err::todo();
|
||||||
|
//let inp = IntoBinnedT::into_binned_t(inp, range);
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
inp: Box::pin(inp),
|
inp: Box::pin(inp),
|
||||||
_marker: mm,
|
stream_kind,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,7 +111,7 @@ impl<BK> Stream for BinnedScalarStreamFromPreBinnedPatches<BK>
|
|||||||
where
|
where
|
||||||
BK: BinnedStreamKind,
|
BK: BinnedStreamKind,
|
||||||
{
|
{
|
||||||
type Item = Result<StreamItem<BinnedScalarStreamItem>, Error>;
|
type Item = Result<StreamItem<<<BK as BinnedStreamKind>::PreBinnedItem as PreBinnedItem>::BinnedStreamItem>, Error>;
|
||||||
|
|
||||||
fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Option<Self::Item>> {
|
fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Option<Self::Item>> {
|
||||||
use Poll::*;
|
use Poll::*;
|
||||||
|
|||||||
2
disk/src/cache/pbvfs.rs
vendored
2
disk/src/cache/pbvfs.rs
vendored
@@ -62,7 +62,7 @@ impl<BK> Stream for PreBinnedScalarValueFetchedStream<BK>
|
|||||||
where
|
where
|
||||||
BK: BinnedStreamKind,
|
BK: BinnedStreamKind,
|
||||||
{
|
{
|
||||||
type Item = Result<StreamItem<PreBinnedScalarItem>, Error>;
|
type Item = Result<StreamItem<BK::PreBinnedItem>, Error>;
|
||||||
|
|
||||||
fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Option<Self::Item>> {
|
fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Option<Self::Item>> {
|
||||||
use Poll::*;
|
use Poll::*;
|
||||||
|
|||||||
Reference in New Issue
Block a user