From 30ec493a6dae644b0907f6ee6e86696c06aa11b4 Mon Sep 17 00:00:00 2001 From: Sam Wilkins Date: Wed, 18 Sep 2019 04:31:53 -0400 Subject: additional timeunit --- src/client/northstar/utils/Extensions.ts | 15 +++++++++++++-- src/client/util/UtilExtensions.ts | 21 +++++++++++++++++---- 2 files changed, 30 insertions(+), 6 deletions(-) (limited to 'src/client') diff --git a/src/client/northstar/utils/Extensions.ts b/src/client/northstar/utils/Extensions.ts index 3722bfd52..ad3e06806 100644 --- a/src/client/northstar/utils/Extensions.ts +++ b/src/client/northstar/utils/Extensions.ts @@ -42,6 +42,17 @@ interface PredicateBatcherAsync { type Batcher = FixedBatcher | PredicateBatcher; type BatcherAsync = Batcher | PredicateBatcherAsync; +enum TimeUnit { + Milliseconds, + Seconds, + Minutes +} + +interface Interval { + magnitude: number; + unit: TimeUnit; +} + interface Array { fixedBatch(batcher: FixedBatcher): T[][]; predicateBatch(batcher: PredicateBatcher): T[][]; @@ -55,8 +66,8 @@ interface Array { batchedForEachAsync(batcher: Batcher, handler: BatchHandler): Promise; batchedMapAsync(batcher: Batcher, handler: BatchConverter): Promise; - batchedForEachInterval(batcher: Batcher, handler: BatchHandler, interval: number): Promise; - batchedMapInterval(batcher: Batcher, handler: BatchConverter, interval: number): Promise; + batchedForEachInterval(batcher: Batcher, handler: BatchHandler, interval: Interval): Promise; + batchedMapInterval(batcher: Batcher, handler: BatchConverter, interval: Interval): Promise; lastElement(): T; } diff --git a/src/client/util/UtilExtensions.ts b/src/client/util/UtilExtensions.ts index 8bd8fd581..da47fc1bc 100644 --- a/src/client/util/UtilExtensions.ts +++ b/src/client/util/UtilExtensions.ts @@ -174,7 +174,20 @@ module.exports.ConvertInBatchesAsync = async function (batcher: Batcher return collector; }; -module.exports.ExecuteInBatchesAtInterval = async function (batcher: BatcherAsync, handler: BatchHandler, interval: number): Promise { +const convert = (interval: Interval) => { + const { magnitude, unit } = interval; + switch (unit) { + default: + case TimeUnit.Milliseconds: + return magnitude; + case TimeUnit.Seconds: + return magnitude * 1000; + case TimeUnit.Minutes: + return magnitude * 1000 * 60; + } +}; + +module.exports.ExecuteInBatchesAtInterval = async function (batcher: BatcherAsync, handler: BatchHandler, interval: Interval): Promise { if (!this.length) { return; } @@ -194,7 +207,7 @@ module.exports.ExecuteInBatchesAtInterval = async function (batcher: Batch }; await handler(batch, context); resolve(); - }, interval * 1000); + }, convert(interval)); }); if (++completed === quota) { break; @@ -204,7 +217,7 @@ module.exports.ExecuteInBatchesAtInterval = async function (batcher: Batch }); }; -module.exports.ConvertInBatchesAtInterval = async function (batcher: BatcherAsync, handler: BatchConverter, interval: number): Promise { +module.exports.ConvertInBatchesAtInterval = async function (batcher: BatcherAsync, handler: BatchConverter, interval: Interval): Promise { if (!this.length) { return []; } @@ -225,7 +238,7 @@ module.exports.ConvertInBatchesAtInterval = async function (batcher: Ba }; collector.push(...(await handler(batch, context))); resolve(); - }, interval * 1000); + }, convert(interval)); }); if (++completed === quota) { resolve(collector); -- cgit v1.2.3-70-g09d2