Aetheria/Assets/Scripts/MagicOnion/AsyncStreamReaderExtensions.cs
hyperion51 a0c8dbee72 Initial Client/Server Communication
#1
Followed the MagicOnion quickstart guide, borrowing code from the chat sample app to get something working
2020-02-26 17:48:40 +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);
}
}
}
}
}