HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/zmq/__pycache__/_future.cpython-310.pyc
o

�N�g6X�@s�dZddlZddlmZddlmZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZddlZddlmZmZmZddlmZGd	d
�d
e�ZGdd�d�ZGd
d�deej�Z Gdd�d�Z!eddd�Z"Gdd�deej#e�Z$dS)z%Future-returning APIs for coroutines.�N)�Future)�deque)�chain)
�Any�	Awaitable�Callable�Dict�List�
NamedTuple�Optional�Tuple�Type�TypeVar�Union�cast�overload)�EVENTS�POLLIN�POLLOUT)�Literalc@s6eZdZUeed<eed<eed<eed<eed<dS)�_FutureEvent�future�kind�kwargs�msg�timerN)�__name__�
__module__�__qualname__r�__annotations__�strrr�r!r!�?/opt/saltstack/salt/lib/python3.10/site-packages/zmq/_future.pyrs
rc@sReZdZUdZdZeed<eeed<defdd�Z	defdd	�Z
dd
d
d�ZdS)�_AsynczMixin for common async logicN�
_current_loop�_Future�returncCsL|jdur|��|_|�|j�|jS|��}||jur$||_|�|�|S)z�Get event loop

        Notice if event loop has changed,
        and register init_io_state on activation of a new event loop
        N)r$�
_default_loop�_init_io_state)�selfZcurrent_loopr!r!r"�	_get_loop6s



