///
import * as http from "http";
import * as ReadWriteLock from "rwlock";
import { Proxy, ResourceNode, ServiceEngine } from "@chip-in/resource-node";
import { JournalDb } from "../db/JournalDb";
import { SubsetDb } from "../db/SubsetDb";
import { SystemDb } from "../db/SystemDb";
import { TransactionObject } from "../db/Transaction";
import { CountResult, CsnMode, QueryResult } from "./Dadget";
/**
* サブセットストレージコンフィグレーションパラメータ
*/
export declare class SubsetStorageConfigDef {
/**
* データベース名
*/
readonly database: string;
/**
* サブセット名
*/
readonly subset: string;
/**
* 上位サブセット名
*/
readonly subscribe?: string;
/**
* true の場合はクエリハンドラを "loadBalancing" モードで登録し、外部にサービスを公開する。 false の場合はクエリハンドラを "localOnly" モードで登録する
*/
readonly exported?: boolean;
/**
* サブセットストレージのタイプで persistent か cache のいずれかである
*/
readonly type: "persistent" | "cache";
/**
* エクスポート処理での一回あたりの最大処理数
*/
readonly exportMaxLines?: number;
}
/**
* サブセットストレージ(SubsetStorage)
*
* サブセットストレージは、クエリハンドラと更新レシーバの機能を提供するサービスエンジンである。
*/
export declare class SubsetStorage extends ServiceEngine implements Proxy {
bootOrder: number;
committedCsn?: number;
private logger;
private option;
private node;
private database;
private subsetName;
private subsetDefinition;
private type;
private subsetDb;
private journalDb;
private systemDb;
private mountHandle;
private mounted;
private lock;
private queryWaitingList;
private subscriberKey;
private readyFlag;
private readyQueue;
private updateProcessor;
private updateListener;
private updateListenerKey?;
private updateListenerMountHandle?;
notifyListener?: {
procNotify: (transaction: TransactionObject) => void;
};
constructor(option: SubsetStorageConfigDef);
getOption(): SubsetStorageConfigDef;
getNode(): ResourceNode;
getSubsetDb(): SubsetDb;
getJournalDb(): JournalDb;
getSystemDb(): SystemDb;
getLock(): ReadWriteLock;
getDbName(): string;
getType(): string;
getReady(): boolean;
waitReady(): Promise;
isWhole(): boolean;
pause(): void;
setReady(transaction?: TransactionObject): void;
pullQueryWaitingList(csn: number): (() => Promise)[];
start(node: ResourceNode): Promise;
connectUpdateListener(): void;
subscribeUpdateListener(): Promise;
subscribeUpdateProcessor(): Promise;
stop(node: ResourceNode): Promise;
onReceive(req: http.IncomingMessage, res: http.ServerResponse): Promise;
count(csn: number, query: object, csnMode?: CsnMode): Promise;
query(csn: number, query: object, sort?: object, limit?: number, csnMode?: CsnMode, projection?: object, offset?: number): Promise;
wait(csn: number): Promise;
static rollbackAndFind(orgList: any[], transactions: TransactionObject[], query: object, sort?: object, limit?: number, offset?: number): any[];
}