o
    ªZhD  ã                   @   s†   d Z zddlmZ W n ey   ddlmZ Y nw ddlZddlmZmZ ddl	m
Z
 ddl	mZ d	d
„ Zdd„ Zdd„ ZdgZdS )zzmq poll functioné    )Ú	monotonic)ÚclockN)ÚInterruptedSystemCallÚ	_check_rcé   )Úffi)Úlibc                 C   s0   | j }t d¡}||_d|_||_d|_|d S ©Nzzmq_pollitem_t*r   )Ú_zmq_socketr   ÚnewÚsocketÚfdÚeventsÚrevents)r   ÚflagsZ
zmq_socketÚzmq_pollitem© r   úM/var/www/html/lang_env/lib/python3.10/site-packages/zmq/backend/cffi/_poll.pyÚ_make_zmq_pollitem   s   
r   c                 C   s,   t  d¡}t j|_| |_||_d|_|d S r	   )r   r   ÚNULLr   r   r   r   )Z	socket_fdr   r   r   r   r   Ú_make_zmq_pollitem_fromfd   s   
r   c                 C   s˜  g }i }ddl m} | D ]@}t|d |ƒr)|||d j< | t|d |d ƒ¡ qt|d tƒs:|d  ¡ |d f}|||d < | t|d |d ƒ¡ qt	 
d|¡}t	 dt|ƒ¡}	 t	 d|¡}tƒ }	t |||¡}
zt|
ƒ W n- tyŸ   |dkrtdtƒ |	  ƒ}|dk r–t d	|› d
t¡ d}td|| ƒ}Y q[w 	 g }|D ]$}|jdkrÉ|jt	jkrÀ| ||j d |jf¡ q¥| |j|jf¡ q¥|S )Nr   )ÚSocketr   zzmq_pollitem_t[]ÚintTÚlongiè  z,Negative elapsed time for interrupted poll: z.  Did the clock change?)Zzmqr   Ú
isinstancer
   Úappendr   r   Úfilenor   r   r   ÚcastÚlenr   ÚCÚzmq_pollr   r   ÚwarningsÚwarnÚRuntimeWarningÚmaxr   r   r   r   )ZsocketsÚtimeoutZcffi_pollitem_listZlow_level_to_socket_objr   ÚitemÚitemsZlist_lengthZ	c_timeoutÚstartÚrcZ	ms_passedÚresultr   r   r   r    &   sX   
ýó
þÿ€r    )Ú__doc__Útimer   ÚImportErrorr   r!   Z	zmq.errorr   r   Z_cffir   r   r   r   r   r    Ú__all__r   r   r   r   Ú<module>   s    ÿ
	
6