/** * @typedef {import("../channel/Channel.js").default} Channel * @typedef {import("../channel/MirrorChannel.js").default} MirrorChannel * @typedef {import("../channel/MirrorChannel.js").MirrorError} MirrorError */ /** * @template {Channel} ChannelT * @typedef {import("../client/Client.js").default} Client */ export default class TopicMessageQuery { /** * @param {object} props * @param {TopicId | string} [props.topicId] * @param {Timestamp} [props.startTime] * @param {Timestamp} [props.endTime] * @param {(message: TopicMessage, error: Error)=> void} [props.errorHandler] * @param {() => void} [props.completionHandler] * @param {(error: MirrorError | Error | null) => boolean} [props.retryHandler] * @param {Long | number} [props.limit] */ constructor(props?: { topicId?: string | TopicId | undefined; startTime?: Timestamp | undefined; endTime?: Timestamp | undefined; errorHandler?: ((message: TopicMessage, error: Error) => void) | undefined; completionHandler?: (() => void) | undefined; retryHandler?: ((error: MirrorError | Error | null) => boolean) | undefined; limit?: number | Long.Long | undefined; }); /** * @private * @type {?TopicId} */ private _topicId; /** * @private * @type {?Timestamp} */ private _startTime; /** * @private * @type {?Timestamp} */ private _endTime; /** * @private * @type {?Long} */ private _limit; /** * @private * @type {(message: TopicMessage, error: Error) => void} */ private _errorHandler; _listener: ((message: TopicMessage) => void) | null; /** * @private * @type {() => void} */ private _completionHandler; /** * @private * @type {(error: MirrorError | Error | null) => boolean} */ private _retryHandler; /** * @private * @type {number} */ private _maxAttempts; /** * @private * @type {number} */ private _maxBackoff; /** * @private * @type {number} */ private _attempt; /** * @private * @type {SubscriptionHandle | null} */ private _handle; /** * @returns {?TopicId} */ get topicId(): TopicId | null; /** * @param {TopicId | string} topicId * @returns {TopicMessageQuery} */ setTopicId(topicId: TopicId | string): TopicMessageQuery; /** * @returns {?Timestamp} */ get startTime(): Timestamp | null; /** * @param {Timestamp | Date | number} startTime * @returns {TopicMessageQuery} */ setStartTime(startTime: Timestamp | Date | number): TopicMessageQuery; /** * @returns {?Timestamp} */ get endTime(): Timestamp | null; /** * @param {Timestamp | Date | number} endTime * @returns {TopicMessageQuery} */ setEndTime(endTime: Timestamp | Date | number): TopicMessageQuery; /** * @returns {?Long} */ get limit(): Long.Long | null; /** * @param {Long | number} limit * @returns {TopicMessageQuery} */ setLimit(limit: Long | number): TopicMessageQuery; /** * @param {(message: TopicMessage, error: Error)=> void} errorHandler * @returns {TopicMessageQuery} */ setErrorHandler(errorHandler: (message: TopicMessage, error: Error) => void): TopicMessageQuery; /** * @param {() => void} completionHandler * @returns {TopicMessageQuery} */ setCompletionHandler(completionHandler: () => void): TopicMessageQuery; /** * @param {number} attempts */ setMaxAttempts(attempts: number): void; /** * @param {number} backoff */ setMaxBackoff(backoff: number): void; /** * @param {Client} client * @param {((message: TopicMessage, error: Error) => void) | null} errorHandler * @param {(message: TopicMessage) => void} listener * @returns {SubscriptionHandle} */ subscribe(client: import("../client/Client.js").default, errorHandler: ((message: TopicMessage, error: Error) => void) | null, listener: (message: TopicMessage) => void): SubscriptionHandle; /** * @private * @param {Client} client * @returns {void} */ private _makeServerStreamRequest; requireNotSubscribed(): void; /** * @private * @param {TopicMessage} topicMessage */ private _passTopicMessage; } export type Channel = import("../channel/Channel.js").default; export type MirrorChannel = import("../channel/MirrorChannel.js").default; export type MirrorError = import("../channel/MirrorChannel.js").MirrorError; /** * */ export type Client = import("../client/Client.js").default; import TopicMessage from "./TopicMessage.js"; import TopicId from "./TopicId.js"; import Timestamp from "../Timestamp.js"; import Long from "long"; import SubscriptionHandle from "./SubscriptionHandle.js";