a UˆŠZ{ ã@s¶ddlZddlZddlZGdd„dƒZdd„Zedkr²ddlZe ejej¡Z e   d¡e   ¡Z ee ƒZ e ejej¡Ze  d¡e  ¡Z e  e gggde¡e  ¡ZeeeƒƒdS) éNc@s6eZdZdd„Zdd„Zd dd„Zdd „Zd d „Zd S)ÚNonBlockingFilecCs@||_t |j ¡tjtj¡g|_g|_g|_d|_ d|_ dS©N) ÚfdÚfcntlÚfilenoÚF_SETFLÚosÚO_NDELAYÚ read_fd_setÚ write_fd_setÚ exc_fd_setÚ user_dataÚcallback)Úselfr©rú3/usr/lib/python3.9/site-packages/rhn/nonblocking.pyÚ__init__ szNonBlockingFile.__init__cCsD||_|jD]}t | ¡tjtj¡q ||_||_||_||_ dSr) r rrrrr r r r r)rr r r r rÚfrrrÚ set_callbacks zNonBlockingFile.set_callbackrcCs¤d}|j|jg}|j}|j}td|ƒt |||¡\}}}td|||ƒ|j|vrdd}| |j¡|jrˆ|sv|sv|rˆ| ||||j¡|rqqtdƒ|j  |¡S)NrzCalling selectzSelect returnedéZ Returning) r rr r ÚprintÚselectÚremoverr Úread)rZamtZstatus_changedZreadfdsZwritefdsZexcfdsrrrr!s    zNonBlockingFile.readcCs |j |¡Sr)rÚwrite)rÚdatarrrr7szNonBlockingFile.writecCs t|j|ƒSr)Úgetattrr)rÚnamerrrÚ __getattr__:szNonBlockingFile.__getattr__N)r)Ú__name__Ú __module__Ú __qualname__rrrrrrrrrr s   rcCs"td|||ƒt|d ¡ƒdS)NzCallback calledr)rr)ÚrÚwÚer rrrr=srÚ__main__)Ú localhosti³)r&i´)rrrrrrZsocketZAF_INETZ SOCK_STREAMÚsZconnectZmakefilerÚssÚs2rrÚxxrÚlenrrrrÚs 4