Fixed concurrent processing
This commit is contained in:
@@ -15,27 +15,13 @@ uses
|
||||
Myc.Fmx.Chart;
|
||||
|
||||
type
|
||||
TChartSeriesReceiver<T> = class(TMycProcessor<T>)
|
||||
strict private
|
||||
FCurrData: TSeries<T>;
|
||||
FLookback: TMutable<Int64>;
|
||||
private
|
||||
FData: TWriteable<TSeries<T>>;
|
||||
protected
|
||||
function ProcessData(const Value: T): TState; override;
|
||||
public
|
||||
constructor Create(const ALookback: TMutable<Int64>);
|
||||
property Data: TWriteable<TSeries<T>> read FData;
|
||||
end;
|
||||
|
||||
TChartSeriesProcessor<T> = class(TMycChart.TSeries)
|
||||
strict private
|
||||
FDataSeries: TSeries<T>;
|
||||
private
|
||||
FData: TSeries<T>;
|
||||
FDataProvider: TDataProvider<T>;
|
||||
FReceiver: TChartSeriesReceiver<T>;
|
||||
FReceiverTag: TDataProvider<T>.TTag;
|
||||
FReceiver: TMutable<TSeries<T>>;
|
||||
protected
|
||||
function GetCount: Int64; override;
|
||||
function GetTotalCount: Int64; override;
|
||||
@@ -140,22 +126,6 @@ uses
|
||||
System.Math,
|
||||
FMX.Types;
|
||||
|
||||
{ TChartSeriesReceiver<T> }
|
||||
|
||||
constructor TChartSeriesReceiver<T>.Create(const ALookback: TMutable<Int64>);
|
||||
begin
|
||||
inherited Create;
|
||||
FLookback := ALookback;
|
||||
FData := TWriteable<TSeries<T>>.CreateWriteable(FCurrData).Protect;
|
||||
end;
|
||||
|
||||
function TChartSeriesReceiver<T>.ProcessData(const Value: T): TState;
|
||||
begin
|
||||
Result := TState.Null;
|
||||
FCurrData := FCurrData.Add(Value, FLookback.Value);
|
||||
FData.Value := FCurrData;
|
||||
end;
|
||||
|
||||
{ TChartSeriesProcessor<T> }
|
||||
|
||||
constructor TChartSeriesProcessor<T>.Create(const ADataProvider: TDataProvider<T>; const ALookback: TMutable<Int64>);
|
||||
@@ -164,13 +134,11 @@ begin
|
||||
FDataProvider := ADataProvider;
|
||||
FData := FDataSeries;
|
||||
|
||||
FReceiver := TChartSeriesReceiver<T>.Create(ALookback);
|
||||
FReceiverTag := FDataProvider.Link(FReceiver);
|
||||
FReceiver := TConverter.CreateEndpoint<T>(FDataProvider, ALookback.Value);
|
||||
end;
|
||||
|
||||
destructor TChartSeriesProcessor<T>.Destroy;
|
||||
begin
|
||||
FDataProvider.Unlink(FReceiverTag);
|
||||
inherited;
|
||||
end;
|
||||
|
||||
@@ -186,7 +154,7 @@ end;
|
||||
|
||||
procedure TChartSeriesProcessor<T>.Update;
|
||||
begin
|
||||
FData := FReceiver.Data.Value;
|
||||
FData := FReceiver.Value;
|
||||
end;
|
||||
|
||||
{ TChartLineLayer }
|
||||
|
||||
Reference in New Issue
Block a user