Ejemplo n.º 1
0
        /// <inheritdoc />
        public IObservable <IChangeSet <T> > Connect(Func <T, bool> predicate = null)
        {
            var observable = Observable.Create <IChangeSet <T> >(observer =>
            {
                lock (_locker)
                {
                    var initial = new ChangeSet <T>(new[] { new Change <T>(ListChangeReason.AddRange, _readerWriter.Items) });
                    if (initial.TotalChanges > 0)
                    {
                        observer.OnNext(initial);
                    }

                    var source = _changes.Finally(observer.OnCompleted);

                    return(source.SubscribeSafe(observer));
                }
            });

            if (predicate != null)
            {
                observable = new FilterStatic <T>(observable, predicate).Run();
            }

            return(observable);
        }
Ejemplo n.º 2
0
        /// <inheritdoc />
        public IObservable <IChangeSet <T> > Preview(Func <T, bool> predicate = null)
        {
            IObservable <IChangeSet <T> > observable = _changesPreview;

            if (predicate != null)
            {
                observable = new FilterStatic <T>(observable, predicate).Run();
            }

            return(observable);
        }