diff --git a/app/modules/crawler/lib/sync.ts b/app/modules/crawler/lib/sync.ts index 7e50d0b783abe25c4a9b553e040db9516a32db2b..02dc0cf56e1f6bc115ba64842f3398e37f392e28 100644 --- a/app/modules/crawler/lib/sync.ts +++ b/app/modules/crawler/lib/sync.ts @@ -56,10 +56,10 @@ export class Synchroniser extends stream.Duplex { // Wrapper to also push event stream this.watcher = new EventWatcher(interactive ? new MultimeterWatcher() : new LoggerWatcher(this.logger)) - this.watcher.on('downloadChange', (pct: number) => this.push({ download: pct })) - this.watcher.on('savedChange', (pct: number) => this.push({ saved: pct })) - this.watcher.on('appliedChange', (pct: number) => this.push({ applied: pct })) - this.watcher.on('certChange', (pct: number) => this.push({ sbx_cert: pct })) + this.watcher.onEvent('downloadChange', (pct: number) => this.push({ download: pct })) + this.watcher.onEvent('storageChange', (pct: number) => this.push({ saved: pct })) + this.watcher.onEvent('appliedChange', (pct: number) => this.push({ applied: pct })) + this.watcher.onEvent('sbxChange', (pct: number) => this.push({ sandbox: pct })) if (interactive) { this.logger.mute(); @@ -300,6 +300,7 @@ export class Synchroniser extends stream.Duplex { // Finished blocks this.watcher.downloadPercent(100.0); + this.watcher.storagePercent(100.0); this.watcher.appliedPercent(100.0); if (logInterval) { diff --git a/app/modules/crawler/lib/sync/ChunkGetter.ts b/app/modules/crawler/lib/sync/ChunkGetter.ts index 3d534196c5ca00b01c42772ac88e66841e321fba..ed9c01ccef09a6c5b45a4ef9c7d8ec49079d46e4 100644 --- a/app/modules/crawler/lib/sync/ChunkGetter.ts +++ b/app/modules/crawler/lib/sync/ChunkGetter.ts @@ -199,7 +199,7 @@ export class ChunkGetter { return block })) this.writtenChunks++ - this.watcher.savedPercent(Math.round(this.writtenChunks / this.numberOfChunksToDownload * 100)); + this.watcher.storagePercent(Math.round(this.writtenChunks / this.numberOfChunksToDownload * 100)); } // Returns a promise of file content diff --git a/app/modules/crawler/lib/sync/Watcher.ts b/app/modules/crawler/lib/sync/Watcher.ts index e4ad34c28e016157f47b6e8b92a772223baddf21..ae11418a78a6fa7455f7747e73a4ea33daba3e18 100644 --- a/app/modules/crawler/lib/sync/Watcher.ts +++ b/app/modules/crawler/lib/sync/Watcher.ts @@ -5,12 +5,14 @@ const multimeter = require('multimeter') export interface Watcher { writeStatus(str: string): void downloadPercent(pct?: number): number - savedPercent(pct?: number): number + storagePercent(pct?: number): number appliedPercent(pct?: number): number sbxPercent(pct?: number): number end(): void } +export type EventName = 'downloadChange'|'storageChange'|'appliedChange'|'sbxChange' + export class EventWatcher extends events.EventEmitter implements Watcher { constructor(private innerWatcher:Watcher) { @@ -25,8 +27,8 @@ export class EventWatcher extends events.EventEmitter implements Watcher { return this.change('downloadChange', (pct) => this.innerWatcher.downloadPercent(pct), pct) } - savedPercent(pct?: number): number { - return this.change('savedChange', (pct) => this.innerWatcher.savedPercent(pct), pct) + storagePercent(pct?: number): number { + return this.change('storageChange', (pct) => this.innerWatcher.storagePercent(pct), pct) } appliedPercent(pct?: number): number { @@ -37,7 +39,7 @@ export class EventWatcher extends events.EventEmitter implements Watcher { return this.change('sbxChange', (pct) => this.innerWatcher.sbxPercent(pct), pct) } - change(changeName: string, method: (pct?: number) => number, pct?: number) { + change(changeName: EventName, method: (pct?: number) => number, pct?: number) { if (pct !== undefined && method() < pct) { this.emit(changeName, pct || 0) } @@ -47,6 +49,10 @@ export class EventWatcher extends events.EventEmitter implements Watcher { end(): void { this.innerWatcher.end() } + + onEvent(e: EventName, cb: (pct: number) => void) { + this.on(e, cb) + } } export class MultimeterWatcher implements Watcher { @@ -102,7 +108,7 @@ export class MultimeterWatcher implements Watcher { return this.downloadBar.percent(pct) } - savedPercent(pct:number) { + storagePercent(pct:number) { return this.savedBar.percent(pct) } @@ -159,7 +165,7 @@ export class LoggerWatcher implements Watcher { return this.change('downPct', pct) } - savedPercent(pct:number) { + storagePercent(pct:number) { return this.change('savedPct', pct) }