import { Observable, Subject } from "rxjs"; import { FisAppActor, FisMessage } from "../interface/transport.interface"; import { MessageTransmissionBase } from "../transmission/msg.transmission.base"; import dotenv from 'dotenv'; /* These are the purple fonts. Gonna interact with blue fonts to set up the credentials to establish the necessary roles. Assuming the primary role is server. That means we will need transmitter and multiple receiver profiles that are connected. */ class Application implements FisAppActor { incomingMessageBus!: Subject outgoingMessageBus!: Subject transmissionService!: MessageTransmissionBase constructor(messageTransmissionBase: MessageTransmissionBase) { this.transmissionService = messageTransmissionBase this.incomingMessageBus = messageTransmissionBase.incomingMessageBus this.outgoingMessageBus = messageTransmissionBase.outgoingMessageBus } send(message: FisMessage): Observable { return new Observable((response) => { this.outgoingMessageBus.next(message) this.incomingMessageBus.subscribe({ next: (message: FisMessage) => { if (message.header.messageID == message.header.messageID) { response.next(message) } if (message.header.messageID == message.header.messageID && message.data == 'Complete') { response.complete() } }, error: error => response.error(error) }) }) } emit(message: FisMessage): void { this.outgoingMessageBus.next(message) } emitStream(message: FisMessage): void { this.outgoingMessageBus.next(message) } subscribeMessages(messageFilter: any): Observable { throw new Error(`Unavailable for now....`) } } const application = new Application(new MessageTransmissionBase())