Skip to main content
Glama
AsyncScheduler.ts•1.32 kB
import { Scheduler } from '../Scheduler'; import { Action } from './Action'; import { AsyncAction } from './AsyncAction'; import { TimerHandle } from './timerHandle'; export class AsyncScheduler extends Scheduler { public actions: Array<AsyncAction<any>> = []; /** * A flag to indicate whether the Scheduler is currently executing a batch of * queued actions. * @internal */ public _active: boolean = false; /** * An internal ID used to track the latest asynchronous task such as those * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and * others. * @internal */ public _scheduled: TimerHandle | undefined; constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) { super(SchedulerAction, now); } public flush(action: AsyncAction<any>): void { const { actions } = this; if (this._active) { actions.push(action); return; } let error: any; this._active = true; do { if ((error = action.execute(action.state, action.delay))) { break; } } while ((action = actions.shift()!)); // exhaust the scheduler queue this._active = false; if (error) { while ((action = actions.shift()!)) { action.unsubscribe(); } throw error; } } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/samihalawa/brevo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server