| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | import { BehaviorSubject, Subject } from 'rxjs';import { ColorCode, Message, ReportStatus, ConnectionAttribute, ConnectionRequest } from '../interfaces/general.interface';import { GrpcServiceMethod } from './grpc.service.method';import { FisRetransmissionService } from './fis.retransmission.service';export class ServerClientManager {    private connectionAttributes: ConnectionAttribute[] = []    private request: ConnectionRequest | any    constructor(private grpcService: GrpcServiceMethod) {    }    public restartServerInDuration(time: number) {        console.log(this.request)        console.log(this.connectionAttributes)        this.grpcService.shutDownServer().then((msg: string) => {            console.log(msg)            setTimeout(() => {                this.generateConnection(this.request)            }, time * 1000)        })    }    public generateConnection(request: ConnectionRequest) {        this.request = request        let database: string        if (request.database) {            database = request.database        } else {            database = request.server.name + request.client.name        }        let initialReport: ReportStatus = { code: ColorCode.YELLOW, message: 'Initialization of the subject' }        let reportSubject: BehaviorSubject<ReportStatus> = new BehaviorSubject(initialReport)        let retransmission: FisRetransmissionService = new FisRetransmissionService(database, reportSubject)        let messageToBePublished: Subject<Message> = retransmission.handleMessage(request.server.messageToBePublishedfromApplication) ?? request.server.messageToBePublishedfromApplication        let connectionAttribute: ConnectionAttribute = {            ConnectionID: {                local: '',                remote: ''            },            outGoing: {                MessageToBePublished: messageToBePublished,                MessageToBeReceived: null            },            inComing: {                MessageToBePublished: null,                MessageToBeReceived: request.client.messageToBeReceivedFromRemote            },            connectionStatus: reportSubject // this is not related to report status for the retrasmission service        }        // 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.connectionAttributes.push(connectionAttribute)        }    }}
 |