stratum error init

This commit is contained in:
Ben Wilson
2023-07-01 06:51:37 -04:00
parent 0c80b084ee
commit b147eff49a
3 changed files with 45 additions and 1 deletions
+12 -1
View File
@@ -15,10 +15,12 @@ import { EasyUnsubscribe } from '../utils/AutoUnsubscribe';
import { IBlockTemplate } from './bitcoin-rpc/IBlockTemplate'; import { IBlockTemplate } from './bitcoin-rpc/IBlockTemplate';
import { eRequestMethod } from './enums/eRequestMethod'; import { eRequestMethod } from './enums/eRequestMethod';
import { eResponseMethod } from './enums/eResponseMethod'; import { eResponseMethod } from './enums/eResponseMethod';
import { eStratumErrorCode } from './enums/eStratumErrorCode';
import { MiningJob } from './MiningJob'; import { MiningJob } from './MiningJob';
import { AuthorizationMessage } from './stratum-messages/AuthorizationMessage'; import { AuthorizationMessage } from './stratum-messages/AuthorizationMessage';
import { ConfigurationMessage } from './stratum-messages/ConfigurationMessage'; import { ConfigurationMessage } from './stratum-messages/ConfigurationMessage';
import { MiningSubmitMessage } from './stratum-messages/MiningSubmitMessage'; import { MiningSubmitMessage } from './stratum-messages/MiningSubmitMessage';
import { StratumErrorMessage } from './stratum-messages/StratumErrorMessage';
import { SubscriptionMessage } from './stratum-messages/SubscriptionMessage'; import { SubscriptionMessage } from './stratum-messages/SubscriptionMessage';
import { SuggestDifficulty } from './stratum-messages/SuggestDifficultyMessage'; import { SuggestDifficulty } from './stratum-messages/SuggestDifficultyMessage';
import { StratumV1ClientStatistics } from './StratumV1ClientStatistics'; import { StratumV1ClientStatistics } from './StratumV1ClientStatistics';
@@ -107,7 +109,16 @@ export class StratumV1Client extends EasyUnsubscribe {
socket.write(JSON.stringify(this.clientSubscription.response(this.extraNonce)) + '\n'); socket.write(JSON.stringify(this.clientSubscription.response(this.extraNonce)) + '\n');
} else { } else {
console.error(errors);
const err = new StratumErrorMessage(
subscriptionMessage.id,
eStratumErrorCode.OtherUnknown,
'Subscription error',
errors).response();
console.error(err);
socket.write(err);
} }
break; break;
+8
View File
@@ -0,0 +1,8 @@
export enum eStratumErrorCode {
'OtherUnknown' = 20,
'JobNotFound' = 21, // (=stale)
'DuplicateShare' = 22,
'LowDifficultyShare' = 23,
'UnauthorizedWorker' = 24,
'NotSubscribed' = 25
}
@@ -0,0 +1,25 @@
import { ValidationError } from 'class-validator';
import { eStratumErrorCode } from '../enums/eStratumErrorCode';
export class StratumErrorMessage {
constructor(
private id: number = null,
private errorCode: eStratumErrorCode,
private errorMessage: string,
private validationErrors: ValidationError[]
) {
}
public response(): string {
const error = {
id: this.id,
result: null,
error: [this.errorCode, this.errorMessage, this.validationErrors.reduce((pre, cur) => `${pre}, ${cur.value}`, '')]
}
return JSON.stringify(error + '\n');
}
}