public EventStreamer(IEventRelay eventRelay) { var subject = new Subject <IDomainEvent>(); eventRelay.RegisterRelayHandler(e => subject.OnNext(e)); EventStream = subject.AsObservable() .ObserveOn(NewThreadScheduler.Default) // Events published to stream from relay should be non blocking. Defer to IEventHandler for blocking calls. .Publish(); }
public AppNodeImpl(IDiscardableNode parentDiscardableNode) { this.discardableImpl_ = parentDiscardableNode.CreateChild(); this.discardableImpl_.OnDiscard += _ => this.Discard_(); this.listener_ = IEventFactory.INSTANCE.NewListener(this.discardableImpl_); this.downwardRelay_ = IEventFactory.INSTANCE.NewRelay(this.discardableImpl_); this.forOnTickMethod_ = new ForOnTickMethodImpl(this); }