|
@@ -4,7 +4,7 @@ import { BehaviorSubject, distinctUntilChanged, filter, map, Observable, Subject
|
|
import { RetransmissionService } from "../utils/retransmission.service";
|
|
import { RetransmissionService } from "../utils/retransmission.service";
|
|
import { WrappedMessage } from "../utils/message.ordering";
|
|
import { WrappedMessage } from "../utils/message.ordering";
|
|
import ConsoleLogger from "../utils/log.utils";
|
|
import ConsoleLogger from "../utils/log.utils";
|
|
-import { AdapterInterface, AdapterManagerInterface, ConnectionState, FisMessage, GeneralEvent, MessageTransmitterInterface, TransmitterAdapterInterface, TransportMessage } from "../interface/interface";
|
|
|
|
|
|
+import { AdapterInterface, AdapterManagerInterface, ConnectionState, FisMessage, GeneralEvent, MessageTransmitterInterface, TransmissionProfile, TransmitterAdapterInterface, TransportMessage } from "../interface/interface";
|
|
import { error } from "console";
|
|
import { error } from "console";
|
|
import { TransmitterAdapter } from "../adapters/adapter.transmitter";
|
|
import { TransmitterAdapter } from "../adapters/adapter.transmitter";
|
|
|
|
|
|
@@ -17,10 +17,10 @@ export class MessageTransmissionTransmitter extends MessageTransmissionBase impl
|
|
private buffer!: RetransmissionService;
|
|
private buffer!: RetransmissionService;
|
|
private currentAdapter!: TransmitterAdapterInterface
|
|
private currentAdapter!: TransmitterAdapterInterface
|
|
|
|
|
|
- constructor(clientId: string, adapterManager: AdapterManagerInterface) {
|
|
|
|
|
|
+ constructor(profile: TransmissionProfile, adapterManager: AdapterManagerInterface) {
|
|
super()
|
|
super()
|
|
- this.console.log({ message: `Constructing Transmitter Transmission with ${clientId}` })
|
|
|
|
- this.clientId = clientId
|
|
|
|
|
|
+ this.profile = profile
|
|
|
|
+ this.console.log({ message: `Constructing Transmitter Transmission for Receiving target: ${this.profile.target}` })
|
|
this.messageToBeBuffered = new Subject()
|
|
this.messageToBeBuffered = new Subject()
|
|
this.buffer = new RetransmissionService()
|
|
this.buffer = new RetransmissionService()
|
|
this.initializeTransmitterComponents(adapterManager)
|
|
this.initializeTransmitterComponents(adapterManager)
|
|
@@ -36,13 +36,14 @@ export class MessageTransmissionTransmitter extends MessageTransmissionBase impl
|
|
private initializeTransmitterComponents(adapterManager: AdapterManagerInterface): void {
|
|
private initializeTransmitterComponents(adapterManager: AdapterManagerInterface): void {
|
|
this.console.log({ message: `Setting up Retransmission Service...` })
|
|
this.console.log({ message: `Setting up Retransmission Service...` })
|
|
// Listen and update adapters
|
|
// Listen and update adapters
|
|
- adapterManager.subscribeForAdapters(this.clientId, `Transmitter`).subscribe((adapter: AdapterInterface) => {
|
|
|
|
- this.console.log({ message: `Adding new ${adapter.getAdapterProfile(`transportType`)} transmitting adapter. Current adapter length: ${this.adapters.length}` })
|
|
|
|
|
|
+ adapterManager.subscribeForAdapters(this.profile.target, `Transmitter`).subscribe((adapter: AdapterInterface) => {
|
|
this.adapters.push(adapter)
|
|
this.adapters.push(adapter)
|
|
|
|
+ this.console.log({ message: `Adding new ${adapter.getAdapterProfile(`transportType`)} transmitting adapter. Current adapter length: ${this.adapters.length}` })
|
|
if (!this.currentAdapter) {
|
|
if (!this.currentAdapter) {
|
|
this.console.log({ message: `Setting this ${adapter.getAdapterProfile(`transportType`)} as current adapter.` })
|
|
this.console.log({ message: `Setting this ${adapter.getAdapterProfile(`transportType`)} as current adapter.` })
|
|
this.currentAdapter = adapter as TransmitterAdapterInterface
|
|
this.currentAdapter = adapter as TransmitterAdapterInterface
|
|
- this.currentAdapter.connectionState.subscribe(this.connectionStateEvent)
|
|
|
|
|
|
+ let connectionState: Observable<ConnectionState> = this.currentAdapter.getAdapterProfile('connectionState') as Observable<ConnectionState>
|
|
|
|
+ connectionState.subscribe(this.connectionStateEvent)
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
|
|
@@ -52,7 +53,7 @@ export class MessageTransmissionTransmitter extends MessageTransmissionBase impl
|
|
// need to work with wrapped messages
|
|
// need to work with wrapped messages
|
|
this.console.log({ message: `Transmitting ${bufferedMessage.thisMessageID}` });
|
|
this.console.log({ message: `Transmitting ${bufferedMessage.thisMessageID}` });
|
|
if (this.currentAdapter) {
|
|
if (this.currentAdapter) {
|
|
- this.currentAdapter.emit(bufferedMessage)
|
|
|
|
|
|
+ this.currentAdapter.emit(this.profile.source, bufferedMessage)
|
|
} else {
|
|
} else {
|
|
// just flush back the message inside the buffer, if the adapter is not ready or assigned.
|
|
// just flush back the message inside the buffer, if the adapter is not ready or assigned.
|
|
this.messageToBeBuffered.next(bufferedMessage)
|
|
this.messageToBeBuffered.next(bufferedMessage)
|
|
@@ -65,7 +66,7 @@ export class MessageTransmissionTransmitter extends MessageTransmissionBase impl
|
|
private uniqueHandlerToFlushUnsentMessages(event: Observable<GeneralEvent<any>>): void {
|
|
private uniqueHandlerToFlushUnsentMessages(event: Observable<GeneralEvent<any>>): void {
|
|
event.pipe(
|
|
event.pipe(
|
|
filter(event => event.event == 'Re-Flush'),
|
|
filter(event => event.event == 'Re-Flush'),
|
|
- filter(event => event.data.clientId == this.clientId),
|
|
|
|
|
|
+ filter(event => event.data.clientId == this.profile.target),
|
|
).subscribe((event: GeneralEvent<any>) => {
|
|
).subscribe((event: GeneralEvent<any>) => {
|
|
this.console.log({ message: `${this.connectionStateEvent.getValue() == 'ONLINE' ? `Transmitting ${((event.data.payload as TransportMessage).payload as WrappedMessage).thisMessageID}` : `Buffering ${((event.data.payload as TransportMessage).payload as WrappedMessage).thisMessageID}`}` })
|
|
this.console.log({ message: `${this.connectionStateEvent.getValue() == 'ONLINE' ? `Transmitting ${((event.data.payload as TransportMessage).payload as WrappedMessage).thisMessageID}` : `Buffering ${((event.data.payload as TransportMessage).payload as WrappedMessage).thisMessageID}`}` })
|
|
this.messageToBeBuffered.next(((event.data.payload as TransportMessage).payload as WrappedMessage))
|
|
this.messageToBeBuffered.next(((event.data.payload as TransportMessage).payload as WrappedMessage))
|