< Summary

Information
Class: CounterpointCollective.Dataflow.Encapsulation.AbstractEncapsulatedSourceBlock<T>
Assembly: Dataflow.Fluent
File(s): /builds/counterpointcollective/composabledataflowblocks/Source/Dataflow.Fluent/Dataflow/Encapsulation/EncapsulatedSourceBlock.cs
Line coverage
73%
Covered lines: 11
Uncovered lines: 4
Coverable lines: 15
Total lines: 67
Line coverage: 73.3%
Branch coverage
50%
Covered branches: 2
Total branches: 4
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Complete()100%11100%
Fault(...)100%11100%
get_Completion()100%11100%
ConsumeMessage(...)100%11100%
LinkTo(...)100%11100%
ReleaseReservation(...)100%11100%
ReserveMessage(...)100%11100%
TryReceive(...)50%3250%
TryReceiveAll(...)50%3250%

File(s)

/builds/counterpointcollective/composabledataflowblocks/Source/Dataflow.Fluent/Dataflow/Encapsulation/EncapsulatedSourceBlock.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Diagnostics.CodeAnalysis;
 4using System.Threading.Tasks;
 5using System.Threading.Tasks.Dataflow;
 6
 7namespace CounterpointCollective.Dataflow.Encapsulation
 8{
 9    /// <exclude />
 10    public sealed class EncapsulatedSourceBlock<T>(IDataflowBlock completeSide, ISourceBlock<T> sourceSide) : AbstractEn
 11    {
 12        protected override IDataflowBlock CompleteSide { get; } = completeSide;
 13        protected override ISourceBlock<T> SourceSide { get; } = sourceSide;
 14    }
 15
 16    /// <exclude />
 17    public abstract class AbstractEncapsulatedSourceBlock<T>: IReceivableSourceBlock<T>
 18    {
 19        protected abstract IDataflowBlock CompleteSide { get; }
 20        protected abstract ISourceBlock<T> SourceSide { get; }
 21
 22
 23        public virtual void Complete()
 3824            => CompleteSide.Complete();
 25
 26        public virtual void Fault(Exception exception)
 1627            => CompleteSide.Fault(exception);
 28
 29        public virtual Task Completion
 32444330            => SourceSide.Completion;
 31
 32
 33        public T? ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target, out bool messageConsumed) 
 2134            SourceSide.ConsumeMessage(messageHeader, target, out messageConsumed);
 35
 36        public IDisposable LinkTo(ITargetBlock<T> target, DataflowLinkOptions linkOptions)
 54737            => SourceSide.LinkToWithCustomCompletion(Completion, target, linkOptions);
 38
 39        public void ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
 240            => SourceSide.ReleaseReservation(messageHeader, target);
 41
 42        public bool ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
 2343            => SourceSide.ReserveMessage(messageHeader, target);
 44
 45        public virtual bool TryReceive(Predicate<T>? filter, [MaybeNullWhen(false)] out T item)
 46        {
 1473447            if (SourceSide is IReceivableSourceBlock<T> receivableSource)
 48            {
 1473449                return receivableSource.TryReceive(filter, out item);
 50            }
 51
 052            item = default;
 053            return false;
 54        }
 55
 56        public virtual bool TryReceiveAll([NotNullWhen(true)] out IList<T>? items)
 57        {
 84058            if (SourceSide is IReceivableSourceBlock<T> receivableSource)
 59            {
 84060                return receivableSource.TryReceiveAll(out items);
 61            }
 62
 063            items = default;
 064            return false;
 65        }
 66    }
 67}