/** * Copyright 2017 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Query } from '../core/query'; import { SnapshotVersion } from '../core/snapshot_version'; import { ListenSequenceNumber, TargetId } from '../core/types'; import { DocumentKeySet } from '../model/collections'; import { DocumentKey } from '../model/document_key'; import { ActiveTargets } from './lru_garbage_collector'; import { MemoryPersistence } from './memory_persistence'; import { PersistenceTransaction } from './persistence'; import { PersistencePromise } from './persistence_promise'; import { QueryCache } from './query_cache'; import { QueryData } from './query_data'; export declare class MemoryQueryCache implements QueryCache { private readonly persistence; /** * Maps a query to the data about that query */ private queries; /** The last received snapshot version. */ private lastRemoteSnapshotVersion; /** The highest numbered target ID encountered. */ private highestTargetId; /** The highest sequence number encountered. */ private highestSequenceNumber; /** * A ordered bidirectional mapping between documents and the remote target * IDs. */ private references; private targetCount; private targetIdGenerator; constructor(persistence: MemoryPersistence); getTargetCount(txn: PersistenceTransaction): PersistencePromise; forEachTarget(txn: PersistenceTransaction, f: (q: QueryData) => void): PersistencePromise; getLastRemoteSnapshotVersion(transaction: PersistenceTransaction): PersistencePromise; getHighestSequenceNumber(transaction: PersistenceTransaction): PersistencePromise; allocateTargetId(transaction: PersistenceTransaction): PersistencePromise; setTargetsMetadata(transaction: PersistenceTransaction, highestListenSequenceNumber: number, lastRemoteSnapshotVersion?: SnapshotVersion): PersistencePromise; private saveQueryData(queryData); addQueryData(transaction: PersistenceTransaction, queryData: QueryData): PersistencePromise; updateQueryData(transaction: PersistenceTransaction, queryData: QueryData): PersistencePromise; removeQueryData(transaction: PersistenceTransaction, queryData: QueryData): PersistencePromise; removeTargets(transaction: PersistenceTransaction, upperBound: ListenSequenceNumber, activeTargetIds: ActiveTargets): PersistencePromise; getQueryCount(transaction: PersistenceTransaction): PersistencePromise; getQueryData(transaction: PersistenceTransaction, query: Query): PersistencePromise; getQueryDataForTarget(transaction: PersistenceTransaction, targetId: TargetId): never; addMatchingKeys(txn: PersistenceTransaction, keys: DocumentKeySet, targetId: TargetId): PersistencePromise; removeMatchingKeys(txn: PersistenceTransaction, keys: DocumentKeySet, targetId: TargetId): PersistencePromise; removeMatchingKeysForTargetId(txn: PersistenceTransaction, targetId: TargetId): PersistencePromise; getMatchingKeysForTargetId(txn: PersistenceTransaction, targetId: TargetId): PersistencePromise; containsKey(txn: PersistenceTransaction, key: DocumentKey): PersistencePromise; }