← Back
Editing: publish.cpython-38.pyc
U W[� � @ st d Z ddlmZmZ ddlZddlmZ ddlmZm Z m Z G dd� de j�ZG dd � d e j �Zd d� Zdd � ZdS )z] Persistently cached objects for PB. Maintainer: Glyph Lefkowitz Future Plans: None known. � )�absolute_import�divisionN)�defer)�banana�jelly�flavorsc @ s@ e Zd ZdZdd� Zdd� Zdd� Zdd � Zd d� Zdd � Z dS )�Publishablez;An object whose cached state persists across sessions. c C s | � � || _d S )N)� republish�publishedID)�selfr � r �8/usr/lib/python3/dist-packages/twisted/spread/publish.py�__init__ s zPublishable.__init__c C s t � � | _dS )zFSet the timestamp to current and (TODO) update all observers. N)�time� timestamp�r r r r r s zPublishable.republishc C s | � |�S )� (internal))�getStateToPublishFor�r �perspectiver r r �view_getStateToPublish! s z"Publishable.view_getStateToPublishc C s | � � S )zCImplement me to special-case your state for a perspective. )�getStateToPublishr r r r r % s z Publishable.getStateToPublishForc C s t d| j ��dS )zKImplement me to return state to copy as part of the publish phase. z%s.getStateToPublishForN)�NotImplementedError� __class__r r r r r * s zPublishable.getStateToPublishc C s: |r|j }|�� j}nd}d}t�|| �| j||| jd�S )z?Get all necessary metadata to keep a clientside cache. �None)�remoter r �servicer )ZperspectiveNameZ getServiceZserviceNamer Z ViewPointr r )r r ZobserverZpnameZsnamer r r �getStateToCacheAndObserveFor/ s �z(Publishable.getStateToCacheAndObserveForN) �__name__� __module__�__qualname__�__doc__r r r r r r r r r r r s r c @ sJ e Zd ZdZdZdZddd�Zdd� Zdd � Zd d� Z dd � Z dd� ZdS )�RemotePublishedz;The local representation of remote Publishable object. r �pubc C s d| j | jt| j�|f S )Nz%s-%s-%s.%s)r r �strr )r Zextr r r �getFileNameD s �zRemotePublished.getFileNamec C s� | j �|� g | _z&t| �� d��}|�� }W 5 Q R X W n tk rP d}Y nX t�t � |��}|j| jk}|r�| �|j � d| _ n| j�d��| j� d S )N�rbr � r )�__dict__�update�_activationListeners�openr% �read�IOErrorr Zunjellyr �decoder �_cbGotUpdate�_wasCleanWhenLoadedr Z callRemote�addCallbacks)r �state�dataFile�dataZrecentZnewselfr r r �setCopyableStateH s z RemotePublished.setCopyableStatec C s, | j �� }|d= |d= |d= |d= |d= |S )NZbrokerr Zluidr* �isActivated)r( �copy)r �otherr r r �__getstate__Y s zRemotePublished.__getstate__c C sh | j �|� d| _| jD ]}|| � qg | _| �� t| �� d��}|�t� t � | ��� W 5 Q R X d S )Nr'