From 3f6f0a878b15aa5c569a8b522d1b24915749498e Mon Sep 17 00:00:00 2001 From: Sam Wilkins Date: Tue, 17 Sep 2019 21:57:43 -0400 Subject: batching developments --- src/client/northstar/utils/Extensions.ts | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'src/client/northstar') diff --git a/src/client/northstar/utils/Extensions.ts b/src/client/northstar/utils/Extensions.ts index 04af36731..65af7ea87 100644 --- a/src/client/northstar/utils/Extensions.ts +++ b/src/client/northstar/utils/Extensions.ts @@ -20,21 +20,27 @@ String.prototype.Truncate = function (length: number, replacement: string): Stri return target; }; -type BatchConverterSync = (batch: I[], isFullBatch: boolean) => O[]; -type BatchHandlerSync = (batch: I[], isFullBatch: boolean) => void; -type BatchConverterAsync = (batch: I[], isFullBatch: boolean) => Promise; -type BatchHandlerAsync = (batch: I[], isFullBatch: boolean) => Promise; +interface BatchContext { + completedBatches: number; + remainingBatches: number; + isFullBatch: boolean; +} +type BatchConverterSync = (batch: I[], context: BatchContext) => O[]; +type BatchHandlerSync = (batch: I[], context: BatchContext) => void; +type BatchConverterAsync = (batch: I[], context: BatchContext) => Promise; +type BatchHandlerAsync = (batch: I[], context: BatchContext) => Promise; type BatchConverter = BatchConverterSync | BatchConverterAsync; type BatchHandler = BatchHandlerSync | BatchHandlerAsync; +type Batcher = number | ((element: I, accumulator: A) => boolean | Promise); interface Array { - batch(batchSize: number): T[][]; - batchedForEach(batchSize: number, handler: BatchHandlerSync): void; - batchedMap(batchSize: number, handler: BatchConverterSync): O[]; - batchedForEachAsync(batchSize: number, handler: BatchHandler): Promise; - batchedMapAsync(batchSize: number, handler: BatchConverter): Promise; - batchedForEachInterval(batchSize: number, handler: BatchHandler, interval: number): Promise; - batchedMapInterval(batchSize: number, handler: BatchConverter, interval: number): Promise; + batch(batchSize: undefined): T[][]; + batchedForEach(batcher: Batcher, handler: BatchHandlerSync): void; + batchedMap(batcher: Batcher, handler: BatchConverterSync): O[]; + 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; lastElement(): T; } -- cgit v1.2.3-70-g09d2