관리-도구
편집 파일: _sync.cpython-39.pyc
a �����M�e�����������������������@���s����d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dl Zd�dl Zd�dlZd�dl mZmZmZmZmZ�ee�d�r�e�jZne�jZG�dd��de�ZG�dd��de�ZG�dd ��d e�ZdS�) �����N)�QUIC_MAX_DATAGRAM�BaseQuicConnection�BaseQuicManager�BaseQuicStream� UnexpectedEOF�PollSelectorc�����������������������sX���e�Zd�Z��fdd�Zdd��Zddd�Zdd d �Zdd��Zd d��Zdd��Z dd��Z ���ZS�)�SyncQuicStreamc��������������������s&���t����||��t���|�_t���|�_d�S��N)�super�__init__� threading� Condition�_wake_up�Lock�_lock)�self� connection� stream_id�� __class__���2/usr/lib/python3.9/site-packages/dns/quic/_sync.pyr��� ���s���� zSyncQuicStream.__init__c�����������������C���s����|���|�}|�j�2�|�j�|�r.W�d�����d�S�||�_W�d�����n1�sH0����Y��|�j�$�|�j�|�sntjj �W�d�����n1�s�0����Y��d|�_q�d�S�)Nr���) Z_timeout_from_expirationr����_bufferZhaveZ _expectingr����wait�dns� exception�Timeout)r����amount� expiration�timeoutr���r���r����wait_for%���s���� $&zSyncQuicStream.wait_forNc�����������������C���s����|���|�}|��d|��|�j�&�t�d|�j�d��\}W�d�����n1�sH0����Y��|��||��|�j��|�j�|�W��d�����S�1�s�0����Y��d�S�)N����z!H)Z_expiration_from_timeoutr ���r����struct�unpackr����get)r���r���r����sizer���r���r����receive1���s���� 4zSyncQuicStream.receiveFc�����������������C���s ���|���|�}|�j�|�j||��d�S�r ���)Z_encapsulate�_connection�writeZ _stream_id)r����datagram�is_end�datar���r���r����send:���s���� zSyncQuicStream.sendc�����������������C���s@���|���||�r<|�j��|�j����W�d�����n1�s20����Y��d�S�r ���)Z_common_add_inputr����notify)r���r+���r*���r���r���r���� _add_input>���s����zSyncQuicStream._add_inputc�����������������C���s2���|�j���|�����W�d�����n1�s$0����Y��d�S�r ���)r���Z_close�r���r���r���r����closeC���s����zSyncQuicStream.closec�����������������C���s���|�S�r ���r���r/���r���r���r���� __enter__G���s����zSyncQuicStream.__enter__c�����������������C���s<���|������|�j��|�j����W�d�����n1�s.0����Y��dS��NF)r0���r���r-���)r����exc_type�exc_val�exc_tbr���r���r����__exit__J���s����(zSyncQuicStream.__exit__)N)F)�__name__� __module__�__qualname__r���r ���r&���r,���r.���r0���r1���r6���� __classcell__r���r���r���r���r������s��� r���c�����������������������sl���e�Zd�Z��fdd�Zdd��Zdd��Zdd��Zd d ��Zddd �Zdd��Z ddd�Z ��fdd�Zdd��Z���Z S�)�SyncQuicConnectionc��������������������s����t����||||||��t�|�jtjd�|�_|�jd�urrz|�j�tj � |�j|�j���W�n�typ���|�j������Y�n0�|�j� |�j��t���\|�_|�_|�j�d��|�j�d��t���|�_d�|�_t���|�_d�S�)Nr���F)r ���r����socketZ_afZ SOCK_DGRAM�_socket�_sourceZbindr���ZinetZlow_level_address_tuple� Exceptionr0����connect�_peerZ socketpair�_send_wakeup�_receive_wakeupZsetblockingr����Event�_handshake_complete�_worker_threadr���r���)r���r����address�port�source�source_portZmanagerr���r���r���r���R���s"���� � zSyncQuicConnection.__init__c�����������������C���s|���d}|dk�rx|d7�}z|�j��t�}W�n�ty8���Y�d�S�0�|�j�&�|�j�||�jt�����W�d�����q1�sl0����Y��qd�S�)Nr���� �������) r=����recvr����BlockingIOErrorr���r'���Zreceive_datagramrA����time)r����countr)���r���r���r����_reade���s����zSyncQuicConnection._readc�����������������C���s,���z|�j��d��W�q��ty$���Y�d�S�0�q�d�S�)N� ���)rC���rM���rN���r/���r���r���r���� _drain_wakeupp���s����z SyncQuicConnection._drain_wakeupc����������� ������C���s����zDt���}|�|�jtj|�j��|�|�jtj|�j��|�j�s|�� d�\}}|� |�}|D�]\}}|����qV|�j��|�� |��W�d�����n1�s�0����Y��|�����|�j� �|�j�t����}W�d�����n1�s�0����Y��|D�].\}}z|�j�|��W�q��t�y���Y�q�0�q�q2W�|�j��d|�_W�d�����n1��s20����Y��|�j����n:|�j��d|�_W�d�����n1��sl0����Y��|�j����0�d�S�)NFT)�_selector_class�registerr=���� selectorsZ EVENT_READrQ���rC���rS����_doneZ_get_timer_valuesZselectr+���r���Z _handle_timer�_handle_eventsr'���Zdatagrams_to_sendrO���r,���rN���rE����set) r���Zselr����interval�items�key�_Z datagramsr)���r���r���r����_workerw���s2���� (.&�&zSyncQuicConnection._workerc�����������������C���sL��|�j���|�j���}W�d�����n1�s&0����Y��|d�u�r<d�S�t|tjjj�r�|�j���|�j� |j �}W�d�����n1�sv0����Y��|r�|�|j|j ��q�t|tjjj�r�|�j����q�t|tjjj�r�|�j���d|�_W�d�����n1�s�0����Y��q�t|tjjj�r�|�j���|�j� |j �}W�d�����n1��s,0����Y��|r�|�dd��q�d�S�)NT�����)r���r'���Z next_event� isinstance�aioquicZquicZeventsZStreamDataReceived�_streamsr$���r���r.���r+���Z end_streamZHandshakeCompletedrE���rY���ZConnectionTerminatedrW���ZStreamReset)r���Zevent�streamr���r���r���rX�������s&����(,&.z!SyncQuicConnection._handle_eventsFc�����������������C���sF���|�j�� �|�j�|||��W�d�����n1�s,0����Y��|�j�d��d�S�)N����)r���r'���Zsend_stream_datarB���r,���)r���rc���r+���r*���r���r���r���r(�������s����.zSyncQuicConnection.writec�����������������C���s(���|�j�r d�S�tj|�jd�|�_|�j����d�S�)N)�target)�_closedr����Threadr^���rF����startr/���r���r���r����run����s����zSyncQuicConnection.runNc�����������������C���sh���|�j��|�stjj�|�j�:�|�jr&t�|�j� d�}t |�|�}||�j|<�W�d�����n1�sZ0����Y��|S�r2���)rE���r���r���r���r���r���rW���r���r'���Zget_next_available_stream_idr���rb���)r���r���r���rc���r���r���r����make_stream����s���� (zSyncQuicConnection.make_streamc��������������������s6���|�j���t���|��W�d�����n1�s(0����Y��d�S�r ���)r���r ����close_stream)r���r���r���r���r���rk�������s����zSyncQuicConnection.close_streamc�����������������C���s����|�j��\�|�jrW�d�����d�S�|�j�|�jd�|�jd���d|�_|�j����|�j�d��W�d�����n1�sh0����Y��|�j � ���d�S�)Nr���rL���Trd���)r���rf���Z_manager�closedrA���r'���r0���rB���r,���rF����joinr/���r���r���r���r0�������s���� *zSyncQuicConnection.close)F)N)r7���r8���r9���r���rQ���rS���r^���rX���r(���ri���rj���rk���r0���r:���r���r���r���r���r;���Q���s��� r;���c�����������������������sX���e�Zd�Zdejdf��fdd� Zddd�Z��fd d �Z��fdd�Zd d��Z dd��Z ���ZS�)�SyncQuicManagerNc��������������������s ���t����||t|��t���|�_d�S�r ���)r ���r���r;���r���r���r���)r���ZconfZverify_modeZserver_namer���r���r���r�������s����zSyncQuicManager.__init__�U��r���Tc�����������������C���sP���|�j��6�|��|||||�\}}|r*|����|W��d�����S�1�sB0����Y��d�S�r ���)r���Z_connectri���)r���rG���rH���rI���rJ���Zwant_session_ticketr���rh���r���r���r���r@�������s���� �zSyncQuicManager.connectc��������������������s8���|�j���t���||��W�d�����n1�s*0����Y��d�S�r ���)r���r ���rl���)r���rG���rH���r���r���r���rl�������s����zSyncQuicManager.closedc��������������������s:���|�j�� �t���|||��W�d�����n1�s,0����Y��d�S�r ���)r���r ����save_session_ticket)r���rG���rH���Zticketr���r���r���rp�������s����z#SyncQuicManager.save_session_ticketc�����������������C���s���|�S�r ���r���r/���r���r���r���r1�������s����zSyncQuicManager.__enter__c�����������������C���s$���t�|�j����}|D�]}|����qdS�r2���)�listZ_connections�valuesr0���)r���r3���r4���r5���Zconnectionsr���r���r���r���r6�������s���� zSyncQuicManager.__exit__)ro���Nr���T)r7���r8���r9����sslZ CERT_REQUIREDr���r@���rl���rp���r1���r6���r:���r���r���r���r���rn�������s����� rn���)rV���r<���rs���r"���r���rO���Zaioquic.quic.configurationra���Zaioquic.quic.connectionZaioquic.quic.eventsZ dns.exceptionr���Zdns.inetZdns.quic._commonr���r���r���r���r����hasattrr���rT���ZSelectSelectorr���r;���rn���r���r���r���r����<module>���s"��� 2|