summaryrefslogtreecommitdiff
path: root/docs/CAmRouter_8cpp_source.html
blob: fad2e66d8eb74169b5c3d9b9e25cc8be192459d3 (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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<!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: AudioManagerCore/src/CAmRouter.cpp 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('CAmRouter_8cpp_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">CAmRouter.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="CAmRouter_8cpp.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="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmRouter_8h.html">CAmRouter.h</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="IAmDatabaseHandler_8h.html">IAmDatabaseHandler.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmControlSender_8h.html">CAmControlSender.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmDltWrapper_8h.html">CAmDltWrapper.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="keyword">namespace </span><a class="code" href="namespaceam.html">am</a></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;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespaceam.html#adfd5dc4939df0960dc2d1651691374d4">   37</a></span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> X&gt; <span class="keywordtype">void</span> <a class="code" href="namespaceam.html#adfd5dc4939df0960dc2d1651691374d4">getMergeConnectionFormats</a>(<span class="keyword">const</span> X * element, <span class="keyword">const</span> <a class="code" href="namespaceam.html#a114262d77aae4ed1d2daa50a36155d3e">am_CustomConnectionFormat_t</a> connectionFormat,</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;            <span class="keyword">const</span> std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; listConnectionFormats, std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; outListMergeConnectionFormats)</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; listRestrictedConnectionFormats;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        <a class="code" href="classam_1_1CAmRouter.html#abfe25345318af7e96d13c08acb0d79d5">CAmRouter::getRestrictedOutputFormats</a>(element-&gt;convertionMatrix, element-&gt;listSourceFormats, element-&gt;listSinkFormats, connectionFormat,</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;                listRestrictedConnectionFormats);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        std::sort(listRestrictedConnectionFormats.begin(), listRestrictedConnectionFormats.end()); <span class="comment">//todo: this might be not needed if we use strictly sorted input</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        std::insert_iterator&lt;std::vector&lt;am_CustomConnectionFormat_t&gt; &gt; inserter(outListMergeConnectionFormats, outListMergeConnectionFormats.begin());</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        set_intersection(listConnectionFormats.begin(), listConnectionFormats.end(), listRestrictedConnectionFormats.begin(),</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;                listRestrictedConnectionFormats.end(), inserter);</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    }</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a8473851712e2b6f6f7a3ee1b3a5b6967">   49</a></span>&#160;    <a class="code" href="classam_1_1CAmRouter.html#a8473851712e2b6f6f7a3ee1b3a5b6967">CAmRouter::CAmRouter</a>(<a class="code" href="classam_1_1IAmDatabaseHandler.html">IAmDatabaseHandler</a>* iDatabaseHandler, <a class="code" href="classam_1_1CAmControlSender.html">CAmControlSender</a>* iSender) :</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;                    <a class="code" href="classam_1_1CAmDatabaseHandlerMap.html">CAmDatabaseHandlerMap</a>::AmDatabaseObserverCallbacks(),</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;                    mpDatabaseHandler(iDatabaseHandler), <span class="comment">//</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;                    mpControlSender(iSender),</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;                    mUpdateGraphNodesAction(true),</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;                    mMaxAllowedCycles(<a class="code" href="CAmRouter_8h.html#a1aacfba78a3f6aa3cb6514bb8b1458e3">MAX_ALLOWED_DOMAIN_CYCLES</a>),</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;                    mMaxPathCount(<a class="code" href="CAmRouter_8h.html#a9d70e10c712a8a908b5dc0d253955c25">MAX_ROUTING_PATHS</a>),</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;                    mRoutingGraph(),</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;                    mNodeListSources(),</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;                    mNodeListSinks(),</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;                    mNodeListGateways(),</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;                    mNodeListConverters()</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        assert(mpDatabaseHandler);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        assert(mpControlSender);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <a class="code" href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#a24c3785630219a10ce19d7cda7a540b8">dboNewSink</a> = [&amp;](<span class="keyword">const</span> <a class="code" href="structam_1_1am__Sink__s.html">am_Sink_s</a>&amp; sink)</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        {</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;            mUpdateGraphNodesAction = <span class="keyword">true</span>;</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;        <a class="code" href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#a406c7e8f23d2845a657e2f7c2cbe41cc">dboNewSource</a> = [&amp;](<span class="keyword">const</span> <a class="code" href="structam_1_1am__Source__s.html">am_Source_s</a>&amp; source)</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        {</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;            mUpdateGraphNodesAction=<span class="keyword">true</span>;</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;        <a class="code" href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#a3f333ffb10e0e1b45f009dbc941d604e">dboNewGateway</a> = [&amp;](<span class="keyword">const</span> <a class="code" href="structam_1_1am__Gateway__s.html">am_Gateway_s</a>&amp; gateway)</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        {</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;            mUpdateGraphNodesAction=<span class="keyword">true</span>;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        };</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        <a class="code" href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#a995677c2992ea66729cf26ebed083c01">dboNewConverter</a> = [&amp;](<span class="keyword">const</span> <a class="code" href="structam_1_1am__Converter__s.html">am_Converter_s</a>&amp; coverter)</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;            mUpdateGraphNodesAction=<span class="keyword">true</span>;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        };</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        <a class="code" href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#aa495d5e3016f968a8937356fa4baca2e">dboRemovedSink</a> = [&amp;](<span class="keyword">const</span> <a class="code" href="namespaceam.html#aac2b901ff83ee381fbe99913753e2416">am_sinkID_t</a> sinkID, <span class="keyword">const</span> <span class="keywordtype">bool</span> visible)</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;            mUpdateGraphNodesAction=<span class="keyword">true</span>;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        };</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        <a class="code" href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#aebfece67d798cfaa6f3ec9744c93e358">dboRemovedSource</a> = [&amp;](<span class="keyword">const</span> <a class="code" href="namespaceam.html#a2711516b1392ea02a7ed25fcd540a16a">am_sourceID_t</a> sourceID, <span class="keyword">const</span> <span class="keywordtype">bool</span> visible)</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        {</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;            mUpdateGraphNodesAction=<span class="keyword">true</span>;</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;        <a class="code" href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#ac16f82bc2e6e2075d33010e8c54eb865">dboRemoveGateway</a> = [&amp;](<span class="keyword">const</span> <a class="code" href="namespaceam.html#af671cec58d6713a0c1e4eaa9c89613d5">am_gatewayID_t</a> gatewayID)</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        {</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;            mUpdateGraphNodesAction=<span class="keyword">true</span>;</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;        <a class="code" href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#a73e48865df8f26a5b8ac39cd71e3bd7e">dboRemoveConverter</a> = [&amp;](<span class="keyword">const</span> <a class="code" href="namespaceam.html#a21f8ea45717692cd82c42c222a6ee3c8">am_converterID_t</a> converterID)</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        {</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;            mUpdateGraphNodesAction=<span class="keyword">true</span>;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        };</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    }</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"><a class="line" href="classam_1_1CAmRouter.html#a1759da9a0ac843aa1e9e9a8ef5a5315a">   99</a></span>&#160;    <a class="code" href="classam_1_1CAmRouter.html#a1759da9a0ac843aa1e9e9a8ef5a5315a">CAmRouter::~CAmRouter</a>()</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    {</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    }</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#ae76981f37d91bcd2da721c3bf141e415">  111</a></span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> <a class="code" href="classam_1_1CAmRouter.html#ae76981f37d91bcd2da721c3bf141e415">CAmRouter::getRoute</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> onlyfree, <span class="keyword">const</span> <a class="code" href="namespaceam.html#a2711516b1392ea02a7ed25fcd540a16a">am_sourceID_t</a> sourceID, <span class="keyword">const</span> <a class="code" href="namespaceam.html#aac2b901ff83ee381fbe99913753e2416">am_sinkID_t</a> sinkID, std::vector&lt;am_Route_s&gt; &amp; returnList)</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    {</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <span class="keywordflow">if</span> (mUpdateGraphNodesAction)</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        {</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;            <a class="code" href="classam_1_1CAmRouter.html#a727bfb8b7c52e4c732c20609708f4966">load</a>();</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;            mUpdateGraphNodesAction = <span class="keyword">false</span>;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        }</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classam_1_1CAmRouter.html#aad34e149db42d6760cccaa591b76d38e">getRouteFromLoadedNodes</a>(onlyfree, sourceID, sinkID, returnList);</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">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a7b1f77414249399246db15673dea46ec">  121</a></span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> <a class="code" href="classam_1_1CAmRouter.html#ae76981f37d91bcd2da721c3bf141e415">CAmRouter::getRoute</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> onlyfree, <span class="keyword">const</span> <a class="code" href="structam_1_1am__Source__s.html">am_Source_s</a> &amp; aSource, <span class="keyword">const</span> <a class="code" href="structam_1_1am__Sink__s.html">am_Sink_s</a> &amp; aSink, std::vector&lt;am_Route_s&gt; &amp; listRoutes)</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    {</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classam_1_1CAmRouter.html#ae76981f37d91bcd2da721c3bf141e415">getRoute</a>(onlyfree, aSource.<a class="code" href="structam_1_1am__Source__s.html#ad224888802fabebefe6ff587412da9fd">sourceID</a>, aSink.<a class="code" href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">sinkID</a>, listRoutes);</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="l00126"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#aad34e149db42d6760cccaa591b76d38e">  126</a></span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> <a class="code" href="classam_1_1CAmRouter.html#aad34e149db42d6760cccaa591b76d38e">CAmRouter::getRouteFromLoadedNodes</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> onlyfree, <span class="keyword">const</span> <a class="code" href="namespaceam.html#a2711516b1392ea02a7ed25fcd540a16a">am_sourceID_t</a> sourceID, <span class="keyword">const</span> <a class="code" href="namespaceam.html#aac2b901ff83ee381fbe99913753e2416">am_sinkID_t</a> sinkID,</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;            std::vector&lt;am_Route_s&gt; &amp; returnList)</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    {</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        returnList.clear();</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;        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* pRootSource = <a class="code" href="classam_1_1CAmRouter.html#a5a3dd752289cfacdc8c9599b69d36871">sourceNodeWithID</a>(sourceID);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* pRootSink = <a class="code" href="classam_1_1CAmRouter.html#a388cee6f4d96f0c3d5b9b844209e3304">sinkNodeWithID</a>(sinkID);</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="keywordflow">if</span> (!pRootSource || !pRootSink)</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea0f1d576f3d17aa86498a61ec9d8a6453">E_NON_EXISTENT</a>;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="comment">//try to find paths without cycles</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> error = <a class="code" href="classam_1_1CAmRouter.html#aec93bdf7c20934bedf1dcd3cbd6b162e">getFirstNShortestPaths</a>(onlyfree, 0, mMaxPathCount, *pRootSource, *pRootSink, returnList);</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;        <span class="comment">//if no paths have been found, we start a second search with cycles.</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        <span class="keywordflow">if</span> (!returnList.size() &amp;&amp; mMaxAllowedCycles &gt; 0)</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;            error = <a class="code" href="classam_1_1CAmRouter.html#aec93bdf7c20934bedf1dcd3cbd6b162e">getFirstNShortestPaths</a>(onlyfree, mMaxAllowedCycles, mMaxPathCount, *pRootSource, *pRootSink, returnList);</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;        <span class="comment">/* For shortest path use the following call:</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="comment">         *</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="comment">         *   error = getShortestPath(*pRootSource, *pRootSink, listRoutes);</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="comment">         */</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        <span class="keywordflow">return</span> error;</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;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a31c7419b7d0673e8355e69d109b33745">  153</a></span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> <a class="code" href="classam_1_1CAmRouter.html#aad34e149db42d6760cccaa591b76d38e">CAmRouter::getRouteFromLoadedNodes</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> onlyfree, <span class="keyword">const</span> <a class="code" href="structam_1_1am__Source__s.html">am_Source_s</a> &amp; aSource, <span class="keyword">const</span> <a class="code" href="structam_1_1am__Sink__s.html">am_Sink_s</a> &amp; aSink,</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;            std::vector&lt;am_Route_s&gt; &amp; listRoutes)</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="keywordflow">return</span> <a class="code" href="classam_1_1CAmRouter.html#aad34e149db42d6760cccaa591b76d38e">getRouteFromLoadedNodes</a>(onlyfree, aSource.<a class="code" href="structam_1_1am__Source__s.html#ad224888802fabebefe6ff587412da9fd">sourceID</a>, aSink.<a class="code" href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">sinkID</a>, listRoutes);</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    }</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a727bfb8b7c52e4c732c20609708f4966">  159</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classam_1_1CAmRouter.html#a727bfb8b7c52e4c732c20609708f4966">CAmRouter::load</a>()</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;        <a class="code" href="classam_1_1CAmRouter.html#ab3d6369fed84e8dd2827b76a302ceb86">clear</a>();</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> nodeDataSrc;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        nodeDataSrc.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> = CAmNodeDataType::SOURCE;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        mpDatabaseHandler-&gt;<a class="code" href="classam_1_1IAmDatabaseHandler.html#a826dc83fc99f4ef9bc96d58678f6f062">enumerateSources</a>([&amp;](<span class="keyword">const</span> <a class="code" href="structam_1_1am__Source__s.html">am_Source_s</a> &amp; obj)</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;            nodeDataSrc.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a> = (<a class="code" href="structam_1_1am__Source__s.html">am_Source_s</a>*)&amp;obj;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;            <span class="keyword">auto</span> node = &amp;mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#aac6081d0d2bae9c619b1e7f888f103d4">addNode</a>(nodeDataSrc);</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;            mNodeListSources[nodeDataSrc.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>-&gt;<a class="code" href="structam_1_1am__Source__s.html#a57854adc822ed77c6443ec2c745820af">domainID</a>].push_back(node);</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        });</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> nodeDataSink;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        nodeDataSink.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> = CAmNodeDataType::SINK;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        mpDatabaseHandler-&gt;<a class="code" href="classam_1_1IAmDatabaseHandler.html#a37afd4b9ab5389f375cdca1d5e2d4d4c">enumerateSinks</a>([&amp;](<span class="keyword">const</span> <a class="code" href="structam_1_1am__Sink__s.html">am_Sink_s</a> &amp; obj)</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        {</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;            nodeDataSink.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a> = (<a class="code" href="structam_1_1am__Sink__s.html">am_Sink_s</a>*)&amp;obj;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;            <span class="keyword">auto</span> node = &amp;mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#aac6081d0d2bae9c619b1e7f888f103d4">addNode</a>(nodeDataSink);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;            mNodeListSinks[nodeDataSink.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a8505cd0b29334007bd6dd5555f482cce">domainID</a>].push_back(node);</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        });</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> nodeDataGateway;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;        nodeDataGateway.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> = CAmNodeDataType::GATEWAY;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        mpDatabaseHandler-&gt;<a class="code" href="classam_1_1IAmDatabaseHandler.html#ae3e99505973906e6a11943e6a2d325bc">enumerateGateways</a>([&amp;](<span class="keyword">const</span> <a class="code" href="structam_1_1am__Gateway__s.html">am_Gateway_s</a> &amp; obj)</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;            nodeDataGateway.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a3e64f452e79f69f04afd2fc19d1db1f1">gateway</a> = (<a class="code" href="structam_1_1am__Gateway__s.html">am_Gateway_s</a>*)&amp;obj;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;            <span class="keyword">auto</span> node = &amp;mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#aac6081d0d2bae9c619b1e7f888f103d4">addNode</a>(nodeDataGateway);</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;            mNodeListGateways[nodeDataGateway.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a3e64f452e79f69f04afd2fc19d1db1f1">gateway</a>-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a60cdd73682f723692a3019edc6fdacf5">controlDomainID</a>].push_back(node);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        });</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> nodeDataConverter;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        nodeDataConverter.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> = CAmNodeDataType::CONVERTER;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        mpDatabaseHandler-&gt;<a class="code" href="classam_1_1IAmDatabaseHandler.html#a457eaf048c0f6da8b54607220d16ef44">enumerateConverters</a>([&amp;](<span class="keyword">const</span> <a class="code" href="structam_1_1am__Converter__s.html">am_Converter_s</a> &amp; obj)</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        {</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;            nodeDataConverter.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a8fef46ce6e8adad5904eb863820c438e">converter</a> = (<a class="code" href="structam_1_1am__Converter__s.html">am_Converter_s</a>*)&amp;obj;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;            <span class="keyword">auto</span> node = &amp;mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#aac6081d0d2bae9c619b1e7f888f103d4">addNode</a>(nodeDataConverter);</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;            mNodeListConverters[nodeDataConverter.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a8fef46ce6e8adad5904eb863820c438e">converter</a>-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a129050d36e5f1710bed87e4490e7eb34">domainID</a>].push_back(node);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        });</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;        constructConverterConnections();</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        constructGatewayConnections();</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        constructSourceSinkConnections();</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="preprocessor">#ifdef TRACE_GRAPH</span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#a42029ecef5cb964679df6e36ad23f163">trace</a>([&amp;](<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; node, <span class="keyword">const</span> std::vector&lt;<a class="code" href="classam_1_1CAmVertex.html">CAmVertex&lt;am_RoutingNodeData_s,uint16_t&gt;</a>*&gt; &amp; list)</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;                {</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;                    std::cout &lt;&lt; <span class="stringliteral">&quot;Node &quot;</span> &lt;&lt; node.<a class="code" href="classam_1_1CAmNode.html#acfc2a38f7576b6f290ba861a94158eef">getIndex</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span>;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;                    ((<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp;)node).getData().trace();</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;                    std::cout &lt;&lt; <span class="stringliteral">&quot;--&gt;[&quot;</span>;</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;                    <span class="keywordtype">int</span> count = 0;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;                    std::for_each(list.begin(), list.end(), [&amp;](<span class="keyword">const</span> <a class="code" href="classam_1_1CAmVertex.html">CAmVertex&lt;am_RoutingNodeData_s,uint16_t&gt;</a>* refVertex)</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;                            {</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;                                <a class="code" href="classam_1_1CAmNode.html">am::CAmNode&lt;am::am_RoutingNodeData_s&gt;</a>* data = refVertex-&gt;getNode();</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;                                <span class="keywordflow">if</span>(count&gt;0)</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;                                std::cout &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                                std::cout &lt;&lt; <span class="stringliteral">&quot;Node &quot;</span> &lt;&lt; data-&gt;<a class="code" href="classam_1_1CAmNode.html#acfc2a38f7576b6f290ba861a94158eef">getIndex</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span>;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;                                data-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().trace();</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                                count++;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                            });</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                    std::cout &lt;&lt; <span class="stringliteral">&quot;]&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                });</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    }</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#ab3d6369fed84e8dd2827b76a302ceb86">  225</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classam_1_1CAmRouter.html#ab3d6369fed84e8dd2827b76a302ceb86">CAmRouter::clear</a>()</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    {</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#af25961b4c8868eb20fefd1315dc31e10">clear</a>();</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        mNodeListSources.clear();</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        mNodeListSinks.clear();</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        mNodeListGateways.clear();</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        mNodeListConverters.clear();</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;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a388cee6f4d96f0c3d5b9b844209e3304">  234</a></span>&#160;    <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* <a class="code" href="classam_1_1CAmRouter.html#a388cee6f4d96f0c3d5b9b844209e3304">CAmRouter::sinkNodeWithID</a>(<span class="keyword">const</span> <a class="code" href="namespaceam.html#aac2b901ff83ee381fbe99913753e2416">am_sinkID_t</a> sinkID)</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    {</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* result = NULL;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = mNodeListSinks.begin(); it != mNodeListSinks.end(); it++)</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        {</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;            result = <a class="code" href="classam_1_1CAmRouter.html#a388cee6f4d96f0c3d5b9b844209e3304">sinkNodeWithID</a>(sinkID, it-&gt;first);</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;            <span class="keywordflow">if</span> (result)</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        }</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    }</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a18da70b679791808f412cab8daed9b38">  246</a></span>&#160;    <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* <a class="code" href="classam_1_1CAmRouter.html#a388cee6f4d96f0c3d5b9b844209e3304">CAmRouter::sinkNodeWithID</a>(<span class="keyword">const</span> <a class="code" href="namespaceam.html#aac2b901ff83ee381fbe99913753e2416">am_sinkID_t</a> sinkID, <span class="keyword">const</span> <a class="code" href="namespaceam.html#a58a230b5da10699a7ce1b1f2a1c550e6">am_domainID_t</a> domainID)</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    {</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* result = NULL;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        std::vector&lt;CAmRoutingNode*&gt; &amp; value = mNodeListSinks[domainID];</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="keyword">auto</span> iter = std::find_if(value.begin(), value.end(), [sinkID](<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* node)</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;            <span class="keywordflow">return</span> node-&gt;getData().data.sink-&gt;sinkID==sinkID;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        });</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        <span class="keywordflow">if</span> (iter != value.end())</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;            result = *iter;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    }</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a5a3dd752289cfacdc8c9599b69d36871">  259</a></span>&#160;    <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* <a class="code" href="classam_1_1CAmRouter.html#a5a3dd752289cfacdc8c9599b69d36871">CAmRouter::sourceNodeWithID</a>(<span class="keyword">const</span> <a class="code" href="namespaceam.html#a2711516b1392ea02a7ed25fcd540a16a">am_sourceID_t</a> sourceID)</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;        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* result = NULL;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = mNodeListSources.begin(); it != mNodeListSources.end(); it++)</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;        {</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;            result = <a class="code" href="classam_1_1CAmRouter.html#a5a3dd752289cfacdc8c9599b69d36871">sourceNodeWithID</a>(sourceID, it-&gt;first);</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;            <span class="keywordflow">if</span> (result)</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;        }</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    }</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"><a class="line" href="classam_1_1CAmRouter.html#af7062329eb7c34d2e556979109b19a97">  271</a></span>&#160;    <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* <a class="code" href="classam_1_1CAmRouter.html#a5a3dd752289cfacdc8c9599b69d36871">CAmRouter::sourceNodeWithID</a>(<span class="keyword">const</span> <a class="code" href="namespaceam.html#a2711516b1392ea02a7ed25fcd540a16a">am_sourceID_t</a> sourceID, <span class="keyword">const</span> <a class="code" href="namespaceam.html#a58a230b5da10699a7ce1b1f2a1c550e6">am_domainID_t</a> domainID)</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;        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* result = NULL;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;        std::vector&lt;CAmRoutingNode*&gt; &amp; value = mNodeListSources[domainID];</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        <span class="keyword">auto</span> iter = std::find_if(value.begin(), value.end(), [sourceID](<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* node)</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;        {</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;            <span class="keywordflow">return</span> node-&gt;getData().data.source-&gt;sourceID==sourceID;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;        });</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;        <span class="keywordflow">if</span> (iter != value.end())</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;            result = *iter;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    }</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a928bdf737d9786f2896176122e3b89c2">  284</a></span>&#160;    <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* <a class="code" href="classam_1_1CAmRouter.html#a928bdf737d9786f2896176122e3b89c2">CAmRouter::converterNodeWithSinkID</a>(<span class="keyword">const</span> <a class="code" href="namespaceam.html#aac2b901ff83ee381fbe99913753e2416">am_sinkID_t</a> sinkID, <span class="keyword">const</span> <a class="code" href="namespaceam.html#a58a230b5da10699a7ce1b1f2a1c550e6">am_domainID_t</a> domainID)</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    {</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* result = NULL;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;        std::vector&lt;CAmRoutingNode*&gt; &amp; value = mNodeListConverters[domainID];</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;        <span class="keyword">auto</span> iter = std::find_if(value.begin(), value.end(), [sinkID](<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* node)</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;            <span class="keywordflow">return</span> node-&gt;getData().data.converter-&gt;sinkID==sinkID;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        });</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        <span class="keywordflow">if</span> (iter != value.end())</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;            result = *iter;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    }</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a3a49c89f72a1ed92455b9f976c153970">  297</a></span>&#160;    <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* <a class="code" href="classam_1_1CAmRouter.html#a3a49c89f72a1ed92455b9f976c153970">CAmRouter::gatewayNodeWithSinkID</a>(<span class="keyword">const</span> <a class="code" href="namespaceam.html#aac2b901ff83ee381fbe99913753e2416">am_sinkID_t</a> sinkID)</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    {</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = mNodeListGateways.begin(); it != mNodeListGateways.end(); it++)</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;        {</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;            std::vector&lt;CAmRoutingNode*&gt; &amp; value = it-&gt;second;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;            <span class="keyword">auto</span> iter = std::find_if(value.begin(), value.end(), [sinkID](<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* node)</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;            {</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;                <span class="keywordflow">return</span> node-&gt;getData().data.gateway-&gt;sinkID==sinkID;</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;            <span class="keywordflow">if</span> (iter != value.end())</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;                <span class="keywordflow">return</span> *iter;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;        }</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    }</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <span class="keywordtype">void</span> CAmRouter::constructSourceSinkConnections()</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    {</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; intersection;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> itSrc = mNodeListSources.begin(); itSrc != mNodeListSources.end(); itSrc++)</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        {</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = itSrc-&gt;second.begin(); it != itSrc-&gt;second.end(); it++)</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;            {</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;                <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* srcNode = *it;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;                <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; srcNodeData = srcNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;                <a class="code" href="structam_1_1am__Source__s.html">am_Source_s</a> * source = srcNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;                <span class="keywordflow">for</span> (<span class="keyword">auto</span> itSink = mNodeListSinks[itSrc-&gt;first].begin(); itSink != mNodeListSinks[itSrc-&gt;first].end(); itSink++)</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;                    <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* sinkNode = *itSink;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;                    <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; sinkNodeData = sinkNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;                    <a class="code" href="structam_1_1am__Sink__s.html">am_Sink_s</a> * sink = sinkNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;                    intersection.clear();</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;                    <span class="comment">//Check whether the hidden sink formats match the source formats...</span></div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;                    <a class="code" href="classam_1_1CAmRouter.html#adbf59722ed983e95db461ab4740c0a4b">listPossibleConnectionFormats</a>(source-&gt;<a class="code" href="structam_1_1am__Source__s.html#a161ce36395faa9faea7db1699c62c700">listConnectionFormats</a>, sink-&gt;<a class="code" href="structam_1_1am__Sink__s.html#af5692eedaf4886be06f92293cd474d3e">listConnectionFormats</a>, intersection);</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;                    <span class="keywordflow">if</span> (intersection.size() &gt; 0) <span class="comment">//OK  match source -&gt; sink</span></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;                        mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#a54afa84a6cedb9558108352b551d4cf3">connectNodes</a>(*srcNode, *sinkNode, <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>, 1);</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;                }</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;        }</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;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    <span class="keywordtype">void</span> CAmRouter::constructGatewayConnections()</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    {</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; sourceFormats, sinkFormats;</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter = mNodeListGateways.begin(); iter != mNodeListGateways.end(); iter++)</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;        {</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = iter-&gt;second.begin(); it != iter-&gt;second.end(); it++)</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;                <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* gatewayNode = *it;</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;                <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; gatewayNodeData = gatewayNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;                <a class="code" href="structam_1_1am__Gateway__s.html">am_Gateway_s</a> * gateway = gatewayNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a3e64f452e79f69f04afd2fc19d1db1f1">gateway</a>;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;                <span class="comment">//Get only gateways with end point in current source domain</span></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="comment">//Get the sink connected to the gateway...</span></div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;                <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> *gatewaySinkNode = this-&gt;<a class="code" href="classam_1_1CAmRouter.html#a388cee6f4d96f0c3d5b9b844209e3304">sinkNodeWithID</a>(gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a63f43a5cb279bea36e12617932d06c50">sinkID</a>, gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#af64240ebdea81e5a609953a207b523cc">domainSinkID</a>);</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;                <span class="keywordflow">if</span> (gatewaySinkNode)</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;                {</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;                    <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; gatewaySinkData = gatewaySinkNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;                    <span class="comment">//Check whether the hidden sink formats match the source formats...</span></div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;                    sourceFormats.clear();</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;                    sinkFormats.clear();</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;                    <span class="keywordflow">if</span> (<a class="code" href="classam_1_1CAmRouter.html#acbb23f31eb24cdc6c7afd97ee893e423">getAllowedFormatsFromConvMatrix</a>(gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a299c727ffb962ed1f987fbac889ee06e">convertionMatrix</a>, gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a54f4f9c798677a4301477841afbfde1c">listSourceFormats</a>, gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#afea929a5d18e3a0c4a00575b7596cfb3">listSinkFormats</a>, sourceFormats,</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;                            sinkFormats))</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;                        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> *gatewaySourceNode = this-&gt;<a class="code" href="classam_1_1CAmRouter.html#a5a3dd752289cfacdc8c9599b69d36871">sourceNodeWithID</a>(gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a2e7f50bbf9f11eb7eec7d585dbbd0159">sourceID</a>, gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a7a7eddd6f1051cbda5e1c37b4df6ea15">domainSourceID</a>);</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;                        <span class="keywordflow">if</span> (gatewaySourceNode)</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;                        {</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;                            <span class="comment">//Connections hidden_sink-&gt;gateway-&gt;hidden_source</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;                            mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#a54afa84a6cedb9558108352b551d4cf3">connectNodes</a>(*gatewaySinkNode, *gatewayNode, <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>, 1);</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;                            mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#a54afa84a6cedb9558108352b551d4cf3">connectNodes</a>(*gatewayNode, *gatewaySourceNode, <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>, 1);</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;                        }</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;                }</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="l00374"></a><span class="lineno">  374</span>&#160;    }</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    <span class="keywordtype">void</span> CAmRouter::constructConverterConnections()</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    {</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; sourceFormats, sinkFormats;</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter = mNodeListConverters.begin(); iter != mNodeListConverters.end(); iter++)</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="keywordflow">for</span> (<span class="keyword">auto</span> it = iter-&gt;second.begin(); it != iter-&gt;second.end(); it++)</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;            {</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;                <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* converterNode = *it;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;                <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; converterNodeData = converterNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;                <a class="code" href="structam_1_1am__Converter__s.html">am_Converter_s</a> * converter = converterNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a8fef46ce6e8adad5904eb863820c438e">converter</a>;</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;                <span class="comment">//Get only converters with end point in current source domain</span></div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;                <span class="comment">//Get the sink connected to the converter...</span></div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;                <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> *converterSinkNode = this-&gt;<a class="code" href="classam_1_1CAmRouter.html#a388cee6f4d96f0c3d5b9b844209e3304">sinkNodeWithID</a>(converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#aee7bf298d5962d654d609b8c881d803a">sinkID</a>, converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a129050d36e5f1710bed87e4490e7eb34">domainID</a>);</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;                <span class="keywordflow">if</span> (converterSinkNode)</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                {</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;                    <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; converterSinkData = converterSinkNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;                    <span class="comment">//Check whether the hidden sink formats match the source formats...</span></div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;                    sourceFormats.clear();</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;                    sinkFormats.clear();</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;                    <span class="keywordflow">if</span> (<a class="code" href="classam_1_1CAmRouter.html#acbb23f31eb24cdc6c7afd97ee893e423">getAllowedFormatsFromConvMatrix</a>(converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#ab34ebf10f1a75f304f931788ffc1691d">convertionMatrix</a>, converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a1bcc326c4059a8edf73665f618bf6c75">listSourceFormats</a>, converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a15cc5a4dd74ae27aa51f18a89ce01a1a">listSinkFormats</a>, sourceFormats,</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;                            sinkFormats))</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                    {</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> *converterSourceNode = this-&gt;<a class="code" href="classam_1_1CAmRouter.html#a5a3dd752289cfacdc8c9599b69d36871">sourceNodeWithID</a>(converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a7e66c234376aa4fce173cfdc3aebff82">sourceID</a>, converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a129050d36e5f1710bed87e4490e7eb34">domainID</a>);</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;                        <span class="keywordflow">if</span> (converterSourceNode)</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;                        {</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                            <span class="comment">//Connections hidden_sink-&gt;converter-&gt;hidden_source</span></div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                            mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#a54afa84a6cedb9558108352b551d4cf3">connectNodes</a>(*converterSinkNode, *converterNode, <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>, 1);</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;                            mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#a54afa84a6cedb9558108352b551d4cf3">connectNodes</a>(*converterNode, *converterSourceNode, <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>, 1);</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                        }</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                    }</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;                }</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;            }</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        }</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    }</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <span class="keywordtype">void</span> CAmRouter::getVerticesForSource(<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; node, <a class="code" href="namespaceam.html#abcde4f3c2d4e51bca986488b88de323d">CAmRoutingListVertices</a> &amp; list)</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;    {</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; srcNodeData = ((<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>*) &amp;node)-&gt;getData();</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; intersection;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;        <a class="code" href="structam_1_1am__Source__s.html">am_Source_s</a> * source = srcNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;        std::vector&lt;CAmRoutingNode*&gt; &amp; sinks = mNodeListSinks[source-&gt;<a class="code" href="structam_1_1am__Source__s.html#a57854adc822ed77c6443ec2c745820af">domainID</a>];</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> itSink = sinks.begin(); itSink != sinks.end(); itSink++)</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;        {</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;            <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>* sinkNode = *itSink;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;            <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; sinkNodeData = sinkNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;            <a class="code" href="structam_1_1am__Sink__s.html">am_Sink_s</a> * sink = sinkNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;            intersection.clear();</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;            <span class="comment">//Check whether the hidden sink formats match the source formats...</span></div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;            <a class="code" href="classam_1_1CAmRouter.html#adbf59722ed983e95db461ab4740c0a4b">listPossibleConnectionFormats</a>(source-&gt;<a class="code" href="structam_1_1am__Source__s.html#a161ce36395faa9faea7db1699c62c700">listConnectionFormats</a>, sink-&gt;<a class="code" href="structam_1_1am__Sink__s.html#af5692eedaf4886be06f92293cd474d3e">listConnectionFormats</a>, intersection);</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;            <span class="keywordflow">if</span> (intersection.size() &gt; 0) <span class="comment">//OK  match source -&gt; sink</span></div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;            {</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                list.emplace_back(sinkNode, <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>, 1);</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;            }</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;        }</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;    }</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;    <span class="keywordtype">void</span> CAmRouter::getVerticesForSink(<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; node, <a class="code" href="namespaceam.html#abcde4f3c2d4e51bca986488b88de323d">CAmRoutingListVertices</a> &amp; list)</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    {</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; sinkNodeData = ((<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>*) &amp;node)-&gt;getData();</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; intersection;</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;        <a class="code" href="structam_1_1am__Sink__s.html">am_Sink_s</a> * sink = sinkNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> *converterNode = <a class="code" href="classam_1_1CAmRouter.html#a928bdf737d9786f2896176122e3b89c2">converterNodeWithSinkID</a>(sink-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">sinkID</a>, sink-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a8505cd0b29334007bd6dd5555f482cce">domainID</a>);</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;        <span class="keywordflow">if</span> (converterNode)</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        {</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;            std::vector&lt;am_CustomConnectionFormat_t&gt; sourceFormats, sinkFormats;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;            <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; converterData = converterNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;            <a class="code" href="structam_1_1am__Converter__s.html">am_Converter_s</a> * converter = converterData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a8fef46ce6e8adad5904eb863820c438e">converter</a>;</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;            <span class="keywordflow">if</span> (<a class="code" href="classam_1_1CAmRouter.html#acbb23f31eb24cdc6c7afd97ee893e423">getAllowedFormatsFromConvMatrix</a>(converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#ab34ebf10f1a75f304f931788ffc1691d">convertionMatrix</a>, converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a1bcc326c4059a8edf73665f618bf6c75">listSourceFormats</a>, converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a15cc5a4dd74ae27aa51f18a89ce01a1a">listSinkFormats</a>, sourceFormats,</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;                    sinkFormats))</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;                list.emplace_back(converterNode, <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>, 1);</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;        <span class="keywordflow">else</span></div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        {</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;            std::vector&lt;am_CustomConnectionFormat_t&gt; sourceFormats, sinkFormats;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;            <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> *gatewayNode = <a class="code" href="classam_1_1CAmRouter.html#a3a49c89f72a1ed92455b9f976c153970">gatewayNodeWithSinkID</a>(sink-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">sinkID</a>);</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;            <span class="keywordflow">if</span> (gatewayNode)</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;            {</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;                std::vector&lt;am_CustomConnectionFormat_t&gt; sourceFormats, sinkFormats;</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;                <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; gatewayData = gatewayNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;                <a class="code" href="structam_1_1am__Gateway__s.html">am_Gateway_s</a> * gateway = gatewayData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a3e64f452e79f69f04afd2fc19d1db1f1">gateway</a>;</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="classam_1_1CAmRouter.html#acbb23f31eb24cdc6c7afd97ee893e423">getAllowedFormatsFromConvMatrix</a>(gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a299c727ffb962ed1f987fbac889ee06e">convertionMatrix</a>, gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a54f4f9c798677a4301477841afbfde1c">listSourceFormats</a>, gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#afea929a5d18e3a0c4a00575b7596cfb3">listSinkFormats</a>, sourceFormats,</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;                        sinkFormats))</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;                    list.emplace_back(gatewayNode, <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>, 1);</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;            }</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;        }</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    }</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;    <span class="keywordtype">void</span> CAmRouter::getVerticesForConverter(<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; node, <a class="code" href="namespaceam.html#abcde4f3c2d4e51bca986488b88de323d">CAmRoutingListVertices</a> &amp; list)</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    {</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; sourceFormats, sinkFormats;</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; converterNodeData = ((<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>*) &amp;node)-&gt;getData();</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;        <a class="code" href="structam_1_1am__Converter__s.html">am_Converter_s</a> * converter = converterNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a8fef46ce6e8adad5904eb863820c438e">converter</a>;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;        <span class="comment">//Get only converters with end point in current source domain</span></div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classam_1_1CAmRouter.html#acbb23f31eb24cdc6c7afd97ee893e423">getAllowedFormatsFromConvMatrix</a>(converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#ab34ebf10f1a75f304f931788ffc1691d">convertionMatrix</a>, converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a1bcc326c4059a8edf73665f618bf6c75">listSourceFormats</a>, converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a15cc5a4dd74ae27aa51f18a89ce01a1a">listSinkFormats</a>, sourceFormats, sinkFormats))</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;        {</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;            <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> *converterSourceNode = this-&gt;<a class="code" href="classam_1_1CAmRouter.html#a5a3dd752289cfacdc8c9599b69d36871">sourceNodeWithID</a>(converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a7e66c234376aa4fce173cfdc3aebff82">sourceID</a>, converter-&gt;<a class="code" href="structam_1_1am__Converter__s.html#a129050d36e5f1710bed87e4490e7eb34">domainID</a>);</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;            <span class="keywordflow">if</span> (converterSourceNode)</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;            {</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;                list.emplace_back(converterSourceNode, <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>, 1);</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;            }</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;        }</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;    }</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    <span class="keywordtype">void</span> CAmRouter::getVerticesForGateway(<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; node, <a class="code" href="namespaceam.html#abcde4f3c2d4e51bca986488b88de323d">CAmRoutingListVertices</a> &amp; list)</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;    {</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; gatewayNodeData = ((<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>*) &amp;node)-&gt;getData();</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; sourceFormats, sinkFormats;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;        <a class="code" href="structam_1_1am__Gateway__s.html">am_Gateway_s</a> * gateway = gatewayNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a3e64f452e79f69f04afd2fc19d1db1f1">gateway</a>;</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classam_1_1CAmRouter.html#acbb23f31eb24cdc6c7afd97ee893e423">getAllowedFormatsFromConvMatrix</a>(gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a299c727ffb962ed1f987fbac889ee06e">convertionMatrix</a>, gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a54f4f9c798677a4301477841afbfde1c">listSourceFormats</a>, gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#afea929a5d18e3a0c4a00575b7596cfb3">listSinkFormats</a>, sourceFormats, sinkFormats))</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;            <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> *gatewaySourceNode = this-&gt;<a class="code" href="classam_1_1CAmRouter.html#a5a3dd752289cfacdc8c9599b69d36871">sourceNodeWithID</a>(gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a2e7f50bbf9f11eb7eec7d585dbbd0159">sourceID</a>, gateway-&gt;<a class="code" href="structam_1_1am__Gateway__s.html#a7a7eddd6f1051cbda5e1c37b4df6ea15">domainSourceID</a>);</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;            <span class="keywordflow">if</span> (gatewaySourceNode)</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;            {</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;                <span class="comment">//Connections hidden_sink-&gt;gateway-&gt;hidden_source</span></div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;                list.emplace_back(gatewaySourceNode, <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>, 1);</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;            }</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;        }</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    }</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;    <span class="keywordtype">void</span> CAmRouter::getVerticesForNode(<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; node, <a class="code" href="namespaceam.html#abcde4f3c2d4e51bca986488b88de323d">CAmRoutingListVertices</a> &amp; list)</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    {</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; nodeData = ((<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>*) &amp;node)-&gt;getData();</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;        <span class="keywordflow">if</span> (nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> == CAmNodeDataType::SOURCE)</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;        {</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;            getVerticesForSource(node, list);</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;        }</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> == CAmNodeDataType::SINK)</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;        {</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;            getVerticesForSink(node, list);</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;        }</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> == CAmNodeDataType::CONVERTER)</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;        {</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;            getVerticesForConverter(node, list);</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;        }</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> == CAmNodeDataType::GATEWAY)</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;        {</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;            getVerticesForGateway(node, list);</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;        }</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    }</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> CAmRouter::determineConnectionFormatsForPath(<a class="code" href="structam_1_1am__Route__s.html">am_Route_s</a> &amp; routeObjects, std::vector&lt;CAmRoutingNode*&gt; &amp; nodes, std::vector&lt;am_Route_s&gt; &amp; result)</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;    {</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;        std::vector&lt;am_RoutingElement_s&gt;::iterator routingElementIterator = routeObjects.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.begin();</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;        std::vector&lt;CAmRoutingNode*&gt;::iterator nodeIterator = nodes.begin();</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;        <span class="keywordflow">if</span> (routingElementIterator != routeObjects.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.end() &amp;&amp; nodeIterator != nodes.end())</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;            <span class="keywordflow">return</span> doConnectionFormatsForPath(routeObjects, nodes, routingElementIterator, nodeIterator, result);</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a>;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;    }</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> CAmRouter::doConnectionFormatsForPath(<a class="code" href="structam_1_1am__Route__s.html">am_Route_s</a> &amp; routeObjects, std::vector&lt;CAmRoutingNode*&gt; &amp; nodes,</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;            std::vector&lt;am_RoutingElement_s&gt;::iterator routingElementIterator, std::vector&lt;CAmRoutingNode*&gt;::iterator nodeIterator,</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;            std::vector&lt;am_Route_s&gt; &amp; result)</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;    {</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;        <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> returnError = <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ceae449ff2b773d583d7274ca6d4dbd03cb">E_NOT_POSSIBLE</a>;</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; listConnectionFormats;</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; listMergeConnectionFormats;</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;        std::vector&lt;CAmRoutingNode*&gt;::iterator currentNodeIterator = nodeIterator;</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;        std::vector&lt;am_RoutingElement_s&gt;::iterator currentRoutingElementIterator = routingElementIterator;</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;        <span class="keywordflow">if</span> (currentRoutingElementIterator != routeObjects.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.begin())</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;        {</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;            std::vector&lt;am_CustomConnectionFormat_t&gt; listConnectionFormats;</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;            std::vector&lt;am_RoutingElement_s&gt;::iterator tempIterator = (currentRoutingElementIterator - 1);</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;            <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * currentNode = *currentNodeIterator;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;            <span class="keywordflow">if</span> ((returnError = <a class="code" href="classam_1_1CAmRouter.html#a18480d4cd51e8a1dd35a4d9ce7c34ec1">getSourceSinkPossibleConnectionFormats</a>(currentNodeIterator + 1, currentNodeIterator + 2, listConnectionFormats)) != <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a>)</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;                <span class="keywordflow">return</span> returnError;</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;            <span class="keywordflow">if</span> (currentNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> == CAmNodeDataType::GATEWAY)</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;            {</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;                <a class="code" href="structam_1_1am__Gateway__s.html">am_Gateway_s</a> *gateway = currentNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a3e64f452e79f69f04afd2fc19d1db1f1">gateway</a>;</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;                <a class="code" href="namespaceam.html#adfd5dc4939df0960dc2d1651691374d4">getMergeConnectionFormats</a>(gateway, tempIterator-&gt;connectionFormat, listConnectionFormats, listMergeConnectionFormats);</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;            }</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (currentNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> == CAmNodeDataType::CONVERTER)</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;            {</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;                <a class="code" href="structam_1_1am__Converter__s.html">am_Converter_s</a> *converter = currentNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a8fef46ce6e8adad5904eb863820c438e">converter</a>;</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;                <a class="code" href="namespaceam.html#adfd5dc4939df0960dc2d1651691374d4">getMergeConnectionFormats</a>(converter, tempIterator-&gt;connectionFormat, listConnectionFormats, listMergeConnectionFormats);</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;            }</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;                <span class="keywordflow">return</span> (<a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea69e1cb25d3b8fa1920d07ab65930cb7d">E_UNKNOWN</a>);</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;            currentNodeIterator += 3;</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;        }</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;        {</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;            <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * currentNode = *currentNodeIterator;</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;            <span class="keywordflow">if</span> (currentNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> != CAmNodeDataType::SOURCE)</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;                <span class="keywordflow">return</span> (<a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea69e1cb25d3b8fa1920d07ab65930cb7d">E_UNKNOWN</a>);</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;            currentNodeIterator++;</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;            <span class="keywordflow">if</span> (currentNodeIterator == nodes.end())</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;                <span class="keywordflow">return</span> (<a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea69e1cb25d3b8fa1920d07ab65930cb7d">E_UNKNOWN</a>);</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;            <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * nodeSink = *currentNodeIterator;</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;            <span class="keywordflow">if</span> (nodeSink-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> != CAmNodeDataType::SINK)</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;                <span class="keywordflow">return</span> (<a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea69e1cb25d3b8fa1920d07ab65930cb7d">E_UNKNOWN</a>);</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;            <a class="code" href="structam_1_1am__Source__s.html">am_Source_s</a> *source = currentNode-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>;</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;            <a class="code" href="structam_1_1am__Sink__s.html">am_Sink_s</a> *sink = nodeSink-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>;</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;            <a class="code" href="classam_1_1CAmRouter.html#adbf59722ed983e95db461ab4740c0a4b">listPossibleConnectionFormats</a>(source-&gt;<a class="code" href="structam_1_1am__Source__s.html#a161ce36395faa9faea7db1699c62c700">listConnectionFormats</a>, sink-&gt;<a class="code" href="structam_1_1am__Sink__s.html#af5692eedaf4886be06f92293cd474d3e">listConnectionFormats</a>, listMergeConnectionFormats);</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;            currentNodeIterator += 1; <span class="comment">//now we are on the next converter/gateway</span></div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;        }</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;        <span class="comment">//let the controller decide:</span></div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt; listPriorityConnectionFormats;</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        <span class="keywordflow">if</span> ((returnError = mpControlSender-&gt;<a class="code" href="classam_1_1CAmControlSender.html#a78de0729435fd75879d1c0ef94cd7106">getConnectionFormatChoice</a>(currentRoutingElementIterator-&gt;sourceID, currentRoutingElementIterator-&gt;sinkID,</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;                routeObjects, listMergeConnectionFormats, listPriorityConnectionFormats)) != <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a>)</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;            <span class="keywordflow">return</span> (returnError);</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;        <span class="keywordflow">if</span> (listPriorityConnectionFormats.empty())</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;            <span class="keywordflow">return</span> (<a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ceae449ff2b773d583d7274ca6d4dbd03cb">E_NOT_POSSIBLE</a>);</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;        <span class="comment">//we have the list sorted after priors - now we try one after the other with the next part of the route</span></div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt;::iterator connectionFormatIterator = listPriorityConnectionFormats.begin();</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;        <span class="comment">//here we need to check if we are at the end and stop</span></div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;        std::vector&lt;am_RoutingElement_s&gt;::iterator nextIterator = currentRoutingElementIterator + 1; <span class="comment">//next pair source and sink</span></div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;        <span class="keywordflow">if</span> (nextIterator == routeObjects.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.end())</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;        {</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;            <span class="keywordflow">for</span> (; connectionFormatIterator != listPriorityConnectionFormats.end(); ++connectionFormatIterator)</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;            {</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;                currentRoutingElementIterator-&gt;connectionFormat = *connectionFormatIterator;</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;                result.push_back(routeObjects);</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;            }</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;        }</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;        {</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;            <span class="keywordflow">for</span> (; connectionFormatIterator != listPriorityConnectionFormats.end(); ++connectionFormatIterator)</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;            {</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;                currentRoutingElementIterator-&gt;connectionFormat = *connectionFormatIterator;</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;                doConnectionFormatsForPath(routeObjects, nodes, nextIterator, currentNodeIterator, result);</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;            }</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        }</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a>);</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;    }</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> CAmRouter::cfPermutationsForPath(<a class="code" href="structam_1_1am__Route__s.html">am_Route_s</a> shortestRoute, std::vector&lt;CAmRoutingNode*&gt; resultNodesPath, std::vector&lt;am_Route_s&gt;&amp; resultPath)</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;    {</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;        std::vector&lt;am_Route_s&gt; result;</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;        <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> err = determineConnectionFormatsForPath(shortestRoute, resultNodesPath, result);</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;        <span class="keywordflow">if</span> (err != <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea69e1cb25d3b8fa1920d07ab65930cb7d">E_UNKNOWN</a>)</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;        {</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;            resultPath.insert(resultPath.end(), result.begin(), result.end());</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;<span class="preprocessor">#ifdef TRACE_GRAPH</span></div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;            std::cout</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;            &lt;&lt; <span class="stringliteral">&quot;Determined connection formats for path from source:&quot;</span></div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;            &lt;&lt; shortestRoute.<a class="code" href="structam_1_1am__Route__s.html#abf0e80b6a3c873f98df00ab7e0ab014c">sourceID</a> &lt;&lt; <span class="stringliteral">&quot; to sink:&quot;</span> &lt;&lt; shortestRoute.<a class="code" href="structam_1_1am__Route__s.html#adc2e4801d4cea72a22d602492b918ec7">sinkID</a></div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;            &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span> routeConnectionFormats : result)</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;            {</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;                std::cout &lt;&lt; <span class="stringliteral">&quot;[&quot;</span>;</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;                <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = routeConnectionFormats.route.begin();it != routeConnectionFormats.route.end(); it++)</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;                {</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;                    <a class="code" href="structam_1_1am__RoutingElement__s.html">am_RoutingElement_s</a>&amp; routingElement = *it;</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;                    <span class="keywordflow">if</span> (it - routeConnectionFormats.route.begin() &gt; 0)</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;                    std::cout &lt;&lt; <span class="stringliteral">&quot; -&gt; &quot;</span>;</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;                    std::cout &lt;&lt; routingElement.<a class="code" href="structam_1_1am__RoutingElement__s.html#aa62eb1c5d54fce616106aa928e72beba">sourceID</a> &lt;&lt; <span class="stringliteral">&quot;:&quot;</span></div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;                    &lt;&lt; routingElement.<a class="code" href="structam_1_1am__RoutingElement__s.html#a14d52e48dad6d576b5da792168eec193">sinkID</a> &lt;&lt; <span class="stringliteral">&quot; CF:&quot;</span></div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;                    &lt;&lt; routingElement.<a class="code" href="structam_1_1am__RoutingElement__s.html#ab532c1225badbf5cd967ac602e8b64e0">connectionFormat</a> &lt;&lt; <span class="stringliteral">&quot; D:&quot;</span></div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;                    &lt;&lt; routingElement.<a class="code" href="structam_1_1am__RoutingElement__s.html#a877d5ed3d176e1b7b6567a5c5fbe0577">domainID</a>;</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;                }</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;                std::cout &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;            }</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;        }</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;<span class="preprocessor">#ifdef TRACE_GRAPH</span></div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;        {</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;            std::cout</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;            &lt;&lt; <span class="stringliteral">&quot;Error by determining connection formats for path from source:&quot;</span></div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;            &lt;&lt; shortestRoute.<a class="code" href="structam_1_1am__Route__s.html#abf0e80b6a3c873f98df00ab7e0ab014c">sourceID</a> &lt;&lt; <span class="stringliteral">&quot; to sink:&quot;</span> &lt;&lt; shortestRoute.<a class="code" href="structam_1_1am__Route__s.html#adc2e4801d4cea72a22d602492b918ec7">sinkID</a></div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;            &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;        }</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;    }</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#aec0c02c47a6c4d849995c123a08d4b2c">  657</a></span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> <a class="code" href="classam_1_1CAmRouter.html#aec0c02c47a6c4d849995c123a08d4b2c">CAmRouter::getShortestPath</a>(<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; aSource, <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; aSink, std::vector&lt;am_Route_s&gt; &amp; resultPath)</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;    {</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;        <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> err = <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a>;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;        <a class="code" href="structam_1_1am__Route__s.html">am_Route_s</a> shortestRoute;</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;        std::vector&lt;CAmRoutingNode*&gt; resultNodesPath;</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; sinkNodeData = aSink.<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; sourceNodeData = aSource.<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;        shortestRoute.<a class="code" href="structam_1_1am__Route__s.html#adc2e4801d4cea72a22d602492b918ec7">sinkID</a> = sinkNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">sinkID</a>;</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;        shortestRoute.<a class="code" href="structam_1_1am__Route__s.html#abf0e80b6a3c873f98df00ab7e0ab014c">sourceID</a> = sourceNodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>-&gt;<a class="code" href="structam_1_1am__Source__s.html#ad224888802fabebefe6ff587412da9fd">sourceID</a>;</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;        mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#afbaea2860663d3266a7b4d25e5041b5d">getShortestPath</a>(aSource, aSink, [&amp;shortestRoute, &amp;resultNodesPath](<span class="keyword">const</span> <a class="code" href="namespaceam.html#a5ddc1de5c77502d9fd136f30a5ebbd7c">am_GraphPathPosition_e</a> position, <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; <span class="keywordtype">object</span>)</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;        {</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;            <a class="code" href="structam_1_1am__RoutingElement__s.html">am_RoutingElement_s</a> * element;</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;            <span class="comment">//reverse order</span></div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;                resultNodesPath.insert(resultNodesPath.begin(), (<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>*)&amp;<span class="keywordtype">object</span>);</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;                <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; routingData = <span class="keywordtype">object</span>.getData();</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;                <span class="keywordflow">if</span>(routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a>==CAmNodeDataType::SINK)</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;                {</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;                    <span class="keyword">auto</span> iter = shortestRoute.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.emplace(shortestRoute.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.begin());</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;                    element = &amp;(*iter);</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#a877d5ed3d176e1b7b6567a5c5fbe0577">domainID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a8505cd0b29334007bd6dd5555f482cce">domainID</a>;</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#a14d52e48dad6d576b5da792168eec193">sinkID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">sinkID</a>;</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#ab532c1225badbf5cd967ac602e8b64e0">connectionFormat</a> = <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>;</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;                }</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span>(routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a>==CAmNodeDataType::SOURCE)</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;                {</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#a877d5ed3d176e1b7b6567a5c5fbe0577">domainID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>-&gt;<a class="code" href="structam_1_1am__Source__s.html#a57854adc822ed77c6443ec2c745820af">domainID</a>;</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#aa62eb1c5d54fce616106aa928e72beba">sourceID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>-&gt;<a class="code" href="structam_1_1am__Source__s.html#ad224888802fabebefe6ff587412da9fd">sourceID</a>;</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#ab532c1225badbf5cd967ac602e8b64e0">connectionFormat</a> = <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>;</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;                }</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;            });</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;        <span class="keywordflow">if</span> (shortestRoute.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.size())</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;        {</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;            err = cfPermutationsForPath(shortestRoute, resultNodesPath, resultPath);</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;        }</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;    }</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;    <span class="keywordtype">int</span> CAmRouter::insertPostion(<span class="keyword">const</span> std::vector&lt;CAmRoutingNode*&gt;&amp; path, <span class="keyword">const</span> std::vector&lt;std::vector&lt;CAmRoutingNode*&gt; &gt;&amp; nodes)</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;    {</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;        <span class="keywordtype">int</span> index = 0;</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;        <span class="keywordflow">if</span> (!nodes.empty())</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;        {</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;            <span class="keyword">auto</span> itNodes = nodes.begin();</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;            <span class="keywordflow">for</span> (; itNodes != nodes.end(); itNodes++)</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;            {</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;                <span class="keywordflow">if</span> (itNodes-&gt;size() &gt; path.size())</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;            }</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;            <span class="keywordflow">if</span> (itNodes == nodes.end())</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;                index = nodes.size();</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;                index = itNodes - nodes.begin();</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;        }</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;        <span class="keywordflow">return</span> index;</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;    }</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#aec93bdf7c20934bedf1dcd3cbd6b162e">  715</a></span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> <a class="code" href="classam_1_1CAmRouter.html#aec93bdf7c20934bedf1dcd3cbd6b162e">CAmRouter::getFirstNShortestPaths</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> onlyFree, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> cycles, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> maxPathCount, <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; aSource,</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;            <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; aSink, std::vector&lt;am_Route_s&gt; &amp; resultPath)</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;    {</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;        <span class="keywordflow">if</span> (aSource.<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> != CAmNodeDataType::SOURCE || aSink.<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> != CAmNodeDataType::SINK)</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ceae449ff2b773d583d7274ca6d4dbd03cb">E_NOT_POSSIBLE</a>;</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;        <span class="keyword">const</span> <a class="code" href="namespaceam.html#aac2b901ff83ee381fbe99913753e2416">am_sinkID_t</a> sinkID = aSink.<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">sinkID</a>;</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;        <span class="keyword">const</span> <a class="code" href="namespaceam.html#a2711516b1392ea02a7ed25fcd540a16a">am_sourceID_t</a> sourceID = aSource.<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>-&gt;<a class="code" href="structam_1_1am__Source__s.html#ad224888802fabebefe6ff587412da9fd">sourceID</a>;</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;        std::vector&lt;am_Route_s&gt; paths;</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;        std::vector&lt;std::vector&lt;CAmRoutingNode*&gt;&gt; nodes;</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;        std::vector&lt;am_domainID_t&gt; visitedDomains;</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;        visitedDomains.push_back(((<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>*) &amp;aSource)-&gt;getData().domainID());</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;        <span class="keyword">auto</span> cbShouldVisitNode = [&amp;visitedDomains, &amp;cycles, &amp;onlyFree, <span class="keyword">this</span>](<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * node)-&gt;<span class="keywordtype">bool</span></div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;        {</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;            <span class="keywordflow">if</span>(<a class="code" href="classam_1_1CAmRouter.html#a0210aff672959cea42ed6760144d4296">CAmRouter::shouldGoInDomain</a>(visitedDomains, node-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a40dca77f6ca7b2dc92796ac4f271665c">domainID</a>(), cycles))</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;            {</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;                <span class="keyword">const</span> <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; nodeData = node-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;                <span class="keywordflow">if</span>(<a class="code" href="structam_1_1am__RoutingNodeData__s.html#ac1e5030a95c5529ebdf563deef3e276cae7dc94753104a5288049a249cb3193e4">am_RoutingNodeData_s::GATEWAY</a>==nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a>)</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;                {</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;                    <span class="keyword">const</span> <a class="code" href="structam_1_1am__Gateway__s.html">am_Gateway_s</a> * gateway = nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a3e64f452e79f69f04afd2fc19d1db1f1">gateway</a>;</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;                    <span class="keywordflow">return</span> (!onlyFree || !isComponentConnected(*gateway));</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;                }</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="structam_1_1am__RoutingNodeData__s.html#ac1e5030a95c5529ebdf563deef3e276ca5c8a2228d2052aeba0c35f5d5ad34889">am_RoutingNodeData_s::CONVERTER</a>==nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a>)</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;                {</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;                    <span class="keyword">const</span> <a class="code" href="structam_1_1am__Converter__s.html">am_Converter_s</a> * converter = nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a8fef46ce6e8adad5904eb863820c438e">converter</a>;</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;                    <span class="keywordflow">return</span> (!onlyFree || !isComponentConnected(*converter));</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;                }</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;            }</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;        };</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;        <span class="keyword">auto</span> cbWillVisitNode = [&amp;visitedDomains](<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * node)</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;        {   visitedDomains.push_back(node-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a40dca77f6ca7b2dc92796ac4f271665c">domainID</a>());};</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;        <span class="keyword">auto</span> cbDidVisitNode = [&amp;visitedDomains](<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * node)</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;        {   visitedDomains.erase(visitedDomains.end()-1);};</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;        <span class="keyword">auto</span> cbDidFinish = [&amp;resultPath, &amp;nodes, &amp;paths, &amp;sinkID, &amp;sourceID](<span class="keyword">const</span> std::vector&lt;CAmRoutingNode*&gt; &amp; path)</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;        {</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;            <span class="keywordtype">int</span> index = CAmRouter::insertPostion(path, nodes);</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;            nodes.emplace(nodes.begin()+index);</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;            paths.emplace(paths.begin()+index);</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;            nodes[index] = path;</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;            <a class="code" href="structam_1_1am__Route__s.html">am_Route_s</a> &amp; nextRoute = paths[index];</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;            nextRoute.<a class="code" href="structam_1_1am__Route__s.html#adc2e4801d4cea72a22d602492b918ec7">sinkID</a> = sinkID;</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;            nextRoute.<a class="code" href="structam_1_1am__Route__s.html#abf0e80b6a3c873f98df00ab7e0ab014c">sourceID</a> = sourceID;</div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;            <a class="code" href="structam_1_1am__RoutingElement__s.html">am_RoutingElement_s</a> * element;</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;            <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = path.begin(); it!=path.end(); it++)</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;            {</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;                <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; routingData = (*it)-&gt;getData();</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;                <span class="keywordflow">if</span>(routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a>==CAmNodeDataType::SOURCE)</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;                {</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;                    <span class="keyword">auto</span> iter = nextRoute.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.emplace(nextRoute.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.end());</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;                    element = &amp;(*iter);</div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#a877d5ed3d176e1b7b6567a5c5fbe0577">domainID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>-&gt;<a class="code" href="structam_1_1am__Source__s.html#a57854adc822ed77c6443ec2c745820af">domainID</a>;</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#aa62eb1c5d54fce616106aa928e72beba">sourceID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>-&gt;<a class="code" href="structam_1_1am__Source__s.html#ad224888802fabebefe6ff587412da9fd">sourceID</a>;</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#ab532c1225badbf5cd967ac602e8b64e0">connectionFormat</a> = <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>;</div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;                }</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span>(routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a>==CAmNodeDataType::SINK)</div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;                {</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#a877d5ed3d176e1b7b6567a5c5fbe0577">domainID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a8505cd0b29334007bd6dd5555f482cce">domainID</a>;</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#a14d52e48dad6d576b5da792168eec193">sinkID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">sinkID</a>;</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;                    element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#ab532c1225badbf5cd967ac602e8b64e0">connectionFormat</a> = <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>;</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;                }</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;            }</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;        };</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;        mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#a82af8323ee0df0fa83294e340ddac83a">getAllPaths</a>(aSource, aSink, cbShouldVisitNode, cbWillVisitNode, cbDidVisitNode, cbDidFinish);</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;        <span class="keywordtype">unsigned</span> pathsFound = 0;</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;        <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> cfError = <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a>;</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = paths.begin(); pathsFound &lt; maxPathCount &amp;&amp; it != paths.end(); it++)</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;        {</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;            cfError = cfPermutationsForPath(*it, nodes[it - paths.begin()], resultPath);</div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a> == cfError)</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;            {</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;                pathsFound += (resultPath.size() &gt; 0);</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;            }</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;        }</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;        <span class="keywordflow">if</span> (pathsFound)</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a>;</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ceae449ff2b773d583d7274ca6d4dbd03cb">E_NOT_POSSIBLE</a>;</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;    }</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;</div><div class="line"><a name="l00797"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a0210aff672959cea42ed6760144d4296">  797</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classam_1_1CAmRouter.html#a0210aff672959cea42ed6760144d4296">CAmRouter::shouldGoInDomain</a>(<span class="keyword">const</span> std::vector&lt;am_domainID_t&gt; &amp; visitedDomains, <span class="keyword">const</span> <a class="code" href="namespaceam.html#a58a230b5da10699a7ce1b1f2a1c550e6">am_domainID_t</a> nodeDomainID, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> maxCyclesNumber)</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;    {</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;        <span class="keywordtype">unsigned</span> recourseCounter(0);</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;        <span class="keywordflow">if</span> (visitedDomains.size())</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;        {</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;            <span class="keywordflow">if</span> (visitedDomains.back() == nodeDomainID)</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;            <span class="keywordtype">unsigned</span> count = 0;</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;            <a class="code" href="namespaceam.html#a58a230b5da10699a7ce1b1f2a1c550e6">am_domainID_t</a> lastDomain = 0;</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = visitedDomains.begin(); it != visitedDomains.end() - 1; it++)</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;            {</div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;                <span class="keywordflow">if</span> (lastDomain != *it)</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;                {</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;                    <span class="keywordflow">if</span> (nodeDomainID == *it)</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;                    {</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;                        recourseCounter++;</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;                        <span class="keywordflow">if</span> (recourseCounter &gt; maxCyclesNumber)</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;                            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;                    }</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;                    lastDomain = *it;</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;                }</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;            }</div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;        }</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;    }</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#afd8e107206e8435a9864dbfbc2c23f74">  823</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classam_1_1CAmRouter.html#a0210aff672959cea42ed6760144d4296">CAmRouter::shouldGoInDomain</a>(<span class="keyword">const</span> std::vector&lt;am_domainID_t&gt; &amp; visitedDomains, <span class="keyword">const</span> <a class="code" href="namespaceam.html#a58a230b5da10699a7ce1b1f2a1c550e6">am_domainID_t</a> nodeDomainID)</div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;    {</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classam_1_1CAmRouter.html#a0210aff672959cea42ed6760144d4296">CAmRouter::shouldGoInDomain</a>(visitedDomains, nodeDomainID, mMaxAllowedCycles);</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;    }</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#acbb23f31eb24cdc6c7afd97ee893e423">  828</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classam_1_1CAmRouter.html#acbb23f31eb24cdc6c7afd97ee893e423">CAmRouter::getAllowedFormatsFromConvMatrix</a>(<span class="keyword">const</span> std::vector&lt;bool&gt; &amp; convertionMatrix,</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;            <span class="keyword">const</span> std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; listSourceFormats, <span class="keyword">const</span> std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; listSinkFormats,</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;            std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; sourceFormats, std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; sinkFormats)</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;    {</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">size_t</span> sizeSourceFormats = listSourceFormats.size();</div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">size_t</span> sizeSinkFormats = listSinkFormats.size();</div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">size_t</span> sizeConvertionMatrix = convertionMatrix.size();</div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;        <span class="keywordflow">if</span> (sizeSourceFormats == 0 || sizeSinkFormats == 0 || sizeConvertionMatrix == 0 || sizeConvertionMatrix != sizeSinkFormats * sizeSourceFormats)</div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;        {</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;        }</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;        std::vector&lt;bool&gt;::const_iterator iterator = convertionMatrix.begin();</div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;        <span class="keywordflow">for</span> (; iterator != convertionMatrix.end(); ++iterator)</div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;        {</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;            <span class="keywordflow">if</span> (<span class="keyword">true</span> == *iterator)</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;            {</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;                <span class="keyword">const</span> <span class="keywordtype">size_t</span> index = iterator - convertionMatrix.begin();</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;                <span class="keywordtype">size_t</span> idx = index % sizeSourceFormats;</div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;                sourceFormats.push_back(listSourceFormats.at(idx));</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;                idx = index / sizeSourceFormats;</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;                sinkFormats.push_back(listSinkFormats.at(idx));</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;            }</div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;        }</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;        <span class="keywordflow">return</span> sourceFormats.size() &gt; 0;</div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;    }</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;</div><div class="line"><a name="l00856"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#adbf59722ed983e95db461ab4740c0a4b">  856</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classam_1_1CAmRouter.html#adbf59722ed983e95db461ab4740c0a4b">CAmRouter::listPossibleConnectionFormats</a>(std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; inListSourceFormats,</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;            std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; inListSinkFormats, std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; outListFormats)</div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;    {</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;        std::sort(inListSourceFormats.begin(), inListSourceFormats.end());</div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;        std::sort(inListSinkFormats.begin(), inListSinkFormats.end());</div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;        std::insert_iterator&lt;std::vector&lt;am_CustomConnectionFormat_t&gt; &gt; inserter(outListFormats, outListFormats.begin());</div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;        set_intersection(inListSourceFormats.begin(), inListSourceFormats.end(), inListSinkFormats.begin(), inListSinkFormats.end(), inserter);</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;    }</div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;</div><div class="line"><a name="l00865"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#abfe25345318af7e96d13c08acb0d79d5">  865</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classam_1_1CAmRouter.html#abfe25345318af7e96d13c08acb0d79d5">CAmRouter::getRestrictedOutputFormats</a>(<span class="keyword">const</span> std::vector&lt;bool&gt; &amp; convertionMatrix, <span class="keyword">const</span> std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; listSourceFormats,</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;            <span class="keyword">const</span> std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; listSinkFormats, <span class="keyword">const</span> <a class="code" href="namespaceam.html#a114262d77aae4ed1d2daa50a36155d3e">am_CustomConnectionFormat_t</a> connectionFormat,</div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;            std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; listFormats)</div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;    {</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;        listFormats.clear();</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;        std::vector&lt;am_CustomConnectionFormat_t&gt;::const_iterator rowSinkIterator = listSinkFormats.begin();</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;        std::vector&lt;bool&gt;::const_iterator matrixIterator = convertionMatrix.begin();</div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;        <span class="comment">//find the row number of the sink</span></div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;        rowSinkIterator = find(listSinkFormats.begin(), listSinkFormats.end(), connectionFormat);</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;        <span class="keywordtype">int</span> rowNumberSink = rowSinkIterator - listSinkFormats.begin();</div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;        <span class="comment">//go through the convertionMatrix and find out if the conversion is possible, if yes, add connectionFormat ...</span></div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;        std::advance(matrixIterator, rowNumberSink);</div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;        <span class="comment">//iterate line-wise through the matrix and add more formats</span></div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;        <span class="keywordflow">do</span></div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;        {</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;            <span class="keywordflow">if</span> (*matrixIterator)</div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;            {</div><div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;                listFormats.push_back(listSourceFormats.at((matrixIterator - convertionMatrix.begin()) / listSinkFormats.size()));</div><div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;            }</div><div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;            std::advance(matrixIterator, listSinkFormats.size());</div><div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;        } <span class="keywordflow">while</span> (convertionMatrix.end() - matrixIterator &gt; 0);</div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;        <span class="keywordflow">return</span> listFormats.size();</div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;    }</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a18480d4cd51e8a1dd35a4d9ce7c34ec1">  893</a></span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> <a class="code" href="classam_1_1CAmRouter.html#a18480d4cd51e8a1dd35a4d9ce7c34ec1">CAmRouter::getSourceSinkPossibleConnectionFormats</a>(std::vector&lt;CAmRoutingNode*&gt;::iterator iteratorSource,</div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;            std::vector&lt;CAmRoutingNode*&gt;::iterator iteratorSink, std::vector&lt;am_CustomConnectionFormat_t&gt; &amp; outConnectionFormats)</div><div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;    {</div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * nodeSink = *iteratorSink;</div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;        <span class="keywordflow">if</span> (nodeSink-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> != CAmNodeDataType::SINK)</div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;            <span class="keywordflow">return</span> (<a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea69e1cb25d3b8fa1920d07ab65930cb7d">E_UNKNOWN</a>);</div><div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;</div><div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;        <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * nodeSource = *iteratorSource;</div><div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;        <span class="keywordflow">if</span> (nodeSource-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> != CAmNodeDataType::SOURCE)</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;            <span class="keywordflow">return</span> (<a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea69e1cb25d3b8fa1920d07ab65930cb7d">E_UNKNOWN</a>);</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;</div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;        <a class="code" href="structam_1_1am__Source__s.html">am_Source_s</a> *source = nodeSource-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>;</div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;        <a class="code" href="structam_1_1am__Sink__s.html">am_Sink_s</a> *sink = nodeSink-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>;</div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;        <a class="code" href="classam_1_1CAmRouter.html#adbf59722ed983e95db461ab4740c0a4b">listPossibleConnectionFormats</a>(source-&gt;<a class="code" href="structam_1_1am__Source__s.html#a161ce36395faa9faea7db1699c62c700">listConnectionFormats</a>, sink-&gt;<a class="code" href="structam_1_1am__Sink__s.html#af5692eedaf4886be06f92293cd474d3e">listConnectionFormats</a>, outConnectionFormats);</div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a>);</div><div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;    }</div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;</div><div class="line"><a name="l00910"></a><span class="lineno"><a class="line" href="classam_1_1CAmRouter.html#a9070c79b936907a886e12bebc425a863">  910</a></span>&#160;    <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ce">am_Error_e</a> <a class="code" href="classam_1_1CAmRouter.html#a9070c79b936907a886e12bebc425a863">CAmRouter::getAllPaths</a>(<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; aSource, <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> &amp; aSink, std::vector&lt;am_Route_s&gt; &amp; resultPath,</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;            std::vector&lt;std::vector&lt;CAmRoutingNode*&gt;&gt; &amp; resultNodesPath, <span class="keyword">const</span> <span class="keywordtype">bool</span> includeCycles, <span class="keyword">const</span> <span class="keywordtype">bool</span> onlyFree)</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;    {</div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;</div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;        <span class="keywordflow">if</span> (aSource.<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> != CAmNodeDataType::SOURCE || aSink.<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a> != CAmNodeDataType::SINK)</div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ceae449ff2b773d583d7274ca6d4dbd03cb">E_NOT_POSSIBLE</a>;</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;</div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;        <span class="keywordtype">unsigned</span> cycles;</div><div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;        <span class="keywordflow">if</span> (includeCycles)</div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;            cycles = UINT_MAX;</div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;            cycles = 0;</div><div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;</div><div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;        uint8_t errorsCount = 0, successCount = 0;</div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;        <span class="keyword">const</span> <a class="code" href="namespaceam.html#aac2b901ff83ee381fbe99913753e2416">am_sinkID_t</a> sinkID = aSink.<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">sinkID</a>;</div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;        <span class="keyword">const</span> <a class="code" href="namespaceam.html#a2711516b1392ea02a7ed25fcd540a16a">am_sourceID_t</a> sourceID = aSource.<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>-&gt;<a class="code" href="structam_1_1am__Source__s.html#ad224888802fabebefe6ff587412da9fd">sourceID</a>;</div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;        std::vector&lt;am_Route_s&gt; paths;</div><div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;        std::vector&lt;am_domainID_t&gt; visitedDomains;</div><div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;        visitedDomains.push_back(((<a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a>*) &amp;aSource)-&gt;getData().domainID());</div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;        mRoutingGraph.<a class="code" href="classam_1_1CAmGraph.html#a82af8323ee0df0fa83294e340ddac83a">getAllPaths</a>(aSource, aSink, [&amp;visitedDomains, &amp;cycles, &amp;onlyFree, <span class="keyword">this</span>](<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * node)-&gt;<span class="keywordtype">bool</span></div><div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;        {</div><div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;            <span class="keywordflow">if</span>(<a class="code" href="classam_1_1CAmRouter.html#a0210aff672959cea42ed6760144d4296">CAmRouter::shouldGoInDomain</a>(visitedDomains, node-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a40dca77f6ca7b2dc92796ac4f271665c">domainID</a>(), cycles))</div><div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;            {</div><div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;                <span class="keyword">const</span> <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; nodeData = node-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>();</div><div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;                <span class="keywordflow">if</span>(<a class="code" href="structam_1_1am__RoutingNodeData__s.html#ac1e5030a95c5529ebdf563deef3e276cae7dc94753104a5288049a249cb3193e4">am_RoutingNodeData_s::GATEWAY</a>==nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a>)</div><div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;                {</div><div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;                    <span class="keyword">const</span> <a class="code" href="structam_1_1am__Gateway__s.html">am_Gateway_s</a> * gateway = nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a3e64f452e79f69f04afd2fc19d1db1f1">gateway</a>;</div><div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;                    <span class="keywordflow">return</span> (!onlyFree || !isComponentConnected(*gateway));</div><div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;                }</div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="structam_1_1am__RoutingNodeData__s.html#ac1e5030a95c5529ebdf563deef3e276ca5c8a2228d2052aeba0c35f5d5ad34889">am_RoutingNodeData_s::CONVERTER</a>==nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a>)</div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;                {</div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;                    <span class="keyword">const</span> <a class="code" href="structam_1_1am__Converter__s.html">am_Converter_s</a> * converter = nodeData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a8fef46ce6e8adad5904eb863820c438e">converter</a>;</div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;                    <span class="keywordflow">return</span> (!onlyFree || !isComponentConnected(*converter));</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;                }</div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;            }</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;        }, [&amp;visitedDomains](<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * node)</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;        {</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;            visitedDomains.push_back(node-&gt;<a class="code" href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">getData</a>().<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a40dca77f6ca7b2dc92796ac4f271665c">domainID</a>());</div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;        }, [&amp;visitedDomains](<span class="keyword">const</span> <a class="code" href="classam_1_1CAmNode.html">CAmRoutingNode</a> * node)</div><div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;        {   visitedDomains.erase(visitedDomains.end()-1);},</div><div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;                [&amp;resultPath, &amp;resultNodesPath, &amp;paths, &amp;errorsCount, &amp;successCount, &amp;sinkID, &amp;sourceID](<span class="keyword">const</span> std::vector&lt;CAmRoutingNode*&gt; &amp; path)</div><div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;                {</div><div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;                    <span class="keywordtype">int</span> index = CAmRouter::insertPostion(path, resultNodesPath);</div><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;                    resultNodesPath.emplace(resultNodesPath.begin()+index);</div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;                    paths.emplace(paths.begin()+index);</div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;                    resultNodesPath[index] = path;</div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;                    <a class="code" href="structam_1_1am__Route__s.html">am_Route_s</a> &amp; nextRoute = paths[index];</div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;                    nextRoute.<a class="code" href="structam_1_1am__Route__s.html#adc2e4801d4cea72a22d602492b918ec7">sinkID</a> = sinkID;</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;                    nextRoute.<a class="code" href="structam_1_1am__Route__s.html#abf0e80b6a3c873f98df00ab7e0ab014c">sourceID</a> = sourceID;</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;                    <a class="code" href="structam_1_1am__RoutingElement__s.html">am_RoutingElement_s</a> * element;</div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;                    <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = path.begin(); it!=path.end(); it++)</div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;                    {</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;                        <a class="code" href="structam_1_1am__RoutingNodeData__s.html">am_RoutingNodeData_s</a> &amp; routingData = (*it)-&gt;getData();</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;                        <span class="keywordflow">if</span>(routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a>==CAmNodeDataType::SOURCE)</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;                        {</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;                            <span class="keyword">auto</span> iter = nextRoute.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.emplace(nextRoute.<a class="code" href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">route</a>.end());</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;                            element = &amp;(*iter);</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;                            element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#a877d5ed3d176e1b7b6567a5c5fbe0577">domainID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>-&gt;<a class="code" href="structam_1_1am__Source__s.html#a57854adc822ed77c6443ec2c745820af">domainID</a>;</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;                            element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#aa62eb1c5d54fce616106aa928e72beba">sourceID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">source</a>-&gt;<a class="code" href="structam_1_1am__Source__s.html#ad224888802fabebefe6ff587412da9fd">sourceID</a>;</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;                            element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#ab532c1225badbf5cd967ac602e8b64e0">connectionFormat</a> = <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>;</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;                        }</div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;                        <span class="keywordflow">else</span> <span class="keywordflow">if</span>(routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">type</a>==CAmNodeDataType::SINK)</div><div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;                        {</div><div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;                            element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#a877d5ed3d176e1b7b6567a5c5fbe0577">domainID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a8505cd0b29334007bd6dd5555f482cce">domainID</a>;</div><div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;                            element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#a14d52e48dad6d576b5da792168eec193">sinkID</a> = routingData.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">data</a>.<a class="code" href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">sink</a>-&gt;<a class="code" href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">sinkID</a>;</div><div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;                            element-&gt;<a class="code" href="structam_1_1am__RoutingElement__s.html#ab532c1225badbf5cd967ac602e8b64e0">connectionFormat</a> = <a class="code" href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">CF_UNKNOWN</a>;</div><div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;                        }</div><div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;                    }</div><div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;                });</div><div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;</div><div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = paths.begin(); successCount &lt; mMaxPathCount &amp;&amp; it != paths.end(); it++)</div><div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;        {</div><div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;            <span class="keywordflow">if</span> (cfPermutationsForPath(*it, resultNodesPath[it - paths.begin()], resultPath) == <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea69e1cb25d3b8fa1920d07ab65930cb7d">E_UNKNOWN</a>)</div><div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;                errorsCount++;</div><div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;                successCount++;</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;        }</div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;</div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;        <span class="keywordflow">if</span> (successCount)</div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a>;</div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;        <span class="keywordflow">if</span> (errorsCount)</div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ceae449ff2b773d583d7274ca6d4dbd03cb">E_NOT_POSSIBLE</a>;</div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">E_OK</a>;</div><div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;    }</div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;</div><div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;}</div><div class="ttc" id="classam_1_1CAmRouter_html_a928bdf737d9786f2896176122e3b89c2"><div class="ttname"><a href="classam_1_1CAmRouter.html#a928bdf737d9786f2896176122e3b89c2">am::CAmRouter::converterNodeWithSinkID</a></div><div class="ttdeci">CAmRoutingNode * converterNodeWithSinkID(const am_sinkID_t sinkID, const am_domainID_t domainID)</div><div class="ttdoc">Returns a converter node for given sinkID. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00284">CAmRouter.cpp:284</a></div></div>
<div class="ttc" id="structam_1_1am__Converter__s_html_a7e66c234376aa4fce173cfdc3aebff82"><div class="ttname"><a href="structam_1_1am__Converter__s.html#a7e66c234376aa4fce173cfdc3aebff82">am::am_Converter_s::sourceID</a></div><div class="ttdeci">am_sourceID_t sourceID</div><div class="ttdoc">The sourceID of the converter sink-end. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00640">audiomanagertypes.h:640</a></div></div>
<div class="ttc" id="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks_html_aebfece67d798cfaa6f3ec9744c93e358"><div class="ttname"><a href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#aebfece67d798cfaa6f3ec9744c93e358">am::CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks::dboRemovedSource</a></div><div class="ttdeci">std::function&lt; void(const am_sourceID_t, const bool)&gt; dboRemovedSource</div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseHandlerMap_8h_source.html#l00095">CAmDatabaseHandlerMap.h:95</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_a5a3dd752289cfacdc8c9599b69d36871"><div class="ttname"><a href="classam_1_1CAmRouter.html#a5a3dd752289cfacdc8c9599b69d36871">am::CAmRouter::sourceNodeWithID</a></div><div class="ttdeci">CAmRoutingNode * sourceNodeWithID(const am_sourceID_t sourceID)</div><div class="ttdoc">Returns a source node with given sourceID. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00259">CAmRouter.cpp:259</a></div></div>
<div class="ttc" id="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks_html_a24c3785630219a10ce19d7cda7a540b8"><div class="ttname"><a href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#a24c3785630219a10ce19d7cda7a540b8">am::CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks::dboNewSink</a></div><div class="ttdeci">std::function&lt; void(const am_Sink_s &amp;)&gt; dboNewSink</div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseHandlerMap_8h_source.html#l00086">CAmDatabaseHandlerMap.h:86</a></div></div>
<div class="ttc" id="classam_1_1IAmDatabaseHandler_html_a826dc83fc99f4ef9bc96d58678f6f062"><div class="ttname"><a href="classam_1_1IAmDatabaseHandler.html#a826dc83fc99f4ef9bc96d58678f6f062">am::IAmDatabaseHandler::enumerateSources</a></div><div class="ttdeci">virtual am_Error_e enumerateSources(std::function&lt; void(const am_Source_s &amp;element)&gt; cb) const =0</div></div>
<div class="ttc" id="structam_1_1am__RoutingElement__s_html_aa62eb1c5d54fce616106aa928e72beba"><div class="ttname"><a href="structam_1_1am__RoutingElement__s.html#aa62eb1c5d54fce616106aa928e72beba">am::am_RoutingElement_s::sourceID</a></div><div class="ttdeci">am_sourceID_t sourceID</div><div class="ttdoc">the source ID </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00791">audiomanagertypes.h:791</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingNodeData__s_html_a40dca77f6ca7b2dc92796ac4f271665c"><div class="ttname"><a href="structam_1_1am__RoutingNodeData__s.html#a40dca77f6ca7b2dc92796ac4f271665c">am::am_RoutingNodeData_s::domainID</a></div><div class="ttdeci">am_domainID_t domainID() const </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00132">CAmRouter.h:132</a></div></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_aa3dcb70029da317d661b6f422de1b4cea0f1d576f3d17aa86498a61ec9d8a6453"><div class="ttname"><a href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea0f1d576f3d17aa86498a61ec9d8a6453">am::E_NON_EXISTENT</a></div><div class="ttdoc">the desired object is non existent </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00374">audiomanagertypes.h:374</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="structam_1_1am__Gateway__s_html_a7a7eddd6f1051cbda5e1c37b4df6ea15"><div class="ttname"><a href="structam_1_1am__Gateway__s.html#a7a7eddd6f1051cbda5e1c37b4df6ea15">am::am_Gateway_s::domainSourceID</a></div><div class="ttdeci">am_domainID_t domainSourceID</div><div class="ttdoc">The ID of the source. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00735">audiomanagertypes.h:735</a></div></div>
<div class="ttc" id="classam_1_1CAmGraph_html_afbaea2860663d3266a7b4d25e5041b5d"><div class="ttname"><a href="classam_1_1CAmGraph.html#afbaea2860663d3266a7b4d25e5041b5d">am::CAmGraph::getShortestPath</a></div><div class="ttdeci">void getShortestPath(const CAmNode&lt; T &gt; &amp;source, const CAmListNodePtrs &amp;listTargets, std::vector&lt; CAmListNodePtrs &gt; &amp;resultPath)</div><div class="ttdoc">Finds the shortest path from given node to all nodes in listTargets. </div><div class="ttdef"><b>Definition:</b> <a href="CAmGraph_8h_source.html#l00554">CAmGraph.h:554</a></div></div>
<div class="ttc" id="classam_1_1CAmGraph_html_a54afa84a6cedb9558108352b551d4cf3"><div class="ttname"><a href="classam_1_1CAmGraph.html#a54afa84a6cedb9558108352b551d4cf3">am::CAmGraph::connectNodes</a></div><div class="ttdeci">void connectNodes(const CAmNode&lt; T &gt; &amp;first, const CAmNode&lt; T &gt; &amp;last, const V &amp;vertexData, const int16_t weight=1)</div><div class="ttdoc">Connect first with last node and set user data and weight to the vertex. </div><div class="ttdef"><b>Definition:</b> <a href="CAmGraph_8h_source.html#l00481">CAmGraph.h:481</a></div></div>
<div class="ttc" id="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks_html_aa495d5e3016f968a8937356fa4baca2e"><div class="ttname"><a href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#aa495d5e3016f968a8937356fa4baca2e">am::CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks::dboRemovedSink</a></div><div class="ttdeci">std::function&lt; void(const am_sinkID_t, const bool)&gt; dboRemovedSink</div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseHandlerMap_8h_source.html#l00094">CAmDatabaseHandlerMap.h:94</a></div></div>
<div class="ttc" id="structam_1_1am__Sink__s_html"><div class="ttname"><a href="structam_1_1am__Sink__s.html">am::am_Sink_s</a></div><div class="ttdoc">This struct describes the attribiutes of a sink. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l01137">audiomanagertypes.h:1137</a></div></div>
<div class="ttc" id="classam_1_1CAmNode_html_aa74cd25b5a14a4c0ad0284a6c33b24ba"><div class="ttname"><a href="classam_1_1CAmNode.html#aa74cd25b5a14a4c0ad0284a6c33b24ba">am::CAmNode::getData</a></div><div class="ttdeci">NodeData &amp; getData()</div><div class="ttdoc">Setters and getters. </div><div class="ttdef"><b>Definition:</b> <a href="CAmGraph_8h_source.html#l00091">CAmGraph.h:91</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingNodeData__s_html_ac1e5030a95c5529ebdf563deef3e276cae7dc94753104a5288049a249cb3193e4"><div class="ttname"><a href="structam_1_1am__RoutingNodeData__s.html#ac1e5030a95c5529ebdf563deef3e276cae7dc94753104a5288049a249cb3193e4">am::am_RoutingNodeData_s::GATEWAY</a></div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00080">CAmRouter.h:80</a></div></div>
<div class="ttc" id="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks_html_a73e48865df8f26a5b8ac39cd71e3bd7e"><div class="ttname"><a href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#a73e48865df8f26a5b8ac39cd71e3bd7e">am::CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks::dboRemoveConverter</a></div><div class="ttdeci">std::function&lt; void(const am_converterID_t)&gt; dboRemoveConverter</div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseHandlerMap_8h_source.html#l00098">CAmDatabaseHandlerMap.h:98</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingElement__s_html_ab532c1225badbf5cd967ac602e8b64e0"><div class="ttname"><a href="structam_1_1am__RoutingElement__s.html#ab532c1225badbf5cd967ac602e8b64e0">am::am_RoutingElement_s::connectionFormat</a></div><div class="ttdeci">am_CustomConnectionFormat_t connectionFormat</div><div class="ttdoc">the connectionformat that is used for the route </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00803">audiomanagertypes.h:803</a></div></div>
<div class="ttc" id="structam_1_1am__Sink__s_html_a3b934f91d2925407db8e0bac0db94fb1"><div class="ttname"><a href="structam_1_1am__Sink__s.html#a3b934f91d2925407db8e0bac0db94fb1">am::am_Sink_s::sinkID</a></div><div class="ttdeci">am_sinkID_t sinkID</div><div class="ttdoc">This is the ID of the sink, it is unique in the system. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l01147">audiomanagertypes.h:1147</a></div></div>
<div class="ttc" id="classam_1_1CAmGraph_html_aac6081d0d2bae9c619b1e7f888f103d4"><div class="ttname"><a href="classam_1_1CAmGraph.html#aac6081d0d2bae9c619b1e7f888f103d4">am::CAmGraph::addNode</a></div><div class="ttdeci">CAmNode&lt; T &gt; &amp; addNode(const T &amp;in)</div><div class="ttdoc">Adds a new node to the graph with given user data. </div><div class="ttdef"><b>Definition:</b> <a href="CAmGraph_8h_source.html#l00410">CAmGraph.h:410</a></div></div>
<div class="ttc" id="structam_1_1am__Gateway__s_html_a60cdd73682f723692a3019edc6fdacf5"><div class="ttname"><a href="structam_1_1am__Gateway__s.html#a60cdd73682f723692a3019edc6fdacf5">am::am_Gateway_s::controlDomainID</a></div><div class="ttdeci">am_domainID_t controlDomainID</div><div class="ttdoc">This is the ID of the domain that registers the gateway. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00739">audiomanagertypes.h:739</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingNodeData__s_html_a240b8789e06edcebdfc7d0b14f4cf109"><div class="ttname"><a href="structam_1_1am__RoutingNodeData__s.html#a240b8789e06edcebdfc7d0b14f4cf109">am::am_RoutingNodeData_s::type</a></div><div class="ttdeci">am_NodeDataType_e type</div><div class="ttdoc">data type:sink, source, gateway or converter </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00082">CAmRouter.h:82</a></div></div>
<div class="ttc" id="namespaceam_html_a114262d77aae4ed1d2daa50a36155d3e"><div class="ttname"><a href="namespaceam.html#a114262d77aae4ed1d2daa50a36155d3e">am::am_CustomConnectionFormat_t</a></div><div class="ttdeci">uint16_t am_CustomConnectionFormat_t</div><div class="ttdoc">This type classifies the format in which data is exchanged within a connection. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00148">audiomanagertypes.h:148</a></div></div>
<div class="ttc" id="structam_1_1am__Route__s_html_abf0e80b6a3c873f98df00ab7e0ab014c"><div class="ttname"><a href="structam_1_1am__Route__s.html#abf0e80b6a3c873f98df00ab7e0ab014c">am::am_Route_s::sourceID</a></div><div class="ttdeci">am_sourceID_t sourceID</div><div class="ttdoc">the sourceID where the route starts </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00817">audiomanagertypes.h:817</a></div></div>
<div class="ttc" id="structam_1_1am__Converter__s_html_aee7bf298d5962d654d609b8c881d803a"><div class="ttname"><a href="structam_1_1am__Converter__s.html#aee7bf298d5962d654d609b8c881d803a">am::am_Converter_s::sinkID</a></div><div class="ttdeci">am_sinkID_t sinkID</div><div class="ttdoc">The sinkID of the convertersink-end. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00630">audiomanagertypes.h:630</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingNodeData__s_html_a001ab8e1ce7d5f6ed38040f9c38f4679"><div class="ttname"><a href="structam_1_1am__RoutingNodeData__s.html#a001ab8e1ce7d5f6ed38040f9c38f4679">am::am_RoutingNodeData_s::data</a></div><div class="ttdeci">union am::am_RoutingNodeData_s::@0 data</div><div class="ttdoc">union pointer to sink, source, gateway or converter </div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_abfe25345318af7e96d13c08acb0d79d5"><div class="ttname"><a href="classam_1_1CAmRouter.html#abfe25345318af7e96d13c08acb0d79d5">am::CAmRouter::getRestrictedOutputFormats</a></div><div class="ttdeci">static bool getRestrictedOutputFormats(const std::vector&lt; bool &gt; &amp;convertionMatrix, const std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;listSourceFormats, const std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;listSinkFormats, const am_CustomConnectionFormat_t connectionFormat, std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;listFormats)</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00865">CAmRouter.cpp:865</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_aec93bdf7c20934bedf1dcd3cbd6b162e"><div class="ttname"><a href="classam_1_1CAmRouter.html#aec93bdf7c20934bedf1dcd3cbd6b162e">am::CAmRouter::getFirstNShortestPaths</a></div><div class="ttdeci">am_Error_e getFirstNShortestPaths(const bool onlyfree, const unsigned cycles, const unsigned maxPathCount, CAmRoutingNode &amp;source, CAmRoutingNode &amp;sink, std::vector&lt; am_Route_s &gt; &amp;resultPath)</div><div class="ttdoc">Find first mMaxPathCount paths between given source and sink. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00715">CAmRouter.cpp:715</a></div></div>
<div class="ttc" id="namespaceam_html_a50170d91d053ff9f44ce0f8609d094a6"><div class="ttname"><a href="namespaceam.html#a50170d91d053ff9f44ce0f8609d094a6">am::CF_UNKNOWN</a></div><div class="ttdeci">A_CONST am_CustomConnectionFormat_t CF_UNKNOWN</div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00149">audiomanagertypes.h:149</a></div></div>
<div class="ttc" id="CAmDltWrapper_8h_html"><div class="ttname"><a href="CAmDltWrapper_8h.html">CAmDltWrapper.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="classam_1_1IAmDatabaseHandler_html_a457eaf048c0f6da8b54607220d16ef44"><div class="ttname"><a href="classam_1_1IAmDatabaseHandler.html#a457eaf048c0f6da8b54607220d16ef44">am::IAmDatabaseHandler::enumerateConverters</a></div><div class="ttdeci">virtual am_Error_e enumerateConverters(std::function&lt; void(const am_Converter_s &amp;element)&gt; cb) const =0</div></div>
<div class="ttc" id="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks_html_a406c7e8f23d2845a657e2f7c2cbe41cc"><div class="ttname"><a href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#a406c7e8f23d2845a657e2f7c2cbe41cc">am::CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks::dboNewSource</a></div><div class="ttdeci">std::function&lt; void(const am_Source_s &amp;)&gt; dboNewSource</div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseHandlerMap_8h_source.html#l00087">CAmDatabaseHandlerMap.h:87</a></div></div>
<div class="ttc" id="namespaceam_html_a5ddc1de5c77502d9fd136f30a5ebbd7c"><div class="ttname"><a href="namespaceam.html#a5ddc1de5c77502d9fd136f30a5ebbd7c">am::am_GraphPathPosition_e</a></div><div class="ttdeci">GRAPH_PATH_END am_GraphPathPosition_e</div><div class="ttdef"><b>Definition:</b> <a href="CAmGraph_8h_source.html#l00058">CAmGraph.h:58</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingElement__s_html_a14d52e48dad6d576b5da792168eec193"><div class="ttname"><a href="structam_1_1am__RoutingElement__s.html#a14d52e48dad6d576b5da792168eec193">am::am_RoutingElement_s::sinkID</a></div><div class="ttdeci">am_sinkID_t sinkID</div><div class="ttdoc">the sinkID </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00795">audiomanagertypes.h:795</a></div></div>
<div class="ttc" id="classam_1_1CAmControlSender_html_a78de0729435fd75879d1c0ef94cd7106"><div class="ttname"><a href="classam_1_1CAmControlSender.html#a78de0729435fd75879d1c0ef94cd7106">am::CAmControlSender::getConnectionFormatChoice</a></div><div class="ttdeci">am_Error_e getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_Route_s listRoute, const std::vector&lt; am_CustomConnectionFormat_t &gt; listPossibleConnectionFormats, std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;listPrioConnectionFormats)</div><div class="ttdef"><b>Definition:</b> <a href="CAmControlSender_8cpp_source.html#l00439">CAmControlSender.cpp:439</a></div></div>
<div class="ttc" id="structam_1_1am__Gateway__s_html_a63f43a5cb279bea36e12617932d06c50"><div class="ttname"><a href="structam_1_1am__Gateway__s.html#a63f43a5cb279bea36e12617932d06c50">am::am_Gateway_s::sinkID</a></div><div class="ttdeci">am_sinkID_t sinkID</div><div class="ttdoc">The sinkID of the gateway sink-end. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00713">audiomanagertypes.h:713</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_aad34e149db42d6760cccaa591b76d38e"><div class="ttname"><a href="classam_1_1CAmRouter.html#aad34e149db42d6760cccaa591b76d38e">am::CAmRouter::getRouteFromLoadedNodes</a></div><div class="ttdeci">am_Error_e getRouteFromLoadedNodes(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector&lt; am_Route_s &gt; &amp;returnList)</div><div class="ttdoc">Find first mMaxPathCount paths between given source and sink after the nodes have been loaded...</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00126">CAmRouter.cpp:126</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_ab3d6369fed84e8dd2827b76a302ceb86"><div class="ttname"><a href="classam_1_1CAmRouter.html#ab3d6369fed84e8dd2827b76a302ceb86">am::CAmRouter::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00225">CAmRouter.cpp:225</a></div></div>
<div class="ttc" id="CAmRouter_8h_html"><div class="ttname"><a href="CAmRouter_8h.html">CAmRouter.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="structam_1_1am__Gateway__s_html_afea929a5d18e3a0c4a00575b7596cfb3"><div class="ttname"><a href="structam_1_1am__Gateway__s.html#afea929a5d18e3a0c4a00575b7596cfb3">am::am_Gateway_s::listSinkFormats</a></div><div class="ttdeci">std::vector&lt; am_CustomConnectionFormat_t &gt; listSinkFormats</div><div class="ttdoc">This is the list of available formats on the sink side of the gateway. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00751">audiomanagertypes.h:751</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingNodeData__s_html_a9794d679917230d191c144b5b36fe783"><div class="ttname"><a href="structam_1_1am__RoutingNodeData__s.html#a9794d679917230d191c144b5b36fe783">am::am_RoutingNodeData_s::source</a></div><div class="ttdeci">am_Source_s * source</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00085">CAmRouter.h:85</a></div></div>
<div class="ttc" id="CAmRouter_8h_html_a9d70e10c712a8a908b5dc0d253955c25"><div class="ttname"><a href="CAmRouter_8h.html#a9d70e10c712a8a908b5dc0d253955c25">MAX_ROUTING_PATHS</a></div><div class="ttdeci">#define MAX_ROUTING_PATHS</div><div class="ttdoc">Optimal path search is implemented with graph which contains nodes - sinks, sources, gateways, converters. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00056">CAmRouter.h:56</a></div></div>
<div class="ttc" id="namespaceam_html_a21f8ea45717692cd82c42c222a6ee3c8"><div class="ttname"><a href="namespaceam.html#a21f8ea45717692cd82c42c222a6ee3c8">am::am_converterID_t</a></div><div class="ttdeci">uint16_t am_converterID_t</div><div class="ttdoc">a converter ID </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00070">audiomanagertypes.h:70</a></div></div>
<div class="ttc" id="structam_1_1am__Converter__s_html_a1bcc326c4059a8edf73665f618bf6c75"><div class="ttname"><a href="structam_1_1am__Converter__s.html#a1bcc326c4059a8edf73665f618bf6c75">am::am_Converter_s::listSourceFormats</a></div><div class="ttdeci">std::vector&lt; am_CustomConnectionFormat_t &gt; listSourceFormats</div><div class="ttdoc">This is the list of available formats on the source side of the converter. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00650">audiomanagertypes.h:650</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_a388cee6f4d96f0c3d5b9b844209e3304"><div class="ttname"><a href="classam_1_1CAmRouter.html#a388cee6f4d96f0c3d5b9b844209e3304">am::CAmRouter::sinkNodeWithID</a></div><div class="ttdeci">CAmRoutingNode * sinkNodeWithID(const am_sinkID_t sinkID)</div><div class="ttdoc">Returns a sink node with given sinkID. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00234">CAmRouter.cpp:234</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_adbf59722ed983e95db461ab4740c0a4b"><div class="ttname"><a href="classam_1_1CAmRouter.html#adbf59722ed983e95db461ab4740c0a4b">am::CAmRouter::listPossibleConnectionFormats</a></div><div class="ttdeci">static void listPossibleConnectionFormats(std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;inListSourceFormats, std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;inListSinkFormats, std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;outListFormats)</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00856">CAmRouter.cpp:856</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingElement__s_html"><div class="ttname"><a href="structam_1_1am__RoutingElement__s.html">am::am_RoutingElement_s</a></div><div class="ttdoc">This represents one &quot;hopp&quot; in a route. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00784">audiomanagertypes.h:784</a></div></div>
<div class="ttc" id="classam_1_1CAmVertex_html"><div class="ttname"><a href="classam_1_1CAmVertex.html">am::CAmVertex</a></div><div class="ttdef"><b>Definition:</b> <a href="CAmGraph_8h_source.html#l00097">CAmGraph.h:97</a></div></div>
<div class="ttc" id="IAmDatabaseHandler_8h_html"><div class="ttname"><a href="IAmDatabaseHandler_8h.html">IAmDatabaseHandler.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="structam_1_1am__Source__s_html_a57854adc822ed77c6443ec2c745820af"><div class="ttname"><a href="structam_1_1am__Source__s.html#a57854adc822ed77c6443ec2c745820af">am::am_Source_s::domainID</a></div><div class="ttdeci">am_domainID_t domainID</div><div class="ttdoc">The domainID is the domain the source belongs to. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l01247">audiomanagertypes.h:1247</a></div></div>
<div class="ttc" id="namespaceam_html_aa3dcb70029da317d661b6f422de1b4cea69e1cb25d3b8fa1920d07ab65930cb7d"><div class="ttname"><a href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea69e1cb25d3b8fa1920d07ab65930cb7d">am::E_UNKNOWN</a></div><div class="ttdoc">default </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00346">audiomanagertypes.h:346</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingNodeData__s_html_a3e64f452e79f69f04afd2fc19d1db1f1"><div class="ttname"><a href="structam_1_1am__RoutingNodeData__s.html#a3e64f452e79f69f04afd2fc19d1db1f1">am::am_RoutingNodeData_s::gateway</a></div><div class="ttdeci">am_Gateway_s * gateway</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00087">CAmRouter.h:87</a></div></div>
<div class="ttc" id="namespaceam_html_a2711516b1392ea02a7ed25fcd540a16a"><div class="ttname"><a href="namespaceam.html#a2711516b1392ea02a7ed25fcd540a16a">am::am_sourceID_t</a></div><div class="ttdeci">uint16_t am_sourceID_t</div><div class="ttdoc">a source ID </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00060">audiomanagertypes.h:60</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_a8473851712e2b6f6f7a3ee1b3a5b6967"><div class="ttname"><a href="classam_1_1CAmRouter.html#a8473851712e2b6f6f7a3ee1b3a5b6967">am::CAmRouter::CAmRouter</a></div><div class="ttdeci">CAmRouter(IAmDatabaseHandler *iDatabaseHandler, CAmControlSender *iSender)</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00049">CAmRouter.cpp:49</a></div></div>
<div class="ttc" id="CAmRouter_8h_html_a1aacfba78a3f6aa3cb6514bb8b1458e3"><div class="ttname"><a href="CAmRouter_8h.html#a1aacfba78a3f6aa3cb6514bb8b1458e3">MAX_ALLOWED_DOMAIN_CYCLES</a></div><div class="ttdeci">#define MAX_ALLOWED_DOMAIN_CYCLES</div><div class="ttdoc">How many times the routing algorithm should look back into domains. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00068">CAmRouter.h:68</a></div></div>
<div class="ttc" id="structam_1_1am__Converter__s_html_a15cc5a4dd74ae27aa51f18a89ce01a1a"><div class="ttname"><a href="structam_1_1am__Converter__s.html#a15cc5a4dd74ae27aa51f18a89ce01a1a">am::am_Converter_s::listSinkFormats</a></div><div class="ttdeci">std::vector&lt; am_CustomConnectionFormat_t &gt; listSinkFormats</div><div class="ttdoc">This is the list of available formats on the sink side of the gateway. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00656">audiomanagertypes.h:656</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_a9070c79b936907a886e12bebc425a863"><div class="ttname"><a href="classam_1_1CAmRouter.html#a9070c79b936907a886e12bebc425a863">am::CAmRouter::getAllPaths</a></div><div class="ttdeci">am_Error_e getAllPaths(CAmRoutingNode &amp;aSource, CAmRoutingNode &amp;aSink, std::vector&lt; am_Route_s &gt; &amp;resultPath, std::vector&lt; std::vector&lt; CAmRoutingNode * &gt;&gt; &amp;resultNodesPath, const bool includeCycles=false, const bool onlyFree=false) __attribute__((deprecated(&quot;You should use am_Error_e getFirstNShortestPaths( const bool onlyFree</div><div class="ttdoc">DEPRECATED! </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00910">CAmRouter.cpp:910</a></div></div>
<div class="ttc" id="classam_1_1CAmControlSender_html"><div class="ttname"><a href="classam_1_1CAmControlSender.html">am::CAmControlSender</a></div><div class="ttdoc">sends data to the commandInterface, takes the file of the library that needs to be loaded ...</div><div class="ttdef"><b>Definition:</b> <a href="CAmControlSender_8h_source.html#l00041">CAmControlSender.h:41</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_acbb23f31eb24cdc6c7afd97ee893e423"><div class="ttname"><a href="classam_1_1CAmRouter.html#acbb23f31eb24cdc6c7afd97ee893e423">am::CAmRouter::getAllowedFormatsFromConvMatrix</a></div><div class="ttdeci">static bool getAllowedFormatsFromConvMatrix(const std::vector&lt; bool &gt; &amp;convertionMatrix, const std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;listSourceFormats, const std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;listSinkFormats, std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;sourceFormats, std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;sinkFormats)</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00828">CAmRouter.cpp:828</a></div></div>
<div class="ttc" id="classam_1_1CAmGraph_html_a42029ecef5cb964679df6e36ad23f163"><div class="ttname"><a href="classam_1_1CAmGraph.html#a42029ecef5cb964679df6e36ad23f163">am::CAmGraph::trace</a></div><div class="ttdeci">void trace(std::function&lt; void(const CAmNode&lt; T &gt; &amp;, const std::vector&lt; CAmVertex&lt; T, V &gt; * &gt; &amp;)&gt; cb)</div><div class="ttdoc">Goes through all nodes and vertices and calls the callback. </div><div class="ttdef"><b>Definition:</b> <a href="CAmGraph_8h_source.html#l00535">CAmGraph.h:535</a></div></div>
<div class="ttc" id="namespaceam_html_adfd5dc4939df0960dc2d1651691374d4"><div class="ttname"><a href="namespaceam.html#adfd5dc4939df0960dc2d1651691374d4">am::getMergeConnectionFormats</a></div><div class="ttdeci">void getMergeConnectionFormats(const X *element, const am_CustomConnectionFormat_t connectionFormat, const std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;listConnectionFormats, std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;outListMergeConnectionFormats)</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00037">CAmRouter.cpp:37</a></div></div>
<div class="ttc" id="classam_1_1IAmDatabaseHandler_html"><div class="ttname"><a href="classam_1_1IAmDatabaseHandler.html">am::IAmDatabaseHandler</a></div><div class="ttdoc">This class handles and abstracts the database. </div><div class="ttdef"><b>Definition:</b> <a href="IAmDatabaseHandler_8h_source.html#l00055">IAmDatabaseHandler.h:55</a></div></div>
<div class="ttc" id="structam_1_1am__Converter__s_html"><div class="ttname"><a href="structam_1_1am__Converter__s.html">am::am_Converter_s</a></div><div class="ttdoc">This struct describes the attributes of a converter. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00606">audiomanagertypes.h:606</a></div></div>
<div class="ttc" id="structam_1_1am__Gateway__s_html_af64240ebdea81e5a609953a207b523cc"><div class="ttname"><a href="structam_1_1am__Gateway__s.html#af64240ebdea81e5a609953a207b523cc">am::am_Gateway_s::domainSinkID</a></div><div class="ttdeci">am_domainID_t domainSinkID</div><div class="ttdoc">The ID of the sink. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00729">audiomanagertypes.h:729</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingNodeData__s_html_aa703a94ad48e243226fc26d4d2efe96b"><div class="ttname"><a href="structam_1_1am__RoutingNodeData__s.html#aa703a94ad48e243226fc26d4d2efe96b">am::am_RoutingNodeData_s::sink</a></div><div class="ttdeci">am_Sink_s * sink</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00086">CAmRouter.h:86</a></div></div>
<div class="ttc" id="structam_1_1am__Route__s_html_aa88feca01526bbbc69b1f44c9be22462"><div class="ttname"><a href="structam_1_1am__Route__s.html#aa88feca01526bbbc69b1f44c9be22462">am::am_Route_s::route</a></div><div class="ttdeci">std::vector&lt; am_RoutingElement_s &gt; route</div><div class="ttdoc">the actual route as list of routing elements </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00825">audiomanagertypes.h:825</a></div></div>
<div class="ttc" id="structam_1_1am__Route__s_html"><div class="ttname"><a href="structam_1_1am__Route__s.html">am::am_Route_s</a></div><div class="ttdoc">a list of routing elements that lead from source to sink </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00810">audiomanagertypes.h:810</a></div></div>
<div class="ttc" id="structam_1_1am__Gateway__s_html_a299c727ffb962ed1f987fbac889ee06e"><div class="ttname"><a href="structam_1_1am__Gateway__s.html#a299c727ffb962ed1f987fbac889ee06e">am::am_Gateway_s::convertionMatrix</a></div><div class="ttdeci">std::vector&lt; bool &gt; convertionMatrix</div><div class="ttdoc">This is matrix holding information about the conversion capability of the gateway, it&amp;#39;s length is defined by the length(listSinkFormats) x length(listSourceFormats). </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00777">audiomanagertypes.h:777</a></div></div>
<div class="ttc" id="classam_1_1IAmDatabaseHandler_html_a37afd4b9ab5389f375cdca1d5e2d4d4c"><div class="ttname"><a href="classam_1_1IAmDatabaseHandler.html#a37afd4b9ab5389f375cdca1d5e2d4d4c">am::IAmDatabaseHandler::enumerateSinks</a></div><div class="ttdeci">virtual am_Error_e enumerateSinks(std::function&lt; void(const am_Sink_s &amp;element)&gt; cb) const =0</div></div>
<div class="ttc" id="structam_1_1am__Source__s_html_ad224888802fabebefe6ff587412da9fd"><div class="ttname"><a href="structam_1_1am__Source__s.html#ad224888802fabebefe6ff587412da9fd">am::am_Source_s::sourceID</a></div><div class="ttdeci">am_sourceID_t sourceID</div><div class="ttdoc">This is the ID of the source, it is unique in the system. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l01242">audiomanagertypes.h:1242</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_a1759da9a0ac843aa1e9e9a8ef5a5315a"><div class="ttname"><a href="classam_1_1CAmRouter.html#a1759da9a0ac843aa1e9e9a8ef5a5315a">am::CAmRouter::~CAmRouter</a></div><div class="ttdeci">~CAmRouter()</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00099">CAmRouter.cpp:99</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_aec0c02c47a6c4d849995c123a08d4b2c"><div class="ttname"><a href="classam_1_1CAmRouter.html#aec0c02c47a6c4d849995c123a08d4b2c">am::CAmRouter::getShortestPath</a></div><div class="ttdeci">am_Error_e getShortestPath(CAmRoutingNode &amp;source, CAmRoutingNode &amp;sink, std::vector&lt; am_Route_s &gt; &amp;resultPath)</div><div class="ttdoc">Find the shortest path between given source and sink. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00657">CAmRouter.cpp:657</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingNodeData__s_html_ac1e5030a95c5529ebdf563deef3e276ca5c8a2228d2052aeba0c35f5d5ad34889"><div class="ttname"><a href="structam_1_1am__RoutingNodeData__s.html#ac1e5030a95c5529ebdf563deef3e276ca5c8a2228d2052aeba0c35f5d5ad34889">am::am_RoutingNodeData_s::CONVERTER</a></div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00080">CAmRouter.h:80</a></div></div>
<div class="ttc" id="namespaceam_html_aa3dcb70029da317d661b6f422de1b4ceae449ff2b773d583d7274ca6d4dbd03cb"><div class="ttname"><a href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4ceae449ff2b773d583d7274ca6d4dbd03cb">am::E_NOT_POSSIBLE</a></div><div class="ttdoc">the desired action is not possible </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00370">audiomanagertypes.h:370</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingNodeData__s_html_a8fef46ce6e8adad5904eb863820c438e"><div class="ttname"><a href="structam_1_1am__RoutingNodeData__s.html#a8fef46ce6e8adad5904eb863820c438e">am::am_RoutingNodeData_s::converter</a></div><div class="ttdeci">am_Converter_s * converter</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00088">CAmRouter.h:88</a></div></div>
<div class="ttc" id="namespaceam_html_abcde4f3c2d4e51bca986488b88de323d"><div class="ttname"><a href="namespaceam.html#abcde4f3c2d4e51bca986488b88de323d">am::CAmRoutingListVertices</a></div><div class="ttdeci">std::list&lt; CAmRoutingVertex &gt; CAmRoutingListVertices</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00151">CAmRouter.h:151</a></div></div>
<div class="ttc" id="classam_1_1IAmDatabaseHandler_html_ae3e99505973906e6a11943e6a2d325bc"><div class="ttname"><a href="classam_1_1IAmDatabaseHandler.html#ae3e99505973906e6a11943e6a2d325bc">am::IAmDatabaseHandler::enumerateGateways</a></div><div class="ttdeci">virtual am_Error_e enumerateGateways(std::function&lt; void(const am_Gateway_s &amp;element)&gt; cb) const =0</div></div>
<div class="ttc" id="structam_1_1am__Converter__s_html_ab34ebf10f1a75f304f931788ffc1691d"><div class="ttname"><a href="structam_1_1am__Converter__s.html#ab34ebf10f1a75f304f931788ffc1691d">am::am_Converter_s::convertionMatrix</a></div><div class="ttdeci">std::vector&lt; bool &gt; convertionMatrix</div><div class="ttdoc">This is matrix holding information about the conversion capability of the converter, it&amp;#39;s length is defined by the length(listSinkFormats) x length(listSourceFormats). </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00682">audiomanagertypes.h:682</a></div></div>
<div class="ttc" id="structam_1_1am__Gateway__s_html_a2e7f50bbf9f11eb7eec7d585dbbd0159"><div class="ttname"><a href="structam_1_1am__Gateway__s.html#a2e7f50bbf9f11eb7eec7d585dbbd0159">am::am_Gateway_s::sourceID</a></div><div class="ttdeci">am_sourceID_t sourceID</div><div class="ttdoc">The sourceID of the gateway sink-end. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00723">audiomanagertypes.h:723</a></div></div>
<div class="ttc" id="structam_1_1am__Converter__s_html_a129050d36e5f1710bed87e4490e7eb34"><div class="ttname"><a href="structam_1_1am__Converter__s.html#a129050d36e5f1710bed87e4490e7eb34">am::am_Converter_s::domainID</a></div><div class="ttdeci">am_domainID_t domainID</div><div class="ttdoc">This is the ID of the domain that registers the converter. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00644">audiomanagertypes.h:644</a></div></div>
<div class="ttc" id="classam_1_1CAmGraph_html_af25961b4c8868eb20fefd1315dc31e10"><div class="ttname"><a href="classam_1_1CAmGraph.html#af25961b4c8868eb20fefd1315dc31e10">am::CAmGraph::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all nodes and vertices. </div><div class="ttdef"><b>Definition:</b> <a href="CAmGraph_8h_source.html#l00523">CAmGraph.h:523</a></div></div>
<div class="ttc" id="structam_1_1am__Gateway__s_html"><div class="ttname"><a href="structam_1_1am__Gateway__s.html">am::am_Gateway_s</a></div><div class="ttdoc">This struct describes the attributes of a gateway. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00689">audiomanagertypes.h:689</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_a0210aff672959cea42ed6760144d4296"><div class="ttname"><a href="classam_1_1CAmRouter.html#a0210aff672959cea42ed6760144d4296">am::CAmRouter::shouldGoInDomain</a></div><div class="ttdeci">static bool shouldGoInDomain(const std::vector&lt; am_domainID_t &gt; &amp;visitedDomains, const am_domainID_t nodeDomainID, const unsigned maxCyclesNumber)</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00797">CAmRouter.cpp:797</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_a727bfb8b7c52e4c732c20609708f4966"><div class="ttname"><a href="classam_1_1CAmRouter.html#a727bfb8b7c52e4c732c20609708f4966">am::CAmRouter::load</a></div><div class="ttdeci">void load()</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00159">CAmRouter.cpp:159</a></div></div>
<div class="ttc" id="structam_1_1am__Gateway__s_html_a54f4f9c798677a4301477841afbfde1c"><div class="ttname"><a href="structam_1_1am__Gateway__s.html#a54f4f9c798677a4301477841afbfde1c">am::am_Gateway_s::listSourceFormats</a></div><div class="ttdeci">std::vector&lt; am_CustomConnectionFormat_t &gt; listSourceFormats</div><div class="ttdoc">This is the list of available formats on the source side of the gateway. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00745">audiomanagertypes.h:745</a></div></div>
<div class="ttc" id="structam_1_1am__Route__s_html_adc2e4801d4cea72a22d602492b918ec7"><div class="ttname"><a href="structam_1_1am__Route__s.html#adc2e4801d4cea72a22d602492b918ec7">am::am_Route_s::sinkID</a></div><div class="ttdeci">am_sinkID_t sinkID</div><div class="ttdoc">the sinkID where the route ends </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00821">audiomanagertypes.h:821</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_a3a49c89f72a1ed92455b9f976c153970"><div class="ttname"><a href="classam_1_1CAmRouter.html#a3a49c89f72a1ed92455b9f976c153970">am::CAmRouter::gatewayNodeWithSinkID</a></div><div class="ttdeci">CAmRoutingNode * gatewayNodeWithSinkID(const am_sinkID_t sinkID)</div><div class="ttdoc">Returns a gateway node for given sinkID. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00297">CAmRouter.cpp:297</a></div></div>
<div class="ttc" id="classam_1_1CAmNode_html_acfc2a38f7576b6f290ba861a94158eef"><div class="ttname"><a href="classam_1_1CAmNode.html#acfc2a38f7576b6f290ba861a94158eef">am::CAmNode::getIndex</a></div><div class="ttdeci">uint16_t getIndex() const </div><div class="ttdef"><b>Definition:</b> <a href="CAmGraph_8h_source.html#l00093">CAmGraph.h:93</a></div></div>
<div class="ttc" id="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks_html_a3f333ffb10e0e1b45f009dbc941d604e"><div class="ttname"><a href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#a3f333ffb10e0e1b45f009dbc941d604e">am::CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks::dboNewGateway</a></div><div class="ttdeci">std::function&lt; void(const am_Gateway_s &amp;)&gt; dboNewGateway</div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseHandlerMap_8h_source.html#l00089">CAmDatabaseHandlerMap.h:89</a></div></div>
<div class="ttc" id="namespaceam_html_a58a230b5da10699a7ce1b1f2a1c550e6"><div class="ttname"><a href="namespaceam.html#a58a230b5da10699a7ce1b1f2a1c550e6">am::am_domainID_t</a></div><div class="ttdeci">uint16_t am_domainID_t</div><div class="ttdoc">a domain ID </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00045">audiomanagertypes.h:45</a></div></div>
<div class="ttc" id="namespaceam_html_aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36"><div class="ttname"><a href="namespaceam.html#aa3dcb70029da317d661b6f422de1b4cea796d4cc86cd1605f4307478c128eee36">am::E_OK</a></div><div class="ttdoc">no error - positive reply </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00342">audiomanagertypes.h:342</a></div></div>
<div class="ttc" id="CAmControlSender_8h_html"><div class="ttname"><a href="CAmControlSender_8h.html">CAmControlSender.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="structam_1_1am__Source__s_html_a161ce36395faa9faea7db1699c62c700"><div class="ttname"><a href="structam_1_1am__Source__s.html#a161ce36395faa9faea7db1699c62c700">am::am_Source_s::listConnectionFormats</a></div><div class="ttdeci">std::vector&lt; am_CustomConnectionFormat_t &gt; listConnectionFormats</div><div class="ttdoc">This list holds information about the formats that the Source is capable of supporting when deliverin...</div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l01319">audiomanagertypes.h:1319</a></div></div>
<div class="ttc" id="classam_1_1CAmNode_html"><div class="ttname"><a href="classam_1_1CAmNode.html">am::CAmNode&lt; am_RoutingNodeData_s &gt;</a></div></div>
<div class="ttc" id="classam_1_1CAmGraph_html_a82af8323ee0df0fa83294e340ddac83a"><div class="ttname"><a href="classam_1_1CAmGraph.html#a82af8323ee0df0fa83294e340ddac83a">am::CAmGraph::getAllPaths</a></div><div class="ttdeci">void getAllPaths(CAmNode&lt; T &gt; &amp;src, CAmNode&lt; T &gt; &amp;dst, std::function&lt; bool(const CAmNode&lt; T &gt; *)&gt; cbShouldVisitNode, std::function&lt; void(const CAmNode&lt; T &gt; *)&gt; cbWillVisitNode, std::function&lt; void(const CAmNode&lt; T &gt; *)&gt; cbDidVisitNode, std::function&lt; void(const CAmNodeReferenceList &amp;path)&gt; cbDidFindPath)</div><div class="ttdoc">Finds all possible paths between two given nodes. </div><div class="ttdef"><b>Definition:</b> <a href="CAmGraph_8h_source.html#l00656">CAmGraph.h:656</a></div></div>
<div class="ttc" id="namespaceam_html_af671cec58d6713a0c1e4eaa9c89613d5"><div class="ttname"><a href="namespaceam.html#af671cec58d6713a0c1e4eaa9c89613d5">am::am_gatewayID_t</a></div><div class="ttdeci">uint16_t am_gatewayID_t</div><div class="ttdoc">a gateway ID </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00075">audiomanagertypes.h:75</a></div></div>
<div class="ttc" id="structam_1_1am__Source__s_html"><div class="ttname"><a href="structam_1_1am__Source__s.html">am::am_Source_s</a></div><div class="ttdoc">This struct describes the attribiutes of a source. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l01232">audiomanagertypes.h:1232</a></div></div>
<div class="ttc" id="namespaceam_html_aac2b901ff83ee381fbe99913753e2416"><div class="ttname"><a href="namespaceam.html#aac2b901ff83ee381fbe99913753e2416">am::am_sinkID_t</a></div><div class="ttdeci">uint16_t am_sinkID_t</div><div class="ttdoc">a sink ID </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00065">audiomanagertypes.h:65</a></div></div>
<div class="ttc" id="classam_1_1CAmDatabaseHandlerMap_html"><div class="ttname"><a href="classam_1_1CAmDatabaseHandlerMap.html">am::CAmDatabaseHandlerMap</a></div><div class="ttdoc">This class handles and abstracts the database. </div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseHandlerMap_8h_source.html#l00064">CAmDatabaseHandlerMap.h:64</a></div></div>
<div class="ttc" id="structam_1_1am__Sink__s_html_a8505cd0b29334007bd6dd5555f482cce"><div class="ttname"><a href="structam_1_1am__Sink__s.html#a8505cd0b29334007bd6dd5555f482cce">am::am_Sink_s::domainID</a></div><div class="ttdeci">am_domainID_t domainID</div><div class="ttdoc">The domainID is the domain the sink belongs to. </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l01156">audiomanagertypes.h:1156</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingElement__s_html_a877d5ed3d176e1b7b6567a5c5fbe0577"><div class="ttname"><a href="structam_1_1am__RoutingElement__s.html#a877d5ed3d176e1b7b6567a5c5fbe0577">am::am_RoutingElement_s::domainID</a></div><div class="ttdeci">am_domainID_t domainID</div><div class="ttdoc">the domainID the routeElement is in </div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l00799">audiomanagertypes.h:799</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_ae76981f37d91bcd2da721c3bf141e415"><div class="ttname"><a href="classam_1_1CAmRouter.html#ae76981f37d91bcd2da721c3bf141e415">am::CAmRouter::getRoute</a></div><div class="ttdeci">am_Error_e getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector&lt; am_Route_s &gt; &amp;returnList)</div><div class="ttdoc">Find first mMaxPathCount paths between given source and sink. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00111">CAmRouter.cpp:111</a></div></div>
<div class="ttc" id="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks_html_ac16f82bc2e6e2075d33010e8c54eb865"><div class="ttname"><a href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#ac16f82bc2e6e2075d33010e8c54eb865">am::CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks::dboRemoveGateway</a></div><div class="ttdeci">std::function&lt; void(const am_gatewayID_t)&gt; dboRemoveGateway</div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseHandlerMap_8h_source.html#l00097">CAmDatabaseHandlerMap.h:97</a></div></div>
<div class="ttc" id="structam_1_1am__Sink__s_html_af5692eedaf4886be06f92293cd474d3e"><div class="ttname"><a href="structam_1_1am__Sink__s.html#af5692eedaf4886be06f92293cd474d3e">am::am_Sink_s::listConnectionFormats</a></div><div class="ttdeci">std::vector&lt; am_CustomConnectionFormat_t &gt; listConnectionFormats</div><div class="ttdoc">This list holds information about the formats that the Source is capable of supporting when deliverin...</div><div class="ttdef"><b>Definition:</b> <a href="audiomanagertypes_8h_source.html#l01209">audiomanagertypes.h:1209</a></div></div>
<div class="ttc" id="structam_1_1am__RoutingNodeData__s_html"><div class="ttname"><a href="structam_1_1am__RoutingNodeData__s.html">am::am_RoutingNodeData_s</a></div><div class="ttdoc">A structure used as user data in the graph nodes. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00076">CAmRouter.h:76</a></div></div>
<div class="ttc" id="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks_html_a995677c2992ea66729cf26ebed083c01"><div class="ttname"><a href="structam_1_1CAmDatabaseHandlerMap_1_1AmDatabaseObserverCallbacks.html#a995677c2992ea66729cf26ebed083c01">am::CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks::dboNewConverter</a></div><div class="ttdeci">std::function&lt; void(const am_Converter_s &amp;)&gt; dboNewConverter</div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseHandlerMap_8h_source.html#l00090">CAmDatabaseHandlerMap.h:90</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html_a18480d4cd51e8a1dd35a4d9ce7c34ec1"><div class="ttname"><a href="classam_1_1CAmRouter.html#a18480d4cd51e8a1dd35a4d9ce7c34ec1">am::CAmRouter::getSourceSinkPossibleConnectionFormats</a></div><div class="ttdeci">static am_Error_e getSourceSinkPossibleConnectionFormats(std::vector&lt; CAmRoutingNode * &gt;::iterator iteratorSource, std::vector&lt; CAmRoutingNode * &gt;::iterator iteratorSink, std::vector&lt; am_CustomConnectionFormat_t &gt; &amp;outConnectionFormats)</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8cpp_source.html#l00893">CAmRouter.cpp:893</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_73840c26962c025d9d91b16130beda5a.html">AudioManagerCore</a></li><li class="navelem"><a class="el" href="dir_218adc744edff50228af3539b32b7808.html">src</a></li><li class="navelem"><a class="el" href="CAmRouter_8cpp.html">CAmRouter.cpp</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>