< Summary - erichiller/mkmrk.Channels coverage

Information
Class: mkmrk.Channels.BroadcastChannel<TData, TResponse>
Assembly: mkmrk.Channels
File(s): /home/runner/work/mkmrk.Channels/mkmrk.Channels/src/mkmrk.Channels/BroadcastChannel/BroadcastChannel.cs
Tag: 161_8859726157
Line coverage
76%
Covered lines: 19
Uncovered lines: 6
Coverable lines: 25
Total lines: 88
Line coverage: 76%
Branch coverage
87%
Covered branches: 7
Total branches: 8
Branch coverage: 87.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Metrics

File(s)

/home/runner/work/mkmrk.Channels/mkmrk.Channels/src/mkmrk.Channels/BroadcastChannel/BroadcastChannel.cs

#LineLine coverage
 1using System;
 2using System.ComponentModel;
 3using System.Threading.Channels;
 4
 5using Microsoft.Extensions.Logging;
 6
 7namespace mkmrk.Channels;
 8
 9/// <inheritdoc cref="IBroadcastChannel{TData,TResponse}" />
 10public class BroadcastChannel<TData, TResponse> : IBroadcastChannel<TData, TResponse>, IBroadcastChannel<TData> where TR
 11    private          IBroadcastChannelWriter<TData, TResponse>? _writer;
 12    private readonly ILoggerFactory?                            _loggerFactory;
 13
 14    /// <inheritdoc cref="BroadcastChannel{TData,TResponse}"/>
 215    public BroadcastChannel( ILoggerFactory? loggerFactory = null ) => this._loggerFactory = loggerFactory;
 16
 17    /// <inheritdoc cref="BroadcastChannel{TData,TResponse}"/>
 18    /// <remarks>For Dependency Injection and should not be used directly.</remarks>
 19    [ EditorBrowsable( EditorBrowsableState.Never ) ]
 220    public BroadcastChannel( IBroadcastChannelWriter<TData, TResponse> broadcastChannelWriter, ILoggerFactory? loggerFac
 221        this._loggerFactory = loggerFactory;
 222        this._writer        = broadcastChannelWriter;
 223    }
 24
 25    /// <summary>
 26    /// Get the single <see cref="BroadcastChannelWriter{TData,TResponse}"/>
 27    /// </summary>
 28    public IBroadcastChannelWriter<TData, TResponse> Writer
 229        => _writer ??= new BroadcastChannelWriter<TData, TResponse>( _loggerFactory );
 30
 031    IBroadcastChannelWriter<TData> IBroadcastChannel<TData>.Writer => this.Writer;
 32
 33    /// <summary>
 34    /// Create a new <see cref="BroadcastChannelReader{TData,TResponse}"/> and return it.
 35    /// </summary>
 36    public IBroadcastChannelReader<TData, TResponse> CreateReader( )
 237        => Writer.CreateReader();
 038    IBroadcastChannelReader<TData> IBroadcastChannel<TData>.CreateReader( ) => this.CreateReader();
 39
 40    /// <inheritdoc />
 041    RemoveWriterByHashCode IBroadcastChannelAddReaderProvider<TData>.AddReader( ChannelWriter<TData> reader ) => this.Wr
 42
 43    /// <inheritdoc />
 044    public IBroadcastChannelReaderSource<TData, TResponse> CreateReaderSource( ) => new BroadcastChannelReaderSource<TDa
 045    IBroadcastChannelReaderSource<TData> IBroadcastChannel<TData>.CreateReaderSource( ) => this.CreateReaderSource();
 46
 47    private bool _isDisposed;
 48
 49    /// <inheritdoc />
 250    public void Dispose( ) {
 251        Dispose( true );
 252        GC.SuppressFinalize( this );
 253    }
 54
 55    // ReSharper disable once InconsistentNaming
 56    /// <inheritdoc cref="IDisposable.Dispose"/>
 257    protected virtual void Dispose( bool disposing ) {
 258        if ( this._isDisposed ) {
 259            return;
 60        }
 61
 262        if ( disposing ) {
 263            this._writer?.Dispose();
 264        }
 65
 266        this._isDisposed = true;
 267    }
 68
 69    /// <inheritdoc />
 070    public override string ToString( ) => $"{this.GetType().GenericTypeShortDescriptor( useShortGenericName: false )} [H
 71}
 72
 73/// <summary>
 74/// <see cref="BroadcastChannel{TData}"/> with a default Response type of <see cref="IBroadcastChannelResponse"/> potent
 75/// </summary>
 76/// <typeparam name="TData">Type of the messages which <see cref="BroadcastChannelWriter{TData,TResponse}"/> writes and 
 77/// <inheritdoc cref="BroadcastChannel{TData,TResponse}" path="/remarks" />
 78public class BroadcastChannel<TData> : BroadcastChannel<TData, IBroadcastChannelResponse> {
 79    /// <inheritdoc cref="M:mkmrk.Common.BroadcastChannel`2.#ctor(Microsoft.Extensions.Logging.ILoggerFactory)"/>
 80    public BroadcastChannel( ILoggerFactory? loggerFactory = null ) : base( loggerFactory ) { }
 81
 82    /// <inheritdoc cref="BroadcastChannel{TData}"/>
 83    /// <remarks>For Dependency Injection and should not be used directly.</remarks>
 84    [ EditorBrowsable( EditorBrowsableState.Never ) ]
 85    public BroadcastChannel( IBroadcastChannelWriter<TData> broadcastChannelWriter, ILoggerFactory? loggerFactory = null
 86        base( broadcastChannelWriter as IBroadcastChannelWriter<TData, IBroadcastChannelResponse>
 87              ?? ThrowHelper.ThrowInvalidCastException<IBroadcastChannelWriter<TData>, IBroadcastChannelWriter<TData, IB
 88}