Exemple #1
0
        public static void AddServerStreamingMethod <T>(ServerServiceDefinitionBuilder builder, Method <Void, T> method, Forwarder <T> forwarder) where T : class
        {
            builder.AddMethod(method, async(Void _, IServerStreamWriter <T> responseStream, ServerCallContext context) =>
            {
                await forwarder.Subscribe(async reader =>
                {
                    while (context.CancellationToken.IsCancellationRequested == false)
                    {
                        var success = false;
                        try
                        {
                            var x = await reader.ReadAsync();
                            await responseStream.WriteAsync(x);
                            success = true;
                        }
                        catch (OperationCanceledException)
                        {
                        }

                        if (success == false)
                        {
                            break;
                        }
                    }
                });
            });
        }