<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::PruneCondition Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="crashpad_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Crashpad
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacecrashpad.html">crashpad</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1PruneCondition.html">PruneCondition</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classcrashpad_1_1PruneCondition-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">crashpad::PruneCondition Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>An abstract base class for evaluating crash reports for deletion.  
 <a href="classcrashpad_1_1PruneCondition.html#details">More...</a></p>

<p><code>#include &quot;client/prune_crash_reports.h&quot;</code></p>
<div class="dynheader">
Inheritance diagram for crashpad::PruneCondition:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classcrashpad_1_1PruneCondition.png" usemap="#crashpad::PruneCondition_map" alt=""/>
  <map id="crashpad::PruneCondition_map" name="crashpad::PruneCondition_map">
<area href="classcrashpad_1_1AgePruneCondition.html" title="A PruneCondition that deletes reports older than the specified number days." alt="crashpad::AgePruneCondition" shape="rect" coords="0,56,235,80"/>
<area href="classcrashpad_1_1BinaryPruneCondition.html" title="A PruneCondition that conjoins two other PruneConditions." alt="crashpad::BinaryPruneCondition" shape="rect" coords="245,56,480,80"/>
<area href="classcrashpad_1_1DatabaseSizePruneCondition.html" title="A PruneCondition that deletes older reports to keep the total Crashpad database size under the specif..." alt="crashpad::DatabaseSizePruneCondition" shape="rect" coords="490,56,725,80"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:af6ca6223cf5972be17a01bdc869d311b"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1PruneCondition.html#af6ca6223cf5972be17a01bdc869d311b">ShouldPruneReport</a> (const <a class="el" href="structcrashpad_1_1CrashReportDatabase_1_1Report.html">CrashReportDatabase::Report</a> &amp;report)=0</td></tr>
<tr class="memdesc:af6ca6223cf5972be17a01bdc869d311b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates a crash report for deletion.  <a href="classcrashpad_1_1PruneCondition.html#af6ca6223cf5972be17a01bdc869d311b">More...</a><br /></td></tr>
<tr class="separator:af6ca6223cf5972be17a01bdc869d311b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a71bc322a91e221bfd06c616d7ceafd99"><td class="memItemLeft" align="right" valign="top">static std::unique_ptr&lt; <a class="el" href="classcrashpad_1_1PruneCondition.html">PruneCondition</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1PruneCondition.html#a71bc322a91e221bfd06c616d7ceafd99">GetDefault</a> ()</td></tr>
<tr class="memdesc:a71bc322a91e221bfd06c616d7ceafd99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a sensible default condition for removing obsolete crash reports.  <a href="classcrashpad_1_1PruneCondition.html#a71bc322a91e221bfd06c616d7ceafd99">More...</a><br /></td></tr>
<tr class="separator:a71bc322a91e221bfd06c616d7ceafd99"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>An abstract base class for evaluating crash reports for deletion. </p>
<p>When passed to <a class="el" href="namespacecrashpad.html#a1767bc31528e1f4cfb4070855e6da96d" title="Deletes crash reports from database that match condition.">PruneCrashReportDatabase()</a>, each crash report in the database will be evaluated according to <a class="el" href="classcrashpad_1_1PruneCondition.html#af6ca6223cf5972be17a01bdc869d311b" title="Evaluates a crash report for deletion.">ShouldPruneReport()</a>. The reports are evaluated serially in descending sort order by <a class="el" href="structcrashpad_1_1CrashReportDatabase_1_1Report.html#a8011cd1a4b4fcd84ecbc21e5c5fd80b8" title="The time at which the report was generated.">CrashReportDatabase::Report::creation_time</a>. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a71bc322a91e221bfd06c616d7ceafd99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71bc322a91e221bfd06c616d7ceafd99">&#9670;&nbsp;</a></span>GetDefault()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::unique_ptr&lt; <a class="el" href="classcrashpad_1_1PruneCondition.html">PruneCondition</a> &gt; crashpad::PruneCondition::GetDefault </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns a sensible default condition for removing obsolete crash reports. </p>
<p>The default is to keep reports for one year or a maximum database size of 128 MB.</p>
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classcrashpad_1_1PruneCondition.html" title="An abstract base class for evaluating crash reports for deletion.">PruneCondition</a> for use with <a class="el" href="namespacecrashpad.html#a1767bc31528e1f4cfb4070855e6da96d" title="Deletes crash reports from database that match condition.">PruneCrashReportDatabase()</a>. </dd></dl>

</div>
</div>
<a id="af6ca6223cf5972be17a01bdc869d311b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6ca6223cf5972be17a01bdc869d311b">&#9670;&nbsp;</a></span>ShouldPruneReport()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool crashpad::PruneCondition::ShouldPruneReport </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcrashpad_1_1CrashReportDatabase_1_1Report.html">CrashReportDatabase::Report</a> &amp;&#160;</td>
          <td class="paramname"><em>report</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Evaluates a crash report for deletion. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">report</td><td>The crash report to evaluate.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the crash report should be deleted, <code>false</code> if it should be kept. </dd></dl>

<p>Implemented in <a class="el" href="classcrashpad_1_1BinaryPruneCondition.html#ae5e4367bbcb141da8a1e730cffdec698">crashpad::BinaryPruneCondition</a>, <a class="el" href="classcrashpad_1_1DatabaseSizePruneCondition.html#acca4ba964727b7767431b81792f01fd6">crashpad::DatabaseSizePruneCondition</a>, and <a class="el" href="classcrashpad_1_1AgePruneCondition.html#a8095ad16e8ae13fdaf38bc23020eb9cb">crashpad::AgePruneCondition</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>client/prune_crash_reports.h</li>
<li>client/prune_crash_reports.cc</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
