|
@@ -5,13 +5,11 @@ import { checkMessage, WrappedMessage } from '../utils/message.ordering';
|
|
|
import ConsoleLogger from '../utils/log.utils';
|
|
|
import { MessageTransmissionBase } from '../base/msg.transmission.base';
|
|
|
import { AdapterInterface, GeneralEvent, MessageReceiverInterface, ReceiverAdapterInterface, TransportMessage } from '../interface/interface';
|
|
|
-import { AdapterBase } from '../base/adapter.base';
|
|
|
-import { IncomingMessage } from 'http';
|
|
|
|
|
|
export class MessageTransmissionReceiver extends MessageTransmissionBase implements MessageReceiverInterface {
|
|
|
private console: ConsoleLogger = new ConsoleLogger(`MessageTransmissionReceiver`, ['transmission'])
|
|
|
private onHoldMessage: Subject<WrappedMessage> = new Subject()
|
|
|
- private currentAdapter!: ReceiverAdapter
|
|
|
+ private currentAdapter!: ReceiverAdapterInterface
|
|
|
private incomingMessage: Subject<GeneralEvent<TransportMessage>> = new Subject()
|
|
|
// private toBePassedOver: Subject<WrappedMessage> = new Subject()
|
|
|
|
|
@@ -20,7 +18,7 @@ export class MessageTransmissionReceiver extends MessageTransmissionBase impleme
|
|
|
this.clientId = clientId
|
|
|
this.event = event
|
|
|
|
|
|
- this.handleAdapterEvent(this.event.asObservable())
|
|
|
+ this.handleAdapters(this.event.asObservable())
|
|
|
}
|
|
|
|
|
|
getIncoming(): Observable<GeneralEvent<TransportMessage>> {
|
|
@@ -48,25 +46,25 @@ export class MessageTransmissionReceiver extends MessageTransmissionBase impleme
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- private handleAdapterEvent(adapterEvent: Observable<GeneralEvent<any>>): void {
|
|
|
- const subscription: Subscription = adapterEvent.pipe(
|
|
|
+ private handleAdapters(adapterEvent: Observable<GeneralEvent<any>>): void {
|
|
|
+ adapterEvent.pipe(
|
|
|
filter(event => event.type === `Adapter Event`),
|
|
|
filter(event => event.event === `New Adapter`),
|
|
|
- map(event => {
|
|
|
- return event.data
|
|
|
- }),
|
|
|
+ map(event => { return event.data as AdapterInterface }),
|
|
|
filter((adapter: AdapterInterface) => adapter.role === `Receiver`),
|
|
|
- map(adapter => {
|
|
|
- return adapter as ReceiverAdapter
|
|
|
- })
|
|
|
- ).subscribe((adapter: ReceiverAdapter) => {
|
|
|
- if (!this.adapters.some(adapterObj => adapterObj.adapterId === adapter.adapterId)) {
|
|
|
- this.adapters.push(adapter)
|
|
|
- this.currentAdapter = adapter
|
|
|
- this.currentAdapter.subscribeForIncoming().subscribe(this.incomingMessage)
|
|
|
- } else {
|
|
|
- this.console.error({ message: `Adapter ID: ${adapter.adapterId} already existed.` })
|
|
|
- }
|
|
|
+ map(adapter => { return adapter as ReceiverAdapter })
|
|
|
+ ).subscribe({
|
|
|
+ next: (adapter: ReceiverAdapterInterface) => {
|
|
|
+ if (!this.adapters.some(adapterObj => adapterObj.adapterId === adapter.adapterId)) {
|
|
|
+ this.adapters.push(adapter)
|
|
|
+ this.currentAdapter = adapter
|
|
|
+ this.console.log({ message: `Setting Current adapter = ${this.currentAdapter.adapterId}` })
|
|
|
+ this.currentAdapter.subscribeForIncoming().subscribe(this.incomingMessage)
|
|
|
+ } else {
|
|
|
+ this.console.error({ message: `Adapter ID: ${adapter.adapterId} already existed.` })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error: error => this.console.error({ message: 'Observer Error', details: error })
|
|
|
})
|
|
|
}
|
|
|
|