From a38c3de5b713f91a3c3879d992aa604b1e36ead1 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Sun, 6 Aug 2023 10:06:49 -0400 Subject: [PATCH] no limit on job history --- src/services/bitcoin-rpc.service.ts | 11 +++++++---- src/services/stratum-v1-jobs.service.ts | 18 +++++------------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/services/bitcoin-rpc.service.ts b/src/services/bitcoin-rpc.service.ts index c38d415..8feb882 100644 --- a/src/services/bitcoin-rpc.service.ts +++ b/src/services/bitcoin-rpc.service.ts @@ -28,10 +28,8 @@ export class BitcoinRpcService { // Maybe use ZeroMQ ? setInterval(async () => { const miningInfo = await this.getMiningInfo(); - if (miningInfo.blocks > this.blockHeight) { - + if (miningInfo != null && miningInfo.blocks > this.blockHeight) { this._newBlock$.next(miningInfo); - this.blockHeight = miningInfo.blocks; } @@ -53,7 +51,12 @@ export class BitcoinRpcService { } public async getMiningInfo(): Promise { - return await this.client.getmininginfo(); + try { + return await this.client.getmininginfo(); + } catch (e) { + console.log('Error getmininginfo'); + return null; + } } diff --git a/src/services/stratum-v1-jobs.service.ts b/src/services/stratum-v1-jobs.service.ts index 9b7e3e9..041d5d9 100644 --- a/src/services/stratum-v1-jobs.service.ts +++ b/src/services/stratum-v1-jobs.service.ts @@ -33,7 +33,7 @@ export class StratumV1JobsService { public jobs: MiningJob[] = []; - public blocks: { id: string, template: IJobTemplate }[] = []; + public blocks: { [id: number]: IJobTemplate } = {}; constructor( private readonly bitcoinRpcService: BitcoinRpcService @@ -123,18 +123,10 @@ export class StratumV1JobsService { }), tap((data) => { if (data.blockData.clearJobs) { - this.blocks = []; + this.blocks = {}; this.jobs = []; } - - if (this.blocks.length >= 30) { - this.blocks.shift(); - } - - this.blocks.push({ - id: data.blockData.id, - template: data - }); + this.blocks[data.blockData.id] = data; }), shareReplay({ refCount: true, bufferSize: 1 }) ) @@ -157,8 +149,8 @@ export class StratumV1JobsService { return bytes; } - public getJobTemplateById(jobTemplateId: string): IJobTemplate { - return this.blocks.find(b => b.id === jobTemplateId)?.template; + public getJobTemplateById(jobTemplateId: string): IJobTemplate | null { + return this.blocks[jobTemplateId]; } public addJob(job: MiningJob) {