Aetheria/Assets/Scripts/NIH/MagicOnion/AsyncStreamReaderExtensions.cs
hyperion51 c58ba0b1da Copy Aetheria Code
Added a bunch of code from the old Aetheria project
2020-02-27 18:51:07 +00:00

35 lines
1.1 KiB
C#

using Grpc.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace MagicOnion
{
public static class AsyncStreamReaderExtensions
{
public static async Task ForEachAsync<T>(this IAsyncStreamReader<T> stream, Action<T> action, CancellationToken cancellation = default(CancellationToken))
{
using (stream as IDisposable)
{
while (!cancellation.IsCancellationRequested && await stream.MoveNext(cancellation))
{
action(stream.Current);
}
}
}
public static async Task ForEachAsync<T>(this IAsyncStreamReader<T> stream, Func<T, Task> asyncAction, CancellationToken cancellation = default(CancellationToken))
{
using (stream as IDisposable)
{
while (!cancellation.IsCancellationRequested && await stream.MoveNext(cancellation))
{
await asyncAction(stream.Current);
}
}
}
}
}