hamok
Version:
Lightweight Distributed Object Storage on RAFT consensus algorithm
49 lines (48 loc) • 2.29 kB
JavaScript
;
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,
};
}