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);
});
}