UniRx 에셋 추가

This commit is contained in:
Mingu Kim
2025-06-02 00:27:36 +09:00
parent 915f292d7d
commit 8a54d47b56
510 changed files with 42973 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
using System;
namespace UniRx.Operators
{
// implements note : all field must be readonly.
public abstract class OperatorObservableBase<T> : IObservable<T>, IOptimizedObservable<T>
{
readonly bool isRequiredSubscribeOnCurrentThread;
public OperatorObservableBase(bool isRequiredSubscribeOnCurrentThread)
{
this.isRequiredSubscribeOnCurrentThread = isRequiredSubscribeOnCurrentThread;
}
public bool IsRequiredSubscribeOnCurrentThread()
{
return isRequiredSubscribeOnCurrentThread;
}
public IDisposable Subscribe(IObserver<T> observer)
{
var subscription = new SingleAssignmentDisposable();
// note:
// does not make the safe observer, it breaks exception durability.
// var safeObserver = Observer.CreateAutoDetachObserver<T>(observer, subscription);
if (isRequiredSubscribeOnCurrentThread && Scheduler.IsCurrentThreadSchedulerScheduleRequired)
{
Scheduler.CurrentThread.Schedule(() => subscription.Disposable = SubscribeCore(observer, subscription));
}
else
{
subscription.Disposable = SubscribeCore(observer, subscription);
}
return subscription;
}
protected abstract IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel);
}
}