# khushpanchal/prioritydispatcher architecture

> Architecture diagram of the GitHub repository khushpanchal/prioritydispatcher, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/khushpanchal/prioritydispatcher
- Repository: https://github.com/khushpanchal/prioritydispatcher

## Overview

PriorityDispatcher is a small Kotlin coroutine-dispatcher library: callers select a priority, the library dispatches work through either a priority-queued fixed pool or a separate immediate executor, and the original coroutine runnable is ultimately executed. Source excerpts show the implementation of both paths; no external service or persistent store is involved.

Main entry points: [`prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt`](https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt) (PriorityDispatcher), [`prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/CustomPriorityDispatcher.kt`](https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/CustomPriorityDispatcher.kt) (Custom dispatcher), [`prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/PriorityRunnable.kt`](https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/PriorityRunnable.kt) (Priority runnable), [`prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/Priority.kt`](https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/Priority.kt) (Priority levels)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public API"]
  node_api["PriorityDispatcher"]
end

subgraph group_dispatch["Dispatch Internals"]
  node_custom["Custom dispatcher"]
  node_priority["Priority levels<br/>[Priority.kt]"]
  node_wrapped["Priority runnable"]
end

subgraph group_execution["Execution Pools"]
  node_queued["Priority pool"]
  node_immediate["Immediate pool"]
end

node_caller(("Coroutine caller"))
node_coroutine["Coroutine task"]

node_caller -->|"selects priority"| node_api
node_api -->|"creates dispatcher"| node_custom
node_api -->|"assigns level"| node_priority
node_api -->|"uses pool"| node_queued
node_custom -->|"wraps runnable"| node_wrapped
node_custom -->|"submits task"| node_queued
node_queued -->|"orders and runs"| node_wrapped
node_wrapped -->|"runs task"| node_coroutine
node_api -->|"submits immediate task"| node_immediate
node_immediate -->|"runs task"| node_coroutine

click node_api "https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt"
click node_custom "https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/CustomPriorityDispatcher.kt"
click node_priority "https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/Priority.kt"
click node_wrapped "https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/PriorityRunnable.kt"
click node_queued "https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt"
click node_immediate "https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_api toneBlue
class node_custom,node_priority,node_wrapped toneAmber
class node_queued,node_immediate toneMint
class node_caller toneIndigo
class node_coroutine toneRose
```

## Components

### Public API

- [PriorityDispatcher](https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt): `prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt`

### Dispatch Internals

- [Custom dispatcher](https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/CustomPriorityDispatcher.kt): `prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/CustomPriorityDispatcher.kt`
- [Priority levels](https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/Priority.kt): `prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/Priority.kt`
- [Priority runnable](https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/PriorityRunnable.kt): `prioritydispatcher/src/main/java/com/khush/prioritydispatcher/internal/PriorityRunnable.kt`

### Execution Pools

- [Priority pool](https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt): `prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt`
- [Immediate pool](https://github.com/khushpanchal/prioritydispatcher/blob/master/prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt): `prioritydispatcher/src/main/java/com/khush/prioritydispatcher/PriorityDispatcher.kt`

### Other components

- **Coroutine caller**
- **Coroutine task**

## Connections

- Coroutine caller → PriorityDispatcher: selects priority
- PriorityDispatcher → Custom dispatcher: creates dispatcher
- PriorityDispatcher → Priority levels: assigns level
- PriorityDispatcher → Priority pool: uses pool
- Custom dispatcher → Priority runnable: wraps runnable
- Custom dispatcher → Priority pool: submits task
- Priority pool → Priority runnable: orders and runs
- Priority runnable → Coroutine task: runs task
- PriorityDispatcher → Immediate pool: submits immediate task
- Immediate pool → Coroutine task: runs task
