示例#1
0
        public void Subscribe(ISubscriber <T> s)
        {
            PublishProcessorInner inner = new PublishProcessorInner(s, this);

            s.OnSubscribe(inner);

            if (Add(inner))
            {
                if (inner.IsCancelled())
                {
                    Remove(inner);
                }
            }
            else
            {
                Exception e = error;
                if (e != null)
                {
                    s.OnError(e);
                }
                else
                {
                    s.OnComplete();
                }
            }
        }
示例#2
0
 bool Add(PublishProcessorInner inner)
 {
     return(ProcessorHelper.Add(ref subscribers, inner, Terminated));
 }
示例#3
0
 void Remove(PublishProcessorInner inner)
 {
     ProcessorHelper.Remove(ref subscribers, inner, Terminated, Empty);
 }