connector.manager.ts 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { v4 as uuidv4 } from 'uuid'
  2. import { ConnectionEvent, ConnectionManager as ConnectionManagerInterface, ConnectionSet, Transport } from "../interface/connector.interface"
  3. import { TransmitterConnectionAdapter } from './connector.transmitter'
  4. import { ReceiverConnectionAdapter } from './connector.receiver'
  5. import { TransmissionEvent } from '../interface/transport.interface'
  6. import { Subject } from 'rxjs'
  7. import { WebsocketTransportService } from '../transport/websocket'
  8. import { RequestResponseConnectionAdapter } from './connector.request.response'
  9. import { HttpTransportService } from '../transport/http'
  10. export class ConnectionManager implements ConnectionManagerInterface {
  11. transportService: any;
  12. transmissionEvent: Subject<TransmissionEvent> = new Subject()
  13. connectionEvent: Subject<ConnectionEvent> = new Subject()
  14. transmissionSet: ConnectionSet[] = []
  15. constructor(messageTransmissionEvent: Subject<TransmissionEvent>) {
  16. messageTransmissionEvent.subscribe(this.transmissionEvent)
  17. // logic here
  18. this.getTransportService(process.env.Transport as unknown as Transport)
  19. }
  20. getTransmitterConnectionAdapter(): TransmitterConnectionAdapter {
  21. if (this.transportService) {
  22. let adapter: TransmitterConnectionAdapter = new TransmitterConnectionAdapter(this.transportService)
  23. return adapter
  24. } else {
  25. throw new Error(`Transmitter Transport NOT initialized.`)
  26. }
  27. }
  28. getReceiverConnectionAdapter(): ReceiverConnectionAdapter {
  29. if (this.transportService) {
  30. let adapter: ReceiverConnectionAdapter = new ReceiverConnectionAdapter(this.transportService)
  31. return adapter
  32. } else {
  33. throw new Error(`Receiver Transport NOT initialized.`)
  34. }
  35. }
  36. getRequestResponseConnectionAdapter(transmitterAdapter: TransmitterConnectionAdapter, receiverAdapter: ReceiverConnectionAdapter): RequestResponseConnectionAdapter {
  37. if (this.transportService) {
  38. let adapter: RequestResponseConnectionAdapter = new RequestResponseConnectionAdapter(transmitterAdapter, receiverAdapter)
  39. return adapter
  40. } else {
  41. throw new Error(`Request Response Transport NOT initialized.`)
  42. }
  43. }
  44. getTransportService(transportType: Transport): any {
  45. console.log(`Getting this to work ${transportType}`)
  46. if (transportType == Transport.Websocket) {
  47. this.transportService = new WebsocketTransportService()
  48. this.connectionEvent.next({
  49. id: uuidv4(),
  50. event: 'Setup',
  51. data: {
  52. message: `Setting up Websocket Transport Service`
  53. }
  54. })
  55. }
  56. if (transportType == Transport.Http) {
  57. this.transportService = new HttpTransportService()
  58. this.connectionEvent.next({
  59. id: uuidv4(),
  60. event: 'Setup',
  61. data: {
  62. message: `Setting up Http Transport Service`
  63. }
  64. })
  65. }
  66. }
  67. }