UNPKG

@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
/// <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 {};