async Task CheckClientRef(Func <IClientObservable, object> buildMessage) { var actor = system.FreshActorOf <ITestActor>(); using (var observable = await system.CreateObservable()) { await actor.Tell(buildMessage(observable)); Notification @event = null; var done = new AutoResetEvent(false); var subscription = observable.Subscribe((Notification e) => { @event = e; done.Set(); }); await actor.Tell(new Publish { Text = "c-a" }); done.WaitOne(TimeSpan.FromMilliseconds(100)); Assert.That(@event.Text, Is.EqualTo("c-a")); subscription.Dispose(); await actor.Tell(new Publish { Text = "kaboom" }); done.WaitOne(TimeSpan.FromMilliseconds(100)); Assert.That(@event.Text, Is.EqualTo("c-a")); } }
public async void Client_to_actor() { var actor = system.FreshActorOf <TestActor>(); using (var observable = await system.CreateObservable()) { await actor.Tell(new Attach { Observer = observable.Ref }); Notification @event = null; var done = new AutoResetEvent(false); var subscription = observable.Subscribe((Notification e) => { @event = e; done.Set(); }); await actor.Tell(new Publish { Text = "c-a" }); done.WaitOne(TimeSpan.FromMilliseconds(100)); Assert.That(@event.Text, Is.EqualTo("c-a")); subscription.Dispose(); await actor.Tell(new Publish { Text = "kaboom" }); done.WaitOne(TimeSpan.FromMilliseconds(100)); Assert.That(@event.Text, Is.EqualTo("c-a")); } }