<?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> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </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 flumotion :: <a href="flumotion.component-module.html">Package component</a> :: <a href="flumotion.component.misc-module.html">Package misc</a> :: <a href="flumotion.component.misc.httpserver-module.html">Package httpserver</a> :: <a href="flumotion.component.misc.httpserver.cachedprovider-module.html">Module cachedprovider</a> :: Class 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 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 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"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </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 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"> </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 code</a></span> </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 code</a></span> </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 code</a></span> </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 code</a></span> </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 code</a></span> </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 code</a></span> </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 code</a></span> </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 code</a></span> </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 code</a></span> </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 code</a></span> </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> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </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>