File: //usr/lib/python3/dist-packages/twisted/spread/__pycache__/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'