diff --git a/src/nodes/NodeManager.ts b/src/nodes/NodeManager.ts index 8aa576e3f..ea800fcfb 100644 --- a/src/nodes/NodeManager.ts +++ b/src/nodes/NodeManager.ts @@ -9,6 +9,7 @@ import type { NodeId, NodeAddress, NodeBucket } from '../nodes/types'; import type { ClaimEncoded } from '../claims/types'; import type { Timer } from '../types'; import Logger from '@matrixai/logger'; +import { StartStop } from '@matrixai/async-init/dist/StartStop'; import * as nodesErrors from './errors'; import * as nodesUtils from './utils'; import * as networkUtils from '../network/utils'; @@ -18,6 +19,8 @@ import * as claimsErrors from '../claims/errors'; import * as sigchainUtils from '../sigchain/utils'; import * as claimsUtils from '../claims/utils'; +interface NodeManager extends StartStop {} +@StartStop() class NodeManager { protected db: DB; protected logger: Logger; @@ -49,6 +52,18 @@ class NodeManager { this.nodeGraph = nodeGraph; } + public async start() { + this.logger.info(`Starting ${this.constructor.name}`); + this.setNodeQueueRunner = this.startSetNodeQueue(); + this.logger.info(`Started ${this.constructor.name}`); + } + + public async stop() { + this.logger.info(`Stopping ${this.constructor.name}`); + await this.stopSetNodeQueue(); + this.logger.info(`Stopped ${this.constructor.name}`); + } + /** * Determines whether a node in the Polykey network is online. * @return true if online, false if offline diff --git a/src/nodes/errors.ts b/src/nodes/errors.ts index 83a5597d4..863e19a37 100644 --- a/src/nodes/errors.ts +++ b/src/nodes/errors.ts @@ -2,6 +2,11 @@ import { ErrorPolykey, sysexits } from '../errors'; class ErrorNodes extends ErrorPolykey {} +class ErrorNodeManagerNotRunning extends ErrorNodes { + static description = 'NodeManager is not running'; + exitCode = sysexits.USAGE; +} + class ErrorNodeGraphRunning extends ErrorNodes { static description = 'NodeGraph is running'; exitCode = sysexits.USAGE; @@ -74,6 +79,7 @@ class ErrorNodeConnectionHostWildcard extends ErrorNodes { export { ErrorNodes, + ErrorNodeManagerNotRunning, ErrorNodeGraphRunning, ErrorNodeGraphNotRunning, ErrorNodeGraphDestroyed,