From 7e5827eb4fbde75e109d68393145151901c7a8ea Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 27 Feb 2024 15:36:33 +0100 Subject: -move state into shepherd --- packages/taler-wallet-core/src/shepherd.ts | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'packages/taler-wallet-core/src/shepherd.ts') diff --git a/packages/taler-wallet-core/src/shepherd.ts b/packages/taler-wallet-core/src/shepherd.ts index bf2f6b50f..ec0f6a76e 100644 --- a/packages/taler-wallet-core/src/shepherd.ts +++ b/packages/taler-wallet-core/src/shepherd.ts @@ -141,6 +141,8 @@ export class TaskScheduler { private throttler = new TaskThrottler(); + isRunning: boolean = false; + constructor(private ws: InternalWalletState) {} async loadTasksFromDb(): Promise { @@ -153,9 +155,26 @@ export class TaskScheduler { } } + ensureRunning(): void { + if (this.isRunning) { + return; + } + this.run() + .catch((e) => { + logger.error("error running task loop"); + logger.error(`err: ${e}`); + }) + .then(() => { + logger.info("done running task loop"); + }); + } + async run(opts: RetryLoopOpts = {}): Promise { + if (this.isRunning) { + throw Error("task loop already running"); + } logger.info("Running task loop."); - this.ws.isTaskLoopRunning = true; + this.isRunning = true; await this.loadTasksFromDb(); logger.info("loaded!"); logger.info(`sheps: ${this.sheps.size}`); @@ -182,7 +201,7 @@ export class TaskScheduler { } await this.iterCond.wait(); } - this.ws.isTaskLoopRunning = false; + this.isRunning = false; logger.info("Done with task loop."); } -- cgit v1.2.3