@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.23 kB
TypeScript
import * as plugins from './plugins.js';
import { SmartdataDb } from './classes.db.js';
import { SmartDataDbDoc } from './classes.doc.js';
import { SmartdataDbWatcher } from './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 | undefined>;
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>;
}