actor.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { interval, map, Subject } from "rxjs";
  2. import { ActorBase } from "../base/actor.base"
  3. import { ActorInterface, ActorMessage, ActorProfile } from "../interface/actor.sample";
  4. import { FisMessage } from "../interface/interface";
  5. class TestA extends ActorBase<{ message: string }> {
  6. // instantiate new actor
  7. constructor() {
  8. super();
  9. }
  10. }
  11. class TestB extends ActorBase<{ message: string }> {
  12. constructor() {
  13. super();
  14. }
  15. }
  16. function publishMessage<T>(actorProfile: ActorProfile, output: Subject<ActorMessage<T>>) {
  17. let count = 0
  18. interval(1000).pipe(
  19. map(time => {
  20. count++
  21. return {
  22. actorProfile: actorProfile,
  23. payload: {
  24. message: `Message${count} from TEST A`
  25. }
  26. } as ActorMessage<T>
  27. })
  28. ).subscribe(output)
  29. }
  30. function doThese<T>(actorProfile: ActorProfile, input: Subject<ActorMessage<T>>, output: Subject<ActorMessage<T>>, actor: ActorInterface<T>, subscribers: ActorProfile[]) {
  31. console.log(`${actorProfile.actorName} initiating ${actor ? `subscription to designated target` : `...`}`)
  32. // start logging to see if the correct messages are in
  33. // input = new Subject()
  34. input.subscribe(message => {
  35. console.log(`${actorProfile.actorName} Incoming Bus`, message)
  36. })
  37. // output = new Subject()
  38. output.subscribe(message => {
  39. // console.log(`${actorProfile.actorName} Outgoing Bus`, message)
  40. })
  41. // connect to target and see what happens
  42. let unsubscribable = actor.subscribe(actorProfile, input)
  43. // subscribers.find(obj => obj.actorId === )
  44. // start publishing messages
  45. publishMessage<T>(actorProfile, output)
  46. }
  47. let testA = new TestA()
  48. let testB = new TestB()