← Back
Editing: util.cpython-38.pyc
U ��W[� � @ s� d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z ddl mZ G dd � d �ZG d d� d�Z G dd � d �ZG dd� d�ZG dd� de�Zee j�G dd� de��ZG dd� dej�Zdd� ZdS )z Utility classes for spread. � )�defer)�Failure)�pb)�basic)� interfaces)�implementerc @ s e Zd Zdd� Zdd� ZdS )�LocalMethodc C s || _ || _d S �N)�local�name)�selfr r � r �5/usr/lib/python3/dist-packages/twisted/spread/util.py�__init__ s zLocalMethod.__init__c O s | j j| jf|�|�S r )r � callRemoter )r �args�kwr r r �__call__ s zLocalMethod.__call__N)�__name__� __module__�__qualname__r r r r r r r s r c @ s$ e Zd ZdZdZdd� Zdd� ZdS )� LocalAsRemotezN A class useful for emulating the effects of remote behavior locally. � c O sr t | d| �r"t| d| �||�S z t| d| �}t�|||��W S t� }| jr^|�� t�|� Y S X dS )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 r r r �method�fr r r r # s zLocalAsRemote.callRemotec C s t | |�S r )r )r r r r r �remoteMethod8 s zLocalAsRemote.remoteMethodN)r r r �__doc__r r r r r r r r s r c @ s* e Zd ZdZd dd�Zdd� Zdd� Zd S )�LocalAsyncForwarderzD A class useful for forwarding a locally-defined interface. r c C s$ |� |�st�|| _|| _|| _d S r )Z providedBy�AssertionError� forwarded�interfaceClass�failWhenNotImplemented)r r$ r% r&