+
    Dfj,                         R t ^ RIt^ RIHt ^ RIHtHtHt  ! R R]P                  4      t	 ! R R]P                  4      tR tR	 tR# )
z]
Persistently cached objects for PB.

Maintainer: Glyph Lefkowitz

Future Plans: None known.
N)defer)bananaflavorsjellyc                   H   a  ] tR t^t o RtR tR tR tR tR t	R t
RtV tR	# )
Publishablez6An object whose cached state persists across sessions.c                2    V P                  4        Wn        R # )N)	republishpublishedID)selfr
   s   &&8/usr/lib/python3/dist-packages/twisted/spread/publish.py__init__Publishable.__init__   s    &    c                :    \         P                   ! 4       V n        R# )z=Set the timestamp to current and (TODO) update all observers.N)time	timestampr   s   &r   r	   Publishable.republish   s    r   c                $    V P                  V4      # )
(internal))getStateToPublishForr   perspectives   &&r   view_getStateToPublish"Publishable.view_getStateToPublish   s    ((55r   c                "    V P                  4       # )z:Implement me to special-case your state for a perspective.)getStateToPublishr   s   &&r   r    Publishable.getStateToPublishFor#   s    %%''r   c                :    \        RV P                  ,          4      h)zBImplement me to return state to copy as part of the publish phase.z%s.getStateToPublishFor)NotImplementedError	__class__r   s   &r   r   Publishable.getStateToPublish'   s    !";dnn"LMMr   c           
         V'       d(   VP                   pVP                  4       P                  pMRpRpR\        P                  ! W4      RV P
                  RVRVRV P                  /# )z6Get all necessary metadata to keep a clientside cache.Noneremoter
   r   servicer   )perspectiveName
getServiceserviceNamer   	ViewPointr
   r   )r   r   observerpnamesnames   &&&  r   getStateToCacheAndObserveFor(Publishable.getStateToCacheAndObserveFor+   sh    //E**,88EEE g'':4++5u
 	
r   )r
   r   N)__name__
__module____qualname____firstlineno____doc__r   r	   r   r   r   r.   __static_attributes____classdictcell____classdict__s   @r   r   r      s,     @'%6(N
 
r   r   c                   T   a  ] tR t^=t o Rt^ t^ tR
R ltR tR t	R t
R tR tRtV tR	# )RemotePublishedz6The local representation of remote Publishable object.c                x    R P                  V P                  V P                  \        V P                  4      V4      # )z{}-{}-{}.{})formatr&   r   strr
   )r   exts   &&r   getFileNameRemotePublished.getFileNameC   s6    ##LL  !	
 	
r   c                T   V P                   P                  V4       . V n         \        V P	                  4       R 4      ;_uu_ 4       pVP                  4       pRRR4       \        P                  ! \        P                  ! X4      4      pVP                  V P                  8H  pV'       d%   V P                  XP                   4       ^V n        R# V P                  P                  R4      P!                  V P                  4       R#   + '       g   i     L; i  \         d    ^ p Li ; i)rbNr   )__dict__update_activationListenersopenr?   readr   unjellyr   decoder   OSError_cbGotUpdate_wasCleanWhenLoadedr%   
callRemoteaddCallbacks)r   statedataFiledatanewselfrecents   &&    r   setCopyableState RemotePublished.setCopyableStateK   s    U#$&!	9d&&($//8}} 0
 mmFMM$$78G&&$..8Fg../'(D$KK""#67DDTEVEVW 0/ 	F	s)   "D DD D	D D'&D'c                X    V P                   P                  4       pVR  VR VR VR VR V# )brokerr%   luidrE   isActivated)rC   copy)r   others   & r   __getstate__RemotePublished.__getstate__\   s?    ""$(O(O&M()- r   c           	        V P                   P                  V4       ^V n        V P                   F  pV! V 4       K  	  . V n        V P	                  4        \        V P                  4       R4      ;_uu_ 4       pVP                  \        P                  ! \        P                  ! V 4      4      4       RRR4       R#   + '       g   i     R# ; i)   wbN)rC   rD   rY   rE   	activatedrF   r?   writer   encoder   )r   newStatelistenerrP   s   &&  r   rK   RemotePublished._cbGotUpdateg   s    X&11HTN 2$&!$""$d++xNN6==T):;< ,+++s   7:B;;C	c                    R# )z^Implement this method if you want to be notified when your
publishable subclass is activated.
N r   s   &r   ra   RemotePublished.activatedr   s    r   c                t    V P                   '       d   V! V 4       R# V P                  P                  V4       R# )zZExternally register for notification when this publishable has received all relevant data.N)rY   rE   append)r   callbacks   &&r   callWhenActivated!RemotePublished.callWhenActivatedw   s)    TN%%,,X6r   )rE   rL   rY   N)pub)r0   r1   r2   r3   r4   rY   rL   r?   rT   r\   rK   ra   rm   r5   r6   r7   s   @r   r:   r:   =   s7     @K
X"		=
7 7r   r:   c                v    \         P                  ! 4       pV P                  \        VP                  V3R7       V# )a,  
Wrap a deferred returned from a pb method in another deferred that
expects a RemotePublished as a result.  This will allow you to wait until
the result is really available.

Idiomatic usage would look like::

    publish.whenReady(serverObject.getMeAPublishable()).addCallback(lookAtThePublishable)
)callbackArgs)r   DeferredrN   	_pubReadyerrback)dd2s   & r   	whenReadyrw      s-     
	BNN9bjjuN=Ir   c                <    V P                  VP                  4       R# )r   N)rm   rl   )resultrv   s   &&r   rs   rs      s    
R[[)r   )r4   r   twisted.internetr   twisted.spreadr   r   r   	Cacheabler   RemoteCacher:   rw   rs   rh   r   r   <module>r~      sH   
  " 1 1&
'## &
R?7g)) ?7D*r   