adapter.transmitter.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334
  1. import dotenv from 'dotenv';
  2. import { BehaviorSubject, distinctUntilChanged, filter, map, Observable, Subject } from 'rxjs';
  3. import { WrappedMessage } from '../utils/message.ordering';
  4. import ConsoleLogger from '../utils/log.utils';
  5. import { AdapterBase } from '../base/adapter.base';
  6. import { ClientObject, ConnectionState, FisMessage, TransportType, TransportMessage, TransportServiceInterface, TransmissionRole } from '../interface/interface';
  7. dotenv.config();
  8. export class TransmitterAdapter<T> extends AdapterBase<T> {
  9. constructor(clientId: string, adapterType: TransportType, transportService: TransportServiceInterface, role: TransmissionRole) {
  10. super(clientId, adapterType, transportService, role)
  11. this.console = new ConsoleLogger(`${this.adapterProfile.transportType}TransmitterAdapter`, ['adapter'])
  12. this.console.log({ message: `Contructing TransmitterAdapter for client: ${this.adapterProfile.clientId}` })
  13. }
  14. emit(selfId: string, message: WrappedMessage): void {
  15. // logic here
  16. // this.console.log({ message: `Emitting: ${(message.payload as FisMessage).header.messageID} to ${this.adapterProfile.clientId}` })
  17. this.console.log({ message: `Emitting: ${message.thisMessageID} to ${this.adapterProfile.clientId}` })
  18. this.adapterProfile.transportService.emit({
  19. id: this.adapterProfile.clientId,
  20. dateCreated: new Date(),
  21. transport: this.adapterProfile.transportType,
  22. target: this.adapterProfile.clientId,
  23. source: selfId,
  24. payload: message
  25. } as TransportMessage)
  26. }
  27. }