1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { BehaviorSubject } from 'rxjs';
- import { ConnectionAttribute, ConnectionRequest, ConnectionState, OutGoingInfo } from '../interfaces/general.interface';
- import { GrpcServiceMethod } from './grpc.service.method';
- import { BufferService } from './buffer.service';
- import { v4 as uuidv4 } from 'uuid'
- import * as dotenv from 'dotenv'
- dotenv.config()
- export class ServerClientManager {
- private connectionAttributes: ConnectionAttribute[] = []
- private request: ConnectionRequest | any
- private outGoingInfo: OutGoingInfo
- private grpcService: GrpcServiceMethod = new GrpcServiceMethod()
- constructor() {
- this.outGoingInfo = {
- StreamID: uuidv4(),
- PublisherID: uuidv4(),
- SubscriberID: uuidv4()
- }
- }
- public generateConnection(request: ConnectionRequest) {
- this.request = request
- let database: string
- if (request.database) {
- database = request.database
- } else {
- database = request.server.name + request.client.name
- }
- /* Inject retransmission here */
- let initialReport: ConnectionState = { status: 'BUFFER' }
- let reportSubject: BehaviorSubject<ConnectionState> = new BehaviorSubject(initialReport)
- let retransmission: BufferService = new BufferService(request.server.messageToBePublishedFromApplication, reportSubject, database)
- let connectionAttribute: ConnectionAttribute = {
- ConnectionID: {
- local: '',
- remote: ''
- },
- outGoing: {
- MessageToBePublished: retransmission.getMessages(),
- MessageToBeReceived: null
- },
- inComing: {
- MessageToBePublished: null,
- MessageToBeReceived: request.client.messageToBeReceivedFromRemote
- },
- connectionStatus: reportSubject
- }
- // connectionAttribute.outGoing.MessageToBePublished?.subscribe(e => console.log((e.message as MessageLog).appData.msgId))
- // This is default connection`
- if (!request.server.connectionType) {
- request.server.connectionType = 'GRPC'
- }
- // For each connection type:
- if (request.server.connectionType == 'GRPC') {
- this.grpcService.create(request, connectionAttribute, this.outGoingInfo)
- this.connectionAttributes.push(connectionAttribute)
- console.log(`There is now ${this.connectionAttributes.length} connection Attributes`)
- }
- }
- }
|