Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > d4db7b5092b5090e91377eb3dd3b8023 > files > 2170

flumotion-0.6.1-2.fc14.x86_64.rpm

<?xml version="1.0" encoding="ascii"?>
<!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>flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

      <th class="navbar" width="100%"></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        Package&nbsp;flumotion ::
        <a href="flumotion.component-module.html">Package&nbsp;component</a> ::
        <a href="flumotion.component.misc-module.html">Package&nbsp;misc</a> ::
        <a href="flumotion.component.misc.httpserver-module.html">Package&nbsp;httpserver</a> ::
        <a href="flumotion.component.misc.httpserver.cachedprovider-module.html">Module&nbsp;cachedprovider</a> ::
        Class&nbsp;FileProviderLocalCachedPlug
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class FileProviderLocalCachedPlug</h1><p class="nomargin-top"><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug">source&nbsp;code</a></span></p>
<pre class="base-tree">
<a href="flumotion.extern.log.log.Loggable-class.html">extern.log.log.Loggable</a> --+            
                          |            
            <a href="flumotion.component.plugs.base.Plug-class.html">plugs.base.Plug</a> --+        
                              |        
       <a href="flumotion.component.plugs.base.ComponentPlug-class.html">plugs.base.ComponentPlug</a> --+    
                                  |    
      <a href="flumotion.component.misc.httpserver.fileprovider.FileProviderPlug-class.html">fileprovider.FileProviderPlug</a> --+
                                      |
            <a href="flumotion.extern.log.log.Loggable-class.html">extern.log.log.Loggable</a> --+
                                      |
                                     <strong class="uidshort">FileProviderLocalCachedPlug</strong>
</pre>

<hr />
<p>WARNING: Currently does not work properly in combination with 
  rate-control.</p>
  <p>I'm caching the files taken from a mounted network file system to a 
  shared local directory. Multiple instances can share the same cache 
  directory, but it's recommended to use slightly different values for the 
  property cleanup-high-watermark. I'm using the directory access time to 
  know when the cache usage changed and keep an estimation of the cache 
  usage for statistics.</p>
  <p>I'm creating a unique thread to do the file copying block by block, 
  for all files to be copied to the cache. Using a thread instead of a 
  reactor.callLater 'loop' allow for higher copy throughput and do not slow
  down the mail loop when lots of files are copied at the same time. 
  Simulations with real request logs show that using a thread gives better 
  results than the equivalent asynchronous implementation.</p>

