transmitter.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { Observable, Subject } from "rxjs";
  2. import { FisAppActor, FisMessage } from "../interface/transport.interface";
  3. import { MessageTransmissionBase } from "../transmission/msg.transmission.base";
  4. import dotenv from 'dotenv';
  5. /* These are the purple fonts. Gonna interact with blue fonts to set up the credentials to establish the necessary roles.
  6. Assuming the primary role is server. That means we will need transmitter and multiple receiver profiles that are connected. */
  7. class Application implements FisAppActor {
  8. incomingMessageBus!: Subject<FisMessage>
  9. outgoingMessageBus!: Subject<FisMessage>
  10. transmissionService!: MessageTransmissionBase
  11. constructor(messageTransmissionBase: MessageTransmissionBase) {
  12. this.transmissionService = messageTransmissionBase
  13. this.incomingMessageBus = messageTransmissionBase.incomingMessageBus
  14. this.outgoingMessageBus = messageTransmissionBase.outgoingMessageBus
  15. }
  16. send(message: FisMessage): Observable<FisMessage> {
  17. return new Observable((response) => {
  18. this.outgoingMessageBus.next(message)
  19. this.incomingMessageBus.subscribe({
  20. next: (message: FisMessage) => {
  21. if (message.header.messageID == message.header.messageID) {
  22. response.next(message)
  23. }
  24. if (message.header.messageID == message.header.messageID && message.data == 'Complete') {
  25. response.complete()
  26. }
  27. },
  28. error: error => response.error(error)
  29. })
  30. })
  31. }
  32. emit(message: FisMessage): void {
  33. this.outgoingMessageBus.next(message)
  34. }
  35. emitStream(message: FisMessage): void {
  36. this.outgoingMessageBus.next(message)
  37. }
  38. subscribeMessages(messageFilter: any): Observable<FisMessage> {
  39. throw new Error(`Unavailable for now....`)
  40. }
  41. }
  42. const application = new Application(new MessageTransmissionBase())