public Subscribe ( IActorRef subscriber, |
||
subscriber | IActorRef | The subscriber. |
channel | The channel. | |
return | bool |
public void NotAllowNullAsSubscriber() { var bus = new EventStream(true); XAssert.Throws<ArgumentNullException>(() => { bus.Subscribe(null, typeof(M)); }); }
public void ManageSubscriptions() { var bus = new EventStream(true); bus.Subscribe(TestActor, typeof(M)); bus.Publish(new M { Value = 42 }); ExpectMsg(new M { Value = 42 }); bus.Unsubscribe(TestActor); bus.Publish(new M { Value = 43 }); ExpectNoMsg(TimeSpan.FromSeconds(1)); }
public void ManageSubscriptions() { var bus = new EventStream(true); bus.StartUnsubscriber(Sys.AsInstanceOf<ActorSystemImpl>()); bus.Subscribe(TestActor, typeof(M)); bus.Publish(new M { Value = 42 }); ExpectMsg(new M { Value = 42 }); bus.Unsubscribe(TestActor); bus.Publish(new M { Value = 43 }); ExpectNoMsg(TimeSpan.FromSeconds(1)); }
public void ManageSubChannelsUsingClassesAndInterfacesUpdateOnUnsubscribeAll() { var es = new EventStream(false); var tm1 = new CC(); var tm2 = new CCATBT(); var a1 = CreateTestProbe(); var a2 = CreateTestProbe(); var a3 = CreateTestProbe(); var a4 = CreateTestProbe(); es.Subscribe(a1.Ref, typeof(AT)).ShouldBeTrue(); es.Subscribe(a2.Ref, typeof(BT)).ShouldBeTrue(); es.Subscribe(a3.Ref, typeof(CC)).ShouldBeTrue(); es.Subscribe(a4.Ref, typeof(CCATBT)).ShouldBeTrue(); es.Unsubscribe(a3.Ref).ShouldBeTrue(); es.Publish(tm1); es.Publish(tm2); a1.ExpectMsg((object)tm2); a2.ExpectMsg((object)tm2); a3.ExpectNoMsg(TimeSpan.FromSeconds(1)); a4.ExpectMsg((object)tm2); es.Unsubscribe(a1.Ref, typeof(AT)).ShouldBeTrue(); es.Unsubscribe(a2.Ref, typeof(BT)).ShouldBeTrue(); es.Unsubscribe(a3.Ref, typeof(CC)).ShouldBeFalse(); es.Unsubscribe(a4.Ref, typeof(CCATBT)).ShouldBeTrue(); }
public void ManageSubChannelsUsingClasses() { var a = new A(); var b1 = new B1(); var b2 = new B2(); var c = new C(); var bus = new EventStream(false); bus.Subscribe(TestActor, typeof(B2)); bus.Publish(c); bus.Publish(b2); ExpectMsg(b2); bus.Subscribe(TestActor, typeof(A)); bus.Publish(c); ExpectMsg(c); bus.Publish(b1); ExpectMsg(b1); bus.Unsubscribe(TestActor, typeof(B1)); bus.Publish(c); //should not publish bus.Publish(b2); //should publish bus.Publish(a); //should publish ExpectMsg(b2); ExpectMsg(a); ExpectNoMsg(TimeSpan.FromSeconds(1)); }
/// <summary> /// Subscribes the specified subscriber. /// </summary> /// <typeparam name="TChannel">The channel.</typeparam> /// <param name="eventStream">The event stream.</param> /// <param name="subscriber">The subscriber.</param> /// <returns><c>true</c> if subscription was successful, <c>false</c> otherwise.</returns> /// <exception cref="System.ArgumentNullException">subscriber</exception> public static bool Subscribe <TChannel>(this EventStream eventStream, IActorRef subscriber) { return(eventStream.Subscribe(subscriber, typeof(TChannel))); }
/// <summary> /// TBD /// </summary> protected override void PreStart() { _eventStream.Subscribe(Self, typeof(DeadLetter)); }
public void ManageSubChannelsUsingClassesAndInterfacesUpdateOnUnsubscribeAll() { var es = new EventStream(false); var tm1 = new CC(); var tm2 = new CCATBT(); var a1 = TestProbe(); var a2 = TestProbe(); var a3 = TestProbe(); var a4 = TestProbe(); es.Subscribe(a1.Ref, typeof(AT)).Then(Assert.True); es.Subscribe(a2.Ref, typeof(BT)).Then(Assert.True); es.Subscribe(a3.Ref, typeof(CC)).Then(Assert.True); es.Subscribe(a4.Ref, typeof(CCATBT)).Then(Assert.True); es.Unsubscribe(a3.Ref).Then(Assert.True); es.Publish(tm1); es.Publish(tm2); a1.expectMsg(tm2); a2.expectMsg(tm2); a3.expectNoMsg(TimeSpan.FromSeconds(1)); a4.expectMsg(tm2); es.Unsubscribe(a1.Ref, typeof(AT)).Then(Assert.True); es.Unsubscribe(a2.Ref, typeof(BT)).Then(Assert.True); es.Unsubscribe(a3.Ref, typeof(CC)).Then(Assert.False); es.Unsubscribe(a4.Ref, typeof(CCATBT)).Then(Assert.True); }
/// <summary> /// TBD /// </summary> protected override void PreStart() { _eventStream.Subscribe(Self, typeof(DeadLetter)); _eventStream.Subscribe(Self, typeof(Dropped)); _eventStream.Subscribe(Self, typeof(UnhandledMessage)); }
public void Manage_sub_channels_using_classes_and_interfaces_update_on_unsubscribe() { var es = new EventStream(false); var tm1 = new CC(); var tm2 = new CCATBT(); var a1 = CreateTestProbe(); var a2 = CreateTestProbe(); var a3 = CreateTestProbe(); var a4 = CreateTestProbe(); es.Subscribe(a1.Ref, typeof(AT)); es.Subscribe(a2.Ref, typeof(BT)); es.Subscribe(a3.Ref, typeof(CC)); es.Subscribe(a4.Ref, typeof(CCATBT)); es.Unsubscribe(a3.Ref, typeof(CC)); es.Publish(tm1); es.Publish(tm2); a1.ExpectMsg((object)tm2); a2.ExpectMsg((object)tm2); a3.ExpectNoMsg(TimeSpan.FromSeconds(1)); a4.ExpectMsg((object)tm2); es.Unsubscribe(a1.Ref, typeof(AT)).ShouldBeTrue(); es.Unsubscribe(a2.Ref, typeof(BT)).ShouldBeTrue(); es.Unsubscribe(a3.Ref, typeof(CC)).ShouldBeFalse(); es.Unsubscribe(a4.Ref, typeof(CCATBT)).ShouldBeTrue(); }