FairMQ/v1.3.9/classfair_1_1mq_1_1PluginServices.html
2019-08-07 18:00:46 +02:00

1123 lines
67 KiB
HTML

<!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>FairMQ: fair::mq::PluginServices 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.9</span>
</div>
<div id="projectbrief">C++ Message Passing Framework</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<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_1PluginServices.html">PluginServices</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="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classfair_1_1mq_1_1PluginServices-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">fair::mq::PluginServices Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Facilitates communication between devices and plugins.
<a href="classfair_1_1mq_1_1PluginServices.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="PluginServices_8h_source.html">fairmq/PluginServices.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_1PluginServices_1_1DeviceControlError.html">DeviceControlError</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_1PluginServices_1_1InvalidStateError.html">InvalidStateError</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_1PluginServices_1_1PropertyNotFoundError.html">PropertyNotFoundError</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:a614eb15c3272895a09e5f2da46e367a7"><td class="memItemLeft" align="right" valign="top"><a id="a614eb15c3272895a09e5f2da46e367a7"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a> : 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>Paused</b>,
<b>ResettingTask</b>,
<b>ResettingDevice</b>,
<b>Exiting</b>
<br />
}</td></tr>
<tr class="memdesc:a614eb15c3272895a09e5f2da46e367a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">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>. <br /></td></tr>
<tr class="separator:a614eb15c3272895a09e5f2da46e367a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0e06734f21b9e7761df63d5755f587d"><td class="memItemLeft" align="right" valign="top"><a id="ae0e06734f21b9e7761df63d5755f587d"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>DeviceStateTransition</b> : int { <br />
&#160;&#160;<b>InitDevice</b>,
<b>InitTask</b>,
<b>Run</b>,
<b>Pause</b>,
<br />
&#160;&#160;<b>Resume</b>,
<b>Stop</b>,
<b>ResetTask</b>,
<b>ResetDevice</b>,
<br />
&#160;&#160;<b>End</b>,
<b>ErrorFound</b>
<br />
}</td></tr>
<tr class="separator:ae0e06734f21b9e7761df63d5755f587d"><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:aa2d00f58560e537a7e0547dd72af899c"><td class="memItemLeft" align="right" valign="top"><a id="aa2d00f58560e537a7e0547dd72af899c"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>PluginServices</b> (<a class="el" href="classFairMQProgOptions.html">FairMQProgOptions</a> &amp;config, <a class="el" href="classFairMQDevice.html">FairMQDevice</a> &amp;device)</td></tr>
<tr class="separator:aa2d00f58560e537a7e0547dd72af899c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a538b3170e425a0ec9e5c7161d4cb26fb"><td class="memItemLeft" align="right" valign="top"><a id="a538b3170e425a0ec9e5c7161d4cb26fb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>PluginServices</b> (const <a class="el" href="classfair_1_1mq_1_1PluginServices.html">PluginServices</a> &amp;)=delete</td></tr>
<tr class="separator:a538b3170e425a0ec9e5c7161d4cb26fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7083ca1dcc52012d3f5da5d63700f5d"><td class="memItemLeft" align="right" valign="top"><a id="af7083ca1dcc52012d3f5da5d63700f5d"></a>
<a class="el" href="classfair_1_1mq_1_1PluginServices.html">PluginServices</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classfair_1_1mq_1_1PluginServices.html">PluginServices</a> &amp;)=delete</td></tr>
<tr class="separator:af7083ca1dcc52012d3f5da5d63700f5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac93964a0e35ca0ed91bfbaab6405be82"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#ac93964a0e35ca0ed91bfbaab6405be82">GetCurrentDeviceState</a> () const -&gt; <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a></td></tr>
<tr class="separator:ac93964a0e35ca0ed91bfbaab6405be82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2bab89d575dd90828d492cf2d0d2f5e"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#ab2bab89d575dd90828d492cf2d0d2f5e">TakeDeviceControl</a> (const std::string &amp;controller) -&gt; void</td></tr>
<tr class="memdesc:ab2bab89d575dd90828d492cf2d0d2f5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Become device controller. <a href="#ab2bab89d575dd90828d492cf2d0d2f5e">More...</a><br /></td></tr>
<tr class="separator:ab2bab89d575dd90828d492cf2d0d2f5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a546360c16172c5d3c83f483871fa0c7e"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a546360c16172c5d3c83f483871fa0c7e">StealDeviceControl</a> (const std::string &amp;controller) -&gt; void</td></tr>
<tr class="memdesc:a546360c16172c5d3c83f483871fa0c7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Become device controller by force. <a href="#a546360c16172c5d3c83f483871fa0c7e">More...</a><br /></td></tr>
<tr class="separator:a546360c16172c5d3c83f483871fa0c7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7127f156ba970298a23b8b67550a43b"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#af7127f156ba970298a23b8b67550a43b">ReleaseDeviceControl</a> (const std::string &amp;controller) -&gt; void</td></tr>
<tr class="memdesc:af7127f156ba970298a23b8b67550a43b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release device controller role. <a href="#af7127f156ba970298a23b8b67550a43b">More...</a><br /></td></tr>
<tr class="separator:af7127f156ba970298a23b8b67550a43b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba93554ad3553a1d14d1affd85e1dea1"><td class="memItemLeft" align="right" valign="top"><a id="aba93554ad3553a1d14d1affd85e1dea1"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#aba93554ad3553a1d14d1affd85e1dea1">GetDeviceController</a> () const -&gt; boost::optional&lt; std::string &gt;</td></tr>
<tr class="memdesc:aba93554ad3553a1d14d1affd85e1dea1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get current device controller. <br /></td></tr>
<tr class="separator:aba93554ad3553a1d14d1affd85e1dea1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79645639828ffaebcb81e29dc49ca6a4"><td class="memItemLeft" align="right" valign="top"><a id="a79645639828ffaebcb81e29dc49ca6a4"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a79645639828ffaebcb81e29dc49ca6a4">WaitForReleaseDeviceControl</a> () -&gt; void</td></tr>
<tr class="memdesc:a79645639828ffaebcb81e29dc49ca6a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Block until control is released. <br /></td></tr>
<tr class="separator:a79645639828ffaebcb81e29dc49ca6a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2470014e7d85a1d82ed636bd84f95e8"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#ab2470014e7d85a1d82ed636bd84f95e8">ChangeDeviceState</a> (const std::string &amp;controller, const DeviceStateTransition next) -&gt; void</td></tr>
<tr class="memdesc:ab2470014e7d85a1d82ed636bd84f95e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request a device state transition. <a href="#ab2470014e7d85a1d82ed636bd84f95e8">More...</a><br /></td></tr>
<tr class="separator:ab2470014e7d85a1d82ed636bd84f95e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98b235e5119d863dbb7adeb00938d449"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a98b235e5119d863dbb7adeb00938d449">SubscribeToDeviceStateChange</a> (const std::string &amp;subscriber, std::function&lt; void(<a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a>)&gt; callback) -&gt; void</td></tr>
<tr class="memdesc:a98b235e5119d863dbb7adeb00938d449"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subscribe with a callback to device state changes. <a href="#a98b235e5119d863dbb7adeb00938d449">More...</a><br /></td></tr>
<tr class="separator:a98b235e5119d863dbb7adeb00938d449"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a657506e2afe946ada3deff4ecc40e4d1"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a657506e2afe946ada3deff4ecc40e4d1">UnsubscribeFromDeviceStateChange</a> (const std::string &amp;subscriber) -&gt; void</td></tr>
<tr class="memdesc:a657506e2afe946ada3deff4ecc40e4d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsubscribe from device state changes. <a href="#a657506e2afe946ada3deff4ecc40e4d1">More...</a><br /></td></tr>
<tr class="separator:a657506e2afe946ada3deff4ecc40e4d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ab97f8394a3e1552277ff2564e16c6a"><td class="memItemLeft" align="right" valign="top"><a id="a1ab97f8394a3e1552277ff2564e16c6a"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>PropertyExists</b> (const std::string &amp;key) const -&gt; bool</td></tr>
<tr class="separator:a1ab97f8394a3e1552277ff2564e16c6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae06ecdf4d79d3a1e7d850dfab4239200"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae06ecdf4d79d3a1e7d850dfab4239200"><td class="memTemplItemLeft" align="right" valign="top">auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#ae06ecdf4d79d3a1e7d850dfab4239200">SetProperty</a> (const std::string &amp;key, T val) -&gt; void</td></tr>
<tr class="memdesc:ae06ecdf4d79d3a1e7d850dfab4239200"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set config property. <a href="#ae06ecdf4d79d3a1e7d850dfab4239200">More...</a><br /></td></tr>
<tr class="separator:ae06ecdf4d79d3a1e7d850dfab4239200"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc2f2ddc5a3e2d6a5846672d40cac359"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:adc2f2ddc5a3e2d6a5846672d40cac359"><td class="memTemplItemLeft" align="right" valign="top">auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#adc2f2ddc5a3e2d6a5846672d40cac359">GetProperty</a> (const std::string &amp;key) const -&gt; T</td></tr>
<tr class="memdesc:adc2f2ddc5a3e2d6a5846672d40cac359"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read config property. <a href="#adc2f2ddc5a3e2d6a5846672d40cac359">More...</a><br /></td></tr>
<tr class="separator:adc2f2ddc5a3e2d6a5846672d40cac359"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49179c80826ae5ec87d77b8d50d8ec44"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a49179c80826ae5ec87d77b8d50d8ec44">GetPropertyAsString</a> (const std::string &amp;key) const -&gt; std::string</td></tr>
<tr class="memdesc:a49179c80826ae5ec87d77b8d50d8ec44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read config property as string. <a href="#a49179c80826ae5ec87d77b8d50d8ec44">More...</a><br /></td></tr>
<tr class="separator:a49179c80826ae5ec87d77b8d50d8ec44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab966df2353bbce792a5b938f420080c0"><td class="memItemLeft" align="right" valign="top"><a id="ab966df2353bbce792a5b938f420080c0"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>GetChannelInfo</b> () const -&gt; std::unordered_map&lt; std::string, int &gt;</td></tr>
<tr class="separator:ab966df2353bbce792a5b938f420080c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e090fa0029724f23a1ef3fcacb928d2"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a4e090fa0029724f23a1ef3fcacb928d2">GetPropertyKeys</a> () const -&gt; std::vector&lt; std::string &gt;</td></tr>
<tr class="memdesc:a4e090fa0029724f23a1ef3fcacb928d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Discover the list of property keys. <a href="#a4e090fa0029724f23a1ef3fcacb928d2">More...</a><br /></td></tr>
<tr class="separator:a4e090fa0029724f23a1ef3fcacb928d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd34c038f5c3c94338419bbd887f3d14"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:abd34c038f5c3c94338419bbd887f3d14"><td class="memTemplItemLeft" align="right" valign="top">auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#abd34c038f5c3c94338419bbd887f3d14">SubscribeToPropertyChange</a> (const std::string &amp;subscriber, std::function&lt; void(const std::string &amp;key, T)&gt; callback) const -&gt; void</td></tr>
<tr class="memdesc:abd34c038f5c3c94338419bbd887f3d14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subscribe to property updates of type T. <a href="#abd34c038f5c3c94338419bbd887f3d14">More...</a><br /></td></tr>
<tr class="separator:abd34c038f5c3c94338419bbd887f3d14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b96fc3f61efccfa5c2048eb578b60e5"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1b96fc3f61efccfa5c2048eb578b60e5"><td class="memTemplItemLeft" align="right" valign="top">auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a1b96fc3f61efccfa5c2048eb578b60e5">UnsubscribeFromPropertyChange</a> (const std::string &amp;subscriber) -&gt; void</td></tr>
<tr class="memdesc:a1b96fc3f61efccfa5c2048eb578b60e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsubscribe from property updates of type T. <a href="#a1b96fc3f61efccfa5c2048eb578b60e5">More...</a><br /></td></tr>
<tr class="separator:a1b96fc3f61efccfa5c2048eb578b60e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6c37fce55cb631d9f5be45b93a544f9"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#ad6c37fce55cb631d9f5be45b93a544f9">SubscribeToPropertyChangeAsString</a> (const std::string &amp;subscriber, std::function&lt; void(const std::string &amp;key, std::string)&gt; callback) const -&gt; void</td></tr>
<tr class="memdesc:ad6c37fce55cb631d9f5be45b93a544f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subscribe to property updates. <a href="#ad6c37fce55cb631d9f5be45b93a544f9">More...</a><br /></td></tr>
<tr class="separator:ad6c37fce55cb631d9f5be45b93a544f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a746aba1505ae9117a28886de85111e16"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a746aba1505ae9117a28886de85111e16">UnsubscribeFromPropertyChangeAsString</a> (const std::string &amp;subscriber) -&gt; void</td></tr>
<tr class="memdesc:a746aba1505ae9117a28886de85111e16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsubscribe from property updates that convert to string. <a href="#a746aba1505ae9117a28886de85111e16">More...</a><br /></td></tr>
<tr class="separator:a746aba1505ae9117a28886de85111e16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e4ee07b3e64aca15079165f94ef4580"><td class="memItemLeft" align="right" valign="top"><a id="a7e4ee07b3e64aca15079165f94ef4580"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>CycleLogConsoleSeverityUp</b> () -&gt; void</td></tr>
<tr class="separator:a7e4ee07b3e64aca15079165f94ef4580"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69294d8b0771e3b65d4d4157c4559c52"><td class="memItemLeft" align="right" valign="top"><a id="a69294d8b0771e3b65d4d4157c4559c52"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>CycleLogConsoleSeverityDown</b> () -&gt; void</td></tr>
<tr class="separator:a69294d8b0771e3b65d4d4157c4559c52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a364225377b53067f0bfa1e006fbe069e"><td class="memItemLeft" align="right" valign="top"><a id="a364225377b53067f0bfa1e006fbe069e"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>CycleLogVerbosityUp</b> () -&gt; void</td></tr>
<tr class="separator:a364225377b53067f0bfa1e006fbe069e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95095ff2174a531e48d83ee1cfa293d5"><td class="memItemLeft" align="right" valign="top"><a id="a95095ff2174a531e48d83ee1cfa293d5"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>CycleLogVerbosityDown</b> () -&gt; void</td></tr>
<tr class="separator:a95095ff2174a531e48d83ee1cfa293d5"><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:aba55018cac4ae8341f491c662c482130"><td class="memItemLeft" align="right" valign="top">static auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#aba55018cac4ae8341f491c662c482130">ToDeviceState</a> (const std::string &amp;state) -&gt; <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a></td></tr>
<tr class="memdesc:aba55018cac4ae8341f491c662c482130"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string to DeviceState. <a href="#aba55018cac4ae8341f491c662c482130">More...</a><br /></td></tr>
<tr class="separator:aba55018cac4ae8341f491c662c482130"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f74475cef8ab1c39b87f8948b35e0a0"><td class="memItemLeft" align="right" valign="top">static auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a7f74475cef8ab1c39b87f8948b35e0a0">ToDeviceStateTransition</a> (const std::string &amp;transition) -&gt; DeviceStateTransition</td></tr>
<tr class="memdesc:a7f74475cef8ab1c39b87f8948b35e0a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string to DeviceStateTransition. <a href="#a7f74475cef8ab1c39b87f8948b35e0a0">More...</a><br /></td></tr>
<tr class="separator:a7f74475cef8ab1c39b87f8948b35e0a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ed12471e1736e2545645f3a12238d69"><td class="memItemLeft" align="right" valign="top">static auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a1ed12471e1736e2545645f3a12238d69">ToStr</a> (<a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a> state) -&gt; std::string</td></tr>
<tr class="memdesc:a1ed12471e1736e2545645f3a12238d69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert DeviceState to string. <a href="#a1ed12471e1736e2545645f3a12238d69">More...</a><br /></td></tr>
<tr class="separator:a1ed12471e1736e2545645f3a12238d69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa12e9fe01d4285d31576ef3418098698"><td class="memItemLeft" align="right" valign="top">static auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#aa12e9fe01d4285d31576ef3418098698">ToStr</a> (DeviceStateTransition transition) -&gt; std::string</td></tr>
<tr class="memdesc:aa12e9fe01d4285d31576ef3418098698"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert DeviceStateTransition to string. <a href="#aa12e9fe01d4285d31576ef3418098698">More...</a><br /></td></tr>
<tr class="separator:aa12e9fe01d4285d31576ef3418098698"><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-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a6445f784289a98930e78c1c933f1172e"><td class="memItemLeft" align="right" valign="top">static const std::unordered_map&lt; std::string, <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>fkDeviceStateStrMap</b></td></tr>
<tr class="separator:a6445f784289a98930e78c1c933f1172e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3edd55fb47b5cd6935430a9dc873d132"><td class="memItemLeft" align="right" valign="top">static const std::unordered_map&lt; <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a>, std::string, <a class="el" href="structfair_1_1mq_1_1tools_1_1HashEnum.html">tools::HashEnum</a>&lt; <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>fkStrDeviceStateMap</b></td></tr>
<tr class="separator:a3edd55fb47b5cd6935430a9dc873d132"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f9e0a8f2fe56b02bb006f948142b8d8"><td class="memItemLeft" align="right" valign="top">static const std::unordered_map&lt; std::string, DeviceStateTransition &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>fkDeviceStateTransitionStrMap</b></td></tr>
<tr class="separator:a0f9e0a8f2fe56b02bb006f948142b8d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad9392d7e84e49837be12b78fb2c9a1f"><td class="memItemLeft" align="right" valign="top">static const std::unordered_map&lt; DeviceStateTransition, std::string, <a class="el" href="structfair_1_1mq_1_1tools_1_1HashEnum.html">tools::HashEnum</a>&lt; DeviceStateTransition &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>fkStrDeviceStateTransitionMap</b></td></tr>
<tr class="separator:aad9392d7e84e49837be12b78fb2c9a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3d2c2baf5babb26938b1f82e8082116"><td class="memItemLeft" align="right" valign="top">static const std::unordered_map&lt; FairMQDevice::State, <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a>, <a class="el" href="structfair_1_1mq_1_1tools_1_1HashEnum.html">tools::HashEnum</a>&lt; FairMQDevice::State &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>fkDeviceStateMap</b></td></tr>
<tr class="separator:af3d2c2baf5babb26938b1f82e8082116"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82cbea413db4c8a7382b589ef5a95e8e"><td class="memItemLeft" align="right" valign="top">static const std::unordered_map&lt; DeviceStateTransition, FairMQDevice::Event, <a class="el" href="structfair_1_1mq_1_1tools_1_1HashEnum.html">tools::HashEnum</a>&lt; DeviceStateTransition &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>fkDeviceStateTransitionMap</b></td></tr>
<tr class="separator:a82cbea413db4c8a7382b589ef5a95e8e"><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:ae002b7fdc8b73cc77c0cf87d3b3e50e6"><td class="memItemLeft" align="right" valign="top"><a id="ae002b7fdc8b73cc77c0cf87d3b3e50e6"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (std::ostream &amp;os, const <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a> &amp;state) -&gt; std::ostream &amp;</td></tr>
<tr class="separator:ae002b7fdc8b73cc77c0cf87d3b3e50e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a71d599cf5d1796c209ddf7197ee823"><td class="memItemLeft" align="right" valign="top"><a id="a0a71d599cf5d1796c209ddf7197ee823"></a>
auto&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (std::ostream &amp;os, const DeviceStateTransition &amp;transition) -&gt; std::ostream &amp;</td></tr>
<tr class="separator:a0a71d599cf5d1796c209ddf7197ee823"><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>Facilitates communication between devices and plugins. </p>
<ul>
<li>Configuration interface</li>
<li>Control interface </li>
</ul>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ab2470014e7d85a1d82ed636bd84f95e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2470014e7d85a1d82ed636bd84f95e8">&#9670;&nbsp;</a></span>ChangeDeviceState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">auto PluginServices::ChangeDeviceState </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>controller</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const DeviceStateTransition&#160;</td>
<td class="paramname"><em>next</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> -&gt; void</td>
</tr>
</table>
</div><div class="memdoc">
<p>Request a device state transition. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">controller</td><td>id </td></tr>
<tr><td class="paramname">next</td><td>state transition </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="structfair_1_1mq_1_1PluginServices_1_1DeviceControlError.html">fair::mq::PluginServices::DeviceControlError</a></td><td>if control role is not currently owned by passed controller id.</td></tr>
</table>
</dd>
</dl>
<p>The state transition may not happen immediately, but when the current state evaluates the pending transition event and terminates. In other words, the device states are scheduled cooperatively. If the device control role has not been taken yet, calling this function will take over control implicitely. </p>
</div>
</div>
<a id="ac93964a0e35ca0ed91bfbaab6405be82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac93964a0e35ca0ed91bfbaab6405be82">&#9670;&nbsp;</a></span>GetCurrentDeviceState()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::GetCurrentDeviceState </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const -&gt; <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a> </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>current device state </dd></dl>
</div>
</div>
<a id="adc2f2ddc5a3e2d6a5846672d40cac359"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc2f2ddc5a3e2d6a5846672d40cac359">&#9670;&nbsp;</a></span>GetProperty()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::GetProperty </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>key</em></td><td>)</td>
<td> const -&gt; T </td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Read config property. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">key</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>config property value</dd></dl>
<p>TODO Currently, if a non-existing key is requested and a default constructed object is returned. This behaviour will be changed in the future to throw an exception in that case to provide a proper sentinel. </p>
</div>
</div>
<a id="a49179c80826ae5ec87d77b8d50d8ec44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a49179c80826ae5ec87d77b8d50d8ec44">&#9670;&nbsp;</a></span>GetPropertyAsString()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::GetPropertyAsString </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>key</em></td><td>)</td>
<td> const -&gt; std::string </td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Read config property as string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">key</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>config property value converted to string</dd></dl>
<p>If a type is not supported, the user can provide support by overloading the ostream operator for this type </p>
</div>
</div>
<a id="a4e090fa0029724f23a1ef3fcacb928d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e090fa0029724f23a1ef3fcacb928d2">&#9670;&nbsp;</a></span>GetPropertyKeys()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::GetPropertyKeys </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const -&gt; std::vector&lt;std::string&gt; </td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Discover the list of property keys. </p>
<dl class="section return"><dt>Returns</dt><dd>list of property keys </dd></dl>
</div>
</div>
<a id="af7127f156ba970298a23b8b67550a43b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7127f156ba970298a23b8b67550a43b">&#9670;&nbsp;</a></span>ReleaseDeviceControl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">auto PluginServices::ReleaseDeviceControl </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>controller</em></td><td>)</td>
<td> -&gt; void</td>
</tr>
</table>
</div><div class="memdoc">
<p>Release device controller role. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">controller</td><td>id </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="structfair_1_1mq_1_1PluginServices_1_1DeviceControlError.html">fair::mq::PluginServices::DeviceControlError</a></td><td>if passed controller id is not the current device controller. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae06ecdf4d79d3a1e7d850dfab4239200"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae06ecdf4d79d3a1e7d850dfab4239200">&#9670;&nbsp;</a></span>SetProperty()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::SetProperty </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> -&gt; void
</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set config property. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">key</td><td></td></tr>
<tr><td class="paramname">val</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="structfair_1_1mq_1_1PluginServices_1_1InvalidStateError.html">fair::mq::PluginServices::InvalidStateError</a></td><td>if method is called in unsupported device states</td></tr>
</table>
</dd>
</dl>
<p>Setting a config property will store the value in the FairMQ internal config store and notify any subscribers about the update. It is property dependent, if the call to this method will have an immediate, delayed or any effect at all. </p>
</div>
</div>
<a id="a546360c16172c5d3c83f483871fa0c7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a546360c16172c5d3c83f483871fa0c7e">&#9670;&nbsp;</a></span>StealDeviceControl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">auto PluginServices::StealDeviceControl </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>controller</em></td><td>)</td>
<td> -&gt; void</td>
</tr>
</table>
</div><div class="memdoc">
<p>Become device controller by force. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">controller</td><td>id</td></tr>
</table>
</dd>
</dl>
<p>Take over device controller privileges by force. Does not trigger the ReleaseDeviceControl condition! This function is intended to implement override/emergency control functionality (e.g. device shutdown on SIGINT). </p>
</div>
</div>
<a id="a98b235e5119d863dbb7adeb00938d449"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98b235e5119d863dbb7adeb00938d449">&#9670;&nbsp;</a></span>SubscribeToDeviceStateChange()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::SubscribeToDeviceStateChange </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>subscriber</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::function&lt; void(<a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a>)&gt;&#160;</td>
<td class="paramname"><em>callback</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> -&gt; void
</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Subscribe with a callback to device state changes. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">subscriber</td><td>id </td></tr>
<tr><td class="paramname">callback</td><td>The callback will be called at the beginning of a new state. The callback is called from the thread the state is running in. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abd34c038f5c3c94338419bbd887f3d14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd34c038f5c3c94338419bbd887f3d14">&#9670;&nbsp;</a></span>SubscribeToPropertyChange()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::SubscribeToPropertyChange </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>subscriber</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::function&lt; void(const std::string &amp;key, T)&gt;&#160;</td>
<td class="paramname"><em>callback</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const -&gt; void
</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Subscribe to property updates of type T. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">subscriber</td><td></td></tr>
<tr><td class="paramname">callback</td><td>function</td></tr>
</table>
</dd>
</dl>
<p>Subscribe to property changes with a callback to monitor property changes in an event based fashion. </p>
</div>
</div>
<a id="ad6c37fce55cb631d9f5be45b93a544f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6c37fce55cb631d9f5be45b93a544f9">&#9670;&nbsp;</a></span>SubscribeToPropertyChangeAsString()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::SubscribeToPropertyChangeAsString </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>subscriber</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::function&lt; void(const std::string &amp;key, std::string)&gt;&#160;</td>
<td class="paramname"><em>callback</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const -&gt; void
</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Subscribe to property updates. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">subscriber</td><td></td></tr>
<tr><td class="paramname">callback</td><td>function</td></tr>
</table>
</dd>
</dl>
<p>Subscribe to property changes with a callback to monitor property changes in an event based fashion. Will convert the property to string. </p>
</div>
</div>
<a id="ab2bab89d575dd90828d492cf2d0d2f5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2bab89d575dd90828d492cf2d0d2f5e">&#9670;&nbsp;</a></span>TakeDeviceControl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">auto PluginServices::TakeDeviceControl </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>controller</em></td><td>)</td>
<td> -&gt; void</td>
</tr>
</table>
</div><div class="memdoc">
<p>Become device controller. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">controller</td><td>id </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="structfair_1_1mq_1_1PluginServices_1_1DeviceControlError.html">fair::mq::PluginServices::DeviceControlError</a></td><td>if there is already a device controller.</td></tr>
</table>
</dd>
</dl>
<p>Only one plugin can succeed to take control over device state transitions at a time. </p>
</div>
</div>
<a id="aba55018cac4ae8341f491c662c482130"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba55018cac4ae8341f491c662c482130">&#9670;&nbsp;</a></span>ToDeviceState()</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::PluginServices::ToDeviceState </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td> -&gt; <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a> </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 DeviceState. </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>DeviceState 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 DeviceState </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7f74475cef8ab1c39b87f8948b35e0a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f74475cef8ab1c39b87f8948b35e0a0">&#9670;&nbsp;</a></span>ToDeviceStateTransition()</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::PluginServices::ToDeviceStateTransition </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>transition</em></td><td>)</td>
<td> -&gt; DeviceStateTransition </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 DeviceStateTransition. </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>DeviceStateTransition 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 DeviceStateTransition </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a1ed12471e1736e2545645f3a12238d69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ed12471e1736e2545645f3a12238d69">&#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::PluginServices::ToStr </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">DeviceState</a>&#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 DeviceState 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 DeviceState enum entry </dd></dl>
</div>
</div>
<a id="aa12e9fe01d4285d31576ef3418098698"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa12e9fe01d4285d31576ef3418098698">&#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::PluginServices::ToStr </td>
<td>(</td>
<td class="paramtype">DeviceStateTransition&#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 DeviceStateTransition 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 DeviceStateTransition enum entry </dd></dl>
</div>
</div>
<a id="a657506e2afe946ada3deff4ecc40e4d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a657506e2afe946ada3deff4ecc40e4d1">&#9670;&nbsp;</a></span>UnsubscribeFromDeviceStateChange()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::UnsubscribeFromDeviceStateChange </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>subscriber</em></td><td>)</td>
<td> -&gt; void </td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Unsubscribe from device state changes. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">subscriber</td><td>id </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a1b96fc3f61efccfa5c2048eb578b60e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b96fc3f61efccfa5c2048eb578b60e5">&#9670;&nbsp;</a></span>UnsubscribeFromPropertyChange()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::UnsubscribeFromPropertyChange </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>subscriber</em></td><td>)</td>
<td> -&gt; void </td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Unsubscribe from property updates of type T. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">subscriber</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a746aba1505ae9117a28886de85111e16"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a746aba1505ae9117a28886de85111e16">&#9670;&nbsp;</a></span>UnsubscribeFromPropertyChangeAsString()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto fair::mq::PluginServices::UnsubscribeFromPropertyChangeAsString </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>subscriber</em></td><td>)</td>
<td> -&gt; void </td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Unsubscribe from property updates that convert to string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">subscriber</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="af3d2c2baf5babb26938b1f82e8082116"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3d2c2baf5babb26938b1f82e8082116">&#9670;&nbsp;</a></span>fkDeviceStateMap</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::unordered_map&lt; FairMQDevice::State, <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">PluginServices::DeviceState</a>, <a class="el" href="structfair_1_1mq_1_1tools_1_1HashEnum.html">fair::mq::tools::HashEnum</a>&lt; FairMQDevice::State &gt; &gt; PluginServices::fkDeviceStateMap</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> {FairMQDevice::OK, DeviceState::Ok},</div><div class="line"> {FairMQDevice::Error, DeviceState::Error},</div><div class="line"> {FairMQDevice::IDLE, DeviceState::Idle},</div><div class="line"> {FairMQDevice::INITIALIZING_DEVICE, DeviceState::InitializingDevice},</div><div class="line"> {FairMQDevice::DEVICE_READY, DeviceState::DeviceReady},</div><div class="line"> {FairMQDevice::INITIALIZING_TASK, DeviceState::InitializingTask},</div><div class="line"> {FairMQDevice::READY, DeviceState::Ready},</div><div class="line"> {FairMQDevice::RUNNING, DeviceState::Running},</div><div class="line"> {FairMQDevice::PAUSED, DeviceState::Paused},</div><div class="line"> {FairMQDevice::RESETTING_TASK, DeviceState::ResettingTask},</div><div class="line"> {FairMQDevice::RESETTING_DEVICE, DeviceState::ResettingDevice},</div><div class="line"> {FairMQDevice::EXITING, DeviceState::Exiting}</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a6445f784289a98930e78c1c933f1172e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6445f784289a98930e78c1c933f1172e">&#9670;&nbsp;</a></span>fkDeviceStateStrMap</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::unordered_map&lt; std::string, <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">PluginServices::DeviceState</a> &gt; PluginServices::fkDeviceStateStrMap</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> {<span class="stringliteral">&quot;OK&quot;</span>, DeviceState::Ok},</div><div class="line"> {<span class="stringliteral">&quot;ERROR&quot;</span>, DeviceState::Error},</div><div class="line"> {<span class="stringliteral">&quot;IDLE&quot;</span>, DeviceState::Idle},</div><div class="line"> {<span class="stringliteral">&quot;INITIALIZING DEVICE&quot;</span>, DeviceState::InitializingDevice},</div><div class="line"> {<span class="stringliteral">&quot;DEVICE READY&quot;</span>, DeviceState::DeviceReady},</div><div class="line"> {<span class="stringliteral">&quot;INITIALIZING TASK&quot;</span>, DeviceState::InitializingTask},</div><div class="line"> {<span class="stringliteral">&quot;READY&quot;</span>, DeviceState::Ready},</div><div class="line"> {<span class="stringliteral">&quot;RUNNING&quot;</span>, DeviceState::Running},</div><div class="line"> {<span class="stringliteral">&quot;PAUSED&quot;</span>, DeviceState::Paused},</div><div class="line"> {<span class="stringliteral">&quot;RESETTING TASK&quot;</span>, DeviceState::ResettingTask},</div><div class="line"> {<span class="stringliteral">&quot;RESETTING DEVICE&quot;</span>, DeviceState::ResettingDevice},</div><div class="line"> {<span class="stringliteral">&quot;EXITING&quot;</span>, DeviceState::Exiting}</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a82cbea413db4c8a7382b589ef5a95e8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82cbea413db4c8a7382b589ef5a95e8e">&#9670;&nbsp;</a></span>fkDeviceStateTransitionMap</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::unordered_map&lt; PluginServices::DeviceStateTransition, FairMQDevice::Event, <a class="el" href="structfair_1_1mq_1_1tools_1_1HashEnum.html">tools::HashEnum</a>&lt; PluginServices::DeviceStateTransition &gt; &gt; PluginServices::fkDeviceStateTransitionMap</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> {DeviceStateTransition::InitDevice, FairMQDevice::INIT_DEVICE},</div><div class="line"> {DeviceStateTransition::InitTask, FairMQDevice::INIT_TASK},</div><div class="line"> {DeviceStateTransition::Run, FairMQDevice::RUN},</div><div class="line"> {DeviceStateTransition::Pause, FairMQDevice::PAUSE},</div><div class="line"> {DeviceStateTransition::Resume, FairMQDevice::RUN},</div><div class="line"> {DeviceStateTransition::Stop, FairMQDevice::STOP},</div><div class="line"> {DeviceStateTransition::ResetTask, FairMQDevice::RESET_TASK},</div><div class="line"> {DeviceStateTransition::ResetDevice, FairMQDevice::RESET_DEVICE},</div><div class="line"> {DeviceStateTransition::End, FairMQDevice::END},</div><div class="line"> {DeviceStateTransition::ErrorFound, FairMQDevice::ERROR_FOUND}</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a0f9e0a8f2fe56b02bb006f948142b8d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f9e0a8f2fe56b02bb006f948142b8d8">&#9670;&nbsp;</a></span>fkDeviceStateTransitionStrMap</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::unordered_map&lt; std::string, PluginServices::DeviceStateTransition &gt; PluginServices::fkDeviceStateTransitionStrMap</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> {<span class="stringliteral">&quot;INIT DEVICE&quot;</span>, DeviceStateTransition::InitDevice},</div><div class="line"> {<span class="stringliteral">&quot;INIT TASK&quot;</span>, DeviceStateTransition::InitTask},</div><div class="line"> {<span class="stringliteral">&quot;RUN&quot;</span>, DeviceStateTransition::Run},</div><div class="line"> {<span class="stringliteral">&quot;PAUSE&quot;</span>, DeviceStateTransition::Pause},</div><div class="line"> {<span class="stringliteral">&quot;RESUME&quot;</span>, DeviceStateTransition::Resume},</div><div class="line"> {<span class="stringliteral">&quot;STOP&quot;</span>, DeviceStateTransition::Stop},</div><div class="line"> {<span class="stringliteral">&quot;RESET TASK&quot;</span>, DeviceStateTransition::ResetTask},</div><div class="line"> {<span class="stringliteral">&quot;RESET DEVICE&quot;</span>, DeviceStateTransition::ResetDevice},</div><div class="line"> {<span class="stringliteral">&quot;END&quot;</span>, DeviceStateTransition::End},</div><div class="line"> {<span class="stringliteral">&quot;ERROR FOUND&quot;</span>, DeviceStateTransition::ErrorFound},</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="a3edd55fb47b5cd6935430a9dc873d132"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3edd55fb47b5cd6935430a9dc873d132">&#9670;&nbsp;</a></span>fkStrDeviceStateMap</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::unordered_map&lt; <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">PluginServices::DeviceState</a>, std::string, <a class="el" href="structfair_1_1mq_1_1tools_1_1HashEnum.html">tools::HashEnum</a>&lt; <a class="el" href="classfair_1_1mq_1_1PluginServices.html#a614eb15c3272895a09e5f2da46e367a7">PluginServices::DeviceState</a> &gt; &gt; PluginServices::fkStrDeviceStateMap</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> {DeviceState::Ok, <span class="stringliteral">&quot;OK&quot;</span>},</div><div class="line"> {DeviceState::Error, <span class="stringliteral">&quot;ERROR&quot;</span>},</div><div class="line"> {DeviceState::Idle, <span class="stringliteral">&quot;IDLE&quot;</span>},</div><div class="line"> {DeviceState::InitializingDevice, <span class="stringliteral">&quot;INITIALIZING DEVICE&quot;</span>},</div><div class="line"> {DeviceState::DeviceReady, <span class="stringliteral">&quot;DEVICE READY&quot;</span>},</div><div class="line"> {DeviceState::InitializingTask, <span class="stringliteral">&quot;INITIALIZING TASK&quot;</span>},</div><div class="line"> {DeviceState::Ready, <span class="stringliteral">&quot;READY&quot;</span>},</div><div class="line"> {DeviceState::Running, <span class="stringliteral">&quot;RUNNING&quot;</span>},</div><div class="line"> {DeviceState::Paused, <span class="stringliteral">&quot;PAUSED&quot;</span>},</div><div class="line"> {DeviceState::ResettingTask, <span class="stringliteral">&quot;RESETTING TASK&quot;</span>},</div><div class="line"> {DeviceState::ResettingDevice, <span class="stringliteral">&quot;RESETTING DEVICE&quot;</span>},</div><div class="line"> {DeviceState::Exiting, <span class="stringliteral">&quot;EXITING&quot;</span>}</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<a id="aad9392d7e84e49837be12b78fb2c9a1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad9392d7e84e49837be12b78fb2c9a1f">&#9670;&nbsp;</a></span>fkStrDeviceStateTransitionMap</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::unordered_map&lt; PluginServices::DeviceStateTransition, std::string, <a class="el" href="structfair_1_1mq_1_1tools_1_1HashEnum.html">tools::HashEnum</a>&lt; PluginServices::DeviceStateTransition &gt; &gt; PluginServices::fkStrDeviceStateTransitionMap</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> {DeviceStateTransition::InitDevice, <span class="stringliteral">&quot;INIT DEVICE&quot;</span>},</div><div class="line"> {DeviceStateTransition::InitTask, <span class="stringliteral">&quot;INIT TASK&quot;</span>},</div><div class="line"> {DeviceStateTransition::Run, <span class="stringliteral">&quot;RUN&quot;</span>},</div><div class="line"> {DeviceStateTransition::Pause, <span class="stringliteral">&quot;PAUSE&quot;</span>},</div><div class="line"> {DeviceStateTransition::Resume, <span class="stringliteral">&quot;RESUME&quot;</span>},</div><div class="line"> {DeviceStateTransition::Stop, <span class="stringliteral">&quot;STOP&quot;</span>},</div><div class="line"> {DeviceStateTransition::ResetTask, <span class="stringliteral">&quot;RESET TASK&quot;</span>},</div><div class="line"> {DeviceStateTransition::ResetDevice, <span class="stringliteral">&quot;RESET DEVICE&quot;</span>},</div><div class="line"> {DeviceStateTransition::End, <span class="stringliteral">&quot;END&quot;</span>},</div><div class="line"> {DeviceStateTransition::ErrorFound, <span class="stringliteral">&quot;ERROR FOUND&quot;</span>},</div><div class="line">}</div></div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>fairmq/<a class="el" href="PluginServices_8h_source.html">PluginServices.h</a></li>
<li>fairmq/PluginServices.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>