Files
crtr/Assets/Cryville/Common/AsyncDelivery.cs

33 lines
868 B
C#

using System;
namespace Cryville.Common {
/// <summary>
/// Represents a cancellable asynchronized task.
/// </summary>
/// <typeparam name="T"></typeparam>
public class AsyncDelivery<T> {
/// <summary>
/// The delegate to cancel the task.
/// </summary>
public Action CancelSource { private get; set; }
/// <summary>
/// The delegate to call on task completion.
/// </summary>
public Action<bool, T> Destination { private get; set; }
/// <summary>
/// Delivers the result to the destination.
/// </summary>
/// <param name="succeeded">Whether the task has succeeded.</param>
/// <param name="result">The result.</param>
public void Deliver(bool succeeded, T result) {
Destination?.Invoke(succeeded, result);
}
/// <summary>
/// Cancels the task.
/// </summary>
public void Cancel() {
CancelSource?.Invoke();
}
}
}