Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 57x 57x 57x 57x 57x 55x 55x 55x 55x 55x 318x 318x 318x 55x 55x 55x 55x | import { EventEmitter } from 'events'; import { MessageRateWriter } from './message-rate-writer'; import { TimeSeries } from './time-series'; import { TMessageRateFields } from '../../../../types'; import { async, Ticker } from 'redis-smq-common'; import { ICallback } from 'redis-smq-common/dist/types'; import { events } from 'redis-smq'; export abstract class MessageRate< MessageRateFields extends TMessageRateFields = TMessageRateFields, > extends EventEmitter { protected readerTicker: Ticker; protected messageRateWriter: MessageRateWriter<MessageRateFields>; constructor(messageRateWriter: MessageRateWriter<MessageRateFields>) { super(); this.readerTicker = new Ticker(this.onTick); this.readerTicker.runTimer(); this.messageRateWriter = messageRateWriter; } protected onTick = (): void => { const ts = TimeSeries.getCurrentTimestamp(); const rates = this.getRateFields(); this.messageRateWriter.onRateTick(ts, rates); }; quit(cb: ICallback<void>): void { async.waterfall( [ (cb: ICallback<void>) => { this.readerTicker.once(events.DOWN, cb); this.readerTicker.quit(); }, (cb: ICallback<void>) => this.messageRateWriter.quit(cb), ], cb, ); } abstract getRateFields(): MessageRateFields; } |