UNPKG

hamok

Version:

Lightweight Distributed Object Storage on RAFT consensus algorithm

62 lines 2.5 kB
import { EventEmitter } from 'events'; import { RaftMessageEmitter } from '../messages/RaftMessageEmitter'; import { SyncedProperties } from './SyncedProperties'; import { HamokMessage } from '../messages/HamokMessage'; import { RaftState } from './RaftState'; import type { HamokEventMap } from '../Hamok'; import { RaftLogs } from './RaftLogs'; /** * Configuration settings for the Raft engine. */ export type RaftEngineConfig = { /** * The unique identifier for the peer in the Raft cluster. */ peerId: string; /** * The timeout duration in milliseconds for elections. * If an election has not been completed within this duration, a candidate change state to follower. */ electionTimeoutInMs: number; /** * The maximum idle time in milliseconds for a follower. * If the follower is idle for longer than this duration, it considers the leader to be unavailable and starts an election. */ followerMaxIdleInMs: number; /** * The interval in milliseconds at which heartbeats are sent by the leader to maintain authority over followers, * and sending the logs. */ heartbeatInMs: number; /** * If true, this peer will only be a follower and will never become a candidate or leader. */ onlyFollower: boolean; }; interface HamokController extends EventEmitter { on<U extends keyof HamokEventMap>(event: U, listener: (...args: HamokEventMap[U]) => void): this; once<U extends keyof HamokEventMap>(event: U, listener: (...args: HamokEventMap[U]) => void): this; off<U extends keyof HamokEventMap>(event: U, listener: (...args: HamokEventMap[U]) => void): this; emit<U extends keyof HamokEventMap>(event: U, ...args: HamokEventMap[U]): boolean; } export declare class RaftEngine { readonly config: RaftEngineConfig; readonly logs: RaftLogs; readonly events: HamokController; private _state; readonly props: SyncedProperties; private _leaderId?; readonly remotePeers: Set<string>; readonly transport: RaftMessageEmitter; private _failedElections; constructor(config: RaftEngineConfig, logs: RaftLogs, events: HamokController); get localPeerId(): string; get leaderId(): string | undefined; get failedElections(): number; set leaderId(newLeaderId: string | undefined); get state(): RaftState; set state(newState: RaftState); submit(message: HamokMessage): boolean; } export {}; //# sourceMappingURL=RaftEngine.d.ts.map