UNPKG

mudb

Version:

Real-time database for multiplayer games

42 lines (41 loc) 1.72 kB
import { MuRDA, MuRDATypes } from '../rda/rda'; import { MuServer, MuServerProtocol } from '../server'; import { RDAProtocol } from './schema'; import { MuSessionId } from '../socket/socket'; import { MuScheduler } from '../scheduler/scheduler'; import { MuLogger } from '../logger'; export declare class MuReplicaServer<RDA extends MuRDA<any, any, any, any>> { protocol: MuServerProtocol<RDAProtocol<RDA>>; rda: RDA; store: MuRDATypes<RDA>['store']; scheduler: MuScheduler; private _logger; constructor(spec: { server: MuServer; rda: RDA; savedStore?: MuRDATypes<RDA>['serializedStore']; initialState?: MuRDATypes<RDA>['state']; scheduler?: MuScheduler; logger?: MuLogger; }); private _pendingChangeCallback; private _onChange; private _changeTimeout; private _handleChange; private _notifyChange; configure(spec: { connect?: (sessionId: MuSessionId) => void; disconnect?: (sessionId: MuSessionId) => void; change?: (state: MuRDATypes<RDA>['state']) => void; checkApply?: (action: MuRDATypes<RDA>['action'], sessionId: MuSessionId) => boolean; checkUndo?: (action: MuRDATypes<RDA>['action'], sessionId: MuSessionId) => boolean; }): void; state(out?: MuRDATypes<RDA>['state']): any; dispatch(action: MuRDATypes<RDA>['action'], cb?: (state: MuRDATypes<RDA>['state'] | null) => void): void; action(): RDA['actionMeta'] extends { type: 'store'; } ? ReturnType<RDA['action']> : RDA['action']; reset(state?: MuRDATypes<RDA>['state']): void; save(): MuRDATypes<RDA>['serializedStore']; load(saved: MuRDATypes<RDA>['serializedStore']): void; }