mfgames-cil/examples/NitridePipelines/Pipelines/DelayPipeline1.cs

40 lines
967 B
C#

using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MfGames.Gallium;
using MfGames.Nitride.Pipelines;
using Serilog;
using Zio;
namespace NitridePipelines.Pipelines;
public class DelayPipeline1 : PipelineBase
{
private readonly ILogger logger;
public DelayPipeline1(ILogger logger, InputPipeline1 input1)
{
this.logger = logger.ForContext<DelayPipeline1>();
this.AddDependency(input1);
}
/// <inheritdoc />
public override IAsyncEnumerable<Entity> RunAsync(
IEnumerable<Entity> entities,
CancellationToken cancellationToken = default
)
{
entities = entities.Select(entity =>
{
Task.Delay(1000, cancellationToken).Wait(cancellationToken);
this.logger.Information("Delayed {Value}", entity.Get<UPath>());
return entity;
});
return entities.ToAsyncEnumerable();
}
}