< Summary

Information
Class: NostrSure.Infrastructure.Client.Implementation.DefaultEventDispatcher
Assembly: NostrSure.Infrastructure
File(s): /home/runner/work/NostrSure/NostrSure/NostrSure.Infrastructure/Client/Implementation/DefaultEventDispatcher.cs
Line coverage
90%
Covered lines: 18
Uncovered lines: 2
Coverable lines: 20
Total lines: 52
Line coverage: 90%
Branch coverage
70%
Covered branches: 14
Total branches: 20
Branch coverage: 70%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Dispatch(...)70%202090%

File(s)

/home/runner/work/NostrSure/NostrSure/NostrSure.Infrastructure/Client/Implementation/DefaultEventDispatcher.cs

#LineLine coverage
 1using NostrSure.Infrastructure.Client.Abstractions;
 2using NostrSure.Infrastructure.Client.Messages;
 3
 4namespace NostrSure.Infrastructure.Client.Implementation;
 5
 6/// <summary>
 7/// Default event dispatcher implementation
 8/// </summary>
 9public class DefaultEventDispatcher : IEventDispatcher
 10{
 11    public event Func<RelayEventMessage, Task>? OnEvent;
 12    public event Func<EoseMessage, Task>? OnEndOfStoredEvents;
 13    public event Func<NoticeMessage, Task>? OnNotice;
 14    public event Func<ClosedMessage, Task>? OnClosed;
 15    public event Func<OkMessage, Task>? OnOk;
 16
 17    public void Dispatch(NostrMessage message)
 1118    {
 1119        ArgumentNullException.ThrowIfNull(message);
 20
 21        try
 1022        {
 1023            switch (message)
 24            {
 25                case RelayEventMessage eventMsg:
 026                    OnEvent?.Invoke(eventMsg);
 027                    break;
 28                case EoseMessage eoseMsg:
 229                    OnEndOfStoredEvents?.Invoke(eoseMsg);
 230                    break;
 31                case NoticeMessage noticeMsg:
 532                    OnNotice?.Invoke(noticeMsg);
 433                    break;
 34                case ClosedMessage closedMsg:
 135                    OnClosed?.Invoke(closedMsg);
 136                    break;
 37                case OkMessage okMsg:
 138                    OnOk?.Invoke(okMsg);
 139                    break;
 40                default:
 41                    // Unknown message type - could log but don't throw
 142                    break;
 43            }
 944        }
 145        catch (Exception)
 146        {
 47            // Prevent handler exceptions from breaking the dispatcher
 48            // In production, this should be logged
 149            throw;
 50        }
 951    }
 52}