Writeables revised
Read-ahead for DataStream Processing
This commit is contained in:
@@ -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 }
|
||||
|
||||
Reference in New Issue
Block a user