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(); } } }
bool Add(PublishProcessorInner inner) { return(ProcessorHelper.Add(ref subscribers, inner, Terminated)); }
void Remove(PublishProcessorInner inner) { ProcessorHelper.Remove(ref subscribers, inner, Terminated, Empty); }