UNPKG

@push.rocks/smartdata

Version:

An advanced library for NoSQL data organization and manipulation using TypeScript with support for MongoDB, data validation, collections, and custom data types.

53 lines (52 loc) 2.25 kB
import * as plugins from './smartdata.plugins.js'; import { SmartdataDb } from './smartdata.classes.db.js'; import { SmartDataDbDoc } from './smartdata.classes.doc.js'; import { SmartdataDbWatcher } from './smartdata.classes.watcher.js'; export declare class DistributedClass extends SmartDataDbDoc<DistributedClass, DistributedClass> { id: string; data: { status: 'initializing' | 'bidding' | 'settled' | 'stopped'; biddingShortcode?: string; biddingStartTime?: number; lastUpdated: number; elected: boolean; /** * used to store request */ taskRequests: plugins.taskbuffer.distributedCoordination.IDistributedTaskRequest[]; /** * only used by the leader to convey consultation results */ taskRequestResults: plugins.taskbuffer.distributedCoordination.IDistributedTaskRequestResult[]; }; } /** * This file implements a distributed coordinator according to the @pushrocks/taskbuffer standard. * you should not set up this yourself. Instead, there is a factory on the SmartdataDb class * that will take care of setting this up. */ export declare class SmartdataDistributedCoordinator extends plugins.taskbuffer.distributedCoordination .AbstractDistributedCoordinator { readyPromise: Promise<any>; db: SmartdataDb; private asyncExecutionStack; ownInstance: DistributedClass; distributedWatcher: SmartdataDbWatcher<DistributedClass>; constructor(dbArg: SmartdataDb); start(): Promise<void>; stop(): Promise<void>; id: string; private startHeartbeat; sendHeartbeat(): Promise<void>; private init; getEligibleLeader(): Promise<DistributedClass>; checkAndMaybeLead(): Promise<void>; /** * when it has been determined * that this instance is leading * the leading is implemented here */ leadFunction(): Promise<void>; fireDistributedTaskRequest(taskRequestArg: plugins.taskbuffer.distributedCoordination.IDistributedTaskRequest): Promise<plugins.taskbuffer.distributedCoordination.IDistributedTaskRequestResult>; updateDistributedTaskRequest(infoBasisArg: plugins.taskbuffer.distributedCoordination.IDistributedTaskRequest): Promise<void>; }