< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Queue.Common.QueueMessageContext
Assembly: CoreWCF.Queue
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Queue/src/CoreWCF/Queue/Common/QueueMessageContext.cs
Line coverage
90%
Covered lines: 28
Uncovered lines: 3
Coverable lines: 31
Total lines: 112
Line coverage: 90.3%
Branch coverage
80%
Covered branches: 8
Total branches: 10
Branch coverage: 80%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor()100%11100%
OnRequestMessageSet(...)100%11100%
SetRequestMessage(...)100%22100%
SetRequestMessage(...)100%11100%
Abort()100%11100%
ReplyAsync(...)75%44100%
ReplyAsync(...)100%110%
CloseAsync()100%11100%
CloseAsync(...)100%110%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Queue/src/CoreWCF/Queue/Common/QueueMessageContext.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.Collections.Generic;
 6using System.IO.Pipelines;
 7using System.Threading;
 8using System.Threading.Tasks;
 9using CoreWCF.Channels;
 10using CoreWCF.Runtime;
 11
 12namespace CoreWCF.Queue.Common
 13{
 14    public class QueueMessageContext : RequestContext
 15    {
 344116        public PipeReader QueueMessageReader { get; set; }
 241617        public virtual IDictionary<string, object> Properties { get { return _properties.Value; } }
 18        private Message _requestMessage;
 19        private Exception _requestMessageException;
 20        private ReceiveContext _receiveContext;
 181721        private readonly Lazy<Dictionary<string, object>> _properties = new();
 22
 23        public override Message RequestMessage
 24        {
 25            get
 26            {
 515427                if (_requestMessageException != null)
 28                {
 4529                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(_requestMessageException);
 30                }
 31
 510932                return _requestMessage;
 33            }
 34        }
 35
 36        public virtual ReceiveContext ReceiveContext
 37        {
 38            get
 39            {
 1640                return _receiveContext;
 41            }
 42            set
 43            {
 171944                _receiveContext = value;
 171945                if (_requestMessage != null)
 46                {
 47                    // Attach _receiveContext to the message
 048                    SetRequestMessage(_requestMessage);
 49                }
 171950            }
 51        }
 52
 53        protected virtual void OnRequestMessageSet(Message message)
 54        {
 55
 99556        }
 57
 58        internal void SetRequestMessage(Message requestMessage)
 59        {
 60            Fx.Assert(_requestMessageException == null, "Cannot have both a requestMessage and a requestException.");
 61
 170362            if (_receiveContext != null)
 63            {
 170364                requestMessage.Properties[ReceiveContext.Name] = _receiveContext;
 65            }
 66
 170367            _requestMessage = requestMessage;
 170368            OnRequestMessageSet(_requestMessage);
 170369        }
 70
 71        internal void SetRequestMessage(Exception requestMessageException)
 72        {
 73            Fx.Assert(_requestMessage == null, "Cannot have both a requestMessage and a requestException.");
 1574            _requestMessageException = requestMessageException;
 1575        }
 76
 868977        public QueueTransportContext QueueTransportContext { get; set; }
 296978        public EndpointAddress LocalAddress { get; set; }
 79
 80        public override void Abort()
 81        {
 5482            _requestMessage.Close();
 5483        }
 84
 85        public override Task ReplyAsync(Message message)
 86        {
 171887            if (message != null)
 88            {
 1589                return message.IsFault
 1590                    ? ReceiveContext.AbandonAsync(default)
 1591                    : ReceiveContext.CompleteAsync(default);
 92            }
 93
 170394            return Task.CompletedTask;
 95        }
 96
 97        public override Task ReplyAsync(Message message, CancellationToken token)
 98        {
 099            return ReplyAsync(message);
 100        }
 101
 102        public override Task CloseAsync()
 103        {
 1650104            return Task.CompletedTask;
 105        }
 106
 107        public override Task CloseAsync(CancellationToken token)
 108        {
 0109            return Task.CompletedTask;
 110        }
 111    }
 112}