# ISyncBroadcaster

- File ID: file:441s21:isyncbroadcaster-cs
- Path: NexusReader.Application/Abstractions/Messaging/ISyncBroadcaster.cs
- Role: service
- Layer: application

## Purpose

Defines an application-layer abstraction for broadcasting real-time synchronization and ingestion progress events to connected client devices (keeps Application layer decoupled from SignalR).

## Key Details

Interface intentionally defined in Application layer to avoid a direct dependency on SignalR; concrete implementations (in Infrastructure) will perform the actual SignalR or other transport operations.

## Symbols

- ISyncBroadcaster: Defines an application-layer abstraction for broadcasting real-time synchronization and ingestion progress events to connected client devices (keeps Application layer decoupled from SignalR).
- BroadcastProgressAsync(): Declares an asynchronous broadcast of a user's reading progress to that user's devices, optionally excluding a specific connection.
- BroadcastIngestionProgressAsync(): Declares an asynchronous broadcast of ingestion (background processing) status and progress to a specific user.
- ISyncBroadcaster: Application-layer interface abstracting real-time broadcasting behavior (keeps handlers free of SignalR dependency).

## Dependencies

- No resolved dependencies.

## Calls

- No resolved calls.

## Coverage

- Symbols: 4
- Executable symbols: 2
- Executable symbols with control flow: 2
- Grounded edges: 4
- Unresolved references: 0
- Control-flow fragments: 2
- Unresolved jumps: 0
- Unsupported constructs: 0
- Control-flow coverage: 100%
- Required diagrams: 2
- Generated diagrams: 2

## Control Flow Fragments

- BroadcastProgressAsync: 4 nodes, 3 edges, 0 jumps, 0 unsupported constructs
- BroadcastIngestionProgressAsync: 4 nodes, 3 edges, 0 jumps, 0 unsupported constructs

## Diagrams

### ISyncBroadcaster Neighborhood

```mermaid
flowchart LR
    class_1kfpdx9_isyncbroadcaster("ISyncBroadcaster")
    file_441s21_isyncbroadcaster_cs("ISyncBroadcaster")
    method_3uewqk_broadcastprogressasync[["BroadcastProgressAsync()"]]
    method_uqgfbl_broadcastingestionprogressasync[["BroadcastIngestionProgressAsync()"]]
    type_dqp6wm_isyncbroadcaster[/"ISyncBroadcaster"/]
```

### ISyncBroadcaster Execution Overview

```mermaid
flowchart TD
    class_1kfpdx9_isyncbroadcaster("ISyncBroadcaster")
    method_3uewqk_broadcastprogressasync[["BroadcastProgressAsync()"]]
    method_uqgfbl_broadcastingestionprogressasync[["BroadcastIngestionProgressAsync()"]]
    class_1kfpdx9_isyncbroadcaster -->|contains| method_3uewqk_broadcastprogressasync
    class_1kfpdx9_isyncbroadcaster -->|contains| method_uqgfbl_broadcastingestionprogressasync
```

## Diagram Validation

- Status: pass
