import { interval, map, Subject } from "rxjs"; import { ActorBase } from "../base/actor.base" import { ActorInterface, ActorMessage, ActorProfile } from "../interface/actor.sample"; import { FisMessage } from "../interface/interface"; class TestA extends ActorBase<{ message: string }> { // instantiate new actor constructor() { super(); } } class TestB extends ActorBase<{ message: string }> { constructor() { super(); } } function publishMessage(actorProfile: ActorProfile, output: Subject>) { let count = 0 interval(1000).pipe( map(time => { count++ return { actorProfile: actorProfile, payload: { message: `Message${count} from TEST A` } } as ActorMessage }) ).subscribe(output) } function doThese(actorProfile: ActorProfile, input: Subject>, output: Subject>, actor: ActorInterface, subscribers: ActorProfile[]) { console.log(`${actorProfile.actorName} initiating ${actor ? `subscription to designated target` : `...`}`) // start logging to see if the correct messages are in // input = new Subject() input.subscribe(message => { console.log(`${actorProfile.actorName} Incoming Bus`, message) }) // output = new Subject() output.subscribe(message => { // console.log(`${actorProfile.actorName} Outgoing Bus`, message) }) // connect to target and see what happens let unsubscribable = actor.subscribe(actorProfile, input) // subscribers.find(obj => obj.actorId === ) // start publishing messages publishMessage(actorProfile, output) } let testA = new TestA() let testB = new TestB()