Files
UnrealEngineUWP/Engine/Source/Programs/Horde/HordeServer/Notifications/INotificationSink.cs

92 lines
3.3 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using HordeCommon;
using HordeServer.Api;
using HordeServer.Models;
using MongoDB.Bson;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace HordeServer.Notifications
{
/// <summary>
/// Implements a notification method
/// </summary>
public interface INotificationSink
{
/// <summary>
/// Send notifications that a job has completed
/// </summary>
/// <param name="JobStream"></param>
/// <param name="Job">The job containing the step</param>
/// <param name="Graph"></param>
/// <param name="Outcome"></param>
/// <returns>Async task</returns>
Task NotifyJobCompleteAsync(IStream JobStream, IJob Job, IGraph Graph, LabelOutcome Outcome);
/// <summary>
/// Send notifications that a job has completed
/// </summary>
/// <param name="User">User to notify</param>
/// <param name="JobStream"></param>
/// <param name="Job">The job containing the step</param>
/// <param name="Graph"></param>
/// <param name="Outcome"></param>
/// <returns>Async task</returns>
Task NotifyJobCompleteAsync(IUser User, IStream JobStream, IJob Job, IGraph Graph, LabelOutcome Outcome);
/// <summary>
/// Send notifications that a job step has completed
/// </summary>
/// <param name="User">User to notify</param>
/// <param name="JobStream">Stream containing the job</param>
/// <param name="Job">The job containing the step</param>
/// <param name="Batch">Unique id of the batch</param>
/// <param name="Step">The step id</param>
/// <param name="Node">Corresponding node for the step</param>
/// <param name="JobStepEventData"></param>
/// <returns>Async task</returns>
Task NotifyJobStepCompleteAsync(IUser User, IStream JobStream, IJob Job, IJobStepBatch Batch, IJobStep Step, INode Node, List<ILogEventData> JobStepEventData);
/// <summary>
/// Send notifications that a job step has completed
/// </summary>
/// <param name="User">User to notify</param>
/// <param name="Job">The job containing the step</param>
/// <param name="Stream"></param>
/// <param name="Label"></param>
/// <param name="LabelIdx"></param>
/// <param name="Outcome"></param>
/// <param name="StepData"></param>
/// <returns>Async task</returns>
Task NotifyLabelCompleteAsync(IUser User, IJob Job, IStream Stream, ILabel Label, int LabelIdx, LabelOutcome Outcome, List<(string, JobStepOutcome, Uri)> StepData);
/// <summary>
/// Send notifications that a new issue has been created or assigned
/// </summary>
/// <param name="Issue"></param>
/// <returns></returns>
Task NotifyIssueUpdatedAsync(IIssue Issue);
/// <summary>
/// Notification that a stream has failed to update
/// </summary>
/// <param name="Stream"></param>
/// <param name="ErrorMessage"></param>
/// <param name="Change"></param>
/// <param name="Author"></param>
/// <param name="Description"></param>
/// <returns></returns>
Task NotifyStreamUpdateFailedAsync(IStream Stream, string ErrorMessage, int Change, IUser? Author = null, string? Description = null);
/// <summary>
/// Notification that a stream has failed to update
/// </summary>
/// <param name="File"></param>
/// <returns></returns>
Task NotifyStreamUpdateFailedAsync(FileSummary File);
}
}