< Summary

Information
Class: IceRpc.EmptyPipeReader
Assembly: IceRpc
File(s): /home/runner/work/icerpc-csharp/icerpc-csharp/src/IceRpc/EmptyPipeReader.cs
Tag: 1321_24790053727
Line coverage
78%
Covered lines: 15
Uncovered lines: 4
Coverable lines: 19
Total lines: 58
Line coverage: 78.9%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage
75%
Covered methods: 6
Fully covered methods: 5
Total methods: 8
Method coverage: 75%
Full method coverage: 62.5%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Instance()100%11100%
.ctor()100%11100%
AdvanceTo(...)100%11100%
AdvanceTo(...)100%210%
CancelPendingRead()100%210%
Complete(...)100%11100%
ReadAsync(...)100%11100%
TryRead(...)100%11100%

File(s)

/home/runner/work/icerpc-csharp/icerpc-csharp/src/IceRpc/EmptyPipeReader.cs

#LineLine coverage
 1// Copyright (c) ZeroC, Inc.
 2
 3using System.Buffers;
 4using System.IO.Pipelines;
 5
 6namespace IceRpc;
 7
 8/// <summary>Implements a stateless and therefore shareable PipeReader over an empty sequence.</summary>
 9/// <remarks>Because this implementation is stateless, it does not implement CancelPendingRead correctly; in
 10/// practice this discrepancy should not be noticeable.</remarks>
 11public sealed class EmptyPipeReader : PipeReader
 12{
 13    /// <summary>Gets the shared instance of the empty pipe reader.</summary>
 1419414    public static PipeReader Instance { get; } = new EmptyPipeReader();
 15
 16    /// <summary>The ReadResult returned by all read methods.</summary>
 1617    private readonly ReadResult _readResult =
 1618        new(ReadOnlySequence<byte>.Empty, isCanceled: false, isCompleted: true);
 19
 20    /// <inheritdoc/>
 21    public override void AdvanceTo(SequencePosition consumed)
 82822    {
 23        // no-op
 82824    }
 25
 26    /// <inheritdoc/>
 27    public override void AdvanceTo(SequencePosition consumed, SequencePosition examined)
 028    {
 29        // no-op
 030    }
 31
 32    /// <inheritdoc/>
 33    public override void CancelPendingRead()
 034    {
 35        // no-op
 036    }
 37
 38    /// <inheritdoc/>
 39    public override void Complete(Exception? exception)
 700740    {
 41        // no-op
 700742    }
 43
 44    /// <inheritdoc/>
 168145    public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken) => new(_readResult);
 46
 47    /// <inheritdoc/>
 48    public override bool TryRead(out ReadResult result)
 81449    {
 81450        result = _readResult;
 81451        return true;
 81452    }
 53
 1654    private EmptyPipeReader()
 1655    {
 56        // ensures there is only one instance
 1657    }
 58}