Rename StreamKind

This commit is contained in:
Dominik Werder
2021-06-03 12:47:50 +02:00
parent ad62f125e3
commit c19c4997bb
15 changed files with 113 additions and 132 deletions

View File

@@ -6,7 +6,7 @@ use super::eventchunker::EventFull;
use crate::agg::binnedt::AggregatableTdim; use crate::agg::binnedt::AggregatableTdim;
use crate::agg::eventbatch::MinMaxAvgScalarEventBatch; use crate::agg::eventbatch::MinMaxAvgScalarEventBatch;
use crate::agg::streams::StreamItem; use crate::agg::streams::StreamItem;
use crate::binned::{BinnedStreamKind, RangeCompletableItem}; use crate::binned::{RangeCompletableItem, StreamKind};
use bytes::BytesMut; use bytes::BytesMut;
use err::Error; use err::Error;
use futures_core::Stream; use futures_core::Stream;
@@ -28,7 +28,7 @@ pub mod streams;
pub trait AggregatableXdim1Bin<SK> pub trait AggregatableXdim1Bin<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type Output: AggregatableXdim1Bin<SK> + AggregatableTdim<SK>; type Output: AggregatableXdim1Bin<SK> + AggregatableTdim<SK>;
fn into_agg(self) -> Self::Output; fn into_agg(self) -> Self::Output;
@@ -54,7 +54,7 @@ impl std::fmt::Debug for ValuesDim0 {
impl<SK> AggregatableXdim1Bin<SK> for ValuesDim1 impl<SK> AggregatableXdim1Bin<SK> for ValuesDim1
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type Output = MinMaxAvgScalarEventBatch; type Output = MinMaxAvgScalarEventBatch;
@@ -151,7 +151,7 @@ impl std::fmt::Debug for ValuesDim1 {
impl<SK> AggregatableXdim1Bin<SK> for ValuesDim0 impl<SK> AggregatableXdim1Bin<SK> for ValuesDim0
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type Output = MinMaxAvgScalarEventBatch; type Output = MinMaxAvgScalarEventBatch;

View File

@@ -1,5 +1,5 @@
use crate::agg::streams::StreamItem; use crate::agg::streams::StreamItem;
use crate::binned::{BinnedStreamKind, RangeCompletableItem}; use crate::binned::{RangeCompletableItem, StreamKind};
use err::Error; use err::Error;
use futures_core::Stream; use futures_core::Stream;
use futures_util::StreamExt; use futures_util::StreamExt;
@@ -11,7 +11,7 @@ use std::task::{Context, Poll};
pub trait AggregatorTdim<SK>: Sized + Unpin pub trait AggregatorTdim<SK>: Sized + Unpin
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type InputValue; type InputValue;
type OutputValue; type OutputValue;
@@ -24,7 +24,7 @@ where
pub trait AggregatableTdim<SK>: Sized pub trait AggregatableTdim<SK>: Sized
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type Aggregator: AggregatorTdim<SK>; type Aggregator: AggregatorTdim<SK>;
fn aggregator_new_static(ts1: u64, ts2: u64) -> Self::Aggregator; fn aggregator_new_static(ts1: u64, ts2: u64) -> Self::Aggregator;
@@ -32,16 +32,16 @@ where
pub trait IntoBinnedT<SK, S> pub trait IntoBinnedT<SK, S>
where where
SK: BinnedStreamKind, SK: StreamKind,
S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>> + Unpin,
{ {
fn into_binned_t(self, spec: BinnedRange) -> IntoBinnedTDefaultStream<SK, S>; fn into_binned_t(self, spec: BinnedRange) -> IntoBinnedTDefaultStream<SK, S>;
} }
impl<SK, S> IntoBinnedT<SK, S> for S impl<SK, S> IntoBinnedT<SK, S> for S
where where
SK: BinnedStreamKind, SK: StreamKind,
S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>> + Unpin,
{ {
fn into_binned_t(self, spec: BinnedRange) -> IntoBinnedTDefaultStream<SK, S> { fn into_binned_t(self, spec: BinnedRange) -> IntoBinnedTDefaultStream<SK, S> {
IntoBinnedTDefaultStream::new(self, spec) IntoBinnedTDefaultStream::new(self, spec)
@@ -50,36 +50,35 @@ where
pub struct IntoBinnedTDefaultStream<SK, S> pub struct IntoBinnedTDefaultStream<SK, S>
where where
SK: BinnedStreamKind, SK: StreamKind,
S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>> + Unpin,
{ {
inp: S, inp: S,
aggtor: Option<<<SK as BinnedStreamKind>::XBinnedEvents as AggregatableTdim<SK>>::Aggregator>, aggtor: Option<<<SK as StreamKind>::XBinnedEvents as AggregatableTdim<SK>>::Aggregator>,
spec: BinnedRange, spec: BinnedRange,
curbin: u32, curbin: u32,
inp_completed: bool, inp_completed: bool,
all_bins_emitted: bool, all_bins_emitted: bool,
range_complete_observed: bool, range_complete_observed: bool,
range_complete_emitted: bool, range_complete_emitted: bool,
left: left: Option<Poll<Option<Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>>>>,
Option<Poll<Option<Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>>>>,
errored: bool, errored: bool,
completed: bool, completed: bool,
tmp_agg_results: VecDeque<<SK as BinnedStreamKind>::TBinnedBins>, tmp_agg_results: VecDeque<<SK as StreamKind>::TBinnedBins>,
_marker: std::marker::PhantomData<SK>, _marker: std::marker::PhantomData<SK>,
} }
impl<SK, S> IntoBinnedTDefaultStream<SK, S> impl<SK, S> IntoBinnedTDefaultStream<SK, S>
where where
SK: BinnedStreamKind, SK: StreamKind,
S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>> + Unpin,
{ {
pub fn new(inp: S, spec: BinnedRange) -> Self { pub fn new(inp: S, spec: BinnedRange) -> Self {
let range = spec.get_range(0); let range = spec.get_range(0);
Self { Self {
inp, inp,
aggtor: Some( aggtor: Some(
<<SK as BinnedStreamKind>::XBinnedEvents as AggregatableTdim<SK>>::aggregator_new_static( <<SK as StreamKind>::XBinnedEvents as AggregatableTdim<SK>>::aggregator_new_static(
range.beg, range.end, range.beg, range.end,
), ),
), ),
@@ -100,7 +99,7 @@ where
fn cur( fn cur(
&mut self, &mut self,
cx: &mut Context, cx: &mut Context,
) -> Poll<Option<Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>>> { ) -> Poll<Option<Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>>> {
if let Some(cur) = self.left.take() { if let Some(cur) = self.left.take() {
cur cur
} else if self.inp_completed { } else if self.inp_completed {
@@ -117,7 +116,7 @@ where
let _ret = self let _ret = self
.aggtor .aggtor
.replace( .replace(
<<SK as BinnedStreamKind>::XBinnedEvents as AggregatableTdim<SK>>::aggregator_new_static( <<SK as StreamKind>::XBinnedEvents as AggregatableTdim<SK>>::aggregator_new_static(
range.beg, range.end, range.beg, range.end,
), ),
) )
@@ -135,9 +134,8 @@ where
fn handle( fn handle(
&mut self, &mut self,
cur: Poll<Option<Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>>>, cur: Poll<Option<Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>>>,
) -> Option<Poll<Option<Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>, Error>>>> ) -> Option<Poll<Option<Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, Error>>>> {
{
use Poll::*; use Poll::*;
match cur { match cur {
Ready(Some(Ok(item))) => match item { Ready(Some(Ok(item))) => match item {
@@ -205,10 +203,10 @@ where
impl<SK, S> Stream for IntoBinnedTDefaultStream<SK, S> impl<SK, S> Stream for IntoBinnedTDefaultStream<SK, S>
where where
SK: BinnedStreamKind, SK: StreamKind,
S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>> + Unpin,
{ {
type Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>, Error>; type Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, 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::*;

View File

@@ -1,6 +1,6 @@
use crate::agg::streams::StreamItem; use crate::agg::streams::StreamItem;
use crate::agg::AggregatableXdim1Bin; use crate::agg::AggregatableXdim1Bin;
use crate::binned::{BinnedStreamKind, RangeCompletableItem}; use crate::binned::{RangeCompletableItem, StreamKind};
use err::Error; use err::Error;
use futures_core::Stream; use futures_core::Stream;
use futures_util::StreamExt; use futures_util::StreamExt;
@@ -9,7 +9,7 @@ use std::task::{Context, Poll};
pub trait IntoBinnedXBins1<I, SK> pub trait IntoBinnedXBins1<I, SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
Self: Stream<Item = Result<StreamItem<RangeCompletableItem<I>>, Error>> + Unpin, Self: Stream<Item = Result<StreamItem<RangeCompletableItem<I>>, Error>> + Unpin,
I: AggregatableXdim1Bin<SK>, I: AggregatableXdim1Bin<SK>,
{ {
@@ -19,7 +19,7 @@ where
impl<S, I, SK> IntoBinnedXBins1<I, SK> for S impl<S, I, SK> IntoBinnedXBins1<I, SK> for S
where where
SK: BinnedStreamKind, SK: StreamKind,
S: Stream<Item = Result<StreamItem<RangeCompletableItem<I>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<I>>, Error>> + Unpin,
I: AggregatableXdim1Bin<SK>, I: AggregatableXdim1Bin<SK>,
{ {
@@ -35,7 +35,7 @@ where
pub struct IntoBinnedXBins1DefaultStream<S, I, SK> pub struct IntoBinnedXBins1DefaultStream<S, I, SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
S: Stream<Item = Result<StreamItem<RangeCompletableItem<I>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<I>>, Error>> + Unpin,
I: AggregatableXdim1Bin<SK>, I: AggregatableXdim1Bin<SK>,
{ {
@@ -45,7 +45,7 @@ where
impl<S, I, SK> Stream for IntoBinnedXBins1DefaultStream<S, I, SK> impl<S, I, SK> Stream for IntoBinnedXBins1DefaultStream<S, I, SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
S: Stream<Item = Result<StreamItem<RangeCompletableItem<I>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<I>>, Error>> + Unpin,
I: AggregatableXdim1Bin<SK>, I: AggregatableXdim1Bin<SK>,
{ {

View File

@@ -2,7 +2,7 @@ use crate::agg::binnedt::{AggregatableTdim, AggregatorTdim};
use crate::agg::scalarbinbatch::MinMaxAvgScalarBinBatch; use crate::agg::scalarbinbatch::MinMaxAvgScalarBinBatch;
use crate::agg::streams::{Appendable, StreamItem}; use crate::agg::streams::{Appendable, StreamItem};
use crate::agg::AggregatableXdim1Bin; use crate::agg::AggregatableXdim1Bin;
use crate::binned::{BinnedStreamKind, MakeBytesFrame, RangeCompletableItem, RangeOverlapInfo}; use crate::binned::{MakeBytesFrame, RangeCompletableItem, RangeOverlapInfo, StreamKind};
use crate::frame::makeframe::make_frame; use crate::frame::makeframe::make_frame;
use bytes::{BufMut, Bytes, BytesMut}; use bytes::{BufMut, Bytes, BytesMut};
use err::Error; use err::Error;
@@ -103,7 +103,7 @@ impl std::fmt::Debug for MinMaxAvgScalarEventBatch {
impl<SK> AggregatableXdim1Bin<SK> for MinMaxAvgScalarEventBatch impl<SK> AggregatableXdim1Bin<SK> for MinMaxAvgScalarEventBatch
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type Output = MinMaxAvgScalarEventBatch; type Output = MinMaxAvgScalarEventBatch;
fn into_agg(self) -> Self::Output { fn into_agg(self) -> Self::Output {
@@ -113,7 +113,7 @@ where
impl<SK> AggregatableTdim<SK> for MinMaxAvgScalarEventBatch impl<SK> AggregatableTdim<SK> for MinMaxAvgScalarEventBatch
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
//type Output = MinMaxAvgScalarBinBatch; //type Output = MinMaxAvgScalarBinBatch;
type Aggregator = MinMaxAvgScalarEventBatchAggregator; type Aggregator = MinMaxAvgScalarEventBatchAggregator;
@@ -174,7 +174,7 @@ impl MinMaxAvgScalarEventBatchAggregator {
impl<SK> AggregatorTdim<SK> for MinMaxAvgScalarEventBatchAggregator impl<SK> AggregatorTdim<SK> for MinMaxAvgScalarEventBatchAggregator
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type InputValue = MinMaxAvgScalarEventBatch; type InputValue = MinMaxAvgScalarEventBatch;
type OutputValue = MinMaxAvgScalarBinBatch; type OutputValue = MinMaxAvgScalarBinBatch;

View File

@@ -1,7 +1,7 @@
use crate::agg::binnedt::{AggregatableTdim, AggregatorTdim}; use crate::agg::binnedt::{AggregatableTdim, AggregatorTdim};
use crate::agg::streams::{Appendable, Bins, StreamItem}; use crate::agg::streams::{Appendable, Bins, StreamItem};
use crate::agg::{AggregatableXdim1Bin, Fits, FitsInside}; use crate::agg::{AggregatableXdim1Bin, Fits, FitsInside};
use crate::binned::{BinnedStreamKind, MakeBytesFrame, RangeCompletableItem}; use crate::binned::{MakeBytesFrame, RangeCompletableItem, StreamKind};
use crate::frame::makeframe::make_frame; use crate::frame::makeframe::make_frame;
use bytes::{BufMut, Bytes, BytesMut}; use bytes::{BufMut, Bytes, BytesMut};
use err::Error; use err::Error;
@@ -187,7 +187,7 @@ impl MinMaxAvgScalarBinBatch {
impl<SK> AggregatableXdim1Bin<SK> for MinMaxAvgScalarBinBatch impl<SK> AggregatableXdim1Bin<SK> for MinMaxAvgScalarBinBatch
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type Output = MinMaxAvgScalarBinBatch; type Output = MinMaxAvgScalarBinBatch;
fn into_agg(self) -> Self::Output { fn into_agg(self) -> Self::Output {
@@ -197,7 +197,7 @@ where
impl<SK> AggregatableTdim<SK> for MinMaxAvgScalarBinBatch impl<SK> AggregatableTdim<SK> for MinMaxAvgScalarBinBatch
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
//type Output = MinMaxAvgScalarBinBatch; //type Output = MinMaxAvgScalarBinBatch;
type Aggregator = MinMaxAvgScalarBinBatchAggregator; type Aggregator = MinMaxAvgScalarBinBatchAggregator;
@@ -239,7 +239,7 @@ impl MinMaxAvgScalarBinBatchAggregator {
impl<SK> AggregatorTdim<SK> for MinMaxAvgScalarBinBatchAggregator impl<SK> AggregatorTdim<SK> for MinMaxAvgScalarBinBatchAggregator
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type InputValue = MinMaxAvgScalarBinBatch; type InputValue = MinMaxAvgScalarBinBatch;
type OutputValue = MinMaxAvgScalarBinBatch; type OutputValue = MinMaxAvgScalarBinBatch;

View File

@@ -501,7 +501,7 @@ pub trait XBinnedEvents<SK>:
+ PushableIndex + PushableIndex
+ Appendable + Appendable
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
fn frame_type() -> u32; fn frame_type() -> u32;
} }
@@ -524,7 +524,7 @@ pub trait TBinnedBins:
impl<SK> XBinnedEvents<SK> for MinMaxAvgScalarEventBatch impl<SK> XBinnedEvents<SK> for MinMaxAvgScalarEventBatch
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
fn frame_type() -> u32 { fn frame_type() -> u32 {
<Result<StreamItem<RangeCompletableItem<Self>>, Error> as FrameType>::FRAME_TYPE_ID <Result<StreamItem<RangeCompletableItem<Self>>, Error> as FrameType>::FRAME_TYPE_ID
@@ -537,7 +537,7 @@ impl TBinnedBins for MinMaxAvgScalarBinBatch {
} }
} }
pub trait BinnedStreamKind: Clone + Unpin + Send + Sync + 'static { pub trait StreamKind: Clone + Unpin + Send + Sync + 'static {
type TBinnedStreamType: Stream<Item = Result<StreamItem<RangeCompletableItem<Self::TBinnedBins>>, Error>> + Send; type TBinnedStreamType: Stream<Item = Result<StreamItem<RangeCompletableItem<Self::TBinnedBins>>, Error>> + Send;
type XBinnedEvents: XBinnedEvents<Self>; type XBinnedEvents: XBinnedEvents<Self>;
type TBinnedBins: TBinnedBins; type TBinnedBins: TBinnedBins;
@@ -590,7 +590,7 @@ pub enum RangeCompletableItem<T> {
Data(T), Data(T),
} }
impl BinnedStreamKind for BinnedStreamKindScalar { impl StreamKind for BinnedStreamKindScalar {
// TODO is this really needed? // TODO is this really needed?
type TBinnedStreamType = BoxedStream<Result<StreamItem<RangeCompletableItem<Self::TBinnedBins>>, Error>>; type TBinnedStreamType = BoxedStream<Result<StreamItem<RangeCompletableItem<Self::TBinnedBins>>, Error>>;
type XBinnedEvents = MinMaxAvgScalarEventBatch; type XBinnedEvents = MinMaxAvgScalarEventBatch;

View File

@@ -1,4 +1,4 @@
use crate::binned::{BinnedStreamKind, BinnedStreamRes}; use crate::binned::{BinnedStreamRes, StreamKind};
use crate::binnedstream::BoxedStream; use crate::binnedstream::BoxedStream;
use crate::cache::BinnedQuery; use crate::cache::BinnedQuery;
use crate::raw::EventsQuery; use crate::raw::EventsQuery;
@@ -12,7 +12,7 @@ pub async fn binned_stream<SK>(
stream_kind: SK, stream_kind: SK,
) -> Result<BinnedStreamRes<SK::TBinnedBins>, Error> ) -> Result<BinnedStreamRes<SK::TBinnedBins>, Error>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
if query.channel().backend != node_config.node.backend { if query.channel().backend != node_config.node.backend {
let err = Error::with_msg(format!( let err = Error::with_msg(format!(

View File

@@ -1,5 +1,5 @@
use crate::agg::streams::StreamItem; use crate::agg::streams::StreamItem;
use crate::binned::{BinnedStreamKind, RangeCompletableItem}; use crate::binned::{RangeCompletableItem, StreamKind};
use crate::cache::pbvfs::PreBinnedScalarValueFetchedStream; use crate::cache::pbvfs::PreBinnedScalarValueFetchedStream;
use crate::cache::{CacheUsage, PreBinnedQuery}; use crate::cache::{CacheUsage, PreBinnedQuery};
use crate::frame::makeframe::FrameType; use crate::frame::makeframe::FrameType;
@@ -14,21 +14,18 @@ use std::task::{Context, Poll};
pub struct BinnedScalarStreamFromPreBinnedPatches<SK> pub struct BinnedScalarStreamFromPreBinnedPatches<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
inp: Pin< inp: Pin<
Box< Box<dyn Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, Error>> + Send>,
dyn Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>, Error>>
+ Send,
>,
>, >,
_stream_kind: SK, _stream_kind: SK,
} }
impl<SK> BinnedScalarStreamFromPreBinnedPatches<SK> impl<SK> BinnedScalarStreamFromPreBinnedPatches<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>, Error>: FrameType, Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, Error>: FrameType,
{ {
pub fn new( pub fn new(
patch_it: PreBinnedPatchIterator, patch_it: PreBinnedPatchIterator,
@@ -120,7 +117,7 @@ where
// Can I remove the whole type or keep for static check? // Can I remove the whole type or keep for static check?
impl<SK> Stream for BinnedScalarStreamFromPreBinnedPatches<SK> impl<SK> Stream for BinnedScalarStreamFromPreBinnedPatches<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type Item = Result<StreamItem<RangeCompletableItem<SK::TBinnedBins>>, Error>; type Item = Result<StreamItem<RangeCompletableItem<SK::TBinnedBins>>, Error>;

View File

@@ -1,5 +1,5 @@
use crate::agg::streams::StreamItem; use crate::agg::streams::StreamItem;
use crate::binned::{BinnedStreamKind, RangeCompletableItem}; use crate::binned::{RangeCompletableItem, StreamKind};
use crate::cache::pbv::PreBinnedValueByteStream; use crate::cache::pbv::PreBinnedValueByteStream;
use crate::frame::makeframe::FrameType; use crate::frame::makeframe::FrameType;
use crate::merge::MergedMinMaxAvgScalarStream; use crate::merge::MergedMinMaxAvgScalarStream;
@@ -309,7 +309,7 @@ pub fn pre_binned_bytes_for_http<SK>(
stream_kind: SK, stream_kind: SK,
) -> Result<PreBinnedValueByteStream<SK>, Error> ) -> Result<PreBinnedValueByteStream<SK>, Error>
where where
SK: BinnedStreamKind, SK: StreamKind,
Result<StreamItem<RangeCompletableItem<SK::TBinnedBins>>, err::Error>: FrameType, Result<StreamItem<RangeCompletableItem<SK::TBinnedBins>>, err::Error>: FrameType,
{ {
if query.channel.backend != node_config.node.backend { if query.channel.backend != node_config.node.backend {
@@ -396,18 +396,18 @@ type T002<T> = Pin<Box<dyn Future<Output = Result<T001<T>, Error>> + Send>>;
pub struct MergedFromRemotes<SK> pub struct MergedFromRemotes<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
tcp_establish_futs: Vec<T002<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>>, tcp_establish_futs: Vec<T002<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>>,
nodein: Vec<Option<T001<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>>>, nodein: Vec<Option<T001<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>>>,
merged: Option<T001<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>>, merged: Option<T001<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>>,
completed: bool, completed: bool,
errored: bool, errored: bool,
} }
impl<SK> MergedFromRemotes<SK> impl<SK> MergedFromRemotes<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
pub fn new(evq: EventsQuery, perf_opts: PerfOpts, cluster: Cluster, stream_kind: SK) -> Self { pub fn new(evq: EventsQuery, perf_opts: PerfOpts, cluster: Cluster, stream_kind: SK) -> Self {
let mut tcp_establish_futs = vec![]; let mut tcp_establish_futs = vec![];
@@ -418,7 +418,7 @@ where
node.clone(), node.clone(),
stream_kind.clone(), stream_kind.clone(),
); );
let f: T002<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>> = Box::pin(f); let f: T002<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>> = Box::pin(f);
tcp_establish_futs.push(f); tcp_establish_futs.push(f);
} }
let n = tcp_establish_futs.len(); let n = tcp_establish_futs.len();
@@ -434,9 +434,9 @@ where
impl<SK> Stream for MergedFromRemotes<SK> impl<SK> Stream for MergedFromRemotes<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
type Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>; type Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, 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::*;

54
disk/src/cache/pbv.rs vendored
View File

@@ -1,5 +1,5 @@
use crate::agg::streams::{Appendable, StreamItem}; use crate::agg::streams::{Appendable, StreamItem};
use crate::binned::{BinnedStreamKind, RangeCompletableItem, WithLen}; use crate::binned::{RangeCompletableItem, StreamKind, WithLen};
use crate::cache::pbvfs::PreBinnedScalarValueFetchedStream; use crate::cache::pbvfs::PreBinnedScalarValueFetchedStream;
use crate::cache::{CacheFileDesc, MergedFromRemotes, PreBinnedQuery, WrittenPbCache}; use crate::cache::{CacheFileDesc, MergedFromRemotes, PreBinnedQuery, WrittenPbCache};
use crate::frame::makeframe::{make_frame, FrameType}; use crate::frame::makeframe::{make_frame, FrameType};
@@ -22,7 +22,7 @@ pub type PreBinnedValueByteStream<BK> = SCC<PreBinnedValueByteStreamInner<BK>>;
pub struct PreBinnedValueByteStreamInner<SK> pub struct PreBinnedValueByteStreamInner<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
inp: PreBinnedValueStream<SK>, inp: PreBinnedValueStream<SK>,
} }
@@ -33,8 +33,8 @@ pub fn pre_binned_value_byte_stream_new<SK>(
stream_kind: SK, stream_kind: SK,
) -> PreBinnedValueByteStream<SK> ) -> PreBinnedValueByteStream<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>, err::Error>: FrameType, Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, err::Error>: FrameType,
{ {
let s1 = PreBinnedValueStream::new(query.clone(), node_config, stream_kind); let s1 = PreBinnedValueStream::new(query.clone(), node_config, stream_kind);
let s2 = PreBinnedValueByteStreamInner { inp: s1 }; let s2 = PreBinnedValueByteStreamInner { inp: s1 };
@@ -43,8 +43,8 @@ where
impl<SK> Stream for PreBinnedValueByteStreamInner<SK> impl<SK> Stream for PreBinnedValueByteStreamInner<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>, err::Error>: FrameType, Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, err::Error>: FrameType,
{ {
type Item = Result<Bytes, Error>; type Item = Result<Bytes, Error>;
@@ -52,10 +52,9 @@ where
use Poll::*; use Poll::*;
match self.inp.poll_next_unpin(cx) { match self.inp.poll_next_unpin(cx) {
Ready(Some(item)) => { Ready(Some(item)) => {
match make_frame::< match make_frame::<Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, err::Error>>(
Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>, err::Error>, &item,
>(&item) ) {
{
Ok(buf) => Ready(Some(Ok(buf.freeze()))), Ok(buf) => Ready(Some(Ok(buf.freeze()))),
Err(e) => Ready(Some(Err(e.into()))), Err(e) => Ready(Some(Err(e.into()))),
} }
@@ -68,7 +67,7 @@ where
pub struct PreBinnedValueStream<SK> pub struct PreBinnedValueStream<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
query: PreBinnedQuery, query: PreBinnedQuery,
node_config: NodeConfigCached, node_config: NodeConfigCached,
@@ -76,12 +75,8 @@ where
fut2: Option< fut2: Option<
Pin< Pin<
Box< Box<
dyn Stream< dyn Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, err::Error>>
Item = Result< + Send,
StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>,
err::Error,
>,
> + Send,
>, >,
>, >,
>, >,
@@ -93,16 +88,13 @@ where
errored: bool, errored: bool,
completed: bool, completed: bool,
streamlog: Streamlog, streamlog: Streamlog,
values: <SK as BinnedStreamKind>::TBinnedBins, values: <SK as StreamKind>::TBinnedBins,
write_fut: Option<Pin<Box<dyn Future<Output = Result<WrittenPbCache, Error>> + Send>>>, write_fut: Option<Pin<Box<dyn Future<Output = Result<WrittenPbCache, Error>> + Send>>>,
read_cache_fut: Option< read_cache_fut: Option<
Pin< Pin<
Box< Box<
dyn Future< dyn Future<
Output = Result< Output = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, err::Error>,
StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>,
err::Error,
>,
> + Send, > + Send,
>, >,
>, >,
@@ -112,8 +104,8 @@ where
impl<SK> PreBinnedValueStream<SK> impl<SK> PreBinnedValueStream<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>, err::Error>: FrameType, Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, err::Error>: FrameType,
{ {
pub fn new(query: PreBinnedQuery, node_config: &NodeConfigCached, stream_kind: SK) -> Self { pub fn new(query: PreBinnedQuery, node_config: &NodeConfigCached, stream_kind: SK) -> Self {
Self { Self {
@@ -129,7 +121,7 @@ where
errored: false, errored: false,
completed: false, completed: false,
streamlog: Streamlog::new(node_config.ix as u32), streamlog: Streamlog::new(node_config.ix as u32),
values: <<SK as BinnedStreamKind>::TBinnedBins as Appendable>::empty(), values: <<SK as StreamKind>::TBinnedBins as Appendable>::empty(),
write_fut: None, write_fut: None,
read_cache_fut: None, read_cache_fut: None,
stream_kind, stream_kind,
@@ -164,7 +156,7 @@ where
self.node_config.node_config.cluster.clone(), self.node_config.node_config.cluster.clone(),
self.stream_kind.clone(), self.stream_kind.clone(),
); );
let s1 = <SK as BinnedStreamKind>::xbinned_to_tbinned(s1, range); let s1 = <SK as StreamKind>::xbinned_to_tbinned(s1, range);
self.fut2 = Some(Box::pin(s1)); self.fut2 = Some(Box::pin(s1));
} }
@@ -239,10 +231,10 @@ where
impl<SK> Stream for PreBinnedValueStream<SK> impl<SK> Stream for PreBinnedValueStream<SK>
where where
SK: BinnedStreamKind + Unpin, SK: StreamKind + Unpin,
Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>, err::Error>: FrameType, Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, err::Error>: FrameType,
{ {
type Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::TBinnedBins>>, err::Error>; type Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::TBinnedBins>>, err::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::*;
@@ -318,7 +310,7 @@ where
self.streamlog.append(Level::INFO, msg); self.streamlog.append(Level::INFO, msg);
let values = std::mem::replace( let values = std::mem::replace(
&mut self.values, &mut self.values,
<<SK as BinnedStreamKind>::TBinnedBins as Appendable>::empty(), <<SK as StreamKind>::TBinnedBins as Appendable>::empty(),
); );
let fut = super::write_pb_cache_min_max_avg_scalar( let fut = super::write_pb_cache_min_max_avg_scalar(
values, values,
@@ -371,7 +363,7 @@ where
match item { match item {
Ok(file) => { Ok(file) => {
self.read_from_cache = true; self.read_from_cache = true;
let fut = <<SK as BinnedStreamKind>::TBinnedBins as crate::binned::ReadableFromFile>::read_from_file(file)?; let fut = <<SK as StreamKind>::TBinnedBins as crate::binned::ReadableFromFile>::read_from_file(file)?;
self.read_cache_fut = Some(Box::pin(fut)); self.read_cache_fut = Some(Box::pin(fut));
continue 'outer; continue 'outer;
} }

View File

@@ -1,5 +1,5 @@
use crate::agg::streams::StreamItem; use crate::agg::streams::StreamItem;
use crate::binned::{BinnedStreamKind, RangeCompletableItem}; use crate::binned::{RangeCompletableItem, StreamKind};
use crate::cache::{node_ix_for_patch, HttpBodyAsAsyncRead, PreBinnedQuery}; use crate::cache::{node_ix_for_patch, HttpBodyAsAsyncRead, PreBinnedQuery};
use crate::frame::inmem::InMemoryFrameAsyncReadStream; use crate::frame::inmem::InMemoryFrameAsyncReadStream;
use crate::frame::makeframe::{decode_frame, FrameType}; use crate::frame::makeframe::{decode_frame, FrameType};
@@ -14,7 +14,7 @@ use std::task::{Context, Poll};
pub struct PreBinnedScalarValueFetchedStream<SK> pub struct PreBinnedScalarValueFetchedStream<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
uri: http::Uri, uri: http::Uri,
resfut: Option<hyper::client::ResponseFuture>, resfut: Option<hyper::client::ResponseFuture>,
@@ -26,7 +26,7 @@ where
impl<SK> PreBinnedScalarValueFetchedStream<SK> impl<SK> PreBinnedScalarValueFetchedStream<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
pub fn new(query: &PreBinnedQuery, node_config: &NodeConfigCached, stream_kind: &SK) -> Result<Self, Error> { pub fn new(query: &PreBinnedQuery, node_config: &NodeConfigCached, stream_kind: &SK) -> Result<Self, Error> {
let nodeix = node_ix_for_patch(&query.patch, &query.channel, &node_config.node_config.cluster); let nodeix = node_ix_for_patch(&query.patch, &query.channel, &node_config.node_config.cluster);
@@ -53,7 +53,7 @@ where
// TODO change name, is now generic: // TODO change name, is now generic:
impl<SK> Stream for PreBinnedScalarValueFetchedStream<SK> impl<SK> Stream for PreBinnedScalarValueFetchedStream<SK>
where where
SK: BinnedStreamKind, SK: StreamKind,
Result<StreamItem<RangeCompletableItem<SK::TBinnedBins>>, err::Error>: FrameType, Result<StreamItem<RangeCompletableItem<SK::TBinnedBins>>, err::Error>: FrameType,
{ {
type Item = Result<StreamItem<RangeCompletableItem<SK::TBinnedBins>>, Error>; type Item = Result<StreamItem<RangeCompletableItem<SK::TBinnedBins>>, Error>;

View File

@@ -1,5 +1,5 @@
use crate::agg::streams::{Appendable, StatsItem, StreamItem}; use crate::agg::streams::{Appendable, StatsItem, StreamItem};
use crate::binned::{BinnedStreamKind, PushableIndex, RangeCompletableItem, WithLen, WithTimestamps}; use crate::binned::{PushableIndex, RangeCompletableItem, StreamKind, WithLen, WithTimestamps};
use crate::streamlog::LogItem; use crate::streamlog::LogItem;
use err::Error; use err::Error;
use futures_core::Stream; use futures_core::Stream;
@@ -13,14 +13,14 @@ use std::task::{Context, Poll};
pub struct MergedMinMaxAvgScalarStream<S, SK> pub struct MergedMinMaxAvgScalarStream<S, SK>
where where
S: Stream<Item = Result<StreamItem<RangeCompletableItem<SK::XBinnedEvents>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<SK::XBinnedEvents>>, Error>> + Unpin,
SK: BinnedStreamKind, SK: StreamKind,
{ {
inps: Vec<S>, inps: Vec<S>,
current: Vec<MergedCurVal<<SK as BinnedStreamKind>::XBinnedEvents>>, current: Vec<MergedCurVal<<SK as StreamKind>::XBinnedEvents>>,
ixs: Vec<usize>, ixs: Vec<usize>,
errored: bool, errored: bool,
completed: bool, completed: bool,
batch: <SK as BinnedStreamKind>::XBinnedEvents, batch: <SK as StreamKind>::XBinnedEvents,
ts_last_emit: u64, ts_last_emit: u64,
range_complete_observed: Vec<bool>, range_complete_observed: Vec<bool>,
range_complete_observed_all: bool, range_complete_observed_all: bool,
@@ -34,7 +34,7 @@ where
impl<S, SK> MergedMinMaxAvgScalarStream<S, SK> impl<S, SK> MergedMinMaxAvgScalarStream<S, SK>
where where
S: Stream<Item = Result<StreamItem<RangeCompletableItem<SK::XBinnedEvents>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<SK::XBinnedEvents>>, Error>> + Unpin,
SK: BinnedStreamKind, SK: StreamKind,
{ {
pub fn new(inps: Vec<S>) -> Self { pub fn new(inps: Vec<S>) -> Self {
let n = inps.len(); let n = inps.len();
@@ -45,7 +45,7 @@ where
ixs: vec![0; n], ixs: vec![0; n],
errored: false, errored: false,
completed: false, completed: false,
batch: <<SK as BinnedStreamKind>::XBinnedEvents as Appendable>::empty(), batch: <<SK as StreamKind>::XBinnedEvents as Appendable>::empty(),
ts_last_emit: 0, ts_last_emit: 0,
range_complete_observed: vec![false; n], range_complete_observed: vec![false; n],
range_complete_observed_all: false, range_complete_observed_all: false,
@@ -125,10 +125,10 @@ where
// TODO change name, it is generic now: // TODO change name, it is generic now:
impl<S, SK> Stream for MergedMinMaxAvgScalarStream<S, SK> impl<S, SK> Stream for MergedMinMaxAvgScalarStream<S, SK>
where where
S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>> + Unpin, S: Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>> + Unpin,
SK: BinnedStreamKind, SK: StreamKind,
{ {
type Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>; type Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, 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::*;
@@ -181,7 +181,7 @@ where
if self.batch.len() != 0 { if self.batch.len() != 0 {
//let k = std::mem::replace(&mut self.batch, MinMaxAvgScalarEventBatch::empty()); //let k = std::mem::replace(&mut self.batch, MinMaxAvgScalarEventBatch::empty());
//let ret = MinMaxAvgScalarEventBatchStreamItem::Values(k); //let ret = MinMaxAvgScalarEventBatchStreamItem::Values(k);
let emp = <<SK as BinnedStreamKind>::XBinnedEvents as Appendable>::empty(); let emp = <<SK as StreamKind>::XBinnedEvents as Appendable>::empty();
let ret = std::mem::replace(&mut self.batch, emp); let ret = std::mem::replace(&mut self.batch, emp);
self.data_emit_complete = true; self.data_emit_complete = true;
Ready(Some(Ok(StreamItem::DataItem(RangeCompletableItem::Data(ret))))) Ready(Some(Ok(StreamItem::DataItem(RangeCompletableItem::Data(ret)))))
@@ -191,7 +191,7 @@ where
} }
} else { } else {
assert!(lowest_ts >= self.ts_last_emit); assert!(lowest_ts >= self.ts_last_emit);
let emp = <<SK as BinnedStreamKind>::XBinnedEvents as Appendable>::empty(); let emp = <<SK as StreamKind>::XBinnedEvents as Appendable>::empty();
let mut local_batch = std::mem::replace(&mut self.batch, emp); let mut local_batch = std::mem::replace(&mut self.batch, emp);
self.ts_last_emit = lowest_ts; self.ts_last_emit = lowest_ts;
let rix = self.ixs[lowest_ix]; let rix = self.ixs[lowest_ix];
@@ -225,7 +225,7 @@ where
if self.batch.len() >= self.batch_size { if self.batch.len() >= self.batch_size {
//let k = std::mem::replace(&mut self.batch, MinMaxAvgScalarEventBatch::empty()); //let k = std::mem::replace(&mut self.batch, MinMaxAvgScalarEventBatch::empty());
//let ret = MinMaxAvgScalarEventBatchStreamItem::Values(k); //let ret = MinMaxAvgScalarEventBatchStreamItem::Values(k);
let emp = <<SK as BinnedStreamKind>::XBinnedEvents as Appendable>::empty(); let emp = <<SK as StreamKind>::XBinnedEvents as Appendable>::empty();
let ret = std::mem::replace(&mut self.batch, emp); let ret = std::mem::replace(&mut self.batch, emp);
Ready(Some(Ok(StreamItem::DataItem(RangeCompletableItem::Data(ret))))) Ready(Some(Ok(StreamItem::DataItem(RangeCompletableItem::Data(ret)))))
} else { } else {

View File

@@ -6,7 +6,7 @@ to request such data from nodes.
*/ */
use crate::agg::streams::StreamItem; use crate::agg::streams::StreamItem;
use crate::binned::{BinnedStreamKind, RangeCompletableItem}; use crate::binned::{RangeCompletableItem, StreamKind};
use crate::frame::inmem::InMemoryFrameAsyncReadStream; use crate::frame::inmem::InMemoryFrameAsyncReadStream;
use crate::frame::makeframe::{make_frame, make_term_frame}; use crate::frame::makeframe::{make_frame, make_term_frame};
use crate::raw::bffr::EventsFromFrames; use crate::raw::bffr::EventsFromFrames;
@@ -44,14 +44,14 @@ pub async fn x_processed_stream_from_node<SK>(
) -> Result< ) -> Result<
Pin< Pin<
Box< Box<
dyn Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>> dyn Stream<Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>>
+ Send, + Send,
>, >,
>, >,
Error, Error,
> >
where where
SK: BinnedStreamKind, SK: StreamKind,
{ {
let net = TcpStream::connect(format!("{}:{}", node.host, node.port_raw)).await?; let net = TcpStream::connect(format!("{}:{}", node.host, node.port_raw)).await?;
let qjs = serde_json::to_string(&query)?; let qjs = serde_json::to_string(&query)?;

View File

@@ -1,5 +1,5 @@
use crate::agg::streams::StreamItem; use crate::agg::streams::StreamItem;
use crate::binned::{BinnedStreamKind, RangeCompletableItem, XBinnedEvents}; use crate::binned::{RangeCompletableItem, StreamKind, XBinnedEvents};
use crate::frame::inmem::InMemoryFrameAsyncReadStream; use crate::frame::inmem::InMemoryFrameAsyncReadStream;
use crate::frame::makeframe::decode_frame; use crate::frame::makeframe::decode_frame;
use err::Error; use err::Error;
@@ -13,7 +13,7 @@ use tokio::io::AsyncRead;
pub struct EventsFromFrames<T, SK> pub struct EventsFromFrames<T, SK>
where where
T: AsyncRead + Unpin, T: AsyncRead + Unpin,
SK: BinnedStreamKind, SK: StreamKind,
{ {
inp: InMemoryFrameAsyncReadStream<T>, inp: InMemoryFrameAsyncReadStream<T>,
errored: bool, errored: bool,
@@ -24,7 +24,7 @@ where
impl<T, SK> EventsFromFrames<T, SK> impl<T, SK> EventsFromFrames<T, SK>
where where
T: AsyncRead + Unpin, T: AsyncRead + Unpin,
SK: BinnedStreamKind, SK: StreamKind,
{ {
pub fn new(inp: InMemoryFrameAsyncReadStream<T>, stream_kind: SK) -> Self { pub fn new(inp: InMemoryFrameAsyncReadStream<T>, stream_kind: SK) -> Self {
Self { Self {
@@ -39,11 +39,11 @@ where
impl<T, SK> Stream for EventsFromFrames<T, SK> impl<T, SK> Stream for EventsFromFrames<T, SK>
where where
T: AsyncRead + Unpin, T: AsyncRead + Unpin,
SK: BinnedStreamKind, SK: StreamKind,
// TODO see binned.rs better to express it on trait? // TODO see binned.rs better to express it on trait?
//Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>: FrameType, //Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>: FrameType,
{ {
type Item = Result<StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>, Error>; type Item = Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, 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::*;
@@ -60,13 +60,10 @@ where
StreamItem::Stats(item) => Ready(Some(Ok(StreamItem::Stats(item)))), StreamItem::Stats(item) => Ready(Some(Ok(StreamItem::Stats(item)))),
StreamItem::DataItem(frame) => { StreamItem::DataItem(frame) => {
match decode_frame::< match decode_frame::<
Result< Result<StreamItem<RangeCompletableItem<<SK as StreamKind>::XBinnedEvents>>, Error>,
StreamItem<RangeCompletableItem<<SK as BinnedStreamKind>::XBinnedEvents>>,
Error,
>,
>( >(
&frame, &frame,
<<SK as BinnedStreamKind>::XBinnedEvents as XBinnedEvents<SK>>::frame_type(), <<SK as StreamKind>::XBinnedEvents as XBinnedEvents<SK>>::frame_type(),
) { ) {
Ok(item) => match item { Ok(item) => match item {
Ok(item) => Ready(Some(Ok(item))), Ok(item) => Ready(Some(Ok(item))),

View File

@@ -2,7 +2,7 @@ use crate::agg::binnedx::IntoBinnedXBins1;
use crate::agg::eventbatch::MinMaxAvgScalarEventBatch; use crate::agg::eventbatch::MinMaxAvgScalarEventBatch;
use crate::agg::streams::StreamItem; use crate::agg::streams::StreamItem;
use crate::agg::IntoDim1F32Stream; use crate::agg::IntoDim1F32Stream;
use crate::binned::{BinnedStreamKind, BinnedStreamKindScalar, RangeCompletableItem}; use crate::binned::{BinnedStreamKindScalar, RangeCompletableItem, StreamKind};
use crate::eventblobs::EventBlobsComplete; use crate::eventblobs::EventBlobsComplete;
use crate::eventchunker::EventChunkerConf; use crate::eventchunker::EventChunkerConf;
use crate::frame::inmem::InMemoryFrameAsyncReadStream; use crate::frame::inmem::InMemoryFrameAsyncReadStream;
@@ -189,7 +189,7 @@ async fn events_conn_handler_inner_try(
AggKind::DimXBins1 => { AggKind::DimXBins1 => {
match make_frame::< match make_frame::<
Result< Result<
StreamItem<RangeCompletableItem<<BinnedStreamKindScalar as BinnedStreamKind>::XBinnedEvents>>, StreamItem<RangeCompletableItem<<BinnedStreamKindScalar as StreamKind>::XBinnedEvents>>,
Error, Error,
>, >,
>(&item) >(&item)
@@ -205,10 +205,7 @@ async fn events_conn_handler_inner_try(
} }
// TODO define this case: // TODO define this case:
AggKind::DimXBinsN(_xbincount) => match make_frame::< AggKind::DimXBinsN(_xbincount) => match make_frame::<
Result< Result<StreamItem<RangeCompletableItem<<BinnedStreamKindScalar as StreamKind>::XBinnedEvents>>, Error>,
StreamItem<RangeCompletableItem<<BinnedStreamKindScalar as BinnedStreamKind>::XBinnedEvents>>,
Error,
>,
>(err::todoval()) >(err::todoval())
{ {
Ok(buf) => match netout.write_all(&buf).await { Ok(buf) => match netout.write_all(&buf).await {