Files
diplomarbeit-code/lib/src/interfaceConnectionObject.ts
T
2023-10-20 10:14:53 +02:00

40 lines
1.5 KiB
TypeScript

import type { types } from "@aas-core-works/aas-core3.0rc02-typescript";
type ConnectionType = "ON_DEMAND" | "PERMANENT";
export type OnResponseCallback = (response: any) => void
export default abstract class InterfaceConnectionObject<ConfigInterface> {
protected abstract readonly name: string;
protected abstract readonly uriProtocol: string[]|string;
protected abstract readonly connectionType: ConnectionType;
protected abstract readonly supportsSubscriptions: boolean;
protected config: ConfigInterface;
private onResponseCallback: OnResponseCallback;
public constructor(config: ConfigInterface, onResponseCallback: OnResponseCallback) {
this.config = config;
this.onResponseCallback = onResponseCallback;
}
public abstract connect(): boolean;
public abstract disconnect(): void;
public abstract readProperty(prop: types.Property): void;
public abstract writeProperty(prop: types.Property, value: any): void;
public abstract observeProperty(prop: types.Property, callback: (value: any) => void): boolean;
public abstract callActionSync(action: types.Operation, args: types.OperationVariable[]): any;
public abstract callActionAsync(action: types.Operation, args: types.OperationVariable[]): Promise<boolean>;
public abstract readAsyncActionResponse(action: types.Operation): Promise<any>;
public abstract subscribeEvent(callback: (event: types.BasicEventElement) => void): boolean;
public abstract unsubscribeEvent(): void;
}