Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 98d6b53e11e983e268c3e19f14e091a0 > files > 4190

kdepim-devel-doc-3.5.9-9mdv2008.1.x86_64.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!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" lang="en_US" xml:lang="en_US">

<head>
  <title>libkdepim: KPIM::ThreadWeaver::Job Class Reference (libkdepim)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta http-equiv="Content-Style-Type" content="text/css" />

  <meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline DE v2.0" l gen true for "http://www.kde.org"  r (nz 1 vz 1 lz 1 oz 1 cb 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.kde.org"  r (n 0 s 0 v 0 l 0))' />

  <meta name="trademark" content="KDE e.V." />
  <meta name="description" content="K Desktop Environment Homepage, KDE.org" />
  <meta name="MSSmartTagsPreventParsing" content="true" />
  <meta name="robots" content="all" />

  <link rel="shortcut icon" href="../../favicon.ico" />

<link rel="stylesheet" media="screen" type="text/css" title="APIDOX" href="doxygen.css" />



<style type="text/css">
<!--
hr { display: none; }
#content h2 { margin-left: 0px; }
table.mdTable { background-color: #f8f8f8; border: .2em solid #d7d7d7; }
td.mdRow { padding: 8px 20px; }
td.md { font-weight: bold; }
td.mdname1 { font-weight: bold; color: #602020; }
td.mdname { font-weight: bold; color: #602020;  }

-->
</style>

</head>

<body>

<div id="nav_header_top" align="right">
  <a href="#content" class="doNotDisplay" accesskey="2">Skip to main content ::</a>

  <a href="../.."><img id="nav_header_logo" alt="Home" align="left" src="../../kde_gear_64.png" border="0" /></a>
  <span class="doNotDisplay">::</span>
  <img id="nav_header_logo_right" alt="" align="right" src="../../pimlogo.png" border="0" />

  <div id="nav_header_title" align="left">KDE PIM API Reference</div>


</div>

<div id="nav_header_bottom" align="right">
  <span class="doNotDisplay">:: <a href="#navigation" accesskey="5">Skip to Link Menu</a><br/></span>
  <div id="nav_header_bottom_left" style="text-align: left;">
/ <a href="../../">API Reference</a>
 / <a href=".">libkdepim</a>
  </div>
</div>


<table id="main" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
      <td valign="top" class="menuheader" height="0"></td>

  <td id="contentcolumn" valign="top" rowspan="2" >
    <div id="content" style="padding-top: 0px;"><div style="width:100%; margin: 0px; padding: 0px;">
    <h2><a name="content"></a>libkdepim</h2>


<!-- Generated by Doxygen 1.5.5 -->
  <div class="navpath"><a class="el" href="namespaceKPIM.html">KPIM</a>::<b>ThreadWeaver</b>::<a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html">Job</a>
  </div>
<div class="contents">
<h1>KPIM::ThreadWeaver::Job Class Reference</h1><!-- doxytag: class="KPIM::ThreadWeaver::Job" --><!-- doxytag: inherits="QObject" --><code>#include &lt;<a class="el" href="weaver_8h-source.html">weaver.h</a>&gt;</code>
<p>
Inherits QObject.
<p>

<p>
<a href="classKPIM_1_1ThreadWeaver_1_1Job-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
A <a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html" title="A Job is a simple abstraction of an action that is to be executed in a thread context...">Job</a> is a simple abstraction of an action that is to be executed in a thread context. 
<p>
It is essential for the ThreadWeaver library that as a kind of convention, the different creators of <a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html" title="A Job is a simple abstraction of an action that is to be executed in a thread context...">Job</a> objects do not touch the protected data members of the <a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html" title="A Job is a simple abstraction of an action that is to be executed in a thread context...">Job</a> until somehow notified by the <a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html" title="A Job is a simple abstraction of an action that is to be executed in a thread context...">Job</a>. See the SPR signal for an example.<p>
Jobs may emit process requests as signals. Consider process requests as a kind of synchronized call to the main thread. Process Requests are a generic means for <a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html" title="A Job is a simple abstraction of an action that is to be executed in a thread context...">Job</a> derivate programmers to have the jobs interact with the creators (in the main thread) during processing time. To avoid race conditions and extensive locking and unlocking, the thread executing the job is suspended during the period needed to process the request.<p>
There are two kinds of process requests (we introduce abbreviations, also in the signal names and the code, only to save typing). Both are emitted by signals in the main thread:<ul>
<li>Synchronous Process Requests (SPR): Synchronous requests expect that the complete request is performed in the slots connected to the signals. For example, to update a widget according to the progress of the job, a SPR may be used. In such cases, the Job's execution will be resumed immediately after the signal has been processed.</li><li>Asynchronous Process Requests (APR): For APRs, the job emitting the signal does not assume anything about the amount of time needed to perform the operation. Therefore, the thread is not waked after the signal returns. The creator has to wake to thread whenever it is ready by calling the wakeAPR method.</li></ul>
<p>
Note: When using an APR, you better make sure to receive the signal with some object, otherwise the calling thread will block forever! 
<p>Definition at line <a class="el" href="weaver_8h-source.html#l00164">164</a> of file <a class="el" href="weaver_8h-source.html">weaver.h</a>.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Signals</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#b3563a8af66f6d50c3e7eef13c18b3b3">started</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#fa42f9bbb5669b5666c85070ba4d9426">done</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#563f82e8575865c11351c69e8a41196b">SPR</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#a3b49932b24d6dc6b6063388e90a3464">APR</a> ()</td></tr>

<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#874a9d6fc036d251a0d6f5f326c7ec11">Job</a> (QObject *parent=0, const char *name=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#1b80dd9f9f701faf7371b0f9454a6ff3">~Job</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#03cc7b24aafe5207d0a071698d4f64bd">execute</a> (<a class="el" href="classKPIM_1_1ThreadWeaver_1_1Thread.html">Thread</a> *)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#c091ff3320beb8dcb26a645f9c014c9a">isFinished</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#e45201dff3b442dc7475bcec4339dad9">wakeAPR</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#9dd6234e536c271e233bb68fb6731449">processEvent</a> (<a class="el" href="classKPIM_1_1ThreadWeaver_1_1Event.html">Event</a> *)</td></tr>

<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#6c8282747346502f39392eeb8dc8fa21">lock</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#38d69f1cdd1d6af2ce68d9c2fd48a802">unlock</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#924335cfaa9292b3800944014e723a5a">run</a> ()=0</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Thread.html">Thread</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#fb3f8da44198996b698ca116fb1f77a9">thread</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#bfab027fbf4cab468c38df3ab4fcbc2e">setFinished</a> (bool status)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#027450461e5239c8db945d6f88685723">triggerSPR</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#a598da4fedc4fe9b5bdf48e5684eb4b4">triggerAPR</a> ()</td></tr>

<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0773c0879a30a2c32577c52edef7a946"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::m_finished" ref="0773c0879a30a2c32577c52edef7a946" args="" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>m_finished</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e8fef2bdf9d27884fad21dab5612e448"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::m_mutex" ref="e8fef2bdf9d27884fad21dab5612e448" args="" -->
QMutex *&nbsp;</td><td class="memItemRight" valign="bottom"><b>m_mutex</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a80e0e2c0a1cf562956e8718f511c398"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::m_thread" ref="a80e0e2c0a1cf562956e8718f511c398" args="" -->
<a class="el" href="classKPIM_1_1ThreadWeaver_1_1Thread.html">Thread</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>m_thread</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="98d79a1a7570e61eaa6512084f8874a1"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::m_wc" ref="98d79a1a7570e61eaa6512084f8874a1" args="" -->
QWaitCondition *&nbsp;</td><td class="memItemRight" valign="bottom"><b>m_wc</b></td></tr>

</table>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="874a9d6fc036d251a0d6f5f326c7ec11"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::Job" ref="874a9d6fc036d251a0d6f5f326c7ec11" args="(QObject *parent=0, const char *name=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">KPIM::ThreadWeaver::Job::Job           </td>
          <td>(</td>
          <td class="paramtype">QObject *&nbsp;</td>
          <td class="paramname"> <em>parent</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Construct a <a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html" title="A Job is a simple abstraction of an action that is to be executed in a thread context...">Job</a> object. 
<p>

<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00031">31</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="1b80dd9f9f701faf7371b0f9454a6ff3"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::~Job" ref="1b80dd9f9f701faf7371b0f9454a6ff3" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">KPIM::ThreadWeaver::Job::~Job           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destructor. 
<p>

<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00039">39</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="03cc7b24aafe5207d0a071698d4f64bd"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::execute" ref="03cc7b24aafe5207d0a071698d4f64bd" args="(Thread *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::execute           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Thread.html">Thread</a> *&nbsp;</td>
          <td class="paramname"> <em>th</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Perform the job. 
<p>
The thread in which this job is executed is given as a parameter. Do not overload this method to create your own <a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html" title="A Job is a simple abstraction of an action that is to be executed in a thread context...">Job</a> implementation, overload <a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#924335cfaa9292b3800944014e723a5a" title="The method that actually performs the job.">run()</a>. 
<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00053">53</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="c091ff3320beb8dcb26a645f9c014c9a"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::isFinished" ref="c091ff3320beb8dcb26a645f9c014c9a" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool KPIM::ThreadWeaver::Job::isFinished           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns true if the jobs's execute method finished. 
<p>

<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00073">73</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="e45201dff3b442dc7475bcec4339dad9"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::wakeAPR" ref="e45201dff3b442dc7475bcec4339dad9" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::wakeAPR           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Wake the thread after an APR has been processed. 
<p>

<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00133">133</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="9dd6234e536c271e233bb68fb6731449"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::processEvent" ref="9dd6234e536c271e233bb68fb6731449" args="(Event *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::processEvent           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Event.html">Event</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Process events related to this job (created by the processing thread or the weaver or whoever). 
<p>

<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00085">85</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="b3563a8af66f6d50c3e7eef13c18b3b3"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::started" ref="b3563a8af66f6d50c3e7eef13c18b3b3" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::started           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [signal]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This signal is emitted when a thread starts to process a job. 
<p>

</div>
</div><p>
<a class="anchor" name="fa42f9bbb5669b5666c85070ba4d9426"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::done" ref="fa42f9bbb5669b5666c85070ba4d9426" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::done           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [signal]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This signal is emitted when a job has been finished. 
<p>

</div>
</div><p>
<a class="anchor" name="563f82e8575865c11351c69e8a41196b"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::SPR" ref="563f82e8575865c11351c69e8a41196b" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::SPR           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [signal]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This signal is emitted when the job needs some operation done by the main thread (usually the creator of the job). 
<p>
It is important to understand that the emitting thread is suspended until the signal returns. When the operation requested has been performed and this signal is finished, the thread is automatically waked. What operation needs to be performed has to be negotiated between the two objects. Note: This signal is an attempt to provide job programmers with a generic way to interact while the job is executed. I am interested in feedback about it's use. 
</div>
</div><p>
<a class="anchor" name="a3b49932b24d6dc6b6063388e90a3464"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::APR" ref="a3b49932b24d6dc6b6063388e90a3464" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::APR           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [signal]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Perform an Asynchronous Process Request. 
<p>
See SPR and the generic <a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html" title="A Job is a simple abstraction of an action that is to be executed in a thread context...">Job</a> documentation for a comparison. 
</div>
</div><p>
<a class="anchor" name="6c8282747346502f39392eeb8dc8fa21"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::lock" ref="6c8282747346502f39392eeb8dc8fa21" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::lock           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Lock this Job's mutex. 
<p>

<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00043">43</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="38d69f1cdd1d6af2ce68d9c2fd48a802"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::unlock" ref="38d69f1cdd1d6af2ce68d9c2fd48a802" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::unlock           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unlock this Job's mutex. 
<p>

<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00048">48</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="924335cfaa9292b3800944014e723a5a"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::run" ref="924335cfaa9292b3800944014e723a5a" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void KPIM::ThreadWeaver::Job::run           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The method that actually performs the job. 
<p>
It is called from <a class="el" href="classKPIM_1_1ThreadWeaver_1_1Job.html#03cc7b24aafe5207d0a071698d4f64bd" title="Perform the job.">execute()</a>. This method is the one to overload it with the job's task. 
</div>
</div><p>
<a class="anchor" name="fb3f8da44198996b698ca116fb1f77a9"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::thread" ref="fb3f8da44198996b698ca116fb1f77a9" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classKPIM_1_1ThreadWeaver_1_1Thread.html">Thread</a> * KPIM::ThreadWeaver::Job::thread           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return the thread that executes this job. 
<p>
Returns zero of the job is not currently executed. 
<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00067">67</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="bfab027fbf4cab468c38df3ab4fcbc2e"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::setFinished" ref="bfab027fbf4cab468c38df3ab4fcbc2e" args="(bool status)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::setFinished           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>status</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Call with status = true to mark this job as done. 
<p>

<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00079">79</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="027450461e5239c8db945d6f88685723"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::triggerSPR" ref="027450461e5239c8db945d6f88685723" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::triggerSPR           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Trigger a SPR. 
<p>
This emits a signal in the main thread indicating the necessity of a synchronized operation. 
<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00108">108</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="a598da4fedc4fe9b5bdf48e5684eb4b4"></a><!-- doxytag: member="KPIM::ThreadWeaver::Job::triggerAPR" ref="a598da4fedc4fe9b5bdf48e5684eb4b4" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KPIM::ThreadWeaver::Job::triggerAPR           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Trigger an APR. 
<p>
This emit a signal in the main thread indicating the necessity of an unsynchronized operation. The calling thread needs to ensure to wake the thread when the operation is done. 
<p>Definition at line <a class="el" href="weaver_8cpp-source.html#l00123">123</a> of file <a class="el" href="weaver_8cpp-source.html">weaver.cpp</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="weaver_8h-source.html">weaver.h</a><li><a class="el" href="weaver_8cpp-source.html">weaver.cpp</a></ul>
</div>
    </div></div>


      </td>
  </tr>
  <tr>
    <td valign="top" id="leftmenu" width="25%">
      <a name="navigation"></a>
      <div class="menu_box"><h2>libkdepim</h2>
<div class="nav_list">
<ul><li><a href="index.html">Main Page</a></li><li><a href="namespaces.html">Namespace List</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="files.html">File List</a></li><li><a href="namespacemembers.html">Namespace Members</a></li><li><a href="functions.html">Class Members</a></li></ul>
<!--
<h2>Class Picker</h2>
<div style="text-align: center;">
<form name="guideform">
<select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
<option value="annotated.html">-- Choose --</option>
  <option value="classActionBase.html">actionbase</option>,  <option value="classActionEditWidget.html">actioneditwidget</option>,  <option value="classAlarmClient.html">alarmclient</option>,  <option value="classConditionEditWidget.html">conditioneditwidget</option>,  <option value="classGroupItem.html">groupitem</option>,  <option value="classKABC_1_1ResourceNull.html">kabc::resourcenull</option>,  <option value="classKConfigWizard.html">kconfigwizard</option>,  <option value="classKDateEdit.html">kdateedit</option>,  <option value="classKDatePickerPopup.html">kdatepickerpopup</option>,  <option value="classKIncidenceChooser.html">kincidencechooser</option>,  <option value="classKomposer_1_1Core.html">komposer::core</option>,  <option value="classKomposer_1_1KomposerIface.html">komposer::komposeriface</option>,  <option value="classKParts_1_1InfoExtension.html">kparts::infoextension</option>,  <option value="classKParts_1_1SideBarExtension.html">kparts::sidebarextension</option>,  <option value="classKPartsGenericPart.html">kpartsgenericpart</option>,  <option value="classKPartsWidgetPlugin.html">kpartswidgetplugin</option>,  <option value="classKPIM_1_1BroadcastStatus.html">kpim::broadcaststatus</option>,  <option value="classKPIM_1_1ClickLineEdit.html">kpim::clicklineedit</option>,  <option value="classKPIM_1_1CollectingProcess.html">kpim::collectingprocess</option>,  <option value="classKPIM_1_1ConfigManager.html">kpim::configmanager</option>,  <option value="classKPIM_1_1DiffAlgoDisplay.html">kpim::diffalgodisplay</option>,  <option value="classKPIM_1_1DistributionList.html">kpim::distributionlist</option>,  <option value="classKPIM_1_1KMailCompletion.html">kpim::kmailcompletion</option>,  <option value="classKPIM_1_1KPixmapRegionSelectorDialog.html">kpim::kpixmapregionselectordialog</option>,  <option value="classKPIM_1_1KPixmapRegionSelectorWidget.html">kpim::kpixmapregionselectorwidget</option>,  <option value="classKPIM_1_1LdapClient.html">kpim::ldapclient</option>,  <option value="classKPIM_1_1LdapObject.html">kpim::ldapobject</option>,  <option value="classKPIM_1_1LdapSearch.html">kpim::ldapsearch</option>,  <option value="classKPIM_1_1OverlayWidget.html">kpim::overlaywidget</option>,  <option value="classKPIM_1_1PluginLoader.html">kpim::pluginloader</option>,  <option value="classKPIM_1_1ProgressManager.html">kpim::progressmanager</option>,  <option value="classKPIM_1_1ResourceABC.html">kpim::resourceabc</option>,  <option value="classKPIM_1_1SelectionItem.html">kpim::selectionitem</option>,  <option value="classKPIM_1_1ThreadWeaver_1_1Event.html">kpim::threadweaver::event</option>,  <option value="classKPIM_1_1ThreadWeaver_1_1Job.html">kpim::threadweaver::job</option>,  <option value="classKPIM_1_1ThreadWeaver_1_1Thread.html">kpim::threadweaver::thread</option>,  <option value="classKPIM_1_1ThreadWeaver_1_1Weaver.html">kpim::threadweaver::weaver</option>,  <option value="classKPIM_1_1ThreadWeaver_1_1WeaverExtension.html">kpim::threadweaver::weaverextension</option>,  <option value="classKPIM_1_1ThreadWeaver_1_1WeaverThreadLogger.html">kpim::threadweaver::weaverthreadlogger</option>,  <option value="classKPrefsDialog.html">kprefsdialog</option>,  <option value="classKPrefsWid.html">kprefswid</option>,  <option value="classKPrefsWidBool.html">kprefswidbool</option>,  <option value="classKPrefsWidColor.html">kprefswidcolor</option>,  <option value="classKPrefsWidCombo.html">kprefswidcombo</option>,  <option value="classKPrefsWidDate.html">kprefswiddate</option>,  <option value="classKPrefsWidDuration.html">kprefswidduration</option>,  <option value="classKPrefsWidFont.html">kprefswidfont</option>,  <option value="classKPrefsWidInt.html">kprefswidint</option>,  <option value="classKPrefsWidManager.html">kprefswidmanager</option>,  <option value="classKPrefsWidPath.html">kprefswidpath</option>,  <option value="classKPrefsWidRadios.html">kprefswidradios</option>,  <option value="classKPrefsWidString.html">kprefswidstring</option>,  <option value="classKPrefsWidTime.html">kprefswidtime</option>,  <option value="classKRecentAddress_1_1RecentAddresses.html">krecentaddress::recentaddresses</option>,  <option value="classKRegExp3.html">kregexp3</option>,  <option value="classKResourcePrefs.html">kresourceprefs</option>,  <option value="classKRSqueezedTextLabel.html">krsqueezedtextlabel</option>,  <option value="classKSubscription.html">ksubscription</option>,  <option value="classKTimeEdit.html">ktimeedit</option>,  <option value="classKVCardDrag.html">kvcarddrag</option>,  <option value="classKWidgetLister.html">kwidgetlister</option>,  <option value="classLinkLocator.html">linklocator</option>,  <option value="classQStrictUtf7Codec.html">qstrictutf7codec</option>,  <option value="classQUtf7Codec.html">qutf7codec</option>,  <option value="classRuleEditWidget.html">ruleeditwidget</option>,  <option value="classRuleListWidget.html">rulelistwidget</option>,  <option value="classRuleStack.html">rulestack</option>,  <option value="classScorableGroup.html">scorablegroup</option>,  <option value="classSingleActionWidget.html">singleactionwidget</option>,  <option value="classSingleConditionWidget.html">singleconditionwidget</option>,
</select>
</form>
</div>
-->
</div></div>
<div class="menu_box"><h2>API Dox</h2>
<div class="nav_list">
<ul>
<li><a href="../../akregator/html/index.html">akregator</a></li><li>&nbsp;&nbsp;<a href="../../akregator/src/html/index.html">src</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../akregator/src/librss/html/index.html">librss</a></li><li><a href="../../certmanager/html/index.html">certmanager</a></li><li>&nbsp;&nbsp;<a href="../../certmanager/lib/html/index.html">lib</a></li><li><a href="../../kaddressbook/html/index.html">kaddressbook</a></li><li><a href="../../kalarm/html/index.html">kalarm</a></li><li>&nbsp;&nbsp;<a href="../../kalarm/lib/html/index.html">lib</a></li><li><a href="../../kandy/html/index.html">kandy</a></li><li><a href="../../karm/html/index.html">karm</a></li><li><a href="../../kdgantt/html/index.html">kdgantt</a></li><li><a href="../../kgantt/html/index.html">kgantt</a></li><li><a href="../../kioslaves/html/index.html">kioslaves</a></li><li>&nbsp;&nbsp;<a href="../../kioslaves/imap4/html/index.html">imap4</a></li><li>&nbsp;&nbsp;<a href="../../kioslaves/mbox/html/index.html">mbox</a></li><li><a href="../../kitchensync/html/index.html">kitchensync</a></li><li><a href="../../kmail/html/index.html">kmail</a></li><li><a href="../../knotes/html/index.html">knotes</a></li><li><a href="../../konsolekalendar/html/index.html">konsolekalendar</a></li><li><a href="../../kontact/html/index.html">kontact</a></li><li><a href="../../korganizer/html/index.html">korganizer</a></li><li><a href="../../kpilot/html/index.html">kpilot</a></li><li>&nbsp;&nbsp;<a href="../../kpilot/kpilot/html/index.html">kpilot</a></li><li>&nbsp;&nbsp;<a href="../../kpilot/lib/html/index.html">lib</a></li><li><a href="../../libemailfunctions/html/index.html">libemailfunctions</a></li><li><a href="../../libkcal/html/index.html">libkcal</a></li><li><a href="../../libkdepim/html/index.html">libkdepim</a></li><li><a href="../../libkholidays/html/index.html">libkholidays</a></li><li><a href="../../libkmime/html/index.html">libkmime</a></li><li><a href="../../libkpgp/html/index.html">libkpgp</a></li><li><a href="../../libkpimidentities/html/index.html">libkpimidentities</a></li>
</ul></div></div>


        </td>
</tr>
</table>

<span class="doNotDisplay">
  <a href="http://www.kde.org/" accesskey="8">KDE Home</a> |
  <a href="http://accessibility.kde.org/" accesskey="9">KDE Accessibility Home</a> |
  <a href="http://www.kde.org/media/accesskeys.php" accesskey="0">Description of Access Keys</a>
</span>


<div style="height: 8px"></div>

<div id="footer">
  <div id="footer_left">
    Maintained by <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;groo&#116;&#64;kde&#46;or&#x67;">Adriaan de Groot</a>
and
<a href="&#109;a&#105;&#108;&#116;&#111;&#58;w&#105;nter&#64;kde&#46;or&#x67">Allen Winter</a>.
<br/>
    KDE and K Desktop Environment are trademarks of <a href="http://www.kde.org/areas/kde-ev/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> |
    <a href="http://www.kde.org/contact/impressum.php">Legal</a>
  </div>
  <div id="footer_right"><img src="/media/images/footer_right.png" style="margin: 0px" alt="" /></div>
</div>

<!--
WARNING: DO NOT SEND MAIL TO THE FOLLOWING EMAIL ADDRESS! YOU WILL
BE BLOCKED INSTANTLY AND PERMANENTLY!
<a href="mailto:aaaatrap-425acc3b5374943f@kde.org">Block me</a>
WARNING END
-->

</body>
</html>