feat: speed up answering questions (#1265) · python-zeroconf/python-zeroconf@37bfaf2

@@ -519,6 +519,14 @@ def dns_addresses(

519519

self,

520520

override_ttl: Optional[int] = None,

521521

version: IPVersion = IPVersion.All,

522+

) -> List[DNSAddress]:

523+

"""Return matching DNSAddress from ServiceInfo."""

524+

return self._dns_addresses(override_ttl, version)

525+526+

def _dns_addresses(

527+

self,

528+

override_ttl: Optional[int],

529+

version: IPVersion,

522530

) -> List[DNSAddress]:

523531

"""Return matching DNSAddress from ServiceInfo."""

524532

cacheable = version is IPVersion.All and override_ttl is None

@@ -544,6 +552,10 @@ def dns_addresses(

544552

return records

545553546554

def dns_pointer(self, override_ttl: Optional[int] = None) -> DNSPointer:

555+

"""Return DNSPointer from ServiceInfo."""

556+

return self._dns_pointer(override_ttl)

557+558+

def _dns_pointer(self, override_ttl: Optional[int]) -> DNSPointer:

547559

"""Return DNSPointer from ServiceInfo."""

548560

cacheable = override_ttl is None

549561

if self._dns_pointer_cache is not None and cacheable:

@@ -561,6 +573,10 @@ def dns_pointer(self, override_ttl: Optional[int] = None) -> DNSPointer:

561573

return record

562574563575

def dns_service(self, override_ttl: Optional[int] = None) -> DNSService:

576+

"""Return DNSService from ServiceInfo."""

577+

return self._dns_service(override_ttl)

578+579+

def _dns_service(self, override_ttl: Optional[int]) -> DNSService:

564580

"""Return DNSService from ServiceInfo."""

565581

cacheable = override_ttl is None

566582

if self._dns_service_cache is not None and cacheable:

@@ -584,6 +600,10 @@ def dns_service(self, override_ttl: Optional[int] = None) -> DNSService:

584600

return record

585601586602

def dns_text(self, override_ttl: Optional[int] = None) -> DNSText:

603+

"""Return DNSText from ServiceInfo."""

604+

return self._dns_text(override_ttl)

605+606+

def _dns_text(self, override_ttl: Optional[int]) -> DNSText:

587607

"""Return DNSText from ServiceInfo."""

588608

cacheable = override_ttl is None

589609

if self._dns_text_cache is not None and cacheable:

@@ -601,6 +621,10 @@ def dns_text(self, override_ttl: Optional[int] = None) -> DNSText:

601621

return record

602622603623

def dns_nsec(self, missing_types: List[int], override_ttl: Optional[int] = None) -> DNSNsec:

624+

"""Return DNSNsec from ServiceInfo."""

625+

return self._dns_nsec(missing_types, override_ttl)

626+627+

def _dns_nsec(self, missing_types: List[int], override_ttl: Optional[int]) -> DNSNsec:

604628

"""Return DNSNsec from ServiceInfo."""

605629

return DNSNsec(

606630

self._name,

@@ -613,18 +637,22 @@ def dns_nsec(self, missing_types: List[int], override_ttl: Optional[int] = None)

613637

)

614638615639

def get_address_and_nsec_records(self, override_ttl: Optional[int] = None) -> Set[DNSRecord]:

640+

"""Build a set of address records and NSEC records for non-present record types."""

641+

return self._get_address_and_nsec_records(override_ttl)

642+643+

def _get_address_and_nsec_records(self, override_ttl: Optional[int]) -> Set[DNSRecord]:

616644

"""Build a set of address records and NSEC records for non-present record types."""

617645

cacheable = override_ttl is None

618646

if self._get_address_and_nsec_records_cache is not None and cacheable:

619647

return self._get_address_and_nsec_records_cache

620648

missing_types: Set[int] = _ADDRESS_RECORD_TYPES.copy()

621649

records: Set[DNSRecord] = set()

622-

for dns_address in self.dns_addresses(override_ttl, IPVersion.All):

650+

for dns_address in self._dns_addresses(override_ttl, IPVersion.All):

623651

missing_types.discard(dns_address.type)

624652

records.add(dns_address)

625653

if missing_types:

626654

assert self.server is not None, "Service server must be set for NSEC record."

627-

records.add(self.dns_nsec(list(missing_types), override_ttl))

655+

records.add(self._dns_nsec(list(missing_types), override_ttl))

628656

if cacheable:

629657

self._get_address_and_nsec_records_cache = records

630658

return records