public static IObservable Debug()

in src/Covi/Utils/Observables/DebugObservable.cs [20:47]


        public static IObservable<T> Debug<T>(this IObservable<T> source, string tag = null)
        {
            var id = !string.IsNullOrEmpty(tag) ? tag : source.GetHashCode().ToString();
            Console.WriteLine($"{id}: Observable created on threadId: {System.Threading.Thread.CurrentThread.ManagedThreadId.ToString()}.");

            return Observable.Create<T>(obs =>
                                        {
                                            Console.WriteLine(
                                                $"{id}: DebugObservable subscribed on threadId: {System.Threading.Thread.CurrentThread.ManagedThreadId.ToString()}.");

                                            var subscription = source
                                                               .Do(
                                                                   value =>
                                                                       Console.WriteLine(
                                                                       $"{id}: OnNext({value?.ToString() ?? "<null>"}) on ThreadId: {System.Threading.Thread.CurrentThread.ManagedThreadId.ToString()}."),
                                                                   ex =>
                                                                       Console.WriteLine(
                                                                       $"{id}: OnError({ex}) on ThreadId: {System.Threading.Thread.CurrentThread.ManagedThreadId.ToString()}."),
                                                                   () =>
                                                                       Console.WriteLine(
                                                                       $"{id}: OnCompleted on ThreadId: {System.Threading.Thread.CurrentThread.ManagedThreadId.ToString()}."))
                                                               .Subscribe(obs);
                                            var dumpDisposable = Disposable.Create(() =>
                                                                                       Console.WriteLine(
                                                                                           $"{id}: Disposed on ThreadId: {System.Threading.Thread.CurrentThread.ManagedThreadId.ToString()}."));
                                            return new CompositeDisposable(subscription, dumpDisposable);
                                        });
        }