DiscoveryController

protocol DiscoveryController : Sendable

Manages Discovery Candidates for all Structures in a User Account.

This protocol is used to manage the Discovery Candidates for all Structures in a User Account. This includes fetching, caching and freshing the candidates.

Note

This protocol exists to facilitate eventual SRL migration.
  • Returns the Discovery candidates for the given Structure.

    Note

    Initially the Discovery API is non streaming. The expected usage is:

    let candidates = try await discoveryController.candidates(for: structure, includeDescendants: false).first()
    

    Default Implementation

    Returns the Discovery candidates for the given Structure.

    Declaration

    Swift

    func candidates(for structure: Structure, includeDescendants: Bool, timeout: TimeInterval?) -> any Query<AnyNodeCandidate>

    Parameters

    includeDescendants

    Whether to include candidates for all the objects within the specified Structure.

    timeout

    The timeout duration in seconds for the initial candidate emission, or nil for no timeout.

    Return Value

    The Discovery candidates for the given Structure.

  • candidates(for:timeout:)

    Default implementation

    Returns the Discovery candidates for the given Device.

    Note

    Initially the Discovery API is non streaming. The expected usage is:

    let candidates = try await discoveryController.candidates(for: device).first()
    

    Default Implementation

    Returns the Discovery candidates for the given Device.

    Declaration

    Swift

    func candidates(for device: HomeDevice, timeout: TimeInterval?) throws -> any Query<AnyNodeCandidate>

    Parameters

    timeout

    The timeout duration in seconds for the initial candidate emission, or nil for no timeout.

    Return Value

    The Discovery candidates for the given home object.