Class ServerStreamingBase<TResponse> (4.8.0)

public class ServerStreamingBase<TResponse> : IDisposable

Base class for server streaming RPC methods. This wraps an underlying call returned by gRPC, in order to provide a wrapper for the async response stream, allowing users to take advantage of

await foreach
support from C# 8 onwards.

Inheritance

object > ServerStreamingBase<TResponse>

Implements

IDisposable

Namespace

Google.Api.Gax.Grpc

Assembly

Google.Api.Gax.Grpc.dll

Type Parameter

Name Description
TResponse

RPC streaming response type

Remarks

To avoid memory leaks, users must dispose of gRPC streams. Additionally, you are strongly advised to read the whole response stream, even if the data is not required - this avoids effectively cancelling the call.

Properties

GrpcCall

public virtual AsyncServerStreamingCall<TResponse> GrpcCall { get; }

The underlying gRPC duplex streaming call.

Property Value
Type Description
AsyncServerStreamingCall

Methods

Dispose()

public virtual void Dispose()

Disposes of the underlying gRPC call. There is no need to dispose of both the wrapper and the underlying call; it's typically simpler to dispose of the wrapper with a

using
statement as the wrapper is returned by client libraries.
Remarks

The default implementation just calls Dispose on the result of GrpcCall.

GetResponseStream()

public virtual AsyncResponseStream<TResponse> GetResponseStream()

Async stream to read streaming responses, exposed as an async sequence. The default implementation will use GrpcCall to extract a response stream, and adapt it to AsyncResponseStream<TResponse>.

Returns
Type Description
AsyncResponseStream
Remarks

If this method is called more than once, all the returned enumerators will be enumerating over the same underlying response stream, which may cause confusion. Additionally, the sequence returned by this method can only be iterated over a single time. Attempting to iterate more than once will cause an InvalidOperationException.