WIP
This commit is contained in:
@@ -537,6 +537,49 @@ impl TBinnedBins for MinMaxAvgScalarBinBatch {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
// Write a function (as demo instead of a full Stream) which couples together the flow between the
|
||||||
|
// event decoding and the event node processing.
|
||||||
|
// That should require me to require Input/Output combinations in the StreamKind.
|
||||||
|
|
||||||
|
// TODO try to get the binning generic over the actual numeric disk-dtype.
|
||||||
|
// That should require me to make StreamKind generic over the numeric dtype.
|
||||||
|
// I then need a away to compose the StreamKind:
|
||||||
|
// Instead of writing some if-else-match-monster over all possible disk-dtype and AggKind combinations,
|
||||||
|
// I would like to decide on the disk-dtype first and get some generic intermediate type, and the
|
||||||
|
// decide the AggKind, and maybe even other generic types.
|
||||||
|
|
||||||
|
pub trait EventDecoder {
|
||||||
|
type Output;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct U32EventsDecoder {}
|
||||||
|
|
||||||
|
pub struct U32Events {}
|
||||||
|
pub struct U32SingleBins {}
|
||||||
|
|
||||||
|
impl EventDecoder for U32EventsDecoder {
|
||||||
|
// TODO U32Event is just for demo.
|
||||||
|
type Output = U32Events;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait EventsNodeProcessor {
|
||||||
|
type Input;
|
||||||
|
type Output;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO the avg needs to be f32, but the min/max have to be the regular type of the disk data.
|
||||||
|
// Try to make that generic...
|
||||||
|
pub struct U32XAggToSingleBin {}
|
||||||
|
|
||||||
|
impl EventsNodeProcessor for U32XAggToSingleBin {
|
||||||
|
type Input = U32Events;
|
||||||
|
type Output = U32SingleBins;
|
||||||
|
}
|
||||||
|
|
||||||
pub trait StreamKind: 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>;
|
||||||
@@ -544,6 +587,8 @@ pub trait StreamKind: Clone + Unpin + Send + Sync + 'static {
|
|||||||
type XBinnedToTBinnedAggregator;
|
type XBinnedToTBinnedAggregator;
|
||||||
type XBinnedToTBinnedStream: Stream<Item = Result<StreamItem<RangeCompletableItem<Self::TBinnedBins>>, Error>>
|
type XBinnedToTBinnedStream: Stream<Item = Result<StreamItem<RangeCompletableItem<Self::TBinnedBins>>, Error>>
|
||||||
+ Send;
|
+ Send;
|
||||||
|
type EventsDecoder: EventDecoder;
|
||||||
|
type EventsNodeProcessor: EventsNodeProcessor;
|
||||||
|
|
||||||
fn new_binned_from_prebinned(
|
fn new_binned_from_prebinned(
|
||||||
&self,
|
&self,
|
||||||
@@ -597,6 +642,8 @@ impl StreamKind for BinnedStreamKindScalar {
|
|||||||
type TBinnedBins = MinMaxAvgScalarBinBatch;
|
type TBinnedBins = MinMaxAvgScalarBinBatch;
|
||||||
type XBinnedToTBinnedAggregator = Agg3;
|
type XBinnedToTBinnedAggregator = Agg3;
|
||||||
type XBinnedToTBinnedStream = BinnedT3Stream;
|
type XBinnedToTBinnedStream = BinnedT3Stream;
|
||||||
|
type EventsDecoder = U32EventsDecoder;
|
||||||
|
type EventsNodeProcessor = U32XAggToSingleBin;
|
||||||
|
|
||||||
fn new_binned_from_prebinned(
|
fn new_binned_from_prebinned(
|
||||||
&self,
|
&self,
|
||||||
|
|||||||
Reference in New Issue
Block a user