Edit File: asyncore.cpython-37.pyc
B ����p}�c�N������������������@���sh��d�Z�ddlZddlZddlZddlZddlZddlZddlmZm Z m Z mZmZm Z mZmZmZmZmZmZmZ�eee eeeeh�Zye�W�n�ek r����i�ZY�nX�dd��ZG�dd��de�ZeeefZdd ��Zd d��Z dd ��Z!dd��Z"d&dd�Z#d'dd�Z$e$Z%d(dd�Z&G�dd��d�Z'G�dd��de'�Z(dd��Z)d)dd �Z*ej+d!k�rdG�d"d#��d#�Z,G�d$d%��d%e'�Z-dS�)*a���Basic infrastructure for asynchronous socket service clients and servers. There are only two ways to have a program on a single processor do "more than one thing at a time". Multi-threaded programming is the simplest and most popular way to do it, but there is another very different technique, that lets you have nearly all the advantages of multi-threading, without actually using multiple threads. it's really only practical if your program is largely I/O bound. If your program is CPU bound, then pre-emptive scheduled threads are probably what you really need. Network servers are rarely CPU-bound, however. If your operating system supports the select() system call in its I/O library (and nearly all do), then you can use it to juggle multiple communication channels at once; doing other work while your I/O is taking place in the "background." Although this strategy can seem strange and complex, especially at first, it is in many ways easier to understand and control than multi-threaded programming. The module documented here solves many of the difficult problems for you, making the task of building sophisticated high-performance network servers and clients a snap. �����N) �EALREADY�EINPROGRESS�EWOULDBLOCK� ECONNRESET�EINVAL�ENOTCONN� ESHUTDOWN�EISCONN�EBADF�ECONNABORTED�EPIPE�EAGAIN� errorcodec���������� ���C���s>���y t��|��S��tttfk r8���|�tkr0t|��S�d|��S�X�d�S�)NzUnknown error %s)�os�strerror� ValueError� OverflowError� NameErrorr���)�err��r����-/opt/alt/python37/lib64/python3.7/asyncore.py� _strerrorD���s���� r���c���������������@���s���e�Zd�ZdS�)�ExitNowN)�__name__� __module__�__qualname__r���r���r���r���r���L���s���r���c�������������C���s:���y|������W�n(�tk r"�����Y�n���|�����Y�nX�d�S�)N)�handle_read_event�_reraised_exceptions�handle_error)�objr���r���r����readQ���s����r ���c�������������C���s:���y|������W�n(�tk r"�����Y�n���|�����Y�nX�d�S�)N)�handle_write_eventr���r���)r���r���r���r����writeY���s����r"���c�������������C���s:���y|������W�n(�tk r"�����Y�n���|�����Y�nX�d�S�)N)�handle_expt_eventr���r���)r���r���r���r���� _exceptiona���s����r$���c���������� ���C���s����yX|t�j@�r|�����|t�j@�r&|�����|t�j@�r8|�����|t�jt�jB�t�j B�@�rV|�� ���W�nh�tk r��}�z$|jd�t kr�|�����n|�� ���W�d�d�}~X�Y�n(�tk r������Y�n���|�����Y�nX�d�S�)Nr���)�select�POLLINr����POLLOUTr!����POLLPRIr#���ZPOLLHUPZPOLLERRZPOLLNVAL�handle_close�OSError�args� _DISCONNECTEDr���r���)r����flags�er���r���r���� readwritei���s"���� r/������������c������� ������C���sL��|d�krt�}|�rHg�}g�}g�}x\t|����D�]L\}}|���}|���}|rR|�|��|rf|jsf|�|��|sn|r,|�|��q,W�g�|��kr�|��kr�|kr�n�nt�|���d�S�t � ||||��\}}}x(|D�] }|� |�}|d�kr�q�t|��q�W�x*|D�]"}|� |�}|d�k�rq�t|��q�W�x.|D�]&}|� |�}|d�k�r:�qt |���qW�d�S�)N)� socket_map�list�items�readable�writable�append� accepting�timeZsleepr%����getr ���r"���r$���) �timeout�map�r�wr.����fdr���Zis_rZis_wr���r���r����poll}���sD������ " r?���c�������������C���s����|d�krt�}|�d�k r t|�d��}�t���}|r�x\t|����D�]L\}}d}|���r^|tjtjB�O�}|� ��rv|j sv|tjO�}|r:|�||��q:W�|�|��}x.|D�]&\}}|� |�}|d�kr�q�t||��q�W�d�S�)Ni���r���)r1����intr%���r?���r2���r3���r4���r&���r(���r5���r7���r'����registerr9���r/���)r:���r;���Zpollsterr>���r���r-���r<���r���r���r����poll2����s(���� rB����������>@Fc�������������C���sj���|d�krt�}|r ttd�r t}nt}|d�krBx8|r>||�|��q.W�n$x"|rd|dkrd||�|��|d�}qDW�d�S�)Nr?���r�������)r1����hasattrr%���rB���r?���)r:���Zuse_pollr;����countZpoll_funr���r���r����loop����s���� rG���c���������������@���s6��e�Zd�ZdZdZdZdZdZdZe dh�Z dAdd�Zdd��ZeZ dBdd �ZdCd d�Zejejfdd �ZdDdd�Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zd d!��Zd"d#��Zd$d%��ZdEd'd(�Z d)d*��Z!d+d,��Z"d-d.��Z#d/d0��Z$d1d2��Z%d3d4��Z&d5d6��Z'd7d8��Z(d9d:��Z)d;d<��Z*d=d>��Z+d?d@��Z,dS�)F� dispatcherFN�warningc���������� ���C���s����|d�krt�|�_n||�_d�|�_|r�|�d��|��||��d|�_y|���|�_W�q��tk r��}�z*|j d�t tfkrvd|�_n|��|����W�d�d�}~X�Y�q�X�nd�|�_ d�S�)Nr���TF)r1����_map�_fileno�setblocking� set_socket� connectedZgetpeername�addrr*���r+���r���r����del_channel�socket)�self�sockr;���r���r���r���r����__init__����s ���� zdispatcher.__init__c�������������C���s����|�j�jd�|�j�j�g}|�jr.|�jr.|�d��n|�jr>|�d��|�jd�k r�y|�d|�j���W�n$�tk r����|�t|�j���Y�nX�dd� |�t |��f�S�)N�.Z listeningrN���z%s:%dz<%s at %#x>� )� __class__r���r���r7���rO���r6���rN���� TypeError�repr�join�id)rR���Zstatusr���r���r����__repr__����s���� zdispatcher.__repr__c�������������C���s���|d�kr|�j�}|�||�j<�d�S�)N)rJ���rK���)rR���r;���r���r���r����add_channel��s����zdispatcher.add_channelc�������������C���s,���|�j�}|d�kr|�j}||kr"||=�d�|�_�d�S�)N)rK���rJ���)rR���r;���r>���r���r���r���rP�����s����zdispatcher.del_channelc�������������C���s.���||f|�_�t�||�}|�d��|��|��d�S�)Nr���)Zfamily_and_typerQ���rL���rM���)rR���Zfamily�typerS���r���r���r���� create_socket��s���� zdispatcher.create_socketc�������������C���s���||�_�|���|�_|��|��d�S�)N)rQ����filenorK���r]���)rR���rS���r;���r���r���r���rM��� ��s���� zdispatcher.set_socketc�������������C���sD���y*|�j��t�jt�j|�j��t�jt�j�dB���W�n�tk r>���Y�nX�d�S�)NrD���)rQ���Z setsockopt� SOL_SOCKETZSO_REUSEADDR� getsockoptr*���)rR���r���r���r����set_reuse_addr%��s���� zdispatcher.set_reuse_addrc�������������C���s���dS�)NTr���)rR���r���r���r���r4���6��s����zdispatcher.readablec�������������C���s���dS�)NTr���)rR���r���r���r���r5���9��s����zdispatcher.writablec�������������C���s(���d|�_�tjdkr|dkrd}|�j�|�S�)NT�nt����)r7���r����namerQ����listen)rR���Znumr���r���r���rg���@��s����zdispatcher.listenc�������������C���s���||�_�|�j�|�S�)N)rO���rQ����bind)rR���rO���r���r���r���rh���F��s����zdispatcher.bindc�������������C���sp���d|�_�d|�_|�j�|�}|tttfks8|tkrBtj dkrB||�_ d�S�|dtfkr^||�_ |�����nt |t|���d�S�)NFTrd���r���)rN���� connectingrQ���Z connect_exr���r���r���r���r���rf���rO���r ����handle_connect_eventr*���r���)rR���Zaddressr���r���r���r����connectJ��s���� zdispatcher.connectc���������� ���C���sn���y|�j����\}}W�nN�tk r&���d�S��tk r`�}�z|jd�tttfkrNd�S���W�d�d�}~X�Y�n X�||fS�d�S�)Nr���)rQ����acceptrX���r*���r+���r���r���r ���)rR���ZconnrO����whyr���r���r���rl���X��s����zdispatcher.acceptc���������� ���C���sf���y|�j��|�}|S��tk r`�}�z2|jd�tkr4dS�|jd�tkrN|�����dS���W�d�d�}~X�Y�nX�d�S�)Nr���)rQ����sendr*���r+���r���r,���r)���)rR����data�resultrm���r���r���r���rn���f��s����zdispatcher.sendc���������� ���C���sh���y$|�j��|�}|s|�����dS�|S�W�n>�tk rb�}�z |jd�tkrP|�����dS���W�d�d�}~X�Y�nX�d�S�)N�����r���)rQ����recvr)���r*���r+���r,���)rR����buffer_sizero���rm���r���r���r���rr���s��s����zdispatcher.recvc���������� ���C���sn���d|�_�d|�_d|�_|�����|�jd�k rjy|�j����W�n6�tk rh�}�z|jd�tt fkrX��W�d�d�}~X�Y�nX�d�S�)NFr���) rN���r7���ri���rP���rQ����closer*���r+���r���r ���)rR���rm���r���r���r���rt������s���� zdispatcher.closec�������������C���s���t�j�dt|����d�S�)Nzlog: %s )�sys�stderrr"����str)rR����messager���r���r����log���s����zdispatcher.log�infoc�������������C���s���||�j�krtd||f���d�S�)Nz%s: %s)�ignore_log_types�print)rR���rx���r^���r���r���r����log_info���s���� zdispatcher.log_infoc�������������C���s:���|�j�r|�����n&|�js.|�jr$|�����|�����n|�����d�S�)N)r7���� handle_acceptrN���ri���rj����handle_read)rR���r���r���r���r������s���� zdispatcher.handle_read_eventc�������������C���s@���|�j��t�jt�j�}|dkr(t|t|���|�����d|�_d|�_d�S�)Nr���TF) rQ���rb���ra����SO_ERRORr*���r����handle_connectrN���ri���)rR���r���r���r���r���rj������s����zdispatcher.handle_connect_eventc�������������C���s*���|�j�r d�S�|�js|�jr|�����|�����d�S�)N)r7���rN���ri���rj����handle_write)rR���r���r���r���r!������s����zdispatcher.handle_write_eventc�������������C���s0���|�j��t�jt�j�}|dkr$|�����n|�����d�S�)Nr���)rQ���rb���ra���r����r)����handle_expt)rR���r���r���r���r���r#������s���� zdispatcher.handle_expt_eventc�������������C���sX���t���\}}}}yt|��}W�n���dt|���}Y�nX�|��d||||f�d��|�����d�S�)Nz)<__repr__(self) failed for object at %0x>z:uncaptured python exception, closing channel %s (%s:%s %s)�error)�compact_tracebackrY���r[���r}���r)���)rR���Znil�t�v�tbinfoZ self_reprr���r���r���r������s����zdispatcher.handle_errorc�������������C���s���|���dd��d�S�)Nz!unhandled incoming priority eventrI���)r}���)rR���r���r���r���r�������s����zdispatcher.handle_exptc�������������C���s���|���dd��d�S�)Nzunhandled read eventrI���)r}���)rR���r���r���r���r������s����zdispatcher.handle_readc�������������C���s���|���dd��d�S�)Nzunhandled write eventrI���)r}���)rR���r���r���r���r�������s����zdispatcher.handle_writec�������������C���s���|���dd��d�S�)Nzunhandled connect eventrI���)r}���)rR���r���r���r���r�������s����zdispatcher.handle_connectc�������������C���s���|�����}|d�k r|�j|���d�S�)N)rl����handle_accepted)rR���Zpairr���r���r���r~������s����zdispatcher.handle_acceptc�������������C���s���|�����|��dd��d�S�)Nzunhandled accepted eventrI���)rt���r}���)rR���rS���rO���r���r���r���r�������s����zdispatcher.handle_acceptedc�������������C���s���|���dd��|�����d�S�)Nzunhandled close eventrI���)r}���rt���)rR���r���r���r���r)������s����zdispatcher.handle_close)NN)N)N)N)rz���)-r���r���r����debugrN���r7���ri����closingrO���� frozensetr{���rT���r\����__str__r]���rP���rQ���ZAF_INETZSOCK_STREAMr_���rM���rc���r4���r5���rg���rh���rk���rl���rn���rr���rt���ry���r}���r���rj���r!���r#���r���r����r���r����r����r~���r����r)���r���r���r���r���rH�������sL��� rH���c���������������@���s6���e�Zd�Zddd�Zdd��Zdd��Zdd ��Zd d��ZdS�) �dispatcher_with_sendNc�������������C���s���t��|�||��d|�_d�S�)Nrq���)rH���rT���� out_buffer)rR���rS���r;���r���r���r���rT������s����zdispatcher_with_send.__init__c�������������C���s.���d}t��|�|�jd�d���}|�j|d���|�_d�S�)Nr���i���)rH���rn���r����)rR���Znum_sentr���r���r���� initiate_send��s����z"dispatcher_with_send.initiate_sendc�������������C���s���|������d�S�)N)r����)rR���r���r���r���r������s����z!dispatcher_with_send.handle_writec�������������C���s���|�j��pt|�j�S�)N)rN����lenr����)rR���r���r���r���r5��� ��s����zdispatcher_with_send.writablec�������������C���s0���|�j�r|��dt|����|�j|�|�_|�����d�S�)Nz sending %s)r����r}���rY���r����r����)rR���ro���r���r���r���rn��� ��s����zdispatcher_with_send.send)NN)r���r���r���rT���r����r����r5���rn���r���r���r���r���r�������s ��� r����c��������������C���s����t����\}�}}g�}|std��x0|rN|�|jjj|jjjt|j �f��|j }q W�~|d�\}}}d�dd��|D���}|||f|�||fS�)Nztraceback does not exist���rV���c�������������S���s���g�|�]}d�|��qS�)z [%s|%s|%s]r���)�.0�xr���r���r���� <listcomp>(��s����z%compact_traceback.<locals>.<listcomp>)ru����exc_info�AssertionErrorr6����tb_frame�f_code�co_filename�co_namerw���� tb_lineno�tb_nextrZ���)r����r�����tbr�����fileZfunction�linerz���r���r���r���r������s���� r����c�������������C���s����|�d�krt�}�x~t|�����D�]n}y|����W�q�tk rb�}�z|jd�tkrLn|sR��W�d�d�}~X�Y�q�tk rv�����Y�q���|s���Y�qX�qW�|�����d�S�)Nr���) r1���r2����valuesrt���r*���r+���r ���r����clear)r;���Z ignore_allr����r���r���r���� close_all+��s ����r�����posixc���������������@���sN���e�Zd�Zdd��Zdd��Zdd��Zdd��Zdd d�ZeZeZ dd ��Z dd��Zd S�)�file_wrapperc�������������C���s���t��|�|�_d�S�)N)r����dupr>���)rR���r>���r���r���r���rT���P��s����zfile_wrapper.__init__c�������������C���s*���|�j�dkrtjd|��t|�d��|�����d�S�)Nr���zunclosed file %r)�source)r>����warnings�warn�ResourceWarningrt���)rR���r���r���r����__del__S��s���� zfile_wrapper.__del__c�������������G���s���t�j|�jf|���S�)N)r���r ���r>���)rR���r+���r���r���r���rr���Y��s����zfile_wrapper.recvc�������������G���s���t�j|�jf|���S�)N)r���r"���r>���)rR���r+���r���r���r���rn���\��s����zfile_wrapper.sendNc�������������C���s(���|t�jkr|t�jkr|sdS�td��d�S�)Nr���z-Only asyncore specific behaviour implemented.)rQ���ra���r�����NotImplementedError)rR����levelZoptnameZbuflenr���r���r���rb���_��s ���� zfile_wrapper.getsockoptc�������������C���s(���|�j�dk�rd�S�|�j�}d|�_�t�|��d�S�)Nr���r����)r>���r���rt���)rR���r>���r���r���r���rt���j��s ���� zfile_wrapper.closec�������������C���s���|�j�S�)N)r>���)rR���r���r���r���r`���q��s����zfile_wrapper.fileno)N)r���r���r���rT���r����rr���rn���rb���r ���r"���rt���r`���r���r���r���r���r����K��s��� r����c���������������@���s���e�Zd�Zddd�Zdd��ZdS�)�file_dispatcherNc�������������C���sP���t��|�d�|��d|�_y|���}W�n�tk r4���Y�nX�|��|��t�|d��d�S�)NTF)rH���rT���rN���r`����AttributeError�set_filer����set_blocking)rR���r>���r;���r���r���r���rT���v��s���� zfile_dispatcher.__init__c�������������C���s"���t�|�|�_|�j���|�_|�����d�S�)N)r����rQ���r`���rK���r]���)rR���r>���r���r���r���r�������s���� zfile_dispatcher.set_file)N)r���r���r���rT���r����r���r���r���r���r����t��s��� r����)r0���N)r0���N)rC���FNN)NF).�__doc__r%���rQ���ru���r8���r����r����errnor���r���r���r���r���r���r���r ���r ���r���r���r ���r���r����r,���r1���r���r���� Exceptionr����KeyboardInterrupt� SystemExitr���r ���r"���r$���r/���r?���rB���Zpoll3rG���rH���r����r����r����rf���r����r����r���r���r���r����<module>/���sB���< ' ��, )