mirror of
https://github.com/benjamin-wilson/public-pool.git
synced 2026-09-29 09:05:06 -07:00
better unsubscribe, startup stagger
This commit is contained in:
@@ -6,7 +6,7 @@ import { validate, ValidatorOptions } from 'class-validator';
|
||||
import * as crypto from 'crypto';
|
||||
import { Socket } from 'net';
|
||||
import PromiseSocket from 'promise-socket';
|
||||
import { firstValueFrom, takeUntil } from 'rxjs';
|
||||
import { firstValueFrom, Subscription } from 'rxjs';
|
||||
|
||||
import { AddressSettingsService } from '../ORM/address-settings/address-settings.service';
|
||||
import { BlocksService } from '../ORM/blocks/blocks.service';
|
||||
@@ -16,7 +16,6 @@ import { ClientService } from '../ORM/client/client.service';
|
||||
import { BitcoinRpcService } from '../services/bitcoin-rpc.service';
|
||||
import { NotificationService } from '../services/notification.service';
|
||||
import { IJobTemplate, StratumV1JobsService } from '../services/stratum-v1-jobs.service';
|
||||
import { EasyUnsubscribe } from '../utils/EasyUnsubscribe';
|
||||
import { eRequestMethod } from './enums/eRequestMethod';
|
||||
import { eResponseMethod } from './enums/eResponseMethod';
|
||||
import { eStratumErrorCode } from './enums/eStratumErrorCode';
|
||||
@@ -30,12 +29,13 @@ import { SuggestDifficulty } from './stratum-messages/SuggestDifficultyMessage';
|
||||
import { StratumV1ClientStatistics } from './StratumV1ClientStatistics';
|
||||
|
||||
|
||||
export class StratumV1Client extends EasyUnsubscribe {
|
||||
export class StratumV1Client {
|
||||
|
||||
private clientSubscription: SubscriptionMessage;
|
||||
private clientConfiguration: ConfigurationMessage;
|
||||
private clientAuthorization: AuthorizationMessage;
|
||||
private clientSuggestedDifficulty: SuggestDifficulty;
|
||||
private stratumSubscription: Subscription;
|
||||
|
||||
private statistics: StratumV1ClientStatistics;
|
||||
private stratumInitialized = false;
|
||||
@@ -47,6 +47,7 @@ export class StratumV1Client extends EasyUnsubscribe {
|
||||
|
||||
public sessionStart: Date;
|
||||
|
||||
|
||||
constructor(
|
||||
public readonly promiseSocket: PromiseSocket<Socket>,
|
||||
private readonly stratumV1JobsService: StratumV1JobsService,
|
||||
@@ -58,7 +59,6 @@ export class StratumV1Client extends EasyUnsubscribe {
|
||||
private readonly configService: ConfigService,
|
||||
private readonly addressSettingsService: AddressSettingsService
|
||||
) {
|
||||
super();
|
||||
|
||||
this.promiseSocket.socket.on('data', (data: Buffer) => {
|
||||
data.toString()
|
||||
@@ -80,6 +80,10 @@ export class StratumV1Client extends EasyUnsubscribe {
|
||||
console.log(`New client ID: : ${this.extraNonceAndSessionId}`);
|
||||
}
|
||||
|
||||
public destroy() {
|
||||
this.stratumSubscription.unsubscribe();
|
||||
}
|
||||
|
||||
private getRandomHexString() {
|
||||
const randomBytes = crypto.randomBytes(4); // 4 bytes = 32 bits
|
||||
const randomNumber = randomBytes.readUInt32BE(0); // Convert bytes to a 32-bit unsigned integer
|
||||
@@ -289,8 +293,7 @@ export class StratumV1Client extends EasyUnsubscribe {
|
||||
bestDifficulty: 0
|
||||
});
|
||||
|
||||
this.stratumV1JobsService.newMiningJob$.pipe(
|
||||
takeUntil(this.easyUnsubscribe)
|
||||
this.stratumSubscription = this.stratumV1JobsService.newMiningJob$.pipe(
|
||||
).subscribe(async (jobTemplate) => {
|
||||
try {
|
||||
await this.sendNewMiningJob(jobTemplate);
|
||||
|
||||
Reference in New Issue
Block a user