UNPKG

hamok

Version:

Lightweight Distributed Object Storage on RAFT consensus algorithm

73 lines 3.11 kB
import { EventEmitter } from 'events'; import { HamokMessage } from '../messages/HamokMessage'; import { LogEntry } from './LogEntry'; import { RaftLogs } from './RaftLogs'; export type MemoryStoredRaftLogsEventMap = { committed: [commitIndex: number, message: HamokMessage]; expired: [commitIndex: number, message: HamokMessage]; removed: [commitIndex: number, message: HamokMessage]; highWaterMark: [memorySize: number]; }; export type MemoryStoredRaftLogsConfig = { expirationTimeInMs: number; memorySizeHighWaterMark: number; }; export declare interface MemoryStoredRaftLogs { on<U extends keyof MemoryStoredRaftLogsEventMap>(event: U, listener: (...args: MemoryStoredRaftLogsEventMap[U]) => void): this; once<U extends keyof MemoryStoredRaftLogsEventMap>(event: U, listener: (...args: MemoryStoredRaftLogsEventMap[U]) => void): this; off<U extends keyof MemoryStoredRaftLogsEventMap>(event: U, listener: (...args: MemoryStoredRaftLogsEventMap[U]) => void): this; emit<U extends keyof MemoryStoredRaftLogsEventMap>(event: U, ...args: MemoryStoredRaftLogsEventMap[U]): boolean; } export declare class MemoryStoredRaftLogs extends EventEmitter implements RaftLogs { readonly config: MemoryStoredRaftLogsConfig; /** * index of highest log entry applied to state * machine (initialized to 0, increases * monotonically) */ private _firstIndex; /** * The next log index */ private _nextIndex; /** * index of highest log entry known to be * committed (initialized to 0, increases * monotonically) */ private _commitIndex; private _mssingEntriesLogged; private _memoryEstimateBytesLength; private readonly _entries; constructor(config: MemoryStoredRaftLogsConfig, entries?: Map<number, LogEntry>); /** * index of highest log entry known to be * committed (initialized to 0, increases * monotonically) */ get commitIndex(): number; /** * The next index for the logs to be used if an entry is added or submitted * @return */ get nextIndex(): number; get firstIndex(): number; get size(): number; get bytesInMemory(): number; commitUntil(newCommitIndex: number): Readonly<LogEntry[]>; submit(term: number, entry: HamokMessage): number; compareAndOverride(index: number, expectedTerm: number, entry: HamokMessage): LogEntry | undefined; compareAndAdd(expectedNextIndex: number, term: number, entry: HamokMessage): boolean; get(index: number): LogEntry | undefined; collectEntries(startIndex: number, endIndex?: number): LogEntry[]; /** * Direct iterator for the logs. Starts with commitIndex + 1, and iterates the logs until nextIndex. * if a log is comitted after this iterator has been created but before the next is called on this iterator * @return */ [Symbol.iterator](): IterableIterator<LogEntry>; reset(newCommitIndex: number): void; removeUntil(newFirstIndex: number): void; private _expire; } //# sourceMappingURL=MemoryStoredRaftLogs.d.ts.map