KetraTerm
API · DevelopmentAll versions

SwingHyperlinkDetector

Host discovery outside terminal mutation, painting and pointer handling.

The binding owner serializes calls within each context and owns their cancellation. A detector declaring both contexts must permit concurrent independent and ordered calls. Implementations may suspend and allocate bounded discovery results, acquire host-read access, and return owned results. They must propagate cancellation, discard any tainted ordered state, and never touch Swing state. configurationGeneration changes when provider configuration becomes stale.

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
open val configurationChanges: Flow<Unit>

Reconciliation notifications for provider/index/theme changes without terminal output. The binding owns collection and cancellation. Publish configurationGeneration before emitting; this signal alone does not invalidate results when the generation and detector instance are unchanged.

Link copied to clipboard

Equality-only configuration generation. Publish changed configuration and a distinct generation before emitting configurationChanges; a notification with the same generation does not invalidate results. Without a notification, the owner observes the generation on its next reconciliation.

Link copied to clipboard

Fixed dependency discipline for this detector instance.

Functions

Link copied to clipboard
abstract suspend fun detect(request: SwingHyperlinkDetectionRequest): List<SwingHyperlink>

Returns one request's completed results. An empty list means successful detection with no links; failure/cancellation must throw and cannot mean empty success. The returned list and its results must not be mutated after return. Unknown/out-of-bounds source coordinates are ignored by the owner. Ordered state is valid only within the request's binding/source/provider/analysis epochs.

Link copied to clipboard

Releases retained ordered source/provider state at a binding or provider boundary. The owner calls this only after the ordered invocation has finished (including cancellation before dispatch). It must be nonblocking, may run on any thread, and must not touch independent state.