UNPKG

hamok

Version:

Lightweight Distributed Object Storage on RAFT consensus algorithm

49 lines (48 loc) 2.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createRaftEmptyState = createRaftEmptyState; const logger_1 = require("../common/logger"); const logger = (0, logger_1.createLogger)('RaftEmptyState'); function createRaftEmptyState(context) { logger.trace('Creating RaftEmptyState'); const { raftEngine } = context; const messageEmitter = raftEngine.transport; let closed = false; const appendEntriesRequestListener = (request) => { logger.trace('%s received an append entries request from %s, but it is in an empty state. request: %o', raftEngine.localPeerId, request.leaderId, request); }; const appendEntriesResponseListener = (response) => { logger.warn('%s received an append entries response from %s, but it is in an empty state. response: %o', raftEngine.localPeerId, response.sourcePeerId, response); }; const voteRequestListener = (request) => { logger.warn('%s received a vote request from %s, but it is in an empty state. request: %o', raftEngine.localPeerId, request.candidateId, request); }; const voteResponseListener = (response) => { logger.warn('%s received a vote response from %s, but it is in an empty state. response: %o', raftEngine.localPeerId, response.sourcePeerId, response); }; const close = () => { if (closed) return; closed = true; messageEmitter.off('RaftVoteRequest', voteRequestListener); messageEmitter.off('RaftVoteResponse', voteResponseListener); messageEmitter.off('RaftAppendEntriesRequestChunk', appendEntriesRequestListener); messageEmitter.off('RaftAppendEntriesResponse', appendEntriesResponseListener); logger.debug('%s closed', raftEngine.localPeerId); }; messageEmitter.on('RaftVoteRequest', voteRequestListener); messageEmitter.on('RaftVoteResponse', voteResponseListener); messageEmitter.on('RaftAppendEntriesRequestChunk', appendEntriesRequestListener); messageEmitter.on('RaftAppendEntriesResponse', appendEntriesResponseListener); const run = () => { }; const init = () => { raftEngine.leaderId = undefined; }; return { stateName: 'empty', run, close, init, }; }