z_Async._get_loopcCstd��)Nz!Must be implemented in a subclass��NotImplementedError�r)r!r!r"r'Gsz_Async._default_loopcC�dS�Nr!�r)�loopr!r!r"r(Jsz_Async._init_io_stater/)r&N)rrr�__doc__r$rrr
rr*r'r(r!r!r!r"r#0s
r#c
s�eZdZUdZeded<eed<eed<eeed<deded	ed
e	ddf
d
d�Z
dededdfdd�Zddeee
eeff�fdd�
Z�ZS)�_AsyncPollerz:Poller that returns a Future on poll, instead of blocking.�_AsyncSocket�
_socket_class�_READ�_WRITE�raw_socketsr1�socket�evt�fr&NcC�t��)z"Schedule callback for a raw socketr+)r)r1r9r:r;r!r!r"�_watch_raw_socketV�z_AsyncPoller._watch_raw_socket�socketscGr<)z$Unschedule callback for a raw socketr+)r)r1r?r!r!r"�_unwatch_raw_socketsZr>z!_AsyncPoller._unwatch_raw_sockets���c
s�����|dkr0zt��d�}Wnty(}z��|�WYd}~�Sd}~ww��|��S��������g��fdd�}�����fdd���jD]R\}}t	|t
j�r}t	|�j�sd�j�
|�}|t
j@rp|jd�d�|t
j@r||jd�d�qN��|�d}|t
j@r�|�jO}|t
j@r�|�jO}���|||�qN����fd	d
�}��|�|dur�|dkrчfdd�}	��d
||	����fdd�}
��|
��fdd�}��|��S)z Return a Future for a poll eventrNc����s��d�dSdSr/��done�
set_result)�args��watcherr!r"�wake_rawr��z#_AsyncPoller.poll.<locals>.wake_rawcs�j�g��R�Sr/)r@�r;)r1r8r)r!r"�<lambda>wsz#_AsyncPoller.poll.<locals>.<lambda>�poll�rc
s����rdS���rz���WdStyYdSw���r)������dSz
tt���d�}Wnt	yK}z��|�WYd}~dSd}~ww��
|�dS�Nr)rD�	cancelled�cancel�RuntimeError�	exception�
set_exception�superr3rM�	ExceptionrE)r;�result�e)�	__class__rr)rHr!r"�
on_poll_ready�s&
����z(_AsyncPoller.poll.<locals>.on_poll_readycrBr/rCr!rGr!r"�trigger_timeout�rJz*_AsyncPoller.poll.<locals>.trigger_timeout���MbP?cs$t�d�r���dS����dS)NrQ)�hasattrrQZremove_timeoutrK)r1�timeout_handler!r"�cancel_timeout�s
z)_AsyncPoller.poll.<locals>.cancel_timeoutcs���s
���dSdSr/)rDrQrKrGr!r"�cancel_watcher�s�z)_AsyncPoller.poll.<locals>.cancel_watcher)r%rUrMrVrTrEr*�add_done_callbackr?�
isinstance�_zmq�Socketr5�from_socketr�_add_recv_eventr�_add_send_event�appendr6r7r=�
call_later)r)�timeoutrWrXrIr9�maskr:rZr[r_r`�rY)rr1r8r)r^rHr"rM^sX��
�

�







z_AsyncPoller.poll)rA)rrrr2r
r�intr	rrr=r@rrrM�
__classcell__r!r!rlr"r3Ns
,r3c@seZdZedd��ZdS)�_NoTimercCr.r/r!r!r!r!r"rQ�sz_NoTimer.cancelN)rrr�staticmethodrQr!r!r!r"ro�sro�Tr4)ZboundcseZdZUdZdZdZded<eZdZ					dPde
dddf�fdd	�
ZedQd
e
edddedefd
d��ZdQde
eddf�fdd�
Zejjje_�fdd�Zejjje_e	dRdd�dededeeefdd��Ze	dRdd�dededdedeeefdd��Ze	dRdd�dededdedeeejfdd��Ze	dSdedededeeeeeejffdd��Z	dSdedededeeeeeejffdd�Z	dSdedededeeeejffd d!�Z 	dSd"edededee
ej!fd#d$�Z"			dSd%edededed&edee
ej!fd'd(�Z#d)d*�Z$dej%fdeefd+d,�Z&dee'f�fd-d.�Z(dTd0e'ded1e'dedf�fd2d3�
Z)d4d5�Z*d6d7�Z+e,d8d9��Z-dUd:d;�Z.dVd<d=�Z/d>d?�Z0d@dA�Z1dWdBdC�Z2dQdDdE�Z3dFdG�Z4dHdI�Z5dJdK�Z6dQdLdM�Z7dNdO�Z8�Z9S)Xr4Nrz_zmq.Socket�_shadow_sockrA�_from_socketr&cs�t|tj�rd|}}|durt�j|jd�||_nt�j||fi|��tj�|j�|_|dur?tj	|j
j�d�tdd�t
�|_t
�|_d|_|jj|_dS)N)�shadowz^(io_loop) argument is deprecated in pyzmq 22.2. The currently active loop will always be used.�)�
stacklevelr)rbrcrdrU�__init__Z
underlyingrrrt�warnings�warnrYr�DeprecationWarningr�
_recv_futures�
_send_futures�_stateZFD�_fd)r)�contextZsocket_type�io_looprsrrlr!r"rw�s"
�z_AsyncSocket.__init__�clsr9r�cCs|||d�S)z.Create an async socket from an existing Socket)rsr�r!)r�r9r�r!r!r"re�sz_AsyncSocket.from_socket�lingerc	sz|js4|jdur4tt|jpg|jpg��}|D]}|j��s/z|j��Wqt	y.Yqwq|�
�t�j|d�dS)N)r�)
�closedr~�listrr{r|rrDrQrR�_clear_io_staterU�close)r)r��
event_list�eventrlr!r"r��s�
��z_AsyncSocket.closecs"t��|�}|tkr|�|�|Sr/)rU�getr�_schedule_remaining_events)r)�keyrWrlr!r"r�s
z_AsyncSocket.getF)�track�flagsr�cCr.r/r!)r)r�r�r!r!r"�recv_multipart
�z_AsyncSocket.recv_multipart�copyTcCr.r/r!�r)r�r�r�r!r!r"r�r�cCr.r/r!r�r!r!r"r�r�cCr.r/r!r�r!r!r"r�r�cC�|�dt|||d��S)zvReceive a complete multipart zmq message.

        Returns a Future whose result will be a multipart message.
        r��r�r�r��rf�dictr�r!r!r"r�"s�cCr�)z�Receive a single zmq frame.

        Returns a Future, whose result will be the received frame.

        Recommend using recv_multipart instead.
        �recvr�r�r�r!r!r"r�-s	z_AsyncSocket.recv�	msg_partscKs(||d<||d<||d<|jd||d�S)zqSend a complete multipart zmq message.

        Returns a Future that resolves when sending is complete.
        r�r�r��send_multipart�rr)rg)r)r�r�r�r�rr!r!r"r�8sz_AsyncSocket.send_multipart�datarcKs<||d<||d<||d<|�t|||d��|jd||d�S)z�Send a single zmq frame.

        Returns a Future that resolves when sending is complete.

        Recommend using send_multipart instead.
        r�r�r�r��sendr�)�updater�rg)r)r�r�r�r�rr!r!r"r�Ds
z_AsyncSocket.sendcs>|������fdd�}��|���fdd�}��|��S)zDeserialize with Futuresc
sz���rdS���r������dS���}z�|�}Wnty5}z��|�WYd}~dSd}~ww��|�dS)z+Chain result through serialization to recvdN)rDrSrTrWrVrE)�_�bufZloadedrX�r;�load�recvdr!r"�_chain\s��z)_AsyncSocket._deserialize.<locals>._chaincs$���rdS���r���dSdS)z"Chain cancellation from f to recvdN)rDrPrQ)r�)r;r�r!r"�
_chain_cancelms
�z0_AsyncSocket._deserialize.<locals>._chain_cancel)r%ra)r)r�r�r�r�r!r�r"�_deserializeXs

z_AsyncSocket._deserializecsn�jr	t�tj�����}|��|�tt|�|��}��	����fdd�}|�
�r0||��S|�|��S)zSpoll the socket for events

        returns a Future for the poll results.
        cst���rdS|��rz���WdStyYdSw|��r)��|���dSt|���}��|�	�d��dSrO)
rDrPrQrRrSrTr�rWrEr�)r;Zevts�rr)r!r"�
unwrap_result�s
��z(_AsyncSocket.poll.<locals>.unwrap_result)r�rcZZMQError�ENOTSUP�
_poller_class�registerrrrMr%rDra)r)rjr��pr;r�r!r�r"rMxs
�z_AsyncSocket.pollcst�j|i|��Sr/)rU�recv_string)r)rFrrlr!r"r���z_AsyncSocket.recv_string�utf-8�s�encodingcst�j|||d�S)N)r�r�)rU�send_string)r)r�r�r�rlr!r"r��r�z_AsyncSocket.send_stringcs�fdd�}|�||�S)z'Add a timeout for a send or recv Futurecs���rdS��t���dSr/)rDrTrc�Againr!rNr!r"�future_timeout�sz1_AsyncSocket._add_timeout.<locals>.future_timeout)�_call_later)r)rrjr�r!rNr"�_add_timeout�sz_AsyncSocket._add_timeoutcCs|���||�S)z�Schedule a function to be called later

        Override for different IOLoop implementations

        Tornado and asyncio happen to both have ioloop.call_later
        with the same signature.
        )r*ri)r)�delay�callbackr!r!r"r��sz_AsyncSocket._call_latercCs6t|�D]\}}|j|urnqdS|�||�dS)z�Make sure that futures are removed from the event list when they resolve

        Avoids delaying cleanup until the next send/recv event,
        which may never come.
        N)�	enumerater�remove)rr�Zf_idxr�r!r!r"�_remove_finished_future�s
�z$_AsyncSocket._remove_finished_futurec

s|p���}|�d�rC|�dd�tj@rCt�j|�}z	|d
i|��}Wnty;}z|�|�WYd}~|Sd}~ww|�	|�|St
}ttd�rZ�jj}	|	dkrZ��
||	d�}�j�t|||d|d��|��fdd	���j�t�t@r|����jr���t�|S)z4Add a recv event, returning the corresponding Futurer�r�rNZRCVTIMEOr\)rrc���|�j�Sr/)r�r{rKr-r!r"rL��z._AsyncSocket._add_recv_event.<locals>.<lambda>r!)r%�
startswithr�rc�DONTWAIT�getattrrrrVrTrEror]Zrcvtimeor�r{rhrrarr�_handle_recv�
_add_io_state)
r)rrrr;r��rrXr�
timeout_msr!r-r"rf�s4��


�
z_AsyncSocket._add_recv_eventc
s\|p���}|dvrw�jsw|�dd�}|��}|tjB|d<t�j|�}d}	z
||fi|��}
Wn6tjyP}z|tj@rD|�	|�nd}	WYd}~n d}~wt
yf}z|�	|�WYd}~n
d}~ww|�|
�|	rw�jru��
�|St}ttd�r��j�tj�}
|
dkr���||
d�}�j�t|||||d	��|��fd
d����t�|S)z4Add a send event, returning the corresponding Future)r�r�r�rTFN�SNDTIMEOr\)rrrcr�r/)r�r|rKr-r!r"rL"r�z._AsyncSocket._add_send_event.<locals>.<lambda>)r%r|r�r�rcr�r�rrr�rTrVrEr{r�ror]r�r�rhrrar�r)r)rrrrr;r�Z
nowait_kwargsr�Zfinish_earlyr�rXrr�r!r-r"rg�sH
���

�
�
z_AsyncSocket._add_send_eventc	
Cs|j�t�t@s
dSd}|jr$|j��\}}}}}|��r d}nn|js|js,|�t�|dur2dS|��|dkrA|�	d�dS|dkrJ|jj
}n|dkrS|jj}ntd|��|dt
jO<z	|di|��}Wnty�}z|�|�WYd}~dSd}~ww|�	|�dS)zHandle recv eventsNrMr�r�zUnhandled recv event type: %rr�r!)rrr�rrr{�popleftrD�_drop_io_staterQrEr�r��
ValueErrorrcr�rVrT)	r)r;rrr�rr�rWrXr!r!r"r�(s<�



��z_AsyncSocket._handle_recvc	
Cs|j�t�t@s
dSd}|jr$|j��\}}}}}|��r d}nn|js|js,|�t�|dur2dS|��|dkrA|�	d�dS|dkrJ|jj
}n|dkrS|jj}ntd|��|dt
jO<z
||fi|��}Wnty�}z|�|�WYd}~dSd}~ww|�	|�dS)NrMr�r�zUnhandled send event type: %rr�)rrr�rrr|r�rDr�rQrEr�r�r�rcr�rVrT)	r)r;rrrrr�rWrXr!r!r"�_handle_sendQs<�



��z_AsyncSocket._handle_sendcCs<|j�t�}|tj@r|��|tj@r|��|��dS)z(Dispatch IO events to _handle_recv, etc.N)	rrr�rrcrr�rr�r�)r)�fd�eventsZ
zmq_eventsr!r!r"�_handle_eventszs

z_AsyncSocket._handle_eventscCsB|jdkrdS|dur|j�t�}||j@r|�d|j�dSdS)zkSchedule a call to handle_events next loop iteration

        If there are still events to handle.
        rN)r}rrr�rr�r�)r)r�r!r!r"r��s

�z'_AsyncSocket._schedule_remaining_eventscCs*|j|kr
|j|B}|_|�|j�dS)zAdd io_state to poller.N�r}�_update_handler�r)�stater!r!r"r��s
z_AsyncSocket._add_io_statecCs(|j|@r|j|@|_|�|j�dS)z&Stop poller from watching an io_state.Nr�r�r!r!r"r��s
z_AsyncSocket._drop_io_statecCs|r|��|��dS)zOUpdate IOLoop handler with state.

        zmq FD is always read-only.
        N)r*r�r�r!r!r"r��sz_AsyncSocket._update_handlercCs6|dur|��}|�|j|j|j�|�d|j�dS)z#initialize the ioloop event handlerNr)r*Zadd_handlerrrr�r6r�r0r!r!r"r(�sz_AsyncSocket._init_io_statecCs2|j}|jjr
|j}|jdur|j�|�dSdS)zNunregister the ioloop event handler

        called once during close
        N)rrr�r~r$Zremove_handler)r)r�r!r!r"r��s
�z_AsyncSocket._clear_io_state)NrANNr/)r)rTF)rr�)NN)NNN)rr):rrrr{r|r}rr3r�r~rrw�classmethodr
rqrrermr�rcrdr2r�r�boolrr	�bytesr�rZFramerr�ZMessageTrackerr�r�r�rrMr r�r�r�r�rpr�rfrgr�r�r�r�r�r�r�r(r�rnr!r!rlr"r4�s
���"����
������
����������������
�����
�����
�������
� '$




$8)
)
	
)%r2rxZasyncior�collectionsr�	itertoolsr�typingrrrrr	r
rrr
rrrrZzmqrcrrrZzmq._typingrrr#ZPollerr3rorqrdr4r!r!r!r"�<module>s<m