FairMQ/v1.3.8/classfair_1_1mq_1_1StateMachine.html
2019-01-07 13:13:30 +01:00

353 lines
20 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FairMQ: fair::mq::StateMachine Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</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">FairMQ
&#160;<span id="projectnumber">1.3.8</span>
</div>
<div id="projectbrief">C++ Message Passing Framework</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacefair.html">fair</a></li><li class="navelem"><b>mq</b></li><li class="navelem"><a class="el" href="classfair_1_1mq_1_1StateMachine.html">StateMachine</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classfair_1_1mq_1_1StateMachine-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">fair::mq::StateMachine Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Implements the state machine for FairMQ devices.
<a href="classfair_1_1mq_1_1StateMachine.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="StateMachine_8h_source.html">fairmq/StateMachine.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfair_1_1mq_1_1StateMachine_1_1IllegalTransition.html">IllegalTransition</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfair_1_1mq_1_1StateMachine_1_1StateChange.html">StateChange</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfair_1_1mq_1_1StateMachine_1_1StateQueued.html">StateQueued</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a4d8c2fdb6cce707f235e69df8b01f1e1"><td class="memItemLeft" align="right" valign="top"><a id="a4d8c2fdb6cce707f235e69df8b01f1e1"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>State</b> : int { <br />
&#160;&#160;<b>Ok</b>,
<b>Error</b>,
<b>Idle</b>,
<b>InitializingDevice</b>,
<br />
&#160;&#160;<b>DeviceReady</b>,
<b>InitializingTask</b>,
<b>Ready</b>,
<b>Running</b>,
<br />
&#160;&#160;<b>ResettingTask</b>,
<b>ResettingDevice</b>,
<b>Exiting</b>
<br />
}</td></tr>
<tr class="separator:a4d8c2fdb6cce707f235e69df8b01f1e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af25efb9f04b569fa9ad7db37cb3fcdec"><td class="memItemLeft" align="right" valign="top"><a id="af25efb9f04b569fa9ad7db37cb3fcdec"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>StateTransition</b> : int { <br />
&#160;&#160;<b>InitDevice</b>,
<b>InitTask</b>,
<b>Run</b>,
<b>Stop</b>,
<br />
&#160;&#160;<b>ResetTask</b>,
<b>ResetDevice</b>,
<b>End</b>,
<b>ErrorFound</b>,
<br />
&#160;&#160;<b>Automatic</b>
<br />
}</td></tr>
<tr class="separator:af25efb9f04b569fa9ad7db37cb3fcdec"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ac4ad5a1c7a9907b74c8b014f37e1c46b"><td class="memItemLeft" align="right" valign="top"><a id="ac4ad5a1c7a9907b74c8b014f37e1c46b"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>SubscribeToStateChange</b> (const std::string &amp;subscriber, std::function&lt; void(typename StateChange::KeyType newState, State lastState)&gt; callback) -&gt; void</td></tr>
<tr class="separator:ac4ad5a1c7a9907b74c8b014f37e1c46b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae441d39e140cf0293f6a5f3888377cf0"><td class="memItemLeft" align="right" valign="top"><a id="ae441d39e140cf0293f6a5f3888377cf0"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>UnsubscribeFromStateChange</b> (const std::string &amp;subscriber) -&gt; void</td></tr>
<tr class="separator:ae441d39e140cf0293f6a5f3888377cf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a377b63a345175c12cfcab69dc0fa5d"><td class="memItemLeft" align="right" valign="top"><a id="a8a377b63a345175c12cfcab69dc0fa5d"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>SubscribeToStateQueued</b> (const std::string &amp;subscriber, std::function&lt; void(typename StateQueued::KeyType newState, State lastState)&gt; callback) -&gt; void</td></tr>
<tr class="separator:a8a377b63a345175c12cfcab69dc0fa5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4fa1d9bfde53b76fabffef6ef7126483"><td class="memItemLeft" align="right" valign="top"><a id="a4fa1d9bfde53b76fabffef6ef7126483"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>UnsubscribeFromStateQueued</b> (const std::string &amp;subscriber) -&gt; void</td></tr>
<tr class="separator:a4fa1d9bfde53b76fabffef6ef7126483"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06ba6b87334ce5a0508bd9bdf76c1673"><td class="memItemLeft" align="right" valign="top"><a id="a06ba6b87334ce5a0508bd9bdf76c1673"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>GetCurrentState</b> () const -&gt; State</td></tr>
<tr class="separator:a06ba6b87334ce5a0508bd9bdf76c1673"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17ddaf9bb956cbd1d6af6caca2cc49d3"><td class="memItemLeft" align="right" valign="top"><a id="a17ddaf9bb956cbd1d6af6caca2cc49d3"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>GetCurrentErrorState</b> () const -&gt; State</td></tr>
<tr class="separator:a17ddaf9bb956cbd1d6af6caca2cc49d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2e0cc343f5a267440c251f924382400"><td class="memItemLeft" align="right" valign="top"><a id="ab2e0cc343f5a267440c251f924382400"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>GetLastQueuedState</b> () const -&gt; State</td></tr>
<tr class="separator:ab2e0cc343f5a267440c251f924382400"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9fa085855ab279cdd0b6621d61561b50"><td class="memItemLeft" align="right" valign="top"><a id="a9fa085855ab279cdd0b6621d61561b50"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>ChangeState</b> (StateTransition transition) -&gt; void</td></tr>
<tr class="separator:a9fa085855ab279cdd0b6621d61561b50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad411fe04cb7ba859bb8bb5f3282263cd"><td class="memItemLeft" align="right" valign="top"><a id="ad411fe04cb7ba859bb8bb5f3282263cd"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>Run</b> () -&gt; void</td></tr>
<tr class="separator:ad411fe04cb7ba859bb8bb5f3282263cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fda88dfe0880d177a730cd843586184"><td class="memItemLeft" align="right" valign="top"><a id="a0fda88dfe0880d177a730cd843586184"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>Reset</b> () -&gt; void</td></tr>
<tr class="separator:a0fda88dfe0880d177a730cd843586184"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad71a3287b697cf19333e13282149335d"><td class="memItemLeft" align="right" valign="top"><a id="ad71a3287b697cf19333e13282149335d"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>NextStatePending</b> () -&gt; bool</td></tr>
<tr class="separator:ad71a3287b697cf19333e13282149335d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:abb621d273f501ea4b36a3f435fdf1499"><td class="memItemLeft" align="right" valign="top">static auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1StateMachine.html#abb621d273f501ea4b36a3f435fdf1499">ToState</a> (const std::string &amp;state) -&gt; State</td></tr>
<tr class="memdesc:abb621d273f501ea4b36a3f435fdf1499"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string to State. <a href="#abb621d273f501ea4b36a3f435fdf1499">More...</a><br /></td></tr>
<tr class="separator:abb621d273f501ea4b36a3f435fdf1499"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c8435d3001d671e0488e287a35196c3"><td class="memItemLeft" align="right" valign="top">static auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1StateMachine.html#a2c8435d3001d671e0488e287a35196c3">ToStateTransition</a> (const std::string &amp;transition) -&gt; StateTransition</td></tr>
<tr class="memdesc:a2c8435d3001d671e0488e287a35196c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string to StateTransition. <a href="#a2c8435d3001d671e0488e287a35196c3">More...</a><br /></td></tr>
<tr class="separator:a2c8435d3001d671e0488e287a35196c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8940257fff165833bd2d27e5198f4e0"><td class="memItemLeft" align="right" valign="top">static auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1StateMachine.html#af8940257fff165833bd2d27e5198f4e0">ToStr</a> (State state) -&gt; std::string</td></tr>
<tr class="memdesc:af8940257fff165833bd2d27e5198f4e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert State to string. <a href="#af8940257fff165833bd2d27e5198f4e0">More...</a><br /></td></tr>
<tr class="separator:af8940257fff165833bd2d27e5198f4e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e59d0502e2479a83e794cd238044c67"><td class="memItemLeft" align="right" valign="top">static auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1StateMachine.html#a9e59d0502e2479a83e794cd238044c67">ToStr</a> (StateTransition transition) -&gt; std::string</td></tr>
<tr class="memdesc:a9e59d0502e2479a83e794cd238044c67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert StateTransition to string. <a href="#a9e59d0502e2479a83e794cd238044c67">More...</a><br /></td></tr>
<tr class="separator:a9e59d0502e2479a83e794cd238044c67"><td class="memSeparator" colspan="2">&#160;</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:a1fd2c92d98497598f0e4a72e9f454286"><td class="memItemLeft" align="right" valign="top"><a id="a1fd2c92d98497598f0e4a72e9f454286"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (std::ostream &amp;os, const State &amp;state) -&gt; std::ostream &amp;</td></tr>
<tr class="separator:a1fd2c92d98497598f0e4a72e9f454286"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5909728038493a493d57ed251a83992f"><td class="memItemLeft" align="right" valign="top"><a id="a5909728038493a493d57ed251a83992f"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (std::ostream &amp;os, const StateTransition &amp;transition) -&gt; std::ostream &amp;</td></tr>
<tr class="separator:a5909728038493a493d57ed251a83992f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implements the state machine for FairMQ devices. </p>
<p>See <a href="https://github.com/FairRootGroup/FairRoot/blob/dev/fairmq/docs/Device.md#13-state-machine">https://github.com/FairRootGroup/FairRoot/blob/dev/fairmq/docs/Device.md#13-state-machine</a> </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="abb621d273f501ea4b36a3f435fdf1499"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb621d273f501ea4b36a3f435fdf1499">&#9670;&nbsp;</a></span>ToState()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static auto fair::mq::StateMachine::ToState </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td> -&gt; State </td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert string to State. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">state</td><td>to convert </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>State enum entry </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">std::out_of_range</td><td>if a string cannot be resolved to a State </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a2c8435d3001d671e0488e287a35196c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c8435d3001d671e0488e287a35196c3">&#9670;&nbsp;</a></span>ToStateTransition()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static auto fair::mq::StateMachine::ToStateTransition </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>transition</em></td><td>)</td>
<td> -&gt; StateTransition </td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert string to StateTransition. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">transition</td><td>to convert </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>StateTransition enum entry </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">std::out_of_range</td><td>if a string cannot be resolved to a StateTransition </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af8940257fff165833bd2d27e5198f4e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af8940257fff165833bd2d27e5198f4e0">&#9670;&nbsp;</a></span>ToStr() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static auto fair::mq::StateMachine::ToStr </td>
<td>(</td>
<td class="paramtype">State&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td> -&gt; std::string </td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert State to string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">state</td><td>to convert </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string representation of State enum entry </dd></dl>
</div>
</div>
<a id="a9e59d0502e2479a83e794cd238044c67"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e59d0502e2479a83e794cd238044c67">&#9670;&nbsp;</a></span>ToStr() <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">static auto fair::mq::StateMachine::ToStr </td>
<td>(</td>
<td class="paramtype">StateTransition&#160;</td>
<td class="paramname"><em>transition</em></td><td>)</td>
<td> -&gt; std::string </td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert StateTransition to string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">transition</td><td>to convert </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string representation of StateTransition enum entry </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>fairmq/<a class="el" href="StateMachine_8h_source.html">StateMachine.h</a></li>
<li>fairmq/StateMachine.cxx</li>
</ul>
</div><!-- contents -->
<p style="margin: 0 12px 10px 12px;"><a href="https://help.github.com/articles/github-privacy-statement/">privacy</a></p>