blob: 7abc06d4c5ca49125ba8aa1b8adc26a1717a49cb [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::CrashReportUploadThread 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.14 -->
<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_1CrashReportUploadThread.html">CrashReportUploadThread</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classcrashpad_1_1CrashReportUploadThread-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">crashpad::CrashReportUploadThread Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A thread that processes pending crash reports in a <a class="el" href="classcrashpad_1_1CrashReportDatabase.html" title="An interface for managing a collection of crash report files and metadata associated with the crash r...">CrashReportDatabase</a> by uploading them or marking them as completed without upload, as desired.
<a href="classcrashpad_1_1CrashReportUploadThread.html#details">More...</a></p>
<p><code>#include &quot;handler/crash_report_upload_thread.h&quot;</code></p>
<div class="dynheader">
Inheritance diagram for crashpad::CrashReportUploadThread:</div>
<div class="dyncontent">
<div class="center">
<img src="classcrashpad_1_1CrashReportUploadThread.png" usemap="#crashpad::CrashReportUploadThread_map" alt=""/>
<map id="crashpad::CrashReportUploadThread_map" name="crashpad::CrashReportUploadThread_map">
<area href="classcrashpad_1_1WorkerThread_1_1Delegate.html" title="An interface for doing work on a WorkerThread. " alt="crashpad::WorkerThread::Delegate" shape="rect" coords="0,0,221,24"/>
<area href="classcrashpad_1_1Stoppable.html" title="An interface for operations that may be Started and Stopped. " alt="crashpad::Stoppable" shape="rect" coords="231,0,452,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcrashpad_1_1CrashReportUploadThread_1_1Options.html">Options</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structcrashpad_1_1CrashReportUploadThread_1_1Options.html" title="Options to be passed to the CrashReportUploadThread constructor. ">Options</a> to be passed to the <a class="el" href="classcrashpad_1_1CrashReportUploadThread.html" title="A thread that processes pending crash reports in a CrashReportDatabase by uploading them or marking t...">CrashReportUploadThread</a> constructor. <a href="structcrashpad_1_1CrashReportUploadThread_1_1Options.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><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:a71da42cf509b5e16a48b4f134e1164fe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#a71da42cf509b5e16a48b4f134e1164fe">CrashReportUploadThread</a> (<a class="el" href="classcrashpad_1_1CrashReportDatabase.html">CrashReportDatabase</a> *database, const std::string &amp;url, const <a class="el" href="structcrashpad_1_1CrashReportUploadThread_1_1Options.html">Options</a> &amp;options)</td></tr>
<tr class="memdesc:a71da42cf509b5e16a48b4f134e1164fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new object. <a href="#a71da42cf509b5e16a48b4f134e1164fe">More...</a><br /></td></tr>
<tr class="separator:a71da42cf509b5e16a48b4f134e1164fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4b8b9f51c1a90b3f3c62d4b4cf0146d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#aa4b8b9f51c1a90b3f3c62d4b4cf0146d">ReportPending</a> (const <a class="el" href="structcrashpad_1_1UUID.html">UUID</a> &amp;report_uuid)</td></tr>
<tr class="memdesc:aa4b8b9f51c1a90b3f3c62d4b4cf0146d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Informs the upload thread that a new pending report has been added to the database. <a href="#aa4b8b9f51c1a90b3f3c62d4b4cf0146d">More...</a><br /></td></tr>
<tr class="separator:aa4b8b9f51c1a90b3f3c62d4b4cf0146d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d204a6465eaa76e4bcd73a247eb5ca5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#a4d204a6465eaa76e4bcd73a247eb5ca5">Start</a> () override</td></tr>
<tr class="memdesc:a4d204a6465eaa76e4bcd73a247eb5ca5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a dedicated upload thread, which executes ThreadMain(). <a href="#a4d204a6465eaa76e4bcd73a247eb5ca5">More...</a><br /></td></tr>
<tr class="separator:a4d204a6465eaa76e4bcd73a247eb5ca5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16258ae9977a0fd9974bc69ec2737d62"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#a16258ae9977a0fd9974bc69ec2737d62">Stop</a> () override</td></tr>
<tr class="memdesc:a16258ae9977a0fd9974bc69ec2737d62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stops the upload thread. <a href="#a16258ae9977a0fd9974bc69ec2737d62">More...</a><br /></td></tr>
<tr class="separator:a16258ae9977a0fd9974bc69ec2737d62"><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>A thread that processes pending crash reports in a <a class="el" href="classcrashpad_1_1CrashReportDatabase.html" title="An interface for managing a collection of crash report files and metadata associated with the crash r...">CrashReportDatabase</a> by uploading them or marking them as completed without upload, as desired. </p>
<p>A producer of crash reports should notify an object of this class that a new report has been added to the database by calling <a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#aa4b8b9f51c1a90b3f3c62d4b4cf0146d" title="Informs the upload thread that a new pending report has been added to the database. ">ReportPending()</a>.</p>
<p>Independently of being triggered by <a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#aa4b8b9f51c1a90b3f3c62d4b4cf0146d" title="Informs the upload thread that a new pending report has been added to the database. ">ReportPending()</a>, objects of this class can periodically examine the database for pending reports. This allows failed upload attempts for reports left in the pending state to be retried. It also catches reports that are added without a <a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#aa4b8b9f51c1a90b3f3c62d4b4cf0146d" title="Informs the upload thread that a new pending report has been added to the database. ">ReportPending()</a> signal being caught. This may happen if crash reports are added to the database by other processes. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a71da42cf509b5e16a48b4f134e1164fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71da42cf509b5e16a48b4f134e1164fe">&#9670;&nbsp;</a></span>CrashReportUploadThread()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">crashpad::CrashReportUploadThread::CrashReportUploadThread </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classcrashpad_1_1CrashReportDatabase.html">CrashReportDatabase</a> *&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structcrashpad_1_1CrashReportUploadThread_1_1Options.html">Options</a> &amp;&#160;</td>
<td class="paramname"><em>options</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructs a new object. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The database to upload crash reports from. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">url</td><td>The URL of the server to upload crash reports to. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">options</td><td><a class="el" href="structcrashpad_1_1CrashReportUploadThread_1_1Options.html" title="Options to be passed to the CrashReportUploadThread constructor. ">Options</a> for the report uploads. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa4b8b9f51c1a90b3f3c62d4b4cf0146d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4b8b9f51c1a90b3f3c62d4b4cf0146d">&#9670;&nbsp;</a></span>ReportPending()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashReportUploadThread::ReportPending </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structcrashpad_1_1UUID.html">UUID</a> &amp;&#160;</td>
<td class="paramname"><em>report_uuid</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Informs the upload thread that a new pending report has been added to the database. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">report_uuid</td><td>The unique identifier of the newly added pending report.</td></tr>
</table>
</dd>
</dl>
<p>This method may be called from any thread. </p>
</div>
</div>
<a id="a4d204a6465eaa76e4bcd73a247eb5ca5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d204a6465eaa76e4bcd73a247eb5ca5">&#9670;&nbsp;</a></span>Start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashReportUploadThread::Start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts a dedicated upload thread, which executes ThreadMain(). </p>
<p>This method may only be be called on a newly-constructed object or after a call to <a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#a16258ae9977a0fd9974bc69ec2737d62" title="Stops the upload thread. ">Stop()</a>. </p>
<p>Implements <a class="el" href="classcrashpad_1_1Stoppable.html#a046f4e683737878d2133b5f60614d727">crashpad::Stoppable</a>.</p>
</div>
</div>
<a id="a16258ae9977a0fd9974bc69ec2737d62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16258ae9977a0fd9974bc69ec2737d62">&#9670;&nbsp;</a></span>Stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashReportUploadThread::Stop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Stops the upload thread. </p>
<p>The upload thread will terminate after completing whatever task it is performing. If it is not performing any task, it will terminate immediately. This method blocks while waiting for the upload thread to terminate.</p>
<p>This method must only be called after <a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#a4d204a6465eaa76e4bcd73a247eb5ca5" title="Starts a dedicated upload thread, which executes ThreadMain(). ">Start()</a>. If <a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#a4d204a6465eaa76e4bcd73a247eb5ca5" title="Starts a dedicated upload thread, which executes ThreadMain(). ">Start()</a> has been called, this method must be called before destroying an object of this class.</p>
<p>This method may be called from any thread other than the upload thread. It is expected to only be called from the same thread that called <a class="el" href="classcrashpad_1_1CrashReportUploadThread.html#a4d204a6465eaa76e4bcd73a247eb5ca5" title="Starts a dedicated upload thread, which executes ThreadMain(). ">Start()</a>. </p>
<p>Implements <a class="el" href="classcrashpad_1_1Stoppable.html#ac001ba3eacb04fbbf432388286dbc34c">crashpad::Stoppable</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>handler/crash_report_upload_thread.h</li>
<li>handler/crash_report_upload_thread.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.14
</small></address>
</body>
</html>