UNPKG

nodeway-raft

Version:

It is an implementation of the Raft consensus algorithm in Nodeway.

35 lines (29 loc) 815 B
'use strict'; var sequenceNum = 0; // FIFO scheduling algorithm used var clientStack = []; // client request stack function isOwner(entry) { return clientStack.length && clientStack[0].serverId===entry.serverId; } function push(args, cb) { args.sequenceNum = ++sequenceNum; clientStack.push({ serverId: args.serverId, sequenceNum: args.sequenceNum, callback: cb }); } function cb(entry, err, response) { while(isOwner(entry) && clientStack[0].sequenceNum<=entry.sequenceNum) { let request = clientStack.shift(); if (request.sequenceNum===entry.sequenceNum) { request.callback(err, response); break; } request.callback(new Error('SESSION_EXPIRED')); } } module.exports = { isOwner, push, cb };