Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 3ebaf504d69f581a8834e53e04e712a5 > files > 202

gearbox-devel-9.11-6.fc14.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>GearBox Project</title>

<link rel="icon" href="gbx_icon_cardbox_sky.png" type="image/png">
<link rel="shortcut icon" href="gbx_icon_cardbox_sky.png" type="image/png">

<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
<!-- Google Analytics -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-3583782-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- Returning you to your regular programming -->
</head><body>

<!-- Header -->

<table border="0" cellspacing="0" cellpadding="0">

<tr><!-- create row -->

<!-- spacer cell -->
<!-- #CC CC CC -->
<td rowspan="1" colspan="1" bgcolor="#EEEEEE">&nbsp;&nbsp;&nbsp;&nbsp;</td>

<!-- menu cell -->
<td width="170" rowspan="1" colspan="1" align="left" valign="top" bgcolor="#EEEEEE">


<p>&nbsp;</p>
<p align="center"><a href="index.html"><img src="gbx_logo_cardbox_sky_150x150.png"></a></p><br>

<strong>INTRODUCTION</strong><br>
<strong><a href="gbx_doc_overview.html" style="text-decoration:none">Overview</a></strong><br>
<strong><a href="gbx_doc_getting.html" style="text-decoration:none">Download and Install</a></strong><br>
<!-- <strong><a href="gbx_doc_quickstart.html" style="text-decoration:none">Quick Start</a></strong><br> -->
<strong><a href="gbx_doc_documentation.html" style="text-decoration:none">Documentation</a></strong><br>
<strong><a href="gbx_doc_publications.html" style="text-decoration:none">Publications</a></strong><br>
<br>

<strong>REPOSITORY</strong><br>
<strong><a href="group__gbx__libs.html" style="text-decoration:none">Libraries</a></strong><br>
<!-- <strong><a href="group__gbx__utils.html" style="text-decoration:none">Utilities</a></strong><br> -->
<br>

<strong>DEVELOPER</strong><br>

<!--<strong><a href="gbx_doc_tutorials.html" style="text-decoration:none">Tutorials</a></strong><br>
<strong><a href="group__gbx__examples.html" style="text-decoration:none">Examples</a></strong><br>-->
<strong><a href="gbx_doc_devguide.html" style="text-decoration:none">Dev Guide</a></strong><br>
<!-- 
<strong><a href="gbx_doc_faq.html" style="text-decoration:none">FAQ</a></strong><br>
-->
<strong><a href="http://cdash.acfr.usyd.edu.au/index.php?project=Gearbox" style="text-decoration:none">Dashboard</a></strong><br>
<!--<strong><a href="http://wiki2.cas.edu.au/orca">Wiki</a></strong><br>
login/pass: orca/orca<br>-->
<br>

<strong>PEOPLE</strong><br>
<strong><a href="gbx_doc_contributors.html" style="text-decoration:none">Contributors</a></strong><br>
<strong><a href="gbx_doc_users.html" style="text-decoration:none">Users</a></strong><br>
<br>

<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=216468&amp;type=2" width="125" height="37" border="0" alt="SourceForge.net Logo" /></a><br>
<strong><a href="http://sourceforge.net/projects/gearbox">Project</a></strong><br>
<strong><a href="http://sourceforge.net/project/showfiles.php?group_id=216468">Download</a></strong><br>
<!--<strong><a href="http://sourceforge.net/tracker/?group_id=216468">Bugs/Feedback</a></strong><br>-->
<strong><a href="http://sourceforge.net/mail/?group_id=216468">Mailing lists</a></strong></p>
<p>&nbsp;</p>

</td><!-- /menu cell -->

<!-- one grey spacer cells -->
<td rowspan="1" colspan="1" bgcolor="#EEEEEE">&nbsp;&nbsp;&nbsp;&nbsp;</td>

<!-- one white spacer cells -->
<td rowspan="1" colspan="1">&nbsp;&nbsp;&nbsp;&nbsp;</td>

<!-- main content cell -->
<td rowspan="1" colspan="1" align="left" valign="top">


<!-- Generated by Doxygen 1.6.2-20100208 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespacegbxutilacfr.html">gbxutilacfr</a>::<a class="el" href="classgbxutilacfr_1_1Status.html">Status</a>
  </div>
