158 lines
4.7 KiB
Cython
158 lines
4.7 KiB
Cython
|
|
import cython
|
|
|
|
from .._cache cimport DNSCache
|
|
from .._dns cimport (
|
|
DNSAddress,
|
|
DNSNsec,
|
|
DNSPointer,
|
|
DNSQuestion,
|
|
DNSRecord,
|
|
DNSService,
|
|
DNSText,
|
|
)
|
|
from .._history cimport QuestionHistory
|
|
from .._protocol.outgoing cimport DNSOutgoing
|
|
from .._record_update cimport RecordUpdate
|
|
from .._updates cimport RecordUpdateListener
|
|
from .._utils.ipaddress cimport (
|
|
get_ip_address_object_from_record,
|
|
ip_bytes_and_scope_to_address,
|
|
str_without_scope_id,
|
|
)
|
|
from .._utils.time cimport current_time_millis
|
|
|
|
|
|
cdef object _resolve_all_futures_to_none
|
|
|
|
cdef object _TYPE_SRV
|
|
cdef object _TYPE_TXT
|
|
cdef object _TYPE_A
|
|
cdef object _TYPE_AAAA
|
|
cdef object _TYPE_PTR
|
|
cdef object _TYPE_NSEC
|
|
cdef object _CLASS_IN
|
|
cdef object _FLAGS_QR_QUERY
|
|
|
|
cdef object service_type_name
|
|
|
|
cdef object QU_QUESTION
|
|
cdef object QM_QUESTION
|
|
|
|
cdef object _IPVersion_All_value
|
|
cdef object _IPVersion_V4Only_value
|
|
|
|
cdef cython.set _ADDRESS_RECORD_TYPES
|
|
|
|
cdef unsigned int _DUPLICATE_QUESTION_INTERVAL
|
|
|
|
cdef bint TYPE_CHECKING
|
|
cdef bint IPADDRESS_SUPPORTS_SCOPE_ID
|
|
cdef object cached_ip_addresses
|
|
|
|
cdef object randint
|
|
|
|
cdef class ServiceInfo(RecordUpdateListener):
|
|
|
|
cdef public cython.bytes text
|
|
cdef public str type
|
|
cdef str _name
|
|
cdef public str key
|
|
cdef public cython.list _ipv4_addresses
|
|
cdef public cython.list _ipv6_addresses
|
|
cdef public object port
|
|
cdef public object weight
|
|
cdef public object priority
|
|
cdef public str server
|
|
cdef public str server_key
|
|
cdef public cython.dict _properties
|
|
cdef public cython.dict _decoded_properties
|
|
cdef public object host_ttl
|
|
cdef public object other_ttl
|
|
cdef public object interface_index
|
|
cdef public cython.set _new_records_futures
|
|
cdef public DNSPointer _dns_pointer_cache
|
|
cdef public DNSService _dns_service_cache
|
|
cdef public DNSText _dns_text_cache
|
|
cdef public cython.list _dns_address_cache
|
|
cdef public cython.set _get_address_and_nsec_records_cache
|
|
|
|
@cython.locals(record_update=RecordUpdate, update=bint, cache=DNSCache)
|
|
cpdef void async_update_records(self, object zc, double now, cython.list records)
|
|
|
|
@cython.locals(cache=DNSCache)
|
|
cpdef bint _load_from_cache(self, object zc, double now)
|
|
|
|
@cython.locals(length="unsigned char", index="unsigned int", key_value=bytes, key_sep_value=tuple)
|
|
cdef void _unpack_text_into_properties(self)
|
|
|
|
@cython.locals(k=bytes, v=bytes)
|
|
cdef void _generate_decoded_properties(self)
|
|
|
|
@cython.locals(properties_contain_str=bint)
|
|
cpdef void _set_properties(self, cython.dict properties)
|
|
|
|
cdef void _set_text(self, cython.bytes text)
|
|
|
|
@cython.locals(record=DNSAddress)
|
|
cdef _get_ip_addresses_from_cache_lifo(self, object zc, double now, object type)
|
|
|
|
@cython.locals(
|
|
dns_service_record=DNSService,
|
|
dns_text_record=DNSText,
|
|
dns_address_record=DNSAddress
|
|
)
|
|
cdef bint _process_record_threadsafe(self, object zc, DNSRecord record, double now)
|
|
|
|
@cython.locals(cache=DNSCache)
|
|
cdef cython.list _get_address_records_from_cache_by_type(self, object zc, object _type)
|
|
|
|
cdef void _set_ipv4_addresses_from_cache(self, object zc, double now)
|
|
|
|
cdef void _set_ipv6_addresses_from_cache(self, object zc, double now)
|
|
|
|
cdef cython.list _ip_addresses_by_version_value(self, object version_value)
|
|
|
|
cpdef addresses_by_version(self, object version)
|
|
|
|
cpdef ip_addresses_by_version(self, object version)
|
|
|
|
@cython.locals(cacheable=cython.bint)
|
|
cdef cython.list _dns_addresses(self, object override_ttls, object version)
|
|
|
|
@cython.locals(cacheable=cython.bint)
|
|
cdef DNSPointer _dns_pointer(self, object override_ttl)
|
|
|
|
@cython.locals(cacheable=cython.bint)
|
|
cdef DNSService _dns_service(self, object override_ttl)
|
|
|
|
@cython.locals(cacheable=cython.bint)
|
|
cdef DNSText _dns_text(self, object override_ttl)
|
|
|
|
cdef DNSNsec _dns_nsec(self, cython.list missing_types, object override_ttl)
|
|
|
|
@cython.locals(cacheable=cython.bint)
|
|
cdef cython.set _get_address_and_nsec_records(self, object override_ttl)
|
|
|
|
cpdef void async_clear_cache(self)
|
|
|
|
@cython.locals(cache=DNSCache, history=QuestionHistory, out=DNSOutgoing, qu_question=bint)
|
|
cdef DNSOutgoing _generate_request_query(self, object zc, double now, object question_type)
|
|
|
|
@cython.locals(question=DNSQuestion, answer=DNSRecord)
|
|
cdef void _add_question_with_known_answers(
|
|
self,
|
|
DNSOutgoing out,
|
|
bint qu_question,
|
|
QuestionHistory question_history,
|
|
DNSCache cache,
|
|
double now,
|
|
str name,
|
|
object type_,
|
|
object class_,
|
|
bint skip_if_known_answers
|
|
)
|
|
|
|
cdef double _get_initial_delay(self)
|
|
|
|
cdef double _get_random_delay(self)
|