1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import { MessageTransmissionBase } from "./msg.transmission.base";
- import { FisMessage, MessageTransmitter as MessageTransmitterInterface, TransmissionMessage, TransmitterProfile } from '../interface/transport.interface'
- import { AdapterProfile, AdapterSet, AdaptorTransmissionRole, ConnectionState, TransportEvent, TransportMessage, TransportService } from "../interface/connector.interface";
- import { v4 as uuidv4 } from 'uuid'
- import { TransmitterConnectionAdapter } from "../connector/connector.transmitter";
- import { BehaviorSubject, filter, map, Observable } from "rxjs";
- /* Take in all the messages that needs to be transported, and divide them accordingly. So the connector instances will do just that
- connectors or adapters will have their own identifier*/
- export class MessageTransmissionTransmitter extends MessageTransmissionBase implements MessageTransmitterInterface {
- transmitterProfile!: TransmitterProfile;
- constructor(profile: TransmitterProfile, role: AdaptorTransmissionRole, event: Observable<TransportEvent>) {
- super()
- this.setTransmitter(profile, role)
- this.handleEvent(event)
- }
- setTransmitter(transmitterProfile: TransmitterProfile, role: AdaptorTransmissionRole): void {
- this.transmitterProfile = transmitterProfile
- this.transmissionRole = role
- }
- emit(message: TransmissionMessage): void {
- // logic here, emit based on message
- let adapter: AdapterProfile | undefined = this.adaptorsArray.find(obj => obj.id == message.adapterId)
- if(adapter) {
- (adapter.adapter as TransmitterConnectionAdapter).emit(message)
- }
- }
- private handleEvent(event: Observable<TransportEvent>): void {
- event.pipe(
- filter((obj: TransportEvent) => obj.event == `New Adapter`),
- map(obj => (obj as TransportEvent).data as AdapterSet)
- ).subscribe((adapter: AdapterSet) => {
- this.adaptorsArray.push({ id: adapter.transmitterAdapter.getInfo().id, adapter: adapter.transmitterAdapter as TransmitterConnectionAdapter, connectionState: adapter.transmitterAdapter.connectionStateBus }) // refers to channel ID, which will be embedded in these messages that pass through
- })
- }
- }
|