<!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.15"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>apt: pkgAcquire::Worker 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="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">apt  <span id="projectnumber">1.4.6</span> </div> <div id="projectbrief">commandline package manager</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.15 --> <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&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',false,false,'search.php','Search'); }); /* @license-end */</script> <div id="main-nav"></div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="classpkgAcquire.xhtml">pkgAcquire</a></li><li class="navelem"><a class="el" href="classpkgAcquire_1_1Worker.xhtml">Worker</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-attribs">Public Attributes</a> | <a href="#pro-methods">Protected Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> | <a href="#friends">Friends</a> | <a href="classpkgAcquire_1_1Worker-members.xhtml">List of all members</a> </div> <div class="headertitle"> <div class="title">pkgAcquire::Worker Class Reference<div class="ingroups"><a class="el" href="group__acquire.xhtml">Acquire system {{{</a></div></div> </div> </div><!--header--> <div class="contents"> <p>A fetch subprocess. <a href="classpkgAcquire_1_1Worker.xhtml#details">More...</a></p> <p><code>#include <<a class="el" href="acquire-worker_8h_source.xhtml">apt-pkg/acquire-worker.h</a>></code></p> <div class="dynheader"> Inheritance diagram for pkgAcquire::Worker:</div> <div class="dyncontent"> <div class="center"> <img src="classpkgAcquire_1_1Worker.png" usemap="#pkgAcquire::Worker_map" alt=""/> <map id="pkgAcquire::Worker_map" name="pkgAcquire::Worker_map"> <area href="classWeakPointable.xhtml" alt="WeakPointable" shape="rect" coords="0,0,95,24"/> </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:a37fbf2dea83d49ebf053ecc76c5b39b3"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a37fbf2dea83d49ebf053ecc76c5b39b3">QueueItem</a> (<a class="el" href="structpkgAcquire_1_1Queue_1_1QItem.xhtml">pkgAcquire::Queue::QItem</a> *<a class="el" href="classpkgAcquire_1_1Item.xhtml">Item</a>)</td></tr> <tr class="memdesc:a37fbf2dea83d49ebf053ecc76c5b39b3"><td class="mdescLeft"> </td><td class="mdescRight">Tell the subprocess to download the given item. <a href="#a37fbf2dea83d49ebf053ecc76c5b39b3">More...</a><br /></td></tr> <tr class="separator:a37fbf2dea83d49ebf053ecc76c5b39b3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa70efaa4751ac6d5d54dce88fe725e0a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#aa70efaa4751ac6d5d54dce88fe725e0a">Start</a> ()</td></tr> <tr class="memdesc:aa70efaa4751ac6d5d54dce88fe725e0a"><td class="mdescLeft"> </td><td class="mdescRight">Start up the worker and fill in <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a33b828cdf6b336e68c51bb8e068e1297" title="The configuration of this method. On startup, the target of this pointer is filled in with basic data...">Config</a>. <a href="#aa70efaa4751ac6d5d54dce88fe725e0a">More...</a><br /></td></tr> <tr class="separator:aa70efaa4751ac6d5d54dce88fe725e0a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae7e67c4b41efe972e0bd8ccaeacce912"><td class="memItemLeft" align="right" valign="top"><a id="ae7e67c4b41efe972e0bd8ccaeacce912"></a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#ae7e67c4b41efe972e0bd8ccaeacce912">Pulse</a> ()</td></tr> <tr class="memdesc:ae7e67c4b41efe972e0bd8ccaeacce912"><td class="mdescLeft"> </td><td class="mdescRight">Update the worker statistics (CurrentSize, TotalSize, etc). <br /></td></tr> <tr class="separator:ae7e67c4b41efe972e0bd8ccaeacce912"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8b88e4cc12a0a74aad2b80e5313859b3"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structpkgAcquire_1_1MethodConfig.xhtml">MethodConfig</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a8b88e4cc12a0a74aad2b80e5313859b3">GetConf</a> () const</td></tr> <tr class="separator:a8b88e4cc12a0a74aad2b80e5313859b3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac0cf8a483d82d1372c6f7d499937860c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#ac0cf8a483d82d1372c6f7d499937860c">Worker</a> (<a class="el" href="classpkgAcquire_1_1Queue.xhtml">Queue</a> *<a class="el" href="classpkgAcquire_1_1Worker.xhtml#a99d906c6fe7507d8452fa4566377d2eb">OwnerQ</a>, <a class="el" href="structpkgAcquire_1_1MethodConfig.xhtml">MethodConfig</a> *<a class="el" href="classpkgAcquire_1_1Worker.xhtml#a33b828cdf6b336e68c51bb8e068e1297">Config</a>, <a class="el" href="classpkgAcquireStatus.xhtml">pkgAcquireStatus</a> *<a class="el" href="classpkgAcquire_1_1Worker.xhtml#aa7f97da72ceb8761a1cda178c778ca7c">Log</a>)</td></tr> <tr class="memdesc:ac0cf8a483d82d1372c6f7d499937860c"><td class="mdescLeft"> </td><td class="mdescRight">Create a new <a class="el" href="classpkgAcquire_1_1Worker.xhtml" title="A fetch subprocess.">Worker</a> to download files. <a href="#ac0cf8a483d82d1372c6f7d499937860c">More...</a><br /></td></tr> <tr class="separator:ac0cf8a483d82d1372c6f7d499937860c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae2af0336261da4341b48814adf215290"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#ae2af0336261da4341b48814adf215290">Worker</a> (<a class="el" href="structpkgAcquire_1_1MethodConfig.xhtml">MethodConfig</a> *<a class="el" href="classpkgAcquire_1_1Worker.xhtml#a33b828cdf6b336e68c51bb8e068e1297">Config</a>)</td></tr> <tr class="memdesc:ae2af0336261da4341b48814adf215290"><td class="mdescLeft"> </td><td class="mdescRight">Create a new <a class="el" href="classpkgAcquire_1_1Worker.xhtml" title="A fetch subprocess.">Worker</a> that should just retrieve information about the fetch method. <a href="#ae2af0336261da4341b48814adf215290">More...</a><br /></td></tr> <tr class="separator:ae2af0336261da4341b48814adf215290"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6c90b9d499e906079194f681b6cb90ca"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a6c90b9d499e906079194f681b6cb90ca">~Worker</a> ()</td></tr> <tr class="memdesc:a6c90b9d499e906079194f681b6cb90ca"><td class="mdescLeft"> </td><td class="mdescRight">Clean up this worker. <a href="#a6c90b9d499e906079194f681b6cb90ca">More...</a><br /></td></tr> <tr class="separator:a6c90b9d499e906079194f681b6cb90ca"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_classWeakPointable"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classWeakPointable')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classWeakPointable.xhtml">WeakPointable</a></td></tr> <tr class="memitem:ac9855cc66cd0e4d7425f4a6bbcfb5e80 inherit pub_methods_classWeakPointable"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWeakPointable.xhtml#ac9855cc66cd0e4d7425f4a6bbcfb5e80">AddWeakPointer</a> (<a class="el" href="classWeakPointable.xhtml">WeakPointable</a> **weakptr)</td></tr> <tr class="separator:ac9855cc66cd0e4d7425f4a6bbcfb5e80 inherit pub_methods_classWeakPointable"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad2d7f814fc839c7ebdf677fb6f87ff5e inherit pub_methods_classWeakPointable"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWeakPointable.xhtml#ad2d7f814fc839c7ebdf677fb6f87ff5e">RemoveWeakPointer</a> (<a class="el" href="classWeakPointable.xhtml">WeakPointable</a> **weakptr)</td></tr> <tr class="separator:ad2d7f814fc839c7ebdf677fb6f87ff5e inherit pub_methods_classWeakPointable"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afec646ba51ad955392a42a9312061b56 inherit pub_methods_classWeakPointable"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWeakPointable.xhtml#afec646ba51ad955392a42a9312061b56">~WeakPointable</a> ()</td></tr> <tr class="separator:afec646ba51ad955392a42a9312061b56 inherit pub_methods_classWeakPointable"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> Public Attributes</h2></td></tr> <tr class="memitem:adbe3d9577156a7736f774428835b31e9"><td class="memItemLeft" align="right" valign="top"><a id="adbe3d9577156a7736f774428835b31e9"></a> <a class="el" href="structpkgAcquire_1_1Queue_1_1QItem.xhtml">pkgAcquire::Queue::QItem</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#adbe3d9577156a7736f774428835b31e9">CurrentItem</a></td></tr> <tr class="memdesc:adbe3d9577156a7736f774428835b31e9"><td class="mdescLeft"> </td><td class="mdescRight">The queue entry that is currently being downloaded. <br /></td></tr> <tr class="separator:adbe3d9577156a7736f774428835b31e9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae08432c27cb86081cae64bb384b3ac4b"><td class="memItemLeft" align="right" valign="top"><a id="ae08432c27cb86081cae64bb384b3ac4b"></a> std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#ae08432c27cb86081cae64bb384b3ac4b">Status</a></td></tr> <tr class="memdesc:ae08432c27cb86081cae64bb384b3ac4b"><td class="mdescLeft"> </td><td class="mdescRight">The most recent status string received from the subprocess. <br /></td></tr> <tr class="separator:ae08432c27cb86081cae64bb384b3ac4b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af6da844ee8d9f7ae8f59e1821edc7948"><td class="memItemLeft" align="right" valign="top"><a id="af6da844ee8d9f7ae8f59e1821edc7948"></a> unsigned long long </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#af6da844ee8d9f7ae8f59e1821edc7948">CurrentSize</a></td></tr> <tr class="memdesc:af6da844ee8d9f7ae8f59e1821edc7948"><td class="mdescLeft"> </td><td class="mdescRight">How many bytes of the file have been downloaded. Zero if the current progress of the file cannot be determined. <br /></td></tr> <tr class="separator:af6da844ee8d9f7ae8f59e1821edc7948"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ace18d22dfea021e7f9ae876b1974ccbe"><td class="memItemLeft" align="right" valign="top"><a id="ace18d22dfea021e7f9ae876b1974ccbe"></a> unsigned long long </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#ace18d22dfea021e7f9ae876b1974ccbe">TotalSize</a></td></tr> <tr class="memdesc:ace18d22dfea021e7f9ae876b1974ccbe"><td class="mdescLeft"> </td><td class="mdescRight">The total number of bytes to be downloaded. Zero if the total size of the final is unknown. <br /></td></tr> <tr class="separator:ace18d22dfea021e7f9ae876b1974ccbe"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abd497ee7ec5dec08e88b4658730ecf63"><td class="memItemLeft" align="right" valign="top"><a id="abd497ee7ec5dec08e88b4658730ecf63"></a> unsigned long long </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#abd497ee7ec5dec08e88b4658730ecf63">ResumePoint</a></td></tr> <tr class="memdesc:abd497ee7ec5dec08e88b4658730ecf63"><td class="mdescLeft"> </td><td class="mdescRight">How much of the file was already downloaded prior to starting this worker. <br /></td></tr> <tr class="separator:abd497ee7ec5dec08e88b4658730ecf63"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr class="memitem:a9af72b216eb95e320f0f261d9497c5c1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a9af72b216eb95e320f0f261d9497c5c1">Construct</a> ()</td></tr> <tr class="memdesc:a9af72b216eb95e320f0f261d9497c5c1"><td class="mdescLeft"> </td><td class="mdescRight">Common code for the constructor. <a href="#a9af72b216eb95e320f0f261d9497c5c1">More...</a><br /></td></tr> <tr class="separator:a9af72b216eb95e320f0f261d9497c5c1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1f374a34dcd1bd9881717b345118fd49"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a1f374a34dcd1bd9881717b345118fd49">ReadMessages</a> ()</td></tr> <tr class="memdesc:a1f374a34dcd1bd9881717b345118fd49"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve any available messages from the subprocess. <a href="#a1f374a34dcd1bd9881717b345118fd49">More...</a><br /></td></tr> <tr class="separator:a1f374a34dcd1bd9881717b345118fd49"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a26a68d57a249a042c1e32186ce2fce8b"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a26a68d57a249a042c1e32186ce2fce8b">RunMessages</a> ()</td></tr> <tr class="memdesc:a26a68d57a249a042c1e32186ce2fce8b"><td class="mdescLeft"> </td><td class="mdescRight">Parse and dispatch pending messages. <a href="#a26a68d57a249a042c1e32186ce2fce8b">More...</a><br /></td></tr> <tr class="separator:a26a68d57a249a042c1e32186ce2fce8b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5a3e1a57c0fe730162df8a50677ae513"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a5a3e1a57c0fe730162df8a50677ae513">InFdReady</a> ()</td></tr> <tr class="memdesc:a5a3e1a57c0fe730162df8a50677ae513"><td class="mdescLeft"> </td><td class="mdescRight">Read and dispatch any pending messages from the subprocess. <a href="#a5a3e1a57c0fe730162df8a50677ae513">More...</a><br /></td></tr> <tr class="separator:a5a3e1a57c0fe730162df8a50677ae513"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2bd3e6488eaf8af11cedae06f7de9e2c"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a2bd3e6488eaf8af11cedae06f7de9e2c">OutFdReady</a> ()</td></tr> <tr class="memdesc:a2bd3e6488eaf8af11cedae06f7de9e2c"><td class="mdescLeft"> </td><td class="mdescRight">Send any pending commands to the subprocess. <a href="#a2bd3e6488eaf8af11cedae06f7de9e2c">More...</a><br /></td></tr> <tr class="separator:a2bd3e6488eaf8af11cedae06f7de9e2c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa3de23b9c5a564121a667dd9b392e158"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#aa3de23b9c5a564121a667dd9b392e158">Capabilities</a> (std::string Message)</td></tr> <tr class="memdesc:aa3de23b9c5a564121a667dd9b392e158"><td class="mdescLeft"> </td><td class="mdescRight">Handle a 100 Capabilities response from the subprocess. <a href="#aa3de23b9c5a564121a667dd9b392e158">More...</a><br /></td></tr> <tr class="separator:aa3de23b9c5a564121a667dd9b392e158"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af79a315ab449f2046389c91e3f114326"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#af79a315ab449f2046389c91e3f114326">SendConfiguration</a> ()</td></tr> <tr class="memdesc:af79a315ab449f2046389c91e3f114326"><td class="mdescLeft"> </td><td class="mdescRight">Send a 601 <a class="el" href="classConfiguration.xhtml">Configuration</a> message (containing the APT configuration) to the subprocess. <a href="#af79a315ab449f2046389c91e3f114326">More...</a><br /></td></tr> <tr class="separator:af79a315ab449f2046389c91e3f114326"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5fa3dc5431fbfcd2b5ceed5f97f1eb84"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a5fa3dc5431fbfcd2b5ceed5f97f1eb84">MediaChange</a> (std::string Message)</td></tr> <tr class="memdesc:a5fa3dc5431fbfcd2b5ceed5f97f1eb84"><td class="mdescLeft"> </td><td class="mdescRight">Handle a 403 Media Change message. <a href="#a5fa3dc5431fbfcd2b5ceed5f97f1eb84">More...</a><br /></td></tr> <tr class="separator:a5fa3dc5431fbfcd2b5ceed5f97f1eb84"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a94fe52037e4594131495b1791d6654ea"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a94fe52037e4594131495b1791d6654ea">MethodFailure</a> ()</td></tr> <tr class="memdesc:a94fe52037e4594131495b1791d6654ea"><td class="mdescLeft"> </td><td class="mdescRight">Invoked when the worked process dies unexpectedly. <a href="#a94fe52037e4594131495b1791d6654ea">More...</a><br /></td></tr> <tr class="separator:a94fe52037e4594131495b1791d6654ea"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6a6deb8c5e68383147e31b24690ea0fd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a6a6deb8c5e68383147e31b24690ea0fd">ItemDone</a> ()</td></tr> <tr class="memdesc:a6a6deb8c5e68383147e31b24690ea0fd"><td class="mdescLeft"> </td><td class="mdescRight">Invoked when a fetch job is completed, either successfully or unsuccessfully. <a href="#a6a6deb8c5e68383147e31b24690ea0fd">More...</a><br /></td></tr> <tr class="separator:a6a6deb8c5e68383147e31b24690ea0fd"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr class="memitem:a70b012fdfb38bfe94b52924d45c5462d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpkgAcquire_1_1Worker.xhtml">Worker</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a70b012fdfb38bfe94b52924d45c5462d">NextQueue</a></td></tr> <tr class="memdesc:a70b012fdfb38bfe94b52924d45c5462d"><td class="mdescLeft"> </td><td class="mdescRight">The next link on the <a class="el" href="classpkgAcquire_1_1Queue.xhtml" title="A single download queue in a pkgAcquire object. {{{.">Queue</a> list. <a href="#a70b012fdfb38bfe94b52924d45c5462d">More...</a><br /></td></tr> <tr class="separator:a70b012fdfb38bfe94b52924d45c5462d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3faf9ec3dc6548bd0ec0f656a91d9b8f"><td class="memItemLeft" align="right" valign="top"><a id="a3faf9ec3dc6548bd0ec0f656a91d9b8f"></a> <a class="el" href="classpkgAcquire_1_1Worker.xhtml">Worker</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a3faf9ec3dc6548bd0ec0f656a91d9b8f">NextAcquire</a></td></tr> <tr class="memdesc:a3faf9ec3dc6548bd0ec0f656a91d9b8f"><td class="mdescLeft"> </td><td class="mdescRight">The next link on the Acquire list. <br /></td></tr> <tr class="separator:a3faf9ec3dc6548bd0ec0f656a91d9b8f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a99d906c6fe7507d8452fa4566377d2eb"><td class="memItemLeft" align="right" valign="top"><a id="a99d906c6fe7507d8452fa4566377d2eb"></a> <a class="el" href="classpkgAcquire_1_1Queue.xhtml">Queue</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a99d906c6fe7507d8452fa4566377d2eb">OwnerQ</a></td></tr> <tr class="memdesc:a99d906c6fe7507d8452fa4566377d2eb"><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classpkgAcquire_1_1Queue.xhtml" title="A single download queue in a pkgAcquire object. {{{.">Queue</a> with which this worker is associated. <br /></td></tr> <tr class="separator:a99d906c6fe7507d8452fa4566377d2eb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa7f97da72ceb8761a1cda178c778ca7c"><td class="memItemLeft" align="right" valign="top"><a id="aa7f97da72ceb8761a1cda178c778ca7c"></a> <a class="el" href="classpkgAcquireStatus.xhtml">pkgAcquireStatus</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#aa7f97da72ceb8761a1cda178c778ca7c">Log</a></td></tr> <tr class="memdesc:aa7f97da72ceb8761a1cda178c778ca7c"><td class="mdescLeft"> </td><td class="mdescRight">The download progress indicator to which progress messages should be sent. <br /></td></tr> <tr class="separator:aa7f97da72ceb8761a1cda178c778ca7c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a33b828cdf6b336e68c51bb8e068e1297"><td class="memItemLeft" align="right" valign="top"><a id="a33b828cdf6b336e68c51bb8e068e1297"></a> <a class="el" href="structpkgAcquire_1_1MethodConfig.xhtml">MethodConfig</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a33b828cdf6b336e68c51bb8e068e1297">Config</a></td></tr> <tr class="memdesc:a33b828cdf6b336e68c51bb8e068e1297"><td class="mdescLeft"> </td><td class="mdescRight">The configuration of this method. On startup, the target of this pointer is filled in with basic data about the method, as reported by the worker. <br /></td></tr> <tr class="separator:a33b828cdf6b336e68c51bb8e068e1297"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a006a979c4801f6b6ceb33cb3acd6dc89"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a006a979c4801f6b6ceb33cb3acd6dc89">Access</a></td></tr> <tr class="memdesc:a006a979c4801f6b6ceb33cb3acd6dc89"><td class="mdescLeft"> </td><td class="mdescRight">The access method to be used by this worker. <a href="#a006a979c4801f6b6ceb33cb3acd6dc89">More...</a><br /></td></tr> <tr class="separator:a006a979c4801f6b6ceb33cb3acd6dc89"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a593a34f5ed2b53f33f69c4f17aa836eb"><td class="memItemLeft" align="right" valign="top"><a id="a593a34f5ed2b53f33f69c4f17aa836eb"></a> pid_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a593a34f5ed2b53f33f69c4f17aa836eb">Process</a></td></tr> <tr class="memdesc:a593a34f5ed2b53f33f69c4f17aa836eb"><td class="mdescLeft"> </td><td class="mdescRight">The PID of the subprocess. <br /></td></tr> <tr class="separator:a593a34f5ed2b53f33f69c4f17aa836eb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2eb3145b965a64b578db347d1bae648b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a2eb3145b965a64b578db347d1bae648b">InFd</a></td></tr> <tr class="memdesc:a2eb3145b965a64b578db347d1bae648b"><td class="mdescLeft"> </td><td class="mdescRight">A file descriptor connected to the standard output of the subprocess. <a href="#a2eb3145b965a64b578db347d1bae648b">More...</a><br /></td></tr> <tr class="separator:a2eb3145b965a64b578db347d1bae648b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af2679e54f43d436f88045350be6fb2ab"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#af2679e54f43d436f88045350be6fb2ab">OutFd</a></td></tr> <tr class="memdesc:af2679e54f43d436f88045350be6fb2ab"><td class="mdescLeft"> </td><td class="mdescRight">A file descriptor connected to the standard input of the subprocess. <a href="#af2679e54f43d436f88045350be6fb2ab">More...</a><br /></td></tr> <tr class="separator:af2679e54f43d436f88045350be6fb2ab"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad7c248ae34ac80ca11a173980d49f991"><td class="memItemLeft" align="right" valign="top"><a id="ad7c248ae34ac80ca11a173980d49f991"></a> int </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#ad7c248ae34ac80ca11a173980d49f991">PrivSepSocketFd</a></td></tr> <tr class="memdesc:ad7c248ae34ac80ca11a173980d49f991"><td class="mdescLeft"> </td><td class="mdescRight">The socket to send SCM_RIGHTS message through. <br /></td></tr> <tr class="separator:ad7c248ae34ac80ca11a173980d49f991"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2fa9fc8e728a455a1cd4e76a8dd86411"><td class="memItemLeft" align="right" valign="top"><a id="a2fa9fc8e728a455a1cd4e76a8dd86411"></a> int </td><td class="memItemRight" valign="bottom"><b>PrivSepSocketFdChild</b></td></tr> <tr class="separator:a2fa9fc8e728a455a1cd4e76a8dd86411"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a849bc65c54e1bcbe8a7f053ce2cec672"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a849bc65c54e1bcbe8a7f053ce2cec672">InReady</a></td></tr> <tr class="memdesc:a849bc65c54e1bcbe8a7f053ce2cec672"><td class="mdescLeft"> </td><td class="mdescRight">Set to <b>true</b> if the worker is in a state in which it might generate data or command responses. <a href="#a849bc65c54e1bcbe8a7f053ce2cec672">More...</a><br /></td></tr> <tr class="separator:a849bc65c54e1bcbe8a7f053ce2cec672"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0b8717fb6d062212c251900cee4e6004"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a0b8717fb6d062212c251900cee4e6004">OutReady</a></td></tr> <tr class="memdesc:a0b8717fb6d062212c251900cee4e6004"><td class="mdescLeft"> </td><td class="mdescRight">Set to <b>true</b> if the worker is in a state in which it is legal to send commands to it. <a href="#a0b8717fb6d062212c251900cee4e6004">More...</a><br /></td></tr> <tr class="separator:a0b8717fb6d062212c251900cee4e6004"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acdf3472c9b75f32dae88032d42d1cb6c"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#acdf3472c9b75f32dae88032d42d1cb6c">Debug</a></td></tr> <tr class="separator:acdf3472c9b75f32dae88032d42d1cb6c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad4a47a4aae6979a5a870f4fd7953a8d6"><td class="memItemLeft" align="right" valign="top"><a id="ad4a47a4aae6979a5a870f4fd7953a8d6"></a> std::vector< std::string > </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#ad4a47a4aae6979a5a870f4fd7953a8d6">MessageQueue</a></td></tr> <tr class="memdesc:ad4a47a4aae6979a5a870f4fd7953a8d6"><td class="mdescLeft"> </td><td class="mdescRight">The raw text values of messages received from the worker, in sequence. <br /></td></tr> <tr class="separator:ad4a47a4aae6979a5a870f4fd7953a8d6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a27ee7762ef1caaf3ec8c3598c15e7886"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classpkgAcquire_1_1Worker.xhtml#a27ee7762ef1caaf3ec8c3598c15e7886">OutQueue</a></td></tr> <tr class="memdesc:a27ee7762ef1caaf3ec8c3598c15e7886"><td class="mdescLeft"> </td><td class="mdescRight">Buffers pending writes to the subprocess. <a href="#a27ee7762ef1caaf3ec8c3598c15e7886">More...</a><br /></td></tr> <tr class="separator:a27ee7762ef1caaf3ec8c3598c15e7886"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a> Friends</h2></td></tr> <tr class="memitem:ae9e04de9ce779a3c0ad0b7142f7332d7"><td class="memItemLeft" align="right" valign="top"><a id="ae9e04de9ce779a3c0ad0b7142f7332d7"></a> class </td><td class="memItemRight" valign="bottom"><b>pkgAcquire</b></td></tr> <tr class="separator:ae9e04de9ce779a3c0ad0b7142f7332d7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a47dfc6f2bc0d50a6e7c92eb00d97b064"><td class="memItemLeft" align="right" valign="top"><a id="a47dfc6f2bc0d50a6e7c92eb00d97b064"></a> class </td><td class="memItemRight" valign="bottom"><b>Queue</b></td></tr> <tr class="separator:a47dfc6f2bc0d50a6e7c92eb00d97b064"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>A fetch subprocess. </p> <p>A worker process is responsible for one stage of the fetch. This class encapsulates the communications protocol between the master process and the worker, from the master end.</p> <p>Each worker is intrinsically placed on two linked lists. The <a class="el" href="classpkgAcquire_1_1Queue.xhtml" title="A single download queue in a pkgAcquire object. {{{.">Queue</a> list (maintained in the <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a70b012fdfb38bfe94b52924d45c5462d" title="The next link on the Queue list.">NextQueue</a> variable) is maintained by the <a class="el" href="classpkgAcquire_1_1Queue.xhtml" title="A single download queue in a pkgAcquire object. {{{.">pkgAcquire::Queue</a> class; it represents the set of workers assigned to a particular queue. The Acquire list (maintained in the <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a3faf9ec3dc6548bd0ec0f656a91d9b8f" title="The next link on the Acquire list.">NextAcquire</a> variable) is maintained by the <a class="el" href="classpkgAcquire.xhtml" title="The core download scheduler. {{{.">pkgAcquire</a> class; it represents the set of active workers for a particular <a class="el" href="classpkgAcquire.xhtml" title="The core download scheduler. {{{.">pkgAcquire</a> object.</p> <dl class="todo"><dt><b><a class="el" href="todo.xhtml#_todo000008">Todo:</a></b></dt><dd>Like everything else in the Acquire system, this has way too many protected items.</dd></dl> <dl class="section see"><dt>See also</dt><dd><a class="el" href="classpkgAcqMethod.xhtml">pkgAcqMethod</a>, <a class="el" href="classpkgAcquire_1_1Item.xhtml" title="Represents the process by which a pkgAcquire object should retrieve a file or a collection of files.">pkgAcquire::Item</a>, <a class="el" href="classpkgAcquire.xhtml" title="The core download scheduler. {{{.">pkgAcquire</a> </dd></dl> </div><h2 class="groupheader">Constructor & Destructor Documentation</h2> <a id="ac0cf8a483d82d1372c6f7d499937860c"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac0cf8a483d82d1372c6f7d499937860c">◆ </a></span>Worker() <span class="overload">[1/2]</span></h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classpkgAcquire_1_1Worker.xhtml">Worker</a> </td> <td>(</td> <td class="paramtype"><a class="el" href="classpkgAcquire_1_1Queue.xhtml">Queue</a> * </td> <td class="paramname"><em>OwnerQ</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structpkgAcquire_1_1MethodConfig.xhtml">MethodConfig</a> * </td> <td class="paramname"><em>Config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classpkgAcquireStatus.xhtml">pkgAcquireStatus</a> * </td> <td class="paramname"><em>Log</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Create a new <a class="el" href="classpkgAcquire_1_1Worker.xhtml" title="A fetch subprocess.">Worker</a> to download files. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">OwnerQ</td><td>The queue into which this worker should be placed.</td></tr> <tr><td class="paramname">Config</td><td>A location in which to store information about the fetch method.</td></tr> <tr><td class="paramname">Log</td><td>The download progress indicator that should be used to report the progress of this worker. </td></tr> </table> </dd> </dl> <p class="reference">References <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a9af72b216eb95e320f0f261d9497c5c1">Construct()</a>.</p> </div> </div> <a id="ae2af0336261da4341b48814adf215290"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae2af0336261da4341b48814adf215290">◆ </a></span>Worker() <span class="overload">[2/2]</span></h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classpkgAcquire_1_1Worker.xhtml">Worker</a> </td> <td>(</td> <td class="paramtype"><a class="el" href="structpkgAcquire_1_1MethodConfig.xhtml">MethodConfig</a> * </td> <td class="paramname"><em>Config</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">explicit</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Create a new <a class="el" href="classpkgAcquire_1_1Worker.xhtml" title="A fetch subprocess.">Worker</a> that should just retrieve information about the fetch method. </p> <p>Nothing in particular forces you to refrain from actually downloading stuff, but the various status callbacks won't be invoked.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">Config</td><td>A location in which to store information about the fetch method. </td></tr> </table> </dd> </dl> </div> </div> <a id="a6c90b9d499e906079194f681b6cb90ca"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6c90b9d499e906079194f681b6cb90ca">◆ </a></span>~Worker()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">~<a class="el" href="classpkgAcquire_1_1Worker.xhtml">Worker</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">virtual</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Clean up this worker. </p> <p>Closes the file descriptors; if <a class="el" href="structpkgAcquire_1_1MethodConfig.xhtml#a18ab15b6a105e10118c35973765cce34" title="If true, the subprocess has to carry out some cleanup actions before shutting down.">MethodConfig::NeedsCleanup</a> is <b>false</b>, also rudely interrupts the worker with a SIGINT. </p> </div> </div> <h2 class="groupheader">Member Function Documentation</h2> <a id="aa3de23b9c5a564121a667dd9b392e158"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa3de23b9c5a564121a667dd9b392e158">◆ </a></span>Capabilities()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool Capabilities </td> <td>(</td> <td class="paramtype">std::string </td> <td class="paramname"><em>Message</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Handle a 100 Capabilities response from the subprocess. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">Message</td><td>the raw text of the message from the subprocess.</td></tr> </table> </dd> </dl> <p>The message will be parsed and its contents used to fill <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a33b828cdf6b336e68c51bb8e068e1297" title="The configuration of this method. On startup, the target of this pointer is filled in with basic data...">Config</a>. If <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a33b828cdf6b336e68c51bb8e068e1297" title="The configuration of this method. On startup, the target of this pointer is filled in with basic data...">Config</a> is NULL, this routine is a NOP.</p> <dl class="section return"><dt>Returns</dt><dd><b>true</b>. </dd></dl> <p class="reference">References <a class="el" href="classpkgAcquire.xhtml#a25c57bcf8cdbeb6439120a35d90366d8">pkgAcquire::Debug</a>.</p> </div> </div> <a id="a9af72b216eb95e320f0f261d9497c5c1"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9af72b216eb95e320f0f261d9497c5c1">◆ </a></span>Construct()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void Construct </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Common code for the constructor. </p> <p>Initializes NextQueue and NextAcquire to NULL; Process, InFd, and OutFd to -1, OutReady and InReady to <b>false</b>, and Debug from _config. </p> <p class="reference">References <a class="el" href="classpkgAcquire.xhtml#a25c57bcf8cdbeb6439120a35d90366d8">pkgAcquire::Debug</a>.</p> <p class="reference">Referenced by <a class="el" href="classpkgAcquire_1_1Worker.xhtml#ac0cf8a483d82d1372c6f7d499937860c">Worker()</a>.</p> </div> </div> <a id="a8b88e4cc12a0a74aad2b80e5313859b3"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8b88e4cc12a0a74aad2b80e5313859b3">◆ </a></span>GetConf()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="structpkgAcquire_1_1MethodConfig.xhtml">MethodConfig</a>* GetConf </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <dl class="section return"><dt>Returns</dt><dd>The fetch method configuration. </dd></dl> <p class="reference">References <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a33b828cdf6b336e68c51bb8e068e1297">Config</a>.</p> <p class="reference">Referenced by <a class="el" href="classpkgAcquire_1_1Queue.xhtml#a0483a6e5db0c15e5445bcc6a00262204">pkgAcquire::Queue::Shutdown()</a>.</p> </div> </div> <a id="a5a3e1a57c0fe730162df8a50677ae513"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5a3e1a57c0fe730162df8a50677ae513">◆ </a></span>InFdReady()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool InFdReady </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Read and dispatch any pending messages from the subprocess. </p> <dl class="section return"><dt>Returns</dt><dd><b>false</b> if the subprocess died unexpectedly while a message was being transmitted. </dd></dl> </div> </div> <a id="a6a6deb8c5e68383147e31b24690ea0fd"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6a6deb8c5e68383147e31b24690ea0fd">◆ </a></span>ItemDone()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void ItemDone </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Invoked when a fetch job is completed, either successfully or unsuccessfully. </p> <p>Resets the status information for the worker process. </p> </div> </div> <a id="a5fa3dc5431fbfcd2b5ceed5f97f1eb84"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5fa3dc5431fbfcd2b5ceed5f97f1eb84">◆ </a></span>MediaChange()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool MediaChange </td> <td>(</td> <td class="paramtype">std::string </td> <td class="paramname"><em>Message</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Handle a 403 Media Change message. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">Message</td><td>the raw text of the message; the Media field indicates what type of media should be changed, and the Drive field indicates where the media is located.</td></tr> </table> </dd> </dl> <p>Invokes pkgAcquireStatus::MediaChange(Media, Drive) to ask the user to swap disks; informs the subprocess of the result (via 603 Media Changed, with the Failed field set to <b>true</b> if the user cancelled the media change). </p> <p class="reference">References <a class="el" href="classpkgAcquire.xhtml#a25c57bcf8cdbeb6439120a35d90366d8">pkgAcquire::Debug</a>, <a class="el" href="classpkgAcquire.xhtml#aa7f97da72ceb8761a1cda178c778ca7c">pkgAcquire::Log</a>, and <a class="el" href="classpkgAcquireStatus.xhtml#a61c6f568f6582836223430d117a62e69">pkgAcquireStatus::MediaChange()</a>.</p> </div> </div> <a id="a94fe52037e4594131495b1791d6654ea"></a> <h2 class="memtitle"><span class="permalink"><a href="#a94fe52037e4594131495b1791d6654ea">◆ </a></span>MethodFailure()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool MethodFailure </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Invoked when the worked process dies unexpectedly. </p> <p>Waits for the subprocess to terminate and generates an error if it terminated abnormally, then closes and blanks out all file descriptors. Discards all pending messages from the subprocess.</p> <dl class="section return"><dt>Returns</dt><dd><b>false</b>. </dd></dl> </div> </div> <a id="a2bd3e6488eaf8af11cedae06f7de9e2c"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2bd3e6488eaf8af11cedae06f7de9e2c">◆ </a></span>OutFdReady()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool OutFdReady </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Send any pending commands to the subprocess. </p> <p>This method will fail if there is no pending output.</p> <dl class="section return"><dt>Returns</dt><dd><b>true</b> if all commands were succeeded, <b>false</b> if an error occurred (in which case <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a94fe52037e4594131495b1791d6654ea" title="Invoked when the worked process dies unexpectedly.">MethodFailure()</a> will be invoked). </dd></dl> </div> </div> <a id="a37fbf2dea83d49ebf053ecc76c5b39b3"></a> <h2 class="memtitle"><span class="permalink"><a href="#a37fbf2dea83d49ebf053ecc76c5b39b3">◆ </a></span>QueueItem()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool QueueItem </td> <td>(</td> <td class="paramtype"><a class="el" href="structpkgAcquire_1_1Queue_1_1QItem.xhtml">pkgAcquire::Queue::QItem</a> * </td> <td class="paramname"><em>Item</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Tell the subprocess to download the given item. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname"><a class="el" href="classpkgAcquire_1_1Item.xhtml" title="Represents the process by which a pkgAcquire object should retrieve a file or a collection of files.">Item</a></td><td>the item to queue up. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><b>true</b> if the item was successfully enqueued.</dd></dl> <p>Queues up a 600 <a class="el" href="classURI.xhtml">URI</a> Acquire message for the given item to be sent at the next possible moment. Does <em>not</em> flush the output queue. </p> <p class="reference">References <a class="el" href="classHashStringList.xhtml#a29305669b60ca1680752e2fc3592ba99">HashStringList::begin()</a>, <a class="el" href="classpkgAcquire_1_1Item.xhtml#af75270cda6bae5af763d3d4c921a67ba">pkgAcquire::Item::Custom600Headers()</a>, <a class="el" href="classpkgAcquire.xhtml#a25c57bcf8cdbeb6439120a35d90366d8">pkgAcquire::Debug</a>, <a class="el" href="classHashStringList.xhtml#accf9a4bd0c34d4a5f6a7dab66ea10cdc">HashStringList::end()</a>, <a class="el" href="classHashStringList.xhtml#ad377451a8d52cc254f0097fa634df352">HashStringList::FileSize()</a>, <a class="el" href="classpkgAcquire_1_1Item.xhtml#a908a8a85047dd5a135a84be0f3bc1baa">pkgAcquire::Item::GetExpectedHashes()</a>, and <a class="el" href="classpkgAcquire_1_1Item.xhtml#ac0b2d9156c461297e38e9f3fdf2771b3">pkgAcquire::Item::Owner</a>.</p> <p class="reference">Referenced by <a class="el" href="classpkgAcquire_1_1Queue.xhtml#a5b2dd956b1adc90b13d47e26121d5486">pkgAcquire::Queue::Cycle()</a>.</p> </div> </div> <a id="a1f374a34dcd1bd9881717b345118fd49"></a> <h2 class="memtitle"><span class="permalink"><a href="#a1f374a34dcd1bd9881717b345118fd49">◆ </a></span>ReadMessages()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool ReadMessages </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Retrieve any available messages from the subprocess. </p> <p>The messages are retrieved as in <a class="el" href="strutl_8h_source.xhtml">ReadMessages()</a>, and <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a94fe52037e4594131495b1791d6654ea" title="Invoked when the worked process dies unexpectedly.">MethodFailure()</a> is invoked if an error occurs; in particular, if the pipe to the subprocess dies unexpectedly while a message is being read.</p> <dl class="section return"><dt>Returns</dt><dd><b>true</b> if the messages were successfully read, <b>false</b> otherwise. </dd></dl> </div> </div> <a id="a26a68d57a249a042c1e32186ce2fce8b"></a> <h2 class="memtitle"><span class="permalink"><a href="#a26a68d57a249a042c1e32186ce2fce8b">◆ </a></span>RunMessages()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool RunMessages </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Parse and dispatch pending messages. </p> <p>This dispatches the message in a manner appropriate for its type.</p> <dl class="todo"><dt><b><a class="el" href="todo.xhtml#_todo000014">Todo:</a></b></dt><dd>Several message types lack separate handlers.</dd></dl> <dl class="section see"><dt>See also</dt><dd><a class="el" href="classpkgAcquire_1_1Worker.xhtml#aa3de23b9c5a564121a667dd9b392e158" title="Handle a 100 Capabilities response from the subprocess.">Capabilities()</a>, <a class="el" href="classpkgAcquire_1_1Worker.xhtml#af79a315ab449f2046389c91e3f114326" title="Send a 601 Configuration message (containing the APT configuration) to the subprocess.">SendConfiguration()</a>, <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a5fa3dc5431fbfcd2b5ceed5f97f1eb84" title="Handle a 403 Media Change message.">MediaChange()</a> </dd></dl> <p class="reference">References <a class="el" href="classHashStringList.xhtml#a29305669b60ca1680752e2fc3592ba99">HashStringList::begin()</a>, <a class="el" href="classpkgAcquire_1_1Item.xhtml#a886f6c17d366793eb6202ba2482372f5">pkgAcquire::Item::Complete</a>, <a class="el" href="classpkgAcquire.xhtml#a25c57bcf8cdbeb6439120a35d90366d8">pkgAcquire::Debug</a>, <a class="el" href="structpkgAcquire_1_1ItemDesc.xhtml#a72a1a381861908396ddca53a1fa28f97">pkgAcquire::ItemDesc::Description</a>, <a class="el" href="classpkgAcquire_1_1Item.xhtml#ad340ff53c2faad023e3f11627e91c5b6">pkgAcquire::Item::DescURI()</a>, <a class="el" href="classpkgAcquire_1_1Item.xhtml#ab4b5e2afff64c51303682cea9243f098">pkgAcquire::Item::DestFile</a>, <a class="el" href="classpkgAcquireStatus.xhtml#a6043ea862253ac53dd4c6487c242971e">pkgAcquireStatus::Done()</a>, <a class="el" href="classHashStringList.xhtml#a644718bb2fb240de962dc3c9a1fdf0dc">HashStringList::empty()</a>, <a class="el" href="classHashStringList.xhtml#accf9a4bd0c34d4a5f6a7dab66ea10cdc">HashStringList::end()</a>, <a class="el" href="classpkgAcquireStatus.xhtml#a5c697905fd152636d1970bbfe7783684">pkgAcquireStatus::Fail()</a>, <a class="el" href="classpkgAcquireStatus.xhtml#a6f115e9a73caa8e6a665228d46625c16">pkgAcquireStatus::Fetch()</a>, <a class="el" href="classpkgAcquireStatus.xhtml#ae1ac138afa29527542590c89dcc065a9">pkgAcquireStatus::Fetched()</a>, <a class="el" href="classHashStringList.xhtml#ad377451a8d52cc254f0097fa634df352">HashStringList::FileSize()</a>, <a class="el" href="structpkgAcquire_1_1Queue_1_1QItem.xhtml#a0ef73fc3255f40dec16e3261b7b3b9a5">pkgAcquire::Queue::QItem::GetExpectedHashes()</a>, <a class="el" href="classpkgAcquireStatus.xhtml#a31421608993b5036d3d5aa465a4b7a83">pkgAcquireStatus::IMSHit()</a>, <a class="el" href="classpkgAcquire_1_1Item.xhtml#a98d3c89be817752144bb35823e365fec">pkgAcquire::Item::Local</a>, <a class="el" href="classpkgAcquire.xhtml#aa7f97da72ceb8761a1cda178c778ca7c">pkgAcquire::Log</a>, <a class="el" href="classpkgAcquireStatus.xhtml#a8888d6bbff950b1d8a84124a41bcea77">pkgAcquireStatus::MorePulses</a>, <a class="el" href="structpkgAcquire_1_1ItemDesc.xhtml#a991ea711651b5d291202505da64e379c">pkgAcquire::ItemDesc::Owner</a>, <a class="el" href="structpkgAcquire_1_1Queue_1_1QItem.xhtml#af422b890599c59250eb00474ce781d2e">pkgAcquire::Queue::QItem::Owners</a>, <a class="el" href="classpkgAcquireStatus.xhtml#a3b094d1d0cbeadde35a2f09d6e60bf3f">pkgAcquireStatus::Pulse()</a>, <a class="el" href="classHashStringList.xhtml#a7ab0545cb4ff2f208cb2ab14f21d357b">HashStringList::push_back()</a>, <a class="el" href="classpkgAcquire_1_1Item.xhtml#abd4abbf0fe1f8b5299675b590315b4b9a19728efb594f55c57218604ad77b25db">pkgAcquire::Item::StatAuthError</a>, <a class="el" href="classpkgAcquire_1_1Item.xhtml#abd4abbf0fe1f8b5299675b590315b4b9aafe4203baf90d29ba26cdca204795329">pkgAcquire::Item::StatIdle</a>, <a class="el" href="classpkgAcquire_1_1Item.xhtml#abd4abbf0fe1f8b5299675b590315b4b9a29a70e77eba9ee9773d3e6ac26348820">pkgAcquire::Item::StatTransientNetworkError</a>, <a class="el" href="structpkgAcquire_1_1ItemDesc.xhtml#aaf8eea5037c53d12d3f31ab9e032712c">pkgAcquire::ItemDesc::URI</a>, and <a class="el" href="classHashStringList.xhtml#a17779e9f4f73e8f7a6c4b6d3d40c62f3">HashStringList::usable()</a>.</p> </div> </div> <a id="af79a315ab449f2046389c91e3f114326"></a> <h2 class="memtitle"><span class="permalink"><a href="#af79a315ab449f2046389c91e3f114326">◆ </a></span>SendConfiguration()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool SendConfiguration </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Send a 601 <a class="el" href="classConfiguration.xhtml">Configuration</a> message (containing the APT configuration) to the subprocess. </p> <p>The APT configuration will be send to the subprocess in a message of the following form:</p> <pre> 601 <a class="el" href="classConfiguration.xhtml">Configuration</a> Config-Item: Fully-Qualified-Item=Val Config-Item: Fully-Qualified-Item=Val ... </pre><dl class="section return"><dt>Returns</dt><dd><b>true</b> if the command was successfully sent, <b>false</b> otherwise. </dd></dl> <p class="reference">References <a class="el" href="classpkgAcquire.xhtml#a25c57bcf8cdbeb6439120a35d90366d8">pkgAcquire::Debug</a>.</p> </div> </div> <a id="aa70efaa4751ac6d5d54dce88fe725e0a"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa70efaa4751ac6d5d54dce88fe725e0a">◆ </a></span>Start()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool Start </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Start up the worker and fill in <a class="el" href="classpkgAcquire_1_1Worker.xhtml#a33b828cdf6b336e68c51bb8e068e1297" title="The configuration of this method. On startup, the target of this pointer is filled in with basic data...">Config</a>. </p> <p>Reads the first message from the worker, which is assumed to be a 100 Capabilities message.</p> <dl class="section return"><dt>Returns</dt><dd><b>true</b> if all operations completed successfully. </dd></dl> <p class="reference">References <a class="el" href="classpkgAcquire.xhtml#a25c57bcf8cdbeb6439120a35d90366d8">pkgAcquire::Debug</a>.</p> <p class="reference">Referenced by <a class="el" href="classpkgAcquire.xhtml#ad698ed345d50318b53f3cc3ae43190db">pkgAcquire::GetConfig()</a>, and <a class="el" href="classpkgAcquire_1_1Queue.xhtml#ab4442bc1bb880bd798d3c08a153364b8">pkgAcquire::Queue::Startup()</a>.</p> </div> </div> <h2 class="groupheader">Member Data Documentation</h2> <a id="a006a979c4801f6b6ceb33cb3acd6dc89"></a> <h2 class="memtitle"><span class="permalink"><a href="#a006a979c4801f6b6ceb33cb3acd6dc89">◆ </a></span>Access</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">std::string Access</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>The access method to be used by this worker. </p> <dl class="todo"><dt><b><a class="el" href="todo.xhtml#_todo000010">Todo:</a></b></dt><dd>Doesn't this duplicate Config->Access? </dd></dl> </div> </div> <a id="acdf3472c9b75f32dae88032d42d1cb6c"></a> <h2 class="memtitle"><span class="permalink"><a href="#acdf3472c9b75f32dae88032d42d1cb6c">◆ </a></span>Debug</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool Debug</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>If <b>true</b>, debugging output will be sent to std::clog. </p> </div> </div> <a id="a2eb3145b965a64b578db347d1bae648b"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2eb3145b965a64b578db347d1bae648b">◆ </a></span>InFd</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">int InFd</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>A file descriptor connected to the standard output of the subprocess. </p> <p>Used to read messages and data from the subprocess. </p> </div> </div> <a id="a849bc65c54e1bcbe8a7f053ce2cec672"></a> <h2 class="memtitle"><span class="permalink"><a href="#a849bc65c54e1bcbe8a7f053ce2cec672">◆ </a></span>InReady</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool InReady</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set to <b>true</b> if the worker is in a state in which it might generate data or command responses. </p> <dl class="todo"><dt><b><a class="el" href="todo.xhtml#_todo000011">Todo:</a></b></dt><dd>Is this right? It's a guess. </dd></dl> </div> </div> <a id="a70b012fdfb38bfe94b52924d45c5462d"></a> <h2 class="memtitle"><span class="permalink"><a href="#a70b012fdfb38bfe94b52924d45c5462d">◆ </a></span>NextQueue</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classpkgAcquire_1_1Worker.xhtml">Worker</a>* NextQueue</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>The next link on the <a class="el" href="classpkgAcquire_1_1Queue.xhtml" title="A single download queue in a pkgAcquire object. {{{.">Queue</a> list. </p> <dl class="todo"><dt><b><a class="el" href="todo.xhtml#_todo000009">Todo:</a></b></dt><dd>This is always NULL; is it just for future use? </dd></dl> <p class="reference">Referenced by <a class="el" href="classpkgAcquire_1_1Queue.xhtml#a0483a6e5db0c15e5445bcc6a00262204">pkgAcquire::Queue::Shutdown()</a>.</p> </div> </div> <a id="af2679e54f43d436f88045350be6fb2ab"></a> <h2 class="memtitle"><span class="permalink"><a href="#af2679e54f43d436f88045350be6fb2ab">◆ </a></span>OutFd</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">int OutFd</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>A file descriptor connected to the standard input of the subprocess. </p> <p>Used to send commands and configuration data to the subprocess. </p> </div> </div> <a id="a27ee7762ef1caaf3ec8c3598c15e7886"></a> <h2 class="memtitle"><span class="permalink"><a href="#a27ee7762ef1caaf3ec8c3598c15e7886">◆ </a></span>OutQueue</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">std::string OutQueue</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Buffers pending writes to the subprocess. </p> <dl class="todo"><dt><b><a class="el" href="todo.xhtml#_todo000013">Todo:</a></b></dt><dd>Wouldn't a std::dequeue be more appropriate? </dd></dl> </div> </div> <a id="a0b8717fb6d062212c251900cee4e6004"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0b8717fb6d062212c251900cee4e6004">◆ </a></span>OutReady</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool OutReady</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set to <b>true</b> if the worker is in a state in which it is legal to send commands to it. </p> <dl class="todo"><dt><b><a class="el" href="todo.xhtml#_todo000012">Todo:</a></b></dt><dd>Is this right? </dd></dl> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li>apt-pkg/<a class="el" href="acquire-worker_8h_source.xhtml">acquire-worker.h</a></li> <li>apt-pkg/acquire-worker.cc</li> </ul> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.15 </small></address> </body> </html>