示例#1
0
        private void CreateWriter(HttpRequestMessage message)
        {
            RequestGrpcEncoding = GrpcProtocolHelpers.GetRequestEncoding(message.Headers);
            ClientStreamWriter  = new HttpContentClientStreamWriter <TRequest, TResponse>(this);

            message.Content = new PushStreamContent <TRequest, TResponse>(ClientStreamWriter, GrpcProtocolConstants.GrpcContentTypeHeaderValue);
        }
示例#2
0
 private void SetMessageContent(TRequest request, HttpRequestMessage message)
 {
     message.Content = new PushUnaryContent <TRequest, TResponse>(
         request,
         this,
         GrpcProtocolHelpers.GetRequestEncoding(message.Headers),
         GrpcProtocolConstants.GrpcContentTypeHeaderValue);
 }
 public HttpContentClientStreamWriter(
     GrpcCall <TRequest, TResponse> call,
     HttpRequestMessage message)
 {
     _call          = call;
     WriteStreamTcs = new TaskCompletionSource <Stream>(TaskCreationOptions.RunContinuationsAsynchronously);
     CompleteTcs    = new TaskCompletionSource <bool>(TaskCreationOptions.RunContinuationsAsynchronously);
     _writeLock     = new object();
     WriteOptions   = _call.Options.WriteOptions;
     _grpcEncoding  = GrpcProtocolHelpers.GetRequestEncoding(message.Headers);
 }
 public HttpContentClientStreamWriter(
     GrpcCall <TRequest, TResponse> call,
     HttpRequestMessage message,
     Task <Stream> writeStreamTask,
     TaskCompletionSource <bool> completeTcs)
 {
     _call            = call;
     _writeStreamTask = writeStreamTask;
     _completeTcs     = completeTcs;
     _writeLock       = new object();
     WriteOptions     = _call.Options.WriteOptions;
     _grpcEncoding    = GrpcProtocolHelpers.GetRequestEncoding(message.Headers);
 }
示例#5
0
        private void SetMessageContent(TRequest request, HttpRequestMessage message)
        {
            message.Content = new PushStreamContent(
                (stream) =>
            {
                var grpcEncoding = GrpcProtocolHelpers.GetRequestEncoding(message.Headers);

                return(stream.WriteMessage <TRequest>(
                           Logger,
                           request,
                           Method.RequestMarshaller.Serializer,
                           grpcEncoding,
                           Options.CancellationToken));
            },
                GrpcProtocolConstants.GrpcContentTypeHeaderValue);
        }
示例#6
0
        private void SetMessageContent(TRequest request, HttpRequestMessage message)
        {
            RequestGrpcEncoding = GrpcProtocolHelpers.GetRequestEncoding(message.Headers);

            if (!Channel.IsWinHttp)
            {
                message.Content = new PushUnaryContent <TRequest, TResponse>(
                    request,
                    this,
                    GrpcProtocolConstants.GrpcContentTypeHeaderValue);
            }
            else
            {
                // WinHttp doesn't support streaming request data so a length needs to be specified.
                message.Content = new LengthUnaryContent <TRequest, TResponse>(
                    request,
                    this,
                    GrpcProtocolConstants.GrpcContentTypeHeaderValue);
            }
        }
示例#7
0
        private void SetMessageContent(TRequest request, HttpRequestMessage message)
        {
            message.Content = new PushStreamContent(
                (stream) =>
            {
                var grpcEncoding = GrpcProtocolHelpers.GetRequestEncoding(message.Headers);

                var writeMessageTask = stream.WriteMessageAsync <TRequest>(
                    Logger,
                    request,
                    Method.RequestMarshaller.ContextualSerializer,
                    grpcEncoding,
                    CallInvoker.SendMaxMessageSize,
                    Options.CancellationToken);
                if (writeMessageTask.IsCompletedSuccessfully)
                {
                    GrpcEventSource.Log.MessageSent();
                    return(Task.CompletedTask);
                }

                return(WriteMessageCore(writeMessageTask));
            },
                GrpcProtocolConstants.GrpcContentTypeHeaderValue);
示例#8
0
 private void SetWriter(HttpRequestMessage message, HttpContentClientStreamWriter <TRequest, TResponse> clientStreamWriter, HttpContent content)
 {
     RequestGrpcEncoding = GrpcProtocolHelpers.GetRequestEncoding(message.Headers);
     ClientStreamWriter  = clientStreamWriter;
     message.Content     = content;
 }
示例#9
0
 private void SetMessageContent(HttpContent content, HttpRequestMessage message)
 {
     RequestGrpcEncoding = GrpcProtocolHelpers.GetRequestEncoding(message.Headers);
     message.Content     = content;
 }