</div>
<div class="contents">
<h1>gbxutilacfr::Status Class Reference</h1><!-- doxytag: class="gbxutilacfr::Status" -->
<p>Local interface to component status.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="status_8h_source.html">status.h</a>&gt;</code></p>

<p>Inherited by <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html">gbxutilacfr::TrivialStatus</a>.</p>

<p><a href="classgbxutilacfr_1_1Status-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a1f708c8e4a5dc7678aa3cbc8ccb2c089">addSubsystem</a> (const std::string &amp;subsystem, double maxHeartbeatIntervalSec=-1.0, <a class="el" href="namespacegbxutilacfr.html#a83955362590d05dc433ff5ba377a704b">SubsystemType</a> type=SubsystemStandard)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a548f87215c41609b329408fb47e064e3">removeSubsystem</a> (const std::string &amp;subsystem)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cb2d340b81b99e4d6153f9dd0164806"></a><!-- doxytag: member="gbxutilacfr::Status::subsystems" ref="a2cb2d340b81b99e4d6153f9dd0164806" args="()=0" -->
virtual std::vector&lt; std::string &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a2cb2d340b81b99e4d6153f9dd0164806">subsystems</a> ()=0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a list of subsystem names. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structgbxutilacfr_1_1SubsystemStatus.html">SubsystemStatus</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a14db6c5b67e09db0e9065aa28f18ff21">subsystemStatus</a> (const std::string &amp;subsystem)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4c879ad08b236c28b1572340678b7bd"></a><!-- doxytag: member="gbxutilacfr::Status::infrastructureState" ref="ab4c879ad08b236c28b1572340678b7bd" args="()=0" -->
virtual <a class="el" href="namespacegbxutilacfr.html#ac09bf420d1b5cd55c617623abbc4587a">SubsystemState</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#ab4c879ad08b236c28b1572340678b7bd">infrastructureState</a> ()=0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns state of the component infrastructure. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a1b1ff1a1206ff6d8f336a52b40e20a81">setMaxHeartbeatInterval</a> (const std::string &amp;subsystem, double intervalSec)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c09d654350aa21fa9a7cd082927ecb9"></a><!-- doxytag: member="gbxutilacfr::Status::setSubsystemType" ref="a6c09d654350aa21fa9a7cd082927ecb9" args="(const std::string &amp;subsystem, SubsystemType type)=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a6c09d654350aa21fa9a7cd082927ecb9">setSubsystemType</a> (const std::string &amp;subsystem, <a class="el" href="namespacegbxutilacfr.html#a83955362590d05dc433ff5ba377a704b">SubsystemType</a> type)=0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the subsystem type which describes the expected behavior of the subsystem. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#afce01428dd3f25b59e4864c72774e760">setSubsystemStatus</a> (const std::string &amp;subsystem, <a class="el" href="namespacegbxutilacfr.html#ac09bf420d1b5cd55c617623abbc4587a">SubsystemState</a> state, <a class="el" href="namespacegbxutilacfr.html#a0571161a2ff12c42ebcf2179f88c8a7b">SubsystemHealth</a> health, const std::string &amp;message=&quot;&quot;)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#aac485fed7c0dfa6601140495b5be4e80">initialising</a> (const std::string &amp;subsystem, const std::string &amp;message=&quot;&quot;)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a884035256364070f948689576fa6c5a5">working</a> (const std::string &amp;subsystem, const std::string &amp;message=&quot;&quot;)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a48d816e2189a76049565505fa4a1951b">finalising</a> (const std::string &amp;subsystem, const std::string &amp;message=&quot;&quot;)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#af5c36a594c2edaa044837656ec0ac8c6">ok</a> (const std::string &amp;subsystem, const std::string &amp;message=&quot;&quot;)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a9a5b84a1cca2bab77df26d8d539ed0ee">warning</a> (const std::string &amp;subsystem, const std::string &amp;message)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#adc4866108a8cf874bd22992a890ae566">fault</a> (const std::string &amp;subsystem, const std::string &amp;message)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#ac8b5c54748f01fa8335280288aef531f">heartbeat</a> (const std::string &amp;subsystem)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#ad5b71c356d338e7d3e540aab5221a75d">message</a> (const std::string &amp;subsystem, const std::string &amp;message)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7693d5fd5ac5cb760564a8e443d6a94"></a><!-- doxytag: member="gbxutilacfr::Status::infrastructureInitialising" ref="af7693d5fd5ac5cb760564a8e443d6a94" args="()=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#af7693d5fd5ac5cb760564a8e443d6a94">infrastructureInitialising</a> ()=0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets state of component infrastructure to Initialising. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18e5eb3a217ba8e5128d3d7de16e76f5"></a><!-- doxytag: member="gbxutilacfr::Status::infrastructureWorking" ref="a18e5eb3a217ba8e5128d3d7de16e76f5" args="()=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a18e5eb3a217ba8e5128d3d7de16e76f5">infrastructureWorking</a> ()=0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets state of component infrastructure to Working. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4314483906965a168c24101518662ee4"></a><!-- doxytag: member="gbxutilacfr::Status::infrastructureFinalising" ref="a4314483906965a168c24101518662ee4" args="()=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#a4314483906965a168c24101518662ee4">infrastructureFinalising</a> ()=0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets state of component infrastructure to Finalising. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgbxutilacfr_1_1Status.html#aae4fe09753ae295fb0d9493f1316a51b">process</a> ()=0</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Local interface to component status. </p>
<dl class="user"><dt><b>Overview</b></dt><dd></dd></dl>
<p><a class="el" href="classgbxutilacfr_1_1Status.html" title="Local interface to component status.">Status</a> provides a machine-readable interface such that tools external to the component can monitor its status. A single <a class="el" href="classgbxutilacfr_1_1Status.html" title="Local interface to component status.">Status</a> object is meant to be shared by all threads in the library, so the implementation must be thread-safe. The idea is that <a class="el" href="classgbxutilacfr_1_1Status.html" title="Local interface to component status.">Status</a> tracks the state of a number of subsystems (most often one per thread).</p>
<p>Each subsystem should first call <a class="el" href="classgbxutilacfr_1_1Status.html#a1f708c8e4a5dc7678aa3cbc8ccb2c089">addSubsystem()</a>, to make the <a class="el" href="classgbxutilacfr_1_1Status.html" title="Local interface to component status.">Status</a> engine aware that it exists. If any other function is called before the subsystem is added, a <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">gbxutilacfr::Exception</a> is thrown.</p>
<p>The default initial status of a subsystem is <code>Idle</code> with health <code>OK</code>.</p>
<p>After registering a subsystem, a subsystem can report its state and health. Each of the calls is sufficient to let the <a class="el" href="classgbxutilacfr_1_1Status.html" title="Local interface to component status.">Status</a> engine know that the subsystem is alive. The special call <a class="el" href="classgbxutilacfr_1_1Status.html#ac8b5c54748f01fa8335280288aef531f">heartbeat()</a> lets <a class="el" href="classgbxutilacfr_1_1Status.html" title="Local interface to component status.">Status</a> know that the subsystem is alive without modifying its status.</p>
<p>The 'maxHeartbeatIntervalSec' parameter tells the <a class="el" href="classgbxutilacfr_1_1Status.html" title="Local interface to component status.">Status</a> engine how often it should expect to hear from the subsystem. If no message is received from a subsystem for longer than <code>maxHeartbeatIntervalSec</code>, it is assumed that the subsystem has stalled (hung).</p>
<dl class="user"><dt><b>State Machine</b></dt><dd></dd></dl>
<p>The state machine of a subsystem is a chain of state transitions with one extra link: </p>
<div class="fragment"><pre class="fragment">
Idle --&gt; Initialising --&gt; Working --&gt; Finalising --&gt; Shutdown
              |___________________________^
