twisted.spread.flavors.Cacheable.html   [plain text]


<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>twisted.spread.flavors.Cacheable</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">

<!-- =========== START OF NAVBAR =========== -->
<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="center">
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="twisted.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar" align="right" width="100%">
      <table border="0" cellpadding="0" cellspacing="0">
      <tr><th class="navbar" align="center">
        <p class="nomargin">
          <a class="navbar" target="_top" href="http://twistedmatrix.com/">Twisted&nbsp;1.3.0rc1</a>
      </p></th></tr></table>
    </th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <font size="-1"><b class="breadcrumbs">
        <a href="twisted.html">Package&nbsp;twisted</a> ::
        <a href="twisted.spread.html">Package&nbsp;spread</a> ::
        <a href="twisted.spread.flavors.html">Module&nbsp;flavors</a> ::
        Class&nbsp;Cacheable
      </b></font></br>
    </td>
    <td><table cellpadding="0" cellspacing="0">
      <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="twisted.spread.flavors.Cacheable.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
    </table></td>
</tr></table>

<!-- =========== START OF CLASS DESCRIPTION =========== -->
<h2 class="class">Class Cacheable</h2>

<pre class="base-tree">
<a href="twisted.spread.jelly.Jellyable.html"><code>Jellyable</code></a> --+        
            |        
 <a href="twisted.spread.flavors.Serializable.html"><code>Serializable</code></a> --+    
                |    
         <a href="twisted.spread.flavors.Copyable.html"><code>Copyable</code></a> --+
                    |
                   <b>Cacheable</b>
</pre><br />

<dl><dt><b>Known Subclasses:</b></dt>
<dd>
    <a href="twisted.manhole.explorer.Explorer.html"><code>Explorer</code></a>,
    <a href="twisted.spread.publish.Publishable.html"><code>Publishable</code></a></dd></dl>

<hr/>

<p>A cached instance.</p>
<p>This means that it's copied; but there is some logic to make sure that 
it's only copied once. Additionally, when state is retrieved, it is 
passed a &quot;proto-reference&quot; to the state as it will exist on the 
client.</p>
XXX: The documentation for this class needs work, but it's the most 
complex part of PB and it is inherently difficult to explain.
<hr/>


<!-- =========== START OF METHOD SUMMARY =========== -->
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="summary">
  <th colspan="2">Method Summary</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
  <td><code><span class="summary-sig"><a href="twisted.spread.flavors.Cacheable.html#getStateToCacheAndObserveFor" class="summary-sig-name"><code>getStateToCacheAndObserveFor</code></a>(<span class=summary-sig-arg>self</span>,
          <span class=summary-sig-arg>perspective</span>,
          <span class=summary-sig-arg>observer</span>)</span></code>
<br />
Get state to cache on the client and client-cache reference to observe 
locally.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
  <td><code><span class="summary-sig"><a href="twisted.spread.flavors.Cacheable.html#jellyFor" class="summary-sig-name"><code>jellyFor</code></a>(<span class=summary-sig-arg>self</span>,
          <span class=summary-sig-arg>jellier</span>)</span></code>
<br />
Return an appropriate tuple to serialize me.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
  <td><code><span class="summary-sig"><a href="twisted.spread.flavors.Cacheable.html#stoppedObserving" class="summary-sig-name"><code>stoppedObserving</code></a>(<span class=summary-sig-arg>self</span>,
          <span class=summary-sig-arg>perspective</span>,
          <span class=summary-sig-arg>observer</span>)</span></code>
<br />
This method is called when a client has stopped observing me.</td></tr>
<tr bgcolor="#e8f0f8" class="group">
  <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Copyable</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
  <td><code><span class="summary-sig"><a href="twisted.spread.flavors.Copyable.html#getStateToCopy" class="summary-sig-name"><code>getStateToCopy</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
<br />
Gather state to send when I am serialized for a peer.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
  <td><code><span class="summary-sig"><a href="twisted.spread.flavors.Copyable.html#getStateToCopyFor" class="summary-sig-name"><code>getStateToCopyFor</code></a>(<span class=summary-sig-arg>self</span>,
          <span class=summary-sig-arg>perspective</span>)</span></code>
<br />
Gather state to send when I am serialized for a particular 
perspective.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
  <td><code><span class="summary-sig"><a href="twisted.spread.flavors.Copyable.html#getTypeToCopy" class="summary-sig-name"><code>getTypeToCopy</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
