You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.6 KiB
51 lines
1.6 KiB
import type { UnexpectedResourceError } from "../../requester/results/error/ErrorResult";
|
|
import type { SolidLdoDatasetContext } from "../../SolidLdoDatasetContext";
|
|
import type { Resource } from "../Resource";
|
|
import type { NotificationMessage } from "./NotificationMessage";
|
|
import type { UnsupportedNotificationError } from "./results/NotificationErrors";
|
|
import type { SubscribeToNotificationSuccess } from "./results/SubscribeToNotificationSuccess";
|
|
import type { UnsubscribeToNotificationSuccess } from "./results/UnsubscribeFromNotificationSuccess";
|
|
|
|
export type OpenSubscriptionResult =
|
|
| SubscribeToNotificationSuccess
|
|
| UnsupportedNotificationError
|
|
| UnexpectedResourceError;
|
|
|
|
export type CloseSubscriptionResult =
|
|
| UnsubscribeToNotificationSuccess
|
|
| UnexpectedResourceError;
|
|
|
|
/**
|
|
* @internal
|
|
* Abstract class for notification subscription methods.
|
|
*/
|
|
export abstract class NotificationSubscription {
|
|
protected resource: Resource;
|
|
protected onNotification: (message: NotificationMessage) => void;
|
|
protected onError?: (err: Error) => void;
|
|
protected context: SolidLdoDatasetContext;
|
|
|
|
constructor(
|
|
resource: Resource,
|
|
onNotification: (message: NotificationMessage) => void,
|
|
onError: ((err: Error) => void) | undefined,
|
|
context: SolidLdoDatasetContext,
|
|
) {
|
|
this.resource = resource;
|
|
this.onNotification = onNotification;
|
|
this.onError = onError;
|
|
this.context = context;
|
|
}
|
|
|
|
/**
|
|
* @internal
|
|
* Opens the subscription
|
|
*/
|
|
abstract open(): Promise<OpenSubscriptionResult>;
|
|
|
|
/**
|
|
* @internal
|
|
* Closes the subscription
|
|
*/
|
|
abstract close(): Promise<CloseSubscriptionResult>;
|
|
}
|
|
|