< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Channels.ConnectionOrientedTransportReplyChannel
Assembly: CoreWCF.NetFramingBase
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.NetFramingBase/src/CoreWCF/Channels/ConnectionOrientedTransportReplyChannel.cs
Line coverage
26%
Covered lines: 7
Uncovered lines: 19
Coverable lines: 26
Total lines: 78
Line coverage: 26.9%
Branch coverage
16%
Covered branches: 2
Total branches: 12
Branch coverage: 16.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor(...)100%11100%
TransferUpgrade(...)0%220%
OnAbort()0%220%
OnCloseAsync()0%660%
GetProperty()100%22100%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.NetFramingBase/src/CoreWCF/Channels/ConnectionOrientedTransportReplyChannel.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.Threading;
 6using System.Threading.Tasks;
 7using Microsoft.Extensions.DependencyInjection;
 8
 9namespace CoreWCF.Channels
 10{
 11    // tracks StreamUpgradeProvider so that the channel can outlive the Listener
 12    internal class ConnectionOrientedTransportReplyChannel : ReplyChannel
 13    {
 14        private StreamUpgradeProvider _upgrade;
 15        private IServiceProvider _serviceProvider;
 16
 17        public ConnectionOrientedTransportReplyChannel(ITransportFactorySettings settings, EndpointAddress localAddress,
 2818            : base(settings, localAddress)
 19        {
 2820            _serviceProvider = serviceProvider;
 2821        }
 22
 23        public bool TransferUpgrade(StreamUpgradeProvider upgrade)
 24        {
 025            lock (ThisLock)
 26            {
 027                if (State != CommunicationState.Opened)
 28                {
 029                    return false;
 30                }
 31
 032                _upgrade = upgrade;
 033                return true;
 34            }
 035        }
 36
 37        protected override void OnAbort()
 38        {
 039            if (_upgrade != null)
 40            {
 041                _upgrade.Abort();
 42            }
 043            base.OnAbort();
 044        }
 45
 46        protected override async Task OnCloseAsync(CancellationToken token)
 47        {
 048            if (_upgrade != null)
 49            {
 050                await _upgrade.CloseAsync(token);
 51            }
 52
 053            await base.OnCloseAsync(token);
 54
 055            if (_serviceProvider is IAsyncDisposable asyncDisposable)
 56            {
 057                await asyncDisposable.DisposeAsync();
 58            }
 059            else if (_serviceProvider is IDisposable disposable)
 60            {
 061                disposable.Dispose();
 62            }
 63
 064            _serviceProvider = null;
 065        }
 66
 67        public override T GetProperty<T>()
 68        {
 8469            T service = _serviceProvider.GetService<T>();
 8470            if (service == null)
 71            {
 2872                service = base.GetProperty<T>();
 73            }
 74
 8475            return service;
 76        }
 77    }
 78}