</pre></div><p> The following represents the Subsystem state machine in the format of State Machine Compiler (see smc.sf.net) : </p>
<div class="fragment"><pre class="fragment">
Idle
Entry { init(); }
{
    init
    Initialising
    {}
}

Initialising
Entry { initialise(); }
{
    [ !isStopping ] finished
    Working
    {}

    [ isStopping ] finished
    Finalising
    {}
}

Working
Entry { work(); }
{
    finished
    Finalising
    {}
}

Finalising
Entry { finalise(); }
{
    finished
    Shutdown
    {}
}

Shutdown
{
}   
</pre></div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classgbxutilacfr_1_1Tracer.html" title="Local and remote tracing.">Tracer</a> </dd>
<dd>
<a class="el" href="classgbxutilacfr_1_1SubStatus.html" title="Convenience class which maniupulates the status of a subsystem.">SubStatus</a> </dd></dl>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a1f708c8e4a5dc7678aa3cbc8ccb2c089"></a><!-- doxytag: member="gbxutilacfr::Status::addSubsystem" ref="a1f708c8e4a5dc7678aa3cbc8ccb2c089" args="(const std::string &amp;subsystem, double maxHeartbeatIntervalSec=&#45;1.0, SubsystemType type=SubsystemStandard)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::addSubsystem </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>maxHeartbeatIntervalSec</em> = <code>-1.0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacegbxutilacfr.html#a83955362590d05dc433ff5ba377a704b">SubsystemType</a>&nbsp;</td>
          <td class="paramname"> <em>type</em> = <code>SubsystemStandard</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Adds a new subsystem to the system status descriptor. This command must be called before actually modifying the subsystem status, i.e. all other status commands will raise an exception if a subsystem with that name does not already exists.</p>
<p>An <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> is also raised when trying to add a subsystem with an existing name.</p>
<p>It is possible to specify the maximum expected interval between heartbeats. See <a class="el" href="classgbxutilacfr_1_1Status.html#a1b1ff1a1206ff6d8f336a52b40e20a81">setMaxHeartbeatInterval()</a> for details.</p>
<p>It is also possible to describe the expected behavior of the subsystem by specifying SubsystemType. See <a class="el" href="classgbxutilacfr_1_1Status.html#a6c09d654350aa21fa9a7cd082927ecb9" title="Sets the subsystem type which describes the expected behavior of the subsystem.">setSubsystemType()</a> for details.</p>
<p>The initial status of the new subsystem is the same as produced by the empty constructor of <a class="el" href="structgbxutilacfr_1_1SubsystemStatus.html" title="Status for a single subsystem.">SubsystemStatus</a>. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#abe8b8746c3501f9ccfc7bca6e18d827f">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="adc4866108a8cf874bd22992a890ae566"></a><!-- doxytag: member="gbxutilacfr::Status::fault" ref="adc4866108a8cf874bd22992a890ae566" args="(const std::string &amp;subsystem, const std::string &amp;message)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::fault </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>message</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets subsystem health to Fault. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#a78e60a644303b88decb62a572ae6347d">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="a48d816e2189a76049565505fa4a1951b"></a><!-- doxytag: member="gbxutilacfr::Status::finalising" ref="a48d816e2189a76049565505fa4a1951b" args="(const std::string &amp;subsystem, const std::string &amp;message=&quot;&quot;)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::finalising </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>message</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets state of the subsystem to Finalising. The old message is cleared if a new one is not supplied. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#ac10944d5e25ad92fda77f760d3634e8c">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="ac8b5c54748f01fa8335280288aef531f"></a><!-- doxytag: member="gbxutilacfr::Status::heartbeat" ref="ac8b5c54748f01fa8335280288aef531f" args="(const std::string &amp;subsystem)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::heartbeat </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Record heartbeat from a subsystem: let <a class="el" href="classgbxutilacfr_1_1Status.html" title="Local interface to component status.">Status</a> know the subsystem is alive without modifying its status. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#aec41b1a88b529dd85cddcf948a0051c9">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="aac485fed7c0dfa6601140495b5be4e80"></a><!-- doxytag: member="gbxutilacfr::Status::initialising" ref="aac485fed7c0dfa6601140495b5be4e80" args="(const std::string &amp;subsystem, const std::string &amp;message=&quot;&quot;)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::initialising </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>message</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets state of the subsystem to Initialising. The old message is cleared if a new one is not supplied. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#a2f6d7fbb93262dbbb941f96050ea5a8f">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="ad5b71c356d338e7d3e540aab5221a75d"></a><!-- doxytag: member="gbxutilacfr::Status::message" ref="ad5b71c356d338e7d3e540aab5221a75d" args="(const std::string &amp;subsystem, const std::string &amp;message)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::message </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>message</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Change the human-readable message for a subsystem but keep the previous state and health information. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#aaaddd4a06d83adb543971752e6962cac">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="af5c36a594c2edaa044837656ec0ac8c6"></a><!-- doxytag: member="gbxutilacfr::Status::ok" ref="af5c36a594c2edaa044837656ec0ac8c6" args="(const std::string &amp;subsystem, const std::string &amp;message=&quot;&quot;)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::ok </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>message</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets subsystem health to Ok. The old message is cleared if a new one is not supplied. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#a6748d13b335bee6312633f3b7a1c28b5">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="aae4fe09753ae295fb0d9493f1316a51b"></a><!-- doxytag: member="gbxutilacfr::Status::process" ref="aae4fe09753ae295fb0d9493f1316a51b" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::process </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This function must be called periodically in order for status publishing to happen and stalled susbsystems identified. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#a815e879294b6e6b3cfdf424487e6afcc">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="a548f87215c41609b329408fb47e064e3"></a><!-- doxytag: member="gbxutilacfr::Status::removeSubsystem" ref="a548f87215c41609b329408fb47e064e3" args="(const std::string &amp;subsystem)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::removeSubsystem </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Removes a subsystem from the status descriptor. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#ad76e6ec9ebe22eb1276b8514d7646c40">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="a1b1ff1a1206ff6d8f336a52b40e20a81"></a><!-- doxytag: member="gbxutilacfr::Status::setMaxHeartbeatInterval" ref="a1b1ff1a1206ff6d8f336a52b40e20a81" args="(const std::string &amp;subsystem, double intervalSec)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::setMaxHeartbeatInterval </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>intervalSec</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets the maximum expected interval between heartbeats (in seconds). When time since the last heartbeat exceeds the specified value, the subsystem is considered stalled. Negative interval means infinite interval. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#ac44c93f3419bcc334d1b5f52a6aa2d47">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="afce01428dd3f25b59e4864c72774e760"></a><!-- doxytag: member="gbxutilacfr::Status::setSubsystemStatus" ref="afce01428dd3f25b59e4864c72774e760" args="(const std::string &amp;subsystem, SubsystemState state, SubsystemHealth health, const std::string &amp;message=&quot;&quot;)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::setSubsystemStatus </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacegbxutilacfr.html#ac09bf420d1b5cd55c617623abbc4587a">SubsystemState</a>&nbsp;</td>
          <td class="paramname"> <em>state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacegbxutilacfr.html#a0571161a2ff12c42ebcf2179f88c8a7b">SubsystemHealth</a>&nbsp;</td>
          <td class="paramname"> <em>health</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>message</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets the status of a subsystem (both state and health) in an atomic operation. Use this method when both state and health have changed. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#ade2a6797c8dceeed49811f544f8821a1">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="a14db6c5b67e09db0e9065aa28f18ff21"></a><!-- doxytag: member="gbxutilacfr::Status::subsystemStatus" ref="a14db6c5b67e09db0e9065aa28f18ff21" args="(const std::string &amp;subsystem)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="structgbxutilacfr_1_1SubsystemStatus.html">SubsystemStatus</a> gbxutilacfr::Status::subsystemStatus </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns status of the subsystem with the given name. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> when the specified subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#ab07187abe677a3dfbf0c429dd9cc95ce">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="a9a5b84a1cca2bab77df26d8d539ed0ee"></a><!-- doxytag: member="gbxutilacfr::Status::warning" ref="a9a5b84a1cca2bab77df26d8d539ed0ee" args="(const std::string &amp;subsystem, const std::string &amp;message)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::warning </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>message</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets subsystem health to Warning. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#ab220a9166c3a3bd1cd4df31e491e4136">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<a class="anchor" id="a884035256364070f948689576fa6c5a5"></a><!-- doxytag: member="gbxutilacfr::Status::working" ref="a884035256364070f948689576fa6c5a5" args="(const std::string &amp;subsystem, const std::string &amp;message=&quot;&quot;)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void gbxutilacfr::Status::working </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>subsystem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>message</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets state of the subsystem to Working. The old message is cleared if a new one is not supplied. Throws <a class="el" href="classgbxutilacfr_1_1Exception.html" title="Base class for all GbxUtilAcfr exceptions.">Exception</a> if the subsystem does not exist. </p>

<p>Implemented in <a class="el" href="classgbxutilacfr_1_1TrivialStatus.html#a75eb599945a6ad0dde46d08bfb99337d">gbxutilacfr::TrivialStatus</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="status_8h_source.html">status.h</a></li>
</ul>
</div>

            </td>
            <td colspan="1">&nbsp;</td>
         </tr>
        </table>
<!-- end of table -->

 <hr size="1"><address style="align: right;"><small>Generated for GearBox by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.5 </small></address>
</body>
</html>