HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/thread-self/root/lib/python3/dist-packages/twisted/spread/__pycache__/util.cpython-38.pyc
U

��W[��@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
�5/usr/lib/python3/dist-packages/twisted/spread/util.py�__init__szLocalMethod.__init__cOs|jj|jf|�|�Sr	)r
�
callRemoter)r�args�kwr
r
r�__call__szLocalMethod.__call__N)�__name__�
__module__�__qualname__rrr
r
r
rrsrc@s$eZdZdZdZdd�Zdd�ZdS)�
LocalAsRemotezN
    A class useful for emulating the effects of remote behavior locally.
    �cOsrt|d|�r"t|d|�||�Sz t|d|�}t�|||��WSt�}|jr^|��t�|�YSXdS)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)rrrr�method�fr
r
rr#s
zLocalAsRemote.callRemotecCs
t||�Sr	)r)rrr
r
r�remoteMethod8szLocalAsRemote.remoteMethodN)rrr�__doc__rrr r
r
r
rrsrc@s*eZdZdZd
dd�Zdd�Zdd�Zd	S)�LocalAsyncForwarderzD
    A class useful for forwarding a locally-defined interface.
    rcCs$|�|�st�||_||_||_dSr	)Z
providedBy�AssertionError�	forwarded�interfaceClass�failWhenNotImplemented)rr$r%r&r
r
rrAszLocalAsyncForwarder.__init__cOst|j|�||�Sr	)rr$)rrrrr
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)rrrr�resultr
r
rrJs��zLocalAsyncForwarder.callRemoteN)r)rrrr!rr'rr
r
r
rr"<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)rr0r,rrr
r
rrZszPager.__init__cCs6|js0|jjddd�|jdk	r0|j|j|j�|jS)�5
        (internal) Method called by Broker.
        ZendedPagingF�ZpbanswerN)r/r0rr,r-r.�rr
r
r�stillPagingis

zPager.stillPagingcCs|jjd|��dd�dS)r1�gotPageFr2N)r0r�nextPager3r
r
r�sendNextPagesszPager.sendNextPagecCs
t��dS)zO
        Override this to return an object to be sent to my collector.
        N)r(r3r
r
rr6yszPager.nextPagecCs
d|_dS)z4
        Call this when you're done paging.
        rN)r/r3r
r
r�
stopPagingszPager.stopPaging)N)	rrrr!rr4r7r6r8r
r
r
rr*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)rr0�str=r,rrr
r
rr�szStringPager.__init__cCsD|j|j|j|j�}|j|j7_|jt|j�kr@|��|Sr	)r;r<r=�lenr8�r�valr
r
rr6�s
zStringPager.nextPage)r:N)rrrr!rr6r
r
r
rr9�s
r9c@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|�|�|�|�dSr	)�chunksr*r�startProducing)rr0�fdr,rrr
r
rr�szFilePager.__init__cs*t���|���_�j��fdd��dS)Ncs���Sr	)r8)�xr3r
r�<lambda>��z*FilePager.startProducing.<locals>.<lambda>)rZ
FileSenderZbeginFileTransferZdeferredZaddBoth)rrEr
r3rrD�szFilePager.startProducingcCs||_|s|j��dSr	)�producer�resumeProducing)rrIZ	streamingr
r
r�registerProducer�szFilePager.registerProducercCs
d|_dSr	)rIr3r
r
r�unregisterProducer�szFilePager.unregisterProducercCs|j�|�dSr	)rC�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.
        Nrr5Fr2)rC�poprIrJr0rr@r
r
rr7�s

zFilePager.sendNextPage)N)
rrrr!rrDrKrLrOr7r
r
r
rrB�s
rBc@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|_||_dSr	)�pagesr,)rr,r
r
rr�szCallbackPageCollector.__init__cCs|j�|�dSr	)rRrM)rZpager
r
r�remote_gotPage�sz$CallbackPageCollector.remote_gotPagecCs|�|j�dSr	)r,rRr3r
r
r�remote_endedPaging�sz(CallbackPageCollector.remote_endedPagingN)rrrr!rrSrTr
r
r
rrQ�srQcOs&t��}|j|t|j�f|�|�|S)zr
    A utility method that will call a remote method which expects a
    PageCollector as the first argument.
    )rZDeferredrrQr,)Z
referenceableZ
methodNamerr�dr
r
r�getAllPages�srVN)r!Ztwisted.internetrZtwisted.python.failurerZtwisted.spreadrZtwisted.protocolsrrZzope.interfacerrrr"r*r9Z	IConsumerrBZ
ReferenceablerQrVr
r
r
r�<module>s	0%