diff options
author | 2015-08-06 21:30:26 -0700 | |
---|---|---|
committer | 2015-08-07 17:36:05 -0700 | |
commit | bff90ac384cd19186e4ccde629ad8c6b7a17cd5d (patch) | |
tree | a4b7fdf312ff519b7c94883c7f9b29ab30482b44 /src/csharp/Grpc.Core/Internal/ServerResponseStream.cs | |
parent | c29812fc2c9285046a886a0c3a29127679c4b02b (diff) |
added WriteOptions support and enabled NoCompress flag to be used for all writes
Diffstat (limited to 'src/csharp/Grpc.Core/Internal/ServerResponseStream.cs')
-rw-r--r-- | src/csharp/Grpc.Core/Internal/ServerResponseStream.cs | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs b/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs index 756dcee87f..1d79241f77 100644 --- a/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs +++ b/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs @@ -38,11 +38,12 @@ namespace Grpc.Core.Internal /// <summary> /// Writes responses asynchronously to an underlying AsyncCallServer object. /// </summary> - internal class ServerResponseStream<TRequest, TResponse> : IServerStreamWriter<TResponse> + internal class ServerResponseStream<TRequest, TResponse> : IServerStreamWriter<TResponse>, IHasWriteOptions where TRequest : class where TResponse : class { readonly AsyncCallServer<TRequest, TResponse> call; + WriteOptions writeOptions; public ServerResponseStream(AsyncCallServer<TRequest, TResponse> call) { @@ -52,15 +53,33 @@ namespace Grpc.Core.Internal public Task WriteAsync(TResponse message) { var taskSource = new AsyncCompletionTaskSource<object>(); - call.StartSendMessage(message, taskSource.CompletionDelegate); + call.StartSendMessage(message, GetWriteFlags(), taskSource.CompletionDelegate); return taskSource.Task; } public Task WriteStatusAsync(Status status, Metadata trailers) { var taskSource = new AsyncCompletionTaskSource<object>(); - call.StartSendStatusFromServer(status, trailers, taskSource.CompletionDelegate); + call.StartSendStatusFromServer(status, trailers, GetWriteFlags(), taskSource.CompletionDelegate); return taskSource.Task; } + + public WriteOptions WriteOptions + { + get + { + return writeOptions; + } + set + { + writeOptions = value; + } + } + + private WriteFlags GetWriteFlags() + { + var options = writeOptions; + return options != null ? options.Flags : default(WriteFlags); + } } } |