40 lines
1.5 KiB
TypeScript
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;
|
|
} |