< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Channels.ByteStreamMessage
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Channels/ByteStreamMessage.cs
Line coverage
63%
Covered lines: 133
Uncovered lines: 77
Coverable lines: 210
Total lines: 578
Line coverage: 63.3%
Branch coverage
51%
Covered branches: 30
Total branches: 58
Branch coverage: 51.7%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
CreateMessage(...)100%22100%
CreateMessage(...)100%11100%
CreateMessage(...)100%22100%
CreateMessage(...)100%11100%
CreateMessage(...)100%110%
CreateMessage(...)100%110%
CreateMessage(...)100%11100%
IsInternalByteStreamMessage(...)100%110%
.ctor(...)100%11100%
.ctor(...)100%11100%
.ctor(...)100%110%
.ctor(...)100%110%
.ctor(...)100%11100%
OnBodyToString(...)0%220%
OnClose()31.25%161641.37%
OnCreateBufferedCopy(...)100%22100%
OnGetBody(...)83.33%6692.3%
OnGetReaderAtBodyContents()100%44100%
OnWriteBodyContents(...)100%11100%
.ctor(...)100%11100%
OnCreateBufferedCopy(...)100%110%
OnWriteBodyContents(...)100%110%
.ctor()100%11100%
Create(...)100%11100%
Create(...)100%110%
Create(...)100%110%
OnCreateBufferedCopy(...)100%11100%
OnWriteBodyContents(...)100%11100%
.ctor(...)100%11100%
GetStream()100%11100%
ReleaseStream(...)100%11100%
.ctor(...)100%11100%
GetStream()100%11100%
.ctor(...)100%110%
GetStream()0%220%
OnCreateBufferedCopy(...)0%220%
.ctor(...)100%110%
GetStream()0%220%
OnCreateBufferedCopy(...)0%220%
.ctor(...)100%11100%
Close()100%44100%
CreateMessage()50%2280%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Channels/ByteStreamMessage.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System;
 5using System.IO;
 6using System.Net.Http;
 7using System.Xml;
 8using CoreWCF.Runtime;
 9
 10namespace CoreWCF.Channels
 11{
 12    public static class ByteStreamMessage
 13    {
 14        public static Message CreateMessage(Stream stream)
 15        {
 616            if (stream == null)
 17            {
 118                throw Fx.Exception.ArgumentNull(nameof(stream));
 19            }
 20
 521            return CreateMessage(stream, XmlDictionaryReaderQuotas.Max, true);
 22        }
 23
 24        public static Message CreateMessage(ArraySegment<byte> buffer)
 25        {
 726            return CreateMessage(buffer, null);
 27        }
 28
 29        public static Message CreateMessage(ArraySegment<byte> buffer, BufferManager bufferManager)
 30        {
 931            if (buffer.Array == null)
 32            {
 133                throw Fx.Exception.ArgumentNull("buffer.Array", SR.Format(SR.ArgumentPropertyShouldNotBeNullError, "buff
 34            }
 35
 836            ByteStreamBufferedMessageData data = new ByteStreamBufferedMessageData(buffer, bufferManager);
 37
 38            // moveBodyReaderToContent is true, for consistency with the other implementations of Message (including the
 839            return CreateMessage(data, XmlDictionaryReaderQuotas.Max, true);
 40        }
 41
 42        internal static Message CreateMessage(Stream stream, XmlDictionaryReaderQuotas quotas, bool moveBodyReaderToCont
 43        {
 744            return new InternalByteStreamMessage(stream, quotas, moveBodyReaderToContent);
 45        }
 46
 47        internal static Message CreateMessage(HttpRequestMessage httpRequestMessage, XmlDictionaryReaderQuotas quotas, b
 48        {
 49            // moveBodyReaderToContent is true, for consistency with the other implementations of Message (including the
 050            return new InternalByteStreamMessage(httpRequestMessage, quotas, true);
 51        }
 52
 53        internal static Message CreateMessage(HttpResponseMessage httpResponseMessage, XmlDictionaryReaderQuotas quotas)
 54        {
 55            // moveBodyReaderToContent is true, for consistency with the other implementations of Message (including the
 056            return new InternalByteStreamMessage(httpResponseMessage, quotas, true);
 57        }
 58
 59        internal static Message CreateMessage(ByteStreamBufferedMessageData bufferedMessageData, XmlDictionaryReaderQuot
 60        {
 1161            return new InternalByteStreamMessage(bufferedMessageData, quotas, moveBodyReaderToContent);
 62        }
 63
 64        internal static bool IsInternalByteStreamMessage(Message message)
 65        {
 66            Fx.Assert(message != null, "message should not be null");
 067            return message is InternalByteStreamMessage;
 68        }
 69
 70        internal class InternalByteStreamMessage : Message
 71        {
 72            private BodyWriter _bodyWriter;
 73            private readonly MessageHeaders _headers;
 74            private readonly MessageProperties _properties;
 75            private XmlByteStreamReader _reader;
 76            private bool _moveBodyReaderToContent;
 77
 1178            public InternalByteStreamMessage(ByteStreamBufferedMessageData bufferedMessageData, XmlDictionaryReaderQuota
 79            {
 80                // Assign both writer and reader here so that we can CreateBufferedCopy without the need to
 81                // abstract between a streamed or buffered message. We're protected here by the state on Message
 82                // preventing both a read/write.
 83
 1184                quotas = ByteStreamMessageUtility.EnsureQuotas(quotas);
 85
 1186                _bodyWriter = new BufferedBodyWriter(bufferedMessageData);
 1187                _headers = new MessageHeaders(MessageVersion.None);
 1188                _properties = new MessageProperties();
 1189                _reader = new XmlBufferedByteStreamReader(bufferedMessageData, quotas);
 1190                _moveBodyReaderToContent = moveBodyReaderToContent;
 1191            }
 92
 793            public InternalByteStreamMessage(Stream stream, XmlDictionaryReaderQuotas quotas, bool moveBodyReaderToConte
 94            {
 95                // Assign both writer and reader here so that we can CreateBufferedCopy without the need to
 96                // abstract between a streamed or buffered message. We're protected here by the state on Message
 97                // preventing both a read/write on the same stream.
 98
 799                quotas = ByteStreamMessageUtility.EnsureQuotas(quotas);
 100
 7101                _bodyWriter = StreamedBodyWriter.Create(stream);
 7102                _headers = new MessageHeaders(MessageVersion.None);
 7103                _properties = new MessageProperties();
 7104                _reader = XmlStreamedByteStreamReader.Create(stream, quotas);
 7105                _moveBodyReaderToContent = moveBodyReaderToContent;
 7106            }
 107
 0108            public InternalByteStreamMessage(HttpRequestMessage httpRequestMessage, XmlDictionaryReaderQuotas quotas, bo
 109            {
 110                Fx.Assert(httpRequestMessage != null, "The 'httpRequestMessage' parameter should not be null.");
 111
 112                // Assign both writer and reader here so that we can CreateBufferedCopy without the need to
 113                // abstract between a streamed or buffered message. We're protected here by the state on Message
 114                // preventing both a read/write on the same stream.
 115
 0116                quotas = ByteStreamMessageUtility.EnsureQuotas(quotas);
 117
 0118                _bodyWriter = StreamedBodyWriter.Create(httpRequestMessage);
 0119                _headers = new MessageHeaders(MessageVersion.None);
 0120                _properties = new MessageProperties();
 0121                _reader = XmlStreamedByteStreamReader.Create(httpRequestMessage, quotas);
 0122                _moveBodyReaderToContent = moveBodyReaderToContent;
 0123            }
 124
 0125            public InternalByteStreamMessage(HttpResponseMessage httpResponseMessage, XmlDictionaryReaderQuotas quotas, 
 126            {
 127                Fx.Assert(httpResponseMessage != null, "The 'httpResponseMessage' parameter should not be null.");
 128
 129                // Assign both writer and reader here so that we can CreateBufferedCopy without the need to
 130                // abstract between a streamed or buffered message. We're protected here by the state on Message
 131                // preventing both a read/write on the same stream.
 132
 0133                quotas = ByteStreamMessageUtility.EnsureQuotas(quotas);
 134
 0135                _bodyWriter = StreamedBodyWriter.Create(httpResponseMessage);
 0136                _headers = new MessageHeaders(MessageVersion.None);
 0137                _properties = new MessageProperties();
 0138                _reader = XmlStreamedByteStreamReader.Create(httpResponseMessage, quotas);
 0139                _moveBodyReaderToContent = moveBodyReaderToContent;
 0140            }
 141
 4142            private InternalByteStreamMessage(ByteStreamBufferedMessageData messageData, MessageHeaders headers, Message
 143            {
 4144                _headers = new MessageHeaders(headers);
 4145                _properties = new MessageProperties(properties);
 4146                _bodyWriter = new BufferedBodyWriter(messageData);
 4147                _reader = new XmlBufferedByteStreamReader(messageData, quotas);
 4148                _moveBodyReaderToContent = moveBodyReaderToContent;
 4149            }
 150
 151            public override MessageHeaders Headers
 152            {
 153                get
 154                {
 10155                    if (IsDisposed)
 156                    {
 0157                        throw Fx.Exception.ObjectDisposed(SR.Format(SR.ObjectDisposed, "message"));
 158                    }
 159
 10160                    return _headers;
 161                }
 162            }
 163
 164            public override bool IsEmpty
 165            {
 166                get
 167                {
 17168                    if (IsDisposed)
 169                    {
 0170                        throw Fx.Exception.ObjectDisposed(SR.Format(SR.ObjectDisposed, "message"));
 171                    }
 172
 17173                    return false;
 174                }
 175            }
 176
 177            public override bool IsFault
 178            {
 179                get
 180                {
 1181                    if (IsDisposed)
 182                    {
 0183                        throw Fx.Exception.ObjectDisposed(SR.Format(SR.ObjectDisposed, "message"));
 184                    }
 185
 1186                    return false;
 187                }
 188            }
 189
 190            public override MessageProperties Properties
 191            {
 192                get
 193                {
 33194                    if (IsDisposed)
 195                    {
 0196                        throw Fx.Exception.ObjectDisposed(SR.Format(SR.ObjectDisposed, "message"));
 197                    }
 198
 33199                    return _properties;
 200                }
 201            }
 202
 203            public override MessageVersion Version
 204            {
 205                get
 206                {
 11207                    if (IsDisposed)
 208                    {
 0209                        throw Fx.Exception.ObjectDisposed(SR.Format(SR.ObjectDisposed, "message"));
 210                    }
 211
 11212                    return MessageVersion.None;
 213                }
 214            }
 215
 216            protected override void OnBodyToString(XmlDictionaryWriter writer)
 217            {
 0218                if (_bodyWriter.IsBuffered)
 219                {
 0220                    _bodyWriter.WriteBodyContents(writer);
 221                }
 222                else
 223                {
 0224                    writer.WriteString(SR.MessageBodyIsStream);
 225                }
 0226            }
 227
 228            protected override void OnClose()
 229            {
 6230                Exception ex = null;
 231                try
 232                {
 6233                    base.OnClose();
 6234                }
 235                catch (Exception e)
 236                {
 0237                    if (Fx.IsFatal(e))
 238                    {
 0239                        throw;
 240                    }
 0241                    ex = e;
 0242                }
 243
 244                try
 245                {
 6246                    if (_properties != null)
 247                    {
 6248                        _properties.Dispose();
 249                    }
 6250                }
 0251                catch (Exception e)
 252                {
 0253                    if (Fx.IsFatal(e))
 254                    {
 0255                        throw;
 256                    }
 0257                    if (ex == null)
 258                    {
 0259                        ex = e;
 260                    }
 0261                }
 262
 263                try
 264                {
 6265                    if (_reader != null)
 266                    {
 5267                        _reader.Close();
 268                    }
 6269                }
 0270                catch (Exception e)
 271                {
 0272                    if (Fx.IsFatal(e))
 273                    {
 0274                        throw;
 275                    }
 0276                    if (ex == null)
 277                    {
 0278                        ex = e;
 279                    }
 0280                }
 281
 6282                if (ex != null)
 283                {
 0284                    throw Fx.Exception.AsError(ex);
 285                }
 286
 6287                _bodyWriter = null;
 6288            }
 289
 290            protected override MessageBuffer OnCreateBufferedCopy(int maxBufferSize)
 291            {
 292                BufferedBodyWriter bufferedBodyWriter;
 2293                if (_bodyWriter.IsBuffered)
 294                {
 295                    // Can hand this off in buffered case without making a new one.
 1296                    bufferedBodyWriter = (BufferedBodyWriter)_bodyWriter;
 297                }
 298                else
 299                {
 1300                    bufferedBodyWriter = (BufferedBodyWriter)_bodyWriter.CreateBufferedCopy(maxBufferSize);
 301                }
 302
 303                // Protected by Message state to be called only once.
 2304                _bodyWriter = null;
 2305                return new ByteStreamMessageBuffer(bufferedBodyWriter.MessageData, _headers, _properties, _reader.Quotas
 306            }
 307
 308            protected override T OnGetBody<T>(XmlDictionaryReader reader)
 309            {
 310                Fx.Assert(reader is XmlByteStreamReader, "reader should be XmlByteStreamReader");
 9311                if (IsDisposed)
 312                {
 0313                    throw Fx.Exception.ObjectDisposed(SR.Format(SR.ObjectDisposed, "message"));
 314                }
 315
 9316                Type typeT = typeof(T);
 9317                if (typeof(Stream) == typeT)
 318                {
 3319                    Stream stream = (reader as XmlByteStreamReader).ToStream();
 3320                    reader.Close();
 3321                    return (T)(object)stream;
 322                }
 6323                else if (typeof(byte[]) == typeT)
 324                {
 5325                    byte[] buffer = (reader as XmlByteStreamReader).ToByteArray();
 4326                    reader.Close();
 4327                    return (T)(object)buffer;
 328                }
 329
 1330                throw Fx.Exception.AsError(
 1331                    new NotSupportedException(SR.Format(SR.ByteStreamMessageGetTypeNotSupported, typeT.FullName)));
 332            }
 333
 334            protected override XmlDictionaryReader OnGetReaderAtBodyContents()
 335            {
 17336                XmlDictionaryReader r = _reader;
 17337                _reader = null;
 338
 17339                if ((r != null) && _moveBodyReaderToContent)
 340                {
 15341                    r.MoveToContent();
 342                }
 343
 17344                return r;
 345            }
 346
 347            protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
 348            {
 1349                _bodyWriter.WriteBodyContents(writer);
 1350            }
 351
 352            internal class BufferedBodyWriter : BodyWriter
 353            {
 354                public BufferedBodyWriter(ByteStreamBufferedMessageData bufferedMessageData)
 16355                    : base(true)
 356                {
 16357                    MessageData = bufferedMessageData;
 16358                }
 359
 2360                internal ByteStreamBufferedMessageData MessageData { get; }
 361
 362                protected override BodyWriter OnCreateBufferedCopy(int maxBufferSize)
 363                {
 364                    // Never called because when copying a Buffered message, we simply hand off the existing BodyWriter
 365                    // to the new message.
 366                    Fx.Assert(false, "This is never called");
 0367                    return null;
 368                }
 369
 370                protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
 371                {
 0372                    writer.WriteStartElement(ByteStreamMessageUtility.StreamElementName, string.Empty);
 0373                    writer.WriteBase64(MessageData.Buffer.Array, MessageData.Buffer.Offset, MessageData.Buffer.Count);
 0374                    writer.WriteEndElement();
 0375                }
 376            }
 377
 378            internal abstract class StreamedBodyWriter : BodyWriter
 379            {
 380                private StreamedBodyWriter()
 7381                    : base(false)
 382                {
 7383                }
 384
 7385                public static StreamedBodyWriter Create(Stream stream) => new StreamBasedStreamedBodyWriter(stream);
 386
 0387                public static StreamedBodyWriter Create(HttpRequestMessage httpRequestMessage) => new HttpRequestMessage
 388
 0389                public static StreamedBodyWriter Create(HttpResponseMessage httpResponseMessage) => new HttpResponseMess
 390
 391                // OnCreateBufferedCopy / OnWriteBodyContents can only be called once - protected by state on Message (e
 392                protected override BodyWriter OnCreateBufferedCopy(int maxBufferSize)
 393                {
 1394                    using (BufferManagerOutputStream bufferedStream = new BufferManagerOutputStream(SR.MaxReceivedMessag
 395                    {
 1396                        using (XmlDictionaryWriter writer = new XmlByteStreamWriter(bufferedStream, true))
 397                        {
 1398                            OnWriteBodyContents(writer);
 1399                            writer.Flush();
 1400                            byte[] bytesArray = bufferedStream.ToArray(out int size);
 1401                            ByteStreamBufferedMessageData bufferedMessageData = new ByteStreamBufferedMessageData(new Ar
 1402                            return new BufferedBodyWriter(bufferedMessageData);
 403                        }
 404                    }
 1405                }
 406
 407                // OnCreateBufferedCopy / OnWriteBodyContents can only be called once - protected by state on Message (e
 408                protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
 409                {
 2410                    writer.WriteStartElement(ByteStreamMessageUtility.StreamElementName, string.Empty);
 2411                    writer.WriteValue(new ByteStreamStreamProvider(GetStream()));
 2412                    writer.WriteEndElement();
 2413                }
 414
 415                protected abstract Stream GetStream();
 416
 417                internal class ByteStreamStreamProvider : IStreamProvider
 418                {
 419                    private readonly Stream _stream;
 420
 2421                    internal ByteStreamStreamProvider(Stream stream)
 422                    {
 2423                        _stream = stream;
 2424                    }
 425
 2426                    public Stream GetStream() => _stream;
 427
 428                    public void ReleaseStream(Stream stream)
 429                    {
 430                        //Noop
 2431                    }
 432                }
 433
 434                internal class StreamBasedStreamedBodyWriter : StreamedBodyWriter
 435                {
 436                    private Stream _stream;
 437
 7438                    public StreamBasedStreamedBodyWriter(Stream stream)
 439                    {
 7440                        _stream = stream;
 7441                    }
 442
 2443                    protected override Stream GetStream() => _stream;
 444                }
 445
 446                internal class HttpRequestMessageStreamedBodyWriter : StreamedBodyWriter
 447                {
 448                    private readonly HttpRequestMessage _httpRequestMessage;
 449
 0450                    public HttpRequestMessageStreamedBodyWriter(HttpRequestMessage httpRequestMessage)
 451                    {
 452                        Fx.Assert(httpRequestMessage != null, "The 'httpRequestMessage' parameter should not be null.");
 453
 0454                        _httpRequestMessage = httpRequestMessage;
 0455                    }
 456
 457                    protected override Stream GetStream()
 458                    {
 0459                        HttpContent content = _httpRequestMessage.Content;
 0460                        if (content != null)
 461                        {
 0462                            return content.ReadAsStreamAsync().Result;
 463                        }
 464
 0465                        return new MemoryStream(Array.Empty<byte>());
 466                    }
 467
 468                    protected override BodyWriter OnCreateBufferedCopy(int maxBufferSize)
 469                    {
 0470                        HttpContent content = _httpRequestMessage.Content;
 0471                        if (content != null)
 472                        {
 0473                            content.LoadIntoBufferAsync(maxBufferSize).Wait();
 474                        }
 475
 0476                        return base.OnCreateBufferedCopy(maxBufferSize);
 477                    }
 478                }
 479
 480                internal class HttpResponseMessageStreamedBodyWriter : StreamedBodyWriter
 481                {
 482                    private readonly HttpResponseMessage _httpResponseMessage;
 483
 0484                    public HttpResponseMessageStreamedBodyWriter(HttpResponseMessage httpResponseMessage)
 485                    {
 486                        Fx.Assert(httpResponseMessage != null, "The 'httpResponseMessage' parameter should not be null."
 487
 0488                        _httpResponseMessage = httpResponseMessage;
 0489                    }
 490
 491                    protected override Stream GetStream()
 492                    {
 0493                        HttpContent content = _httpResponseMessage.Content;
 0494                        if (content != null)
 495                        {
 0496                            return content.ReadAsStreamAsync().Result;
 497                        }
 498
 0499                        return new MemoryStream(Array.Empty<byte>());
 500                    }
 501
 502                    protected override BodyWriter OnCreateBufferedCopy(int maxBufferSize)
 503                    {
 0504                        HttpContent content = _httpResponseMessage.Content;
 0505                        if (content != null)
 506                        {
 0507                            content.LoadIntoBufferAsync(maxBufferSize).Wait();
 508                        }
 509
 0510                        return base.OnCreateBufferedCopy(maxBufferSize);
 511                    }
 512                }
 513            }
 514
 515            internal class ByteStreamMessageBuffer : MessageBuffer
 516            {
 517                private bool _closed;
 518                private MessageHeaders _headers;
 519                private ByteStreamBufferedMessageData _messageData;
 520                private MessageProperties _properties;
 521                private XmlDictionaryReaderQuotas _quotas;
 522                private bool _moveBodyReaderToContent;
 523
 524                public ByteStreamMessageBuffer(ByteStreamBufferedMessageData messageData, MessageHeaders headers, Messag
 2525                    : base()
 526                {
 2527                    _messageData = messageData;
 2528                    _headers = new MessageHeaders(headers);
 2529                    _properties = new MessageProperties(properties);
 2530                    _quotas = new XmlDictionaryReaderQuotas();
 2531                    quotas.CopyTo(_quotas);
 2532                    _moveBodyReaderToContent = moveBodyReaderToContent;
 533
 2534                    _messageData.Open();
 2535                }
 536
 0537                public override int BufferSize => _messageData.Buffer.Count;
 538
 8539                private object ThisLock { get; } = new object();
 540
 541                public override void Close()
 542                {
 2543                    lock (ThisLock)
 544                    {
 2545                        if (!_closed)
 546                        {
 2547                            _closed = true;
 2548                            _headers = null;
 549
 2550                            if (_properties != null)
 551                            {
 2552                                _properties.Dispose();
 2553                                _properties = null;
 554                            }
 555
 2556                            _messageData.Close();
 2557                            _messageData = null;
 2558                            _quotas = null;
 559                        }
 2560                    }
 2561                }
 562
 563                public override Message CreateMessage()
 564                {
 4565                    lock (ThisLock)
 566                    {
 4567                        if (_closed)
 568                        {
 0569                            throw Fx.Exception.ObjectDisposed(SR.Format(SR.ObjectDisposed, "message"));
 570                        }
 571
 4572                        return new InternalByteStreamMessage(_messageData, _headers, _properties, _quotas, _moveBodyRead
 573                    }
 4574                }
 575            }
 576        }
 577    }
 578}

Methods/Properties

CreateMessage(System.IO.Stream)
CreateMessage(System.ArraySegment`1<System.Byte>)
CreateMessage(System.ArraySegment`1<System.Byte>,CoreWCF.Channels.BufferManager)
CreateMessage(System.IO.Stream,System.Xml.XmlDictionaryReaderQuotas,System.Boolean)
CreateMessage(System.Net.Http.HttpRequestMessage,System.Xml.XmlDictionaryReaderQuotas,System.Boolean)
CreateMessage(System.Net.Http.HttpResponseMessage,System.Xml.XmlDictionaryReaderQuotas)
CreateMessage(CoreWCF.Channels.ByteStreamBufferedMessageData,System.Xml.XmlDictionaryReaderQuotas,System.Boolean)
IsInternalByteStreamMessage(CoreWCF.Channels.Message)
.ctor(CoreWCF.Channels.ByteStreamBufferedMessageData,System.Xml.XmlDictionaryReaderQuotas,System.Boolean)
.ctor(System.IO.Stream,System.Xml.XmlDictionaryReaderQuotas,System.Boolean)
.ctor(System.Net.Http.HttpRequestMessage,System.Xml.XmlDictionaryReaderQuotas,System.Boolean)
.ctor(System.Net.Http.HttpResponseMessage,System.Xml.XmlDictionaryReaderQuotas,System.Boolean)
.ctor(CoreWCF.Channels.ByteStreamBufferedMessageData,CoreWCF.Channels.MessageHeaders,CoreWCF.Channels.MessageProperties,System.Xml.XmlDictionaryReaderQuotas,System.Boolean)
Headers()
IsEmpty()
IsFault()
Properties()
Version()
OnBodyToString(System.Xml.XmlDictionaryWriter)
OnClose()
OnCreateBufferedCopy(System.Int32)
OnGetBody(System.Xml.XmlDictionaryReader)
OnGetReaderAtBodyContents()
OnWriteBodyContents(System.Xml.XmlDictionaryWriter)
.ctor(CoreWCF.Channels.ByteStreamBufferedMessageData)
MessageData()
OnCreateBufferedCopy(System.Int32)
OnWriteBodyContents(System.Xml.XmlDictionaryWriter)
.ctor()
Create(System.IO.Stream)
Create(System.Net.Http.HttpRequestMessage)
Create(System.Net.Http.HttpResponseMessage)
OnCreateBufferedCopy(System.Int32)
OnWriteBodyContents(System.Xml.XmlDictionaryWriter)
.ctor(System.IO.Stream)
GetStream()
ReleaseStream(System.IO.Stream)
.ctor(System.IO.Stream)
GetStream()
.ctor(System.Net.Http.HttpRequestMessage)
GetStream()
OnCreateBufferedCopy(System.Int32)
.ctor(System.Net.Http.HttpResponseMessage)
GetStream()
OnCreateBufferedCopy(System.Int32)
.ctor(CoreWCF.Channels.ByteStreamBufferedMessageData,CoreWCF.Channels.MessageHeaders,CoreWCF.Channels.MessageProperties,System.Xml.XmlDictionaryReaderQuotas,System.Boolean)
BufferSize()
ThisLock()
Close()
CreateMessage()