UNPKG

mudb

Version:

Real-time database for multiplayer games

120 lines (91 loc) 2.37 kB
# scheduler for unifying the usage of schedulers to make it possible to inject mocks ## example ```ts import { MuServer, MuClient } from 'mudb' import { createLocalSocketServer, createLocalSocket } from 'mudb/socket/local' import { MuMockScheduler } from 'mudb/scheduler/mock' const mockScheduler = new MuMockScheduler() const socketServer = createLocalSocketServer({ scheduler: mockScheduler, }) const server = new MuServer(socketServer) const socket = createLocalSocket({ sessionId: Math.random().toString(16).substring(2), server: socketServer, scheduler: mockScheduler, }) const client = new MuClient(socket) // trigger one scheduled event at a time in order while (mockScheduler.poll()) { } ``` ## API * [`MuScheduler`](#muscheduler) * [`MuSystemScheduler`](#musystemscheduler) * [`MuMockScheduler`](#mumockscheduler) ### `MuScheduler` the interface #### methods ```ts setTimeout( callback:(...args:any[]) => void, delay:number, ...args:any[], ) : any ``` ```ts clearTimeout(handle:any) : void; ``` ```ts setInterval( callback:(...args:any[]) => void, delay:number, ...args:any[], ) : any; ``` ```ts clearInterval(handle:any) : void; ``` ```ts requestAnimationFrame(callback:(time:number) => void) : number ``` ```ts cancelAnimationFrame(handle:number) : void ``` ```ts requestIdleCallback( callback:(deadline:{ didTimeout:boolean; timeRemaining:() => number; }) => void, options?:{ timeout:number }, ) : any ``` ```ts cancelIdleCallback(handle:any) : void ``` ```ts nextTick(callback:(...args:any[]) => void) : void ``` for `process.nextTick()` ```ts now() : number ``` for `performance.now()` --- ### `MuSystemScheduler` a singleton of type [`MuScheduler`](#muscheduler) This is the default value of all the `scheduler` parameters. It provides indirections to all the native schedulers, uses polyfills as necessary. --- ### `MuMockScheduler` class `MuMockScheduler` implements [`MuScheduler`](#muscheduler) ```ts import { MuMockScheduler } from 'mudb/scheduler/mock' new MuMockScheduler() ``` It provides mocks to all the schedulers, which share the same event queue that can be polled, to give you some control over "the passage of time". #### methods ```ts poll() : boolean ``` returns false if the event queue is empty, otherwise pops one event and returns true