HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib64/python3.6/site-packages/zmq/green/__pycache__/core.cpython-36.pyc
3

VS�_O)�@s�dZddlmZddlZddlZddlZddlZddlmZddlm	Z
ddlmZddl
Z
ddlmZdd	lmZeed
�r�ejejfZnfZdd�ZGd
d�de
�ZGdd�de�ZdS)zjThis module wraps the :class:`Socket` and :class:`Context` found in :mod:`pyzmq <zmq>` to be non blocking
�)�print_functionN)�Context)�Socket�)�_Poller)�AsyncResult)�get_hub�RCVTIMEOcCs<y|j�Wn*tk
r6}z|j�WYdd}~XnXdS)zNsimple wrapper for stopping an Event, allowing for method rename in gevent 1.0N)�stop�AttributeError�cancel)Zevt�e�r�/usr/lib64/python3.6/core.py�_stop#srcs�eZdZdZdZdZdZdZdZdZ	dZ
eZ�fdd�Z
dd�Zd#�fd	d
�	Zdd�Zd
d�Zd$�fdd�	Zdd�Zdd�Zd%�fdd�	Zd&�fdd�	Z�fdd�Z�fdd�Z�fdd �Z�fd!d"�Z�ZS)'�_SocketaOGreen version of :class:`zmq.Socket`

    The following methods are overridden:

        * send
        * recv

    To ensure that the ``zmq.NOBLOCK`` flag is set and that sending or receiving
    is deferred to the hub if a ``zmq.EAGAIN`` (retry) error is raised.
    
    The `__state_changed` method is triggered when the zmq.FD for the socket is
    marked as readable and triggers the necessary read and write events (which
    are waited for in the recv and send methods).

    Some double underscore prefixes are used to minimize pollution of
    :class:`zmq.Socket`'s namespace.
    FNg333333'@cs*tt|�j||�d|_d|_|j�dS)NF)�superr�__init__�_Socket__in_send_multipart�_Socket__in_recv_multipart�_Socket__setup_events)�self�a�kw)�	__class__rrrFsz_Socket.__init__cCs|j�dS)N)�close)rrrr�__del__Msz_Socket.__del__cstt|�j|�|j�dS)N)rrr�_Socket__cleanup_events)rZlinger)rrrrPsz
_Socket.closecCs4t|dd�rt|j�d|_|jj�|jj�dS)N�_state_event)�getattrrr�_Socket__writable�set�_Socket__readable)rrrrZ__cleanup_eventsTs


z_Socket.__cleanup_eventscCs�t�|_t�|_|jj�|jj�y,t�jj|jtj	�d�|_
|j
j|j�Wn:t
k
r�ddlm}||jtj	�|jdd�|_
YnXdS)Nrr)�
read_eventT)Zpersist)rr"r r!rZloop�io�
getsockopt�zmq�FDr�start�_Socket__state_changedrZgevent.corer#)rr#rrrZ__setup_events]s

z_Socket.__setup_eventscs�|jr|j�dSytt|�jtj�}Wn<tjk
rd}z|jj	|�|j
j	|�WYdd}~Xn*X|tj@rz|jj�|tj
@r�|j
j�dS)N)�closedrrrr%r&�EVENTS�ZMQErrorr Z
set_exceptionr"�POLLOUTr!�POLLIN)rZeventZ_evtypeZevents�exc)rrrZ__state_changedks


z_Socket.__state_changedcCs�|jj�std��t�|_tj�}|j}|r:tj|d�}nd}z�y|rN|j�|jj	dd�Wnrtjk
r�}zT||k	r|�tj�}|j
r�|r�|||kr�|jtj
�tj@r�td|jtjd�WYdd}~XnXWd|r�|j�|jj�XdS)Nz.Only one greenlet can be waiting on this event)�secondsT)�blockz6BUG: gevent may have missed a libzmq send event on %i!)�file)r �ready�AssertionErrorr�time�_gevent_bug_timeout�gevent�Timeoutr(�get�
_debug_geventr%r&r+r-�printr'�sys�stderrrr!)r�tic�dt�timeout�t�tocrrr�_wait_write{s**z_Socket._wait_writecCs�|jj�std��t�|_tj�}|j}|r:tj|d�}nd}z�y|rN|j�|jj	dd�Wnrtjk
r�}zT||k	r|�tj�}|j
r�|r�|||kr�|jtj
�tj@r�td|jtjd�WYdd}~XnXWd|r�|j�|jj�XdS)Nz.Only one greenlet can be waiting on this event)r0T)r1z6BUG: gevent may have missed a libzmq recv event on %i!)r2)r"r3r4rr5r6r7r8r(r9r:r%r&r+r.r;r'r<r=rr!)rr>r?r@rArBrrr�
_wait_read�s**z_Socket._wait_readrTcs�|tj@r>ztt|�j||||f|�}Wd|js8|j�X|S|tjO}xzytt|�j||||�}Wn@tjk
r�}z"|jtj	kr�|js�|j��WYdd}~XnX|js�|j�|S|j
�qJWdS)z�send, which will only block current greenlet
        
        state_changed always fires exactly once (success or fail) at the
        end of this method.
        N)r&�NOBLOCKrr�sendrr)r,�errno�EAGAINrC)r�data�flags�copy�track�kwargs�msgr
)rrrrF�s&


z_Socket.sendcs�|tj@r8ztt|�j|||�}Wd|js2|j�X|S|tjO}xxytt|�j|||�}Wn@tjk
r�}z"|jtj	kr�|js�|j��WYdd}~XnX|js�|j�|S|j
�qDWdS)z�recv, which will only block current greenlet
        
        state_changed always fires exactly once (success or fail) at the
        end of this method.
        N)r&rErr�recvrr)r,rGrHrD)rrJrKrLrNr
)rrrrO�s&


z_Socket.recvcs2d|_ztt|�j||�}Wdd|_|j�X|S)zAwrap send_multipart to prevent state_changed on each partial sendTNF)rrr�send_multipartr))r�argsrMrN)rrrrP�s
z_Socket.send_multipartcs2d|_ztt|�j||�}Wdd|_|j�X|S)zAwrap recv_multipart to prevent state_changed on each partial recvTNF)rrr�recv_multipartr))rrQrMrN)rrrrRs
z_Socket.recv_multipartcs:|tkrtjdt�tt|�j|�}|tjkr6|j	�|S)z+trigger state_changed on getsockopt(EVENTS)z0TIMEO socket options have no effect in zmq.green)
�TIMEOS�warnings�warn�UserWarningrrr9r&r+r))r�optZoptval)rrrr9
s
z_Socket.getcs&|tkrtjdt�tt|�j||�S)zset socket optionz0TIMEO socket options have no effect in zmq.green)rSrTrUrVrrr!)rrW�val)rrrr!sz_Socket.set)N)NN)rTF)rTF)�__name__�
__module__�__qualname__�__doc__rrr r"rr6r:rZ
_poller_classrrrrrr)rCrDrFrOrPrRr9r!�
__classcell__rr)rrr+s.	"

	rc@seZdZdZeZdZdS)�_ContextzrReplacement for :class:`zmq.Context`

    Ensures that the greened Socket above is used in calls to `socket`.
    N)rYrZr[r\rZ
_socket_classZ	_instancerrrrr^sr^)r\Z
__future__rr<r5rTr&rZ_original_ContextrZ_original_SocketZpollrr7Zgevent.eventrZ
gevent.hubr�hasattrr	ZSNDTIMEOrSrrr^rrrr�<module>s$
p