<br />
Determine what type tag to send for me.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
  <td><code><span class="summary-sig"><a href="twisted.spread.flavors.Copyable.html#getTypeToCopyFor" class="summary-sig-name"><code>getTypeToCopyFor</code></a>(<span class=summary-sig-arg>self</span>,
          <span class=summary-sig-arg>perspective</span>)</span></code>
<br />
Determine what type tag to send for me.</td></tr>
<tr bgcolor="#e8f0f8" class="group">
  <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Serializable</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
  <td><code><span class="summary-sig"><a href="twisted.spread.flavors.Serializable.html#processUniqueID" class="summary-sig-name"><code>processUniqueID</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
<br />
Return an ID which uniquely represents this object for this 
process.</td></tr>
<tr bgcolor="#e8f0f8" class="group">
  <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Jellyable</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
  <td><code><span class="summary-sig"><a href="twisted.spread.jelly.Jellyable.html#getStateFor" class="summary-sig-name"><code>getStateFor</code></a>(<span class=summary-sig-arg>self</span>,
          <span class=summary-sig-arg>jellier</span>)</span></code>
</td></tr>
</table><br />


<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="summary">
  <th colspan="2">Class Variable Summary</th></tr>
<tr bgcolor="#e8f0f8" class="group">
  <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Jellyable</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
<td><b><a href="twisted.spread.jelly.Jellyable.html#__implements__"><code>__implements__</code></a></b> = <span title="(&lt;class twisted.spread.interfaces.IJellyable at 0x840e324&gt;,)"><code>(&lt;class&nbsp;twisted.spread.interfaces.IJell<span class="variable-ellipsis">...</span></code>
</span></td></tr>
</table><br />


<!-- =========== START OF METHOD DETAILS =========== -->
<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="details">
  <th colspan="2">Method Details</th></tr>
</table>

<a name="getStateToCacheAndObserveFor"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
  <h3><span class="sig"><span class="sig-name">getStateToCacheAndObserveFor</span>(<span class=sig-arg>self</span>,
          <span class=sig-arg>perspective</span>,
          <span class=sig-arg>observer</span>)</span>
  </h3>
  <p>Get state to cache on the client and client-cache reference to 
  observe locally.</p>
  This is similiar to getStateToCopyFor, but it additionally passes in 
  a reference to the client-side RemoteCache instance that will be 
  created when it is unserialized. This allows Cacheable instances to 
  keep their RemoteCaches up to date when they change, such that no 
  changes can occur between the point at which the state is initially 
  copied and the client receives it that are not propogated.
  <dl><dt></dt><dd>
  </dd></dl>
</td></tr></table>

<a name="jellyFor"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
  <h3><span class="sig"><span class="sig-name">jellyFor</span>(<span class=sig-arg>self</span>,
          <span class=sig-arg>jellier</span>)</span>
  </h3>
  <p>Return an appropriate tuple to serialize me.</p>
  Depending on whether this broker has cached me or not, this may 
  return either a full state or a reference to an existing cache.
  <dl><dt></dt><dd>
    <dl><dt><b>Overrides:</b></dt>
      <dd><a href="twisted.spread.flavors.Copyable.html#jellyFor"><code>twisted.spread.flavors.Copyable.jellyFor</code></a></dd>
    </dl>
  </dd></dl>
</td></tr></table>

<a name="stoppedObserving"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
  <h3><span class="sig"><span class="sig-name">stoppedObserving</span>(<span class=sig-arg>self</span>,
          <span class=sig-arg>perspective</span>,
          <span class=sig-arg>observer</span>)</span>
  </h3>
  <p>This method is called when a client has stopped observing me.</p>
  The 'observer' argument is the same as that passed in to 
  getStateToCacheAndObserveFor.
  <dl><dt></dt><dd>
  </dd></dl>
</td></tr></table>
<br />


<!-- =========== START OF NAVBAR =========== -->
<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="center">
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="twisted.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar" align="right" width="100%">
      <table border="0" cellpadding="0" cellspacing="0">
      <tr><th class="navbar" align="center">
        <p class="nomargin">
          <a class="navbar" target="_top" href="http://twistedmatrix.com/">Twisted&nbsp;1.3.0rc1</a>
      </p></th></tr></table>
    </th>
  </tr>
</table>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td align="left"><font size="-2">Generated by Epydoc 2.0 on Sat May 15 20:08:13 2004</font></td>
    <td align="right"><a href="http://epydoc.sourceforge.net"
                      ><font size="-2">http://epydoc.sf.net</font></a></td>
  </tr>
</table>
</body>
</html>