Skip to content

Event Subscriber Diagrams

This document provides visual diagrams of the ASH event system architecture using Mermaid.

Event System Overview

The following diagram shows the high-level architecture of the ASH event system:

flowchart TD
    A[ASH Core] --> B[Event Emitter]
    B --> C[Event Registry]
    C --> D[Event Subscribers]

    E[Scanner Plugins] -.-> B
    F[Converter Plugins] -.-> B
    G[Reporter Plugins] -.-> B

    D --> H[Custom Actions]
    D --> I[Notifications]
    D --> J[Logging]
    D --> K[Metrics]
    D --> L[External Systems]

Event Flow Sequence

The following diagram shows the sequence of events during an ASH scan:

sequenceDiagram
    participant ASH as ASH Core
    participant EM as Event Manager
    participant ES as Event Subscribers
    participant CP as Converter Plugins
    participant SP as Scanner Plugins
    participant RP as Reporter Plugins

    ASH->>EM: Emit ScanStarted
    EM->>ES: Notify ScanStarted
    ES-->>EM: Handle ScanStarted

    ASH->>EM: Emit ConversionStarted
    EM->>ES: Notify ConversionStarted
    ES-->>EM: Handle ConversionStarted

    ASH->>CP: Convert Files
    CP-->>ASH: Return Converted Files

    ASH->>EM: Emit ConversionCompleted
    EM->>ES: Notify ConversionCompleted
    ES-->>EM: Handle ConversionCompleted

    ASH->>EM: Emit ScannerStarted
    EM->>ES: Notify ScannerStarted
    ES-->>EM: Handle ScannerStarted

    ASH->>SP: Scan Files
    SP-->>ASH: Return Scan Results

    ASH->>EM: Emit ScannerCompleted
    EM->>ES: Notify ScannerCompleted
    ES-->>EM: Handle ScannerCompleted

    ASH->>EM: Emit ScanCompleted
    EM->>ES: Notify ScanCompleted
    ES-->>EM: Handle ScanCompleted

    ASH->>EM: Emit ReportingStarted
    EM->>ES: Notify ReportingStarted
    ES-->>EM: Handle ReportingStarted

    ASH->>RP: Generate Reports
    RP-->>ASH: Return Reports

    ASH->>EM: Emit ReportingCompleted
    EM->>ES: Notify ReportingCompleted
    ES-->>EM: Handle ReportingCompleted

Event Subscriber Registration

The following diagram shows how event subscribers are registered:

flowchart TD
    A[Plugin Module] --> B[__init__.py]
    B --> C[ASH_EVENT_HANDLERS]

    C --> D[Event Type 1]
    C --> E[Event Type 2]
    C --> F[Event Type 3]

    D --> G[Handler Function 1]
    D --> H[Handler Function 2]
    E --> I[Handler Function 3]
    F --> J[Handler Function 4]

    K[Plugin Manager] --> L[Load Modules]
    L --> M[Discover Event Handlers]
    M --> N[Register Handlers]

    C -.-> N

Event Data Flow

The following diagram shows the data flow through the event system:

flowchart LR
    A[ASH Core] --> B[Event Data]
    B --> C[Event Emitter]

    C --> D[Event Type]
    D --> E[Event Handlers]

    E --> F[Handler 1]
    E --> G[Handler 2]
    E --> H[Handler 3]

    F --> I[Custom Action 1]
    G --> J[Custom Action 2]
    H --> K[Custom Action 3]

    L[Event Context] -.-> B
    M[Plugin Context] -.-> B
    N[Phase Data] -.-> B

Event Handler Execution

The following diagram shows the execution flow of event handlers:

flowchart TD
    A[Event Triggered] --> B{Has Handlers?}
    B -->|Yes| C[Get Handler List]
    B -->|No| D[End]

    C --> E[Execute Handler 1]
    E --> F{Success?}
    F -->|Yes| G[Execute Handler 2]
    F -->|No| H[Log Error]
    H --> G

    G --> I{Success?}
    I -->|Yes| J[Execute Handler 3]
    I -->|No| K[Log Error]
    K --> J

    J --> L{Success?}
    L -->|Yes| M[All Handlers Complete]
    L -->|No| N[Log Error]
    N --> M

    M --> D

Integration with External Systems

The following diagram shows how event subscribers can integrate with external systems:

flowchart LR
    A[ASH Event] --> B[Event Subscriber]

    B --> C[Slack Notifications]
    B --> D[Email Alerts]
    B --> E[Metrics Database]
    B --> F[Logging System]
    B --> G[CI/CD Pipeline]
    B --> H[Issue Tracker]

    subgraph External Systems
        C
        D
        E
        F
        G
        H
    end