/// <summary> /// Marks the specified <see cref="IPromise"/> as success. If the /// <see cref="IPromise"/> is done already, logs a message. /// </summary> /// <param name="promise">The <see cref="IPromise"/> to complete.</param> /// <param name="logger">The <see cref="IInternalLogger"/> to use to log a failure message.</param> public static void SafeSetSuccess(IPromise promise, IInternalLogger logger) { if (!promise.IsVoid && !promise.TryComplete() && logger is object) { logger.FailedToMarkAPromiseAsSuccess(promise); } }
/// <summary> /// Try to mark the <see cref="IPromise"/> as success and log if <paramref name="logger"/> is not <c>null</c> in case this fails. /// </summary> /// <param name="p"></param> /// <param name="logger"></param> public static void TrySuccess(IPromise p, IInternalLogger logger) { if (!p.TryComplete() && logger is object) { logger.FailedToMarkAPromiseAsSuccess(p); } }
/// <summary> /// Marks the specified <see cref="IPromise"/> as success. If the /// <see cref="IPromise"/> is done already, logs a message. /// </summary> /// <param name="promise">The <see cref="IPromise"/> to complete.</param> /// <param name="logger">The <see cref="IInternalLogger"/> to use to log a failure message.</param> public static void SafeSetSuccess(IPromise promise, IInternalLogger logger) { if (!promise.IsVoid && !promise.TryComplete() && logger.WarnEnabled) { var err = promise.Task.Exception?.InnerException; if (err is null) { logger.FailedToMarkAPromiseAsSuccess(promise); } else { logger.FailedToMarkAPromiseAsSuccessFailed(promise, err); } } }