aboutsummaryrefslogtreecommitdiff
path: root/20.02/classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml
blob: 72dd0d0c3460015d48627705ef3011acb1de5c9b (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
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
<!-- Copyright (c) 2020 ARM Limited. -->
<!--                                 -->
<!-- SPDX-License-Identifier: MIT    -->
<!--                                 -->
<!-- HTML header for doxygen 1.8.13-->
<!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.13"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: GatordMockService Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.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;">
  <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">20.02</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></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('classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classarmnn_1_1gatordmock_1_1_gatord_mock_service-members.xhtml">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">GatordMockService Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>A class that implements a Mock Gatord server.  
 <a href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_gatord_mock_service_8hpp_source.xhtml">GatordMockService.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a316aee098329a282e05c9beae9f67b58"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a316aee098329a282e05c9beae9f67b58">GatordMockService</a> (<a class="el" href="classarmnn_1_1profiling_1_1_command_handler_registry.xhtml">armnn::profiling::CommandHandlerRegistry</a> &amp;registry, bool echoPackets)</td></tr>
<tr class="separator:a316aee098329a282e05c9beae9f67b58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1a11e5360cb7940eb34f80ed0dba57b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#ae1a11e5360cb7940eb34f80ed0dba57b">~GatordMockService</a> ()</td></tr>
<tr class="separator:ae1a11e5360cb7940eb34f80ed0dba57b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa03af06b5336e9ad43b374a03934c0f1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#aa03af06b5336e9ad43b374a03934c0f1">OpenListeningSocket</a> (std::string udsNamespace)</td></tr>
<tr class="memdesc:aa03af06b5336e9ad43b374a03934c0f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Establish the Unix domain socket and set it to listen for connections.  <a href="#aa03af06b5336e9ad43b374a03934c0f1">More...</a><br /></td></tr>
<tr class="separator:aa03af06b5336e9ad43b374a03934c0f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c7dcda01e81dbdc47ceb1c82f26039b"><td class="memItemLeft" align="right" valign="top">armnnUtils::Sockets::Socket&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a4c7dcda01e81dbdc47ceb1c82f26039b">BlockForOneClient</a> ()</td></tr>
<tr class="memdesc:a4c7dcda01e81dbdc47ceb1c82f26039b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Block waiting to accept one client to connect to the UDS.  <a href="#a4c7dcda01e81dbdc47ceb1c82f26039b">More...</a><br /></td></tr>
<tr class="separator:a4c7dcda01e81dbdc47ceb1c82f26039b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac07351dbc304681b2efd5df4958a6735"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#ac07351dbc304681b2efd5df4958a6735">WaitForStreamMetaData</a> ()</td></tr>
<tr class="memdesc:ac07351dbc304681b2efd5df4958a6735"><td class="mdescLeft">&#160;</td><td class="mdescRight">Once the connection is open wait to receive the stream meta data packet from the client.  <a href="#ac07351dbc304681b2efd5df4958a6735">More...</a><br /></td></tr>
<tr class="separator:ac07351dbc304681b2efd5df4958a6735"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41eaa65cf4e7212f09b04d06c130cd83"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a41eaa65cf4e7212f09b04d06c130cd83">SendConnectionAck</a> ()</td></tr>
<tr class="memdesc:a41eaa65cf4e7212f09b04d06c130cd83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a connection acknowledged packet back to the client.  <a href="#a41eaa65cf4e7212f09b04d06c130cd83">More...</a><br /></td></tr>
<tr class="separator:a41eaa65cf4e7212f09b04d06c130cd83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b9de2e6eee97f258fe2d7c765206e8a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a2b9de2e6eee97f258fe2d7c765206e8a">SendRequestCounterDir</a> ()</td></tr>
<tr class="memdesc:a2b9de2e6eee97f258fe2d7c765206e8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a request counter directory packet back to the client.  <a href="#a2b9de2e6eee97f258fe2d7c765206e8a">More...</a><br /></td></tr>
<tr class="separator:a2b9de2e6eee97f258fe2d7c765206e8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5175305569ecb4e58004e977abeff61a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a5175305569ecb4e58004e977abeff61a">LaunchReceivingThread</a> ()</td></tr>
<tr class="memdesc:a5175305569ecb4e58004e977abeff61a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the thread that will receive all packets and print them nicely to stdout.  <a href="#a5175305569ecb4e58004e977abeff61a">More...</a><br /></td></tr>
<tr class="separator:a5175305569ecb4e58004e977abeff61a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c9761eec8e1cd0bd73c6cdf2c2eda89"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a4c9761eec8e1cd0bd73c6cdf2c2eda89">GetPacketsReceivedCount</a> ()</td></tr>
<tr class="memdesc:a4c9761eec8e1cd0bd73c6cdf2c2eda89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the total number of periodic counter capture packets received since the receive thread started.  <a href="#a4c9761eec8e1cd0bd73c6cdf2c2eda89">More...</a><br /></td></tr>
<tr class="separator:a4c9761eec8e1cd0bd73c6cdf2c2eda89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93617d8640d5e93831d06a2ef3c86bef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a93617d8640d5e93831d06a2ef3c86bef">WaitForReceivingThread</a> ()</td></tr>
<tr class="memdesc:a93617d8640d5e93831d06a2ef3c86bef"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a placeholder method to prevent main exiting.  <a href="#a93617d8640d5e93831d06a2ef3c86bef">More...</a><br /></td></tr>
<tr class="separator:a93617d8640d5e93831d06a2ef3c86bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82bd11e044b4bc9c647fcaa9ce5b3e55"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a82bd11e044b4bc9c647fcaa9ce5b3e55">ReceiveThreadRunning</a> ()</td></tr>
<tr class="separator:a82bd11e044b4bc9c647fcaa9ce5b3e55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abaf2feb0e79566de18721659d896dae1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#abaf2feb0e79566de18721659d896dae1">SendPeriodicCounterSelectionList</a> (uint32_t period, std::vector&lt; uint16_t &gt; counters)</td></tr>
<tr class="memdesc:abaf2feb0e79566de18721659d896dae1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send the counter list to ArmNN.  <a href="#abaf2feb0e79566de18721659d896dae1">More...</a><br /></td></tr>
<tr class="separator:abaf2feb0e79566de18721659d896dae1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18f77daf6b32e5bb456c2bc860140669"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a18f77daf6b32e5bb456c2bc860140669">WaitCommand</a> (uint32_t timeout)</td></tr>
<tr class="memdesc:a18f77daf6b32e5bb456c2bc860140669"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execute the WAIT command from the comamnd file.  <a href="#a18f77daf6b32e5bb456c2bc860140669">More...</a><br /></td></tr>
<tr class="separator:a18f77daf6b32e5bb456c2bc860140669"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf9805c78f5073622573dd3d4ce1e188"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#aaf9805c78f5073622573dd3d4ce1e188">GetStreamMetadataVersion</a> ()</td></tr>
<tr class="separator:aaf9805c78f5073622573dd3d4ce1e188"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8fa64e5465395276e19780848dca811"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#ab8fa64e5465395276e19780848dca811">GetStreamMetadataMaxDataLen</a> ()</td></tr>
<tr class="separator:ab8fa64e5465395276e19780848dca811"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7330665da0f97c753eddeee2a09a1d9"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#ad7330665da0f97c753eddeee2a09a1d9">GetStreamMetadataPid</a> ()</td></tr>
<tr class="separator:ad7330665da0f97c753eddeee2a09a1d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A class that implements a Mock Gatord server. </p>
<p>It will listen on a specified Unix domain socket (UDS) namespace for client connections. It will then allow opertaions to manage coutners while receiving counter data. </p>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8hpp_source.xhtml#l00037">37</a> of file <a class="el" href="_gatord_mock_service_8hpp_source.xhtml">GatordMockService.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a316aee098329a282e05c9beae9f67b58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a316aee098329a282e05c9beae9f67b58">&#9670;&nbsp;</a></span>GatordMockService()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml">GatordMockService</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classarmnn_1_1profiling_1_1_command_handler_registry.xhtml">armnn::profiling::CommandHandlerRegistry</a> &amp;&#160;</td>
          <td class="paramname"><em>registry</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>echoPackets</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">registry</td><td>reference to a command handler registry. </td></tr>
    <tr><td class="paramname">echoPackets</td><td>if true the raw packets will be printed to stdout. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8hpp_source.xhtml#l00042">42</a> of file <a class="el" href="_gatord_mock_service_8hpp_source.xhtml">GatordMockService.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        : m_HandlerRegistry(registry)</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        , m_EchoPackets(echoPackets)</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        , m_CloseReceivingThread(<span class="keyword">false</span>)</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    {</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        m_PacketsReceivedCount.store(0, std::memory_order_relaxed);</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    }</div></div><!-- fragment -->
</div>
</div>
<a id="ae1a11e5360cb7940eb34f80ed0dba57b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1a11e5360cb7940eb34f80ed0dba57b">&#9670;&nbsp;</a></span>~GatordMockService()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">~<a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml">GatordMockService</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8hpp_source.xhtml#l00050">50</a> of file <a class="el" href="_gatord_mock_service_8hpp_source.xhtml">GatordMockService.hpp</a>.</p>

<p class="reference">References <a class="el" href="_network_sockets_8cpp_source.xhtml#l00028">armnnUtils::Sockets::Close()</a>.</p>
<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        <span class="comment">// We have set SOCK_CLOEXEC on these sockets but we&#39;ll close them to be good citizens.</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        <a class="code" href="namespacearmnn_utils_1_1_sockets.xhtml#a72e0661331d20d0a352fb49c388a1b05">armnnUtils::Sockets::Close</a>(m_ClientConnection);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        <a class="code" href="namespacearmnn_utils_1_1_sockets.xhtml#a72e0661331d20d0a352fb49c388a1b05">armnnUtils::Sockets::Close</a>(m_ListeningSocket);</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    }</div><div class="ttc" id="namespacearmnn_utils_1_1_sockets_xhtml_a72e0661331d20d0a352fb49c388a1b05"><div class="ttname"><a href="namespacearmnn_utils_1_1_sockets.xhtml#a72e0661331d20d0a352fb49c388a1b05">armnnUtils::Sockets::Close</a></div><div class="ttdeci">int Close(Socket s)</div><div class="ttdef"><b>Definition:</b> <a href="_network_sockets_8cpp_source.xhtml#l00028">NetworkSockets.cpp:28</a></div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a4c7dcda01e81dbdc47ceb1c82f26039b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c7dcda01e81dbdc47ceb1c82f26039b">&#9670;&nbsp;</a></span>BlockForOneClient()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Sockets::Socket BlockForOneClient </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Block waiting to accept one client to connect to the UDS. </p>
<dl class="section return"><dt>Returns</dt><dd>the file descriptor of the client connection. </dd></dl>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8cpp_source.xhtml#l00058">58</a> of file <a class="el" href="_gatord_mock_service_8cpp_source.xhtml">GatordMockService.cpp</a>.</p>

<p class="reference">References <a class="el" href="_network_sockets_8cpp_source.xhtml#l00091">armnnUtils::Sockets::Accept()</a>.</p>

<p class="reference">Referenced by <a class="el" href="_gatord_mock_tests_8cpp_source.xhtml#l00106">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    m_ClientConnection = <a class="code" href="namespacearmnn_utils_1_1_sockets.xhtml#ae7d45c832d3f9a398a08352442d20417">Sockets::Accept</a>(m_ListeningSocket, <span class="keyword">nullptr</span>, <span class="keyword">nullptr</span>, SOCK_CLOEXEC);</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="keywordflow">if</span> (-1 == m_ClientConnection)</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        std::cerr &lt;&lt; <span class="stringliteral">&quot;: Failure when waiting for a client connection: &quot;</span> &lt;&lt; strerror(errno) &lt;&lt; std::endl;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    }</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="keywordflow">return</span> m_ClientConnection;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_1_1_sockets_xhtml_ae7d45c832d3f9a398a08352442d20417"><div class="ttname"><a href="namespacearmnn_utils_1_1_sockets.xhtml#ae7d45c832d3f9a398a08352442d20417">armnnUtils::Sockets::Accept</a></div><div class="ttdeci">armnnUtils::Sockets::Socket Accept(Socket s, sockaddr *addr, socklen_t *addrlen, int flags)</div><div class="ttdef"><b>Definition:</b> <a href="_network_sockets_8cpp_source.xhtml#l00091">NetworkSockets.cpp:91</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4c9761eec8e1cd0bd73c6cdf2c2eda89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c9761eec8e1cd0bd73c6cdf2c2eda89">&#9670;&nbsp;</a></span>GetPacketsReceivedCount()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t GetPacketsReceivedCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Return the total number of periodic counter capture packets received since the receive thread started. </p>
<dl class="section return"><dt>Returns</dt><dd>number of periodic counter capture packets received. </dd></dl>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8hpp_source.xhtml#l00082">82</a> of file <a class="el" href="_gatord_mock_service_8hpp_source.xhtml">GatordMockService.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    {</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        <span class="keywordflow">return</span> m_PacketsReceivedCount.load(std::memory_order_acquire);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    }</div></div><!-- fragment -->
</div>
</div>
<a id="ab8fa64e5465395276e19780848dca811"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8fa64e5465395276e19780848dca811">&#9670;&nbsp;</a></span>GetStreamMetadataMaxDataLen()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t GetStreamMetadataMaxDataLen </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8hpp_source.xhtml#l00108">108</a> of file <a class="el" href="_gatord_mock_service_8hpp_source.xhtml">GatordMockService.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    {</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <span class="keywordflow">return</span> m_StreamMetaDataMaxDataLen;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    }</div></div><!-- fragment -->
</div>
</div>
<a id="ad7330665da0f97c753eddeee2a09a1d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7330665da0f97c753eddeee2a09a1d9">&#9670;&nbsp;</a></span>GetStreamMetadataPid()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t GetStreamMetadataPid </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8hpp_source.xhtml#l00113">113</a> of file <a class="el" href="_gatord_mock_service_8hpp_source.xhtml">GatordMockService.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    {</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        <span class="keywordflow">return</span> m_StreamMetaDataPid;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    }</div></div><!-- fragment -->
</div>
</div>
<a id="aaf9805c78f5073622573dd3d4ce1e188"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf9805c78f5073622573dd3d4ce1e188">&#9670;&nbsp;</a></span>GetStreamMetadataVersion()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t GetStreamMetadataVersion </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8hpp_source.xhtml#l00103">103</a> of file <a class="el" href="_gatord_mock_service_8hpp_source.xhtml">GatordMockService.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        <span class="keywordflow">return</span> m_StreamMetaDataVersion;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    }</div></div><!-- fragment -->
</div>
</div>
<a id="a5175305569ecb4e58004e977abeff61a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5175305569ecb4e58004e977abeff61a">&#9670;&nbsp;</a></span>LaunchReceivingThread()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool LaunchReceivingThread </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Start the thread that will receive all packets and print them nicely to stdout. </p>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8cpp_source.xhtml#l00149">149</a> of file <a class="el" href="_gatord_mock_service_8cpp_source.xhtml">GatordMockService.cpp</a>.</p>

