Beispiel #1
0
        public Task WriteResponseMessageAsync(
            MemoryStream original,
            PipeWriter bodyWriter,
            IMethod method,
            CancellationToken token)
        {
            var methodAccessor = CreateMethodAccessor(method);
            var responseType   = methodAccessor.GetResponseType();

            if (responseType == null)
            {
                return(Task.CompletedTask);
            }

            var payload = new byte[original.Length - 5];

            Buffer.BlockCopy(original.GetBuffer(), 5, payload, 0, payload.Length);

            var response = methodAccessor.DeserializeResponse(payload);

            if (response == null)
            {
                return(Task.CompletedTask);
            }

            return(_serializer.SerializeAsync(bodyWriter.AsStream(true), response, responseType, token));
        }