Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 public Task <object> OnReceive(Actor actor, object message) => actor.OnReceive(message);