示例#1
0
        public void StartDuplexStreaming()
        {
            var clientStreamWriter = new HttpContentClientStreamWriter <TRequest, TResponse>(this);
            var content            = new PushStreamContent <TRequest, TResponse>(clientStreamWriter);

            StartDuplexStreamingCore(clientStreamWriter, content);
        }
示例#2
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);
        }
示例#3
0
        public void StartDuplexStreamingCore(HttpContentClientStreamWriter <TRequest, TResponse> clientStreamWriter, HttpContent content)
        {
            var timeout = GetTimeout();
            var message = CreateHttpRequestMessage(timeout);

            SetWriter(message, clientStreamWriter, content);
            ClientStreamReader = new HttpContentClientStreamReader <TRequest, TResponse>(this);
            _ = RunCall(message, timeout);
        }
示例#4
0
        internal void StartClientStreamingCore(HttpContentClientStreamWriter <TRequest, TResponse> clientStreamWriter, HttpContent content)
        {
            _responseTcs = new TaskCompletionSource <TResponse>(TaskCreationOptions.RunContinuationsAsynchronously);

            var timeout = GetTimeout();
            var message = CreateHttpRequestMessage(timeout);

            SetWriter(message, clientStreamWriter, content);
            _ = RunCall(message, timeout);
        }
示例#5
0
        private HttpContentClientStreamWriter <TRequest, TResponse> CreateWriter(HttpRequestMessage message)
        {
            _writeStreamTcs = new TaskCompletionSource <Stream>(TaskCreationOptions.RunContinuationsAsynchronously);
            _completeTcs    = new TaskCompletionSource <bool>(TaskCreationOptions.RunContinuationsAsynchronously);

            message.Content = new PushStreamContent(
                (stream) =>
            {
                _writeStreamTcs.TrySetResult(stream);
                return(_completeTcs.Task);
            },
                GrpcProtocolConstants.GrpcContentTypeHeaderValue);

            var writer = new HttpContentClientStreamWriter <TRequest, TResponse>(this, _writeStreamTcs.Task, _completeTcs);

            return(writer);
        }
示例#6
0
        private void CreateWriter(HttpRequestMessage message)
        {
            ClientStreamWriter = new HttpContentClientStreamWriter <TRequest, TResponse>(this, message);

            message.Content = new PushStreamContent <TRequest, TResponse>(ClientStreamWriter, GrpcProtocolConstants.GrpcContentTypeHeaderValue);
        }
示例#7
0
 private void SetWriter(HttpRequestMessage message, HttpContentClientStreamWriter <TRequest, TResponse> clientStreamWriter, HttpContent content)
 {
     RequestGrpcEncoding = GrpcProtocolHelpers.GetRequestEncoding(message.Headers);
     ClientStreamWriter  = clientStreamWriter;
     message.Content     = content;
 }
 public PushStreamContent(HttpContentClientStreamWriter <TRequest, TResponse> streamWriter, MediaTypeHeaderValue mediaType)
 {
     Headers.ContentType = mediaType;
     _streamWriter       = streamWriter;
 }