<p class="reference">References <a class="el" href="_network_sockets_8cpp_source.xhtml#l00028">armnnUtils::Sockets::Close()</a>, and <a class="el" href="_network_sockets_8cpp_source.xhtml#l00038">armnnUtils::Sockets::SetNonBlocking()</a>.</p>

<p class="reference">Referenced by <a class="el" href="_gatord_mock_tests_8cpp_source.xhtml#l00106">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><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;    <span class="keywordflow">if</span> (m_EchoPackets)</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    {</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;Launching receiving thread.&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    }</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="comment">// At this point we want to make the socket non blocking.</span></div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keywordflow">if</span> (!<a class="code" href="namespacearmnn_utils_1_1_sockets.xhtml#a8396c0d14fc0e7284b175fedfeceef37">Sockets::SetNonBlocking</a>(m_ClientConnection))</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="namespacearmnn_utils_1_1_sockets.xhtml#a72e0661331d20d0a352fb49c388a1b05">Sockets::Close</a>(m_ClientConnection);</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        std::cerr &lt;&lt; <span class="stringliteral">&quot;Failed to set socket as non blocking: &quot;</span> &lt;&lt; strerror(errno) &lt;&lt; std::endl;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</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;    m_ListeningThread = std::thread(&amp;GatordMockService::ReceiveLoop, <span class="keyword">this</span>, std::ref(*<span class="keyword">this</span>));</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_1_1_sockets_xhtml_a8396c0d14fc0e7284b175fedfeceef37"><div class="ttname"><a href="namespacearmnn_utils_1_1_sockets.xhtml#a8396c0d14fc0e7284b175fedfeceef37">armnnUtils::Sockets::SetNonBlocking</a></div><div class="ttdeci">bool SetNonBlocking(Socket s)</div><div class="ttdef"><b>Definition:</b> <a href="_network_sockets_8cpp_source.xhtml#l00038">NetworkSockets.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_utils_1_1_sockets_xhtml_a72e0661331d20d0a352fb49c388a1b05"><div class="ttname"><a href="namespacearmnn_utils_1_1_sockets.xhtml#a72e0661331d20d0a352fb49c388a1b05">armnnUtils::Sockets::Close</a></div><div class="ttdeci">int Close(Socket s)</div><div class="ttdef"><b>Definition:</b> <a href="_network_sockets_8cpp_source.xhtml#l00028">NetworkSockets.cpp:28</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa03af06b5336e9ad43b374a03934c0f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa03af06b5336e9ad43b374a03934c0f1">&#9670;&nbsp;</a></span>OpenListeningSocket()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool OpenListeningSocket </td>
          <td>(</td>
          <td class="paramtype">std::string&#160;</td>
          <td class="paramname"><em>udsNamespace</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Establish the Unix domain socket and set it to listen for connections. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">udsNamespace</td><td>the namespace (socket address) associated with the listener. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true only if the socket has been correctly setup. </dd></dl>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8cpp_source.xhtml#l00027">27</a> of file <a class="el" href="_gatord_mock_service_8cpp_source.xhtml">GatordMockService.cpp</a>.</p>

<p class="reference">References <a class="el" href="_network_sockets_8cpp_source.xhtml#l00018">armnnUtils::Sockets::Initialize()</a>.</p>

<p class="reference">Referenced by <a class="el" href="_gatord_mock_tests_8cpp_source.xhtml#l00106">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;    <a class="code" href="namespacearmnn_utils_1_1_sockets.xhtml#a248c764067ee60c03ee370784c49f353">Sockets::Initialize</a>();</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    m_ListeningSocket = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keywordflow">if</span> (-1 == m_ListeningSocket)</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    {</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;        std::cerr &lt;&lt; <span class="stringliteral">&quot;: Socket construction failed: &quot;</span> &lt;&lt; strerror(errno) &lt;&lt; std::endl;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    }</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    sockaddr_un udsAddress;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    memset(&amp;udsAddress, 0, <span class="keyword">sizeof</span>(sockaddr_un));</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <span class="comment">// We&#39;ve set the first element of sun_path to be 0, skip over it and copy the namespace after it.</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    memcpy(udsAddress.sun_path + 1, udsNamespace.c_str(), strlen(udsNamespace.c_str()));</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    udsAddress.sun_family = AF_UNIX;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    <span class="comment">// Bind the socket to the UDS namespace.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="keywordflow">if</span> (-1 == bind(m_ListeningSocket, reinterpret_cast&lt;const sockaddr*&gt;(&amp;udsAddress), <span class="keyword">sizeof</span>(sockaddr_un)))</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    {</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        std::cerr &lt;&lt; <span class="stringliteral">&quot;: Binding on socket failed: &quot;</span> &lt;&lt; strerror(errno) &lt;&lt; std::endl;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    }</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="comment">// Listen for 1 connection.</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keywordflow">if</span> (-1 == listen(m_ListeningSocket, 1))</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        std::cerr &lt;&lt; <span class="stringliteral">&quot;: Listen call on socket failed: &quot;</span> &lt;&lt; strerror(errno) &lt;&lt; std::endl;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    }</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_1_1_sockets_xhtml_a248c764067ee60c03ee370784c49f353"><div class="ttname"><a href="namespacearmnn_utils_1_1_sockets.xhtml#a248c764067ee60c03ee370784c49f353">armnnUtils::Sockets::Initialize</a></div><div class="ttdeci">bool Initialize()</div><div class="ttdoc">Performs any required one-time setup. </div><div class="ttdef"><b>Definition:</b> <a href="_network_sockets_8cpp_source.xhtml#l00018">NetworkSockets.cpp:18</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a82bd11e044b4bc9c647fcaa9ce5b3e55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82bd11e044b4bc9c647fcaa9ce5b3e55">&#9670;&nbsp;</a></span>ReceiveThreadRunning()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ReceiveThreadRunning </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8hpp_source.xhtml#l00092">92</a> of file <a class="el" href="_gatord_mock_service_8hpp_source.xhtml">GatordMockService.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="_command_file_parser_8cpp_source.xhtml#l00019">CommandFileParser::ParseFile()</a>, and <a class="el" href="_gatord_mock_service_8cpp_source.xhtml#l00214">GatordMockService::WaitCommand()</a>.</p>
<div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    {</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keywordflow">return</span> !m_CloseReceivingThread.load();</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    }</div></div><!-- fragment -->
</div>
</div>
<a id="a41eaa65cf4e7212f09b04d06c130cd83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41eaa65cf4e7212f09b04d06c130cd83">&#9670;&nbsp;</a></span>SendConnectionAck()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SendConnectionAck </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Send a connection acknowledged packet back to the client. </p>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8cpp_source.xhtml#l00129">129</a> of file <a class="el" href="_gatord_mock_service_8cpp_source.xhtml">GatordMockService.cpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="_gatord_mock_tests_8cpp_source.xhtml#l00106">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;{</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">if</span> (m_EchoPackets)</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    {</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;Sending connection acknowledgement.&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    }</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="comment">// The connection ack packet is an empty data packet with packetId == 1.</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    SendPacket(0, 1, <span class="keyword">nullptr</span>, 0);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="abaf2feb0e79566de18721659d896dae1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abaf2feb0e79566de18721659d896dae1">&#9670;&nbsp;</a></span>SendPeriodicCounterSelectionList()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SendPeriodicCounterSelectionList </td>
          <td>(</td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>period</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; uint16_t &gt;&#160;</td>
          <td class="paramname"><em>counters</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Send the counter list to ArmNN. </p>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8cpp_source.xhtml#l00181">181</a> of file <a class="el" href="_gatord_mock_service_8cpp_source.xhtml">GatordMockService.cpp</a>.</p>

<p class="reference">References <a class="el" href="_profiling_utils_8cpp_source.xhtml#l00126">armnn::profiling::WriteUint16()</a>, and <a class="el" href="_profiling_utils_8cpp_source.xhtml#l00119">armnn::profiling::WriteUint32()</a>.</p>

<p class="reference">Referenced by <a class="el" href="_command_file_parser_8cpp_source.xhtml#l00019">CommandFileParser::ParseFile()</a>.</p>
<div class="fragment"><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;{</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="comment">// The packet body consists of a UINT32 representing the period following by zero or more</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="comment">// UINT16&#39;s representing counter UID&#39;s. If the list is empty it implies all counters are to</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <span class="comment">// be disabled.</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="keywordflow">if</span> (m_EchoPackets)</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    {</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;SendPeriodicCounterSelectionList: Period=&quot;</span> &lt;&lt; std::dec &lt;&lt; period &lt;&lt; <span class="stringliteral">&quot;uSec&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;List length=&quot;</span> &lt;&lt; counters.size() &lt;&lt; std::endl;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        ;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    }</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    <span class="comment">// Start by calculating the length of the packet body in bytes. This will be at least 4.</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    uint32_t dataLength = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(4 + (counters.size() * 2));</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    std::unique_ptr&lt;unsigned char[]&gt; uniqueData = std::make_unique&lt;unsigned char[]&gt;(dataLength);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* data                         = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(uniqueData.get());</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;    uint32_t offset = 0;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <a class="code" href="namespacearmnn_1_1profiling.xhtml#a3e638748a39d46e2943dfcef94dcb828">profiling::WriteUint32</a>(data, offset, period);</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    offset += 4;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="keywordflow">for</span> (std::vector&lt;uint16_t&gt;::iterator it = counters.begin(); it != counters.end(); ++it)</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;        <a class="code" href="namespacearmnn_1_1profiling.xhtml#ae5ace88c65e65ab7cf5572613601a60d">profiling::WriteUint16</a>(data, offset, *it);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        offset += 2;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    }</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="comment">// Send the packet.</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    SendPacket(0, 4, data, dataLength);</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <span class="comment">// There will be an echo response packet sitting in the receive thread. PeriodicCounterSelectionResponseHandler</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    <span class="comment">// should deal with it.</span></div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;}</div><div class="ttc" id="namespacearmnn_1_1profiling_xhtml_ae5ace88c65e65ab7cf5572613601a60d"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#ae5ace88c65e65ab7cf5572613601a60d">armnn::profiling::WriteUint16</a></div><div class="ttdeci">void WriteUint16(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset, uint16_t value)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00126">ProfilingUtils.cpp:126</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a3e638748a39d46e2943dfcef94dcb828"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a3e638748a39d46e2943dfcef94dcb828">armnn::profiling::WriteUint32</a></div><div class="ttdeci">void WriteUint32(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset, uint32_t value)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00119">ProfilingUtils.cpp:119</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2b9de2e6eee97f258fe2d7c765206e8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b9de2e6eee97f258fe2d7c765206e8a">&#9670;&nbsp;</a></span>SendRequestCounterDir()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SendRequestCounterDir </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Send a request counter directory packet back to the client. </p>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8cpp_source.xhtml#l00139">139</a> of file <a class="el" href="_gatord_mock_service_8cpp_source.xhtml">GatordMockService.cpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="_command_file_parser_8cpp_source.xhtml#l00019">CommandFileParser::ParseFile()</a>.</p>
<div class="fragment"><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;    <span class="keywordflow">if</span> (m_EchoPackets)</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    {</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;Sending connection acknowledgement.&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    }</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <span class="comment">// The connection ack packet is an empty data packet with packetId == 1.</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    SendPacket(0, 3, <span class="keyword">nullptr</span>, 0);</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a18f77daf6b32e5bb456c2bc860140669"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18f77daf6b32e5bb456c2bc860140669">&#9670;&nbsp;</a></span>WaitCommand()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void WaitCommand </td>
          <td>(</td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>timeout</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Execute the WAIT command from the comamnd file. </p>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8cpp_source.xhtml#l00214">214</a> of file <a class="el" href="_gatord_mock_service_8cpp_source.xhtml">GatordMockService.cpp</a>.</p>

<p class="reference">References <a class="el" href="namespacearmnn_1_1gatordmock.xhtml#a006732ecc1f16712db06bf622eb79651aefe19217ee8d2186e7bbecbf2f171eb9">armnn::gatordmock::BeWire</a>, <a class="el" href="_encode_version_8hpp_source.xhtml#l00045">Version::GetEncodedValue()</a>, <a class="el" href="_packet_8hpp_source.xhtml#l00074">Packet::GetLength()</a>, <a class="el" href="_packet_8hpp_source.xhtml#l00070">Packet::GetPacketFamily()</a>, <a class="el" href="_packet_8hpp_source.xhtml#l00071">Packet::GetPacketId()</a>, <a class="el" href="_network_sockets_8cpp_source.xhtml#l00069">armnnUtils::Sockets::Ioctl()</a>, <a class="el" href="_network_sockets_8cpp_source.xhtml#l00081">armnnUtils::Sockets::Poll()</a>, <a class="el" href="_network_sockets_8cpp_source.xhtml#l00060">armnnUtils::Sockets::Read()</a>, <a class="el" href="namespacearmnn_1_1gatordmock.xhtml#aec1b34297cc8e184a2d3d2c6e20da955af44b1a9eb8e6ef1bea10617c1dfef07f">armnn::gatordmock::ReceivedData</a>, <a class="el" href="namespacearmnn_1_1gatordmock.xhtml#aec1b34297cc8e184a2d3d2c6e20da955a2855fc8ecb116f85a4b09600fd1cd75f">armnn::gatordmock::ReceivedHeader</a>, <a class="el" href="_gatord_mock_service_8hpp_source.xhtml#l00092">GatordMockService::ReceiveThreadRunning()</a>, <a class="el" href="_packet_version_resolver_8cpp_source.xhtml#l00055">PacketVersionResolver::ResolvePacketVersion()</a>, <a class="el" href="namespacearmnn_1_1gatordmock.xhtml#aec1b34297cc8e184a2d3d2c6e20da955ae4b0c2b6d59cb4cf3e169a9886008087">armnn::gatordmock::Sending</a>, <a class="el" href="_exceptions_8cpp_source.xhtml#l00032">Exception::what()</a>, and <a class="el" href="_network_sockets_8cpp_source.xhtml#l00050">armnnUtils::Sockets::Write()</a>.</p>

<p class="reference">Referenced by <a class="el" href="_command_file_parser_8cpp_source.xhtml#l00019">CommandFileParser::ParseFile()</a>.</p>
<div class="fragment"><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;{</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <span class="comment">// Wait for a maximum of timeout microseconds or if the receive thread has closed.</span></div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="comment">// There is a certain level of rounding involved in this timing.</span></div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    uint32_t iterations = timeout / 1000;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    std::cout &lt;&lt; std::dec &lt;&lt; <span class="stringliteral">&quot;Wait command with timeout of &quot;</span> &lt;&lt; timeout &lt;&lt; <span class="stringliteral">&quot; iterations =  &quot;</span> &lt;&lt; iterations &lt;&lt; std::endl;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    uint32_t count = 0;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    <span class="keywordflow">while</span> ((this-&gt;<a class="code" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a82bd11e044b4bc9c647fcaa9ce5b3e55">ReceiveThreadRunning</a>() &amp;&amp; (count &lt; iterations)))</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    {</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        std::this_thread::sleep_for(std::chrono::microseconds(1000));</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        ++count;</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    }</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="keywordflow">if</span> (m_EchoPackets)</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    {</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        std::cout &lt;&lt; std::dec &lt;&lt; <span class="stringliteral">&quot;Wait command with timeout of &quot;</span> &lt;&lt; timeout &lt;&lt; <span class="stringliteral">&quot; microseconds completed. &quot;</span> &lt;&lt; std::endl;</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="ttc" id="classarmnn_1_1gatordmock_1_1_gatord_mock_service_xhtml_a82bd11e044b4bc9c647fcaa9ce5b3e55"><div class="ttname"><a href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a82bd11e044b4bc9c647fcaa9ce5b3e55">armnn::gatordmock::GatordMockService::ReceiveThreadRunning</a></div><div class="ttdeci">bool ReceiveThreadRunning()</div><div class="ttdef"><b>Definition:</b> <a href="_gatord_mock_service_8hpp_source.xhtml#l00092">GatordMockService.hpp:92</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a93617d8640d5e93831d06a2ef3c86bef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93617d8640d5e93831d06a2ef3c86bef">&#9670;&nbsp;</a></span>WaitForReceivingThread()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void WaitForReceivingThread </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This is a placeholder method to prevent main exiting. </p>
<p>It can be removed once the command handling code is added. </p>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8cpp_source.xhtml#l00166">166</a> of file <a class="el" href="_gatord_mock_service_8cpp_source.xhtml">GatordMockService.cpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="_gatord_mock_tests_8cpp_source.xhtml#l00106">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;{</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="comment">// The receiving thread may already have died.</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="keywordflow">if</span> (m_CloseReceivingThread != <span class="keyword">true</span>)</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    {</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        m_CloseReceivingThread.store(<span class="keyword">true</span>);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    }</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="comment">// Check that the receiving thread is running</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="keywordflow">if</span> (m_ListeningThread.joinable())</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    {</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        <span class="comment">// Wait for the receiving thread to complete operations</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        m_ListeningThread.join();</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    }</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ac07351dbc304681b2efd5df4958a6735"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac07351dbc304681b2efd5df4958a6735">&#9670;&nbsp;</a></span>WaitForStreamMetaData()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool WaitForStreamMetaData </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Once the connection is open wait to receive the stream meta data packet from the client. </p>
<p>Reading this packet differs from others as we need to determine endianness. </p><dl class="section return"><dt>Returns</dt><dd>true only if a valid stream met data packet has been received. </dd></dl>

<p class="definition">Definition at line <a class="el" href="_gatord_mock_service_8cpp_source.xhtml#l00069">69</a> of file <a class="el" href="_gatord_mock_service_8cpp_source.xhtml">GatordMockService.cpp</a>.</p>

<p class="reference">References <a class="el" href="namespacearmnn_1_1gatordmock.xhtml#a006732ecc1f16712db06bf622eb79651aefe19217ee8d2186e7bbecbf2f171eb9">armnn::gatordmock::BeWire</a>, <a class="el" href="namespacearmnn_1_1gatordmock.xhtml#a006732ecc1f16712db06bf622eb79651ab2db365e5027e9a57988c7054e9bd6b7">armnn::gatordmock::LeWire</a>, <a class="el" href="_network_sockets_8cpp_source.xhtml#l00060">armnnUtils::Sockets::Read()</a>, <a class="el" href="namespacearmnn_1_1gatordmock.xhtml#aec1b34297cc8e184a2d3d2c6e20da955af44b1a9eb8e6ef1bea10617c1dfef07f">armnn::gatordmock::ReceivedData</a>, and <a class="el" href="namespacearmnn_1_1gatordmock.xhtml#aec1b34297cc8e184a2d3d2c6e20da955a2855fc8ecb116f85a4b09600fd1cd75f">armnn::gatordmock::ReceivedHeader</a>.</p>

<p class="reference">Referenced by <a class="el" href="_gatord_mock_tests_8cpp_source.xhtml#l00106">BOOST_AUTO_TEST_CASE()</a>.</p>
<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="keywordflow">if</span> (m_EchoPackets)</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    {</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;Waiting for stream meta data...&quot;</span> &lt;&lt; std::endl;</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="comment">// The start of the stream metadata is 2x32bit words, 0 and packet length.</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    uint8_t header[8];</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">if</span> (!ReadFromSocket(header, 8))</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    {</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    }</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    EchoPacket(<a class="code" href="namespacearmnn_1_1gatordmock.xhtml#aec1b34297cc8e184a2d3d2c6e20da955a2855fc8ecb116f85a4b09600fd1cd75f">PacketDirection::ReceivedHeader</a>, header, 8);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="comment">// The first word, stream_metadata_identifer, should always be 0.</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordflow">if</span> (ToUint32(&amp;header[0], <a class="code" href="namespacearmnn_1_1gatordmock.xhtml#a006732ecc1f16712db06bf622eb79651aefe19217ee8d2186e7bbecbf2f171eb9">TargetEndianness::BeWire</a>) != 0)</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    {</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        std::cerr &lt;&lt; <span class="stringliteral">&quot;: Protocol error. The stream_metadata_identifer was not 0.&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    }</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    uint8_t pipeMagic[4];</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="keywordflow">if</span> (!ReadFromSocket(pipeMagic, 4))</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    }</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    EchoPacket(<a class="code" href="namespacearmnn_1_1gatordmock.xhtml#aec1b34297cc8e184a2d3d2c6e20da955af44b1a9eb8e6ef1bea10617c1dfef07f">PacketDirection::ReceivedData</a>, pipeMagic, 4);</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">   96</span>&#160;    <span class="comment">// Before we interpret the length we need to read the pipe_magic word to determine endianness.</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordflow">if</span> (ToUint32(&amp;pipeMagic[0], <a class="code" href="namespacearmnn_1_1gatordmock.xhtml#a006732ecc1f16712db06bf622eb79651aefe19217ee8d2186e7bbecbf2f171eb9">TargetEndianness::BeWire</a>) == PIPE_MAGIC)</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    {</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        m_Endianness = <a class="code" href="namespacearmnn_1_1gatordmock.xhtml#a006732ecc1f16712db06bf622eb79651aefe19217ee8d2186e7bbecbf2f171eb9">TargetEndianness::BeWire</a>;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    }</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ToUint32(&amp;pipeMagic[0], <a class="code" href="namespacearmnn_1_1gatordmock.xhtml#a006732ecc1f16712db06bf622eb79651ab2db365e5027e9a57988c7054e9bd6b7">TargetEndianness::LeWire</a>) == PIPE_MAGIC)</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    {</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        m_Endianness = <a class="code" href="namespacearmnn_1_1gatordmock.xhtml#a006732ecc1f16712db06bf622eb79651ab2db365e5027e9a57988c7054e9bd6b7">TargetEndianness::LeWire</a>;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    }</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keywordflow">else</span></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;        std::cerr &lt;&lt; <span class="stringliteral">&quot;: Protocol read error. Unable to read PIPE_MAGIC value.&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</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;    <span class="comment">// Now we know the endianness we can get the length from the header.</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="comment">// Remember we already read the pipe magic 4 bytes.</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    uint32_t metaDataLength = ToUint32(&amp;header[4], m_Endianness) - 4;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="comment">// Read the entire packet.</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    std::vector&lt;uint8_t&gt; packetData(metaDataLength);</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keywordflow">if</span> (metaDataLength !=</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        boost::numeric_cast&lt;uint32_t&gt;(<a class="code" href="namespacearmnn_utils_1_1_sockets.xhtml#a7b2c6949d9d76d2c0ffca916175e5322">Sockets::Read</a>(m_ClientConnection, packetData.data(), metaDataLength)))</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    {</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        std::cerr &lt;&lt; <span class="stringliteral">&quot;: Protocol read error. Data length mismatch.&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    }</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    EchoPacket(<a class="code" href="namespacearmnn_1_1gatordmock.xhtml#aec1b34297cc8e184a2d3d2c6e20da955af44b1a9eb8e6ef1bea10617c1dfef07f">PacketDirection::ReceivedData</a>, packetData.data(), metaDataLength);</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    m_StreamMetaDataVersion    = ToUint32(&amp;packetData[0], m_Endianness);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    m_StreamMetaDataMaxDataLen = ToUint32(&amp;packetData[4], m_Endianness);</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    m_StreamMetaDataPid        = ToUint32(&amp;packetData[8], m_Endianness);</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;}</div><div class="ttc" id="namespacearmnn_1_1gatordmock_xhtml_a006732ecc1f16712db06bf622eb79651ab2db365e5027e9a57988c7054e9bd6b7"><div class="ttname"><a href="namespacearmnn_1_1gatordmock.xhtml#a006732ecc1f16712db06bf622eb79651ab2db365e5027e9a57988c7054e9bd6b7">armnn::gatordmock::TargetEndianness::LeWire</a></div></div>
<div class="ttc" id="namespacearmnn_1_1gatordmock_xhtml_a006732ecc1f16712db06bf622eb79651aefe19217ee8d2186e7bbecbf2f171eb9"><div class="ttname"><a href="namespacearmnn_1_1gatordmock.xhtml#a006732ecc1f16712db06bf622eb79651aefe19217ee8d2186e7bbecbf2f171eb9">armnn::gatordmock::TargetEndianness::BeWire</a></div></div>
<div class="ttc" id="namespacearmnn_1_1gatordmock_xhtml_aec1b34297cc8e184a2d3d2c6e20da955af44b1a9eb8e6ef1bea10617c1dfef07f"><div class="ttname"><a href="namespacearmnn_1_1gatordmock.xhtml#aec1b34297cc8e184a2d3d2c6e20da955af44b1a9eb8e6ef1bea10617c1dfef07f">armnn::gatordmock::PacketDirection::ReceivedData</a></div></div>
<div class="ttc" id="namespacearmnn_1_1gatordmock_xhtml_aec1b34297cc8e184a2d3d2c6e20da955a2855fc8ecb116f85a4b09600fd1cd75f"><div class="ttname"><a href="namespacearmnn_1_1gatordmock.xhtml#aec1b34297cc8e184a2d3d2c6e20da955a2855fc8ecb116f85a4b09600fd1cd75f">armnn::gatordmock::PacketDirection::ReceivedHeader</a></div></div>
<div class="ttc" id="namespacearmnn_utils_1_1_sockets_xhtml_a7b2c6949d9d76d2c0ffca916175e5322"><div class="ttname"><a href="namespacearmnn_utils_1_1_sockets.xhtml#a7b2c6949d9d76d2c0ffca916175e5322">armnnUtils::Sockets::Read</a></div><div class="ttdeci">long Read(Socket s, void *buf, size_t len)</div><div class="ttdef"><b>Definition:</b> <a href="_network_sockets_8cpp_source.xhtml#l00060">NetworkSockets.cpp:60</a></div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>tests/profiling/gatordmock/<a class="el" href="_gatord_mock_service_8hpp_source.xhtml">GatordMockService.hpp</a></li>
<li>tests/profiling/gatordmock/<a class="el" href="_gatord_mock_service_8cpp_source.xhtml">GatordMockService.cpp</a></li>
</ul>
</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="namespacearmnn.xhtml">armnn</a></li><li class="navelem"><a class="el" href="namespacearmnn_1_1gatordmock.xhtml">gatordmock</a></li><li class="navelem"><a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml">GatordMockService</a></li>
    <li class="footer">Generated on Fri Mar 13 2020 16:09:20 for ArmNN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>