connector.manager.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { ConnectionManager as ConnectionManagerInterface, AdapterSet, TransportService, TransportEvent, Transport } from "../interface/connector.interface"
  2. import { TransmitterConnectionAdapter } from './connector.transmitter'
  3. import { ReceiverConnectionAdapter } from './connector.receiver'
  4. import { RequestResponseConnectionAdapter } from './connector.request.response'
  5. import { v4 as uuidv4 } from 'uuid'
  6. import { Subject } from "rxjs"
  7. export class ConnectionManager implements ConnectionManagerInterface {
  8. private adapterSet: AdapterSet[] = []
  9. private event!: Subject<TransportEvent>
  10. constructor(event: Subject<TransportEvent>) {
  11. this.event = event
  12. console.log(`Connection Manager: Contructing ConnectionManager....`)
  13. }
  14. getAdapter(clientId: string, transportService: TransportService): AdapterSet {
  15. let transportType: Transport = transportService.getInfo()
  16. let adapterId: string = clientId
  17. let transmitterAdapter: TransmitterConnectionAdapter = new TransmitterConnectionAdapter(adapterId, transportType, transportService)
  18. let receiverAdapter: ReceiverConnectionAdapter = new ReceiverConnectionAdapter(adapterId, transportType, transportService)
  19. let adapterSet: AdapterSet = {
  20. id: adapterId,
  21. dateCreated: new Date(),
  22. transmitterAdapter: transmitterAdapter,
  23. receiverAdapter: receiverAdapter,
  24. requestResponsAdapter: new RequestResponseConnectionAdapter(transmitterAdapter, receiverAdapter)
  25. }
  26. this.adapterSet.push(adapterSet)
  27. this.event.next({
  28. id: uuidv4(),
  29. event: 'New Adapter',
  30. data: adapterId
  31. } as TransportEvent)
  32. return adapterSet
  33. }
  34. }