public virtual async Task Resume(Actor actor) { Requires.NotNull(actor, nameof(actor)); var handles = await GetAllSubscriptionHandles(); if (handles.Count == 0) { return; } Debug.Assert(handles.Count == 1, "We should keep only one active subscription per-stream per-actor"); var observer = new Observer((item, token) => actor.OnReceive(item)); await handles[0].ResumeAsync(observer); }
public virtual async Task Subscribe(Actor actor, StreamFilter filter = null) { Requires.NotNull(actor, nameof(actor)); var handles = await GetAllSubscriptionHandles(); if (handles.Count == 1) { return; } Debug.Assert(handles.Count == 0, "We should keep only one active subscription per-stream per-actor"); var observer = new Observer((item, token) => actor.OnReceive(item)); var predicate = filter != null ? StreamFilter.Predicate : (StreamFilterPredicate)null; await Endpoint.SubscribeAsync(observer, null, predicate, filter); }
public Task <object> OnReceive(Actor actor, object message) => actor.OnReceive(message);