jenkins
2023-07-12 14:58:15 +00:00
parent 0ae09d18be
commit 2a7983a730
56 changed files with 990 additions and 770 deletions

View File

@@ -1,3 +1,3 @@
# Charting Library Datafeeds
# Advanced Charts Datafeeds
This folder contains implementation of Charting Library Datafeeds.
This folder contains implementation of Advanced Charts Datafeeds.

View File

@@ -0,0 +1 @@
export {};

View File

@@ -1,21 +1,14 @@
import {
LibrarySymbolInfo,
SubscribeBarsCallback,
} from '../../../charting_library/datafeed-api';
import {
GetBarsResult,
HistoryProvider,
} from './history-provider';
import { LibrarySymbolInfo, ResolutionString, SubscribeBarsCallback } from '../../../charting_library/datafeed-api';
import {
getErrorMessage,
logMessage,
} from './helpers';
import { IDataPulseProvider, IHistoryProvider, GetBarsResult } from './provider-interfaces';
interface DataSubscriber {
symbolInfo: LibrarySymbolInfo;
resolution: string;
resolution: ResolutionString;
lastBarTime: number | null;
listener: SubscribeBarsCallback;
}
@@ -24,17 +17,17 @@ interface DataSubscribers {
[guid: string]: DataSubscriber;
}
export class DataPulseProvider {
export class DataPulseProvider implements IDataPulseProvider {
private readonly _subscribers: DataSubscribers = {};
private _requestsPending: number = 0;
private readonly _historyProvider: HistoryProvider;
private readonly _historyProvider: IHistoryProvider;
public constructor(historyProvider: HistoryProvider, updateFrequency: number) {
public constructor(historyProvider: IHistoryProvider, updateFrequency: number) {
this._historyProvider = historyProvider;
setInterval(this._updateData.bind(this), updateFrequency);
}
public subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: string, newDataCallback: SubscribeBarsCallback, listenerGuid: string): void {
public subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, newDataCallback: SubscribeBarsCallback, listenerGuid: string): void {
if (this._subscribers.hasOwnProperty(listenerGuid)) {
logMessage(`DataPulseProvider: already has subscriber with id=${listenerGuid}`);
return;

View File

@@ -0,0 +1,19 @@
import { Bar, HistoryMetadata, LibrarySymbolInfo, PeriodParams, ResolutionString, SubscribeBarsCallback, SymbolResolveExtension } from '../../../charting_library/datafeed-api';
export interface IDataPulseProvider {
subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, newDataCallback: SubscribeBarsCallback, listenerGuid: string): void;
unsubscribeBars(listenerGuid: string): void;
}
export interface GetBarsResult {
bars: Bar[];
meta: HistoryMetadata;
}
export interface IHistoryProvider {
getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, periodParams: PeriodParams): Promise<GetBarsResult>;
}
export interface IResolveProvider {
resolveSymbol(symbolName: string, extension?: SymbolResolveExtension | undefined): Promise<LibrarySymbolInfo>;
}