@darlean/fs-persistence-suite
Version:
File System Persistence Suite that uses a physical or shared file system to persist data.
31 lines (30 loc) • 1.54 kB
TypeScript
/// <reference types="node" />
import { IActivatable, IDeactivatable, IPersistenceLoadOptions, IPersistenceLoadResult, IPersistenceQueryOptions, IPersistenceQueryResult, IPersistenceStoreBatchOptions, IPersistenceStoreOptions } from '@darlean/base';
import { BufferOf, IDeSer, Mutex } from '@darlean/utils';
import { ModuleThread } from 'threads';
import { WorkerDef } from './worker';
interface IConnection {
worker: ModuleThread<WorkerDef>;
mutex: Mutex<void>;
busy: boolean;
}
export declare class FsPersistenceActor implements IActivatable, IDeactivatable {
private nrReaders;
private deser;
private connections;
private basePath;
private lastConnIdx;
constructor(basePath: string, nrReaders: number, deser: IDeSer);
activate(): Promise<void>;
deactivate(): Promise<void>;
touch(): Promise<void>;
store(options: IPersistenceStoreOptions<Buffer>): Promise<void>;
storeBatchBuffer(options: BufferOf<IPersistenceStoreBatchOptions<Buffer>>): Promise<void>;
load(options: IPersistenceLoadOptions): Promise<IPersistenceLoadResult<Buffer>>;
queryBuffer(options: IPersistenceQueryOptions): Promise<BufferOf<IPersistenceQueryResult<Buffer>>>;
protected storeBatchImpl(options: IPersistenceStoreBatchOptions<Buffer>): Promise<void>;
protected openDatabase(mode: 'writable' | 'readonly'): Promise<IConnection>;
protected closeDatabase(): Promise<void>;
protected getConnection(mode: 'writable' | 'readonly'): IConnection;
}
export {};