Browse Source

Optimize Catch layout.

Bart De Smet 8 years ago
parent
commit
e3801c14ff
1 changed files with 13 additions and 13 deletions
  1. 13 13
      Rx.NET/Source/src/System.Reactive/Linq/Observable/Catch.cs

+ 13 - 13
Rx.NET/Source/src/System.Reactive/Linq/Observable/Catch.cs

@@ -23,7 +23,7 @@ namespace System.Reactive.Linq.ObservableImpl
             return sink.Run(_sources);
         }
 
-        class _ : TailRecursiveSink<TSource>
+        private sealed class _ : TailRecursiveSink<TSource>
         {
             public _(IObserver<TSource> observer, IDisposable cancel)
                 : base(observer, cancel)
@@ -94,30 +94,30 @@ namespace System.Reactive.Linq.ObservableImpl
 
         protected override IDisposable Run(IObserver<TSource> observer, IDisposable cancel, Action<IDisposable> setSink)
         {
-            var sink = new _(this, observer, cancel);
+            var sink = new _(_handler, observer, cancel);
             setSink(sink);
-            return sink.Run();
+            return sink.Run(_source);
         }
 
-        class _ : Sink<TSource>, IObserver<TSource>
+        private sealed class _ : Sink<TSource>, IObserver<TSource>
         {
-            private readonly Catch<TSource, TException> _parent;
+            private readonly Func<TException, IObservable<TSource>> _handler;
 
-            public _(Catch<TSource, TException> parent, IObserver<TSource> observer, IDisposable cancel)
+            public _(Func<TException, IObservable<TSource>> handler, IObserver<TSource> observer, IDisposable cancel)
                 : base(observer, cancel)
             {
-                _parent = parent;
+                _handler = handler;
             }
 
             private SerialDisposable _subscription;
 
-            public IDisposable Run()
+            public IDisposable Run(IObservable<TSource> source)
             {
                 _subscription = new SerialDisposable();
 
                 var d1 = new SingleAssignmentDisposable();
                 _subscription.Disposable = d1;
-                d1.Disposable = _parent._source.SubscribeSafe(this);
+                d1.Disposable = source.SubscribeSafe(this);
 
                 return _subscription;
             }
@@ -135,7 +135,7 @@ namespace System.Reactive.Linq.ObservableImpl
                     var result = default(IObservable<TSource>);
                     try
                     {
-                        result = _parent._handler(e);
+                        result = _handler(e);
                     }
                     catch (Exception ex)
                     {
@@ -146,7 +146,7 @@ namespace System.Reactive.Linq.ObservableImpl
 
                     var d = new SingleAssignmentDisposable();
                     _subscription.Disposable = d;
-                    d.Disposable = result.SubscribeSafe(new Impl(this));
+                    d.Disposable = result.SubscribeSafe(new HandlerObserver(this));
                 }
                 else
                 {
@@ -161,11 +161,11 @@ namespace System.Reactive.Linq.ObservableImpl
                 base.Dispose();
             }
 
-            class Impl : IObserver<TSource>
+            private sealed class HandlerObserver : IObserver<TSource>
             {
                 private readonly _ _parent;
 
-                public Impl(_ parent)
+                public HandlerObserver(_ parent)
                 {
                     _parent = parent;
                 }