%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib64/python2.7/site-packages/zmq/green/
Upload File :
Create Path :
Current File : //usr/lib64/python2.7/site-packages/zmq/green/core.pyc

�
+�{Wc@sdZddlmZddlZddlZddlZddlZddlmZddlm	Z
ddlmZddl
Z
ddlmZdd	lmZeed
�r�ejejfZndZd�Zde
fd
��YZdefd��YZdS(sjThis module wraps the :class:`Socket` and :class:`Context` found in :mod:`pyzmq <zmq>` to be non blocking
i����(tprint_functionN(tContext(tSocketi(t_Poller(tAsyncResult(tget_hubtRCVTIMEOcCs2y|j�Wntk
r-}|j�nXdS(sNsimple wrapper for stopping an Event, allowing for method rename in gevent 1.0N(tstoptAttributeErrortcancel(tevtte((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyt_stop#st_SocketcBs�eZdZeZeZdZdZdZ	dZ
eZeZ
d�Zd�Zdd�Zd�Zd�Zddd�Zd�Zd	�Zd
eed�Zd
eed�Zd
�Zd�Zd�Zd�ZRS(sOGreen 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.
    g333333'@cOs9tt|�j||�t|_t|_|j�dS(N(tsuperR
t__init__tFalset_Socket__in_send_multipartt_Socket__in_recv_multipartt_Socket__setup_events(tselftatkw((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyRFs		cCs|j�dS(N(tclose(R((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyt__del__MscCs$tt|�j|�|j�dS(N(RR
Rt_Socket__cleanup_events(Rtlinger((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyRPscCsIt|dd�r+t|j�d|_n|jj�|jj�dS(Nt_state_event(tgetattrtNoneRRt_Socket__writabletsett_Socket__readable(R((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyt__cleanup_eventsTs


cCs�t�|_t�|_|jj�|jj�y>t�jj|jtj	�d�|_
|j
j|j�WnHt
k
r�ddlm}||jtj	�|jdt�|_
nXdS(Nii����(t
read_eventtpersist(RR RRRtlooptiot
getsockopttzmqtFDRtstartt_Socket__state_changedRtgevent.coreR"tTrue(RR"((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyt__setup_events]s

'
cCs�|jr|j�dSytt|�jtj�}Wn6tjk
rn}|jj	|�|j
j	|�n;X|tj@r�|jj�n|tj
@r�|j
j�ndS(N(tclosedRRR
R&R'tEVENTStZMQErrorRt
set_exceptionR tPOLLOUTRtPOLLIN(Rteventt_evtypeteventstexc((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyt__state_changedks	


cCs?|jj�std��t�|_tj�}|j}|rWtjd|�}nd}z�y*|rv|j	�n|jj
dt�Wn�tjk
r}||k	r��ntj�}|jr|r|||kr|j
tj�tj@rtd|jdtj�qnXWd|r-|j�n|jj�XdS(Ns.Only one greenlet can be waiting on this eventtsecondstblocks6BUG: gevent may have missed a libzmq send event on %i!tfile(RtreadytAssertionErrorRttimet_gevent_bug_timeouttgeventtTimeoutRR)tgetR,t
_debug_geventR&R'R/R2tprintR(tsyststderrR	R(Rttictdtttimeoutttttoc((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyt_wait_write{s,	
%
cCs?|jj�std��t�|_tj�}|j}|rWtjd|�}nd}z�y*|rv|j	�n|jj
dt�Wn�tjk
r}||k	r��ntj�}|jr|r|||kr|j
tj�tj@rtd|jdtj�qnXWd|r-|j�n|jj�XdS(Ns.Only one greenlet can be waiting on this eventR9R:s6BUG: gevent may have missed a libzmq recv event on %i!R;(R R<R=RR>R?R@RARR)RBR,RCR&R'R/R3RDR(RERFR	R(RRGRHRIRJRK((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyt
_wait_read�s,	
%
icCs�|tj@rPz%tt|�j||||�}Wd|jsK|j�nX|S|tjO}x�tr�y%tt|�j||||�}WnDtjk
r�}|j	tj
kr�|js�|j�n�q�nX|js�|j�n|S|j�q`WdS(s�send, which will only block current greenlet
        
        state_changed always fires exactly once (success or fail) at the
        end of this method.
        N(R'tNOBLOCKRR
tsendRR*R,R0terrnotEAGAINRL(RtdatatflagstcopyttracktmsgR((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyRO�s&
%	
	%	

	
cCs�|tj@rMz"tt|�j|||�}Wd|jsH|j�nX|S|tjO}x�tr�y"tt|�j|||�}WnDtjk
r�}|j	tj
kr�|js�|j�n�q�nX|js�|j�n|S|j�q]WdS(s�recv, which will only block current greenlet
        
        state_changed always fires exactly once (success or fail) at the
        end of this method.
        N(R'RNRR
trecvRR*R,R0RPRQRM(RRSRTRURVR((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyRW�s&
"	
	"	

	
cOsCt|_ztt|�j||�}Wdt|_|j�X|S(sAwrap send_multipart to prevent state_changed on each partial sendN(R,RRR
tsend_multipartRR*(RtargstkwargsRV((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyRX�s		cOsCt|_ztt|�j||�}Wdt|_|j�X|S(sAwrap recv_multipart to prevent state_changed on each partial recvN(R,RRR
trecv_multipartRR*(RRYRZRV((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyR[s		cCsW|tkrtjdt�ntt|�j|�}|tjkrS|j	�n|S(s+trigger state_changed on getsockopt(EVENTS)s0TIMEO socket options have no effect in zmq.green(
tTIMEOStwarningstwarntUserWarningRR
RBR'R/R*(Rtopttoptval((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyRB
s
cCs8|tkrtjdt�ntt|�j||�S(sset socket options0TIMEO socket options have no effect in zmq.green(R\R]R^R_RR
R(RR`tval((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyRsN(t__name__t
__module__t__doc__RRRRRR RR?RCRt
_poller_classRRRRRR*RLRMR,RORWRXR[RBR(((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyR
+s.							"	
	
		t_ContextcBseZdZeZRS(srReplacement for :class:`zmq.Context`

    Ensures that the greened Socket above is used in calls to `socket`.
    (RcRdReR
t
_socket_class(((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyRgs((Ret
__future__RRER>R]R'Rt_original_ContextRt_original_SockettpollRR@tgevent.eventRt
gevent.hubRthasattrRtSNDTIMEOR\RR
Rg(((s4/usr/lib64/python2.7/site-packages/zmq/green/core.pyt<module>s"	�

Zerion Mini Shell 1.0