server-client.service.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { BehaviorSubject } from 'rxjs';
  2. import { ConnectionAttribute, ConnectionRequest, ConnectionState, OutGoingInfo } from '../interfaces/general.interface';
  3. import { GrpcServiceMethod } from './grpc.service.method';
  4. import { BufferService } from './buffer.service';
  5. import { v4 as uuidv4 } from 'uuid'
  6. import * as dotenv from 'dotenv'
  7. dotenv.config()
  8. export class ServerClientManager {
  9. private connectionAttributes: ConnectionAttribute[] = []
  10. private request: ConnectionRequest | any
  11. private outGoingInfo: OutGoingInfo
  12. private grpcService: GrpcServiceMethod = new GrpcServiceMethod()
  13. constructor() {
  14. this.outGoingInfo = {
  15. StreamID: uuidv4(),
  16. PublisherID: uuidv4(),
  17. SubscriberID: uuidv4()
  18. }
  19. }
  20. public generateConnection(request: ConnectionRequest) {
  21. this.request = request
  22. let database: string
  23. if (request.database) {
  24. database = request.database
  25. } else {
  26. database = request.server.name + request.client.name
  27. }
  28. /* Inject retransmission here */
  29. let initialReport: ConnectionState = { status: 'BUFFER' }
  30. let reportSubject: BehaviorSubject<ConnectionState> = new BehaviorSubject(initialReport)
  31. let retransmission: BufferService = new BufferService(request.server.messageToBePublishedFromApplication, reportSubject, database)
  32. let connectionAttribute: ConnectionAttribute = {
  33. ConnectionID: {
  34. local: '',
  35. remote: ''
  36. },
  37. outGoing: {
  38. MessageToBePublished: retransmission.getMessages(),
  39. MessageToBeReceived: null
  40. },
  41. inComing: {
  42. MessageToBePublished: null,
  43. MessageToBeReceived: request.client.messageToBeReceivedFromRemote
  44. },
  45. connectionStatus: reportSubject
  46. }
  47. // connectionAttribute.outGoing.MessageToBePublished?.subscribe(e => console.log((e.message as MessageLog).appData.msgId))
  48. // This is default connection`
  49. if (!request.server.connectionType) {
  50. request.server.connectionType = 'GRPC'
  51. }
  52. // For each connection type:
  53. if (request.server.connectionType == 'GRPC') {
  54. this.grpcService.create(request, connectionAttribute, this.outGoingInfo)
  55. this.connectionAttributes.push(connectionAttribute)
  56. console.log(`There is now ${this.connectionAttributes.length} connection Attributes`)
  57. }
  58. }
  59. }