Poller

@MainActor
public final class Poller

A generic polling utility that repeatedly invokes an async action with configurable delay, cancellation, and completion callbacks.

  • Initializes a Poller with a polling frequency.

    Declaration

    Swift

    @MainActor
    public init(frequency: TimeInterval = 5)

    Parameters

    frequency

    How often polling occurs, in seconds.

  • Starts polling.

    Declaration

    Swift

    @MainActor
    public func start(
        initialDelay: TimeInterval = 0,
        runImmediately: Bool = false,
        maxAttempts: Int? = nil,
        onError: @escaping (Error) -> Void = { _ in },
        onComplete: ((Result<Void, Error>) -> Void)? = nil,
        action: @escaping () async throws -> Void
    )

    Parameters

    initialDelay

    Delay before the first invocation (in seconds).

    runImmediately

    Whether to invoke action before any delay.

    maxAttempts

    Maximum number of invocations before stopping. nil for infinite.

    action

    The async throwing work to perform each attempt.

    onError

    Called when action throws (does not stop polling unless fatal).

    onComplete

    Called when polling stops (success or cancellation).

  • Cancels any ongoing polling immediately.

    Declaration

    Swift

    @MainActor
    public func cancel()