�
Ϫ�f�# � � � d dl Z d dlmZ d dlmZmZ d dlmZmZ d dl m
Z
d dlmZ G d� d� Z
eej � G d � d
� � Zy)� N)�implementer)�error�
interfaces)�client�dns)�DNSNameError)�nativeStringc �* � e Zd Zd� Zd� Zd� Zd� Zd� Zy)�"_SRVConnector_ClientFactoryWrapperc � � || _ || _ y �N)�-_SRVConnector_ClientFactoryWrapper__connector�2_SRVConnector_ClientFactoryWrapper__wrappedFactory)�self� connector�wrappedFactorys �:/usr/lib/python3/dist-packages/twisted/names/srvconnect.py�__init__z+_SRVConnector_ClientFactoryWrapper.__init__ s � �$��� .��� c �N � | j j | j � y r
)r �startedConnectingr )r r s r r z4_SRVConnector_ClientFactoryWrapper.startedConnecting s � ����/�/��0@�0@�Ar c �: � | j j |� y r
)r �connectionFailed�r r �reasons r �clientConnectionFailedz9_SRVConnector_ClientFactoryWrapper.clientConnectionFailed s � ����)�)�&�1r c �: � | j j |� y r
)r �connectionLostr s r �clientConnectionLostz7_SRVConnector_ClientFactoryWrapper.clientConnectionLost s � ����'�'��/r c �. � t | j |� S r
)�getattrr )r �keys r �__getattr__z._SRVConnector_ClientFactoryWrapper.__getattr__ s � ��t�,�,�c�2�2r N)�__name__�
__module__�__qualname__r r r r r# � r r r r s � �/�B�2�0�3r r c �h � e Zd ZdZdZdddi dfd�Zd� Zd � Zd
� Zd� Z d� Z
d
� Zd� Zd� Z
d� Zd� Zd� Zy)�SRVConnectoraD
A connector that looks up DNS SRV records.
RFC 2782 details how SRV records should be interpreted and selected
for subsequent connection attempts. The algorithm for using the records'
priority and weight is implemented in L{pickServer}.
@ivar servers: List of candidate server records for future connection
attempts.
@type servers: L{list} of L{dns.Record_SRV}
@ivar orderedServers: List of server records that have already been tried
in this round of connection attempts.
@type orderedServers: L{list} of L{dns.Record_SRV}
r �tcp�
connectTCPr' |