connector.transmitter.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import dotenv from 'dotenv';
  2. import { FisAppActor, FisMessage, TransmissionMessage } from "../interface/transport.interface";
  3. import { ConnectionAdapter } from "./connector.base";
  4. import { AdaptorTransmissionRole, ConnectionState, TransmitterConnectionAdapter as TransmitterConnectionAdapterInterface, Transport, TransportMessage, TransportService } from '../interface/connector.interface';
  5. import { BehaviorSubject, Observable, Observer } from 'rxjs';
  6. import { v4 as uuidv4 } from 'uuid'
  7. import { WebsocketTransportService } from '../transport/websocket';
  8. import { HttpTransportService } from '../transport/http';
  9. dotenv.config();
  10. /* This transport manager will be instantiating the necessary transport to deal with tranmission and receiving from different receivers
  11. So how?: */
  12. export class TransmitterConnectionAdapter extends ConnectionAdapter implements TransmitterConnectionAdapterInterface {
  13. connectionStateBus: BehaviorSubject<ConnectionState> = new BehaviorSubject('OFFLINE' as ConnectionState) // this cannot work, because there will be alot of clients connected presumably
  14. constructor(transportService: TransportService) {
  15. super()
  16. // logic here
  17. }
  18. emitStream(message: TransmissionMessage): void {
  19. throw new Error('Method not implemented.');
  20. }
  21. emit(message: TransmissionMessage): void {
  22. (this.connector as TransportService).emit({
  23. id: uuidv4(),
  24. dateCreated: new Date(),
  25. transport: Transport.Websocket,
  26. target: message.receiverId,
  27. payload: message.payload
  28. } as TransportMessage)
  29. }
  30. }