Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/zeroconf/_handlers/record_manager.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@ from .._dns cimport DNSQuestion, DNSRecord
from .._protocol.incoming cimport DNSIncoming
from .._updates cimport RecordUpdateListener
from .._utils.time cimport current_time_millis

from .._record_update cimport RecordUpdate

cdef cython.float _DNS_PTR_MIN_TTL
cdef cython.uint _TYPE_PTR
cdef object _ADDRESS_RECORD_TYPES
cdef object RecordUpdate
cdef bint TYPE_CHECKING
cdef object _TYPE_PTR

Expand All @@ -31,6 +30,7 @@ cdef class RecordManager:
record=DNSRecord,
answers=cython.list,
maybe_entry=DNSRecord,
rec_update=RecordUpdate
)
cpdef void async_updates_from_response(self, DNSIncoming msg)

Expand Down
8 changes: 6 additions & 2 deletions src/zeroconf/_handlers/record_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,11 +120,15 @@ def async_updates_from_response(self, msg: DNSIncoming) -> None:
address_adds.append(record)
else:
other_adds.append(record)
updates.append(RecordUpdate(record, maybe_entry))
rec_update = RecordUpdate.__new__(RecordUpdate)
rec_update._fast_init(record, maybe_entry)
updates.append(rec_update)
# This is likely a goodbye since the record is
# expired and exists in the cache
elif maybe_entry is not None:
updates.append(RecordUpdate(record, maybe_entry))
rec_update = RecordUpdate.__new__(RecordUpdate)
rec_update._fast_init(record, maybe_entry)
updates.append(rec_update)
removes.add(record)

if unique_types:
Expand Down
2 changes: 2 additions & 0 deletions src/zeroconf/_record_update.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ cdef class RecordUpdate:

cdef public DNSRecord new
cdef public DNSRecord old

cdef void _fast_init(self, object new, object old)
8 changes: 7 additions & 1 deletion src/zeroconf/_record_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,18 @@

from ._dns import DNSRecord

_DNSRecord = DNSRecord


class RecordUpdate:
__slots__ = ("new", "old")

def __init__(self, new: DNSRecord, old: Optional[DNSRecord] = None):
def __init__(self, new: DNSRecord, old: Optional[DNSRecord] = None) -> None:
"""RecordUpdate represents a change in a DNS record."""
self._fast_init(new, old)

def _fast_init(self, new: _DNSRecord, old: Optional[_DNSRecord]) -> None:
"""Fast init for RecordUpdate."""
self.new = new
self.old = old

Expand Down