using System; using System.Threading.Tasks; namespace Wabbajack.Common.CSP { class PutTaskHandler<T> : Handler<Action<bool>> { private readonly bool _blockable; private TaskCompletionSource<bool> _tcs = new TaskCompletionSource<bool>(); public PutTaskHandler(bool blockable = true) { _blockable = blockable; } public TaskCompletionSource<bool> TaskCompletionSource { get { if (_tcs == null) _tcs = new TaskCompletionSource<bool>(); return _tcs; } } public bool IsActive => true; public bool IsBlockable => _blockable; public uint LockId => 0; public Action<bool> Commit() { return Handle; } private void Handle(bool val) { TaskCompletionSource.SetResult(val); } } }