Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib64/python3.7/site-packages/twisted/spread/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/site-packages/twisted/spread/__pycache__/util.cpython-37.pyc

B

;��]��@s�dZddlmZddlmZddlmZddlmZddlm	Z	ddl
mZGdd	�d	�ZGd
d�d�Z
Gdd
�d
�ZGdd�d�ZGdd�de�Zee	j�Gdd�de��ZGdd�dej�Zdd�ZdS)z
Utility classes for spread.
�)�defer)�Failure)�pb)�basic)�
interfaces)�implementerc@seZdZdd�Zdd�ZdS)�LocalMethodcCs||_||_dS)N)�local�name)�selfr	r
�r�F/opt/alt/python37/lib64/python3.7/site-packages/twisted/spread/util.py�__init__szLocalMethod.__init__cOs|jj|jf|�|�S)N)r	�
callRemoter
)r�args�kwrrr
�__call__szLocalMethod.__call__N)�__name__�
__module__�__qualname__rrrrrr
rsrc@s$eZdZdZdZdd�Zdd�ZdS)�
LocalAsRemotezN
    A class useful for emulating the effects of remote behavior locally.
    �cOsjt|d|�r"t|d|�||�Syt|d|�}t�|||��St�}|jr\|��t�|�SdS)ax
        Call a specially-designated local method.

        self.callRemote('x') will first try to invoke a method named
        sync_x and return its result (which should probably be a
        Deferred).  Second, it will look for a method called async_x,
        which will be called and then have its result (or Failure)
        automatically wrapped in a Deferred.
        Zsync_Zasync_N)�hasattr�getattrr�succeedr�reportAllTracebacksZprintTraceback�fail)rr
rr�method�frrr
r#s
zLocalAsRemote.callRemotecCs
t||�S)N)r)rr
rrr
�remoteMethod8szLocalAsRemote.remoteMethodN)rrr�__doc__rrrrrrr
rsrc@s*eZdZdZd
dd�Zdd�Zdd�Zd	S)�LocalAsyncForwarderzD
    A class useful for forwarding a locally-defined interface.
    rcCs$|�|�st�||_||_||_dS)N)Z
providedBy�AssertionError�	forwarded�interfaceClass�failWhenNotImplemented)rr#r$r%rrr
rAszLocalAsyncForwarder.__init__cOst|j|�||�S)N)rr#)rrrrrrr
�_callMethodGszLocalAsyncForwarder._callMethodcOsN|j�|�r&tj|j|f|�|�}|S|jr@t�ttd|��St�	d�SdS)NzNo Such Method in Interface: %s)
r$ZqueryDescriptionForrZ
maybeDeferredr&r%rr�NotImplementedErrorr)rrrr�resultrrr
rJszLocalAsyncForwarder.callRemoteN)r)rrrr rr&rrrrr
r!<s
r!c@s:eZdZdZd
dd�Zdd�Zdd�Zd	d
�Zdd�ZdS)�Pagerz5
    I am an object which pages out information.
    NcOs>t|�r||_||_||_nd|_d|_||_|j�|�dS)z�
        Create a pager with a Reference to a remote collector and
        an optional callable to invoke upon completion.
        Nr)�callable�callback�callbackArgs�callbackKeyword�_stillPaging�	collectorZbrokerZregisterPageProducer)rr/r+rrrrr
rZszPager.__init__cCs6|js0|jjddd�|jdk	r0|j|j|j�|jS)z5
        (internal) Method called by Broker.
        ZendedPagingF)�pbanswerN)r.r/rr+r,r-)rrrr
�stillPagingis

zPager.stillPagingcCs|jjd|��dd�dS)z5
        (internal) Method called by Broker.
        �gotPageF)r0N)r/r�nextPage)rrrr
�sendNextPagesszPager.sendNextPagecCs
t��dS)zO
        Override this to return an object to be sent to my collector.
        N)r')rrrr
r3yszPager.nextPagecCs
d|_dS)z4
        Call this when you're done paging.
        rN)r.)rrrr
�
stopPagingszPager.stopPaging)N)	rrrr rr1r4r3r5rrrr
r)Vs

r)c@s"eZdZdZddd�Zdd�ZdS)	�StringPagerz:
    A simple pager that splits a string into chunks.
    � NcOs,||_d|_||_tj|||f|�|�dS)Nr)�string�pointer�	chunkSizer)r)rr/�str:r+rrrrr
r�szStringPager.__init__cCsD|j|j|j|j�}|j|j7_|jt|j�kr@|��|S)N)r8r9r:�lenr5)r�valrrr
r3�s
zStringPager.nextPage)r7N)rrrr rr3rrrr
r6�s
r6c@sBeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�	FilePagerzC
    Reads a file in chunks and sends the chunks as they come.
    NcOs*g|_tj|||f|�|�|�|�dS)N)�chunksr)r�startProducing)rr/�fdr+rrrrr
r�szFilePager.__init__cs*t���|���_�j��fdd��dS)Ncs���S)N)r5)�x)rrr
�<lambda>��z*FilePager.startProducing.<locals>.<lambda>)rZ
FileSenderZbeginFileTransferZdeferredZaddBoth)rrAr)rr
r@�szFilePager.startProducingcCs||_|s|j��dS)N)�producer�resumeProducing)rrEZ	streamingrrr
�registerProducer�szFilePager.registerProducercCs
d|_dS)N)rE)rrrr
�unregisterProducer�szFilePager.unregisterProducercCs|j�|�dS)N)r?�append)r�chunkrrr
�write�szFilePager.writecCs6|js
dS|j�d�}|j��|jjd|dd�dS)zD
        Get the first chunk read and send it to collector.
        Nrr2F)r0)r?�poprErFr/r)rr=rrr
r4�s

zFilePager.sendNextPage)N)
rrrr rr@rGrHrKr4rrrr
r>�s
r>c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�CallbackPageCollectorz�
    I receive pages from the peer. You may instantiate a Pager with a
    remote reference to me. I will call the callback with a list of pages
    once they are all received.
    cCsg|_||_dS)N)�pagesr+)rr+rrr
r�szCallbackPageCollector.__init__cCs|j�|�dS)N)rNrI)rZpagerrr
�remote_gotPage�sz$CallbackPageCollector.remote_gotPagecCs|�|j�dS)N)r+rN)rrrr
�remote_endedPaging�sz(CallbackPageCollector.remote_endedPagingN)rrrr rrOrPrrrr
rM�srMcOs&t��}|j|t|j�f|�|�|S)zr
    A utility method that will call a remote method which expects a
    PageCollector as the first argument.
    )rZDeferredrrMr+)Z
referenceableZ
methodNamerr�drrr
�getAllPages�srRN)r Ztwisted.internetrZtwisted.python.failurerZtwisted.spreadrZtwisted.protocolsrrZzope.interfacerrrr!r)r6Z	IConsumerr>Z
ReferenceablerMrRrrrr
�<module>	s	0%