Writeables revised

Read-ahead for DataStream Processing
This commit is contained in:
Michael Schimmel
2025-06-25 10:07:00 +02:00
parent f791667264
commit e1159e883b
9 changed files with 272 additions and 227 deletions
+10 -4
View File
@@ -12,12 +12,13 @@ type
TDataStreamProvider<T> = class(TInterfacedObject, TMutable<TDataSeries<T>>.IMutable)
private
FStream: IDataStream<T>;
FDataArray: IDataArray<T>;
FDataSeries: TDataSeries<T>;
FNewDataAvailable: TFlag;
FChunk: TArray<TDataPoint<T>>;
FLookback: Int64;
function GetChanged: TSignal;
function GetValue: TDataSeries<T>;
function GetWriter: TMutable<TDataSeries<T>>.IWriter;
public
constructor Create(ALookback, AMaxChunkSize: Int64; const AStream: IDataStream<T>);
destructor Destroy; override;
@@ -38,7 +39,7 @@ begin
SetLength(FChunk, AMaxChunkSize);
FStream := AStream;
FNewDataAvailable := TFlag.CreateObserver(FStream.HasData);
FDataArray := TDataSeries<T>.CreateArray(ALookback);
FDataSeries := TDataSeries<T>.CreateWriteable(ALookback);
end;
destructor TDataStreamProvider<T>.Destroy;
@@ -57,9 +58,14 @@ begin
begin
var cnt := FStream.GetChunk(FChunk);
if cnt > 0 then
FDataArray.Add(FChunk, cnt);
FDataSeries.Add(FChunk, cnt);
end;
Result := FDataArray;
Result := FDataSeries;
end;
function TDataStreamProvider<T>.GetWriter: TMutable<TDataSeries<T>>.IWriter;
begin
Result := nil;
end;
{ TDataStreamProvider }