import { Observable, Subject } from "rxjs"; import { AdapterProfile, AdaptorTransmissionRole, RequestResponseConnectionAdapter } from "./connector.interface"; import { MessageTransmissionTransmitter } from "../transmission/msg.transmission.transmitter"; import { MessageTransmissionReceiver } from "../transmission/msg.transmission.receiver"; export interface MessageTransmissionManager { // what the hell is this here for getTransmissionInstance(): MessageTransmission } export interface MessageTransmission { id: string, receiverId: string, transmitterId: string, transmitter: MessageTransmissionTransmitter, receiver: MessageTransmissionReceiver, requestResponse: MessageRequestResponse } export interface FisAppActor { incomingMessageBus: Subject outgoingMessageBus: Subject send(message: any): Observable emit(message: any): void emitStream(message: any): void subscribeMessages(messageFilter: any): Observable } export interface MessageTransmissionBase extends FisAppActor { msgRepositoryService: any transmissionRole: AdaptorTransmissionRole adaptorsArray: Array // this is the one we'll be using to catter for multiple clients transmissionService: any adapterService: any getMessageBus(bus: Bus): Observable getInfo(): TransmissionProfile } export interface MessageReceiver extends MessageTransmissionBase { receiverProfile: ReceiverProfile setReceiver(receiverProfile: ReceiverProfile, role: AdaptorTransmissionRole, event: TransmissionEvent): void } export interface MessageTransmitter extends MessageTransmissionBase { transmitterProfile: TransmitterProfile setTransmitter(transmitterProfile: TransmitterProfile, role: AdaptorTransmissionRole, event: TransmissionEvent): void } export interface MessageRequestResponse extends MessageTransmissionBase { transmitterInstance: MessageTransmissionTransmitter receiverInstance: MessageTransmissionReceiver setTransmissionProfile(transmissionInfo: MessageTransmissionTransmitter, receiverInfo: MessageTransmissionReceiver, role: AdaptorTransmissionRole, event: TransmissionEvent): void } export interface FisMessage { header: { messageID: string, messageName: `NotificationMessage` | `ResponseMessage` | `RequestMessage` }, data: any } export interface TransmissionProfile { id: string, name: string, dateCreated: Date } export interface TransmitterProfile extends TransmissionProfile { } export interface ReceiverProfile extends TransmissionProfile { } export interface RequestResponseProfile extends TransmissionProfile { } export interface TransmissionMessage { receiverId: string, payload: FisMessage } export enum Bus { GeneralBus, ResponseMessageBus, ErrorMessageBus, NotificationMessageBus } export interface TransmissionEvent { id: string, event: 'New Receiver' | 'New Server' | 'Incoming Message' | `Outgoing Message`, data: any } export interface EventMessage { channelId: string, message: string, payload: any }