import ApiConfig, { IApiConfig } from "./ApiConfig"; import BlackListRule, { IBlackListRule } from "./BlackListRule"; interface IAgentConfig { bufferSyncFreqInSec: number; captureApiSample: boolean; configFetchFreqInSec: number; registeredApiConfigs: IApiConfig[] | undefined; timestamp: Date; discoveryBufferSize: number; discoveryBufferSizePerApi: number; blackListRules: IBlackListRule[] | undefined; } class AgentConfig { private bufferSyncFreqInSec: number; private captureApiSample: boolean; private configFetchFreqInSec: number; private registeredApiConfigs: ApiConfig[] = []; private timestamp: Date; private discoveryBufferSize: number; private discoveryBufferSizePerApi: number; private blackListRules: BlackListRule[] = []; static readonly noOpAgentConfig: AgentConfig = new AgentConfig({ bufferSyncFreqInSec: 120, captureApiSample: false, configFetchFreqInSec: 120, registeredApiConfigs: [], timestamp: new Date(0), discoveryBufferSize: 0, discoveryBufferSizePerApi: 0, blackListRules: [], }); constructor(agentConfig: IAgentConfig) { this.bufferSyncFreqInSec = agentConfig.bufferSyncFreqInSec; this.captureApiSample = agentConfig.captureApiSample; this.configFetchFreqInSec = agentConfig.configFetchFreqInSec; this.timestamp = new Date(agentConfig.timestamp); this.discoveryBufferSize = agentConfig.discoveryBufferSize; this.discoveryBufferSizePerApi = agentConfig.discoveryBufferSizePerApi; if (agentConfig.blackListRules) { this.blackListRules = agentConfig.blackListRules.map( (blackListRule) => new BlackListRule(blackListRule) ); } if (agentConfig.registeredApiConfigs) { this.registeredApiConfigs = agentConfig.registeredApiConfigs.map( (apiConfig) => new ApiConfig(apiConfig) ); } } public getBufferSyncFreqInSec(): number { return this.bufferSyncFreqInSec; } public setBufferSyncFreqInSec(bufferSyncFreqInSec: number): void { this.bufferSyncFreqInSec = bufferSyncFreqInSec; } public getBlackListRules(): BlackListRule[] { return this.blackListRules; } public setBlackListRules(blackListRules: BlackListRule[]): void { this.blackListRules = blackListRules; } public getCaptureApiSample(): boolean { return this.captureApiSample; } public setCaptureApiSample(captureApiSample: boolean): void { this.captureApiSample = captureApiSample; } public getConfigFetchFreqInSec(): number { return this.configFetchFreqInSec; } public setConfigFetchFreqInSec(configFetchFreqInSec: number): void { this.configFetchFreqInSec = configFetchFreqInSec; } public getRegisteredApiConfigs(): ApiConfig[] { return this.registeredApiConfigs; } public setRegisteredApiConfigs(registeredApiConfigs: ApiConfig[]): void { this.registeredApiConfigs = registeredApiConfigs; } public getTimestamp(): Date { return this.timestamp; } public setTimestamp(timestamp: Date): void { this.timestamp = timestamp; } public getDiscoveryBufferSize(): number { return this.discoveryBufferSize; } public setDiscoveryBufferSize(discoveryBufferSize: number): void { this.discoveryBufferSize = discoveryBufferSize; } public getDiscoveryBufferSizePerApi(): number { return this.discoveryBufferSizePerApi; } public setDiscoveryBufferSizePerApi(discoveryBufferSizePerApi: number): void { this.discoveryBufferSizePerApi = discoveryBufferSizePerApi; } } export default AgentConfig;