< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Channels.BufferManager
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Channels/BufferManager.cs
Line coverage
65%
Covered lines: 21
Uncovered lines: 11
Coverable lines: 32
Total lines: 105
Line coverage: 65.6%
Branch coverage
60%
Covered branches: 6
Total branches: 10
Branch coverage: 60%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
CreateBufferManager(...)50%4442.85%
GetInternalBufferManager(...)100%22100%
.ctor(...)100%11100%
TakeBuffer(...)50%2250%
ReturnBuffer(...)50%2275%
Clear()100%110%
.ctor(...)100%11100%
Clear()100%110%
ReturnBuffer(...)100%11100%
TakeBuffer(...)100%11100%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Channels/BufferManager.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 CoreWCF.Runtime;
 6
 7namespace CoreWCF.Channels
 8{
 9    public abstract class BufferManager
 10    {
 11        public abstract void ReturnBuffer(byte[] buffer);
 12        public abstract byte[] TakeBuffer(int bufferSize);
 13        public abstract void Clear();
 14
 15        public static BufferManager CreateBufferManager(long maxBufferPoolSize, int maxBufferSize)
 16        {
 371017            if (maxBufferPoolSize < 0)
 18            {
 019                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(maxBuff
 020                    maxBufferPoolSize, SRCommon.ValueMustBeNonNegative));
 21            }
 22
 371023            if (maxBufferSize < 0)
 24            {
 025                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(maxBuff
 026                    maxBufferSize, SRCommon.ValueMustBeNonNegative));
 27            }
 28
 371029            return new WrappingBufferManager(InternalBufferManager.Create(maxBufferPoolSize, maxBufferSize));
 30        }
 31
 32        internal static InternalBufferManager GetInternalBufferManager(BufferManager bufferManager)
 33        {
 392734            if (bufferManager is WrappingBufferManager)
 35            {
 374936                return ((WrappingBufferManager)bufferManager).InternalBufferManager;
 37            }
 38            else
 39            {
 17840                return new WrappingInternalBufferManager(bufferManager);
 41            }
 42        }
 43
 44        private class WrappingBufferManager : BufferManager
 45        {
 371046            public WrappingBufferManager(InternalBufferManager innerBufferManager)
 47            {
 371048                InternalBufferManager = innerBufferManager;
 371049            }
 50
 661651            public InternalBufferManager InternalBufferManager { get; }
 52
 53            public override byte[] TakeBuffer(int bufferSize)
 54            {
 116955                if (bufferSize < 0)
 56                {
 057                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(buf
 058                        SRCommon.ValueMustBeNonNegative));
 59                }
 60
 116961                return InternalBufferManager.TakeBuffer(bufferSize);
 62            }
 63
 64            public override void ReturnBuffer(byte[] buffer)
 65            {
 169566                if (buffer == null)
 67                {
 068                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(buffer));
 69                }
 70
 169571                InternalBufferManager.ReturnBuffer(buffer);
 169572            }
 73
 74            public override void Clear()
 75            {
 076                InternalBufferManager.Clear();
 077            }
 78        }
 79
 80        private class WrappingInternalBufferManager : InternalBufferManager
 81        {
 82            private readonly BufferManager _innerBufferManager;
 83
 17884            public WrappingInternalBufferManager(BufferManager innerBufferManager)
 85            {
 17886                _innerBufferManager = innerBufferManager;
 17887            }
 88
 89            public override void Clear()
 90            {
 091                _innerBufferManager.Clear();
 092            }
 93
 94            public override void ReturnBuffer(byte[] buffer)
 95            {
 39696                _innerBufferManager.ReturnBuffer(buffer);
 39697            }
 98
 99            public override byte[] TakeBuffer(int bufferSize)
 100            {
 574101                return _innerBufferManager.TakeBuffer(bufferSize);
 102            }
 103        }
 104    }
 105}