summaryrefslogtreecommitdiff
path: root/main_8cpp_source.html
blob: 9b9df415225fc669a18e63a195d816ddc888f782 (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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
<!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.6"/>
<title>AudioManager: AudioManagerDaemon/src/main.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="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/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
   <div id="projectname">AudioManager
   &#160;<span id="projectnumber">7.5.11</span>
   </div>
   <div id="projectbrief">Native Application Runtime Environment</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<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="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('main_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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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">main.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="main_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 &quot;audiomanagerconfig.h&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#ifdef  WITH_TELNET</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor"></span><span class="preprocessor">    #include &quot;<a class="code" href="CAmTelnetServer_8h.html">CAmTelnetServer.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#ifdef WITH_CAPI_WRAPPER</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor"></span><span class="preprocessor">    #include &quot;<a class="code" href="CAmCommonAPIWrapper_8h.html">CAmCommonAPIWrapper.h</a>&quot;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#ifdef WITH_DBUS_WRAPPER</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor"></span><span class="preprocessor">    #include &quot;<a class="code" href="CAmDbusWrapper_8h.html">CAmDbusWrapper.h</a>&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor"></span></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;<span class="preprocessor">#ifdef WITH_DATABASE_STORAGE</span></div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor"></span><span class="preprocessor">    #include &quot;CAmDatabaseHandlerSQLite.h&quot;</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor"></span><span class="preprocessor">    #include &quot;<a class="code" href="CAmDatabaseHandlerMap_8h.html">CAmDatabaseHandlerMap.h</a>&quot;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#ifdef WITH_SYSTEMD_WATCHDOG</span></div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor"></span><span class="preprocessor">    #include &quot;<a class="code" href="CAmWatchdog_8h.html">CAmWatchdog.h</a>&quot;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;sys/resource.h&gt;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#include &lt;csignal&gt;</span></div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#include &lt;new&gt;</span></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;<span class="preprocessor">#include &quot;<a class="code" href="CAmRouter_8h.html">CAmRouter.h</a>&quot;</span></div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</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="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmCommandSender_8h.html">CAmCommandSender.h</a>&quot;</span></div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmRoutingSender_8h.html">CAmRoutingSender.h</a>&quot;</span></div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmRoutingReceiver_8h.html">CAmRoutingReceiver.h</a>&quot;</span></div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmCommandReceiver_8h.html">CAmCommandReceiver.h</a>&quot;</span></div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmControlReceiver_8h.html">CAmControlReceiver.h</a>&quot;</span></div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmDatabaseObserver_8h.html">CAmDatabaseObserver.h</a>&quot;</span></div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</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="l00071"></a><span class="lineno">   71</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmSocketHandler_8h.html">CAmSocketHandler.h</a>&quot;</span></div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CAmCommandLineSingleton_8h.html">CAmCommandLineSingleton.h</a>&quot;</span></div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</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;<span class="keyword">using namespace </span>am;</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;<span class="comment">//we need these because we parse them beforehand.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="main_8cpp.html#acf9448b8681363c06fcc6fa2fe67f6a1">   78</a></span>&#160;std::vector&lt;std::string&gt; <a class="code" href="main_8cpp.html#acf9448b8681363c06fcc6fa2fe67f6a1">listCommandPluginDirs</a>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="main_8cpp.html#a2f8343120dfa1adbb5fa439c4a915b5f">   79</a></span>&#160;std::vector&lt;std::string&gt; <a class="code" href="main_8cpp.html#a2f8343120dfa1adbb5fa439c4a915b5f">listRoutingPluginDirs</a>;</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;<span class="comment">//commandline options used by the Audiomanager itself</span></div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;TCLAP::ValueArg&lt;std::string&gt; <a class="code" href="main_8cpp.html#a9651ad77ac5b1ea702db1fba38dbb25a">controllerPlugin</a>(<span class="stringliteral">&quot;c&quot;</span>,<span class="stringliteral">&quot;controllerPlugin&quot;</span>,<span class="stringliteral">&quot;use controllerPlugin full path with .so ending&quot;</span>,<span class="keyword">false</span>,CONTROLLER_PLUGIN_DIR,<span class="stringliteral">&quot;string&quot;</span>);</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;TCLAP::ValueArg&lt;std::string&gt; <a class="code" href="main_8cpp.html#a852c05eb5ba04abd0c9007ebc04f34da">additionalCommandPluginDirs</a>(<span class="stringliteral">&quot;L&quot;</span>,<span class="stringliteral">&quot;additionalCommandPluginDirs&quot;</span>,<span class="stringliteral">&quot;additional path for looking for command plugins, can be used after -l option&quot;</span>,<span class="keyword">false</span>,<span class="stringliteral">&quot; &quot;</span>,<span class="stringliteral">&quot;string&quot;</span>);</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;TCLAP::ValueArg&lt;std::string&gt; <a class="code" href="main_8cpp.html#ab5b77ba1f3bcc145415fb472684fdb87">additionalRoutingPluginDirs</a>(<span class="stringliteral">&quot;R&quot;</span>,<span class="stringliteral">&quot;additionalRoutingPluginDirs&quot;</span>,<span class="stringliteral">&quot;additional path for looking for routing plugins, can be used after -r option &quot;</span>,<span class="keyword">false</span>,<span class="stringliteral">&quot; &quot;</span>,<span class="stringliteral">&quot;string&quot;</span>);</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;TCLAP::ValueArg&lt;std::string&gt; <a class="code" href="main_8cpp.html#adaa5dd304567dc8e32b2cbc1eb048f7e">routingPluginDir</a>(<span class="stringliteral">&quot;r&quot;</span>,<span class="stringliteral">&quot;RoutingPluginDir&quot;</span>,<span class="stringliteral">&quot;path for looking for routing plugins&quot;</span>,<span class="keyword">false</span>,<span class="stringliteral">&quot; &quot;</span>,<span class="stringliteral">&quot;string&quot;</span>);</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;TCLAP::ValueArg&lt;std::string&gt; <a class="code" href="main_8cpp.html#a45c5c45bad7cd6af4b436bae93c16f6e">commandPluginDir</a>(<span class="stringliteral">&quot;l&quot;</span>,<span class="stringliteral">&quot;CommandPluginDir&quot;</span>,<span class="stringliteral">&quot;path for looking for command plugins&quot;</span>,<span class="keyword">false</span>,<span class="stringliteral">&quot; &quot;</span>,<span class="stringliteral">&quot;string&quot;</span>);</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;TCLAP::ValueArg&lt;std::string&gt; <a class="code" href="main_8cpp.html#af300dd02580ca5f086d5903e5145e300">dltLogFilename</a>(<span class="stringliteral">&quot;F&quot;</span>,<span class="stringliteral">&quot;dltLogFilename&quot;</span>,<span class="stringliteral">&quot;the name of the logfile, absolute path. Only if logging is et to file&quot;</span>,<span class="keyword">false</span>,<span class="stringliteral">&quot; &quot;</span>,<span class="stringliteral">&quot;string&quot;</span>);</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;TCLAP::ValueArg&lt;unsigned int&gt; <a class="code" href="main_8cpp.html#a371632b96db9def1ac720a43326272c9">dltOutput</a> (<span class="stringliteral">&quot;O&quot;</span>,<span class="stringliteral">&quot;dltOutput&quot;</span>,<span class="stringliteral">&quot;defines where logs are written. 0=dlt-daemon(default), 1=command line, 2=file &quot;</span>,<span class="keyword">false</span>,0,<span class="stringliteral">&quot;int&quot;</span>);</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;TCLAP::ValueArg&lt;unsigned int&gt; <a class="code" href="main_8cpp.html#afa79058049680c9e2917cc7284ef5d40">telnetPort</a> (<span class="stringliteral">&quot;t&quot;</span>,<span class="stringliteral">&quot;telnetport&quot;</span>,<span class="stringliteral">&quot;The port that is used for telnet&quot;</span>,<span class="keyword">false</span>,DEFAULT_TELNETPORT,<span class="stringliteral">&quot;int&quot;</span>);</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;TCLAP::ValueArg&lt;unsigned int&gt; <a class="code" href="main_8cpp.html#a4bdfdb5daf40d0487ee37dfc3515a8fb">maxConnections</a> (<span class="stringliteral">&quot;m&quot;</span>,<span class="stringliteral">&quot;maxConnections&quot;</span>,<span class="stringliteral">&quot;Maximal number of connections for telnet&quot;</span>,<span class="keyword">false</span>,MAX_TELNETCONNECTIONS,<span class="stringliteral">&quot;int&quot;</span>);</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;TCLAP::SwitchArg <a class="code" href="main_8cpp.html#afa960755d9057786161060f83ef27897">dltEnable</a> (<span class="stringliteral">&quot;e&quot;</span>,<span class="stringliteral">&quot;dltEnable&quot;</span>,<span class="stringliteral">&quot;Enables or disables dlt logging. Default = enabled&quot;</span>,<span class="keyword">true</span>);</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;TCLAP::SwitchArg <a class="code" href="main_8cpp.html#a7920a189875bb1a97c86506493483355">dbusWrapperTypeBool</a> (<span class="stringliteral">&quot;T&quot;</span>,<span class="stringliteral">&quot;dbusType&quot;</span>,<span class="stringliteral">&quot;DbusType to be used by CAmDbusWrapper: if option is selected, DBUS_SYSTEM is used otherwise DBUS_SESSION&quot;</span>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;TCLAP::SwitchArg <a class="code" href="main_8cpp.html#a89176a3c961e9f408ca3c42c29d7e105">currentSettings</a>(<span class="stringliteral">&quot;i&quot;</span>,<span class="stringliteral">&quot;currentSettings&quot;</span>,<span class="stringliteral">&quot;print current settings and exit&quot;</span>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;TCLAP::SwitchArg <a class="code" href="main_8cpp.html#a89ab9082caaf2543afc60151c9801702">daemonizeAM</a>(<span class="stringliteral">&quot;d&quot;</span>,<span class="stringliteral">&quot;daemonize&quot;</span>,<span class="stringliteral">&quot;daemonize Audiomanager. Better use systemd...&quot;</span>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="main_8cpp.html#af65d853335a6d8ffc28a26269ade6e5d">   96</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="main_8cpp.html#a16290b108a943e54375f08cb9ad5fc5a">fd0</a>, <a class="code" href="main_8cpp.html#ac62faf1ed925a0da21ba52b228cb9a47">fd1</a>, <a class="code" href="main_8cpp.html#af65d853335a6d8ffc28a26269ade6e5d">fd2</a>;</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;<span class="preprocessor">#ifdef WITH_DBUS_WRAPPER</span></div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="preprocessor"></span>    DBusBusType dbusWrapperType=DBUS_BUS_SESSION;</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="main_8cpp.html#acc628ca4f61759495f09289b8418d358">  105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="main_8cpp.html#acc628ca4f61759495f09289b8418d358">OutOfMemoryHandler</a>()</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;{</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <a class="code" href="namespaceam.html#ab00ba22db19413e2040c2ab246f220c6">logError</a>(<span class="stringliteral">&quot;No more memory - bye&quot;</span>);</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordflow">throw</span> std::runtime_error(std::string(<span class="stringliteral">&quot;SocketHandler::start_listenting ppoll returned with error.&quot;</span>));</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;}</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="main_8cpp.html#a869452f0c0952acd39230fcf0ef89c1e">  114</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="main_8cpp.html#a869452f0c0952acd39230fcf0ef89c1e">daemonize</a>()</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;{</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    umask(0);</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    std::string dir = <span class="stringliteral">&quot;/&quot;</span>;</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    rlimit rl;</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="keywordflow">if</span> (getrlimit(RLIMIT_NOFILE, &amp;rl) &lt; 0)</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    {</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        <a class="code" href="namespaceam.html#ab00ba22db19413e2040c2ab246f220c6">logError</a>(<span class="stringliteral">&quot;can&#39;t get file limit &quot;</span>);</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    }</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    pid_t pid;</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keywordflow">if</span> ((pid = fork()) &lt; 0)</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    {</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <a class="code" href="namespaceam.html#ab00ba22db19413e2040c2ab246f220c6">logError</a>(<span class="stringliteral">&quot;cannot fork!&quot;</span>);</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    }</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid != 0)</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    {</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        exit(0);</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;</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    setsid();</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="keywordflow">if</span> (!dir.empty() &amp;&amp; chdir(dir.c_str()) &lt; 0)</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    {</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        <a class="code" href="namespaceam.html#ab00ba22db19413e2040c2ab246f220c6">logError</a>(<span class="stringliteral">&quot;couldn&#39;t chdir to the new directory&quot;</span>);</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    }</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="keywordflow">if</span> (rl.rlim_max == RLIM_INFINITY)</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    {</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        rl.rlim_max = 1024;</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    }</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; rl.rlim_max; i++)</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    {</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        close(i);</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    }</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;    <a class="code" href="main_8cpp.html#a16290b108a943e54375f08cb9ad5fc5a">fd0</a> = open(<span class="stringliteral">&quot;/dev/null&quot;</span>, O_RDONLY);</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <a class="code" href="main_8cpp.html#ac62faf1ed925a0da21ba52b228cb9a47">fd1</a> = open(<span class="stringliteral">&quot;/dev/null&quot;</span>, O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR);</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <a class="code" href="main_8cpp.html#af65d853335a6d8ffc28a26269ade6e5d">fd2</a> = open(<span class="stringliteral">&quot;/dev/null&quot;</span>, O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR);</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">if</span> (<a class="code" href="main_8cpp.html#a16290b108a943e54375f08cb9ad5fc5a">fd0</a> != STDIN_FILENO || <a class="code" href="main_8cpp.html#ac62faf1ed925a0da21ba52b228cb9a47">fd1</a> != STDOUT_FILENO || <a class="code" href="main_8cpp.html#af65d853335a6d8ffc28a26269ade6e5d">fd2</a> != STDERR_FILENO)</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;        <a class="code" href="namespaceam.html#ab00ba22db19413e2040c2ab246f220c6">logError</a>(<span class="stringliteral">&quot;new standard file descriptors were not opened&quot;</span>);</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    }</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;}</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;</div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="main_8cpp.html#a20381c995d4b9c2fe11a65df9700fb76">  164</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="main_8cpp.html#a20381c995d4b9c2fe11a65df9700fb76">printCmdInformation</a>()</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;{</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    printf(<span class="stringliteral">&quot;\n\n\nCurrent settings:\n\n&quot;</span>);</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    printf(<span class="stringliteral">&quot;\tAudioManagerDaemon Version:\t\t%s\n&quot;</span>, DAEMONVERSION);</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="preprocessor">#ifdef WITH_TELNET</span></div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor"></span>    printf(<span class="stringliteral">&quot;\tTelnet portNumber:\t\t\t%i\n&quot;</span>, <a class="code" href="main_8cpp.html#afa79058049680c9e2917cc7284ef5d40">telnetPort</a>.getValue());</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    printf(<span class="stringliteral">&quot;\tTelnet maxConnections:\t\t\t%i\n&quot;</span>, <a class="code" href="main_8cpp.html#a4bdfdb5daf40d0487ee37dfc3515a8fb">maxConnections</a>.getValue());</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="preprocessor"></span>    printf(<span class="stringliteral">&quot;\tControllerPlugin: \t\t\t%s\n&quot;</span>, <a class="code" href="main_8cpp.html#a9651ad77ac5b1ea702db1fba38dbb25a">controllerPlugin</a>.getValue().c_str());</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    printf(<span class="stringliteral">&quot;\tDirectories of CommandPlugins: \t\t\n&quot;</span>);</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    std::vector&lt;std::string&gt;::const_iterator dirIter = <a class="code" href="main_8cpp.html#acf9448b8681363c06fcc6fa2fe67f6a1">listCommandPluginDirs</a>.begin();</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    std::vector&lt;std::string&gt;::const_iterator dirIterEnd = <a class="code" href="main_8cpp.html#acf9448b8681363c06fcc6fa2fe67f6a1">listCommandPluginDirs</a>.end();</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keywordflow">for</span> (; dirIter &lt; dirIterEnd; ++dirIter)</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    {</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        printf(<span class="stringliteral">&quot;\t                              \t\t%s\n&quot;</span>, dirIter-&gt;c_str());</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;    printf(<span class="stringliteral">&quot;\tDirectories of RoutingPlugins: \t\t\n&quot;</span>);</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    dirIter = <a class="code" href="main_8cpp.html#a2f8343120dfa1adbb5fa439c4a915b5f">listRoutingPluginDirs</a>.begin();</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    dirIterEnd = <a class="code" href="main_8cpp.html#a2f8343120dfa1adbb5fa439c4a915b5f">listRoutingPluginDirs</a>.end();</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="keywordflow">for</span> (; dirIter &lt; dirIterEnd; ++dirIter)</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    {</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        printf(<span class="stringliteral">&quot;\t                              \t\t%s\n&quot;</span>, dirIter-&gt;c_str());</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    }</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    exit(0);</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;</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> signalHandler(<span class="keywordtype">int</span> sig, siginfo_t *siginfo, <span class="keywordtype">void</span> *context)</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;    (void) sig;</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    (void) siginfo;</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    (void) context;</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <a class="code" href="namespaceam.html#a47d650dc91db97c1f9323b4ed5cf4fd6">logInfo</a>(<span class="stringliteral">&quot;signal handler was called, signal&quot;</span>,sig);</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="keywordflow">switch</span> (sig)</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;        <span class="comment">/*ctl +c lets call direct controllerRundown, because we might be blocked at the moment.</span></div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="comment">        But there is the risk of interrupting something important */</span>https:<span class="comment">//asc.bmwgroup.net/wiki/display/MGUROTO/Lastest+and+greatest</span></div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        <span class="keywordflow">case</span> SIGINT:</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;            <a class="code" href="classam_1_1CAmControlSender.html#a347a2af727aeb11657f145329dd23dd8">CAmControlSender::CallsetControllerRundown</a>(sig);</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;            <span class="keywordflow">break</span>;</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;        <span class="comment">/* huch- we are getting killed. Better take the fast but risky way: */</span></div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;        <span class="keywordflow">case</span> SIGQUIT:</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;            <a class="code" href="classam_1_1CAmControlSender.html#a347a2af727aeb11657f145329dd23dd8">CAmControlSender::CallsetControllerRundown</a>(sig);</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        <span class="comment">/* more friendly here assuming systemd wants to stop us, so we can use the mainloop */</span></div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        <span class="keywordflow">case</span> SIGTERM:</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;            <a class="code" href="classam_1_1CAmControlSender.html#a6c0d99f14b5c80aa0e0f937c92abc023">CAmControlSender::CallsetControllerRundownSafe</a>(sig);</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        <span class="comment">/* looks friendly, too, so lets take the long run */</span></div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        <span class="keywordflow">case</span> SIGHUP:</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;            <a class="code" href="classam_1_1CAmControlSender.html#a6c0d99f14b5c80aa0e0f937c92abc023">CAmControlSender::CallsetControllerRundownSafe</a>(sig);</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    }</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;}</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div>
<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="main_8cpp.html#a2f6e0286f1ab9c12d22605627f8bf07e">  231</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="main_8cpp.html#a2f6e0286f1ab9c12d22605627f8bf07e">mainProgram</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</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">  234</span>&#160;    <span class="comment">//initialize the commandline parser, and add all neccessary commands</span></div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="keywordflow">try</span></div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    {</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;        TCLAP::CmdLine* cmd(<a class="code" href="classam_1_1CAmCommandLineSingleton.html#a40a0445d4c7fef4aebdcc46676b33850">CAmCommandLineSingleton::instanciateOnce</a>(<span class="stringliteral">&quot;The team of the AudioManager wishes you a nice day!&quot;</span>,<span class="charliteral">&#39; &#39;</span>,DAEMONVERSION,<span class="keyword">true</span>));</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#a9651ad77ac5b1ea702db1fba38dbb25a">controllerPlugin</a>);</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#a852c05eb5ba04abd0c9007ebc04f34da">additionalCommandPluginDirs</a>);</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#a45c5c45bad7cd6af4b436bae93c16f6e">commandPluginDir</a>);</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#ab5b77ba1f3bcc145415fb472684fdb87">additionalRoutingPluginDirs</a>);</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#adaa5dd304567dc8e32b2cbc1eb048f7e">routingPluginDir</a>);</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#a89176a3c961e9f408ca3c42c29d7e105">currentSettings</a>);</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#a89ab9082caaf2543afc60151c9801702">daemonizeAM</a>);</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#afa960755d9057786161060f83ef27897">dltEnable</a>);</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#af300dd02580ca5f086d5903e5145e300">dltLogFilename</a>);</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#a371632b96db9def1ac720a43326272c9">dltOutput</a>);</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;<span class="preprocessor">#ifdef WITH_DBUS_WRAPPER</span></div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;<span class="preprocessor"></span>        cmd-&gt;add(<a class="code" href="main_8cpp.html#a7920a189875bb1a97c86506493483355">dbusWrapperTypeBool</a>);</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifdef WITH_TELNET</span></div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="preprocessor"></span>        cmd-&gt;add(<a class="code" href="main_8cpp.html#afa79058049680c9e2917cc7284ef5d40">telnetPort</a>);</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        cmd-&gt;add(<a class="code" href="main_8cpp.html#a4bdfdb5daf40d0487ee37dfc3515a8fb">maxConnections</a>);</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifdef WITH_DATABASE_STORAGE</span></div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;<span class="preprocessor"></span>        cmd-&gt;add(databasePath);</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;<span class="preprocessor"></span>    }</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    <span class="keywordflow">catch</span> (TCLAP::ArgException &amp;e)  <span class="comment">// catch any exceptions</span></div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    { std::cerr &lt;&lt; <span class="stringliteral">&quot;error: &quot;</span> &lt;&lt; e.error() &lt;&lt; <span class="stringliteral">&quot; for arg &quot;</span> &lt;&lt; e.argId() &lt;&lt; std::endl; }</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <span class="comment">//hen and egg. We need to parse a part of the commandline options to get the paths of the controller and the plugins.</span></div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <span class="comment">//So we do some little parsing first and the real parsing later so that the plugins can profit from that.</span></div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    <a class="code" href="classam_1_1CAmCommandLineSingleton.html#ab3296f24eaef2d80370ee9eaaa3b0577">CAmCommandLineSingleton::instance</a>()-&gt;preparse(argc,argv);</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="main_8cpp.html#a89ab9082caaf2543afc60151c9801702">daemonizeAM</a>.getValue())</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    {</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;        <a class="code" href="main_8cpp.html#a869452f0c0952acd39230fcf0ef89c1e">daemonize</a>();</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    }</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;    <a class="code" href="classam_1_1CAmDltWrapper.html#ade4bf08f260e648ce3036d055fde0c10">CAmDltWrapper::instanctiateOnce</a>(<span class="stringliteral">&quot;AUDI&quot;</span>, <span class="stringliteral">&quot;AudioManager&quot;</span>,<a class="code" href="main_8cpp.html#afa960755d9057786161060f83ef27897">dltEnable</a>.getValue(),<span class="keyword">static_cast&lt;</span><a class="code" href="classam_1_1CAmDltWrapper.html#aff17466b9effa921b51540e2b13d9499">am::CAmDltWrapper::logDestination</a><span class="keyword">&gt;</span>(<a class="code" href="main_8cpp.html#a371632b96db9def1ac720a43326272c9">dltOutput</a>.getValue()),<a class="code" href="main_8cpp.html#af300dd02580ca5f086d5903e5145e300">dltLogFilename</a>.getValue());</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    <span class="comment">//Instantiate all classes. Keep in same order !</span></div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    <a class="code" href="classam_1_1CAmSocketHandler.html">CAmSocketHandler</a> iSocketHandler;</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    <span class="keywordflow">if</span>(<a class="code" href="main_8cpp.html#a45c5c45bad7cd6af4b436bae93c16f6e">commandPluginDir</a>.isSet())</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;        <a class="code" href="main_8cpp.html#acf9448b8681363c06fcc6fa2fe67f6a1">listCommandPluginDirs</a>.clear();</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;        <a class="code" href="main_8cpp.html#acf9448b8681363c06fcc6fa2fe67f6a1">listCommandPluginDirs</a>.push_back(<a class="code" href="main_8cpp.html#a45c5c45bad7cd6af4b436bae93c16f6e">commandPluginDir</a>.getValue());</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    }</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="main_8cpp.html#a852c05eb5ba04abd0c9007ebc04f34da">additionalCommandPluginDirs</a>.isSet())</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;        <a class="code" href="main_8cpp.html#acf9448b8681363c06fcc6fa2fe67f6a1">listCommandPluginDirs</a>.push_back(<a class="code" href="main_8cpp.html#a852c05eb5ba04abd0c9007ebc04f34da">additionalCommandPluginDirs</a>.getValue());</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    }</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;    <span class="keywordflow">if</span>(<a class="code" href="main_8cpp.html#adaa5dd304567dc8e32b2cbc1eb048f7e">routingPluginDir</a>.isSet())</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    {</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;        <a class="code" href="main_8cpp.html#a2f8343120dfa1adbb5fa439c4a915b5f">listRoutingPluginDirs</a>.clear();</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;        <a class="code" href="main_8cpp.html#a2f8343120dfa1adbb5fa439c4a915b5f">listRoutingPluginDirs</a>.push_back(<a class="code" href="main_8cpp.html#adaa5dd304567dc8e32b2cbc1eb048f7e">routingPluginDir</a>.getValue());</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    }</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> (<a class="code" href="main_8cpp.html#ab5b77ba1f3bcc145415fb472684fdb87">additionalRoutingPluginDirs</a>.isSet())</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    {</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;        <a class="code" href="main_8cpp.html#a2f8343120dfa1adbb5fa439c4a915b5f">listRoutingPluginDirs</a>.push_back(<a class="code" href="main_8cpp.html#ab5b77ba1f3bcc145415fb472684fdb87">additionalRoutingPluginDirs</a>.getValue());</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">  297</span>&#160;    <span class="comment">//in this place, the plugins can get the gloval commandlineparser via CAmCommandLineSingleton::instance() and add their options to the commandline</span></div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    <span class="comment">//this must be done in the constructor.</span></div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    <span class="comment">//later when the plugins are started, the commandline is already parsed and the objects defined before can be used to get the neccesary information</span></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;    <a class="code" href="classam_1_1CAmDatabaseHandlerMap.html">CAmDatabaseHandlerMap</a> iDatabaseHandler;</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    <a class="code" href="classam_1_1IAmDatabaseHandler.html">IAmDatabaseHandler</a> *pDatabaseHandler = <span class="keyword">dynamic_cast&lt;</span><a class="code" href="classam_1_1IAmDatabaseHandler.html">IAmDatabaseHandler</a>*<span class="keyword">&gt;</span>( &amp;iDatabaseHandler );</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;    <a class="code" href="classam_1_1CAmRoutingSender.html">CAmRoutingSender</a> iRoutingSender(<a class="code" href="main_8cpp.html#a2f8343120dfa1adbb5fa439c4a915b5f">listRoutingPluginDirs</a>,pDatabaseHandler);</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <a class="code" href="classam_1_1CAmCommandSender.html">CAmCommandSender</a> iCommandSender(<a class="code" href="main_8cpp.html#acf9448b8681363c06fcc6fa2fe67f6a1">listCommandPluginDirs</a>);</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    <a class="code" href="classam_1_1CAmControlSender.html">CAmControlSender</a> iControlSender(<a class="code" href="main_8cpp.html#a9651ad77ac5b1ea702db1fba38dbb25a">controllerPlugin</a>.getValue(),&amp;iSocketHandler);</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <span class="keywordflow">try</span></div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    {</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        <span class="comment">//parse the commandline options</span></div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        <a class="code" href="classam_1_1CAmCommandLineSingleton.html#ab3296f24eaef2d80370ee9eaaa3b0577">CAmCommandLineSingleton::instance</a>()-&gt;reset();</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        <a class="code" href="classam_1_1CAmCommandLineSingleton.html#ab3296f24eaef2d80370ee9eaaa3b0577">CAmCommandLineSingleton::instance</a>()-&gt;parse(argc,argv);</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="main_8cpp.html#a89176a3c961e9f408ca3c42c29d7e105">currentSettings</a>.getValue())</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;        {</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;            <a class="code" href="main_8cpp.html#a20381c995d4b9c2fe11a65df9700fb76">printCmdInformation</a>();</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;    }</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    <span class="keywordflow">catch</span> (TCLAP::ArgException &amp;e)  <span class="comment">// catch any exceptions</span></div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    { std::cerr &lt;&lt; <span class="stringliteral">&quot;error: &quot;</span> &lt;&lt; e.error() &lt;&lt; <span class="stringliteral">&quot; for arg &quot;</span> &lt;&lt; e.argId() &lt;&lt; std::endl; }</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <a class="code" href="namespaceam.html#a47d650dc91db97c1f9323b4ed5cf4fd6">logInfo</a>(<span class="stringliteral">&quot;The Audiomanager is started&quot;</span>);</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <a class="code" href="namespaceam.html#a47d650dc91db97c1f9323b4ed5cf4fd6">logInfo</a>(<span class="stringliteral">&quot;The version of the Audiomanager&quot;</span>, DAEMONVERSION);</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;<span class="preprocessor">#ifdef WITH_CAPI_WRAPPER</span></div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;<span class="preprocessor"></span>    <span class="comment">//We instantiate a singleton with the current socket handler, which loads the common-api runtime.</span></div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <a class="code" href="classam_1_1CAmCommonAPIWrapper.html">CAmCommonAPIWrapper</a> *pCAPIWrapper = <a class="code" href="classam_1_1CAmCommonAPIWrapper.html#a008a684395e96b7204e726b6c835fc7b">CAmCommonAPIWrapper::instantiateOnce</a>(&amp;iSocketHandler, <span class="stringliteral">&quot;AudioManager&quot;</span>);</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*WITH_CAPI_WRAPPER */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;<span class="preprocessor">#ifdef WITH_DBUS_WRAPPER</span></div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;<span class="preprocessor"></span>    <span class="keywordflow">if</span> (<a class="code" href="main_8cpp.html#a7920a189875bb1a97c86506493483355">dbusWrapperTypeBool</a>.getValue())</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;        dbusWrapperType=DBUS_BUS_SYSTEM;</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <a class="code" href="classam_1_1CAmDbusWrapper.html">CAmDbusWrapper</a> iDBusWrapper(&amp;iSocketHandler,dbusWrapperType);</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*WITH_DBUS_WRAPPER */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;<span class="preprocessor">#ifdef WITH_SYSTEMD_WATCHDOG</span></div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;<span class="preprocessor"></span>    <a class="code" href="classam_1_1CAmWatchdog.html">CAmWatchdog</a> iWatchdog(&amp;iSocketHandler);</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*WITH_SYSTEMD_WATCHDOG*/</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;<a class="code" href="classam_1_1CAmRouter.html">CAmRouter</a> iRouter(pDatabaseHandler, &amp;iControlSender);</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;<span class="preprocessor">#ifdef WITH_DBUS_WRAPPER</span></div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="preprocessor"></span>    <a class="code" href="classam_1_1CAmCommandReceiver.html">CAmCommandReceiver</a> iCommandReceiver(pDatabaseHandler, &amp;iControlSender, &amp;iSocketHandler, &amp;iDBusWrapper);</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <a class="code" href="classam_1_1CAmRoutingReceiver.html">CAmRoutingReceiver</a> iRoutingReceiver(pDatabaseHandler, &amp;iRoutingSender, &amp;iControlSender, &amp;iSocketHandler, &amp;iDBusWrapper);</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;<span class="preprocessor">#else </span><span class="comment">/*WITH_DBUS_WRAPPER*/</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;<span class="preprocessor"></span>        <a class="code" href="classam_1_1CAmCommandReceiver.html">CAmCommandReceiver</a> iCommandReceiver(pDatabaseHandler,&amp;iControlSender,&amp;iSocketHandler);</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;        <a class="code" href="classam_1_1CAmRoutingReceiver.html">CAmRoutingReceiver</a> iRoutingReceiver(pDatabaseHandler,&amp;iRoutingSender,&amp;iControlSender,&amp;iSocketHandler);</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*WITH_DBUS_WRAPPER*/</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;<a class="code" href="classam_1_1CAmControlReceiver.html">CAmControlReceiver</a> iControlReceiver(pDatabaseHandler,&amp;iRoutingSender,&amp;iCommandSender,&amp;iSocketHandler, &amp;iRouter);</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;<span class="preprocessor">#ifdef WITH_TELNET</span></div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;<span class="preprocessor"></span>    <a class="code" href="classam_1_1CAmTelnetServer.html">CAmTelnetServer</a> iTelnetServer(&amp;iSocketHandler, &amp;iCommandSender, &amp;iCommandReceiver, &amp;iRoutingSender, &amp;iRoutingReceiver, &amp;iControlSender, &amp;iControlReceiver, pDatabaseHandler, &amp;iRouter, <a class="code" href="main_8cpp.html#afa79058049680c9e2917cc7284ef5d40">telnetPort</a>.getValue(), <a class="code" href="main_8cpp.html#a4bdfdb5daf40d0487ee37dfc3515a8fb">maxConnections</a>.getValue());</div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    <a class="code" href="classam_1_1CAmDatabaseObserver.html">CAmDatabaseObserver</a> iObserver(&amp;iCommandSender, &amp;iRoutingSender, &amp;iSocketHandler, &amp;iTelnetServer);</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;<span class="preprocessor">#else </span><span class="comment">/*WITH_TELNET*/</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="preprocessor"></span>    <a class="code" href="classam_1_1CAmDatabaseObserver.html">CAmDatabaseObserver</a> iObserver(&amp;iCommandSender,&amp;iRoutingSender, &amp;iSocketHandler);</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    iDatabaseHandler.<a class="code" href="classam_1_1CAmDatabaseHandlerMap.html#aa9122561e881946f7a03f51f0873bf70">registerObserver</a>(&amp;iObserver);</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    <span class="comment">//startup all the Plugins and Interfaces</span></div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    <span class="comment">//at this point, commandline arguments can be parsed</span></div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;    iControlSender.startupController(&amp;iControlReceiver);</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    iCommandSender.<a class="code" href="classam_1_1CAmCommandSender.html#a2840ea18547bbbdbaad153ab61637990">startupInterfaces</a>(&amp;iCommandReceiver);</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    iRoutingSender.<a class="code" href="classam_1_1CAmRoutingSender.html#aa988328ad34d96283b7488b1c45e139c">startupInterfaces</a>(&amp;iRoutingReceiver);</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">//when the routingInterface is done, all plugins are loaded:</span></div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    iControlSender.setControllerReady();</div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;<span class="preprocessor">#ifdef WITH_SYSTEMD_WATCHDOG</span></div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="preprocessor"></span>    iWatchdog.<a class="code" href="classam_1_1CAmWatchdog.html#a4379a7449325044199d4703a99039b9c">startWatchdog</a>();</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*WITH_SYSTEMD_WATCHDOG*/</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    <span class="comment">//start the mainloop here....</span></div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    iSocketHandler.start_listenting();</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;</div>
<div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="main_8cpp.html#af9f20e08914b990ce83431d5dc6df07b">  383</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="main_8cpp.html#af9f20e08914b990ce83431d5dc6df07b">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[], <span class="keywordtype">char</span>** envp)</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;{</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    (void) envp;</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    <a class="code" href="main_8cpp.html#acf9448b8681363c06fcc6fa2fe67f6a1">listCommandPluginDirs</a>.push_back(std::string(DEFAULT_PLUGIN_COMMAND_DIR));</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;    <a class="code" href="main_8cpp.html#a2f8343120dfa1adbb5fa439c4a915b5f">listRoutingPluginDirs</a>.push_back(std::string(DEFAULT_PLUGIN_ROUTING_DIR));</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">//now the signal handler:</span></div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    <span class="keyword">struct </span>sigaction signalAction;</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    memset(&amp;signalAction, <span class="charliteral">&#39;\0&#39;</span>, <span class="keyword">sizeof</span>(signalAction));</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    signalAction.sa_sigaction = &amp;signalHandler;</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    signalAction.sa_flags = SA_SIGINFO;</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    sigaction(SIGINT, &amp;signalAction, NULL);</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    sigaction(SIGQUIT, &amp;signalAction, NULL);</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    sigaction(SIGTERM, &amp;signalAction, NULL);</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    sigaction(SIGHUP, &amp;signalAction, NULL);</div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;</div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="keyword">struct </span>sigaction signalChildAction;</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    memset(&amp;signalChildAction, <span class="charliteral">&#39;\0&#39;</span>, <span class="keyword">sizeof</span>(signalChildAction));</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;    signalChildAction.sa_flags = SA_NOCLDWAIT;</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    sigaction(SIGCHLD, &amp;signalChildAction, NULL);</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    <span class="comment">//register new out of memory handler</span></div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    std::set_new_handler(&amp;<a class="code" href="main_8cpp.html#acc628ca4f61759495f09289b8418d358">OutOfMemoryHandler</a>);</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;    <span class="keywordflow">try</span></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;        <span class="comment">//we do this to catch all exceptions and have a graceful ending just in case</span></div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        <a class="code" href="main_8cpp.html#a2f6e0286f1ab9c12d22605627f8bf07e">mainProgram</a>(argc,argv);</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="keywordflow">catch</span> (std::exception&amp; exc)</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="namespaceam.html#ab00ba22db19413e2040c2ab246f220c6">logError</a>(<span class="stringliteral">&quot;The AudioManager ended by throwing the exception&quot;</span>, exc.what());</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;        std::cerr&lt;&lt;<span class="stringliteral">&quot;The AudioManager ended by throwing an exception &quot;</span>&lt;&lt;exc.what()&lt;&lt;std::endl;</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;        exit(EXIT_FAILURE);</div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    }</div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    close(<a class="code" href="main_8cpp.html#a16290b108a943e54375f08cb9ad5fc5a">fd0</a>);</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;    close(<a class="code" href="main_8cpp.html#ac62faf1ed925a0da21ba52b228cb9a47">fd1</a>);</div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;    close(<a class="code" href="main_8cpp.html#af65d853335a6d8ffc28a26269ade6e5d">fd2</a>);</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;    exit(0);</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;}</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;</div>
<div class="ttc" id="classam_1_1CAmRoutingSender_html"><div class="ttname"><a href="classam_1_1CAmRoutingSender.html">am::CAmRoutingSender</a></div><div class="ttdoc">Implements the RoutingSendInterface. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRoutingSender_8h_source.html#l00044">CAmRoutingSender.h:44</a></div></div>
<div class="ttc" id="main_8cpp_html_a16290b108a943e54375f08cb9ad5fc5a"><div class="ttname"><a href="main_8cpp.html#a16290b108a943e54375f08cb9ad5fc5a">fd0</a></div><div class="ttdeci">int fd0</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00096">main.cpp:96</a></div></div>
<div class="ttc" id="classam_1_1CAmCommandReceiver_html"><div class="ttname"><a href="classam_1_1CAmCommandReceiver.html">am::CAmCommandReceiver</a></div><div class="ttdoc">This class realizes the command Interface. </div><div class="ttdef"><b>Definition:</b> <a href="CAmCommandReceiver_8h_source.html#l00040">CAmCommandReceiver.h:40</a></div></div>
<div class="ttc" id="CAmCommonAPIWrapper_8h_html"><div class="ttname"><a href="CAmCommonAPIWrapper_8h.html">CAmCommonAPIWrapper.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="main_8cpp_html_a45c5c45bad7cd6af4b436bae93c16f6e"><div class="ttname"><a href="main_8cpp.html#a45c5c45bad7cd6af4b436bae93c16f6e">commandPluginDir</a></div><div class="ttdeci">TCLAP::ValueArg&lt; std::string &gt; commandPluginDir(&quot;l&quot;,&quot;CommandPluginDir&quot;,&quot;path for looking for command plugins&quot;, false,&quot; &quot;,&quot;string&quot;)</div></div>
<div class="ttc" id="classam_1_1CAmCommandSender_html_a2840ea18547bbbdbaad153ab61637990"><div class="ttname"><a href="classam_1_1CAmCommandSender.html#a2840ea18547bbbdbaad153ab61637990">am::CAmCommandSender::startupInterfaces</a></div><div class="ttdeci">am_Error_e startupInterfaces(CAmCommandReceiver *iCommandReceiver)</div><div class="ttdef"><b>Definition:</b> <a href="CAmCommandSender_8cpp_source.html#l00167">CAmCommandSender.cpp:167</a></div></div>
<div class="ttc" id="main_8cpp_html_af9f20e08914b990ce83431d5dc6df07b"><div class="ttname"><a href="main_8cpp.html#af9f20e08914b990ce83431d5dc6df07b">main</a></div><div class="ttdeci">int main(int argc, char *argv[], char **envp)</div><div class="ttdoc">main </div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00383">main.cpp:383</a></div></div>
<div class="ttc" id="main_8cpp_html_a869452f0c0952acd39230fcf0ef89c1e"><div class="ttname"><a href="main_8cpp.html#a869452f0c0952acd39230fcf0ef89c1e">daemonize</a></div><div class="ttdeci">void daemonize()</div><div class="ttdoc">daemonizes the AudioManager </div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00114">main.cpp:114</a></div></div>
<div class="ttc" id="namespaceam_html_a47d650dc91db97c1f9323b4ed5cf4fd6"><div class="ttname"><a href="namespaceam.html#a47d650dc91db97c1f9323b4ed5cf4fd6">am::logInfo</a></div><div class="ttdeci">void logInfo(T value, TArgs...args)</div><div class="ttdoc">logs given values with infolevel with the default context </div><div class="ttdef"><b>Definition:</b> <a href="CAmDltWrapper_8h_source.html#l00405">CAmDltWrapper.h:405</a></div></div>
<div class="ttc" id="classam_1_1CAmCommonAPIWrapper_html"><div class="ttname"><a href="classam_1_1CAmCommonAPIWrapper.html">am::CAmCommonAPIWrapper</a></div><div class="ttdef"><b>Definition:</b> <a href="CAmCommonAPIWrapper_8h_source.html#l00049">CAmCommonAPIWrapper.h:49</a></div></div>
<div class="ttc" id="classam_1_1CAmRouter_html"><div class="ttname"><a href="classam_1_1CAmRouter.html">am::CAmRouter</a></div><div class="ttdoc">Implements an autorouting algorithm for connecting sinks and sources via different audio domains...</div><div class="ttdef"><b>Definition:</b> <a href="CAmRouter_8h_source.html#l00152">CAmRouter.h:152</a></div></div>
<div class="ttc" id="main_8cpp_html_a852c05eb5ba04abd0c9007ebc04f34da"><div class="ttname"><a href="main_8cpp.html#a852c05eb5ba04abd0c9007ebc04f34da">additionalCommandPluginDirs</a></div><div class="ttdeci">TCLAP::ValueArg&lt; std::string &gt; additionalCommandPluginDirs(&quot;L&quot;,&quot;additionalCommandPluginDirs&quot;,&quot;additional path for looking for command plugins, can be used after -l option&quot;, false,&quot; &quot;,&quot;string&quot;)</div></div>
<div class="ttc" id="classam_1_1CAmControlReceiver_html"><div class="ttname"><a href="classam_1_1CAmControlReceiver.html">am::CAmControlReceiver</a></div><div class="ttdoc">This class is used to receive all commands from the control interface. </div><div class="ttdef"><b>Definition:</b> <a href="CAmControlReceiver_8h_source.html#l00042">CAmControlReceiver.h:42</a></div></div>
<div class="ttc" id="classam_1_1CAmCommonAPIWrapper_html_a008a684395e96b7204e726b6c835fc7b"><div class="ttname"><a href="classam_1_1CAmCommonAPIWrapper.html#a008a684395e96b7204e726b6c835fc7b">am::CAmCommonAPIWrapper::instantiateOnce</a></div><div class="ttdeci">static CAmCommonAPIWrapper * instantiateOnce(CAmSocketHandler *socketHandler, const std::string &amp;applicationName=&quot;&quot;)</div><div class="ttdoc">Creates a singleton instance attached to the provided socket handler object. </div><div class="ttdef"><b>Definition:</b> <a href="CAmCommonAPIWrapper_8cpp_source.html#l00083">CAmCommonAPIWrapper.cpp:83</a></div></div>
<div class="ttc" id="classam_1_1CAmSocketHandler_html"><div class="ttname"><a href="classam_1_1CAmSocketHandler.html">am::CAmSocketHandler</a></div><div class="ttdoc">The am::CAmSocketHandler implements a mainloop for the AudioManager. </div><div class="ttdef"><b>Definition:</b> <a href="CAmSocketHandler_8h_source.html#l00094">CAmSocketHandler.h:94</a></div></div>
<div class="ttc" id="classam_1_1CAmDltWrapper_html_ade4bf08f260e648ce3036d055fde0c10"><div class="ttname"><a href="classam_1_1CAmDltWrapper.html#ade4bf08f260e648ce3036d055fde0c10">am::CAmDltWrapper::instanctiateOnce</a></div><div class="ttdeci">static CAmDltWrapper * instanctiateOnce(const char *appid, const char *description, const bool debugEnabled=true, const logDestination logDest=logDestination::DAEMON, const std::string Filename=&quot;&quot;, bool onlyError=false)</div><div class="ttdoc">Instanciate the Dlt Wrapper. </div><div class="ttdef"><b>Definition:</b> <a href="CAmDltWrapper_8cpp_source.html#l00149">CAmDltWrapper.cpp:149</a></div></div>
<div class="ttc" id="CAmRoutingReceiver_8h_html"><div class="ttname"><a href="CAmRoutingReceiver_8h.html">CAmRoutingReceiver.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="classam_1_1CAmCommandLineSingleton_html_ab3296f24eaef2d80370ee9eaaa3b0577"><div class="ttname"><a href="classam_1_1CAmCommandLineSingleton.html#ab3296f24eaef2d80370ee9eaaa3b0577">am::CAmCommandLineSingleton::instance</a></div><div class="ttdeci">static TCLAP::CmdLine * instance()</div><div class="ttdef"><b>Definition:</b> <a href="CAmCommandLineSingleton_8cpp_source.html#l00041">CAmCommandLineSingleton.cpp:41</a></div></div>
<div class="ttc" id="classam_1_1CAmWatchdog_html"><div class="ttname"><a href="classam_1_1CAmWatchdog.html">am::CAmWatchdog</a></div><div class="ttdoc">Implements the watchdog of the AudioManager with the help of systemd. </div><div class="ttdef"><b>Definition:</b> <a href="CAmWatchdog_8h_source.html#l00035">CAmWatchdog.h:35</a></div></div>
<div class="ttc" id="main_8cpp_html_a20381c995d4b9c2fe11a65df9700fb76"><div class="ttname"><a href="main_8cpp.html#a20381c995d4b9c2fe11a65df9700fb76">printCmdInformation</a></div><div class="ttdeci">void printCmdInformation()</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00164">main.cpp:164</a></div></div>
<div class="ttc" id="classam_1_1CAmDatabaseHandlerMap_html_aa9122561e881946f7a03f51f0873bf70"><div class="ttname"><a href="classam_1_1CAmDatabaseHandlerMap.html#aa9122561e881946f7a03f51f0873bf70">am::CAmDatabaseHandlerMap::registerObserver</a></div><div class="ttdeci">void registerObserver(CAmDatabaseObserver *iObserver)</div><div class="ttdoc">registers the Observer at the Database </div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseHandlerMap_8cpp_source.html#l02478">CAmDatabaseHandlerMap.cpp:2478</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="CAmWatchdog_8h_html"><div class="ttname"><a href="CAmWatchdog_8h.html">CAmWatchdog.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="main_8cpp_html_af65d853335a6d8ffc28a26269ade6e5d"><div class="ttname"><a href="main_8cpp.html#af65d853335a6d8ffc28a26269ade6e5d">fd2</a></div><div class="ttdeci">int fd2</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00096">main.cpp:96</a></div></div>
<div class="ttc" id="classam_1_1CAmRoutingReceiver_html"><div class="ttname"><a href="classam_1_1CAmRoutingReceiver.html">am::CAmRoutingReceiver</a></div><div class="ttdoc">Implements the Receiving side of the RoutingPlugins. </div><div class="ttdef"><b>Definition:</b> <a href="CAmRoutingReceiver_8h_source.html#l00041">CAmRoutingReceiver.h:41</a></div></div>
<div class="ttc" id="main_8cpp_html_ac62faf1ed925a0da21ba52b228cb9a47"><div class="ttname"><a href="main_8cpp.html#ac62faf1ed925a0da21ba52b228cb9a47">fd1</a></div><div class="ttdeci">int fd1</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00096">main.cpp:96</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="CAmControlReceiver_8h_html"><div class="ttname"><a href="CAmControlReceiver_8h.html">CAmControlReceiver.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="CAmTelnetServer_8h_html"><div class="ttname"><a href="CAmTelnetServer_8h.html">CAmTelnetServer.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="main_8cpp_html_acc628ca4f61759495f09289b8418d358"><div class="ttname"><a href="main_8cpp.html#acc628ca4f61759495f09289b8418d358">OutOfMemoryHandler</a></div><div class="ttdeci">void OutOfMemoryHandler()</div><div class="ttdoc">the out of memory handler </div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00105">main.cpp:105</a></div></div>
<div class="ttc" id="CAmCommandReceiver_8h_html"><div class="ttname"><a href="CAmCommandReceiver_8h.html">CAmCommandReceiver.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="CAmDatabaseHandlerMap_8h_html"><div class="ttname"><a href="CAmDatabaseHandlerMap_8h.html">CAmDatabaseHandlerMap.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="classam_1_1CAmCommandLineSingleton_html_a40a0445d4c7fef4aebdcc46676b33850"><div class="ttname"><a href="classam_1_1CAmCommandLineSingleton.html#a40a0445d4c7fef4aebdcc46676b33850">am::CAmCommandLineSingleton::instanciateOnce</a></div><div class="ttdeci">static TCLAP::CmdLine * instanciateOnce(const std::string &amp;message, const char delimiter= ' ', const std::string &amp;version=&quot;none&quot;, bool helpAndVersion=true)</div><div class="ttdef"><b>Definition:</b> <a href="CAmCommandLineSingleton_8cpp_source.html#l00029">CAmCommandLineSingleton.cpp:29</a></div></div>
<div class="ttc" id="classam_1_1CAmDltWrapper_html_aff17466b9effa921b51540e2b13d9499"><div class="ttname"><a href="classam_1_1CAmDltWrapper.html#aff17466b9effa921b51540e2b13d9499">am::CAmDltWrapper::logDestination</a></div><div class="ttdeci">logDestination</div><div class="ttdef"><b>Definition:</b> <a href="CAmDltWrapper_8h_source.html#l00127">CAmDltWrapper.h:127</a></div></div>
<div class="ttc" id="main_8cpp_html_adaa5dd304567dc8e32b2cbc1eb048f7e"><div class="ttname"><a href="main_8cpp.html#adaa5dd304567dc8e32b2cbc1eb048f7e">routingPluginDir</a></div><div class="ttdeci">TCLAP::ValueArg&lt; std::string &gt; routingPluginDir(&quot;r&quot;,&quot;RoutingPluginDir&quot;,&quot;path for looking for routing plugins&quot;, false,&quot; &quot;,&quot;string&quot;)</div></div>
<div class="ttc" id="CAmCommandLineSingleton_8h_html"><div class="ttname"><a href="CAmCommandLineSingleton_8h.html">CAmCommandLineSingleton.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="main_8cpp_html_a7920a189875bb1a97c86506493483355"><div class="ttname"><a href="main_8cpp.html#a7920a189875bb1a97c86506493483355">dbusWrapperTypeBool</a></div><div class="ttdeci">TCLAP::SwitchArg dbusWrapperTypeBool(&quot;T&quot;,&quot;dbusType&quot;,&quot;DbusType to be used by CAmDbusWrapper: if option is selected, DBUS_SYSTEM is used otherwise DBUS_SESSION&quot;, false)</div></div>
<div class="ttc" id="main_8cpp_html_ab5b77ba1f3bcc145415fb472684fdb87"><div class="ttname"><a href="main_8cpp.html#ab5b77ba1f3bcc145415fb472684fdb87">additionalRoutingPluginDirs</a></div><div class="ttdeci">TCLAP::ValueArg&lt; std::string &gt; additionalRoutingPluginDirs(&quot;R&quot;,&quot;additionalRoutingPluginDirs&quot;,&quot;additional path for looking for routing plugins, can be used after -r option &quot;, false,&quot; &quot;,&quot;string&quot;)</div></div>
<div class="ttc" id="main_8cpp_html_afa960755d9057786161060f83ef27897"><div class="ttname"><a href="main_8cpp.html#afa960755d9057786161060f83ef27897">dltEnable</a></div><div class="ttdeci">TCLAP::SwitchArg dltEnable(&quot;e&quot;,&quot;dltEnable&quot;,&quot;Enables or disables dlt logging. Default = enabled&quot;, true)</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_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#l00059">IAmDatabaseHandler.h:59</a></div></div>
<div class="ttc" id="CAmRoutingSender_8h_html"><div class="ttname"><a href="CAmRoutingSender_8h.html">CAmRoutingSender.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="classam_1_1CAmTelnetServer_html"><div class="ttname"><a href="classam_1_1CAmTelnetServer.html">am::CAmTelnetServer</a></div><div class="ttdoc">Implements a telnetserver that can be used to connect to the audiomanager, retrieve some information ...</div><div class="ttdef"><b>Definition:</b> <a href="CAmTelnetServer_8h_source.html#l00052">CAmTelnetServer.h:52</a></div></div>
<div class="ttc" id="classam_1_1CAmWatchdog_html_a4379a7449325044199d4703a99039b9c"><div class="ttname"><a href="classam_1_1CAmWatchdog.html#a4379a7449325044199d4703a99039b9c">am::CAmWatchdog::startWatchdog</a></div><div class="ttdeci">void startWatchdog()</div><div class="ttdoc">starts the watchdog by sending ready to systemD </div><div class="ttdef"><b>Definition:</b> <a href="CAmWatchdog_8cpp_source.html#l00095">CAmWatchdog.cpp:95</a></div></div>
<div class="ttc" id="CAmSocketHandler_8h_html"><div class="ttname"><a href="CAmSocketHandler_8h.html">CAmSocketHandler.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="classam_1_1CAmControlSender_html_a6c0d99f14b5c80aa0e0f937c92abc023"><div class="ttname"><a href="classam_1_1CAmControlSender.html#a6c0d99f14b5c80aa0e0f937c92abc023">am::CAmControlSender::CallsetControllerRundownSafe</a></div><div class="ttdeci">static void CallsetControllerRundownSafe(int16_t signal)</div><div class="ttdef"><b>Definition:</b> <a href="CAmControlSender_8h_source.html#l00133">CAmControlSender.h:133</a></div></div>
<div class="ttc" id="main_8cpp_html_a371632b96db9def1ac720a43326272c9"><div class="ttname"><a href="main_8cpp.html#a371632b96db9def1ac720a43326272c9">dltOutput</a></div><div class="ttdeci">TCLAP::ValueArg&lt; unsigned int &gt; dltOutput(&quot;O&quot;,&quot;dltOutput&quot;,&quot;defines where logs are written. 0=dlt-daemon(default), 1=command line, 2=file &quot;, false, 0,&quot;int&quot;)</div></div>
<div class="ttc" id="classam_1_1CAmRoutingSender_html_aa988328ad34d96283b7488b1c45e139c"><div class="ttname"><a href="classam_1_1CAmRoutingSender.html#aa988328ad34d96283b7488b1c45e139c">am::CAmRoutingSender::startupInterfaces</a></div><div class="ttdeci">am_Error_e startupInterfaces(CAmRoutingReceiver *iRoutingReceiver)</div><div class="ttdef"><b>Definition:</b> <a href="CAmRoutingSender_8cpp_source.html#l00187">CAmRoutingSender.cpp:187</a></div></div>
<div class="ttc" id="main_8cpp_html_afa79058049680c9e2917cc7284ef5d40"><div class="ttname"><a href="main_8cpp.html#afa79058049680c9e2917cc7284ef5d40">telnetPort</a></div><div class="ttdeci">TCLAP::ValueArg&lt; unsigned int &gt; telnetPort(&quot;t&quot;,&quot;telnetport&quot;,&quot;The port that is used for telnet&quot;, false, DEFAULT_TELNETPORT,&quot;int&quot;)</div></div>
<div class="ttc" id="main_8cpp_html_a89176a3c961e9f408ca3c42c29d7e105"><div class="ttname"><a href="main_8cpp.html#a89176a3c961e9f408ca3c42c29d7e105">currentSettings</a></div><div class="ttdeci">TCLAP::SwitchArg currentSettings(&quot;i&quot;,&quot;currentSettings&quot;,&quot;print current settings and exit&quot;, false)</div></div>
<div class="ttc" id="namespaceam_html_ab00ba22db19413e2040c2ab246f220c6"><div class="ttname"><a href="namespaceam.html#ab00ba22db19413e2040c2ab246f220c6">am::logError</a></div><div class="ttdeci">void logError(T value, TArgs...args)</div><div class="ttdoc">logs given values with errorlevel with the default context </div><div class="ttdef"><b>Definition:</b> <a href="CAmDltWrapper_8h_source.html#l00416">CAmDltWrapper.h:416</a></div></div>
<div class="ttc" id="main_8cpp_html_a2f8343120dfa1adbb5fa439c4a915b5f"><div class="ttname"><a href="main_8cpp.html#a2f8343120dfa1adbb5fa439c4a915b5f">listRoutingPluginDirs</a></div><div class="ttdeci">std::vector&lt; std::string &gt; listRoutingPluginDirs</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00079">main.cpp:79</a></div></div>
<div class="ttc" id="main_8cpp_html_a89ab9082caaf2543afc60151c9801702"><div class="ttname"><a href="main_8cpp.html#a89ab9082caaf2543afc60151c9801702">daemonizeAM</a></div><div class="ttdeci">TCLAP::SwitchArg daemonizeAM(&quot;d&quot;,&quot;daemonize&quot;,&quot;daemonize Audiomanager. Better use systemd...&quot;, false)</div></div>
<div class="ttc" id="CAmDatabaseObserver_8h_html"><div class="ttname"><a href="CAmDatabaseObserver_8h.html">CAmDatabaseObserver.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="classam_1_1CAmDbusWrapper_html"><div class="ttname"><a href="classam_1_1CAmDbusWrapper.html">am::CAmDbusWrapper</a></div><div class="ttdoc">This wraps dbus and provides everything needed to anyone who wants to use dbus (including plugins)...</div><div class="ttdef"><b>Definition:</b> <a href="CAmDbusWrapper_8h_source.html#l00037">CAmDbusWrapper.h:37</a></div></div>
<div class="ttc" id="CAmCommandSender_8h_html"><div class="ttname"><a href="CAmCommandSender_8h.html">CAmCommandSender.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </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="classam_1_1CAmControlSender_html_a347a2af727aeb11657f145329dd23dd8"><div class="ttname"><a href="classam_1_1CAmControlSender.html#a347a2af727aeb11657f145329dd23dd8">am::CAmControlSender::CallsetControllerRundown</a></div><div class="ttdeci">static void CallsetControllerRundown(int16_t signal)</div><div class="ttdef"><b>Definition:</b> <a href="CAmControlSender_8h_source.html#l00126">CAmControlSender.h:126</a></div></div>
<div class="ttc" id="main_8cpp_html_af300dd02580ca5f086d5903e5145e300"><div class="ttname"><a href="main_8cpp.html#af300dd02580ca5f086d5903e5145e300">dltLogFilename</a></div><div class="ttdeci">TCLAP::ValueArg&lt; std::string &gt; dltLogFilename(&quot;F&quot;,&quot;dltLogFilename&quot;,&quot;the name of the logfile, absolute path. Only if logging is et to file&quot;, false,&quot; &quot;,&quot;string&quot;)</div></div>
<div class="ttc" id="main_8cpp_html_acf9448b8681363c06fcc6fa2fe67f6a1"><div class="ttname"><a href="main_8cpp.html#acf9448b8681363c06fcc6fa2fe67f6a1">listCommandPluginDirs</a></div><div class="ttdeci">std::vector&lt; std::string &gt; listCommandPluginDirs</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00078">main.cpp:78</a></div></div>
<div class="ttc" id="main_8cpp_html_a2f6e0286f1ab9c12d22605627f8bf07e"><div class="ttname"><a href="main_8cpp.html#a2f6e0286f1ab9c12d22605627f8bf07e">mainProgram</a></div><div class="ttdeci">void mainProgram(int argc, char *argv[])</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00231">main.cpp:231</a></div></div>
<div class="ttc" id="classam_1_1CAmCommandSender_html"><div class="ttname"><a href="classam_1_1CAmCommandSender.html">am::CAmCommandSender</a></div><div class="ttdoc">This class is used to send data to the CommandInterface. </div><div class="ttdef"><b>Definition:</b> <a href="CAmCommandSender_8h_source.html#l00043">CAmCommandSender.h:43</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="CAmDbusWrapper_8h_html"><div class="ttname"><a href="CAmDbusWrapper_8h.html">CAmDbusWrapper.h</a></div><div class="ttdoc">SPDX license identifier: MPL-2.0. </div></div>
<div class="ttc" id="main_8cpp_html_a4bdfdb5daf40d0487ee37dfc3515a8fb"><div class="ttname"><a href="main_8cpp.html#a4bdfdb5daf40d0487ee37dfc3515a8fb">maxConnections</a></div><div class="ttdeci">TCLAP::ValueArg&lt; unsigned int &gt; maxConnections(&quot;m&quot;,&quot;maxConnections&quot;,&quot;Maximal number of connections for telnet&quot;, false, MAX_TELNETCONNECTIONS,&quot;int&quot;)</div></div>
<div class="ttc" id="classam_1_1CAmDatabaseObserver_html"><div class="ttname"><a href="classam_1_1CAmDatabaseObserver.html">am::CAmDatabaseObserver</a></div><div class="ttdoc">This class observes the Database and notifies other classes about important events, mainly the CommandSender. </div><div class="ttdef"><b>Definition:</b> <a href="CAmDatabaseObserver_8h_source.html#l00042">CAmDatabaseObserver.h:42</a></div></div>
<div class="ttc" id="main_8cpp_html_a9651ad77ac5b1ea702db1fba38dbb25a"><div class="ttname"><a href="main_8cpp.html#a9651ad77ac5b1ea702db1fba38dbb25a">controllerPlugin</a></div><div class="ttdeci">TCLAP::ValueArg&lt; std::string &gt; controllerPlugin(&quot;c&quot;,&quot;controllerPlugin&quot;,&quot;use controllerPlugin full path with .so ending&quot;, false, CONTROLLER_PLUGIN_DIR,&quot;string&quot;)</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_a59cc4145c80bc78c66b8523e9dc461d.html">AudioManagerDaemon</a></li><li class="navelem"><a class="el" href="dir_0ae934c8b133f39bc9dfcd657890ab56.html">src</a></li><li class="navelem"><a class="el" href="main_8cpp.html">main.cpp</a></li>
    <li class="footer">Generated on Fri Sep 30 2016 14:27:21 for AudioManager by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
  </ul>
</div>
</body>
</html>