<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Instance Methods</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-InstanceMethods"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">args</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.__init__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug-class.html#start" class="summary-sig-name">start</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">component</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.start">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug-class.html#stop" class="summary-sig-name">stop</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">component</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.stop">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug-class.html#startStatsUpdates" class="summary-sig-name">startStatsUpdates</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">updater</span>)</span><br />
      Start updating statistics.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.startStatsUpdates">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug-class.html#stopStatsUpdates" class="summary-sig-name">stopStatsUpdates</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Stop updating statistics.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.stopStatsUpdates">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type"><a 
      href="flumotion.component.misc.httpserver.fileprovider.FilePath-class.html"
      class="link">FilePath</a></span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug-class.html#getRootPath" class="summary-sig-name">getRootPath</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      the root of the file repository</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.getRootPath">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug-class.html#getLogName" class="summary-sig-name">getLogName</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">path</span>,
        <span class="summary-sig-arg">id</span>=<span class="summary-sig-default">None</span>)</span><br />
      Returns a log name for a path, shortened to a maximum size specified 
      by the global variable MAX_LOGNAME_SIZE.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.getLogName">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug-class.html#getIdentifier" class="summary-sig-name">getIdentifier</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">path</span>)</span><br />
      Returns an identifier for a path.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.getIdentifier">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="getCachePath"></a><span class="summary-sig-name">getCachePath</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">path</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.getCachePath">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="getTempPath"></a><span class="summary-sig-name">getTempPath</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">path</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.getTempPath">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="updateCacheUsageStatistics"></a><span class="summary-sig-name">updateCacheUsageStatistics</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.updateCacheUsageStatistics">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug-class.html#updateCacheUsage" class="summary-sig-name">updateCacheUsage</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      the cache usage, in bytes</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.updateCacheUsage">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">tuple</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="flumotion.component.misc.httpserver.cachedprovider.FileProviderLocalCachedPlug-class.html#allocateCacheSpace" class="summary-sig-name">allocateCacheSpace</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">size</span>)</span><br />
      Try to reserve cache space.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.allocateCacheSpace">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="releaseCacheSpace"></a><span class="summary-sig-name">releaseCacheSpace</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">tag</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.releaseCacheSpace">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="getCopySession"></a><span class="summary-sig-name">getCopySession</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">path</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.getCopySession">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="createCopySession"></a><span class="summary-sig-name">createCopySession</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">path</span>,
        <span class="summary-sig-arg">file</span>,
        <span class="summary-sig-arg">info</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.createCopySession">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="outdateCopySession"></a><span class="summary-sig-name">outdateCopySession</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">path</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.outdateCopySession">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="removeCopySession"></a><span class="summary-sig-name">removeCopySession</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">session</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.removeCopySession">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="activateSession"></a><span class="summary-sig-name">activateSession</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">session</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.activateSession">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="disableSession"></a><span class="summary-sig-name">disableSession</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">session</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.disableSession">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="_activateCopyLoop"></a><span class="summary-sig-name">_activateCopyLoop</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug._activateCopyLoop">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="_disableCopyLoop"></a><span class="summary-sig-name">_disableCopyLoop</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug._disableCopyLoop">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.plugs.base.ComponentPlug-class.html">plugs.base.ComponentPlug</a></code></b>:
      <code><a href="flumotion.component.plugs.base.ComponentPlug-class.html#restart">restart</a></code>
      </p>
    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.extern.log.log.Loggable-class.html">extern.log.log.Loggable</a></code></b>:
      <code><a href="flumotion.extern.log.log.Loggable-class.html#__providedBy__">__providedBy__</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#__provides__">__provides__</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#debug">debug</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#doLog">doLog</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#error">error</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#info">info</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#log">log</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#logFunction">logFunction</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#logObjectName">logObjectName</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#warning">warning</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#warningFailure">warningFailure</a></code>,
      <code><a href="flumotion.extern.log.log.Loggable-class.html#writeMarker">writeMarker</a></code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Class Variables</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-ClassVariables"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="logCategory"></a><span class="summary-name">logCategory</span> = <code title="'fileprovider-localcached'"><code class="variable-quote">'</code><code class="variable-string">fileprovider-localcached</code><code class="variable-quote">'</code></code><br />
      Implementors can provide a category to log their messages under.
    </td>
  </tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.extern.log.log.Loggable-class.html">extern.log.log.Loggable</a></code></b>:
      <code><a href="flumotion.extern.log.log.Loggable-class.html#__implemented__">__implemented__</a></code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Method Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-MethodDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">args</span>)</span>
    <br /><em class="fname">(Constructor)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.__init__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>args</code></strong> - The plug args</li>
    </ul></dd>
    <dt>Overrides:
        <a href="flumotion.component.plugs.base.Plug-class.html#__init__">plugs.base.Plug.__init__</a>
        <dd><em class="note">(inherited documentation)</em></dd>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="start"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">start</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">component</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.start">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Overrides:
        <a href="flumotion.component.plugs.base.ComponentPlug-class.html#start">plugs.base.ComponentPlug.start</a>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="stop"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">stop</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">component</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.stop">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Overrides:
        <a href="flumotion.component.plugs.base.ComponentPlug-class.html#stop">plugs.base.ComponentPlug.stop</a>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="startStatsUpdates"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">startStatsUpdates</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">updater</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.startStatsUpdates">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Start updating statistics.</p>
  <dl class="fields">
    <dt>Overrides:
        <a href="flumotion.component.misc.httpserver.fileprovider.FileProviderPlug-class.html#startStatsUpdates">fileprovider.FileProviderPlug.startStatsUpdates</a>
        <dd><em class="note">(inherited documentation)</em></dd>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="stopStatsUpdates"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">stopStatsUpdates</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.stopStatsUpdates">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Stop updating statistics.</p>
  <dl class="fields">
    <dt>Overrides:
        <a href="flumotion.component.misc.httpserver.fileprovider.FileProviderPlug-class.html#stopStatsUpdates">fileprovider.FileProviderPlug.stopStatsUpdates</a>
        <dd><em class="note">(inherited documentation)</em></dd>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="getRootPath"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">getRootPath</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.getRootPath">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns: <a 
      href="flumotion.component.misc.httpserver.fileprovider.FilePath-class.html"
      class="link">FilePath</a></dt>
        <dd>the root of the file repository</dd>
    <dt>Overrides:
        <a href="flumotion.component.misc.httpserver.fileprovider.FileProviderPlug-class.html#getRootPath">fileprovider.FileProviderPlug.getRootPath</a>
        <dd><em class="note">(inherited documentation)</em></dd>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="getLogName"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">getLogName</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">path</span>,
        <span class="sig-arg">id</span>=<span class="sig-default">None</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.getLogName">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Returns a log name for a path, shortened to a maximum size specified 
  by the global variable MAX_LOGNAME_SIZE. The log name will be the 
  filename part of the path postfixed by the id in brackets if id is not 
  None.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="getIdentifier"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">getIdentifier</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">path</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.getIdentifier">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Returns an identifier for a path. The identifier is a digest of the 
  path encoded in hex string. The hash function used is SHA1. It caches the
  identifiers in a dictionary indexed by path and with a maximum number of 
  entry specified by the constant ID_CACHE_MAX_SIZE.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="updateCacheUsage"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">updateCacheUsage</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.updateCacheUsage">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns:</dt>
        <dd>the cache usage, in bytes</dd>
  </dl>
</td></tr></table>
</div>
<a name="allocateCacheSpace"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">allocateCacheSpace</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">size</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="flumotion.component.misc.httpserver.cachedprovider-pysrc.html#FileProviderLocalCachedPlug.allocateCacheSpace">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Try to reserve cache space.</p>
  <p>If there is not enough space and the cache cleanup is enabled, it will
  delete files from the cache starting with the ones with oldest access 
  time until the cache usage drops below the fraction specified by the 
  property cleanup-low-threshold.</p>
  <p>Returns a 'tag' that should be used to 'free' the cache space using 
  releaseCacheSpace. This tag is needed to better estimate the cache usage,
  if the cache usage has been updated since cache space has been allocated,
  freeing up the space should not change the cache usage estimation.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>size</code></strong> (int) - size to reserve, in bytes</li>
    </ul></dd>
    <dt>Returns: tuple</dt>
        <dd>an allocation tag or None if the allocation failed.</dd>
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

      <th class="navbar" width="100%"></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0.1 on Wed Aug 11 21:33:15 2010
    </td>
    <td align="right" class="footer">
      <a target="mainFrame" href="http://epydoc.sourceforge.net"
        >http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie();
  // -->
</script>
</body>
</html>