
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
UZ{	                 @   s   d dl Z d dlZd dlZG dd dZdd Zedkrd dlZejejejZ	e	j
d
 e	j ZeeZejejejZej
d ej Zejegg g de ej Zeee dS )    Nc               @   s6   e Zd Zdd Zdd ZdddZdd	 Zd
d ZdS )NonBlockingFilec             C   s@   || _ tj| j j tjtj g | _g | _g | _d | _	d | _
d S )N)fdfcntlfilenoF_SETFLosO_NDELAYread_fd_setwrite_fd_set
exc_fd_set	user_datacallback)selfr    r   !/usr/lib/python3.6/nonblocking.py__init__
   s    zNonBlockingFile.__init__c             C   sH   || _ x$| j D ]}tj|j tjtj qW || _|| _|| _|| _	d S )N)
r	   r   r   r   r   r   r
   r   r   r   )r   r	   r
   r   r   r   fr   r   r   set_callback   s    zNonBlockingFile.set_callbackr   c             C   s   xd}| j | jg }| j}| j}td| tj|||\}}}td||| | j|krfd}|j| j | jr|sx|sx|r| j|||| j |rP qW td | jj	|S )Nr   zCalling selectzSelect returned   Z	Returning)
r	   r   r
   r   printselectremover   r   read)r   ZamtZstatus_changedZreadfdsZwritefdsZexcfdsr   r   r   r   !   s"    

zNonBlockingFile.readc             C   s   | j j|S )N)r   write)r   datar   r   r   r   7   s    zNonBlockingFile.writec             C   s   t | j|S )N)getattrr   )r   namer   r   r   __getattr__:   s    zNonBlockingFile.__getattr__N)r   )__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   	   s
   
r   c             C   s"   t d| || t | d j  d S )NzCallback calledr   )r   r   )rwer   r   r   r   r   =   s    r   __main__	localhost    )r%   r&   )r%   r'   )r   r   r   r   r   r   ZsocketZAF_INETZSOCK_STREAMsZconnectmakefiler   Zsss2r   r   Zxxr   lenr   r   r   r   <module>   s    4

