summaryrefslogtreecommitdiff
path: root/docs/CAmSocketHandler_8h_source.html
blob: d244163d10d904936cd4d8c9f900b5a496f59708 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<!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.11"/>
<title>AudioManager: AudioManagerUtilities/include/CAmSocketHandler.h Source File</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</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>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</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">AudioManager
   &#160;<span id="projectnumber">7.6.6</span>
   </div>
   <div id="projectbrief">Native Application Runtime Environment</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;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><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('CAmSocketHandler_8h_source.html','');});
</script>
<div id="doc-content">
<!-- 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 class="header">
  <div class="headertitle">
<div class="title">CAmSocketHandler.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="CAmSocketHandler_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#ifndef SOCKETHANDLER_H_</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#define SOCKETHANDLER_H_</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;sys/poll.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;list&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;sys/signalfd.h&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;audiomanagerconfig.h&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="audiomanagertypes_8h.html">audiomanagertypes.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#ifdef WITH_TIMERFD</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;stdexcept&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceam.html">am</a></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;{</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="CAmSocketHandler_8h.html#a67f1edc0014c2569b2a1e7e423aaa825">   47</a></span>&#160;<span class="preprocessor">#define MAX_NS 1000000000L</span></div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="CAmSocketHandler_8h.html#a63380f323b142274c124bb15bba9459a">   48</a></span>&#160;<span class="preprocessor">#define MAX_TIMERHANDLE UINT16_MAX</span></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="CAmSocketHandler_8h.html#afe0da7e06e5af7546a20e21391824f5a">   49</a></span>&#160;<span class="preprocessor">#define MAX_POLLHANDLE UINT16_MAX</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespaceam.html#af782e2735b1adf1e43a9d530cee340aa">   51</a></span>&#160;<span class="keyword">typedef</span> uint16_t <a class="code" href="namespaceam.html#af782e2735b1adf1e43a9d530cee340aa">sh_pollHandle_t</a>; </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespaceam.html#a47991fcc6785a5c97037b611e7f7e1a8">   52</a></span>&#160;<span class="keyword">typedef</span> sh_pollHandle_t <a class="code" href="namespaceam.html#a47991fcc6785a5c97037b611e7f7e1a8">sh_timerHandle_t</a>; </div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classam_1_1IAmShPollPrepare.html">   57</a></span>&#160;<span class="keyword">class </span><a class="code" href="classam_1_1IAmShPollPrepare.html">IAmShPollPrepare</a></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classam_1_1IAmShPollPrepare.html#adb146fb654748528b1878798c7f91bf7">Call</a>(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData) = 0;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classam_1_1IAmShPollPrepare.html#a2aad9b7400f14d06d3f10dc7e4e32e2e">   61</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classam_1_1IAmShPollPrepare.html#a2aad9b7400f14d06d3f10dc7e4e32e2e">~IAmShPollPrepare</a>() {}</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;};</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classam_1_1IAmShPollFired.html">   67</a></span>&#160;<span class="keyword">class </span><a class="code" href="classam_1_1IAmShPollFired.html">IAmShPollFired</a></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;{</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classam_1_1IAmShPollPrepare.html#adb146fb654748528b1878798c7f91bf7">Call</a>(<span class="keyword">const</span> pollfd pollfd, <span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData) = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classam_1_1IAmShPollFired.html#a847146143a10fb0089209748040aaefd">   71</a></span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classam_1_1IAmShPollFired.html"> IAmShPollFired</a>() {}</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;};</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classam_1_1IAmShPollCheck.html">   77</a></span>&#160;<span class="keyword">class </span><a class="code" href="classam_1_1IAmShPollCheck.html">IAmShPollCheck</a></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;{</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classam_1_1IAmShPollPrepare.html#adb146fb654748528b1878798c7f91bf7">Call</a>(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData) = 0;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classam_1_1IAmShPollCheck.html#a70af36e07af63eb91fd969ee06497a6d">   81</a></span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classam_1_1IAmShPollCheck.html"> IAmShPollCheck</a>() {}</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;};</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classam_1_1IAmShPollDispatch.html">   87</a></span>&#160;<span class="keyword">class </span><a class="code" href="classam_1_1IAmShPollDispatch.html">IAmShPollDispatch</a></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classam_1_1IAmShPollPrepare.html#adb146fb654748528b1878798c7f91bf7">Call</a>(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData) = 0;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classam_1_1IAmShPollDispatch.html#a4580a8fa6f656afd0265fd9b6890b495">   91</a></span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classam_1_1IAmShPollDispatch.html"> IAmShPollDispatch</a>() {}</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;};</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classam_1_1IAmShTimerCallBack.html">   97</a></span>&#160;<span class="keyword">class </span><a class="code" href="classam_1_1IAmShTimerCallBack.html">IAmShTimerCallBack</a></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;{</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classam_1_1IAmShTimerCallBack.html#ab84921315e99da64a563b221d37e03b6">  100</a></span>&#160;    <a class="code" href="classam_1_1IAmShTimerCallBack.html#ab84921315e99da64a563b221d37e03b6">IAmShTimerCallBack</a>(){};</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classam_1_1IAmShPollPrepare.html#adb146fb654748528b1878798c7f91bf7">Call</a>(<span class="keyword">const</span> sh_timerHandle_t handle, <span class="keywordtype">void</span>* userData) = 0;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classam_1_1IAmShTimerCallBack.html#acac8aaa1edaca170e6266c2aec18d7f1">  102</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classam_1_1IAmShTimerCallBack.html#acac8aaa1edaca170e6266c2aec18d7f1">~IAmShTimerCallBack</a>(){}</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;};</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollFired.html">  108</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> TClass&gt; <span class="keyword">class </span><a class="code" href="classam_1_1TAmShPollFired.html">TAmShPollFired</a>: <span class="keyword">public</span> <a class="code" href="classam_1_1IAmShPollFired.html">IAmShPollFired</a></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    TClass* mInstance;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    void (TClass::*mFunction)(<span class="keyword">const</span> pollfd pollfd, <span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollFired.html#a66d19f639d38774c75edff51b8095a0d">  115</a></span>&#160;    <a class="code" href="classam_1_1TAmShPollFired.html#a66d19f639d38774c75edff51b8095a0d">TAmShPollFired</a>(TClass* instance, <span class="keywordtype">void</span> (TClass::*<span class="keyword">function</span>)(<span class="keyword">const</span> pollfd pollfd, <span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)) :</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;            mInstance(instance), <span class="comment">//</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;            mFunction(function)</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    {}</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollFired.html#ac6fc2c508e2d8105fad3734bcf286c95">  120</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classam_1_1TAmShPollFired.html#ac6fc2c508e2d8105fad3734bcf286c95">Call</a>(<span class="keyword">const</span> pollfd pollfd, <span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    {</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        (*mInstance.*mFunction)(pollfd, handle, userData);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;};</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollCheck.html">  129</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> TClass&gt; <span class="keyword">class </span><a class="code" href="classam_1_1TAmShPollCheck.html">TAmShPollCheck</a>: <span class="keyword">public</span> <a class="code" href="classam_1_1IAmShPollCheck.html">IAmShPollCheck</a></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;{</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    TClass* mInstance;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    bool (TClass::*mFunction)(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollCheck.html#a851741de903173a0b1969d6444c508ee">  136</a></span>&#160;    <a class="code" href="classam_1_1TAmShPollCheck.html#a851741de903173a0b1969d6444c508ee">TAmShPollCheck</a>(TClass* instance, <span class="keywordtype">bool</span> (TClass::*<span class="keyword">function</span>)(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)) :</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;            mInstance(instance), <span class="comment">//</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;            mFunction(function)</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    {}</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollCheck.html#a89844ce383f71f62d3d48e07b8c854be">  141</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classam_1_1TAmShPollCheck.html#a89844ce383f71f62d3d48e07b8c854be">Call</a>(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    {</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        <span class="keywordflow">return</span> ((*mInstance.*mFunction)(handle, userData));</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    }</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;};</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollDispatch.html">  150</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> TClass&gt; <span class="keyword">class </span><a class="code" href="classam_1_1TAmShPollDispatch.html">TAmShPollDispatch</a>: <span class="keyword">public</span> <a class="code" href="classam_1_1IAmShPollDispatch.html">IAmShPollDispatch</a></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;{</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    TClass* mInstance;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    bool (TClass::*mFunction)(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollDispatch.html#a574535575f47cd509ce4fd7e11640d21">  157</a></span>&#160;    <a class="code" href="classam_1_1TAmShPollDispatch.html#a574535575f47cd509ce4fd7e11640d21">TAmShPollDispatch</a>(TClass* instance, <span class="keywordtype">bool</span> (TClass::*<span class="keyword">function</span>)(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)) :</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;            mInstance(instance), <span class="comment">//</span></div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;            mFunction(function)</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    {}</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollDispatch.html#a9e4052f0734cbf44d3e8714e30d4dc20">  162</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classam_1_1TAmShPollDispatch.html#a9e4052f0734cbf44d3e8714e30d4dc20">Call</a>(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    {</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        <span class="keywordflow">return</span> ((*mInstance.*mFunction)(handle, userData));</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    }</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;};</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classam_1_1TAmShTimerCallBack.html">  171</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> TClass&gt; <span class="keyword">class </span><a class="code" href="classam_1_1TAmShTimerCallBack.html">TAmShTimerCallBack</a>: <span class="keyword">public</span> <a class="code" href="classam_1_1IAmShTimerCallBack.html">IAmShTimerCallBack</a></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;{</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    TClass* mInstance;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    void (TClass::*mFunction)(sh_timerHandle_t handle, <span class="keywordtype">void</span>* userData);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classam_1_1TAmShTimerCallBack.html#a501f56ecacec5ab7a624de8f7601b374">  178</a></span>&#160;    <a class="code" href="classam_1_1TAmShTimerCallBack.html#a501f56ecacec5ab7a624de8f7601b374">TAmShTimerCallBack</a>(TClass* instance, <span class="keywordtype">void</span> (TClass::*<span class="keyword">function</span>)(sh_timerHandle_t handle, <span class="keywordtype">void</span>* userData)) :</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;            <a class="code" href="classam_1_1IAmShTimerCallBack.html">IAmShTimerCallBack</a>(), mInstance(instance), <span class="comment">//</span></div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;            mFunction(function)</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    {}</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classam_1_1TAmShTimerCallBack.html#ae343cf7a089c8a19d3dedb244d7e2c62">  183</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classam_1_1TAmShTimerCallBack.html#ae343cf7a089c8a19d3dedb244d7e2c62">Call</a>(sh_timerHandle_t handle, <span class="keywordtype">void</span>* userData)</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    {</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        (*mInstance.*mFunction)(handle, userData);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    }</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;};</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollPrepare.html">  193</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> TClass&gt; <span class="keyword">class </span><a class="code" href="classam_1_1TAmShPollPrepare.html">TAmShPollPrepare</a>: <span class="keyword">public</span> <a class="code" href="classam_1_1IAmShPollPrepare.html">IAmShPollPrepare</a></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    TClass* mInstance;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    void (TClass::*mFunction)(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollPrepare.html#ae7d9cffc73ca8704eaa4e5807f223e3c">  200</a></span>&#160;    <a class="code" href="classam_1_1TAmShPollPrepare.html#ae7d9cffc73ca8704eaa4e5807f223e3c">TAmShPollPrepare</a>(TClass* instance, <span class="keywordtype">void</span> (TClass::*<span class="keyword">function</span>)(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)) :</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;            mInstance(instance), <span class="comment">//</span></div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;            mFunction(function)</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    {}</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classam_1_1TAmShPollPrepare.html#a8556db372a475b5ab7425ae62b2b7519">  205</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classam_1_1TAmShPollPrepare.html#a8556db372a475b5ab7425ae62b2b7519">Call</a>(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    {</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        (*mInstance.*mFunction)(handle, userData);</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    }</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;};</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classam_1_1CAmSocketHandler.html">  216</a></span>&#160;<span class="keyword">class </span><a class="code" href="classam_1_1CAmSocketHandler.html">CAmSocketHandler</a></div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;{</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <span class="keyword">struct </span>sh_poll_s </div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    {</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        sh_pollHandle_t handle; </div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        pollfd pollfdValue; </div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        std::function&lt;void(const sh_pollHandle_t handle, void* userData)&gt; prepareCB; <span class="comment">//preperation callback</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        std::function&lt;void(const pollfd pollfd, const sh_pollHandle_t handle, void* userData)&gt; firedCB; <span class="comment">//fired callback</span></div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        std::function&lt;bool(const sh_pollHandle_t handle, void* userData)&gt; checkCB; <span class="comment">//check callback</span></div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        std::function&lt;bool(const sh_pollHandle_t handle, void* userData)&gt; dispatchCB; <span class="comment">//dispatch callback</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="keywordtype">void</span>* userData;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        sh_poll_s() :</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;                handle(0), pollfdValue(), prepareCB(), firedCB(), checkCB(), dispatchCB(), userData(0)</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        {}</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    };</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keyword">struct </span>sh_timer_s </div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    {</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;        sh_timerHandle_t handle; </div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;<span class="preprocessor">#ifdef WITH_TIMERFD       </span></div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        itimerspec countdown; </div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        timespec countdown; </div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;<span class="preprocessor">#endif        </span></div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        std::function&lt;void(const sh_timerHandle_t handle, void* userData)&gt; callback; <span class="comment">//timer callback</span></div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        <span class="keywordtype">void</span>* userData;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        sh_timer_s() :</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                handle(0)</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;<span class="preprocessor">#ifdef WITH_TIMERFD</span></div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                        , fd(0)</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;                        , countdown(), callback(), userData(0)</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        {}</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    };</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    <span class="keyword">struct </span>sh_signal_s</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    {</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;        sh_pollHandle_t handle; </div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        std::function&lt;void(const sh_pollHandle_t handle, const signalfd_siginfo &amp; info, void* userData)&gt; callback;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;        <span class="keywordtype">void</span>* userData;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        sh_signal_s() :</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;                handle(0), callback(), userData(0)</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        {}</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    };</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <span class="keyword">struct </span>sh_identifier_s</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    {</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;        std::set&lt;sh_pollHandle_t&gt; pollHandles;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;        uint16_t limit;</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;        uint16_t lastUsedID;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        sh_identifier_s(<span class="keyword">const</span> uint16_t pollLimit = UINT16_MAX) :</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;                pollHandles(), limit(pollLimit), lastUsedID(0)</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;        {}</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    };</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    <span class="keyword">typedef</span> std::reverse_iterator&lt;sh_timer_s&gt; rListTimerIter; </div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    <span class="keyword">typedef</span> std::vector&lt;pollfd&gt; VectorListPollfd_t; </div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    <span class="keyword">typedef</span> std::vector&lt;sh_poll_s&gt; VectorListPoll_t; </div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    <span class="keyword">typedef</span> std::vector&lt;sh_signal_s&gt; VectorSignalHandlers_t; </div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    <span class="keyword">typedef</span> <span class="keyword">enum</span>:uint8_t</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    {</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        NO_ERROR = 0u,   <span class="comment">// OK</span></div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        PIPE_ERROR = 1u, <span class="comment">// Pipe error</span></div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        FD_ERROR = 2u,   <span class="comment">// Invalid file descriptor</span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;        SFD_ERROR = 4u,</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    } internal_codes_e;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="keyword">typedef</span> uint8_t internal_codes_t;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="keywordtype">int</span> mPipe[2];</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <span class="keywordtype">bool</span> mDispatchDone; <span class="comment">//this starts / stops the mainloop</span></div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    sh_identifier_s mSetPollKeys; </div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    VectorListPoll_t mListPoll; </div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    sh_identifier_s mSetTimerKeys; </div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    std::list&lt;sh_timer_s&gt; mListTimer; </div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    std::list&lt;sh_timer_s&gt; mListActiveTimer; </div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    sh_identifier_s mSetSignalhandlerKeys; </div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    VectorSignalHandlers_t mSignalHandlers;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <span class="keywordtype">bool</span> mRecreatePollfds; </div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    internal_codes_t mInternalCodes;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    sh_pollHandle_t mSignalFdHandle;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;<span class="preprocessor">#ifndef WITH_TIMERFD</span></div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    timespec mStartTime; </div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <span class="keywordtype">bool</span> fdIsValid(<span class="keyword">const</span> <span class="keywordtype">int</span> fd) <span class="keyword">const</span>;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    timespec* insertTime(timespec&amp; buffertime);</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;<span class="preprocessor">#ifdef WITH_TIMERFD      </span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> createTimeFD(<span class="keyword">const</span> itimerspec &amp; timeouts, <span class="keywordtype">int</span> &amp; fd);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;<span class="preprocessor">#else </span></div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="keywordtype">void</span> timerUp();</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <span class="keywordtype">void</span> timerCorrection();</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> compareCountdown(<span class="keyword">const</span> sh_timer_s&amp; a, <span class="keyword">const</span> sh_timer_s&amp; b)</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    {</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;        <span class="keywordflow">return</span> ((a.countdown.tv_sec == b.countdown.tv_sec) ? (a.countdown.tv_nsec &lt; b.countdown.tv_nsec) : (a.countdown.tv_sec &lt; b.countdown.tv_sec));</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    }</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <span class="keyword">inline</span> <span class="keyword">static</span> timespec timespecSub(<span class="keyword">const</span> timespec&amp; a, <span class="keyword">const</span> timespec&amp; b)</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    {</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;        timespec result;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        <span class="keywordflow">if</span> ((a.tv_sec &lt; b.tv_sec) || ((a.tv_sec == b.tv_sec) &amp;&amp; (a.tv_nsec &lt;= b.tv_nsec)))</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        {</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;            result.tv_sec = result.tv_nsec = 0;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;        }</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        {</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;            result.tv_sec = a.tv_sec - b.tv_sec;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;            <span class="keywordflow">if</span> (a.tv_nsec &lt; b.tv_nsec)</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;            {</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;                result.tv_nsec = a.tv_nsec + <a class="code" href="CAmSocketHandler_8h.html#a67f1edc0014c2569b2a1e7e423aaa825">MAX_NS</a> - b.tv_nsec;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;                result.tv_sec--; <span class="comment">/* Borrow a second. */</span></div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;            }</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;            {</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;                result.tv_nsec = a.tv_nsec - b.tv_nsec;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;            }</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;        }</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;        <span class="keywordflow">return</span> (result);</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    }</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    <span class="keyword">inline</span> timespec timespecAdd(<span class="keyword">const</span> timespec&amp; a, <span class="keyword">const</span> timespec&amp; b)</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;    {</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;        timespec result;</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;        result.tv_sec = a.tv_sec + b.tv_sec;</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;        result.tv_nsec = a.tv_nsec + b.tv_nsec;</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;        <span class="keywordflow">if</span> (result.tv_nsec &gt;= <a class="code" href="CAmSocketHandler_8h.html#a67f1edc0014c2569b2a1e7e423aaa825">MAX_NS</a>)</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        {</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;            result.tv_sec++;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;            result.tv_nsec = result.tv_nsec - <a class="code" href="CAmSocketHandler_8h.html#a67f1edc0014c2569b2a1e7e423aaa825">MAX_NS</a>;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        }</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        <span class="keywordflow">return</span> (result);</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    }</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">int</span> timespecCompare(<span class="keyword">const</span> timespec&amp; a, <span class="keyword">const</span> timespec&amp; b)</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    {</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        <span class="comment">//less</span></div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;        <span class="keywordflow">if</span> (a.tv_sec &lt; b.tv_sec)</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        <span class="keywordflow">return</span> (-1);</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="comment">//greater</span></div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (a.tv_sec &gt; b.tv_sec)</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;        <span class="keywordflow">return</span> (1);</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;        <span class="comment">//less</span></div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (a.tv_nsec &lt; b.tv_nsec)</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;        <span class="keywordflow">return</span> (-1);</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;        <span class="comment">//greater</span></div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (a.tv_nsec &gt; b.tv_nsec)</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;        <span class="keywordflow">return</span> (1);</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;        <span class="comment">//equal</span></div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        <span class="keywordflow">return</span> (0);</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    }</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;<span class="preprocessor">#endif  </span></div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> prepare(sh_poll_s&amp; row);</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> fire(sh_poll_s&amp; a);</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> eventFired(<span class="keyword">const</span> pollfd&amp; a);</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> noDispatching(<span class="keyword">const</span> sh_poll_s&amp; a);</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;    <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> dispatchingFinished(<span class="keyword">const</span> sh_poll_s&amp; a);</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> callTimer(sh_timer_s&amp; a);</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    <span class="keywordtype">bool</span> nextHandle(sh_identifier_s &amp; handle);</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    </div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> getFDPollData(<span class="keyword">const</span> sh_pollHandle_t handle, sh_poll_s &amp; outPollData);</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;    </div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;    <a class="code" href="classam_1_1CAmSocketHandler.html">CAmSocketHandler</a>();</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;    ~<a class="code" href="classam_1_1CAmSocketHandler.html">CAmSocketHandler</a>();</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    </div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> listenToSignals(<span class="keyword">const</span> std::vector&lt;uint8_t&gt; &amp; listSignals);</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    </div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> addFDPoll(<span class="keyword">const</span> <span class="keywordtype">int</span> fd, <span class="keyword">const</span> <span class="keywordtype">short</span> event, std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)&gt; prepare, std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> pollfd pollfd, <span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)&gt; fired,</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;            std::function&lt;<span class="keywordtype">bool</span>(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)&gt; check, std::function&lt;<span class="keywordtype">bool</span>(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keywordtype">void</span>* userData)&gt; dispatch, <span class="keywordtype">void</span>* userData, sh_pollHandle_t&amp; handle);</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> addFDPoll(<span class="keyword">const</span> <span class="keywordtype">int</span> fd, <span class="keyword">const</span> <span class="keywordtype">short</span> event, <a class="code" href="classam_1_1IAmShPollPrepare.html">IAmShPollPrepare</a> *prepare, <a class="code" href="classam_1_1IAmShPollFired.html">IAmShPollFired</a> *fired, <a class="code" href="classam_1_1IAmShPollCheck.html">IAmShPollCheck</a> *check, <a class="code" href="classam_1_1IAmShPollDispatch.html">IAmShPollDispatch</a> *dispatch, <span class="keywordtype">void</span>* userData, sh_pollHandle_t&amp; handle);</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> removeFDPoll(<span class="keyword">const</span> sh_pollHandle_t handle);</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> updateEventFlags(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keyword">const</span> <span class="keywordtype">short</span> events);</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> addSignalHandler(std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> sh_pollHandle_t handle, <span class="keyword">const</span> signalfd_siginfo &amp; info, <span class="keywordtype">void</span>* userData)&gt; callback, sh_pollHandle_t&amp; handle, <span class="keywordtype">void</span> * userData);</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> removeSignalHandler(<span class="keyword">const</span> sh_pollHandle_t handle);</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> addTimer(<span class="keyword">const</span> timespec &amp; timeouts, <a class="code" href="classam_1_1IAmShTimerCallBack.html">IAmShTimerCallBack</a>* callback, sh_timerHandle_t&amp; handle, <span class="keywordtype">void</span> * userData,</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;#ifndef WITH_TIMERFD</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">bool</span> __attribute__((__unused__)) repeats = <span class="keyword">false</span></div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;#<span class="keywordflow">else</span></div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">bool</span> repeats = <span class="keyword">false</span></div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;#endif</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;            );</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> addTimer(<span class="keyword">const</span> timespec &amp; timeouts, std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> sh_timerHandle_t handle, <span class="keywordtype">void</span>* userData)&gt; callback, sh_timerHandle_t&amp; handle, <span class="keywordtype">void</span>* userData,</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;#ifndef WITH_TIMERFD</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">bool</span> __attribute__((__unused__)) repeats = <span class="keyword">false</span></div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;#<span class="keywordflow">else</span></div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">bool</span> repeats = <span class="keyword">false</span></div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;#endif</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;            );</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> removeTimer(<span class="keyword">const</span> sh_timerHandle_t handle);</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> restartTimer(<span class="keyword">const</span> sh_timerHandle_t handle);</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> updateTimer(<span class="keyword">const</span> sh_timerHandle_t handle, <span class="keyword">const</span> timespec &amp; timeouts);</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> stopTimer(<span class="keyword">const</span> sh_timerHandle_t handle);</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    <span class="keywordtype">void</span> start_listenting();</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;    <span class="keywordtype">void</span> stop_listening();</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    <span class="keywordtype">void</span> exit_mainloop();</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;    </div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;    <span class="keywordtype">bool</span> fatalErrorOccurred();</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;};</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;} <span class="comment">/* namespace am */</span></div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SOCKETHANDLER_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="namespaceam_html"><div class="ttname"><a href="namespaceam.html">am</a></div><div class="ttdoc">A Common-API wrapper class, which loads the common-api runtime and instantiates all necessary objects...</div><div class="ttdef"><b>Definition:</b> <a href="CAmCommandReceiver_8h_source.html#l00029">CAmCommandReceiver.h:29</a></div></div>
<div class="ttc" id="namespaceam_html_aa3dcb70029da317d661b6f422de1b4ce"><div class="ttname"><a href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am::am_Error_e</a></div><div class="ttdeci">am_Error_e</div><div class="ttdoc">the errors of the audiomanager. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00337">audiomanagertypes.h:337</a></div></div>
<div class="ttc" id="classam_1_1TAmShTimerCallBack_html_ae343cf7a089c8a19d3dedb244d7e2c62"><div class="ttname"><a href="classam_1_1TAmShTimerCallBack.html#ae343cf7a089c8a19d3dedb244d7e2c62">am::TAmShTimerCallBack::Call</a></div><div class="ttdeci">virtual void Call(sh_timerHandle_t handle, void *userData)</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00183">CAmSocketHandler.h:183</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollCheck_html"><div class="ttname"><a href="classam_1_1TAmShPollCheck.html">am::TAmShPollCheck</a></div><div class="ttdoc">template for a callback </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00129">CAmSocketHandler.h:129</a></div></div>
<div class="ttc" id="classam_1_1IAmShPollFired_html"><div class="ttname"><a href="classam_1_1IAmShPollFired.html">am::IAmShPollFired</a></div><div class="ttdoc">prototype for poll fired callback </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00067">CAmSocketHandler.h:67</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollFired_html"><div class="ttname"><a href="classam_1_1TAmShPollFired.html">am::TAmShPollFired</a></div><div class="ttdoc">make private, not public template for a callback </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00108">CAmSocketHandler.h:108</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollPrepare_html_a8556db372a475b5ab7425ae62b2b7519"><div class="ttname"><a href="classam_1_1TAmShPollPrepare.html#a8556db372a475b5ab7425ae62b2b7519">am::TAmShPollPrepare::Call</a></div><div class="ttdeci">virtual void Call(const sh_pollHandle_t handle, void *userData)</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00205">CAmSocketHandler.h:205</a></div></div>
<div class="ttc" id="classam_1_1CAmSocketHandler_html"><div class="ttname"><a href="classam_1_1CAmSocketHandler.html">am::CAmSocketHandler</a></div><div class="ttdoc">The am::CAmSocketHandler implements a mainloop for the AudioManager. </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00216">CAmSocketHandler.h:216</a></div></div>
<div class="ttc" id="namespaceam_html_af782e2735b1adf1e43a9d530cee340aa"><div class="ttname"><a href="namespaceam.html#af782e2735b1adf1e43a9d530cee340aa">am::sh_pollHandle_t</a></div><div class="ttdeci">uint16_t sh_pollHandle_t</div><div class="ttdoc">this is a handle for a filedescriptor to be used with the SocketHandler </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00051">CAmSocketHandler.h:51</a></div></div>
<div class="ttc" id="classam_1_1IAmShPollPrepare_html_a2aad9b7400f14d06d3f10dc7e4e32e2e"><div class="ttname"><a href="classam_1_1IAmShPollPrepare.html#a2aad9b7400f14d06d3f10dc7e4e32e2e">am::IAmShPollPrepare::~IAmShPollPrepare</a></div><div class="ttdeci">virtual ~IAmShPollPrepare()</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00061">CAmSocketHandler.h:61</a></div></div>
<div class="ttc" id="classam_1_1IAmShPollCheck_html"><div class="ttname"><a href="classam_1_1IAmShPollCheck.html">am::IAmShPollCheck</a></div><div class="ttdoc">prototype for poll check callback </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00077">CAmSocketHandler.h:77</a></div></div>
<div class="ttc" id="classam_1_1IAmShPollPrepare_html"><div class="ttname"><a href="classam_1_1IAmShPollPrepare.html">am::IAmShPollPrepare</a></div><div class="ttdoc">prototype for poll prepared callback </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00057">CAmSocketHandler.h:57</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollDispatch_html_a574535575f47cd509ce4fd7e11640d21"><div class="ttname"><a href="classam_1_1TAmShPollDispatch.html#a574535575f47cd509ce4fd7e11640d21">am::TAmShPollDispatch::TAmShPollDispatch</a></div><div class="ttdeci">TAmShPollDispatch(TClass *instance, bool(TClass::*function)(const sh_pollHandle_t handle, void *userData))</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00157">CAmSocketHandler.h:157</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollDispatch_html_a9e4052f0734cbf44d3e8714e30d4dc20"><div class="ttname"><a href="classam_1_1TAmShPollDispatch.html#a9e4052f0734cbf44d3e8714e30d4dc20">am::TAmShPollDispatch::Call</a></div><div class="ttdeci">virtual bool Call(const sh_pollHandle_t handle, void *userData)</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00162">CAmSocketHandler.h:162</a></div></div>
<div class="ttc" id="classam_1_1IAmShPollPrepare_html_adb146fb654748528b1878798c7f91bf7"><div class="ttname"><a href="classam_1_1IAmShPollPrepare.html#adb146fb654748528b1878798c7f91bf7">am::IAmShPollPrepare::Call</a></div><div class="ttdeci">virtual void Call(const sh_pollHandle_t handle, void *userData)=0</div></div>
<div class="ttc" id="classam_1_1TAmShPollPrepare_html"><div class="ttname"><a href="classam_1_1TAmShPollPrepare.html">am::TAmShPollPrepare</a></div><div class="ttdoc">template for a callback </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00193">CAmSocketHandler.h:193</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollDispatch_html"><div class="ttname"><a href="classam_1_1TAmShPollDispatch.html">am::TAmShPollDispatch</a></div><div class="ttdoc">template for a callback </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00150">CAmSocketHandler.h:150</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollFired_html_a66d19f639d38774c75edff51b8095a0d"><div class="ttname"><a href="classam_1_1TAmShPollFired.html#a66d19f639d38774c75edff51b8095a0d">am::TAmShPollFired::TAmShPollFired</a></div><div class="ttdeci">TAmShPollFired(TClass *instance, void(TClass::*function)(const pollfd pollfd, const sh_pollHandle_t handle, void *userData))</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00115">CAmSocketHandler.h:115</a></div></div>
<div class="ttc" id="classam_1_1IAmShPollDispatch_html"><div class="ttname"><a href="classam_1_1IAmShPollDispatch.html">am::IAmShPollDispatch</a></div><div class="ttdoc">prototype for dispatch callback </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00087">CAmSocketHandler.h:87</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollCheck_html_a89844ce383f71f62d3d48e07b8c854be"><div class="ttname"><a href="classam_1_1TAmShPollCheck.html#a89844ce383f71f62d3d48e07b8c854be">am::TAmShPollCheck::Call</a></div><div class="ttdeci">virtual bool Call(const sh_pollHandle_t handle, void *userData)</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00141">CAmSocketHandler.h:141</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollFired_html_ac6fc2c508e2d8105fad3734bcf286c95"><div class="ttname"><a href="classam_1_1TAmShPollFired.html#ac6fc2c508e2d8105fad3734bcf286c95">am::TAmShPollFired::Call</a></div><div class="ttdeci">virtual void Call(const pollfd pollfd, const sh_pollHandle_t handle, void *userData)</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00120">CAmSocketHandler.h:120</a></div></div>
<div class="ttc" id="audiomanagertypes_8h_html"><div class="ttname"><a href="audiomanagertypes_8h.html">audiomanagertypes.h</a></div><div class="ttdoc">Copyright (C) 2012 - 2014, BMW AG. </div></div>
<div class="ttc" id="classam_1_1TAmShTimerCallBack_html_a501f56ecacec5ab7a624de8f7601b374"><div class="ttname"><a href="classam_1_1TAmShTimerCallBack.html#a501f56ecacec5ab7a624de8f7601b374">am::TAmShTimerCallBack::TAmShTimerCallBack</a></div><div class="ttdeci">TAmShTimerCallBack(TClass *instance, void(TClass::*function)(sh_timerHandle_t handle, void *userData))</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00178">CAmSocketHandler.h:178</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollCheck_html_a851741de903173a0b1969d6444c508ee"><div class="ttname"><a href="classam_1_1TAmShPollCheck.html#a851741de903173a0b1969d6444c508ee">am::TAmShPollCheck::TAmShPollCheck</a></div><div class="ttdeci">TAmShPollCheck(TClass *instance, bool(TClass::*function)(const sh_pollHandle_t handle, void *userData))</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00136">CAmSocketHandler.h:136</a></div></div>
<div class="ttc" id="classam_1_1IAmShTimerCallBack_html"><div class="ttname"><a href="classam_1_1IAmShTimerCallBack.html">am::IAmShTimerCallBack</a></div><div class="ttdoc">prototype for the timer callback </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00097">CAmSocketHandler.h:97</a></div></div>
<div class="ttc" id="classam_1_1IAmShTimerCallBack_html_ab84921315e99da64a563b221d37e03b6"><div class="ttname"><a href="classam_1_1IAmShTimerCallBack.html#ab84921315e99da64a563b221d37e03b6">am::IAmShTimerCallBack::IAmShTimerCallBack</a></div><div class="ttdeci">IAmShTimerCallBack()</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00100">CAmSocketHandler.h:100</a></div></div>
<div class="ttc" id="CAmSocketHandler_8h_html_a67f1edc0014c2569b2a1e7e423aaa825"><div class="ttname"><a href="CAmSocketHandler_8h.html#a67f1edc0014c2569b2a1e7e423aaa825">MAX_NS</a></div><div class="ttdeci">#define MAX_NS</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00047">CAmSocketHandler.h:47</a></div></div>
<div class="ttc" id="classam_1_1TAmShPollPrepare_html_ae7d9cffc73ca8704eaa4e5807f223e3c"><div class="ttname"><a href="classam_1_1TAmShPollPrepare.html#ae7d9cffc73ca8704eaa4e5807f223e3c">am::TAmShPollPrepare::TAmShPollPrepare</a></div><div class="ttdeci">TAmShPollPrepare(TClass *instance, void(TClass::*function)(const sh_pollHandle_t handle, void *userData))</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00200">CAmSocketHandler.h:200</a></div></div>
<div class="ttc" id="classam_1_1IAmShTimerCallBack_html_acac8aaa1edaca170e6266c2aec18d7f1"><div class="ttname"><a href="classam_1_1IAmShTimerCallBack.html#acac8aaa1edaca170e6266c2aec18d7f1">am::IAmShTimerCallBack::~IAmShTimerCallBack</a></div><div class="ttdeci">virtual ~IAmShTimerCallBack()</div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00102">CAmSocketHandler.h:102</a></div></div>
<div class="ttc" id="namespaceam_html_a47991fcc6785a5c97037b611e7f7e1a8"><div class="ttname"><a href="namespaceam.html#a47991fcc6785a5c97037b611e7f7e1a8">am::sh_timerHandle_t</a></div><div class="ttdeci">sh_pollHandle_t sh_timerHandle_t</div><div class="ttdoc">this is a handle for a timer to be used with the SocketHandler </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00052">CAmSocketHandler.h:52</a></div></div>
<div class="ttc" id="classam_1_1TAmShTimerCallBack_html"><div class="ttname"><a href="classam_1_1TAmShTimerCallBack.html">am::TAmShTimerCallBack</a></div><div class="ttdoc">template to create the functor for a class </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00171">CAmSocketHandler.h:171</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_789817cd9c9d85c1fb6b4cda55b71a5f.html">AudioManagerUtilities</a></li><li class="navelem"><a class="el" href="dir_6fd9bed21473e96783399bf9493172af.html">include</a></li><li class="navelem"><a class="el" href="CAmSocketHandler_8h.html">CAmSocketHandler.h</a></li>
    <li class="footer">Generated on Fri Feb 9 2018 14:50:29 for AudioManager by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>