This commit is contained in:
2025-11-24 14:19:51 +05:30
commit f5c1412b28
6734 changed files with 1527575 additions and 0 deletions

View File

@ -0,0 +1,144 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/VariableListDeltaTracker.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d00/_variable_list_delta_tracker_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">VariableListDeltaTracker.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../df/df2/_native_types_8h_source.xhtml">NativeTypes.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d7f/_d_s___list_8h_source.xhtml">DS_List.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dd/dc5/memoryoverride_8h_source.xhtml">memoryoverride.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/dc3/_bit_stream_8h_source.xhtml">BitStream.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/d00/_variable_list_delta_tracker_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml">SLNet::VariableListDeltaTracker</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml">SLNet::VariableListDeltaTracker::VariableLastValueNode</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:dd/d30/namespace_s_l_net"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></td></tr>
<tr class="memdesc:dd/d30/namespace_s_l_net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/d00/_variable_list_delta_tracker_8h.xhtml">VariableListDeltaTracker.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,259 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/VariableListDeltaTracker.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d00/_variable_list_delta_tracker_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">VariableListDeltaTracker.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/d00/_variable_list_delta_tracker_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../df/df2/_native_types_8h.xhtml">NativeTypes.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d7f/_d_s___list_8h.xhtml">DS_List.h</a>&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/dc5/memoryoverride_8h.xhtml" title="If _USE_RAK_MEMORY_OVERRIDE is defined, memory allocations go through rakMalloc, rakRealloc, and rakFree.">memoryoverride.h</a>&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/dc3/_bit_stream_8h.xhtml" title="This class allows you to write and read native types as a string of bits.">BitStream.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifndef __VARIABLE_LIST_DELTA_TRACKER</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __VARIABLE_LIST_DELTA_TRACKER</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span>SLNet</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml">VariableListDeltaTracker</a></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#aaefde87f8abe144f0fd0a5585e959923">VariableListDeltaTracker</a>();</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a0704466f18f590fdb6bd90be5a62a695">~VariableListDeltaTracker</a>();</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">// Call before using a series of WriteVar</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#ae2fc5a264d0719fa27d51e5f365e39aa">StartWrite</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a853a9e9d3765a34dd78cb271e2a8b7be"> 37</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a853a9e9d3765a34dd78cb271e2a8b7be">IsPastEndOfList</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>&gt;=<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>();}</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> VarType&gt;</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a804f6b8ba2b1fef974b6f7ddc55b7b94"> 43</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a804f6b8ba2b1fef974b6f7ddc55b7b94">WriteVar</a>(<span class="keyword">const</span> VarType &amp;varData)</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> temp;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(varData);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>&gt;=<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>())</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; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a771fc63e3b0d892fbb605a379a78bacb" title="Push an element at the end of the stack.">Push</a>(<a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml">VariableLastValueNode</a>(temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a7b4099386f6f116f0978b00ead160a0d">GetData</a>(),temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>()),<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>++;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// Different because it&#39;s new</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>()!=<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].byteLength)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].lastData=(<span class="keywordtype">char</span>*) <a class="code" href="../../d9/d4c/_rak_memory_override_8cpp.xhtml#a6dca7c6bae7fe47d4e94611ba1478c0c">rakRealloc_Ex</a>(<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].lastData, temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>(),<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].byteLength=temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>();</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; memcpy(<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].lastData,temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a7b4099386f6f116f0978b00ead160a0d">GetData</a>(),temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>());</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>++;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].isDirty=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// Different because the serialized size is different</span></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; <span class="keywordflow">if</span> (<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].isDirty==<span class="keyword">false</span> &amp;&amp; memcmp(temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a7b4099386f6f116f0978b00ead160a0d">GetData</a>(),<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].lastData, <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].byteLength)==0)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>++;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Same because not dirty and memcmp is the same</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].isDirty=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; memcpy(<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>[<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>].lastData,temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a7b4099386f6f116f0978b00ead160a0d">GetData</a>(),temp.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>());</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>++;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// Different because dirty or memcmp was different</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> VarType&gt;</div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a05bee155bf8883276573738ce165cab4"> 76</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a05bee155bf8883276573738ce165cab4" title="Calls WriteVar. If the variable has changed, writes true, and writes the variable. Otherwise writes false.">WriteVarToBitstream</a>(<span class="keyword">const</span> VarType &amp;varData, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *bitStream)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">bool</span> wasDifferent = <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a804f6b8ba2b1fef974b6f7ddc55b7b94">WriteVar</a>(varData);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(wasDifferent);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (wasDifferent)</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(varData);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> VarType&gt;</div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a5d2069498dce50a491976b6a4c883863"> 89</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a05bee155bf8883276573738ce165cab4" title="Calls WriteVar. If the variable has changed, writes true, and writes the variable. Otherwise writes false.">WriteVarToBitstream</a>(<span class="keyword">const</span> VarType &amp;varData, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *bitStream, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bArray, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> writeOffset)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a05bee155bf8883276573738ce165cab4" title="Calls WriteVar. If the variable has changed, writes true, and writes the variable. Otherwise writes false.">WriteVarToBitstream</a>(varData,bitStream)==<span class="keyword">true</span>)</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a227d2a5f9683a34d9d1e70772fd556ec">BitSize_t</a> numberOfBitsMod8 = writeOffset &amp; 7;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span> ( numberOfBitsMod8 == 0 )</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; bArray[ writeOffset &gt;&gt; 3 ] = 0x80;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; bArray[ writeOffset &gt;&gt; 3 ] |= 0x80 &gt;&gt; ( numberOfBitsMod8 ); <span class="comment">// Set the bit to 1</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> ( ( writeOffset &amp; 7 ) == 0 )</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; bArray[ writeOffset &gt;&gt; 3 ] = 0;</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; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</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="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> VarType&gt;</div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#aeb72bda33ac9218437c12a508f268deb"> 113</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#aeb72bda33ac9218437c12a508f268deb" title="Paired with a call to WriteVarToBitstream(), will read a variable if it had changed. Otherwise the values remains the same.">ReadVarFromBitstream</a>(VarType &amp;varData, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *bitStream)</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">bool</span> wasWritten;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(wasWritten)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span> (wasWritten)</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(varData)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> wasWritten;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#acbbad9fa1cb7e3aae24e4e559f3e1b2a">FlagDirtyFromBitArray</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bArray);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div>
<div class="line"><a name="l00131"></a><span class="lineno"><a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml"> 131</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml">VariableLastValueNode</a></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; <a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml#a24efff925fafe3edfe95f240ad2f4ace">VariableLastValueNode</a>();</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml#a24efff925fafe3edfe95f240ad2f4ace">VariableLastValueNode</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *data, <span class="keywordtype">int</span> _byteLength);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml#a3f5c842507ee91dde91238fc0828c066">~VariableLastValueNode</a>();</div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml#ab71358a633ed93815f68344dd026b122"> 136</a></span>&#160; <span class="keywordtype">char</span> *<a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml#ab71358a633ed93815f68344dd026b122">lastData</a>;</div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml#a9b66198dbf3c1a71bb778fff79eccc92"> 137</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml#a9b66198dbf3c1a71bb778fff79eccc92">byteLength</a>;</div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml#a2dca48c9921133bb8b4c2b5ca3944fdf"> 138</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../dc/dea/struct_s_l_net_1_1_variable_list_delta_tracker_1_1_variable_last_value_node.xhtml#a2dca48c9921133bb8b4c2b5ca3944fdf">isDirty</a>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; };</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4"> 143</a></span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;VariableLastValueNode&gt;</a> <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#a3edfe444562103e57deb9e85faed21d4">variableList</a>;</div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07"> 145</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../d9/d15/class_s_l_net_1_1_variable_list_delta_tracker.xhtml#adf4e9975127adc830f27bd3ee1cb2d07">nextWriteIndex</a>;</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;</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;}</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;<span class="preprocessor">#endif</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/d00/_variable_list_delta_tracker_8h.xhtml">VariableListDeltaTracker.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,3 @@
<map id="SLNet::ReadyEvent" name="SLNet::ReadyEvent">
<area shape="rect" id="node2" href="$de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}" alt="" coords="22,5,203,332"/>
</map>

View File

@ -0,0 +1 @@
845376bdd9f5c58b8bc2c73840bb036c

View File

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: SLNet::ReadyEvent Pages: 1 -->
<!--zoomable 611 -->
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<defs>
<circle id="rim" cx="0" cy="0" r="7"/>
<circle id="rim2" cx="0" cy="0" r="3.5"/>
<g id="zoomPlus">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomplus.mouseover" end="zoomplus.mouseout"/>
</use>
<path d="M-4,0h8M0,-4v8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="zoomMin">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomminus.mouseover" end="zoomminus.mouseout"/>
</use>
<path d="M-4,0h8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="dirArrow">
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="resetDef">
<use xlink:href="#rim2" fill="#404040">
<set attributeName="fill" to="#808080" begin="reset.mouseover" end="reset.mouseout"/>
</use>
</g>
</defs>
<script type="text/javascript">
var viewWidth = 169;
var viewHeight = 611;
var sectionId = 'dynsection-0';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>SLNet::ReadyEvent</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-321.5 161,-321.5 161,-0.5 0,-0.5"/>
<text text-anchor="middle" x="80.5" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::ReadyEvent</text>
<polyline fill="none" stroke="black" points="0,-302.5 161,-302.5 "/>
<text text-anchor="start" x="8" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00"># readyEventNodeList</text>
<text text-anchor="start" x="8" y="-279.5" font-family="Helvetica,sans-Serif" font-size="10.00"># channel</text>
<polyline fill="none" stroke="black" points="0,-272.5 161,-272.5 "/>
<text text-anchor="start" x="8" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ReadyEvent()</text>
<text text-anchor="start" x="8" y="-249.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ReadyEvent()</text>
<text text-anchor="start" x="8" y="-238.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SetEvent()</text>
<text text-anchor="start" x="8" y="-227.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ForceCompletion()</text>
<text text-anchor="start" x="8" y="-216.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DeleteEvent()</text>
<text text-anchor="start" x="8" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsEventSet()</text>
<text text-anchor="start" x="8" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsEventCompletionProcessing()</text>
<text text-anchor="start" x="8" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsEventCompleted()</text>
<text text-anchor="start" x="8" y="-172.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasEvent()</text>
<text text-anchor="start" x="8" y="-161.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetEventListSize()</text>
<text text-anchor="start" x="8" y="-150.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 8 more...</text>
<text text-anchor="start" x="8" y="-139.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RemoteSystemCompByGuid()</text>
<text text-anchor="start" x="8" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ReadyEventNodeComp()</text>
<text text-anchor="start" x="8" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnReceive()</text>
<text text-anchor="start" x="8" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnClosedConnection()</text>
<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnRakPeerShutdown()</text>
<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00"># Clear()</text>
<text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendReadyStateQuery()</text>
<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendReadyUpdate()</text>
<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00"># BroadcastReadyUpdate()</text>
<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00"># RemoveFromAllLists()</text>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnReadyEventQuery()</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00"># PushCompletionPacket()</text>
<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 7 more...</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" target="_top" xlink:title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}">
<polygon fill="none" stroke="black" points="12.5,-358.5 12.5,-602.5 148.5,-602.5 148.5,-358.5 12.5,-358.5"/>
<text text-anchor="middle" x="80.5" y="-590.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::PluginInterface2</text>
<polyline fill="none" stroke="black" points="12.5,-583.5 148.5,-583.5 "/>
<text text-anchor="start" x="20.5" y="-571.5" font-family="Helvetica,sans-Serif" font-size="10.00"># rakPeerInterface</text>
<text text-anchor="start" x="20.5" y="-560.5" font-family="Helvetica,sans-Serif" font-size="10.00"># tcpInterface</text>
<polyline fill="none" stroke="black" points="12.5,-553.5 148.5,-553.5 "/>
<text text-anchor="start" x="20.5" y="-541.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PluginInterface2()</text>
<text text-anchor="start" x="20.5" y="-530.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~PluginInterface2()</text>
<text text-anchor="start" x="20.5" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnAttach()</text>
<text text-anchor="start" x="20.5" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnDetach()</text>
<text text-anchor="start" x="20.5" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Update()</text>
<text text-anchor="start" x="20.5" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="20.5" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerStartup()</text>
<text text-anchor="start" x="20.5" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerShutdown()</text>
<text text-anchor="start" x="20.5" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="20.5" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="20.5" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
<text text-anchor="start" x="20.5" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="20.5" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="20.5" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendListUnified()</text>
<text text-anchor="start" x="20.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00"># AllocatePacketUnified()</text>
<text text-anchor="start" x="20.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00"># PushBackPacketUnified()</text>
<text text-anchor="start" x="20.5" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DeallocPacketUnified()</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M80.5,-347.925C80.5,-339.201 80.5,-330.364 80.5,-321.523"/>
<polygon fill="none" stroke="midnightblue" points="77.0001,-348.108 80.5,-358.108 84.0001,-348.108 77.0001,-348.108"/>
</g>
</g>
</svg>
<g id="navigator" transform="translate(0 0)" fill="#404254">
<rect fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width=".5" x="0" y="0" width="60" height="60"/>
<use id="zoomplus" xlink:href="#zoomPlus" x="17" y="9" onmousedown="handleZoom(evt,'in')"/>
<use id="zoomminus" xlink:href="#zoomMin" x="42" y="9" onmousedown="handleZoom(evt,'out')"/>
<use id="reset" xlink:href="#resetDef" x="30" y="36" onmousedown="handleReset()"/>
<g id="arrowUp" xlink:href="#dirArrow" transform="translate(30 24)" onmousedown="handlePan(0,-1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowUp.mouseover" end="arrowUp.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowRight" xlink:href="#dirArrow" transform="rotate(90) translate(36 -43)" onmousedown="handlePan(1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowRight.mouseover" end="arrowRight.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowDown" xlink:href="#dirArrow" transform="rotate(180) translate(-30 -48)" onmousedown="handlePan(0,1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowDown.mouseover" end="arrowDown.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowLeft" xlink:href="#dirArrow" transform="rotate(270) translate(-36 17)" onmousedown="handlePan(-1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowLeft.mouseover" end="arrowLeft.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
</g>
<svg viewBox="0 0 15 15" width="100%" height="30px" preserveAspectRatio="xMaxYMin meet">
<g id="arrow_out" transform="scale(0.3 0.3)">
<a xlink:href="class_s_l_net_1_1_ready_event__inherit__graph_org.svg" target="_base">
<rect id="button" ry="5" rx="5" y="6" x="6" height="38" width="38"
fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width="1.0"/>
<path id="arrow"
d="M 11.500037,31.436501 C 11.940474,20.09759 22.043105,11.32322 32.158766,21.979434 L 37.068811,17.246167 C 37.068811,17.246167 37.088388,32 37.088388,32 L 22.160133,31.978069 C 22.160133,31.978069 26.997745,27.140456 26.997745,27.140456 C 18.528582,18.264221 13.291696,25.230495 11.500037,31.436501 z"
style="fill:#404040;"/>
</a>
</g>
</svg>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: SLNet::ReadyEvent Pages: 1 -->
<svg width="169pt" height="611pt"
viewBox="0.00 0.00 169.00 611.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 607)">
<title>SLNet::ReadyEvent</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-321.5 161,-321.5 161,-0.5 0,-0.5"/>
<text text-anchor="middle" x="80.5" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::ReadyEvent</text>
<polyline fill="none" stroke="black" points="0,-302.5 161,-302.5 "/>
<text text-anchor="start" x="8" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00"># readyEventNodeList</text>
<text text-anchor="start" x="8" y="-279.5" font-family="Helvetica,sans-Serif" font-size="10.00"># channel</text>
<polyline fill="none" stroke="black" points="0,-272.5 161,-272.5 "/>
<text text-anchor="start" x="8" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ReadyEvent()</text>
<text text-anchor="start" x="8" y="-249.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ReadyEvent()</text>
<text text-anchor="start" x="8" y="-238.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SetEvent()</text>
<text text-anchor="start" x="8" y="-227.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ForceCompletion()</text>
<text text-anchor="start" x="8" y="-216.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DeleteEvent()</text>
<text text-anchor="start" x="8" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsEventSet()</text>
<text text-anchor="start" x="8" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsEventCompletionProcessing()</text>
<text text-anchor="start" x="8" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsEventCompleted()</text>
<text text-anchor="start" x="8" y="-172.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasEvent()</text>
<text text-anchor="start" x="8" y="-161.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetEventListSize()</text>
<text text-anchor="start" x="8" y="-150.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 8 more...</text>
<text text-anchor="start" x="8" y="-139.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RemoteSystemCompByGuid()</text>
<text text-anchor="start" x="8" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ReadyEventNodeComp()</text>
<text text-anchor="start" x="8" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnReceive()</text>
<text text-anchor="start" x="8" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnClosedConnection()</text>
<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnRakPeerShutdown()</text>
<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00"># Clear()</text>
<text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendReadyStateQuery()</text>
<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendReadyUpdate()</text>
<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00"># BroadcastReadyUpdate()</text>
<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00"># RemoveFromAllLists()</text>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnReadyEventQuery()</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00"># PushCompletionPacket()</text>
<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 7 more...</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" target="_top" xlink:title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}">
<polygon fill="none" stroke="black" points="12.5,-358.5 12.5,-602.5 148.5,-602.5 148.5,-358.5 12.5,-358.5"/>
<text text-anchor="middle" x="80.5" y="-590.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::PluginInterface2</text>
<polyline fill="none" stroke="black" points="12.5,-583.5 148.5,-583.5 "/>
<text text-anchor="start" x="20.5" y="-571.5" font-family="Helvetica,sans-Serif" font-size="10.00"># rakPeerInterface</text>
<text text-anchor="start" x="20.5" y="-560.5" font-family="Helvetica,sans-Serif" font-size="10.00"># tcpInterface</text>
<polyline fill="none" stroke="black" points="12.5,-553.5 148.5,-553.5 "/>
<text text-anchor="start" x="20.5" y="-541.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PluginInterface2()</text>
<text text-anchor="start" x="20.5" y="-530.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~PluginInterface2()</text>
<text text-anchor="start" x="20.5" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnAttach()</text>
<text text-anchor="start" x="20.5" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnDetach()</text>
<text text-anchor="start" x="20.5" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Update()</text>
<text text-anchor="start" x="20.5" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="20.5" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerStartup()</text>
<text text-anchor="start" x="20.5" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerShutdown()</text>
<text text-anchor="start" x="20.5" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="20.5" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="20.5" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
<text text-anchor="start" x="20.5" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="20.5" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="20.5" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendListUnified()</text>
<text text-anchor="start" x="20.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00"># AllocatePacketUnified()</text>
<text text-anchor="start" x="20.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00"># PushBackPacketUnified()</text>
<text text-anchor="start" x="20.5" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DeallocPacketUnified()</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M80.5,-347.925C80.5,-339.201 80.5,-330.364 80.5,-321.523"/>
<polygon fill="none" stroke="midnightblue" points="77.0001,-348.108 80.5,-358.108 84.0001,-348.108 77.0001,-348.108"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -0,0 +1,4 @@
var _epoch_time_to_string_8cpp =
[
[ "EpochTimeToString", "d8/d28/_epoch_time_to_string_8cpp.xhtml#a9d9e7aea15aaa845abd7665c070ac098", null ]
];

View File

@ -0,0 +1,159 @@
<!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"/>
<title>SLikeNet: Source/src/EpochTimeToString.cpp File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d28/_epoch_time_to_string_8cpp.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">EpochTimeToString.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../df/da3/_format_string_8h_source.xhtml">slikenet/FormatString.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../de/d00/_epoch_time_to_string_8h_source.xhtml">slikenet/EpochTimeToString.h</a>&quot;</code><br/>
<code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &lt;<a class="el" href="../../da/d66/string_8h_source.xhtml">string.h</a>&gt;</code><br/>
<code>#include &lt;stdarg.h&gt;</code><br/>
<code>#include &lt;<a class="el" href="../../de/df7/time_8h_source.xhtml">time.h</a>&gt;</code><br/>
<code>#include &quot;<a class="el" href="../../d0/dff/_linux_strings_8h_source.xhtml">slikenet/LinuxStrings.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/db2/linux__adapter_8h_source.xhtml">slikenet/linux_adapter.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../da/dff/osx__adapter_8h_source.xhtml">slikenet/osx_adapter.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/d28/_epoch_time_to_string_8cpp_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a9d9e7aea15aaa845abd7665c070ac098"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d28/_epoch_time_to_string_8cpp.xhtml#a9d9e7aea15aaa845abd7665c070ac098">EpochTimeToString</a> (long long time)</td></tr>
<tr class="separator:a9d9e7aea15aaa845abd7665c070ac098"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a9d9e7aea15aaa845abd7665c070ac098"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char* EpochTimeToString </td>
<td>(</td>
<td class="paramtype">long long&#160;</td>
<td class="paramname"><em>time</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/d28/_epoch_time_to_string_8cpp_source.xhtml#l00027">27</a> of file <a class="el" href="../../d8/d28/_epoch_time_to_string_8cpp_source.xhtml">EpochTimeToString.cpp</a>.</p>
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/d28/_epoch_time_to_string_8cpp.xhtml">EpochTimeToString.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,173 @@
<!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"/>
<title>SLikeNet: Source/src/EpochTimeToString.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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d28/_epoch_time_to_string_8cpp_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">EpochTimeToString.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/d28/_epoch_time_to_string_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../df/da3/_format_string_8h.xhtml">slikenet/FormatString.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/d00/_epoch_time_to_string_8h.xhtml">slikenet/EpochTimeToString.h</a>&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../da/d66/string_8h.xhtml">string.h</a>&gt;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// localtime</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../de/df7/time_8h.xhtml">time.h</a>&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d0/dff/_linux_strings_8h.xhtml">slikenet/LinuxStrings.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/db2/linux__adapter_8h.xhtml">slikenet/linux_adapter.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../da/dff/osx__adapter_8h.xhtml">slikenet/osx_adapter.h</a>&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"><a class="code" href="../../de/d00/_epoch_time_to_string_8h.xhtml#a4ce9d8c1aa462826a4494abcb6b7d591"> 27</a></span>&#160;<span class="keywordtype">char</span> * <a class="code" href="../../d8/d28/_epoch_time_to_string_8cpp.xhtml#a9d9e7aea15aaa845abd7665c070ac098">EpochTimeToString</a>(<span class="keywordtype">long</span> <span class="keywordtype">long</span> time)</div>
<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; <span class="keyword">static</span> <span class="keywordtype">int</span> textIndex=0;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> text[4][64];</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">if</span> (++textIndex==4)</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; textIndex=0;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">struct </span>tm timeinfo;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; time_t t = time;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; localtime_s ( &amp;timeinfo, &amp;t );</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; strftime (text[textIndex],64,<span class="stringliteral">&quot;%c.&quot;</span>,&amp;timeinfo);</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="comment">/*</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> time_t</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> // Copied from the docs</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> struct tm *newtime;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> newtime = _localtime64(&amp; time);</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> asctime_s( text[textIndex], sizeof(text[textIndex]), newtime );</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> while (text[textIndex][0] &amp;&amp; (text[textIndex][strlen(text[textIndex])-1]==&#39;\n&#39; || text[textIndex][strlen(text[textIndex])-1]==&#39;\r&#39;))</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> text[textIndex][strlen(text[textIndex])-1]=0;</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> text[textIndex];</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/d28/_epoch_time_to_string_8cpp.xhtml">EpochTimeToString.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:47 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,18 @@
var _nat_type_detection_common_8h =
[
[ "NATTypeDetectionResult", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae62da265b44640553509a42b0f253ef6", [
[ "NAT_TYPE_NONE", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae62da265b44640553509a42b0f253ef6a373e1f23419cc1d89389e2dcca4479f2", null ],
[ "NAT_TYPE_FULL_CONE", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae62da265b44640553509a42b0f253ef6ab1ec422bd8c3fc821789e290d6c360d9", null ],
[ "NAT_TYPE_ADDRESS_RESTRICTED", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae62da265b44640553509a42b0f253ef6a5c00dbd1ef7d68d51d9c408b9d5c45ea", null ],
[ "NAT_TYPE_PORT_RESTRICTED", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae62da265b44640553509a42b0f253ef6a536002ce64a090e2e558fb2e19dab257", null ],
[ "NAT_TYPE_SYMMETRIC", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae62da265b44640553509a42b0f253ef6a18544642db1d35ef27a62144dbccf513", null ],
[ "NAT_TYPE_UNKNOWN", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae62da265b44640553509a42b0f253ef6a8a950670aa4d53161f1c15614faffa11", null ],
[ "NAT_TYPE_DETECTION_IN_PROGRESS", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae62da265b44640553509a42b0f253ef6a5e6e6e359f445ab9e4ef1dde51090ece", null ],
[ "NAT_TYPE_SUPPORTS_UPNP", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae62da265b44640553509a42b0f253ef6a8d83025baacdd2104fb3a7dc4f174d52", null ],
[ "NAT_TYPE_COUNT", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae62da265b44640553509a42b0f253ef6a37c8e578d5ce1983f9224df2b5545e65", null ]
] ],
[ "CanConnect", "d8/d2d/_nat_type_detection_common_8h.xhtml#af77159369ce20350ca85861780c7958f", null ],
[ "CreateNonblockingBoundSocket", "d8/d2d/_nat_type_detection_common_8h.xhtml#ac6f66c19ed46a5a757457cf568e8536e", null ],
[ "NATTypeDetectionResultToString", "d8/d2d/_nat_type_detection_common_8h.xhtml#ae32a2fcfdea3ab41ca8463b3bb0c262b", null ],
[ "NATTypeDetectionResultToStringFriendly", "d8/d2d/_nat_type_detection_common_8h.xhtml#a859b484973a29c253f80625681a31e1d", null ]
];

View File

@ -0,0 +1,169 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/NatTypeDetectionCommon.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d2d/_nat_type_detection_common_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">NatTypeDetectionCommon.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">NativeFeatureIncludes.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d4/dc5/_socket_includes_8h_source.xhtml">SocketIncludes.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d49/types_8h_source.xhtml">types.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../df/ded/socket2_8h_source.xhtml">socket2.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/d2d/_nat_type_detection_common_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:dd/d30/namespace_s_l_net"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></td></tr>
<tr class="memdesc:dd/d30/namespace_s_l_net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ae62da265b44640553509a42b0f253ef6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6">SLNet::NATTypeDetectionResult</a> { <br/>
&#160;&#160;<a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a373e1f23419cc1d89389e2dcca4479f2">SLNet::NAT_TYPE_NONE</a>,
<a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6ab1ec422bd8c3fc821789e290d6c360d9">SLNet::NAT_TYPE_FULL_CONE</a>,
<a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a5c00dbd1ef7d68d51d9c408b9d5c45ea">SLNet::NAT_TYPE_ADDRESS_RESTRICTED</a>,
<a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a536002ce64a090e2e558fb2e19dab257">SLNet::NAT_TYPE_PORT_RESTRICTED</a>,
<br/>
&#160;&#160;<a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a18544642db1d35ef27a62144dbccf513">SLNet::NAT_TYPE_SYMMETRIC</a>,
<a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a8a950670aa4d53161f1c15614faffa11">SLNet::NAT_TYPE_UNKNOWN</a>,
<a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a5e6e6e359f445ab9e4ef1dde51090ece">SLNet::NAT_TYPE_DETECTION_IN_PROGRESS</a>,
<a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a8d83025baacdd2104fb3a7dc4f174d52">SLNet::NAT_TYPE_SUPPORTS_UPNP</a>,
<br/>
&#160;&#160;<a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a37c8e578d5ce1983f9224df2b5545e65">SLNet::NAT_TYPE_COUNT</a>
<br/>
}</td></tr>
<tr class="memdesc:ae62da265b44640553509a42b0f253ef6"><td class="mdescLeft">&#160;</td><td class="mdescRight">All possible types of NATs (except NAT_TYPE_COUNT, which is an internal value) <a href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6">More...</a><br/></td></tr>
<tr class="separator:ae62da265b44640553509a42b0f253ef6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:af77159369ce20350ca85861780c7958f"><td class="memItemLeft" align="right" valign="top">bool <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#af77159369ce20350ca85861780c7958f">SLNet::CanConnect</a> (NATTypeDetectionResult type1, NATTypeDetectionResult type2)</td></tr>
<tr class="separator:af77159369ce20350ca85861780c7958f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae32a2fcfdea3ab41ca8463b3bb0c262b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ae32a2fcfdea3ab41ca8463b3bb0c262b">SLNet::NATTypeDetectionResultToString</a> (NATTypeDetectionResult type)</td></tr>
<tr class="memdesc:ae32a2fcfdea3ab41ca8463b3bb0c262b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a technical string representin the enumeration. <a href="#ae32a2fcfdea3ab41ca8463b3bb0c262b"></a><br/></td></tr>
<tr class="separator:ae32a2fcfdea3ab41ca8463b3bb0c262b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a859b484973a29c253f80625681a31e1d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#a859b484973a29c253f80625681a31e1d">SLNet::NATTypeDetectionResultToStringFriendly</a> (NATTypeDetectionResult type)</td></tr>
<tr class="separator:a859b484973a29c253f80625681a31e1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6f66c19ed46a5a757457cf568e8536e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> RakNetSocket2 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#ac6f66c19ed46a5a757457cf568e8536e">SLNet::CreateNonblockingBoundSocket</a> (const char *bindAddr, RNS2EventHandler *eventHandler)</td></tr>
<tr class="separator:ac6f66c19ed46a5a757457cf568e8536e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/d2d/_nat_type_detection_common_8h.xhtml">NatTypeDetectionCommon.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,183 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/NatTypeDetectionCommon.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d2d/_nat_type_detection_common_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">NatTypeDetectionCommon.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/d2d/_nat_type_detection_common_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifndef __NAT_TYPE_DETECTION_COMMON_H</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __NAT_TYPE_DETECTION_COMMON_H</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_NatTypeDetectionServer==1 || _RAKNET_SUPPORT_NatTypeDetectionClient==1</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml">SocketIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d49/types_8h.xhtml" title="Types used by RakNet, most of which involve user code.">types.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../df/ded/socket2_8h.xhtml">socket2.h</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">namespace </span>SLNet</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6"> 36</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6" title="All possible types of NATs (except NAT_TYPE_COUNT, which is an internal value)">NATTypeDetectionResult</a></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a373e1f23419cc1d89389e2dcca4479f2"> 39</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a373e1f23419cc1d89389e2dcca4479f2" title="Works with anyone.">NAT_TYPE_NONE</a>,</div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6ab1ec422bd8c3fc821789e290d6c360d9"> 41</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6ab1ec422bd8c3fc821789e290d6c360d9" title="Accepts any datagrams to a port that has been previously used. Will accept the first datagram from th...">NAT_TYPE_FULL_CONE</a>,</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a5c00dbd1ef7d68d51d9c408b9d5c45ea"> 43</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a5c00dbd1ef7d68d51d9c408b9d5c45ea" title="Accepts datagrams to a port as long as the datagram source IP address is a system we have already sen...">NAT_TYPE_ADDRESS_RESTRICTED</a>,</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a536002ce64a090e2e558fb2e19dab257"> 45</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a536002ce64a090e2e558fb2e19dab257" title="Same as address-restricted cone NAT, but we had to send to both the correct remote IP address and cor...">NAT_TYPE_PORT_RESTRICTED</a>,</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a18544642db1d35ef27a62144dbccf513"> 47</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a18544642db1d35ef27a62144dbccf513" title="A different port is chosen for every remote destination. The same source address and port to a differ...">NAT_TYPE_SYMMETRIC</a>,</div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a8a950670aa4d53161f1c15614faffa11"> 49</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a8a950670aa4d53161f1c15614faffa11" title="Hasn&#39;t been determined. NATTypeDetectionClient does not use this, but other plugins might...">NAT_TYPE_UNKNOWN</a>,</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a5e6e6e359f445ab9e4ef1dde51090ece"> 51</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a5e6e6e359f445ab9e4ef1dde51090ece" title="In progress. NATTypeDetectionClient does not use this, but other plugins might.">NAT_TYPE_DETECTION_IN_PROGRESS</a>,</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a8d83025baacdd2104fb3a7dc4f174d52"> 53</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a8d83025baacdd2104fb3a7dc4f174d52" title="Didn&#39;t bother figuring it out, as we support UPNP, so it is equivalent to NAT_TYPE_NONE. NATTypeDetectionClient does not use this, but other plugins might.">NAT_TYPE_SUPPORTS_UPNP</a>,</div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a37c8e578d5ce1983f9224df2b5545e65"> 55</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6a37c8e578d5ce1983f9224df2b5545e65">NAT_TYPE_COUNT</a></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; };</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#af77159369ce20350ca85861780c7958f">CanConnect</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6" title="All possible types of NATs (except NAT_TYPE_COUNT, which is an internal value)">NATTypeDetectionResult</a> type1, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6" title="All possible types of NATs (except NAT_TYPE_COUNT, which is an internal value)">NATTypeDetectionResult</a> type2);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae32a2fcfdea3ab41ca8463b3bb0c262b" title="Return a technical string representin the enumeration.">NATTypeDetectionResultToString</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6" title="All possible types of NATs (except NAT_TYPE_COUNT, which is an internal value)">NATTypeDetectionResult</a> type);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a859b484973a29c253f80625681a31e1d">NATTypeDetectionResultToStringFriendly</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae62da265b44640553509a42b0f253ef6" title="All possible types of NATs (except NAT_TYPE_COUNT, which is an internal value)">NATTypeDetectionResult</a> type);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> RakNetSocket2* <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac6f66c19ed46a5a757457cf568e8536e">CreateNonblockingBoundSocket</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *bindAddr</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;#ifdef __native_client__</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; ,<a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#afb515610f39898f2d6e545fe2f2f90ff">_PP_Instance_</a> chromeInstance</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;#endif</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; , RNS2EventHandler *eventHandler</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;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">//int NatTypeRecvFrom(char *data, RakNetSocket2* socket, SystemAddress &amp;sender, RNS2EventHandler *eventHandler);</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;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor">#endif // #if _RAKNET_SUPPORT_NatTypeDetectionServer==1 || _RAKNET_SUPPORT_NatTypeDetectionClient==1</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor">#endif</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/d2d/_nat_type_detection_common_8h.xhtml">NatTypeDetectionCommon.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,129 @@
<!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"/>
<title>SLikeNet: Member List</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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><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="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#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('dc/d20/struct_s_l_net_1_1_router2_debug_interface.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">SLNet::Router2DebugInterface Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../dc/d20/struct_s_l_net_1_1_router2_debug_interface.xhtml">SLNet::Router2DebugInterface</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../dc/d20/struct_s_l_net_1_1_router2_debug_interface.xhtml#a4d2e88caa00faad5880501de43f483e3">Router2DebugInterface</a>()</td><td class="entry"><a class="el" href="../../dc/d20/struct_s_l_net_1_1_router2_debug_interface.xhtml">SLNet::Router2DebugInterface</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d20/struct_s_l_net_1_1_router2_debug_interface.xhtml#ad424bcfc4c9471544469c7cb1f3c9ca2">ShowDiagnostic</a>(const char *message)</td><td class="entry"><a class="el" href="../../dc/d20/struct_s_l_net_1_1_router2_debug_interface.xhtml">SLNet::Router2DebugInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d20/struct_s_l_net_1_1_router2_debug_interface.xhtml#a7f1be14ea15ad66b0975f84afcc2a2bb">ShowFailure</a>(const char *message)</td><td class="entry"><a class="el" href="../../dc/d20/struct_s_l_net_1_1_router2_debug_interface.xhtml">SLNet::Router2DebugInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d20/struct_s_l_net_1_1_router2_debug_interface.xhtml#a2b16885888b3d7b3c46291d74aef0b19">~Router2DebugInterface</a>()</td><td class="entry"><a class="el" href="../../dc/d20/struct_s_l_net_1_1_router2_debug_interface.xhtml">SLNet::Router2DebugInterface</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:50 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
var _socket_layer_8cpp =
[
[ "_T", "d8/d4f/_socket_layer_8cpp.xhtml#ae936e4c15227768f7da4e0951def89c8", null ],
[ "GetMyIP_Win32", "d8/d4f/_socket_layer_8cpp.xhtml#a706584940b36e1d392ff2c32764d56da", null ],
[ "ProcessNetworkPacket", "d8/d4f/_socket_layer_8cpp.xhtml#a0fdb1fadf2f87f620af0ff5619efcaa7", null ]
];

View File

@ -0,0 +1,221 @@
<!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"/>
<title>SLikeNet: Source/src/SocketLayer.cpp File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d4f/_socket_layer_8cpp.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">SocketLayer.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>SocketLayer class implementation.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="../../d8/da4/_socket_layer_8h_source.xhtml">slikenet/SocketLayer.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/da7/assert_8h_source.xhtml">slikenet/assert.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d49/types_8h_source.xhtml">slikenet/types.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../de/d12/peer_8h_source.xhtml">slikenet/peer.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d6/d76/_get_time_8h_source.xhtml">slikenet/GetTime.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d0/dff/_linux_strings_8h_source.xhtml">slikenet/LinuxStrings.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../df/ded/_socket_defines_8h_source.xhtml">slikenet/SocketDefines.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/db2/linux__adapter_8h_source.xhtml">slikenet/linux_adapter.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../da/dff/osx__adapter_8h_source.xhtml">slikenet/osx_adapter.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../db/d0d/_c_c_rak_net_u_d_t_8h_source.xhtml">slikenet/CCRakNetUDT.h</a>&quot;</code><br/>
<code>#include &lt;<a class="el" href="../../da/d66/string_8h_source.xhtml">string.h</a>&gt;</code><br/>
<code>#include &lt;unistd.h&gt;</code><br/>
<code>#include &lt;fcntl.h&gt;</code><br/>
<code>#include &lt;arpa/inet.h&gt;</code><br/>
<code>#include &lt;errno.h&gt;</code><br/>
<code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &lt;ifaddrs.h&gt;</code><br/>
<code>#include &lt;netinet/in.h&gt;</code><br/>
<code>#include &lt;net/if.h&gt;</code><br/>
<code>#include &lt;sys/types.h&gt;</code><br/>
<code>#include &lt;sys/socket.h&gt;</code><br/>
<code>#include &lt;sys/ioctl.h&gt;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d81/sleep_8h_source.xhtml">slikenet/sleep.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../de/d3e/_itoa_8h_source.xhtml">slikenet/Itoa.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/d4f/_socket_layer_8cpp_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:dd/d30/namespace_s_l_net"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></td></tr>
<tr class="memdesc:dd/d30/namespace_s_l_net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ae936e4c15227768f7da4e0951def89c8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d4f/_socket_layer_8cpp.xhtml#ae936e4c15227768f7da4e0951def89c8">_T</a>(x)&#160;&#160;&#160;(x)</td></tr>
<tr class="separator:ae936e4c15227768f7da4e0951def89c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a0fdb1fadf2f87f620af0ff5619efcaa7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#a0fdb1fadf2f87f620af0ff5619efcaa7">SLNet::ProcessNetworkPacket</a> (const <a class="el" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml">SystemAddress</a> systemAddress, const char *data, const int length, <a class="el" href="../../d5/dbf/class_s_l_net_1_1_rak_peer.xhtml">RakPeer</a> *rakPeer, <a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#a3d01a3c6dcc3c11f0cc5359fe290edc7">SLNet::TimeUS</a> timeRead)</td></tr>
<tr class="separator:a0fdb1fadf2f87f620af0ff5619efcaa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a706584940b36e1d392ff2c32764d56da"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d4f/_socket_layer_8cpp.xhtml#a706584940b36e1d392ff2c32764d56da">GetMyIP_Win32</a> (<a class="el" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml">SystemAddress</a> addresses[<a class="el" href="../../d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80">MAXIMUM_NUMBER_OF_INTERNAL_IDS</a>])</td></tr>
<tr class="separator:a706584940b36e1d392ff2c32764d56da"><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>SocketLayer class implementation. </p>
<p>Definition in file <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml">SocketLayer.cpp</a>.</p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ae936e4c15227768f7da4e0951def89c8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define _T</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">x</td><td>)</td>
<td>&#160;&#160;&#160;(x)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml">SocketLayer.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml#l00376">GetMyIP_Win32()</a>, <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml#l00529">SLNet::SocketLayer::GetSystemAddress()</a>, <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml#l00493">SLNet::SocketLayer::GetSystemAddress_Old()</a>, and <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml#l00125">SLNet::SocketLayer::SetSocketOptions()</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a706584940b36e1d392ff2c32764d56da"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void GetMyIP_Win32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml">SystemAddress</a>&#160;</td>
<td class="paramname"><em>addresses</em>[MAXIMUM_NUMBER_OF_INTERNAL_IDS]</td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml#l00376">376</a> of file <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml">SocketLayer.cpp</a>.</p>
<p>References <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml#l00038">_T</a>, <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00107">MAXIMUM_NUMBER_OF_INTERNAL_IDS</a>, <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00102">RAKNET_DEBUG_TPRINTF</a>, <a class="el" href="../../dc/d0b/_thread_pool_8h_source.xhtml#l00303">return</a>, and <a class="el" href="../../d9/d49/types_8h_source.xhtml#l00368">SLNet::UNASSIGNED_SYSTEM_ADDRESS</a>.</p>
<p>Referenced by <a class="el" href="../../d8/d4f/_socket_layer_8cpp_source.xhtml#l00460">SLNet::SocketLayer::GetMyIP()</a>.</p>
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/d4f/_socket_layer_8cpp.xhtml">SocketLayer.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,746 @@
<!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"/>
<title>SLikeNet: Source/src/SocketLayer.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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d4f/_socket_layer_8cpp_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">SocketLayer.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/d4f/_socket_layer_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2018, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d8/da4/_socket_layer_8h.xhtml" title="SocketLayer class implementation.">slikenet/SocketLayer.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/da7/assert_8h.xhtml">slikenet/assert.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d49/types_8h.xhtml" title="Types used by RakNet, most of which involve user code.">slikenet/types.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/d12/peer_8h.xhtml" title="Declares RakPeer class.">slikenet/peer.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d76/_get_time_8h.xhtml" title="Returns the value from QueryPerformanceCounter. This is the function RakNet uses to represent time...">slikenet/GetTime.h</a>&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d0/dff/_linux_strings_8h.xhtml">slikenet/LinuxStrings.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../df/ded/_socket_defines_8h.xhtml">slikenet/SocketDefines.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/db2/linux__adapter_8h.xhtml">slikenet/linux_adapter.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../da/dff/osx__adapter_8h.xhtml">slikenet/osx_adapter.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#if (defined(__GNUC__) || defined(__GCCXML__)) &amp;&amp; !defined(__WIN32__)</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;netdb.h&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;tchar.h&gt;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifndef _T</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="../../d8/d4f/_socket_layer_8cpp.xhtml#ae936e4c15227768f7da4e0951def89c8"> 38</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define _T(x) (x)</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">#if defined(__native_client__)</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">using namespace pp;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#if USE_SLIDING_WINDOW_CONGESTION_CONTROL!=1</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="../../db/d0d/_c_c_rak_net_u_d_t_8h.xhtml">slikenet/CCRakNetUDT.h</a>&quot;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml">slikenet/CCRakNetSlidingWindow.h</a>&quot;</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">//SocketLayerOverride *SocketLayer::slo=0;</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;<a class="code" href="../../da/d66/string_8h.xhtml">string.h</a>&gt;</span> <span class="comment">// memcpy</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#include &lt;arpa/inet.h&gt;</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span> <span class="comment">// error numbers</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span> <span class="comment">// RAKNET_DEBUG_PRINTF</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#if !defined(ANDROID)</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;ifaddrs.h&gt;</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;netinet/in.h&gt;</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#include &lt;net/if.h&gt;</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor">#include &lt;sys/ioctl.h&gt;</span></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="preprocessor">#endif</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</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;</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;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor">#if defined(_WIN32)</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="../../da/d7e/_w_s_a_startup_singleton_8h.xhtml">slikenet/WSAStartupSingleton.h</a>&quot;</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/d43/_windows_includes_8h.xhtml">slikenet/WindowsIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;unistd.h&gt;</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d81/sleep_8h.xhtml">slikenet/sleep.h</a>&quot;</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/d3e/_itoa_8h.xhtml">slikenet/Itoa.h</a>&quot;</span></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="keyword">namespace </span>SLNet</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; <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a82c565d09a5f2e3e376029cffc434bf4">ProcessNetworkPacket</a>( <span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> systemAddress, <span class="keyword">const</span> <span class="keywordtype">char</span> *data, <span class="keyword">const</span> <span class="keywordtype">int</span> length, <a class="code" href="../../d5/dbf/class_s_l_net_1_1_rak_peer.xhtml" title="Main interface for network communications.">RakPeer</a> *rakPeer, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a3d01a3c6dcc3c11f0cc5359fe290edc7">SLNet::TimeUS</a> timeRead );</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="comment">//extern void ProcessNetworkPacket( const SystemAddress systemAddress, const char *data, const int length, RakPeer *rakPeer, RakNetSocket* rakNetSocket, SLNet::TimeUS timeRead );</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;}</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;<span class="preprocessor">#ifdef _DEBUG</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">// http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#ip4to6</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">// http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#getaddrinfo</span></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;<span class="preprocessor">#if RAKNET_SUPPORT_IPV6==1</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor"></span><span class="keywordtype">void</span> PrepareAddrInfoHints(addrinfo *hints)</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; memset(hints, 0, <span class="keyword">sizeof</span> (addrinfo)); <span class="comment">// make sure the struct is empty</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; hints-&gt;ai_socktype = SOCK_DGRAM; <span class="comment">// UDP sockets</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; hints-&gt;ai_flags = AI_PASSIVE; <span class="comment">// fill in my IP for me</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;}</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor"></span> </div>
<div class="line"><a name="l00125"></a><span class="lineno"><a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#a6af295a207f6712386df2413eff054d0"> 125</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#a6af295a207f6712386df2413eff054d0">SocketLayer::SetSocketOptions</a>( <a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#ad31a77c59d4b8ba8cbd1eac64fbf89e8" title="Unix/Linux uses ints for sockets.">__UDPSOCKET__</a> listenSocket, <span class="keywordtype">bool</span> blockingSocket, <span class="keywordtype">bool</span> setBroadcast)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor">#ifdef __native_client__</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor"></span> (void) listenSocket;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor"></span> <span class="keywordtype">int</span> sock_opt = 1;</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; <span class="comment">// This doubles the max throughput rate</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; sock_opt=1024*256;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="../../df/ded/_socket_defines_8h.xhtml#ab59c1f320f096fe127d1180efa7e2b73">setsockopt__</a>(listenSocket, SOL_SOCKET, SO_RCVBUF, ( <span class="keywordtype">char</span> * ) &amp; sock_opt, <span class="keyword">sizeof</span> ( sock_opt ) );</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// Immediate hard close. Don&#39;t linger the socket, or recreating the socket quickly on Vista fails.</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// Fail with voice and xbox</span></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; sock_opt=0;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="../../df/ded/_socket_defines_8h.xhtml#ab59c1f320f096fe127d1180efa7e2b73">setsockopt__</a>(listenSocket, SOL_SOCKET, SO_LINGER, ( <span class="keywordtype">char</span> * ) &amp; sock_opt, <span class="keyword">sizeof</span> ( sock_opt ) );</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;</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; <span class="comment">// This doesn&#39;t make much difference: 10% maybe</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// Not supported on console 2</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; sock_opt=1024*16;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="../../df/ded/_socket_defines_8h.xhtml#ab59c1f320f096fe127d1180efa7e2b73">setsockopt__</a>(listenSocket, SOL_SOCKET, SO_SNDBUF, ( <span class="keywordtype">char</span> * ) &amp; sock_opt, <span class="keyword">sizeof</span> ( sock_opt ) );</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;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (blockingSocket==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nonblocking = 1;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="../../df/ded/_socket_defines_8h.xhtml#a661fb7d6cebc99640c451d25894e57b3">ioctlsocket__</a>(listenSocket, FIONBIO, &amp;nonblocking );</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;</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;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor"></span> fcntl( listenSocket, F_SETFL, O_NONBLOCK );</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span> (setBroadcast)</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">// Note: Fails with VDP but not xbox</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// Set broadcast capable</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; sock_opt=1;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="../../df/ded/_socket_defines_8h.xhtml#ab59c1f320f096fe127d1180efa7e2b73">setsockopt__</a>(listenSocket, SOL_SOCKET, SO_BROADCAST, ( <span class="keywordtype">char</span> * ) &amp; sock_opt, <span class="keyword">sizeof</span>( sock_opt ) ) == -1 )</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor">#if defined(_WIN32) &amp;&amp; defined(_DEBUG)</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#if !defined(WINDOWS_PHONE_8)</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor"></span> DWORD dwIOError = GetLastError();</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">// On Vista, can get WSAEACCESS (10013)</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="comment">// See http://support.microsoft.com/kb/819124</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// http://blogs.msdn.com/wndp/archive/2007/03/19/winsock-so-exclusiveaddruse-on-vista.aspx</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">// http://msdn.microsoft.com/en-us/library/ms740621(VS.85).aspx</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; LPTSTR messageBuffer;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; NULL, dwIOError, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), <span class="comment">// Default language</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; ( LPTSTR ) &amp; messageBuffer, 0, NULL );</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// something has gone wrong here...</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#a29cf458f7287265fc1b414c3f72fa9ad">RAKNET_DEBUG_TPRINTF</a>( <a class="code" href="../../d8/d4f/_socket_layer_8cpp.xhtml#ae936e4c15227768f7da4e0951def89c8">_T</a>(<span class="stringliteral">&quot;setsockopt__(SO_BROADCAST) failed:Error code - %lu\n%s&quot;</span>), dwIOError, messageBuffer );</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">//Free the buffer.</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; LocalFree( messageBuffer );</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div>
<div class="line"><a name="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="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; </div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#ac30ac77e20e935d094823fa6650cbd3c"> 195</a></span>&#160;<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#ac30ac77e20e935d094823fa6650cbd3c">SocketLayer::GetSubNetForSocketAndIp</a>(<a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#ad31a77c59d4b8ba8cbd1eac64fbf89e8" title="Unix/Linux uses ints for sockets.">__UDPSOCKET__</a> inSock, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> inIpString)</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;{</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> netMaskString;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> ipString;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor">#if defined(WINDOWS_STORE_RT)</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(<span class="stringliteral">&quot;Not yet supported&quot;</span> &amp;&amp; 0);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor">#elif defined(_WIN32)</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor"></span> INTERFACE_INFO InterfaceList[20];</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nBytesReturned;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (WSAIoctl(inSock, SIO_GET_INTERFACE_LIST, 0, 0, &amp;InterfaceList,</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">sizeof</span>(InterfaceList), &amp;nBytesReturned, 0, 0) == SOCKET_ERROR) {</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordtype">int</span> nNumInterfaces = nBytesReturned / <span class="keyword">sizeof</span>(INTERFACE_INFO);</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="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; nNumInterfaces; ++i)</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; sockaddr_in *pAddress;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; pAddress = (sockaddr_in *) &amp; (InterfaceList[i].iiAddress);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordtype">char</span> ip[65];</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; inet_ntop(pAddress-&gt;sin_family, &amp;pAddress-&gt;sin_addr, ip, 65);</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; ipString = ip;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span> (inIpString==ipString)</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; pAddress = (sockaddr_in *) &amp; (InterfaceList[i].iiNetmask);</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordtype">char</span> netmaskIP[65];</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; inet_ntop(pAddress-&gt;sin_family, &amp;pAddress-&gt;sin_addr, netmaskIP, 65);</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; netMaskString=netmaskIP;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> netMaskString;</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="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">int</span> fd,fd2;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; fd2 = <a class="code" href="../../df/ded/_socket_defines_8h.xhtml#af9f142186ba41aca27cf6bdd4d118121">socket__</a>(AF_INET, SOCK_DGRAM, 0);</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span>(fd2 &lt; 0)</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">struct </span>ifconf ifc;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordtype">char</span> buf[1999];</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; ifc.ifc_len = <span class="keyword">sizeof</span>(buf);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; ifc.ifc_buf = buf;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span>(ioctl(fd2, SIOCGIFCONF, &amp;ifc) &lt; 0)</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; close(fd2);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">struct </span>ifreq *ifr;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; ifr = ifc.ifc_req;</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordtype">int</span> intNum = ifc.ifc_len / <span class="keyword">sizeof</span>(<span class="keyword">struct </span>ifreq);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; intNum; i++)</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordtype">char</span> ip[65];</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; inet_ntop(AF_INET, &amp;((<span class="keyword">struct</span> sockaddr_in *)&amp;ifr[i].ifr_addr)-&gt;sin_addr, ip, 65);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; ipString = ip;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (inIpString==ipString)</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">struct </span>ifreq ifr2;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; fd = <a class="code" href="../../df/ded/_socket_defines_8h.xhtml#af9f142186ba41aca27cf6bdd4d118121">socket__</a>(AF_INET, SOCK_DGRAM, 0);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span>(fd &lt; 0)</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; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</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; ifr2.ifr_addr.sa_family = AF_INET;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; strncpy_s(ifr2.ifr_name, IFNAMSIZ, ifr[i].ifr_name, IFNAMSIZ-1);</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; ioctl(fd, SIOCGIFNETMASK, &amp;ifr2);</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; close(fd);</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; close(fd2);</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; inet_ntop(AF_INET, &amp;((<span class="keyword">struct</span> sockaddr_in *)&amp;ifr2.ifr_addr)-&gt;sin_addr, ip, 65);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; netMaskString=ip;</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; <span class="keywordflow">return</span> netMaskString;</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;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; close(fd2);</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;}</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;</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;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</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;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</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;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</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;</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;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</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;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</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;</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</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;</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</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;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="preprocessor">#if defined(WINDOWS_STORE_RT)</span></div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="preprocessor"></span><span class="keywordtype">void</span> GetMyIP_WinRT( <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> addresses[<a class="code" href="../../d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80">MAXIMUM_NUMBER_OF_INTERNAL_IDS</a>] )</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;{</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="comment">// Perhaps DatagramSocket.BindEndpointAsynch, use localHostName as an empty string, then query what it bound to?</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(<span class="stringliteral">&quot;Not yet supported&quot;</span> &amp;&amp; 0);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;}</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"><a class="code" href="../../d8/d4f/_socket_layer_8cpp.xhtml#a706584940b36e1d392ff2c32764d56da"> 376</a></span>&#160;<span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="../../d8/d4f/_socket_layer_8cpp.xhtml#a706584940b36e1d392ff2c32764d56da">GetMyIP_Win32</a>( <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> addresses[<a class="code" href="../../d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80">MAXIMUM_NUMBER_OF_INTERNAL_IDS</a>] )</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;{</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordtype">int</span> idx=0;</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; idx=0;</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordtype">char</span> ac[ 80 ];</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span> ( gethostname( ac, <span class="keyword">sizeof</span>( ac ) ) == -1 )</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="preprocessor"> #if defined(_WIN32) &amp;&amp; !defined(WINDOWS_PHONE_8)</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor"></span> DWORD dwIOError = GetLastError();</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; LPTSTR messageBuffer;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; NULL, dwIOError, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), <span class="comment">// Default language</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; ( LPTSTR ) &amp; messageBuffer, 0, NULL );</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// something has gone wrong here...</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#a29cf458f7287265fc1b414c3f72fa9ad">RAKNET_DEBUG_TPRINTF</a>( <a class="code" href="../../d8/d4f/_socket_layer_8cpp.xhtml#ae936e4c15227768f7da4e0951def89c8">_T</a>(<span class="stringliteral">&quot;gethostname failed:Error code - %lu\n%s&quot;</span>), dwIOError, messageBuffer );</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">//Free the buffer.</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; LocalFree( messageBuffer );</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../dc/d0b/_thread_pool_8h.xhtml#a9717e7bbecb906637e86cef6da3d83c2">return</a> ;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="preprocessor">#if RAKNET_SUPPORT_IPV6==1</span></div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="preprocessor"></span> <span class="keyword">struct </span>addrinfo hints;</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keyword">struct </span>addrinfo *servinfo=0, *aip; <span class="comment">// will point to the results</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; PrepareAddrInfoHints(&amp;hints);</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; getaddrinfo(ac, <span class="stringliteral">&quot;&quot;</span>, &amp;hints, &amp;servinfo);</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">for</span> (idx=0, aip = servinfo; aip != NULL &amp;&amp; idx &lt; <a class="code" href="../../d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80">MAXIMUM_NUMBER_OF_INTERNAL_IDS</a>; aip = aip-&gt;ai_next, idx++)</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">if</span> (aip-&gt;ai_family == AF_INET)</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="keyword">struct </span>sockaddr_in *ipv4 = (<span class="keyword">struct </span>sockaddr_in *)aip-&gt;ai_addr;</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; memcpy(&amp;addresses[idx].address.addr4,ipv4,<span class="keyword">sizeof</span>(sockaddr_in));</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">else</span></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; <span class="keyword">struct </span>sockaddr_in6 *ipv6 = (<span class="keyword">struct </span>sockaddr_in6 *)aip-&gt;ai_addr;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; memcpy(&amp;addresses[idx].address.addr4,ipv6,<span class="keyword">sizeof</span>(sockaddr_in6));</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;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; freeaddrinfo(servinfo); <span class="comment">// free the linked-list</span></div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="preprocessor"></span> <span class="keyword">struct </span>addrinfo *curAddress = NULL;</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordtype">int</span> err = getaddrinfo(ac, NULL, NULL, &amp;curAddress);</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span> ( err != 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;<span class="preprocessor"> #if defined(_WIN32) &amp;&amp; !defined(WINDOWS_PHONE_8)</span></div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="preprocessor"></span> <span class="keywordtype">int</span> wsaError = WSAGetLastError();</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; LPTSTR messageBuffer;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; NULL, wsaError, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), <span class="comment">// Default language</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; ( LPTSTR ) &amp; messageBuffer, 0, NULL );</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="comment">// something has gone wrong here...</span></div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#a29cf458f7287265fc1b414c3f72fa9ad">RAKNET_DEBUG_TPRINTF</a>( <a class="code" href="../../d8/d4f/_socket_layer_8cpp.xhtml#ae936e4c15227768f7da4e0951def89c8">_T</a>(<span class="stringliteral">&quot;getaddrinfo failed:Error code - %d\n%s&quot;</span>), wsaError, messageBuffer );</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="comment">//Free the buffer.</span></div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; LocalFree( messageBuffer );</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../dc/d0b/_thread_pool_8h.xhtml#a9717e7bbecb906637e86cef6da3d83c2">return</a> ;</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">while</span> (curAddress != NULL &amp;&amp; idx &lt; MAXIMUM_NUMBER_OF_INTERNAL_IDS)</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (curAddress-&gt;ai_family == AF_INET) {</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; addresses[idx].address.addr4 = *((<span class="keyword">struct </span>sockaddr_in *)curAddress-&gt;ai_addr);</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; ++idx;</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; curAddress = curAddress-&gt;ai_next;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="preprocessor">#endif // else RAKNET_SUPPORT_IPV6==1</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">while</span> (idx &lt; MAXIMUM_NUMBER_OF_INTERNAL_IDS)</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; {</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; addresses[idx]=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>;</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; idx++;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div>
<div class="line"><a name="l00460"></a><span class="lineno"><a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#a0773c1a3f0d3305ab0fbeb459636a3cd"> 460</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#a0773c1a3f0d3305ab0fbeb459636a3cd">SocketLayer::GetMyIP</a>( <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> addresses[<a class="code" href="../../d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80">MAXIMUM_NUMBER_OF_INTERNAL_IDS</a>] )</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;{</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="preprocessor">#if defined(WINDOWS_STORE_RT)</span></div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor"></span> GetMyIP_WinRT(addresses);</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor">#elif defined(_WIN32)</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d8/d4f/_socket_layer_8cpp.xhtml#a706584940b36e1d392ff2c32764d56da">GetMyIP_Win32</a>(addresses);</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor"></span><span class="comment">// GetMyIP_Linux(addresses);</span></div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="../../d8/d4f/_socket_layer_8cpp.xhtml#a706584940b36e1d392ff2c32764d56da">GetMyIP_Win32</a>(addresses);</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="comment">unsigned short SocketLayer::GetLocalPort(RakNetSocket *s)</span></div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="comment"> SystemAddress sa;</span></div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="comment"> GetSystemAddress(s,&amp;sa);</span></div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="comment"> return sa.GetPort();</span></div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="comment">}</span></div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00487"></a><span class="lineno"><a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#a56392265b1a3df68615810b50f03081f"> 487</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#a56392265b1a3df68615810b50f03081f">SocketLayer::GetLocalPort</a>(<a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#ad31a77c59d4b8ba8cbd1eac64fbf89e8" title="Unix/Linux uses ints for sockets.">__UDPSOCKET__</a> s)</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;{</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> sa;</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#a8109590555d9879eaa42b684ed34151a">GetSystemAddress</a>(s,&amp;sa);</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span> sa.<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#afdd4a14b98b7e7b9f69afc30e8fe0d47" title="Returns the port in host order (this is what you normally use)">GetPort</a>();</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;}</div>
<div class="line"><a name="l00493"></a><span class="lineno"><a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#acf523cb179e4474df714a858f4c655de"> 493</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#acf523cb179e4474df714a858f4c655de">SocketLayer::GetSystemAddress_Old</a> ( <a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#ad31a77c59d4b8ba8cbd1eac64fbf89e8" title="Unix/Linux uses ints for sockets.">__UDPSOCKET__</a> s, <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> *systemAddressOut )</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;{</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor">#if defined(__native_client__)</span></div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="preprocessor"></span> *systemAddressOut = <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>;</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="preprocessor"></span> sockaddr_in sa;</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; memset(&amp;sa,0,<span class="keyword">sizeof</span>(sockaddr_in));</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; socklen_t len = <span class="keyword">sizeof</span>(sa);</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/ded/_socket_defines_8h.xhtml#a99f94f1d975115e4840b488b3af9998f">getsockname__</a>(s, (sockaddr*)&amp;sa, &amp;len)!=0)</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; {</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor">#if defined(_WIN32) &amp;&amp; defined(_DEBUG) &amp;&amp; !defined(WINDOWS_PHONE_8)</span></div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="preprocessor"></span> DWORD dwIOError = GetLastError();</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; LPTSTR messageBuffer;</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; NULL, dwIOError, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), <span class="comment">// Default language</span></div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; ( LPTSTR ) &amp; messageBuffer, 0, NULL );</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="comment">// something has gone wrong here...</span></div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#a29cf458f7287265fc1b414c3f72fa9ad">RAKNET_DEBUG_TPRINTF</a>( <a class="code" href="../../d8/d4f/_socket_layer_8cpp.xhtml#ae936e4c15227768f7da4e0951def89c8">_T</a>(<span class="stringliteral">&quot;getsockname failed:Error code - %lu\n%s&quot;</span>), dwIOError, messageBuffer );</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="comment">//Free the buffer.</span></div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; LocalFree( messageBuffer );</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="preprocessor"></span> *systemAddressOut = <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>;</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#aabe9a3741607e1e6772cae6ed1443ef1">SetPortNetworkOrder</a>(sa.sin_port);</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ab9652ec65cfbbf702d84ff340b12da47">address</a>.addr4.sin_addr.s_addr=sa.sin_addr.s_addr;</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment">void SocketLayer::GetSystemAddress_Old ( RakNetSocket *s, SystemAddress *systemAddressOut )</span></div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="comment"> return GetSystemAddress_Old(s-&gt;s, systemAddressOut);</span></div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="comment">}</span></div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00529"></a><span class="lineno"><a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#a8109590555d9879eaa42b684ed34151a"> 529</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#a8109590555d9879eaa42b684ed34151a">SocketLayer::GetSystemAddress</a> ( <a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#ad31a77c59d4b8ba8cbd1eac64fbf89e8" title="Unix/Linux uses ints for sockets.">__UDPSOCKET__</a> s, <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> *systemAddressOut )</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;{</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="preprocessor">#if RAKNET_SUPPORT_IPV6!=1</span></div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#acf523cb179e4474df714a858f4c655de">GetSystemAddress_Old</a>(s, systemAddressOut);</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="preprocessor"></span> socklen_t slen;</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; sockaddr_storage ss;</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; slen = <span class="keyword">sizeof</span>(ss);</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/ded/_socket_defines_8h.xhtml#a99f94f1d975115e4840b488b3af9998f">getsockname__</a>(s, (<span class="keyword">struct</span> sockaddr *)&amp;ss, &amp;slen)!=0)</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="preprocessor">#if defined(_WIN32) &amp;&amp; defined(_DEBUG)</span></div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="preprocessor"></span> DWORD dwIOError = GetLastError();</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; LPVOID messageBuffer;</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; NULL, dwIOError, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), <span class="comment">// Default language</span></div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; ( LPTSTR ) &amp; messageBuffer, 0, NULL );</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="comment">// something has gone wrong here...</span></div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#a29cf458f7287265fc1b414c3f72fa9ad">RAKNET_DEBUG_TPRINTF</a>( <a class="code" href="../../d8/d4f/_socket_layer_8cpp.xhtml#ae936e4c15227768f7da4e0951def89c8">_T</a>(<span class="stringliteral">&quot;getsockname failed:Error code - %d\n%s&quot;</span>), dwIOError, static_cast&lt;LPTSTR&gt;(messageBuffer));</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">//Free the buffer.</span></div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; LocalFree( messageBuffer );</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="preprocessor"></span> systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#acdd52cd5981fd1b58ff68ba52a98a13e">FromString</a>(0);</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (ss.ss_family==AF_INET)</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; memcpy(&amp;systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ab9652ec65cfbbf702d84ff340b12da47">address</a>.addr4,(sockaddr_in *)&amp;ss,<span class="keyword">sizeof</span>(sockaddr_in));</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a2707e26293ed8eabfb8a699ac24ce14e" title="This is not used internally, but holds a copy of the port held in the address union, so for debugging it&#39;s easier to check what port is being held.">debugPort</a>=ntohs(systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ab9652ec65cfbbf702d84ff340b12da47">address</a>.addr4.sin_port);</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> zero = 0; </div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span> (memcmp(&amp;systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ab9652ec65cfbbf702d84ff340b12da47">address</a>.addr4.sin_addr.s_addr, &amp;zero, <span class="keyword">sizeof</span>(zero))==0)</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#aca7760ea7186a59a70697634d9d585d7" title="Call SetToLoopback(), with whatever IP version is currently held. Defaults to IPV4.">SetToLoopback</a>(4);</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">// systemAddressOut-&gt;address.addr4.sin_port=ntohs(systemAddressOut-&gt;address.addr4.sin_port);</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; memcpy(&amp;systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ab9652ec65cfbbf702d84ff340b12da47">address</a>.addr6,(sockaddr_in6 *)&amp;ss,<span class="keyword">sizeof</span>(sockaddr_in6));</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a2707e26293ed8eabfb8a699ac24ce14e" title="This is not used internally, but holds a copy of the port held in the address union, so for debugging it&#39;s easier to check what port is being held.">debugPort</a>=ntohs(systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ab9652ec65cfbbf702d84ff340b12da47">address</a>.addr6.sin6_port);</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordtype">char</span> zero[16];</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; memset(zero,0,<span class="keyword">sizeof</span>(zero));</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (memcmp(&amp;systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ab9652ec65cfbbf702d84ff340b12da47">address</a>.addr4.sin_addr.s_addr, &amp;zero, <span class="keyword">sizeof</span>(zero))==0)</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; systemAddressOut-&gt;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#aca7760ea7186a59a70697634d9d585d7" title="Call SetToLoopback(), with whatever IP version is currently held. Defaults to IPV4.">SetToLoopback</a>(6);</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="comment">// systemAddressOut-&gt;address.addr6.sin6_port=ntohs(systemAddressOut-&gt;address.addr6.sin6_port);</span></div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="preprocessor">#endif // #if RAKNET_SUPPORT_IPV6!=1</span></div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="comment">void SocketLayer::GetSystemAddress ( RakNetSocket *s, SystemAddress *systemAddressOut )</span></div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="comment"> return GetSystemAddress(s-&gt;s, systemAddressOut);</span></div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="comment">}</span></div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="comment">// void SocketLayer::SetSocketLayerOverride(SocketLayerOverride *_slo)</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="comment">// {</span></div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="comment">// slo=_slo;</span></div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment">// }</span></div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div>
<div class="line"><a name="l00592"></a><span class="lineno"><a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#aa80daf48a0712cfabdcac966a7a60b85"> 592</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#aa80daf48a0712cfabdcac966a7a60b85">SocketLayer::GetFirstBindableIP</a>(<span class="keywordtype">char</span> firstBindable[128], <span class="keywordtype">int</span> ipProto)</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;{</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> ipList[ <a class="code" href="../../d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80">MAXIMUM_NUMBER_OF_INTERNAL_IDS</a> ];</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml#a0773c1a3f0d3305ab0fbeb459636a3cd">SocketLayer::GetMyIP</a>( ipList );</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (ipProto==AF_UNSPEC)</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; {</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; ipList[0].<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a7a994f9c414b5fd7094017b43e7c102b">ToString</a>(<span class="keyword">false</span>,firstBindable,static_cast&lt;size_t&gt;(128));</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; } </div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// Find the first valid host address</span></div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> l;</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">for</span> (l=0; l &lt; <a class="code" href="../../d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80">MAXIMUM_NUMBER_OF_INTERNAL_IDS</a>; l++)</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; {</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">if</span> (ipList[l]==<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>)</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span> (ipList[l].GetIPVersion()==4 &amp;&amp; ipProto==AF_INET)</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span> (ipList[l].GetIPVersion()==6 &amp;&amp; ipProto==AF_INET6)</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">if</span> (l==MAXIMUM_NUMBER_OF_INTERNAL_IDS || ipList[l]==<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>)</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="comment">// RAKNET_DEBUG_PRINTF(&quot;%i %i %i %i\n&quot;,</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="comment">// ((char*)(&amp;ipList[l].address.addr4.sin_addr.s_addr))[0],</span></div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="comment">// ((char*)(&amp;ipList[l].address.addr4.sin_addr.s_addr))[1],</span></div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="comment">// ((char*)(&amp;ipList[l].address.addr4.sin_addr.s_addr))[2],</span></div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="comment">// ((char*)(&amp;ipList[l].address.addr4.sin_addr.s_addr))[3]</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="comment">// );</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; ipList[l].<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a7a994f9c414b5fd7094017b43e7c102b">ToString</a>(<span class="keyword">false</span>,firstBindable,static_cast&lt;size_t&gt;(128));</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;}</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/d4f/_socket_layer_8cpp.xhtml">SocketLayer.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:47 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,10 @@
var _c_c_rak_net_u_d_t_8cpp =
[
[ "MAX_RTT", "d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#aeeeedf42f2e7606daa712c25b228ec03", null ],
[ "RTT_TOLERANCE", "d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a75d22867ebb0f637a80c4d824e017732", null ],
[ "CWND_MIN_THRESHOLD", "d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#ab6119d92e7b521425b8cdf2210c93c97", null ],
[ "RTTVarMultiple", "d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a64b731fbfb5a881957d234fdaeb75fea", null ],
[ "SYN", "d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a55937587b422b0e8c051011deb28c4a4", null ],
[ "UNDEFINED_TRANSFER_RATE", "d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0", null ],
[ "UNSET_TIME_US", "d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a8091bcafbec27f4e2118c1edc9c7038f", null ]
];

View File

@ -0,0 +1,292 @@
<!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"/>
<title>SLikeNet: Source/src/CCRakNetUDT.cpp File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d52/_c_c_rak_net_u_d_t_8cpp.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">CCRakNetUDT.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../db/d0d/_c_c_rak_net_u_d_t_8h_source.xhtml">slikenet/CCRakNetUDT.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/d10/_rand_8h_source.xhtml">slikenet/Rand.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d2/d24/_m_t_u_size_8h_source.xhtml">slikenet/MTUSize.h</a>&quot;</code><br/>
<code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &lt;math.h&gt;</code><br/>
<code>#include &lt;stdlib.h&gt;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/da7/assert_8h_source.xhtml">slikenet/assert.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d1/d42/alloca_8h_source.xhtml">slikenet/alloca.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:aeeeedf42f2e7606daa712c25b228ec03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#aeeeedf42f2e7606daa712c25b228ec03">MAX_RTT</a>&#160;&#160;&#160;1000000</td></tr>
<tr class="separator:aeeeedf42f2e7606daa712c25b228ec03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75d22867ebb0f637a80c4d824e017732"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a75d22867ebb0f637a80c4d824e017732">RTT_TOLERANCE</a>&#160;&#160;&#160;30000</td></tr>
<tr class="separator:a75d22867ebb0f637a80c4d824e017732"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a8091bcafbec27f4e2118c1edc9c7038f"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a8091bcafbec27f4e2118c1edc9c7038f">UNSET_TIME_US</a> =-1</td></tr>
<tr class="separator:a8091bcafbec27f4e2118c1edc9c7038f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6119d92e7b521425b8cdf2210c93c97"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#ab6119d92e7b521425b8cdf2210c93c97">CWND_MIN_THRESHOLD</a> =2.0</td></tr>
<tr class="separator:ab6119d92e7b521425b8cdf2210c93c97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03c3d79fb8baba8a851cc65969251ef0"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a> =0.0</td></tr>
<tr class="separator:a03c3d79fb8baba8a851cc65969251ef0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55937587b422b0e8c051011deb28c4a4"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a55937587b422b0e8c051011deb28c4a4">SYN</a> =10000</td></tr>
<tr class="separator:a55937587b422b0e8c051011deb28c4a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64b731fbfb5a881957d234fdaeb75fea"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a64b731fbfb5a881957d234fdaeb75fea">RTTVarMultiple</a> =4.0</td></tr>
<tr class="separator:a64b731fbfb5a881957d234fdaeb75fea"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="aeeeedf42f2e7606daa712c25b228ec03"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MAX_RTT&#160;&#160;&#160;1000000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml#l00048">48</a> of file <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml">CCRakNetUDT.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a75d22867ebb0f637a80c4d824e017732"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define RTT_TOLERANCE&#160;&#160;&#160;30000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml#l00049">49</a> of file <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml">CCRakNetUDT.cpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="ab6119d92e7b521425b8cdf2210c93c97"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double CWND_MIN_THRESHOLD =2.0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml#l00032">32</a> of file <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml">CCRakNetUDT.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a64b731fbfb5a881957d234fdaeb75fea"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double RTTVarMultiple =4.0</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml#l00053">53</a> of file <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml">CCRakNetUDT.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a55937587b422b0e8c051011deb28c4a4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> SYN =10000</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Interval at which to update aspects of the system</p>
<ol type="1">
<li>send acks</li>
<li>update time interval between outgoing packets 3, Yodate retransmit timeout </li>
</ol>
<p>Definition at line <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml#l00041">41</a> of file <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml">CCRakNetUDT.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a03c3d79fb8baba8a851cc65969251ef0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double UNDEFINED_TRANSFER_RATE =0.0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml#l00033">33</a> of file <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml">CCRakNetUDT.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a8091bcafbec27f4e2118c1edc9c7038f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double UNSET_TIME_US =-1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml#l00031">31</a> of file <a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp_source.xhtml">CCRakNetUDT.cpp</a>.</p>
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml">CCRakNetUDT.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,925 @@
<!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"/>
<title>SLikeNet: Source/src/CCRakNetUDT.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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d52/_c_c_rak_net_u_d_t_8cpp_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">CCRakNetUDT.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/d0d/_c_c_rak_net_u_d_t_8h.xhtml">slikenet/CCRakNetUDT.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#if USE_SLIDING_WINDOW_CONGESTION_CONTROL!=1</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/d10/_rand_8h.xhtml" title="[Internal] Random number generator">slikenet/Rand.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d2/d24/_m_t_u_size_8h.xhtml" title="[Internal] Defines the default maximum transfer unit.">slikenet/MTUSize.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;math.h&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">//#include &lt;memory.h&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/da7/assert_8h.xhtml">slikenet/assert.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d1/d42/alloca_8h.xhtml">slikenet/alloca.h</a>&quot;</span></div>
<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;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a8091bcafbec27f4e2118c1edc9c7038f"> 31</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a8091bcafbec27f4e2118c1edc9c7038f">UNSET_TIME_US</a>=-1;</div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#ab6119d92e7b521425b8cdf2210c93c97"> 32</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#ab6119d92e7b521425b8cdf2210c93c97">CWND_MIN_THRESHOLD</a>=2.0;</div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0"> 33</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>=0.0;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a55937587b422b0e8c051011deb28c4a4">SYN</a>=10;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a55937587b422b0e8c051011deb28c4a4"> 41</a></span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a55937587b422b0e8c051011deb28c4a4">SYN</a>=10000;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MAX_RTT 1000</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RTT_TOLERANCE 30</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#aeeeedf42f2e7606daa712c25b228ec03"> 48</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MAX_RTT 1000000</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a75d22867ebb0f637a80c4d824e017732"> 49</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RTT_TOLERANCE 30000</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a64b731fbfb5a881957d234fdaeb75fea"> 53</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a64b731fbfb5a881957d234fdaeb75fea">RTTVarMultiple</a>=4.0;</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;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// ****************************************************** PUBLIC METHODS ******************************************************</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;CCRakNetUDT::CCRakNetUDT()</div>
<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;}</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="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;CCRakNetUDT::~CCRakNetUDT()</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;}</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::Init(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> maxDatagramPayload)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; (void) curTime;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; nextSYNUpdate=0;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; packetPairRecieptHistoryWriteIndex=0;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; packetArrivalHistoryWriteIndex=0;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; packetArrivalHistoryWriteCount=0;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; RTT=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a8091bcafbec27f4e2118c1edc9c7038f">UNSET_TIME_US</a>;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// RTTVar=UNSET_TIME_US;</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; isInSlowStart=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; NAKCount=1000;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; AvgNAKNum=1;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; DecInterval=1;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; DecCount=0;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; nextDatagramSequenceNumber=0;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; lastPacketPairPacketArrivalTime=0;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; lastPacketPairSequenceNumber=(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#ae16c16e7f0604671c945b768e0532da7">DatagramSequenceNumberType</a>)(<span class="keyword">const</span> <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>)-1;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; lastPacketArrivalTime=0;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; CWND=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#ab6119d92e7b521425b8cdf2210c93c97">CWND_MIN_THRESHOLD</a>;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; lastUpdateWindowSizeAndAck=0;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; lastTransmitOfBAndAS=0;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; ExpCount=1.0;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; totalUserDataBytesSent=0;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; oldestUnsentAck=0;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; MAXIMUM_MTU_INCLUDING_UDP_HEADER=maxDatagramPayload;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; CWND_MAX_THRESHOLD=<a class="code" href="../../d8/db0/defines_8h.xhtml#af1cb26d5d5b8bbb60367a848ee905ade">RESEND_BUFFER_ARRAY_LENGTH</a>;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor"></span> <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> DEFAULT_TRANSFER_RATE=(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a>) 3.6;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor"></span> <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> DEFAULT_TRANSFER_RATE=(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a>) .0036;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"></span> lastRttOnIncreaseSendRate=1000;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"></span> lastRttOnIncreaseSendRate=1000000;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor"></span> nextCongestionControlBlock=0;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; lastRtt=0;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">// B=DEFAULT_TRANSFER_RATE;</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; AS=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a6d18b4d64da83b3c41feda046ca49da9">MicrosecondsPerByte</a> DEFAULT_BYTE_INTERVAL=(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a6d18b4d64da83b3c41feda046ca49da9">MicrosecondsPerByte</a>) (1.0/DEFAULT_TRANSFER_RATE);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; SND=DEFAULT_BYTE_INTERVAL;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; expectedNextSequenceNumber=0;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; sendBAndASCount=0;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; packetArrivalHistoryContinuousGapsIndex=0;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">//packetPairRecipetHistoryGapsIndex=0;</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; hasWrittenToPacketPairReceiptHistory=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; InitPacketArrivalHistory();</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; estimatedLinkCapacityBytesPerSecond=0;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; bytesCanSendThisTick=0;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; hadPacketlossThisBlock=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; pingsLastInterval.Clear(__FILE__,__LINE__);</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;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::SetMTU(<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> bytes)</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; MAXIMUM_MTU_INCLUDING_UDP_HEADER=bytes;</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="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> CCRakNetUDT::GetMTU(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> MAXIMUM_MTU_INCLUDING_UDP_HEADER;</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">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::Update(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <span class="keywordtype">bool</span> hasDataToSendOrResend)</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;{</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; (void) hasDataToSendOrResend;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; (void) curTime;</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; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// I suspect this is causing major lag</span></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">/*</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> if (hasDataToSendOrResend==false)</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> halveSNDOnNoDataTime=0;</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> else if (halveSNDOnNoDataTime==0)</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> UpdateHalveSNDOnNoDataTime(curTime);</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"> ExpCount=1.0;</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> // If you send, and get no data at all from that time to RTO, then halve send rate7</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> if (HasHalveSNDOnNoDataTimeElapsed(curTime))</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> // printf(&quot;No incoming data, halving send rate\n&quot;);</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> SND*=2.0;</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> CapMinSnd(_FILE_AND_LINE_);</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> ExpCount+=1.0;</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> if (ExpCount&gt;8.0)</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> ExpCount=8.0;</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"> UpdateHalveSNDOnNoDataTime(curTime);</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;}</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keywordtype">int</span> CCRakNetUDT::GetRetransmissionBandwidth(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> timeSinceLastTick, <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> unacknowledgedBytes, <span class="keywordtype">bool</span> isContinuousSend)</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; (void) curTime;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (isInSlowStart)</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; <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> CWNDLimit = (<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>) (CWND*MAXIMUM_MTU_INCLUDING_UDP_HEADER);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> CWNDLimit;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> GetTransmissionBandwidth(curTime,timeSinceLastTick,unacknowledgedBytes,isContinuousSend);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;}</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="keywordtype">int</span> CCRakNetUDT::GetTransmissionBandwidth(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> timeSinceLastTick, <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> unacknowledgedBytes, <span class="keywordtype">bool</span> isContinuousSend)</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; (void) curTime;</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; <span class="keywordflow">if</span> (isInSlowStart)</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> CWNDLimit = (<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>) (CWND*MAXIMUM_MTU_INCLUDING_UDP_HEADER-unacknowledgedBytes);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> CWNDLimit;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (bytesCanSendThisTick&gt;0)</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; bytesCanSendThisTick=0;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (isContinuousSend==<span class="keyword">false</span> &amp;&amp; timeSinceLastTick&gt;100)</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; timeSinceLastTick=100;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (isContinuousSend==<span class="keyword">false</span> &amp;&amp; timeSinceLastTick&gt;100000)</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; timeSinceLastTick=100000;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; bytesCanSendThisTick=(int)((<span class="keywordtype">double</span>)timeSinceLastTick*((double)1.0/SND)+(double)bytesCanSendThisTick);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (bytesCanSendThisTick&gt;0)</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> bytesCanSendThisTick;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;}</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a> CCRakNetUDT::GetBytesPerSecondLimitByCongestionControl(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (isInSlowStart)</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> (<a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a>) ((double)1.0/(SND*1000.0));</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> (<a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a>) ((double)1.0/(SND*1000000.0));</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="keywordtype">bool</span> CCRakNetUDT::ShouldSendACKs(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> estimatedTimeToNextTick)</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; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> rto = GetSenderRTOForACK();</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="comment">// iphone crashes on comparison between double and int64 http://www.jenkinssoftware.com/forum/index.php?topic=2717.0</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (rto==(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a>) <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a8091bcafbec27f4e2118c1edc9c7038f">UNSET_TIME_US</a>)</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; <span class="comment">// Unknown how long until the remote system will retransmit, so better send right away</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// CCTimeType remoteRetransmitTime=oldestUnsentAck+rto-RTT*.5;</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// CCTimeType ackArrivalTimeIfWeDelay=RTT*.5+estimatedTimeToNextTick+curTime;</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// return ackArrivalTimeIfWeDelay&lt;remoteRetransmitTime;</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; <span class="comment">// Simplified equation</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// GU: At least one ACK should be sent per SYN, otherwise your protocol will increase slower.</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> curTime &gt;= oldestUnsentAck + <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a55937587b422b0e8c051011deb28c4a4">SYN</a> ||</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; estimatedTimeToNextTick+curTime &lt; oldestUnsentAck+rto-RTT;</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;}</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> CCRakNetUDT::GetNextDatagramSequenceNumber(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;{</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">return</span> nextDatagramSequenceNumber;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;}</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> CCRakNetUDT::GetAndIncrementNextDatagramSequenceNumber(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;{</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> dsnt=nextDatagramSequenceNumber;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; nextDatagramSequenceNumber++;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> dsnt;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;}</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::OnSendBytes(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> numBytes)</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;{</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; (void) curTime;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; totalUserDataBytesSent+=numBytes;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> (isInSlowStart==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; bytesCanSendThisTick-=numBytes;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;}</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment">// ****************************************************** PROTECTED METHODS ******************************************************</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::SetNextSYNUpdate(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> currentTime)</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;{</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; nextSYNUpdate+=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a55937587b422b0e8c051011deb28c4a4">SYN</a>;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (nextSYNUpdate &lt; currentTime)</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; nextSYNUpdate=currentTime+<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a55937587b422b0e8c051011deb28c4a4">SYN</a>;</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">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> CCRakNetUDT::ReceiverCalculateDataArrivalRate(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime)<span class="keyword"> const</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; (void) curTime;</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">// Not an instantaneous measurement</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"> if (continuousBytesReceivedStartTime!=0 &amp;&amp; curTime&gt;continuousBytesReceivedStartTime)</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment"> #if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"> const CCTimeType threshold=100;</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"> #else</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"> const CCTimeType threshold=100000;</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment"> #endif</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"> if (curTime-continuousBytesReceivedStartTime&gt;threshold)</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"> return (BytesPerMicrosecond) continuousBytesReceived/(BytesPerMicrosecond) (curTime-continuousBytesReceivedStartTime);</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment"> return UNDEFINED_TRANSFER_RATE;</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment"> */</span></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;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (packetArrivalHistoryWriteCount&lt;CC_RAKNET_UDT_PACKET_HISTORY_LENGTH)</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>;</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; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> median = ReceiverCalculateDataArrivalRateMedian();</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> oneEighthMedian=median*(1.0/8.0);</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> eightTimesMedian=median*8.0f;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> medianListLength=0.0;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> sum=0.0;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="comment">// Find average of acceptedMedianValues</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; CC_RAKNET_UDT_PACKET_HISTORY_LENGTH; i++)</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (packetArrivalHistory[i]&gt;=oneEighthMedian &amp;&amp;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; packetArrivalHistory[i]&lt;eightTimesMedian)</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; medianListLength=medianListLength+1.0;</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; sum+=packetArrivalHistory[i];</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (medianListLength==0.0)</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> sum/medianListLength;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;}</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> CCRakNetUDT::ReceiverCalculateDataArrivalRateMedian(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> CalculateListMedianRecursive(packetArrivalHistory, CC_RAKNET_UDT_PACKET_HISTORY_LENGTH, 0, 0);</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;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> CCRakNetUDT::CalculateListMedianRecursive(<span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> inputList[CC_RAKNET_UDT_PACKET_HISTORY_LENGTH], <span class="keywordtype">int</span> inputListLength, <span class="keywordtype">int</span> lessThanSum, <span class="keywordtype">int</span> greaterThanSum)</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;{</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> lessThanMedian[CC_RAKNET_UDT_PACKET_HISTORY_LENGTH], greaterThanMedian[CC_RAKNET_UDT_PACKET_HISTORY_LENGTH];</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordtype">int</span> lessThanMedianListLength=0, greaterThanMedianListLength=0;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> median=inputList[0];</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">for</span> (i=1; i &lt; inputListLength; i++)</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="comment">// If same value, spread among lists evenly</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">if</span> (inputList[i]&lt;median || ((i&amp;1)==0 &amp;&amp; inputList[i]==median))</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; lessThanMedian[lessThanMedianListLength++]=inputList[i];</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; greaterThanMedian[greaterThanMedianListLength++]=inputList[i];</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(CC_RAKNET_UDT_PACKET_HISTORY_LENGTH%2==0);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span> (lessThanMedianListLength+lessThanSum==greaterThanMedianListLength+greaterThanSum+1 ||</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; lessThanMedianListLength+lessThanSum==greaterThanMedianListLength+greaterThanSum-1)</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">return</span> median;</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="keywordflow">if</span> (lessThanMedianListLength+lessThanSum &lt; greaterThanMedianListLength+greaterThanSum)</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; lessThanMedian[lessThanMedianListLength++]=median;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> CalculateListMedianRecursive(greaterThanMedian, greaterThanMedianListLength, lessThanMedianListLength+lessThanSum, greaterThanSum);</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; greaterThanMedian[greaterThanMedianListLength++]=median;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">return</span> CalculateListMedianRecursive(lessThanMedian, lessThanMedianListLength, lessThanSum, greaterThanMedianListLength+greaterThanSum); </div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;}</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae99a418b0377902ee85309774e03a7de" title="a &gt; b?">CCRakNetUDT::GreaterThan</a>(<a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> a, <a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> b)</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;{</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">// a &gt; b?</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> halfSpan =(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#ae16c16e7f0604671c945b768e0532da7">DatagramSequenceNumberType</a>) (((<a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a>)(<span class="keyword">const</span> <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>)-1)/(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#ae16c16e7f0604671c945b768e0532da7">DatagramSequenceNumberType</a>)2);</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> b!=a &amp;&amp; b-a&gt;halfSpan;</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">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a786a71fc658008f18555eac5cc3893ab" title="a &lt; b?">CCRakNetUDT::LessThan</a>(<a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> a, <a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> b)</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;{</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// a &lt; b?</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> halfSpan = ((<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#ae16c16e7f0604671c945b768e0532da7">DatagramSequenceNumberType</a>)(<span class="keyword">const</span> <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>)-1)/(<a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a>)2;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> b!=a &amp;&amp; b-a&lt;halfSpan;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;}</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> CCRakNetUDT::GetSenderRTOForACK(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">if</span> (RTT==<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a8091bcafbec27f4e2118c1edc9c7038f">UNSET_TIME_US</a>)</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a>) <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a8091bcafbec27f4e2118c1edc9c7038f">UNSET_TIME_US</a>;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordtype">double</span> RTTVar = maxRTT-minRTT;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a>)(RTT + <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a64b731fbfb5a881957d234fdaeb75fea">RTTVarMultiple</a> * RTTVar + <a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a55937587b422b0e8c051011deb28c4a4">SYN</a>);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;}</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> CCRakNetUDT::GetRTOForRetransmission(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> timesSent)<span class="keyword"> const</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="preprocessor">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="preprocessor"></span> <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> maxThreshold=10000;</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> minThreshold=100;</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="preprocessor"></span> <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> maxThreshold=1000000;</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> minThreshold=100000;</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (RTT==<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a8091bcafbec27f4e2118c1edc9c7038f">UNSET_TIME_US</a>)</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a>) maxThreshold;</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> ret = lastRttOnIncreaseSendRate*2;</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">if</span> (ret&lt;minThreshold)</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> minThreshold;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span> (ret&gt;maxThreshold)</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> maxThreshold;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">return</span> ret;</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="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::OnResend(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a3d01a3c6dcc3c11f0cc5359fe290edc7">SLNet::TimeUS</a> nextActionTime)</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;{</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; (void) curTime;</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="keywordflow">if</span> (isInSlowStart)</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">if</span> (AS!=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>)</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; EndSlowStart();</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span> (hadPacketlossThisBlock==<span class="keyword">false</span>)</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="comment">// Logging</span></div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="comment">// printf(&quot;Sending SLOWER due to Resend, Rate=%f MBPS. Rtt=%i\n&quot;, GetLocalSendRate(), lastRtt );</span></div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; IncreaseTimeBetweenSends();</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; hadPacketlossThisBlock=<span class="keyword">true</span>;</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;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::OnNAK(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> nakSequenceNumber)</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;{</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; (void) nakSequenceNumber;</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; (void) curTime;</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; <span class="keywordflow">if</span> (isInSlowStart)</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (AS!=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>)</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; EndSlowStart();</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">if</span> (hadPacketlossThisBlock==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; {</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="comment">// Logging</span></div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">//printf(&quot;Sending SLOWER due to NAK, Rate=%f MBPS. Rtt=%i\n&quot;, GetLocalSendRate(), lastRtt );</span></div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">if</span> (pingsLastInterval.Size()&gt;10)</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; 10; i++)</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; printf(<span class="stringliteral">&quot;%i, &quot;</span>, pingsLastInterval[pingsLastInterval.Size()-1-i]/1000);</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; printf(<span class="stringliteral">&quot;\n&quot;</span>);</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; IncreaseTimeBetweenSends();</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; hadPacketlossThisBlock=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;}</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::EndSlowStart(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;{</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(isInSlowStart==<span class="keyword">true</span>);</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(AS!=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>);</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="comment">// This overestimates</span></div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; estimatedLinkCapacityBytesPerSecond=AS * 1000000.0;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; isInSlowStart=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; SND=1.0/AS;</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; CapMinSnd(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">// printf(&quot;ENDING SLOW START\n&quot;);</span></div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="preprocessor">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="preprocessor"></span> <span class="comment">// printf(&quot;Initial SND=%f Kilobytes per second\n&quot;, 1.0/SND);</span></div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor"></span> <span class="comment">// printf(&quot;Initial SND=%f Megabytes per second\n&quot;, 1.0/SND);</span></div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (SND &gt; .1)</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; PrintLowBandwidthWarning();</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;}</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::OnGotPacketPair(<a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> datagramSequenceNumber, <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> sizeInBytes, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime)</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;{</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; (void) datagramSequenceNumber;</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; (void) sizeInBytes;</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; (void) curTime;</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;}</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="keywordtype">bool</span> CCRakNetUDT::OnGotPacket(<a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> datagramSequenceNumber, <span class="keywordtype">bool</span> isContinuousSend, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> sizeInBytes, <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> *skippedMessageCount)</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;{ </div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#ac50dfa4707ffeeaac6b5f0491fd5c407">CC_DEBUG_PRINTF_2</a>(<span class="stringliteral">&quot;R%i &quot;</span>,datagramSequenceNumber.<a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml#a2e06899a191560e2a2f45b1508f3f571">val</a>);</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span> (datagramSequenceNumber==expectedNextSequenceNumber)</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; *skippedMessageCount=0;</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; expectedNextSequenceNumber=datagramSequenceNumber+(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#ae16c16e7f0604671c945b768e0532da7">DatagramSequenceNumberType</a>)1;</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae99a418b0377902ee85309774e03a7de" title="a &gt; b?">GreaterThan</a>(datagramSequenceNumber, expectedNextSequenceNumber))</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; *skippedMessageCount=datagramSequenceNumber-expectedNextSequenceNumber;</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="comment">// Sanity check, just use timeout resend if this was really valid</span></div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span> (*skippedMessageCount&gt;1000)</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="comment">// During testing, the nat punchthrough server got 51200 on the first packet. I have no idea where this comes from, but has happened twice</span></div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span> (*skippedMessageCount&gt;(<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>)50000)</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; *skippedMessageCount=1000;</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; expectedNextSequenceNumber=datagramSequenceNumber+(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#ae16c16e7f0604671c945b768e0532da7">DatagramSequenceNumberType</a>)1;</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; {</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; *skippedMessageCount=0;</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> (curTime&gt;lastPacketArrivalTime)</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> interval = curTime-lastPacketArrivalTime;</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="comment">// printf(&quot;Packet arrival gap is %I64u\n&quot;, (interval));</span></div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span> (isContinuousSend)</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; continuousBytesReceived+=sizeInBytes;</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span> (continuousBytesReceivedStartTime==0)</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; continuousBytesReceivedStartTime=lastPacketArrivalTime;</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; mostRecentPacketArrivalHistory=(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a>)sizeInBytes/(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a>)interval;</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="comment">// if (mostRecentPacketArrivalHistory &lt; (BytesPerMicrosecond)0.0035)</span></div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="comment">// {</span></div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">// printf(&quot;%s:%i LIKELY BUG: Calculated packetArrivalHistory is below 28.8 Kbps modem\nReport to rakkar@jenkinssoftware.com with file and line number\n&quot;, _FILE_AND_LINE_);</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">// }</span></div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; packetArrivalHistoryContinuousGaps[packetArrivalHistoryContinuousGapsIndex++]=(int) interval;</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; packetArrivalHistoryContinuousGapsIndex&amp;=(CC_RAKNET_UDT_PACKET_HISTORY_LENGTH-1);</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; packetArrivalHistoryWriteCount++;</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; packetArrivalHistory[packetArrivalHistoryWriteIndex++]=mostRecentPacketArrivalHistory;</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">// Wrap to 0 at the end of the range</span></div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">// Assumes power of 2 for CC_RAKNET_UDT_PACKET_HISTORY_LENGTH</span></div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; packetArrivalHistoryWriteIndex&amp;=(CC_RAKNET_UDT_PACKET_HISTORY_LENGTH-1);</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; continuousBytesReceivedStartTime=0;</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; continuousBytesReceived=0;</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; lastPacketArrivalTime=curTime;</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;}</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::OnAck(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> rtt, <span class="keywordtype">bool</span> hasBAndAS, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> _B, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> _AS, <span class="keywordtype">double</span> totalUserDataBytesAcked, <span class="keywordtype">bool</span> isContinuousSend, <a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> sequenceNumber )</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;{</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="preprocessor">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(rtt &lt; 10000);</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(rtt &lt; 10000000);</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="preprocessor"></span> (void) _B;</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">if</span> (hasBAndAS)</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// B=B * .875 + _B * .125;</span></div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">// AS is packet arrival rate</span></div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(_AS!=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>);</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; AS=_AS;</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a9007a2f16510743621a0582c6bd68258">CC_DEBUG_PRINTF_4</a>(<span class="stringliteral">&quot;ArrivalRate=%f linkCap=%f incomingLinkCap=%f\n&quot;</span>, _AS,B,_B);</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (oldestUnsentAck==0)</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; oldestUnsentAck=curTime;</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">if</span> (isInSlowStart==<span class="keyword">true</span>)</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; nextCongestionControlBlock=nextDatagramSequenceNumber;</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; lastRttOnIncreaseSendRate=rtt;</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; UpdateWindowSizeAndAckOnAckPreSlowStart(totalUserDataBytesAcked);</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; UpdateWindowSizeAndAckOnAckPerSyn(curTime, rtt, isContinuousSend, sequenceNumber);</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; lastUpdateWindowSizeAndAck=curTime;</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;}</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::OnSendAckGetBAndAS(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <span class="keywordtype">bool</span> *hasBAndAS, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> *_B, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> *_AS)</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;{</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">if</span> (curTime&gt;lastTransmitOfBAndAS+<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a55937587b422b0e8c051011deb28c4a4">SYN</a>)</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; *_B=0;</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; *_AS=ReceiverCalculateDataArrivalRate(curTime);</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span> (*_AS==<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>)</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; *hasBAndAS=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; *hasBAndAS=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; {</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; *hasBAndAS=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;}</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::OnSendAck(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> numBytes)</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;{</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; (void) numBytes;</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; (void) curTime;</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">// This is not accounted for on the remote system, and thus causes bandwidth to be underutilized</span></div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="comment">//UpdateNextAllowedSend(curTime, numBytes+UDP_HEADER_SIZE);</span></div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; oldestUnsentAck=0;</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;}</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::OnSendNACK(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> numBytes)</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;{</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; (void) numBytes;</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; (void) curTime;</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="comment">// This is not accounted for on the remote system, and thus causes bandwidth to be underutilized</span></div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="comment">// UpdateNextAllowedSend(curTime, numBytes+UDP_HEADER_SIZE);</span></div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;}</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::UpdateWindowSizeAndAckOnAckPreSlowStart(<span class="keywordtype">double</span> totalUserDataBytesAcked)</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;{</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="comment">// During slow start, max window size is the number of full packets that have been sent out</span></div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="comment">// CWND=(double) ((double)totalUserDataBytesSent/(double)MAXIMUM_MTU_INCLUDING_UDP_HEADER);</span></div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a3b8207193b81292522c46250dfddb14d">CC_DEBUG_PRINTF_3</a>(<span class="stringliteral">&quot;CWND increasing from %f to %f\n&quot;</span>, CWND, (<span class="keywordtype">double</span>) ((<span class="keywordtype">double</span>)totalUserDataBytesAcked/(<span class="keywordtype">double</span>)MAXIMUM_MTU_INCLUDING_UDP_HEADER));</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; CWND=(double) ((<span class="keywordtype">double</span>)totalUserDataBytesAcked/(double)MAXIMUM_MTU_INCLUDING_UDP_HEADER);</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (CWND&gt;=CWND_MAX_THRESHOLD)</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; {</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; CWND=CWND_MAX_THRESHOLD;</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (AS!=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>)</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; EndSlowStart();</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">if</span> (CWND&lt;<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#ab6119d92e7b521425b8cdf2210c93c97">CWND_MIN_THRESHOLD</a>)</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; CWND=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#ab6119d92e7b521425b8cdf2210c93c97">CWND_MIN_THRESHOLD</a>;</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;}</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::UpdateWindowSizeAndAckOnAckPerSyn(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> curTime, <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> rtt, <span class="keywordtype">bool</span> isContinuousSend, <a class="code" href="../../d9/d6a/struct_s_l_net_1_1uint24__t.xhtml">DatagramSequenceNumberType</a> sequenceNumber)</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;{ </div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; (void) curTime;</div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; (void) sequenceNumber;</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span> (isContinuousSend==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; nextCongestionControlBlock=nextDatagramSequenceNumber;</div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; pingsLastInterval.Clear(__FILE__,__LINE__);</div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; pingsLastInterval.Push(rtt,__FILE__,__LINE__);</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> intervalSize=33; <span class="comment">// Should be odd</span></div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">if</span> (pingsLastInterval.Size()&gt;intervalSize)</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; pingsLastInterval.Pop();</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae99a418b0377902ee85309774e03a7de" title="a &gt; b?">GreaterThan</a>(sequenceNumber, nextCongestionControlBlock) &amp;&amp;</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; sequenceNumber-nextCongestionControlBlock&gt;=intervalSize &amp;&amp;</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; pingsLastInterval.Size()==intervalSize)</div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; {</div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordtype">double</span> slopeSum=0.0;</div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordtype">double</span> average=(double) pingsLastInterval[0];</div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordtype">int</span> sampleSize=pingsLastInterval.Size();</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=1; i &lt; sampleSize; i++)</div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; slopeSum+=(double)pingsLastInterval[i]-(<span class="keywordtype">double</span>)pingsLastInterval[i-1];</div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; average+=pingsLastInterval[i];</div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; average/=sampleSize;</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; </div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">if</span> (hadPacketlossThisBlock==<span class="keyword">true</span>)</div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; {</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (slopeSum &lt; -.10*average)</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">// Logging</span></div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="comment">//printf(&quot;Ping dropping. slope=%f%%. Rate=%f MBPS. Rtt=%i\n&quot;, 100.0*slopeSum/average, GetLocalSendRate(), rtt );</span></div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; }</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (slopeSum &gt; .10*average)</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; {</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="comment">// Logging</span></div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="comment">//printf(&quot;Ping rising. slope=%f%%. Rate=%f MBPS. Rtt=%i\n&quot;, 100.0*slopeSum/average, GetLocalSendRate(), rtt );</span></div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; IncreaseTimeBetweenSends();</div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; {</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="comment">// Logging</span></div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="comment">//printf(&quot;Ping stable. slope=%f%%. Rate=%f MBPS. Rtt=%i\n&quot;, 100.0*slopeSum/average, GetLocalSendRate(), rtt );</span></div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="comment">// No packetloss over time threshhold, and rtt decreased, so send faster</span></div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; lastRttOnIncreaseSendRate=rtt;</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; DecreaseTimeBetweenSends();</div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;</div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; pingsLastInterval.Clear(__FILE__,__LINE__);</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; hadPacketlossThisBlock=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; nextCongestionControlBlock=nextDatagramSequenceNumber;</div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; lastRtt=rtt;</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;}</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="keywordtype">double</span> CCRakNetUDT::BytesPerMicrosecondToPacketsPerMillisecond(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> in)</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;{</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="preprocessor">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;<span class="preprocessor"></span> <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> factor = 1.0 / (<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a>) MAXIMUM_MTU_INCLUDING_UDP_HEADER;</div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="preprocessor"></span> <span class="keyword">const</span> <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> factor = 1000.0 / (<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a>) MAXIMUM_MTU_INCLUDING_UDP_HEADER;</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> in * factor;</div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;}</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::InitPacketArrivalHistory(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;{</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; CC_RAKNET_UDT_PACKET_HISTORY_LENGTH; i++)</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; {</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; packetArrivalHistory[i]=<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a03c3d79fb8baba8a851cc65969251ef0">UNDEFINED_TRANSFER_RATE</a>;</div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; packetArrivalHistoryContinuousGaps[i]=0;</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; packetArrivalHistoryWriteCount=0;</div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; continuousBytesReceived=0;</div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; continuousBytesReceivedStartTime=0;</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;}</div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="comment">// ----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::PrintLowBandwidthWarning(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;{</div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;</div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;<span class="comment"> printf(&quot;\n-------LOW BANDWIDTH -----\n&quot;);</span></div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="comment"> if (isInSlowStart==false)</span></div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;<span class="comment"> printf(&quot;SND=%f Megabytes per second\n&quot;, 1.0/SND);</span></div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;<span class="comment"> printf(&quot;Window size=%f\n&quot;, CWND);</span></div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;<span class="comment"> printf(&quot;Pipe from packet pair = %f megabytes per second\n&quot;, B);</span></div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;<span class="comment"> printf(&quot;RTT=%f milliseconds\n&quot;, RTT/1000.0);</span></div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="comment"> printf(&quot;RTT Variance=%f milliseconds\n&quot;, RTTVar/1000.0);</span></div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;<span class="comment"> printf(&quot;Retransmission=%i milliseconds\n&quot;, GetRTOForRetransmission(1)/1000);</span></div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;<span class="comment"> printf(&quot;Packet arrival rate on the remote system=%f megabytes per second\n&quot;, AS);</span></div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;<span class="comment"> printf(&quot;Packet arrival rate on our system=%f megabytes per second\n&quot;, ReceiverCalculateDataArrivalRate());</span></div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="comment"> printf(&quot;isInSlowStart=%i\n&quot;, isInSlowStart);</span></div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="comment"> printf(&quot;---------------\n&quot;);</span></div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;}</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a093707671afbde33de2a3aa1ceaf85c3">BytesPerMicrosecond</a> CCRakNetUDT::GetLocalReceiveRate(<a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#af68854e24d09ea8058bf8b27ce0f24e6">CCTimeType</a> currentTime)<span class="keyword"> const</span></div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> ReceiverCalculateDataArrivalRate(currentTime);</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;}</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;<span class="keywordtype">double</span> CCRakNetUDT::GetRTT(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">if</span> (RTT==<a class="code" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml#a8091bcafbec27f4e2118c1edc9c7038f">UNSET_TIME_US</a>)</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">return</span> 0.0;</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">return</span> RTT;</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;}</div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::CapMinSnd(<span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">int</span> line)</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;{</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; (void) file;</div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; (void) line;</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;</div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">if</span> (SND &gt; 500)</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; {</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; SND=500;</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <a class="code" href="../../d0/dfb/_c_c_rak_net_sliding_window_8h.xhtml#a3b8207193b81292522c46250dfddb14d">CC_DEBUG_PRINTF_3</a>(<span class="stringliteral">&quot;%s:%i LIKELY BUG: SND has gotten above 500 microseconds between messages (28.8 modem)\nReport to rakkar@jenkinssoftware.com with file and line number\n&quot;</span>, file, line);</div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;}</div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::IncreaseTimeBetweenSends(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;{</div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="comment">// In order to converge, bigger numbers have to increase slower and decrease faster</span></div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="comment">// SND==500 then increment is .02</span></div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="comment">// SND==0 then increment is near 0</span></div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="comment">// (SND+1.0) brings it to the range of 1 to 501</span></div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="comment">// Square the number, which is the range of 1 to 251001</span></div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="comment">// Divide by 251001, which is the range of 1/251001 to 1</span></div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordtype">double</span> increment;</div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; increment = .02 * ((SND+1.0) * (SND+1.0)) / (501.0*501.0) ;</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="comment">// SND=500 then increment=.02</span></div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="comment">// SND=0 then increment=near 0</span></div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; SND*=(1.02 - increment);</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;</div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="comment">// SND=0 then fast increase, slow decrease</span></div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="comment">// SND=500 then slow increase, fast decrease</span></div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; CapMinSnd(__FILE__,__LINE__);</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;}</div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;<span class="keywordtype">void</span> CCRakNetUDT::DecreaseTimeBetweenSends(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;{</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordtype">double</span> increment;</div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; increment = .01 * ((SND+1.0) * (SND+1.0)) / (501.0*501.0) ;</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="comment">// SND=500 then increment=.01</span></div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="comment">// SND=0 then increment=near 0</span></div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; SND*=(.99 - increment);</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;}</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;<span class="comment">void CCRakNetUDT::SetTimeBetweenSendsLimit(unsigned int bitsPerSecond)</span></div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;<span class="comment">// bitsPerSecond / 1000000 = bitsPerMicrosecond</span></div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="comment">// bitsPerMicrosecond / 8 = BytesPerMicrosecond</span></div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<span class="comment">// 1 / BytesPerMicrosecond = MicrosecondsPerByte</span></div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;<span class="comment">// 1 / ( (bitsPerSecond / 1000000) / 8 ) = </span></div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;<span class="comment">// 1 / (bitsPerSecond / 8000000) =</span></div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;<span class="comment">// 8000000 / bitsPerSecond</span></div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;<span class="comment">#if CC_TIME_TYPE_BYTES==4</span></div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<span class="comment"> MicrosecondsPerByte limit = (MicrosecondsPerByte) 8000 / (MicrosecondsPerByte)bitsPerSecond;</span></div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;<span class="comment">#else</span></div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;<span class="comment"> MicrosecondsPerByte limit = (MicrosecondsPerByte) 8000000 / (MicrosecondsPerByte)bitsPerSecond;</span></div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;<span class="comment"> if (limit &gt; SND)</span></div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;<span class="comment"> SND=limit;</span></div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="comment">}</span></div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;<span class="preprocessor">#endif</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/d52/_c_c_rak_net_u_d_t_8cpp.xhtml">CCRakNetUDT.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,149 @@
<!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"/>
<title>SLikeNet: Member List</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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><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="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#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('dc/d80/struct_data_structures_1_1_table_1_1_cell.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">DataStructures::Table::Cell Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#ab732aa0d33409753f93aeccffb4dc08c">c</a></td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a9660e71fee97749ddcfb982e37cb84eb">Cell</a>()</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#afff411dead180b4579ae46fba317928b">Cell</a>(double numericValue, char *charValue, void *ptr, ColumnType type)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a3fdb73b7147e31be5b37dc9bbedbdb0e">Cell</a>(const Cell &amp;input)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a606a5ea9272ac1ffbc8dc9a3d1fd8ef0">Clear</a>(void)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#ae1feb23b61c3efc6102762494ac8cfdf">EstimateColumnType</a>(void) const </td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a457ba67340a1ee1a648a154f314df6d8">Get</a>(int *output)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a592ad10af27b7b9a766ae1597dd4cb71">Get</a>(double *output)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a86b0a713ca5eed768afd66c9824d1951">Get</a>(char *output)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a7035f8bb4a17b73d09f105251f93f9cc">Get</a>(char *output, size_t outputLength)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#ad06fd1b0b523a88ed75e9f8cd0cf34e3">Get</a>(char *output, int *outputLength)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a6e0e9d8de5d3ea687af23e5b0c357723">i</a></td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a604bc863f25f833f352d4064ed003677">isEmpty</a></td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a73063374a715cf26a89930d4a6376809">operator=</a>(const Cell &amp;input)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#aa9c09a4660110db5161be819515e19f0">ptr</a></td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a68e3910b644c6e478365ace539b70bab">Set</a>(int input)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a6227c76f93fb78a39047ac274ed8bc7e">Set</a>(unsigned int input)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#ac708126c6007dbe0f0304cc602d425fd">Set</a>(double input)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a56f029181579455617d1c66abe4b4d90">Set</a>(const char *input)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#afab214dcae6fca07735607d5bf3890e4">Set</a>(const char *input, int inputLength)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a369408bb45ef94a5c47c52cdbeabed5e">SetByType</a>(double numericValue, char *charValue, void *inPtr, ColumnType type)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a2edb7a4e719cbf5d1a9f05c8b158d833">SetPtr</a>(void *p)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a14e302294435fe9f67de3aeb5a6d1881">ToString</a>(ColumnType columnType)</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#aaaa73b2525538a43babacda5901441b1">~Cell</a>()</td><td class="entry"><a class="el" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml">DataStructures::Table::Cell</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
var _gets_8h =
[
[ "Gets", "d8/d68/_gets_8h.xhtml#ab43f66645e1b1bf582ca268cefc32e6e", null ]
];

View File

@ -0,0 +1,160 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/Gets.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d68/_gets_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Gets.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="../../d8/d68/_gets_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ab43f66645e1b1bf582ca268cefc32e6e"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d68/_gets_8h.xhtml#ab43f66645e1b1bf582ca268cefc32e6e">Gets</a> (char *str, int num)</td></tr>
<tr class="separator:ab43f66645e1b1bf582ca268cefc32e6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ab43f66645e1b1bf582ca268cefc32e6e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char* Gets </td>
<td>(</td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d63/_gets_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="../../d6/d63/_gets_8cpp_source.xhtml">Gets.cpp</a>.</p>
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/d68/_gets_8h.xhtml">Gets.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,145 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/Gets.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/d68/_gets_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">Gets.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/d68/_gets_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#ifndef __GETS__H_</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __GETS__H_</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keywordtype">char</span> * <a class="code" href="../../d6/d63/_gets_8cpp.xhtml#ab43f66645e1b1bf582ca268cefc32e6e">Gets</a> ( <span class="keywordtype">char</span> * str, <span class="keywordtype">int</span> num );</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/d68/_gets_8h.xhtml">Gets.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,3 @@
<map id="DataStructures::Page&lt; KeyType, DataType, order &gt;" name="DataStructures::Page&lt; KeyType, DataType, order &gt;">
<area shape="rect" id="node2" href="$da/d80/namespace_data_structures.xhtml#da/d80/namespace_data_structures" title="{DataStructures::Page\l\&lt; unsigned, Row *, order \&gt;\n|+ isLeaf\l+ size\l+ keys\l+ data\l+ next\l+ previous\l+ children\l|}" alt="" coords="5,277,183,457"/>
</map>

View File

@ -0,0 +1 @@
9d379c32333851d4ba5685aab1769261

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: DataStructures::Page&lt; KeyType, DataType, order &gt; Pages: 1 -->
<svg width="161pt" height="347pt"
viewBox="0.00 0.00 160.50 347.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 343)">
<title>DataStructures::Page&lt; KeyType, DataType, order &gt;</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="9.5,-193.5 9.5,-338.5 123.5,-338.5 123.5,-193.5 9.5,-193.5"/>
<text text-anchor="start" x="17.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">DataStructures::Page</text>
<text text-anchor="start" x="17.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; KeyType, DataType,</text>
<text text-anchor="middle" x="66.5" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00"> order &gt;</text>
<polyline fill="none" stroke="black" points="9.5,-297.5 123.5,-297.5 "/>
<text text-anchor="start" x="17.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ isLeaf</text>
<text text-anchor="start" x="17.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ size</text>
<text text-anchor="start" x="17.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ keys</text>
<text text-anchor="start" x="17.5" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ data</text>
<text text-anchor="start" x="17.5" y="-241.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ next</text>
<text text-anchor="start" x="17.5" y="-230.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ previous</text>
<text text-anchor="start" x="17.5" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ children</text>
<polyline fill="none" stroke="black" points="9.5,-212.5 123.5,-212.5 "/>
<text text-anchor="middle" x="66.5" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../da/d80/namespace_data_structures.xhtml#da/d80/namespace_data_structures" target="_top" xlink:title="{DataStructures::Page\l\&lt; unsigned, Row *, order \&gt;\n|+ isLeaf\l+ size\l+ keys\l+ data\l+ next\l+ previous\l+ children\l|}">
<polygon fill="none" stroke="black" points="0,-0.5 0,-134.5 133,-134.5 133,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">DataStructures::Page</text>
<text text-anchor="middle" x="66.5" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; unsigned, Row *, order &gt;</text>
<polyline fill="none" stroke="black" points="0,-104.5 133,-104.5 "/>
<text text-anchor="start" x="8" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ isLeaf</text>
<text text-anchor="start" x="8" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ size</text>
<text text-anchor="start" x="8" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ keys</text>
<text text-anchor="start" x="8" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ data</text>
<text text-anchor="start" x="8" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ next</text>
<text text-anchor="start" x="8" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ previous</text>
<text text-anchor="start" x="8" y="-26.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ children</text>
<polyline fill="none" stroke="black" points="0,-19.5 133,-19.5 "/>
<text text-anchor="middle" x="66.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="orange" d="M66.5,-183.22C66.5,-166.996 66.5,-150.156 66.5,-134.537"/>
<polygon fill="orange" stroke="orange" points="63.0001,-183.225 66.5,-193.225 70.0001,-183.225 63.0001,-183.225"/>
<text text-anchor="start" x="66.5" y="-167" font-family="Helvetica,sans-Serif" font-size="10.00"> &lt; unsigned, Row *,</text>
<text text-anchor="middle" x="109.5" y="-156" font-family="Helvetica,sans-Serif" font-size="10.00"> order &gt;</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -0,0 +1,42 @@
var class_s_l_net_1_1_rak_w_string =
[
[ "RakWString", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#af3ea419504d42441fd1e9a31aaf68929", null ],
[ "RakWString", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a242ce52b151f3fbcaf1679428e170cd0", null ],
[ "RakWString", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a6c04c0f3a7a1cc6716503501a51b8049", null ],
[ "RakWString", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a0c4838c7d5097317141b7fab3e18f513", null ],
[ "RakWString", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a59726060b4b49bc7188acaaa342d4469", null ],
[ "~RakWString", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a5041bc59d6453c722deb1c97445c3999", null ],
[ "C_String", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#acacfb3945c4f1ddb38b441f5f458a3db", null ],
[ "Clear", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a6fd4f33f8676fb877c83e3c42a56f3b4", null ],
[ "Deserialize", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a1ee57c7ac7e350d2a0402cca38ff9e5f", null ],
[ "Deserialize", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#aae56491cbeb74e93620d3c2f834724c4", null ],
[ "Deserialize", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a6f4b48c7b7b36a060246f69d1efbd199", null ],
[ "FPrintf", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a9325f748fd6fa6807dbd8e386d7bf94e", null ],
[ "GetLength", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a3c763f42c872e6b92523327cf3e28fc7", null ],
[ "IsEmpty", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a865ea0548bf5e6e00b4c9589e8da0f8f", null ],
[ "operator wchar_t *", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#afd9ee3aaa17c23700783934a8c88636f", null ],
[ "operator!=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a4f6638f94fb3d8210fbd81273c245db9", null ],
[ "operator+=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a758289e39da06ed271297c14c38fe911", null ],
[ "operator+=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a6af301c518a01b25adf427a128d76892", null ],
[ "operator+=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a87014ff1fc9d77f4efd502049b7f4a8c", null ],
[ "operator<", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a219b7ddfa7136b6f9b6e059b168eee53", null ],
[ "operator<=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#aec4b280efd82c25d1595aaef1a041b79", null ],
[ "operator=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a1e7091b76f9c6d1e1f01f6b0ebc7c8e7", null ],
[ "operator=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#af7c561c6ce544f38e5ee55cbd058afd9", null ],
[ "operator=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#ab9fab8a6b53870f0d3b98679c37e74f3", null ],
[ "operator=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a55704a9ca5e625727b9780e0e1caeb63", null ],
[ "operator=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#ad8e778577d016ff7771fdbfabca3cb40", null ],
[ "operator=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#ac68224a1d0f5463c530173f547e0be17", null ],
[ "operator==", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#afebab26f22e4662b256ae6248c1bf958", null ],
[ "operator>", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#af8e472fbdadae9d11ebbb1086e1f16ed", null ],
[ "operator>=", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a2cb392ad198da878e04415deaaf77909", null ],
[ "Printf", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a57881a26d7f747960dac76115abc9911", null ],
[ "Serialize", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a8ddb3a0e537ec5c67a39f2e8d1984efc", null ],
[ "Serialize", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a7c87ce2ae8dcc4d7ce048ffcc5c8e083", null ],
[ "Set", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a1aecbceec3fd6698d3b3fce6ad0da890", null ],
[ "StrCmp", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#ab4e1aa5497c75dd218210a0c8e18f3bd", null ],
[ "StrICmp", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a0b11e2b71d1280b7d17b585b07d6a75a", null ],
[ "ToInteger", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#a24a63ad30c1233f1b281e812ed4e8e6d", null ],
[ "c_str", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#ad503fb6bfdf970e3bc646d863461e493", null ],
[ "c_strCharLength", "d8/d91/class_s_l_net_1_1_rak_w_string.xhtml#ab961508b79f1e13ba78293244ab2f121", null ]
];

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,145 @@
<!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"/>
<title>SLikeNet: Member List</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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><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="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#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('d3/d87/class_data_structures_1_1_queue.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">DataStructures::Queue&lt; queue_type &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a30ed169295af652897a9dd66c4c8403d">AllocationSize</a>(void) const </td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a481276f70b05ecba8138cd67e51509ec">Clear</a>(const char *file, unsigned int line)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ad1a69d9152ba602aae0ac6edad876d9d">ClearAndForceAllocation</a>(int size, const char *file, unsigned int line)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#af25ea11c6d2c125fc8880ce99dee1573">Compress</a>(const char *file, unsigned int line)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#aaeea4fc7d36a0a3545f47bc451cb9d91">Find</a>(const queue_type &amp;q)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a8a535ff9f0dceecedf31401490da3a31">IsEmpty</a>(void) const </td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae20f03f585b7cf73180f164b9d181165">operator=</a>(const Queue &amp;original_copy)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a210a76360bee7d4246990b8c99e7f259">operator[]</a>(unsigned int position) const </td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a5e9c9de11d2dd84320d2f7c9408b80b1">Peek</a>(void) const </td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a868069bfcac2e9d9294dadcd74bbe96c">PeekTail</a>(void) const </td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a25272370e684388afd807c5369e4ef87">Pop</a>(void)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a803a870f52e2755e00686b762bb53da2">PopDeref</a>(void)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#aea8839196a7bb3453a8a8b0606ce71a1">PopTail</a>(void)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(const queue_type &amp;input, const char *file, unsigned int line)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a3980613e44a80982708b9d1f49fa0fea">PushAtHead</a>(const queue_type &amp;input, unsigned index, const char *file, unsigned int line)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#af554e9d90d7090b0b5b030b8fdbae492">Queue</a>()</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ac290f64822aeb3680989dffa2bdcaf69">Queue</a>(const Queue &amp;original_copy)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a8be7c3107161bb2ad869a9a6bb60605a">RemoveAtIndex</a>(unsigned int position)</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>(void) const </td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#aeb349e3652b877e55d31a45a5939d848">~Queue</a>()</td><td class="entry"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt; queue_type &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,151 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/SocketLayer.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/da4/_socket_layer_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">SocketLayer.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>SocketLayer class implementation.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="../../dd/dc5/memoryoverride_8h_source.xhtml">memoryoverride.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d49/types_8h_source.xhtml">types.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/df7/smartptr_8h_source.xhtml">smartptr.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../db/dbd/_export_8h_source.xhtml">Export.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d2/d24/_m_t_u_size_8h_source.xhtml">MTUSize.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../da/d66/string_8h_source.xhtml">string.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/da4/_socket_layer_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml">SLNet::SocketLayer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:dd/d30/namespace_s_l_net"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></td></tr>
<tr class="memdesc:dd/d30/namespace_s_l_net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. <br/></td></tr>
<tr class="separator:"><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>SocketLayer class implementation. </p>
<p>Definition in file <a class="el" href="../../d8/da4/_socket_layer_8h_source.xhtml">SocketLayer.h</a>.</p>
</div></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/da4/_socket_layer_8h.xhtml">SocketLayer.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,266 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/SocketLayer.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/da4/_socket_layer_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">SocketLayer.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/da4/_socket_layer_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#ifndef __SOCKET_LAYER_H</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __SOCKET_LAYER_H</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/dc5/memoryoverride_8h.xhtml" title="If _USE_RAK_MEMORY_OVERRIDE is defined, memory allocations go through rakMalloc, rakRealloc, and rakFree.">memoryoverride.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d49/types_8h.xhtml" title="Types used by RakNet, most of which involve user code.">types.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/df7/smartptr_8h.xhtml">smartptr.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//#include &quot;socket.h&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/dbd/_export_8h.xhtml">Export.h</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d2/d24/_m_t_u_size_8h.xhtml" title="[Internal] Defines the default maximum transfer unit.">MTUSize.h</a>&quot;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../da/d66/string_8h.xhtml">string.h</a>&quot;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">//#include &quot;ClientContextStruct.h&quot;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">namespace </span>SLNet</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">class </span>RakPeer;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">class RAK_DLL_EXPORT SocketLayerOverride</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">public:</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> SocketLayerOverride() {}</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> virtual ~SocketLayerOverride() {}</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> virtual int RakNetSendTo( const char *data, int length, const SystemAddress &amp;systemAddress )=0;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> // Return -1 to use RakNet&#39;s normal recvfrom, 0 to abort RakNet&#39;s normal recvfrom, and positive to return data</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> virtual int RakNetRecvFrom( char dataOut[ MAXIMUM_MTU_SIZE ], SystemAddress *senderOut, bool calledFromMainThread )=0;</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">};</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">// A platform independent implementation of Berkeley sockets, with settings used by RakNet</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml"> 58</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml">SocketLayer</a></div>
<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;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml">SocketLayer</a>();</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="comment">// Destructor </span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; ~<a class="code" href="../../d0/d86/class_s_l_net_1_1_socket_layer.xhtml">SocketLayer</a>();</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> static RakNetSocket* CreateBoundSocket( RakPeer *peer, unsigned short port, bool blockingSocket, const char *forceHostAddress, unsigned int sleepOn10048, unsigned int extraSocketOptions, unsigned short socketFamily, _PP_Instance_ chromeInstance );</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment">#if defined(WINDOWS_STORE_RT)</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> static RakNetSocket* CreateWindowsStore8Socket( RakPeer *peer, unsigned short port, bool blockingSocket, const char *forceHostAddress, unsigned int sleepOn10048, unsigned int extraSocketOptions, _PP_Instance_ chromeInstance );</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> static RakNetSocket* CreateBoundSocket_IPV4( RakPeer *peer, unsigned short port, bool blockingSocket, const char *forceHostAddress, unsigned int sleepOn10048, unsigned int extraSocketOptions, _PP_Instance_ chromeInstance );</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> #if RAKNET_SUPPORT_IPV6==1</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> static RakNetSocket* CreateBoundSocket_SupportIPV4And6( RakPeer *peer, unsigned short port, bool blockingSocket, const char *forceHostAddress, unsigned int sleepOn10048, unsigned int extraSocketOptions, unsigned short socketFamily, _PP_Instance_ chromeInstance );</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> #endif</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> static RakNetSocket* CreateBoundSocket_PS3Lobby( unsigned short port, bool blockingSocket, const char *forceHostAddress, unsigned short socketFamily );</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> static RakNetSocket* CreateBoundSocket_PSP2( unsigned short port, bool blockingSocket, const char *forceHostAddress, unsigned short socketFamily );</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">#ifndef WINDOWS_STORE_RT</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> //static bool IsPortInUse_Old(unsigned short port, const char *hostAddress);</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> //static bool IsPortInUse(unsigned short port, const char *hostAddress, unsigned short socketFamily );</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> static bool IsSocketFamilySupported(const char *hostAddress, unsigned short socketFamily);</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">// static const char* DomainNameToIP_Old( const char *domainName );</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">// static const char* DomainNameToIP( const char *domainName );</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="comment">// static void Write( RakNetSocket*writeSocket, const char* data, const int length );</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">// static void RecvFromBlocking_IPV4( RakNetSocket *s, RakPeer *rakPeer, char *dataOut, int *bytesReadOut, SystemAddress *systemAddressOut, SLNet::TimeUS *timeRead );</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">// #if RAKNET_SUPPORT_IPV6==1</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">// static void RecvFromBlockingIPV4And6( RakNetSocket *s, RakPeer *rakPeer, char *dataOut, int *bytesReadOut, SystemAddress *systemAddressOut, SLNet::TimeUS *timeRead );</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment">// #endif</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment">// static void RecvFromBlocking( RakNetSocket *s, RakPeer *rakPeer, char *dataOut, int *bytesReadOut, SystemAddress *systemAddressOut, SLNet::TimeUS *timeRead );</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#if defined(WINDOWS_STORE_RT)</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor"></span><span class="comment">// static void RecvFromBlocking_WindowsStore8( RakNetSocket *s, RakPeer *rakPeer, char *dataOut, int *bytesReadOut, SystemAddress *systemAddressOut, SLNet::TimeUS *timeRead );</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">static</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> GetSubNetForSocketAndIp(<a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#ad31a77c59d4b8ba8cbd1eac64fbf89e8" title="Unix/Linux uses ints for sockets.">__UDPSOCKET__</a> inSock, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> inIpString);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">// static void SetNonBlocking( RakNetSocket* listenSocket);</span></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;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> GetMyIP( <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> addresses[<a class="code" href="../../d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80">MAXIMUM_NUMBER_OF_INTERNAL_IDS</a>] );</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment">// static int SendTo( UDPSOCKET s, const char *data, int length, const char ip[ 16 ], unsigned short port, unsigned short remotePortRakNetWasStartedOn_PS3, unsigned int extraSocketOptions, const char *file, const long line );</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment">// static int SendToTTL( RakNetSocket *s, const char *data, int length, SystemAddress &amp;systemAddress, int ttl );</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment">// static int SendTo( RakNetSocket *s, const char *data, int length, SystemAddress systemAddress, const char *file, const long line );</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">// static unsigned short GetLocalPort(RakNetSocket *s);</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> GetLocalPort( <a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#ad31a77c59d4b8ba8cbd1eac64fbf89e8" title="Unix/Linux uses ints for sockets.">__UDPSOCKET__</a> s);</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">// static void GetSystemAddress_Old ( RakNetSocket *s, SystemAddress *systemAddressOut );</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> GetSystemAddress_Old ( <a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#ad31a77c59d4b8ba8cbd1eac64fbf89e8" title="Unix/Linux uses ints for sockets.">__UDPSOCKET__</a> s, <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> *systemAddressOut );</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment">// static void GetSystemAddress ( RakNetSocket *s, SystemAddress *systemAddressOut );</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> GetSystemAddress ( <a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#ad31a77c59d4b8ba8cbd1eac64fbf89e8" title="Unix/Linux uses ints for sockets.">__UDPSOCKET__</a> s, <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> *systemAddressOut );</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">// static void SetSocketLayerOverride(SocketLayerOverride *_slo);</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment">// static SocketLayerOverride* GetSocketLayerOverride(void) {return slo;}</span></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;<span class="comment">// static int SendTo_PS3Lobby( RakNetSocket *s, const char *data, int length, const SystemAddress &amp;systemAddress );</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment">// static int SendTo_PSP2( RakNetSocket *s, const char *data, int length, const SystemAddress &amp;systemAddress );</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">// static int SendTo_360( RakNetSocket *s, const char *data, int length, const char *voiceData, int voiceLength, const SystemAddress &amp;systemAddress );</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">// static int SendTo_PC( RakNetSocket *s, const char *data, int length, const SystemAddress &amp;systemAddress, const char *file, const long line );</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment">// #if defined(WINDOWS_STORE_RT)</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment">// static int SendTo_WindowsStore8( RakNetSocket *s, const char *data, int length, const SystemAddress &amp;systemAddress, const char *file, const long line );</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment">// #endif</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment">// static void SetDoNotFragment( RakNetSocket* listenSocket, int opt );</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment">// static void SetSocketOptions( RakNetSocket* listenSocket, bool blockingSocket, bool setBroadcast);</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> SetSocketOptions( <a class="code" href="../../d4/dc5/_socket_includes_8h.xhtml#ad31a77c59d4b8ba8cbd1eac64fbf89e8" title="Unix/Linux uses ints for sockets.">__UDPSOCKET__</a> listenSocket, <span class="keywordtype">bool</span> blockingSocket, <span class="keywordtype">bool</span> setBroadcast);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </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; <span class="comment">// AF_INET (default). For IPV6, use AF_INET6. To autoselect, use AF_UNSPEC.</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> GetFirstBindableIP(<span class="keywordtype">char</span> firstBindable[128], <span class="keywordtype">int</span> ipProto);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment">// static SocketLayerOverride *slo;</span></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;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;} <span class="comment">// namespace SLNet</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor">#endif</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/da4/_socket_layer_8h.xhtml">SocketLayer.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,9 @@
var _file_operations_8h =
[
[ "AddSlash", "d8/da5/_file_operations_8h.xhtml#a2c89b5a763d56a9034056de11d1eb881", null ],
[ "DirectoryExists", "d8/da5/_file_operations_8h.xhtml#abb118eddff1b43b6a9ce2d31e50c07f1", null ],
[ "GetFileLength", "d8/da5/_file_operations_8h.xhtml#a6a97644011df20e25fe1e010d7972f7a", null ],
[ "IsSlash", "d8/da5/_file_operations_8h.xhtml#ad30d0fb7f4df6608342496e2cb2d3c2e", null ],
[ "QuoteIfSpaces", "d8/da5/_file_operations_8h.xhtml#a48acfd15374d567f3fba26e788bd8b34", null ],
[ "WriteFileWithDirectories", "d8/da5/_file_operations_8h.xhtml#ab48fb4f1571bbe40c17356e75c8ecade", null ]
];

View File

@ -0,0 +1,256 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/FileOperations.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/da5/_file_operations_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">FileOperations.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">NativeFeatureIncludes.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../db/dbd/_export_8h_source.xhtml">Export.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/da5/_file_operations_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ab48fb4f1571bbe40c17356e75c8ecade"><td class="memItemLeft" align="right" valign="top">bool <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/_file_operations_8h.xhtml#ab48fb4f1571bbe40c17356e75c8ecade">WriteFileWithDirectories</a> (const char *path, char *data, unsigned dataLength)</td></tr>
<tr class="separator:ab48fb4f1571bbe40c17356e75c8ecade"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad30d0fb7f4df6608342496e2cb2d3c2e"><td class="memItemLeft" align="right" valign="top">bool <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/_file_operations_8h.xhtml#ad30d0fb7f4df6608342496e2cb2d3c2e">IsSlash</a> (unsigned char c)</td></tr>
<tr class="separator:ad30d0fb7f4df6608342496e2cb2d3c2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c89b5a763d56a9034056de11d1eb881"><td class="memItemLeft" align="right" valign="top">void <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/_file_operations_8h.xhtml#a2c89b5a763d56a9034056de11d1eb881">AddSlash</a> (char *input)</td></tr>
<tr class="separator:a2c89b5a763d56a9034056de11d1eb881"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48acfd15374d567f3fba26e788bd8b34"><td class="memItemLeft" align="right" valign="top">void <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/_file_operations_8h.xhtml#a48acfd15374d567f3fba26e788bd8b34">QuoteIfSpaces</a> (char *str)</td></tr>
<tr class="separator:a48acfd15374d567f3fba26e788bd8b34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb118eddff1b43b6a9ce2d31e50c07f1"><td class="memItemLeft" align="right" valign="top">bool <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/_file_operations_8h.xhtml#abb118eddff1b43b6a9ce2d31e50c07f1">DirectoryExists</a> (const char *directory)</td></tr>
<tr class="separator:abb118eddff1b43b6a9ce2d31e50c07f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a97644011df20e25fe1e010d7972f7a"><td class="memItemLeft" align="right" valign="top">unsigned int <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/_file_operations_8h.xhtml#a6a97644011df20e25fe1e010d7972f7a">GetFileLength</a> (const char *path)</td></tr>
<tr class="separator:a6a97644011df20e25fe1e010d7972f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a2c89b5a763d56a9034056de11d1eb881"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> AddSlash </td>
<td>(</td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>input</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="abb118eddff1b43b6a9ce2d31e50c07f1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> DirectoryExists </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>directory</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a6a97644011df20e25fe1e010d7972f7a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> GetFileLength </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>path</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ad30d0fb7f4df6608342496e2cb2d3c2e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> IsSlash </td>
<td>(</td>
<td class="paramtype">unsigned char&#160;</td>
<td class="paramname"><em>c</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a48acfd15374d567f3fba26e788bd8b34"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> QuoteIfSpaces </td>
<td>(</td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>str</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ab48fb4f1571bbe40c17356e75c8ecade"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> WriteFileWithDirectories </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>path</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>dataLength</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/da5/_file_operations_8h.xhtml">FileOperations.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,151 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/FileOperations.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/da5/_file_operations_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">FileOperations.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/da5/_file_operations_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_FileOperations==1</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#ifndef __FILE_OPERATIONS_H</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __FILE_OPERATIONS_H</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/dbd/_export_8h.xhtml">Export.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../d8/da5/_file_operations_8h.xhtml#ab48fb4f1571bbe40c17356e75c8ecade">WriteFileWithDirectories</a>( <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">char</span> *data, <span class="keywordtype">unsigned</span> dataLength );</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../d8/da5/_file_operations_8h.xhtml#ad30d0fb7f4df6608342496e2cb2d3c2e">IsSlash</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c);</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../d8/da5/_file_operations_8h.xhtml#a2c89b5a763d56a9034056de11d1eb881">AddSlash</a>( <span class="keywordtype">char</span> *input );</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../d8/da5/_file_operations_8h.xhtml#a48acfd15374d567f3fba26e788bd8b34">QuoteIfSpaces</a>(<span class="keywordtype">char</span> *str);</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../d8/da5/_file_operations_8h.xhtml#abb118eddff1b43b6a9ce2d31e50c07f1">DirectoryExists</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *directory);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../d8/da5/_file_operations_8h.xhtml#a6a97644011df20e25fe1e010d7972f7a">GetFileLength</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#endif // _RAKNET_SUPPORT_FileOperations</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/da5/_file_operations_8h.xhtml">FileOperations.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,124 @@
<!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"/>
<title>SLikeNet: Source/src/StatisticsHistory.cpp File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/da6/_statistics_history_8cpp.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">StatisticsHistory.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/da6/_statistics_history_8cpp_source.xhtml">Go to the source code of this file.</a></p>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/da6/_statistics_history_8cpp.xhtml">StatisticsHistory.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,953 @@
<!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"/>
<title>SLikeNet: Source/src/StatisticsHistory.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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/da6/_statistics_history_8cpp_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">StatisticsHistory.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/da6/_statistics_history_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_StatisticsHistory==1</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d3/dbf/_statistics_history_8h.xhtml" title="Input numerical values over time. Get sum, average, highest, lowest, standard deviation on recent or ...">slikenet/StatisticsHistory.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d76/_get_time_8h.xhtml" title="Returns the value from QueryPerformanceCounter. This is the function RakNet uses to represent time...">slikenet/GetTime.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/dc5/statistics_8h.xhtml" title="A structure that holds all statistical data returned by RakNet.">slikenet/statistics.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/d85/peerinterface_8h.xhtml" title="An interface for RakPeer. Simply contains all user functions as pure virtuals.">slikenet/peerinterface.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<a class="code" href="../../db/dbd/_export_8h.xhtml#aa00165c970bdb25e1c757b432509533b">STATIC_FACTORY_DEFINITIONS</a>(<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml" title="Input numerical values over time. Get sum, average, highest, lowest, standard deviation on recent or ...">StatisticsHistory</a>,<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml" title="Input numerical values over time. Get sum, average, highest, lowest, standard deviation on recent or ...">StatisticsHistory</a>);</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<a class="code" href="../../db/dbd/_export_8h.xhtml#aa00165c970bdb25e1c757b432509533b">STATIC_FACTORY_DEFINITIONS</a>(<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#dd/d3f/class_s_l_net_1_1_statistics_history_plugin" title="Input numerical values over time. Get sum, average, highest, lowest, standard deviation on recent or ...">StatisticsHistoryPlugin</a>,<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#dd/d3f/class_s_l_net_1_1_statistics_history_plugin" title="Input numerical values over time. Get sum, average, highest, lowest, standard deviation on recent or ...">StatisticsHistoryPlugin</a>);</div>
<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;<span class="keywordtype">int</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a1e00154f0e3858a8dd319e25b65dfbfb">StatisticsHistory::TrackedObjectComp</a>( <span class="keyword">const</span> <a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a> &amp;key, <a class="code" href="../../d2/d8a/struct_s_l_net_1_1_statistics_history_1_1_tracked_object.xhtml">StatisticsHistory::TrackedObject</a>* <span class="keyword">const</span> &amp;data )</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">if</span> (key &lt; data-&gt;trackedObjectData.objectId)</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">if</span> (key == data-&gt;<a class="code" href="../../d2/d8a/struct_s_l_net_1_1_statistics_history_1_1_tracked_object.xhtml#a20a461327477dfe81829e12e57b17196">trackedObjectData</a>.<a class="code" href="../../db/d72/struct_s_l_net_1_1_statistics_history_1_1_tracked_object_data.xhtml#acbbfa0f8ba9e7b4f129bd07ec1c597c7">objectId</a>)</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> 1;</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;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keywordtype">int</span> TimeAndValueQueueCompAsc( <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml">StatisticsHistory::TimeAndValueQueue</a>* <span class="keyword">const</span> &amp;key, <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml">StatisticsHistory::TimeAndValueQueue</a>* <span class="keyword">const</span> &amp;data )</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="keywordflow">if</span> (key-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a3284c461de8255e1cf1f763f6f4ac227">sortValue</a> &lt; data-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a3284c461de8255e1cf1f763f6f4ac227">sortValue</a>)</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> (key-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a3284c461de8255e1cf1f763f6f4ac227">sortValue</a> &gt; data-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a3284c461de8255e1cf1f763f6f4ac227">sortValue</a>)</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">if</span> (key-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#aefb93bc7c31786d286c5b2a541f48426">key</a> &lt; data-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#aefb93bc7c31786d286c5b2a541f48426">key</a>)</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (key-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#aefb93bc7c31786d286c5b2a541f48426">key</a> &gt; data-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#aefb93bc7c31786d286c5b2a541f48426">key</a>)</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keywordtype">int</span> TimeAndValueQueueCompDesc( <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml">StatisticsHistory::TimeAndValueQueue</a>* <span class="keyword">const</span> &amp;key, <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml">StatisticsHistory::TimeAndValueQueue</a>* <span class="keyword">const</span> &amp;data )</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span> (key-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a3284c461de8255e1cf1f763f6f4ac227">sortValue</a> &gt; data-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a3284c461de8255e1cf1f763f6f4ac227">sortValue</a>)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span> (key-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a3284c461de8255e1cf1f763f6f4ac227">sortValue</a> &lt; data-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a3284c461de8255e1cf1f763f6f4ac227">sortValue</a>)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (key-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#aefb93bc7c31786d286c5b2a541f48426">key</a> &gt; data-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#aefb93bc7c31786d286c5b2a541f48426">key</a>)</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (key-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#aefb93bc7c31786d286c5b2a541f48426">key</a> &lt; data-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#aefb93bc7c31786d286c5b2a541f48426">key</a>)</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> 0;</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;<a class="code" href="../../db/d72/struct_s_l_net_1_1_statistics_history_1_1_tracked_object_data.xhtml#af2744994c7d4b01d7eb63f9fcf041f23">StatisticsHistory::TrackedObjectData::TrackedObjectData</a>() {}</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<a class="code" href="../../db/d72/struct_s_l_net_1_1_statistics_history_1_1_tracked_object_data.xhtml#af2744994c7d4b01d7eb63f9fcf041f23">StatisticsHistory::TrackedObjectData::TrackedObjectData</a>(<a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a> _objectId, <span class="keywordtype">int</span> _objectType, <span class="keywordtype">void</span> *_userData)</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; objectId=_objectId;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; objectType=_objectType;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; userData=_userData;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ab0a1e7a14175abc62dc2ebae533e2803">StatisticsHistory::StatisticsHistory</a>() {<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ad1fd9a244cd1d810ff8ec8823ccbf0a6">timeToTrack</a> = 30000;}</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a954c31a221af64b938be9ed9e35212a4">StatisticsHistory::~StatisticsHistory</a>()</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a998f8d320f8a0d86b6be540de4877761">Clear</a>();</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="keywordtype">void</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ab84e7aa56636345d897d040abfffe2e3">StatisticsHistory::SetDefaultTimeToTrack</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> defaultTimeToTrack) {<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ad1fd9a244cd1d810ff8ec8823ccbf0a6">timeToTrack</a> = defaultTimeToTrack;}</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#aa56d96876ea20a06fc40d7cd9907417d">StatisticsHistory::GetDefaultTimeToTrack</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ad1fd9a244cd1d810ff8ec8823ccbf0a6">timeToTrack</a>;}</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#abaeaf7d3effca66f165dd251f79b78f4">StatisticsHistory::AddObject</a>(TrackedObjectData tod)</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="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(tod.objectId, &amp;objectExists);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span> (objectExists)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; TrackedObject *to = SLNet::OP_NEW&lt;TrackedObject&gt;(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; to-&gt;trackedObjectData=tod;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a9ed08b2c35b20d08ebfab17927f5c4a2">InsertAtIndex</a>(to,idx,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</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;<span class="keywordtype">bool</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a14fde12e86e857130a2624bb1a28bba0">StatisticsHistory::RemoveObject</a>(<a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a> objectId, <span class="keywordtype">void</span> **userData)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;{</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ac7714c4a1db3b555cde57fdfeb343be3">GetObjectIndex</a>(objectId);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (idx == (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) -1)</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; <span class="keywordflow">if</span> (userData)</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; *userData = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>[idx]-&gt;trackedObjectData.userData;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#af5b71387e5bd65b3f3082292765eef92">RemoveObjectAtIndex</a>(idx);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="keywordtype">void</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#af5b71387e5bd65b3f3082292765eef92">StatisticsHistory::RemoveObjectAtIndex</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;{</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; TrackedObject *to = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>[index];</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a65ef0eca14deb8698004b1cd074b6f0a">RemoveAtIndex</a>(index);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(to, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a998f8d320f8a0d86b6be540de4877761">StatisticsHistory::Clear</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;{</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx=0; idx &lt; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>(); idx++)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>[idx], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ac3d85528ada636cae37a5474cb64b69c">Clear</a>(<span class="keyword">false</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a05d8c73c9678707ba859a44f70caccec">StatisticsHistory::GetObjectCount</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>();}</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<a class="code" href="../../db/d72/struct_s_l_net_1_1_statistics_history_1_1_tracked_object_data.xhtml">StatisticsHistory::TrackedObjectData</a> * <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ac3008a38cf3159b600d266364633eee4">StatisticsHistory::GetObjectAtIndex</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index)<span class="keyword"> const </span>{<span class="keywordflow">return</span> &amp;<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>[index]-&gt;trackedObjectData;}</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a9994d4934a554a1a066df493b64f14a1">StatisticsHistory::AddValueByObjectID</a>(<a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a> objectId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> key, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> val, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> curTime, <span class="keywordtype">bool</span> combineEqualTimes)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ac7714c4a1db3b555cde57fdfeb343be3">GetObjectIndex</a>(objectId);</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (idx == (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) -1)</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#af0ad360ea42dbebf20eb48883a1f1fde">AddValueByIndex</a>(idx, key, val, curTime, combineEqualTimes);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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;<span class="keywordtype">void</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#af0ad360ea42dbebf20eb48883a1f1fde">StatisticsHistory::AddValueByIndex</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> key, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> val, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> curTime, <span class="keywordtype">bool</span> combineEqualTimes)</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; TimeAndValueQueue *queue;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; TrackedObject *to = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>[index];</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> hi = to-&gt;dataQueues.GetIndexOf(key);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (hi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>())</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; queue = SLNet::OP_NEW&lt;TimeAndValueQueue&gt;(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; queue-&gt;key=key;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; queue-&gt;timeToTrackValues = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ad1fd9a244cd1d810ff8ec8823ccbf0a6">timeToTrack</a>;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; to-&gt;dataQueues.Push(key, queue, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; queue = to-&gt;dataQueues.ItemAtIndex(hi);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</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; TimeAndValue tav;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (combineEqualTimes==<span class="keyword">true</span> &amp;&amp; queue-&gt;values.Size()&gt;0 &amp;&amp; queue-&gt;values.PeekTail().time==curTime)</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; tav = queue-&gt;values.PopTail();</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; queue-&gt;recentSum -= tav.val;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; queue-&gt;recentSumOfSquares -= tav.val * tav.val;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; queue-&gt;longTermSum -= tav.val;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; queue-&gt;longTermCount = queue-&gt;longTermCount - 1;</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; <span class="keywordflow">else</span></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; tav.val=0.0;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; tav.time=curTime;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</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; tav.val+=val;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; queue-&gt;values.Push(tav, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</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; queue-&gt;recentSum += tav.val;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; queue-&gt;recentSumOfSquares += tav.val * tav.val;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; queue-&gt;longTermSum += tav.val;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; queue-&gt;longTermCount = queue-&gt;longTermCount + 1;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span> (queue-&gt;longTermLowest &gt; tav.val)</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; queue-&gt;longTermLowest = tav.val;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (queue-&gt;longTermHighest &lt; tav.val)</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; queue-&gt;longTermHighest = tav.val;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;}</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#aac9fa45e19af1e89020ab808d7e19484">StatisticsHistory::SHErrorCode</a> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a73e894239b9d2096b836f5678cf9d7b1">StatisticsHistory::GetHistoryForKey</a>(<a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a> objectId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> key, <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml">StatisticsHistory::TimeAndValueQueue</a> **values, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> curTime)<span class="keyword"> const</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (values == 0)</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#aac9fa45e19af1e89020ab808d7e19484a3070cf841524d2f38529c2f66a2de096">SH_INVALID_PARAMETER</a>;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ac7714c4a1db3b555cde57fdfeb343be3">GetObjectIndex</a>(objectId);</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span> (idx == (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) -1)</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#aac9fa45e19af1e89020ab808d7e19484a060f13c7ed4fb6b2561efd84808f68ab">SH_UKNOWN_OBJECT</a>;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; TrackedObject *to = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>[idx];</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> hi = to-&gt;dataQueues.GetIndexOf(key);</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (hi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>())</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#aac9fa45e19af1e89020ab808d7e19484ac21cef3a4be35ffa128ce942546bd0c9">SH_UKNOWN_KEY</a>;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; *values = to-&gt;dataQueues.ItemAtIndex(hi);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; (*values)-&gt;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#ae530c645429722c71630344521285cc4">CullExpiredValues</a>(curTime);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#aac9fa45e19af1e89020ab808d7e19484ac1e166c07d02a1fc313fb4dc74d74d2b">SH_OK</a>;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;}</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a315530670730a6bd1968eee889b49509">StatisticsHistory::GetHistorySorted</a>(<a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a> objectId, <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716">SHSortOperation</a> sortType, <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;StatisticsHistory::TimeAndValueQueue *&gt;</a> &amp;values)<span class="keyword"> const</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ac7714c4a1db3b555cde57fdfeb343be3">GetObjectIndex</a>(objectId);</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (idx == (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) -1)</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; TrackedObject *to = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>[idx];</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;TimeAndValueQueue*&gt;</a> itemList;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;RakString&gt;</a> keyList;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; to-&gt;dataQueues.GetAsList(itemList,keyList,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> curTime = <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a2de556bb780580b7b7f07e99e382818d">GetTime</a>();</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList&lt;TimeAndValueQueue*, TimeAndValueQueue*,TimeAndValueQueueCompAsc&gt;</a> sortedQueues;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i &lt; itemList.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; TimeAndValueQueue *tavq = itemList[i];</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; tavq-&gt;CullExpiredValues(curTime);</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">if</span> (sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716ad6fc43a1004b2d26b7c4b4233f9a804a">SH_SORT_BY_RECENT_SUM_ASCENDING</a> || sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a5a7947e50c570d77776a7605819d15a8">SH_SORT_BY_RECENT_SUM_DESCENDING</a>)</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; tavq-&gt;sortValue = tavq-&gt;GetRecentSum();</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a22613fd5b6a51eb0547fd094b0855c9e">SH_SORT_BY_LONG_TERM_SUM_ASCENDING</a> || sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a27ec1896e71efa11a97e68ea14ad9d56">SH_SORT_BY_LONG_TERM_SUM_DESCENDING</a>)</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; tavq-&gt;sortValue = tavq-&gt;GetLongTermSum();</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a8f6fed33cfc6c220299a2b755fa1cf7a">SH_SORT_BY_RECENT_SUM_OF_SQUARES_ASCENDING</a> || sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a37d95585e27e0b30cbf7eab617a8692b">SH_SORT_BY_RECENT_SUM_OF_SQUARES_DESCENDING</a>)</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; tavq-&gt;sortValue = tavq-&gt;GetRecentSumOfSquares();</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716aeea309cd6aa2daf517fb9fd86ab619bb">SH_SORT_BY_RECENT_AVERAGE_ASCENDING</a> || sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716aac06a4a33a1dfe5d9ed21764565645fd">SH_SORT_BY_RECENT_AVERAGE_DESCENDING</a>)</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; tavq-&gt;sortValue = tavq-&gt;GetRecentAverage();</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716aa597ce97c990aac9d1a1d08f7ccd7753">SH_SORT_BY_LONG_TERM_AVERAGE_ASCENDING</a> || sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a86a29b4714957895e351f4746a4baae6">SH_SORT_BY_LONG_TERM_AVERAGE_DESCENDING</a>)</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; tavq-&gt;sortValue = tavq-&gt;GetLongTermAverage();</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a817948ff60addfad57ec864bf3f17684">SH_SORT_BY_RECENT_HIGHEST_ASCENDING</a> || sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a73ef5ee0e36c6c679bb52ad58a1af6ed">SH_SORT_BY_RECENT_HIGHEST_DESCENDING</a>)</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; tavq-&gt;sortValue = tavq-&gt;GetRecentHighest();</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a0ee212727f6b36de6814f0a176f1b67c">SH_SORT_BY_RECENT_LOWEST_ASCENDING</a> || sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716afa526f814f8b4a9c78c1735bc0867f49">SH_SORT_BY_RECENT_LOWEST_DESCENDING</a>)</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; tavq-&gt;sortValue = tavq-&gt;GetRecentLowest();</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a1fc99ea563c53c47dcfad7d7b6f05bae">SH_SORT_BY_LONG_TERM_HIGHEST_ASCENDING</a> || sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a2bb7ea0f5dc892674cf3c00e97a6892d">SH_SORT_BY_LONG_TERM_HIGHEST_DESCENDING</a>)</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; tavq-&gt;sortValue = tavq-&gt;GetLongTermHighest();</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; tavq-&gt;sortValue = tavq-&gt;GetLongTermLowest();</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716ad6fc43a1004b2d26b7c4b4233f9a804a">SH_SORT_BY_RECENT_SUM_ASCENDING</a> ||</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a22613fd5b6a51eb0547fd094b0855c9e">SH_SORT_BY_LONG_TERM_SUM_ASCENDING</a> ||</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a8f6fed33cfc6c220299a2b755fa1cf7a">SH_SORT_BY_RECENT_SUM_OF_SQUARES_ASCENDING</a> ||</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716aeea309cd6aa2daf517fb9fd86ab619bb">SH_SORT_BY_RECENT_AVERAGE_ASCENDING</a> ||</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716aa597ce97c990aac9d1a1d08f7ccd7753">SH_SORT_BY_LONG_TERM_AVERAGE_ASCENDING</a> ||</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a817948ff60addfad57ec864bf3f17684">SH_SORT_BY_RECENT_HIGHEST_ASCENDING</a> ||</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a0ee212727f6b36de6814f0a176f1b67c">SH_SORT_BY_RECENT_LOWEST_ASCENDING</a> ||</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716a1fc99ea563c53c47dcfad7d7b6f05bae">SH_SORT_BY_LONG_TERM_HIGHEST_ASCENDING</a> ||</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; sortType == <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a437de339e4ac43809580b2932abfe716ae089d73e5c4a5ca1dc0ef0f6bc0fb20e">SH_SORT_BY_LONG_TERM_LOWEST_ASCENDING</a>)</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; sortedQueues.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a30d44cd52bdb782478472a95cc5a4b0a">Insert</a>(tavq, tavq, <span class="keyword">false</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>, TimeAndValueQueueCompAsc);</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; sortedQueues.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a30d44cd52bdb782478472a95cc5a4b0a">Insert</a>(tavq, tavq, <span class="keyword">false</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>, TimeAndValueQueueCompDesc);</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i &lt; sortedQueues.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>(); i++)</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a771fc63e3b0d892fbb605a379a78bacb" title="Push an element at the end of the stack.">Push</a>(sortedQueues[i], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a03b714a79e7b1f536c01e876a617a299">StatisticsHistory::MergeAllObjectsOnKey</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> key, TimeAndValueQueue *tavqOutput, <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1">SHDataCategory</a> dataCategory)<span class="keyword"> const</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; tavqOutput-&gt;Clear();</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> curTime = <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a2de556bb780580b7b7f07e99e382818d">GetTime</a>();</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">// Find every object with this key</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx=0; idx &lt; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>(); idx++)</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; TrackedObject *to = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>[idx];</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> hi = to-&gt;dataQueues.GetIndexOf(key);</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (hi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; TimeAndValueQueue *tavqInput = to-&gt;dataQueues.ItemAtIndex(hi);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; tavqInput-&gt;CullExpiredValues(curTime);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a7812fef44d5884a6cf0b8a022c89a787">TimeAndValueQueue::MergeSets</a>(tavqOutput, dataCategory, tavqInput, dataCategory, tavqOutput);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a28a2121938ffb3c5c4d4787b47e687bb">StatisticsHistory::GetUniqueKeyList</a>(<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;RakString&gt;</a> &amp;keys)</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;{</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; keys.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a34219a5ce92981102d06fb1da7842a6b" title="Clear the list.">Clear</a>(<span class="keyword">true</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx=0; idx &lt; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>(); idx++)</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; TrackedObject *to = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>[idx];</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;TimeAndValueQueue*&gt;</a> itemList;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;SLNet::RakString&gt;</a> keyList;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; to-&gt;dataQueues.GetAsList(itemList, keyList, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k=0; k &lt; keyList.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); k++)</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; <span class="keywordtype">bool</span> hasKey=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j=0; j &lt; keys.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); j++)</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="keywordflow">if</span> (keys[j]==keyList[k])</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; hasKey=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">break</span>;</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; }</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (hasKey==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; keys.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a771fc63e3b0d892fbb605a379a78bacb" title="Push an element at the end of the stack.">Push</a>(keyList[k], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a2031600adfe1e47f0b06d85b34507379">StatisticsHistory::TimeAndValueQueue::TimeAndValueQueue</a>()</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;{</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a998f8d320f8a0d86b6be540de4877761">Clear</a>();</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="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a1e291264d59d713cbb0f528924e3eec0">StatisticsHistory::TimeAndValueQueue::~TimeAndValueQueue</a>(){}</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a0692931d9c41701b44a84e4cd2b311ec">StatisticsHistory::TimeAndValueQueue::SetTimeToTrackValues</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> t)</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; timeToTrackValues = t;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;}</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a6962269bc89dbc985a58a7243ea6d270">StatisticsHistory::TimeAndValueQueue::GetTimeToTrackValues</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> timeToTrackValues;}</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#aedb806b4552131310ffb8eb85cd405cf">StatisticsHistory::TimeAndValueQueue::GetRecentSum</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> recentSum;}</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a2f1260ff65871d640e9184b8cff99269">StatisticsHistory::TimeAndValueQueue::GetRecentSumOfSquares</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> recentSumOfSquares;}</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a7ef0af8543ac72b72325f977fc80b37c">StatisticsHistory::TimeAndValueQueue::GetLongTermSum</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> longTermSum;}</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#adeb6ec5acd0353318ef26a893798fa42">StatisticsHistory::TimeAndValueQueue::GetRecentAverage</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>() &gt; 0)</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> recentSum / (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>();</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> 0;</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="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a9ab0af93e7e30ef2af5c51f77b02f708">StatisticsHistory::TimeAndValueQueue::GetRecentLowest</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> out = <a class="code" href="../../d3/dbf/_statistics_history_8h.xhtml#a777606409e2d05f59110446410df9c1d">SH_TYPE_MAX</a>;</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx=0; idx &lt; values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); idx++)</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (values[idx].val &lt; out)</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; out = values[idx].val;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> out;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;}</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a47e52bbe58fe57a13c0d012e5e3a5c2b">StatisticsHistory::TimeAndValueQueue::GetRecentHighest</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> out = -<a class="code" href="../../d3/dbf/_statistics_history_8h.xhtml#a777606409e2d05f59110446410df9c1d">SH_TYPE_MAX</a>;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx=0; idx &lt; values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); idx++)</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (values[idx].val &gt; out)</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; out = values[idx].val;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> out;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;}</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a82bdc01fc2d970bbb1b8bbf396937be3">StatisticsHistory::TimeAndValueQueue::GetRecentStandardDeviation</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>()==0)</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> recentMean= GetRecentAverage();</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> squareOfMean = recentMean * recentMean;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> meanOfSquares = GetRecentSumOfSquares() / (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>();</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">return</span> meanOfSquares - squareOfMean;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;}</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a0250feb3d0350c4052c464e06d398fa0">StatisticsHistory::TimeAndValueQueue::GetLongTermAverage</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (longTermCount == 0)</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> longTermSum / longTermCount;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#ae7738a392ef425a252d8e743f98c01f1">StatisticsHistory::TimeAndValueQueue::GetLongTermLowest</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> longTermLowest;}</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#ae5063532a1f198b619c0ecbe9f49b413">StatisticsHistory::TimeAndValueQueue::GetLongTermHighest</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> longTermHighest;}</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#ae252810ec81ac1d3530c5254d7ba39d7">StatisticsHistory::TimeAndValueQueue::GetTimeRange</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>()&lt;2)</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">return</span> values[values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>()-1].time - values[0].time;</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;}</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#affac472b2385d65de4e675d2b90335cd">StatisticsHistory::TimeAndValueQueue::GetSumSinceTime</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> t)<span class="keyword"> const</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> sum = 0;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i &gt; 0; --i)</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; {</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span> (values[i-1].time&gt;=t)</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; sum+=values[i-1].val;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> sum;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;}</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a7812fef44d5884a6cf0b8a022c89a787">StatisticsHistory::TimeAndValueQueue::MergeSets</a>( <span class="keyword">const</span> TimeAndValueQueue *lhs, <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1">SHDataCategory</a> lhsDataCategory, <span class="keyword">const</span> TimeAndValueQueue *rhs, <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1">SHDataCategory</a> rhsDataCategory, TimeAndValueQueue *output )</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">// Two ways to merge:</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="comment">// 1. Treat rhs as just more data points.</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">// 1A. Sums are just added. If two values have the same time, just put in queue twice</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// 1B. longTermLowest and longTermHighest are the lowest and highest of the two sets</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="comment">// </span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="comment">// 2. Add by time. If time for the other set is missing, calculate slope to extrapolate</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="comment">// 2A. Have to recalculate recentSum, recentSumOfSquares.</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="comment">// 2B. longTermSum, longTermCount, longTermLowest, longTermHighest are unknown</span></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="keywordflow">if</span> (lhs!=output)</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; output-&gt;key = lhs-&gt;key;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; output-&gt;timeToTrackValues = lhs-&gt;timeToTrackValues;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">else</span></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; output-&gt;key = rhs-&gt;key;</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; output-&gt;timeToTrackValues = rhs-&gt;timeToTrackValues;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lhsIndex, rhsIndex;</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; lhsIndex=0;</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; rhsIndex=0;</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="comment">// I use local valuesOutput in case lhs==output || rhs==output</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt;TimeAndValue&gt;</a> valuesOutput;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> (lhsDataCategory==<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1a4b213c641c05d4de3bdfa59107438b76">StatisticsHistory::DC_DISCRETE</a> &amp;&amp; rhsDataCategory==<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1a4b213c641c05d4de3bdfa59107438b76">StatisticsHistory::DC_DISCRETE</a>)</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="keywordflow">while</span> (rhsIndex &lt; rhs-&gt;values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>() &amp;&amp; lhsIndex &lt; lhs-&gt;values.Size())</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">if</span> (rhs-&gt;values[rhsIndex].time &lt; lhs-&gt;values[lhsIndex].time)</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; {</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; valuesOutput.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(rhs-&gt;values[rhsIndex], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; rhsIndex++;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs-&gt;values[rhsIndex].time &gt; lhs-&gt;values[lhsIndex].time)</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; valuesOutput.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(lhs-&gt;values[rhsIndex], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; lhsIndex++;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; {</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; valuesOutput.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(rhs-&gt;values[rhsIndex], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; rhsIndex++;</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; valuesOutput.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(lhs-&gt;values[rhsIndex], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; lhsIndex++;</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">while</span> (rhsIndex &lt; rhs-&gt;values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>())</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; valuesOutput.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(rhs-&gt;values[rhsIndex], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; rhsIndex++;</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; <span class="keywordflow">while</span> (lhsIndex &lt; lhs-&gt;values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>())</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; valuesOutput.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(lhs-&gt;values[lhsIndex], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; lhsIndex++;</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;</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; output-&gt;recentSum = lhs-&gt;recentSum + rhs-&gt;recentSum;</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; output-&gt;recentSumOfSquares = lhs-&gt;recentSumOfSquares + rhs-&gt;recentSumOfSquares;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; output-&gt;longTermSum = lhs-&gt;longTermSum + rhs-&gt;longTermSum;</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; output-&gt;longTermCount = lhs-&gt;longTermCount + rhs-&gt;longTermCount;</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span> (lhs-&gt;longTermLowest &lt; rhs-&gt;longTermLowest)</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; output-&gt;longTermLowest = lhs-&gt;longTermLowest;</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; output-&gt;longTermLowest = rhs-&gt;longTermLowest;</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (lhs-&gt;longTermHighest &gt; rhs-&gt;longTermHighest)</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; output-&gt;longTermHighest = lhs-&gt;longTermHighest;</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; output-&gt;longTermHighest = rhs-&gt;longTermHighest;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; {</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; TimeAndValue lastTimeAndValueLhs, lastTimeAndValueRhs;</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; lastTimeAndValueLhs.time=0;</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; lastTimeAndValueLhs.val=0;</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; lastTimeAndValueRhs.time=0;</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; lastTimeAndValueRhs.val=0;</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> lastSlopeLhs=0;</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> lastSlopeRhs=0;</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> timeSinceOppositeValue;</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; TimeAndValue newTimeAndValue;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">while</span> (rhsIndex &lt; rhs-&gt;values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>() &amp;&amp; lhsIndex &lt; lhs-&gt;values.Size())</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (rhs-&gt;values[rhsIndex].time &lt; lhs-&gt;values[lhsIndex].time)</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; timeSinceOppositeValue = rhs-&gt;values[rhsIndex].time - lastTimeAndValueLhs.time;</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; newTimeAndValue.val = rhs-&gt;values[rhsIndex].val + lastTimeAndValueLhs.val + lastSlopeLhs * timeSinceOppositeValue;</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; newTimeAndValue.time = rhs-&gt;values[rhsIndex].time;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; lastTimeAndValueRhs = rhs-&gt;values[rhsIndex];</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span> (rhsIndex&gt;0 &amp;&amp; rhs-&gt;values[rhsIndex].time != rhs-&gt;values[rhsIndex-1].time &amp;&amp; rhsDataCategory==<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1abad5ad3c97f0d3b796011eac204ab497">StatisticsHistory::DC_CONTINUOUS</a>)</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; lastSlopeRhs = (rhs-&gt;values[rhsIndex].val - rhs-&gt;values[rhsIndex-1].val) / (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) (rhs-&gt;values[rhsIndex].time - rhs-&gt;values[rhsIndex-1].time);</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; rhsIndex++;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs-&gt;values[lhsIndex].time &lt; rhs-&gt;values[rhsIndex].time)</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; timeSinceOppositeValue = lhs-&gt;values[lhsIndex].time - lastTimeAndValueRhs.time;</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; newTimeAndValue.val = lhs-&gt;values[lhsIndex].val + lastTimeAndValueRhs.val + lastSlopeRhs * timeSinceOppositeValue;</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; newTimeAndValue.time = lhs-&gt;values[lhsIndex].time;</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; lastTimeAndValueLhs = lhs-&gt;values[lhsIndex];</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span> (lhsIndex&gt;0 &amp;&amp; lhs-&gt;values[lhsIndex].time != lhs-&gt;values[lhsIndex-1].time &amp;&amp; lhsDataCategory==<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1abad5ad3c97f0d3b796011eac204ab497">StatisticsHistory::DC_CONTINUOUS</a>)</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; lastSlopeLhs = (lhs-&gt;values[lhsIndex].val - lhs-&gt;values[lhsIndex-1].val) / (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) (lhs-&gt;values[lhsIndex].time - lhs-&gt;values[lhsIndex-1].time);</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; lhsIndex++;</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; newTimeAndValue.val = lhs-&gt;values[lhsIndex].val + rhs-&gt;values[rhsIndex].val;</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; newTimeAndValue.time = lhs-&gt;values[lhsIndex].time;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; lastTimeAndValueRhs = rhs-&gt;values[rhsIndex];</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; lastTimeAndValueLhs = lhs-&gt;values[lhsIndex];</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (rhsIndex&gt;0 &amp;&amp; rhs-&gt;values[rhsIndex].time != rhs-&gt;values[rhsIndex-1].time &amp;&amp; rhsDataCategory==<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1abad5ad3c97f0d3b796011eac204ab497">StatisticsHistory::DC_CONTINUOUS</a>)</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; lastSlopeRhs = (rhs-&gt;values[rhsIndex].val - rhs-&gt;values[rhsIndex-1].val) / (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) (rhs-&gt;values[rhsIndex].time - rhs-&gt;values[rhsIndex-1].time);</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (lhsIndex&gt;0 &amp;&amp; lhs-&gt;values[lhsIndex].time != lhs-&gt;values[lhsIndex-1].time &amp;&amp; lhsDataCategory==<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1abad5ad3c97f0d3b796011eac204ab497">StatisticsHistory::DC_CONTINUOUS</a>)</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; lastSlopeLhs = (lhs-&gt;values[lhsIndex].val - lhs-&gt;values[lhsIndex-1].val) / (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) (lhs-&gt;values[lhsIndex].time - lhs-&gt;values[lhsIndex-1].time);</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; lhsIndex++;</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; rhsIndex++;</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; valuesOutput.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(newTimeAndValue, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">while</span> (rhsIndex &lt; rhs-&gt;values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>())</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; timeSinceOppositeValue = rhs-&gt;values[rhsIndex].time - lastTimeAndValueLhs.time;</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; newTimeAndValue.val = rhs-&gt;values[rhsIndex].val + lastTimeAndValueLhs.val + lastSlopeLhs * timeSinceOppositeValue;</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; newTimeAndValue.time = rhs-&gt;values[rhsIndex].time;</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; valuesOutput.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(newTimeAndValue, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; rhsIndex++;</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; }</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">while</span> (lhsIndex &lt; lhs-&gt;values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>())</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; timeSinceOppositeValue = lhs-&gt;values[lhsIndex].time - lastTimeAndValueRhs.time;</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; newTimeAndValue.val = lhs-&gt;values[lhsIndex].val + lastTimeAndValueRhs.val + lastSlopeRhs * timeSinceOppositeValue;</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; newTimeAndValue.time = lhs-&gt;values[lhsIndex].time;</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; valuesOutput.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(newTimeAndValue, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; lhsIndex++;</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; output-&gt;recentSum = 0;</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; output-&gt;recentSumOfSquares = 0;</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i &lt; valuesOutput.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>(); i++)</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; {</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; output-&gt;recentSum += valuesOutput[i].val;</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; output-&gt;recentSumOfSquares += valuesOutput[i].val * valuesOutput[i].val;</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; output-&gt;values = valuesOutput;</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a72ec266eef5b12beaaa98227d0c7225f">StatisticsHistory::TimeAndValueQueue::ResizeSampleSet</a>( <span class="keywordtype">int</span> maxSamples, <a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml" title="A queue implemented as an array with a read and write index.">DataStructures::Queue&lt;StatisticsHistory::TimeAndValue&gt;</a> &amp;histogram, <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1">SHDataCategory</a> dataCategory, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> timeClipStart, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> timeClipEnd )</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;{</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a481276f70b05ecba8138cd67e51509ec">Clear</a>(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">if</span> (maxSamples==0)</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> timeRange = GetTimeRange();</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (timeRange==0)</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span> (maxSamples==1)</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#dd/d08/struct_s_l_net_1_1_statistics_history_1_1_time_and_value">StatisticsHistory::TimeAndValue</a> tav;</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; tav.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> = timeRange;</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; tav.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a> = GetRecentSum();</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(tav, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> interval = timeRange / maxSamples;</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">if</span> (interval==0)</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; interval=1;</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dataIndex;</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> timeBoundary;</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#dd/d08/struct_s_l_net_1_1_statistics_history_1_1_time_and_value">StatisticsHistory::TimeAndValue</a> currentSum;</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> currentTime;</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> numSamples;</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> endTime;</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; </div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; numSamples=0;</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; endTime = values[values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>()-1].time;</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; dataIndex=0;</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; currentTime=values[0].time;</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; currentSum.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a>=0;</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; currentSum.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a>=values[0].time + interval / 2;</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; timeBoundary = values[0].time + interval;</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">while</span> (timeBoundary &lt;= endTime)</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">while</span> (dataIndex &lt; values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>() &amp;&amp; values[dataIndex].time &lt;= timeBoundary)</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; currentSum.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a> += values[dataIndex].val;</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; dataIndex++;</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; numSamples++;</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (dataCategory==<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a7b449e2d3b799cc176d241597072d2f1abad5ad3c97f0d3b796011eac204ab497">DC_CONTINUOUS</a>)</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">if</span> (dataIndex &gt; 0 &amp;&amp;</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; dataIndex &lt; values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>() &amp;&amp;</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; values[dataIndex-1].time &lt; timeBoundary &amp;&amp;</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; values[dataIndex].time &gt; timeBoundary)</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; {</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> interpolatedValue = Interpolate(values[dataIndex-1], values[dataIndex], timeBoundary);</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; currentSum.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a>+=interpolatedValue;</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; numSamples++;</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">if</span> (numSamples &gt; 1)</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; currentSum.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a> /= numSamples;</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; }</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(currentSum, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; currentSum.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a>=timeBoundary + interval / 2;</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; timeBoundary += interval;</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; currentSum.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a>=0;</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; numSamples=0;</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; </div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> ( timeClipStart!=0 &amp;&amp; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>()&gt;=1)</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; timeClipStart = histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a5e9c9de11d2dd84320d2f7c9408b80b1">Peek</a>().<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a>+timeClipStart;</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">if</span> (histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a868069bfcac2e9d9294dadcd74bbe96c">PeekTail</a>().<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> &lt; timeClipStart)</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a481276f70b05ecba8138cd67e51509ec">Clear</a>(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; }</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>()&gt;=2 &amp;&amp; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a5e9c9de11d2dd84320d2f7c9408b80b1">Peek</a>().<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> &lt; timeClipStart)</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#dd/d08/struct_s_l_net_1_1_statistics_history_1_1_time_and_value">StatisticsHistory::TimeAndValue</a> tav;</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">do</span></div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; tav = histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a25272370e684388afd807c5369e4ef87">Pop</a>();</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a5e9c9de11d2dd84320d2f7c9408b80b1">Peek</a>().<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> == timeClipStart)</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; {</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; }</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a5e9c9de11d2dd84320d2f7c9408b80b1">Peek</a>().<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> &gt; timeClipStart)</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#dd/d08/struct_s_l_net_1_1_statistics_history_1_1_time_and_value">StatisticsHistory::TimeAndValue</a> tav2;</div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; tav2.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a> = <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a5e669a17bd03174203eebac10ac39b4f">StatisticsHistory::TimeAndValueQueue::Interpolate</a>(tav, histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a5e9c9de11d2dd84320d2f7c9408b80b1">Peek</a>(), timeClipStart);</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; tav2.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a>=timeClipStart;</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a3980613e44a80982708b9d1f49fa0fea">PushAtHead</a>(tav2, 0, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; } <span class="keywordflow">while</span> (histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>()&gt;=2);</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span> ( timeClipEnd!=0 &amp;&amp; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>()&gt;=1)</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; timeClipEnd = histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a868069bfcac2e9d9294dadcd74bbe96c">PeekTail</a>().<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a>-timeClipEnd;</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">if</span> (histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a5e9c9de11d2dd84320d2f7c9408b80b1">Peek</a>().<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> &gt; timeClipEnd)</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a481276f70b05ecba8138cd67e51509ec">Clear</a>(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>()&gt;=2 &amp;&amp; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a868069bfcac2e9d9294dadcd74bbe96c">PeekTail</a>().<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> &gt; timeClipEnd)</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; {</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#dd/d08/struct_s_l_net_1_1_statistics_history_1_1_time_and_value">StatisticsHistory::TimeAndValue</a> tav;</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">do</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; {</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; tav = histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#aea8839196a7bb3453a8a8b0606ce71a1">PopTail</a>();</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a868069bfcac2e9d9294dadcd74bbe96c">PeekTail</a>().<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> == timeClipEnd)</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; {</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a868069bfcac2e9d9294dadcd74bbe96c">PeekTail</a>().<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> &lt; timeClipEnd)</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; {</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#dd/d08/struct_s_l_net_1_1_statistics_history_1_1_time_and_value">StatisticsHistory::TimeAndValue</a> tav2;</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; tav2.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a> = <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a5e669a17bd03174203eebac10ac39b4f">StatisticsHistory::TimeAndValueQueue::Interpolate</a>(tav, histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a868069bfcac2e9d9294dadcd74bbe96c">PeekTail</a>(), timeClipEnd);</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; tav2.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a>=timeClipEnd;</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(tav2, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; }</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; } <span class="keywordflow">while</span> (histogram.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>()&gt;=2);</div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; }</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;}</div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#ae530c645429722c71630344521285cc4">StatisticsHistory::TimeAndValueQueue::CullExpiredValues</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> curTime)</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;{</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">while</span> (values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>())</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; {</div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#dd/d08/struct_s_l_net_1_1_statistics_history_1_1_time_and_value">StatisticsHistory::TimeAndValue</a> tav = values.Peek();</div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">if</span> (curTime - tav.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> &gt; timeToTrackValues)</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; {</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; recentSum -= tav.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a>;</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; recentSumOfSquares -= tav.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a> * tav.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a>;</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a9be46e78d21543bf28bd473807160024" title="Pop an element from the end of the stack.">Pop</a>();</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; {</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;}</div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a5e669a17bd03174203eebac10ac39b4f">StatisticsHistory::TimeAndValueQueue::Interpolate</a>(<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#dd/d08/struct_s_l_net_1_1_statistics_history_1_1_time_and_value">StatisticsHistory::TimeAndValue</a> t1, <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#dd/d08/struct_s_l_net_1_1_statistics_history_1_1_time_and_value">StatisticsHistory::TimeAndValue</a> t2, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> time)</div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;{</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span> (t2.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a>==t1.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a>)</div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">return</span> (t1.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a> + t2.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a>) / 2;</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="comment">// if (t2.time &gt; t1.time)</span></div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="comment">// {</span></div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a> slope = (t2.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a> - t1.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a>) / ((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) t2.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a> - (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) t1.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a70ccc92b1848b9bb6af59b324d2981d7">time</a>);</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">return</span> t1.<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a56426f42befe03e378f2fc43e1c7d88c">val</a> + slope * ((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) time - (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) t1.time);</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="comment">// }</span></div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="comment">// else</span></div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="comment">// {</span></div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="comment">// SHValueType slope = (t1.val - t2.val) / (SHValueType) (t1.time - t2.time);</span></div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="comment">// return t2.val + slope * (SHValueType) (time - t2.time);</span></div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="comment">// }</span></div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;}</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml" title="Input numerical values over time. Get sum, average, highest, lowest, standard deviation on recent or ...">StatisticsHistory</a>::TimeAndValueQueue::<a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a998f8d320f8a0d86b6be540de4877761">Clear</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;{</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; recentSum = 0;</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; recentSumOfSquares = 0;</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; longTermSum = 0;</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; longTermCount = 0;</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; longTermLowest = <a class="code" href="../../d3/dbf/_statistics_history_8h.xhtml#a777606409e2d05f59110446410df9c1d">SH_TYPE_MAX</a>;</div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; longTermHighest = -<a class="code" href="../../d3/dbf/_statistics_history_8h.xhtml#a777606409e2d05f59110446410df9c1d">SH_TYPE_MAX</a>;</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; values.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a34219a5ce92981102d06fb1da7842a6b" title="Clear the list.">Clear</a>(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;}</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml">StatisticsHistory::TimeAndValueQueue</a>&amp; <a class="code" href="../../d6/d4f/struct_s_l_net_1_1_statistics_history_1_1_time_and_value_queue.xhtml#a9bff8c0cd0ebdbeb51b314908869b3ec">StatisticsHistory::TimeAndValueQueue::operator = </a>( <span class="keyword">const</span> TimeAndValueQueue&amp; input )</div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;{</div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; values=input.values;</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; timeToTrackValues=input.timeToTrackValues;</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; key=input.key;</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; recentSum=input.recentSum;</div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; recentSumOfSquares=input.recentSumOfSquares;</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; longTermSum=input.longTermSum;</div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; longTermCount=input.longTermCount;</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; longTermLowest=input.longTermLowest;</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; longTermHighest=input.longTermHighest;</div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;}</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<a class="code" href="../../d2/d8a/struct_s_l_net_1_1_statistics_history_1_1_tracked_object.xhtml#a9b90417863fd006c991a84bdc886946d">StatisticsHistory::TrackedObject::TrackedObject</a>() {}</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;<a class="code" href="../../d2/d8a/struct_s_l_net_1_1_statistics_history_1_1_tracked_object.xhtml#a8b564db98d76edcfcb53874055c7faf6">StatisticsHistory::TrackedObject::~TrackedObject</a>()</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;{</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;StatisticsHistory::TimeAndValueQueue*&gt;</a> itemList;</div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;RakString&gt;</a> keyList;</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx=0; idx &lt; itemList.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); idx++)</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(itemList[idx], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;}</div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#ac7714c4a1db3b555cde57fdfeb343be3">StatisticsHistory::GetObjectIndex</a>(<a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a> objectId)<span class="keyword"> const</span></div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../d4/d5b/class_s_l_net_1_1_statistics_history.xhtml#a8bf367490059dde2bd637a7a9ea0c1d4">objects</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(objectId, &amp;objectExists);</div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span> (objectExists)</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">return</span> idx;</div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) -1;</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;}</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a94f1fdc87508f2d30ccda43e5668dbf0">StatisticsHistoryPlugin::StatisticsHistoryPlugin</a>()</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;{</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; addNewConnections = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; removeLostConnections = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; newConnectionsObjectType = 0;</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;}</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a827569d76844b2d89508776426d27faa">StatisticsHistoryPlugin::~StatisticsHistoryPlugin</a>()</div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;{</div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;}</div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a35489f1f197eeb6acb625ebe62cec4ac">StatisticsHistoryPlugin::SetTrackConnections</a>(<span class="keywordtype">bool</span> _addNewConnections, <span class="keywordtype">int</span> _newConnectionsObjectType, <span class="keywordtype">bool</span> _removeLostConnections)</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;{</div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; addNewConnections = _addNewConnections;</div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; removeLostConnections = _removeLostConnections;</div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; newConnectionsObjectType = _newConnectionsObjectType;</div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;}</div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a0851a28b2628da19da644a0603e87565" title="Update is called every time a packet is checked for .">StatisticsHistoryPlugin::Update</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;{</div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;SystemAddress&gt;</a> addresses;</div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;RakNetGUID&gt;</a> guids;</div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;RakNetStatistics&gt;</a> stats;</div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; rakPeerInterface-&gt;GetStatisticsList(addresses, guids, stats);</div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">Time</a> curTime = <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a2de556bb780580b7b7f07e99e382818d">GetTime</a>();</div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; guids.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); idx++)</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; {</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> objectIndex = statistics.GetObjectIndex(guids[idx].g);</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">if</span> (objectIndex!=(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)-1)</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; {</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; statistics.AddValueByIndex(objectIndex,</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="stringliteral">&quot;RN_ACTUAL_BYTES_SENT&quot;</span>,</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) stats[idx].valueOverLastSecond[<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4957d87c7d01c02ee3365ea01aec40aca4b1565e630dc9ebff06d02649916c104" title="How many actual bytes were sent, including per-message and per-datagram overhead, and reliable messag...">ACTUAL_BYTES_SENT</a>],</div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; curTime, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; statistics.AddValueByIndex(objectIndex,</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="stringliteral">&quot;RN_USER_MESSAGE_BYTES_RESENT&quot;</span>,</div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) stats[idx].valueOverLastSecond[<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4957d87c7d01c02ee3365ea01aec40aca65babf3cbcac908eee4e950a5eb74e22" title="How many user message bytes were resent. A message is resent if it is marked as reliable, and either the message didn&#39;t arrive or the message ack didn&#39;t arrive.">USER_MESSAGE_BYTES_RESENT</a>],</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; curTime, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; statistics.AddValueByIndex(objectIndex,</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="stringliteral">&quot;RN_ACTUAL_BYTES_RECEIVED&quot;</span>,</div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) stats[idx].valueOverLastSecond[<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4957d87c7d01c02ee3365ea01aec40aca17bea4f08c3fc293454388eacfbd192f" title="How many actual bytes were received, including overead and acks.">ACTUAL_BYTES_RECEIVED</a>],</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; curTime, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;</div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; statistics.AddValueByIndex(objectIndex,</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="stringliteral">&quot;RN_USER_MESSAGE_BYTES_PUSHED&quot;</span>,</div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) stats[idx].valueOverLastSecond[<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4957d87c7d01c02ee3365ea01aec40acafaa8c0be40e6ed5777d80527fb211d68" title="How many bytes per pushed via a call to RakPeerInterface::Send()">USER_MESSAGE_BYTES_PUSHED</a>],</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; curTime, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; statistics.AddValueByIndex(objectIndex,</div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="stringliteral">&quot;RN_USER_MESSAGE_BYTES_RECEIVED_PROCESSED&quot;</span>,</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) stats[idx].valueOverLastSecond[<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4957d87c7d01c02ee3365ea01aec40aca41472c29531c4b5e02220b63cc55cf94" title="How many user message bytes were received, and returned to the user successfully.">USER_MESSAGE_BYTES_RECEIVED_PROCESSED</a>],</div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; curTime, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;</div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; statistics.AddValueByIndex(objectIndex,</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="stringliteral">&quot;RN_lastPing&quot;</span>,</div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) rakPeerInterface-&gt;GetLastPing(guids[idx]),</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; curTime, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;</div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; statistics.AddValueByIndex(objectIndex,</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="stringliteral">&quot;RN_bytesInResendBuffer&quot;</span>,</div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) stats[idx].bytesInResendBuffer,</div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; curTime, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; </div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; statistics.AddValueByIndex(objectIndex,</div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="stringliteral">&quot;RN_packetlossLastSecond&quot;</span>,</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#abadcff7b9a7a60aecb46b6bea5b142ca">SHValueType</a>) stats[idx].packetlossLastSecond,</div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; curTime, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; }</div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; }</div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="comment"> RakNetStatistics rns;</span></div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="comment"> DataStructures::List&lt;SystemAddress&gt; addresses;</span></div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="comment"> DataStructures::List&lt;RakNetGUID&gt; guids;</span></div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;<span class="comment"> rakPeerInterface-&gt;GetSystemList(addresses, guids);</span></div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;<span class="comment"> for (unsigned int idx = 0; idx &lt; guids.Size(); idx++)</span></div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;<span class="comment"> rakPeerInterface-&gt;GetStatistics(remoteSystems[idx], &amp;rns);</span></div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;<span class="comment"> statistics.AddValue();</span></div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;<span class="comment"> bool AddValue(uint64_t objectId, RakString key, SHValueType val, Time curTime);</span></div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;}</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;<span class="comment">void StatisticsHistoryPlugin::OnDirectSocketSend(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)</span></div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<span class="comment"> // Would have to use GetGuidFromSystemAddress for every send</span></div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;<span class="comment">}</span></div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;<span class="comment">void StatisticsHistoryPlugin::OnDirectSocketReceive(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)</span></div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;<span class="comment">}</span></div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#aa837c3d5c5e20003c5837a422e44056d">StatisticsHistoryPlugin::OnClosedConnection</a>(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID, <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga4d3ac5ca8821fadad6d22d0267e06803">PI2_LostConnectionReason</a> lostConnectionReason )</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;{</div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; (void) lostConnectionReason;</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; (void) systemAddress;</div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;</div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">if</span> (removeLostConnections)</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; {</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; statistics.RemoveObject(rakNetGUID.<a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml#a4e529b54617b8fdfd21da8aca09f88e2">g</a>, 0);</div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; }</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;}</div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#ae85b0d06b0b745f3dbd392bbdf0b8a25">StatisticsHistoryPlugin::OnNewConnection</a>(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID, <span class="keywordtype">bool</span> isIncoming)</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;{</div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; (void) systemAddress;</div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; (void) isIncoming;</div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;</div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">if</span> (addNewConnections)</div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; statistics.AddObject(<a class="code" href="../../db/d72/struct_s_l_net_1_1_statistics_history_1_1_tracked_object_data.xhtml">StatisticsHistory::TrackedObjectData</a>(rakNetGUID.<a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml#a4e529b54617b8fdfd21da8aca09f88e2">g</a>, newConnectionsObjectType, 0));</div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;}</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;<span class="comment">// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;<span class="preprocessor">#endif // _RAKNET_SUPPORT_StatisticsHistory==1</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/da6/_statistics_history_8cpp.xhtml">StatisticsHistory.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:47 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
var _variadic_s_q_l_parser_8cpp =
[
[ "GetTypeMappingIndex", "d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a40e23accf6b537d39c845a706dbd0939", null ],
[ "NUM_TYPE_MAPPINGS", "d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a99dc61c43488c10c05fab385c458beb3", null ],
[ "typeMappings", "d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a2eb2cf12967ff0c7404029154c9bbe99", null ]
];

View File

@ -0,0 +1,208 @@
<!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"/>
<title>SLikeNet: Source/src/VariadicSQLParser.cpp File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/db0/_variadic_s_q_l_parser_8cpp.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">VariadicSQLParser.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../dc/da9/_variadic_s_q_l_parser_8h_source.xhtml">slikenet/VariadicSQLParser.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/dc3/_bit_stream_8h_source.xhtml">slikenet/BitStream.h</a>&quot;</code><br/>
<code>#include &lt;stdarg.h&gt;</code><br/>
</div>
<p><a href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a40e23accf6b537d39c845a706dbd0939"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a40e23accf6b537d39c845a706dbd0939">GetTypeMappingIndex</a> (char c)</td></tr>
<tr class="separator:a40e23accf6b537d39c845a706dbd0939"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a99dc61c43488c10c05fab385c458beb3"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a99dc61c43488c10c05fab385c458beb3">NUM_TYPE_MAPPINGS</a> =7</td></tr>
<tr class="separator:a99dc61c43488c10c05fab385c458beb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2eb2cf12967ff0c7404029154c9bbe99"><td class="memItemLeft" align="right" valign="top">TypeMapping&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a2eb2cf12967ff0c7404029154c9bbe99">typeMappings</a> [<a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a99dc61c43488c10c05fab385c458beb3">NUM_TYPE_MAPPINGS</a>]</td></tr>
<tr class="separator:a2eb2cf12967ff0c7404029154c9bbe99"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a40e23accf6b537d39c845a706dbd0939"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int GetTypeMappingIndex </td>
<td>(</td>
<td class="paramtype">char&#160;</td>
<td class="paramname"><em>c</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml">VariadicSQLParser.cpp</a>.</p>
<p>References <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml#l00027">NUM_TYPE_MAPPINGS</a>, and <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml#l00028">typeMappings</a>.</p>
<p>Referenced by <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml#l00050">VariadicSQLParser::GetTypeMappingIndices()</a>.</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="a99dc61c43488c10c05fab385c458beb3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const int NUM_TYPE_MAPPINGS =7</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml#l00027">27</a> of file <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml">VariadicSQLParser.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml#l00038">GetTypeMappingIndex()</a>.</p>
</div>
</div>
<a class="anchor" id="a2eb2cf12967ff0c7404029154c9bbe99"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TypeMapping typeMappings[<a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a99dc61c43488c10c05fab385c458beb3">NUM_TYPE_MAPPINGS</a>]</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div>
<div class="line">{</div>
<div class="line"> {<span class="charliteral">&#39;i&#39;</span>, <span class="stringliteral">&quot;int&quot;</span>},</div>
<div class="line"> {<span class="charliteral">&#39;d&#39;</span>, <span class="stringliteral">&quot;int&quot;</span>},</div>
<div class="line"> {<span class="charliteral">&#39;s&#39;</span>, <span class="stringliteral">&quot;text&quot;</span>},</div>
<div class="line"> {<span class="charliteral">&#39;b&#39;</span>, <span class="stringliteral">&quot;bool&quot;</span>},</div>
<div class="line"> {<span class="charliteral">&#39;f&#39;</span>, <span class="stringliteral">&quot;numeric&quot;</span>},</div>
<div class="line"> {<span class="charliteral">&#39;g&#39;</span>, <span class="stringliteral">&quot;double precision&quot;</span>},</div>
<div class="line"> {<span class="charliteral">&#39;a&#39;</span>, <span class="stringliteral">&quot;bytea&quot;</span>},</div>
<div class="line">}</div>
</div><!-- fragment -->
<p>Definition at line <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml#l00028">28</a> of file <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml">VariadicSQLParser.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml#l00075">VariadicSQLParser::ExtractArguments()</a>, <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml#l00046">VariadicSQLParser::GetTypeMappingAtIndex()</a>, and <a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp_source.xhtml#l00038">GetTypeMappingIndex()</a>.</p>
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml">VariadicSQLParser.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,286 @@
<!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"/>
<title>SLikeNet: Source/src/VariadicSQLParser.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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/db0/_variadic_s_q_l_parser_8cpp_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">VariadicSQLParser.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/da9/_variadic_s_q_l_parser_8h.xhtml">slikenet/VariadicSQLParser.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/dc3/_bit_stream_8h.xhtml" title="This class allows you to write and read native types as a string of bits.">slikenet/BitStream.h</a>&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">using namespace </span>VariadicSQLParser;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">struct </span>TypeMapping</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">char</span> inputType;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *type;</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"><a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a99dc61c43488c10c05fab385c458beb3"> 27</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a99dc61c43488c10c05fab385c458beb3">NUM_TYPE_MAPPINGS</a>=7;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a2eb2cf12967ff0c7404029154c9bbe99"> 28</a></span>&#160;TypeMapping <a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a2eb2cf12967ff0c7404029154c9bbe99">typeMappings</a>[<a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a99dc61c43488c10c05fab385c458beb3">NUM_TYPE_MAPPINGS</a>] =</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {<span class="charliteral">&#39;i&#39;</span>, <span class="stringliteral">&quot;int&quot;</span>},</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {<span class="charliteral">&#39;d&#39;</span>, <span class="stringliteral">&quot;int&quot;</span>},</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {<span class="charliteral">&#39;s&#39;</span>, <span class="stringliteral">&quot;text&quot;</span>},</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {<span class="charliteral">&#39;b&#39;</span>, <span class="stringliteral">&quot;bool&quot;</span>},</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {<span class="charliteral">&#39;f&#39;</span>, <span class="stringliteral">&quot;numeric&quot;</span>},</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {<span class="charliteral">&#39;g&#39;</span>, <span class="stringliteral">&quot;double precision&quot;</span>},</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {<span class="charliteral">&#39;a&#39;</span>, <span class="stringliteral">&quot;bytea&quot;</span>},</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;};</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a40e23accf6b537d39c845a706dbd0939"> 38</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a40e23accf6b537d39c845a706dbd0939">GetTypeMappingIndex</a>(<span class="keywordtype">char</span> c)</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; (<span class="keywordtype">unsigned</span> int) <a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a99dc61c43488c10c05fab385c458beb3">NUM_TYPE_MAPPINGS</a>; i++ )</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a2eb2cf12967ff0c7404029154c9bbe99">typeMappings</a>[i].inputType==c)</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> i;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)-1;</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"><a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#a4ed55da72e30a870bf5f3330ac729afd"> 46</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#a4ed55da72e30a870bf5f3330ac729afd">VariadicSQLParser::GetTypeMappingAtIndex</a>(<span class="keywordtype">int</span> i)</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a2eb2cf12967ff0c7404029154c9bbe99">typeMappings</a>[i].type;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#a0bd6079d53e7682a3db950b9fbd135bf"> 50</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#a0bd6079d53e7682a3db950b9fbd135bf">VariadicSQLParser::GetTypeMappingIndices</a>( <span class="keyword">const</span> <span class="keywordtype">char</span> *format, <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;IndexAndType&gt;</a> &amp;indices )</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; <span class="keywordtype">bool</span> previousCharWasPercentSign;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> typeMappingIndex;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; indices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a34219a5ce92981102d06fb1da7842a6b" title="Clear the list.">Clear</a>(<span class="keyword">false</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = (<span class="keywordtype">unsigned</span> int) strlen(format);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; previousCharWasPercentSign=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; len; i++)</div>
<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; <span class="keywordflow">if</span> (previousCharWasPercentSign==<span class="keyword">true</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; typeMappingIndex = <a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a40e23accf6b537d39c845a706dbd0939">GetTypeMappingIndex</a>(format[i]);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> (typeMappingIndex!=(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) -1)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#de/d0f/struct_variadic_s_q_l_parser_1_1_index_and_type">IndexAndType</a> iat;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; iat.<a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#aac47b5fb94abaa046821cd7c422a7708">strIndex</a>=i-1;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; iat.<a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#a2b3dd0aa69baa4626c2fb2aa0c09109c">typeMappingIndex</a>=typeMappingIndex;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; indices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(iat, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; previousCharWasPercentSign=format[i]==<span class="charliteral">&#39;%&#39;</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"><a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#a0341ca389a63b8a76acbed14c5d6161b"> 75</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#a0341ca389a63b8a76acbed14c5d6161b">VariadicSQLParser::ExtractArguments</a>( va_list argptr, <span class="keyword">const</span> <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;IndexAndType&gt;</a> &amp;indices, <span class="keywordtype">char</span> ***argumentBinary, <span class="keywordtype">int</span> **argumentLengths )</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="keywordflow">if</span> (indices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>()==0)</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; *argumentBinary= SLNet::OP_NEW_ARRAY&lt;char *&gt;(indices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; *argumentLengths= SLNet::OP_NEW_ARRAY&lt;int&gt;(indices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<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="keywordtype">char</span> **paramData=*argumentBinary;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">int</span> *paramLength=*argumentLengths;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">int</span> variadicArgIndex;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">for</span> (variadicArgIndex=0, i=0; i &lt; indices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++, variadicArgIndex++)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml#a2eb2cf12967ff0c7404029154c9bbe99">typeMappings</a>[indices[i].typeMappingIndex].inputType)</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">case</span> <span class="charliteral">&#39;i&#39;</span>:</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;d&#39;</span>:</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">int</span> val = va_arg( argptr, <span class="keywordtype">int</span> );</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; paramLength[i]=<span class="keyword">sizeof</span>(val);</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; paramData[i]=(<span class="keywordtype">char</span>*) <a class="code" href="../../d9/d4c/_rak_memory_override_8cpp.xhtml#aebeb2e4754399ea3e2c7af3dd9bbe8c3">rakMalloc_Ex</a>(paramLength[i], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; memcpy(paramData[i], &amp;val, paramLength[i]);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#ae15a547910af2c67bf6398ae1995cfb6">SLNet::BitStream::IsNetworkOrder</a>()==<span class="keyword">false</span>) <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a3ba4c1a60776e63dcf17396b536d3fe8">SLNet::BitStream::ReverseBytesInPlace</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) paramData[i], paramLength[i]);</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">break</span>;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;s&#39;</span>:</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">char</span>* val = va_arg( argptr, <span class="keywordtype">char</span>* );</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; paramLength[i]=(int) strlen(val);</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; paramData[i]=(<span class="keywordtype">char</span>*) <a class="code" href="../../d9/d4c/_rak_memory_override_8cpp.xhtml#aebeb2e4754399ea3e2c7af3dd9bbe8c3">rakMalloc_Ex</a>(paramLength[i]+1, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; memcpy(paramData[i], val, paramLength[i]+1);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;b&#39;</span>:</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">bool</span> val = (va_arg( argptr, <span class="keywordtype">int</span> )!=0);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; paramLength[i]=<span class="keyword">sizeof</span>(val);</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; paramData[i]=(<span class="keywordtype">char</span>*) <a class="code" href="../../d9/d4c/_rak_memory_override_8cpp.xhtml#aebeb2e4754399ea3e2c7af3dd9bbe8c3">rakMalloc_Ex</a>(paramLength[i], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; memcpy(paramData[i], &amp;val, paramLength[i]);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#ae15a547910af2c67bf6398ae1995cfb6">SLNet::BitStream::IsNetworkOrder</a>()==<span class="keyword">false</span>) <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a3ba4c1a60776e63dcf17396b536d3fe8">SLNet::BitStream::ReverseBytesInPlace</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) paramData[i], paramLength[i]);</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> case &#39;f&#39;:</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> // On MSVC at least, this only works with double as the 2nd param</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> float val = (float) va_arg( argptr, double );</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> //float val = va_arg( argptr, float );</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> paramLength[i]=sizeof(val);</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> paramData[i]=(char*) rakMalloc_Ex(paramLength[i], _FILE_AND_LINE_);</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> memcpy(paramData[i], &amp;val, paramLength[i]);</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> if (SLNet::BitStream::IsNetworkOrder()==false) SLNet::BitStream::ReverseBytesInPlace((unsigned char*) paramData[i], paramLength[i]);</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> break;</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">// On MSVC at least, this only works with double as the 2nd param</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;f&#39;</span>:</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;g&#39;</span>:</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">double</span> val = va_arg( argptr, <span class="keywordtype">double</span> );</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; paramLength[i]=<span class="keyword">sizeof</span>(val);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; paramData[i]=(<span class="keywordtype">char</span>*) <a class="code" href="../../d9/d4c/_rak_memory_override_8cpp.xhtml#aebeb2e4754399ea3e2c7af3dd9bbe8c3">rakMalloc_Ex</a>(paramLength[i], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; memcpy(paramData[i], &amp;val, paramLength[i]);</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#ae15a547910af2c67bf6398ae1995cfb6">SLNet::BitStream::IsNetworkOrder</a>()==<span class="keyword">false</span>) <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a3ba4c1a60776e63dcf17396b536d3fe8">SLNet::BitStream::ReverseBytesInPlace</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) paramData[i], paramLength[i]);</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">break</span>;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;a&#39;</span>:</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="keywordtype">char</span>* val = va_arg( argptr, <span class="keywordtype">char</span>* );</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; paramLength[i]=va_arg( argptr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> );</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; paramData[i]=(<span class="keywordtype">char</span>*) <a class="code" href="../../d9/d4c/_rak_memory_override_8cpp.xhtml#aebeb2e4754399ea3e2c7af3dd9bbe8c3">rakMalloc_Ex</a>(paramLength[i], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; memcpy(paramData[i], val, paramLength[i]);</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</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"><a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#a722f357d6841bef7839746a3ed3f5852"> 155</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/d4e/namespace_variadic_s_q_l_parser.xhtml#a722f357d6841bef7839746a3ed3f5852">VariadicSQLParser::FreeArguments</a>(<span class="keyword">const</span> <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;IndexAndType&gt;</a> &amp;indices, <span class="keywordtype">char</span> **argumentBinary, <span class="keywordtype">int</span> *argumentLengths)</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (indices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>()==0)</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; indices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="../../d9/d4c/_rak_memory_override_8cpp.xhtml#ab91fbe0570bf501cd97a53c6cffcef8f">rakFree_Ex</a>(argumentBinary[i],<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acd53258ab2c0b731df325c91b2e85c9b">SLNet::OP_DELETE_ARRAY</a>(argumentBinary,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acd53258ab2c0b731df325c91b2e85c9b">SLNet::OP_DELETE_ARRAY</a>(argumentLengths,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/db0/_variadic_s_q_l_parser_8cpp.xhtml">VariadicSQLParser.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,31 @@
var defines_8h =
[
[ "__GET_TIME_64BIT", "d8/db0/defines_8h.xhtml#a4c23e8c041f09fc9601bcd2bc51ae934", null ],
[ "_FILE_AND_LINE_", "d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871", null ],
[ "_USE_RAK_MEMORY_OVERRIDE", "d8/db0/defines_8h.xhtml#a3742ef842faba0fdf7ee8b233e02189b", null ],
[ "BITSTREAM_STACK_ALLOCATION_SIZE", "d8/db0/defines_8h.xhtml#a5f7107c4f34b970ba209b48abfd7ae70", null ],
[ "BUFFERED_PACKETS_PAGE_SIZE", "d8/db0/defines_8h.xhtml#a419d19919ba0d7e85cd836bee64a5c87", null ],
[ "DATAGRAM_MESSAGE_ID_ARRAY_LENGTH", "d8/db0/defines_8h.xhtml#ab317fdfccccc36c15ea2ba0f3d6f2b10", null ],
[ "GET_TIME_SPIKE_LIMIT", "d8/db0/defines_8h.xhtml#a0dd271c1904495024a10d9fab4600681", null ],
[ "INTERNAL_PACKET_PAGE_SIZE", "d8/db0/defines_8h.xhtml#a39dc00e80eb120ac177e55f2f509758d", null ],
[ "MAX_ALLOCA_STACK_ALLOCATION", "d8/db0/defines_8h.xhtml#a6bf2bc2d4ea6acbcd9e3da316d56cd95", null ],
[ "MAXIMUM_NUMBER_OF_INTERNAL_IDS", "d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80", null ],
[ "OPEN_SSL_CLIENT_SUPPORT", "d8/db0/defines_8h.xhtml#a887f5e6850c876435993a42b7a27358b", null ],
[ "PREALLOCATE_LARGE_MESSAGES", "d8/db0/defines_8h.xhtml#af0baf244b8f59c91d0e70cdbe99721fa", null ],
[ "RakAssert", "d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368", null ],
[ "RAKNET_DEBUG_PRINTF", "d8/db0/defines_8h.xhtml#a2a5d867f7ae6521f217847a78f17ab4a", null ],
[ "RAKNET_DEBUG_TPRINTF", "d8/db0/defines_8h.xhtml#a29cf458f7287265fc1b414c3f72fa9ad", null ],
[ "RAKNET_SUPPORT_IPV6", "d8/db0/defines_8h.xhtml#a48a3e5cd2e22f7d71c1373656e80d2ef", null ],
[ "RAKPEER_USER_THREADED", "d8/db0/defines_8h.xhtml#af6b967c7c085fb3a418932360cfffe25", null ],
[ "RAKSTRING_TYPE", "d8/db0/defines_8h.xhtml#a13ec6b700b7112c1726788c3ae8317e1", null ],
[ "RAKSTRING_TYPE_IS_UNICODE", "d8/db0/defines_8h.xhtml#a13b0d29f2a8ccb7f23cbdea648f1286b", null ],
[ "RESEND_BUFFER_ARRAY_LENGTH", "d8/db0/defines_8h.xhtml#af1cb26d5d5b8bbb60367a848ee905ade", null ],
[ "RESEND_BUFFER_ARRAY_MASK", "d8/db0/defines_8h.xhtml#a3abde4cfe6a8c3a20ce719c1cad27a07", null ],
[ "RPC4_GLOBAL_REGISTRATION_MAX_FUNCTION_NAME_LENGTH", "d8/db0/defines_8h.xhtml#afbacf5808b1cd387e42d32823cafa5b8", null ],
[ "RPC4_GLOBAL_REGISTRATION_MAX_FUNCTIONS", "d8/db0/defines_8h.xhtml#aeed5dc2e94045a66017b9cf04488aa6f", null ],
[ "SLNET_MAX_RETRIEVABLE_FILESIZE", "d8/db0/defines_8h.xhtml#a69f86bebc837357076fea17426799455", null ],
[ "USE_ALLOCA", "d8/db0/defines_8h.xhtml#add1080711227ddca8bcc85a3976c989b", null ],
[ "USE_SLIDING_WINDOW_CONGESTION_CONTROL", "d8/db0/defines_8h.xhtml#aee2e1bf9d15e3408ca6c75897a5d8249", null ],
[ "USE_WAIT_FOR_MULTIPLE_EVENTS", "d8/db0/defines_8h.xhtml#ab8f9344fbb8569309f4b11df52aad058", null ],
[ "XBOX_BYPASS_SECURITY", "d8/db0/defines_8h.xhtml#a11301b7eb6a7cb30f78afdbc98e1f33c", null ]
];

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,339 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/defines.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/db0/defines_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">defines.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/db0/defines_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2018, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#ifndef __RAKNET_DEFINES_H</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __RAKNET_DEFINES_H</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#ifdef _RETAIL</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"></span><span class="comment">// retail builds imply release configurations</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#define _RELEASE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// If you want to change these defines, put them in RakNetDefinesOverrides so your changes are not lost when updating RakNet</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// The user should not edit this file</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/dc9/defineoverrides_8h.xhtml">defineoverrides.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#ifndef __GET_TIME_64BIT</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a4c23e8c041f09fc9601bcd2bc51ae934"> 33</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __GET_TIME_64BIT 1</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">// Define _FILE_AND_LINE_ to &quot;&quot;,0 if you want to strip out file and line info for memory tracking from the EXE</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// SWIG: This macro must be excluded from generating C# wrappers/interfaces since SWIG would try to handle the</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// macro as a constant definition and fail to convert it, issuing the following warning:</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// &quot;warning 305: Bad constant value (ignored).&quot; - see SLNET-227 for details</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// Since this is not a constant definition at all, the correct solution is to exclude this macro therefore.</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#ifndef _FILE_AND_LINE_</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifndef SWIG</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#ifdef _RETAIL</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"></span><span class="comment">// retail builds do not contain source-code related information in order to reduce the overall EXE size</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define _FILE_AND_LINE_ &quot;&quot;,0</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871"> 47</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define _FILE_AND_LINE_ __FILE__,__LINE__</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif // _RETAIL</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif // SWIG</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif // _FILE_AND_LINE_</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// #define RAKNET_COMPATIBILITY</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment">// #define __BITSTREAM_NATIVE_END</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#ifndef MAX_ALLOCA_STACK_ALLOCATION</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a6bf2bc2d4ea6acbcd9e3da316d56cd95"> 65</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MAX_ALLOCA_STACK_ALLOCATION 1048576</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment">// Use WaitForSingleObject instead of sleep.</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment">// Defining it plays nicer with other systems, and uses less CPU, but gives worse RakNet performance</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">// Undefining it uses more CPU time, but is more responsive and faster.</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#ifndef _WIN32_WCE</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#ab8f9344fbb8569309f4b11df52aad058"> 72</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define USE_WAIT_FOR_MULTIPLE_EVENTS</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#ifndef _USE_RAK_MEMORY_OVERRIDE</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a3742ef842faba0fdf7ee8b233e02189b"> 78</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define _USE_RAK_MEMORY_OVERRIDE 0</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">// #define OPEN_SSL_CLIENT_SUPPORT</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor">#ifndef OPEN_SSL_CLIENT_SUPPORT</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a887f5e6850c876435993a42b7a27358b"> 87</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define OPEN_SSL_CLIENT_SUPPORT 0</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor">#ifndef BITSTREAM_STACK_ALLOCATION_SIZE</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a5f7107c4f34b970ba209b48abfd7ae70"> 93</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define BITSTREAM_STACK_ALLOCATION_SIZE 256</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">// Redefine if you want to disable or change the target for debug RAKNET_DEBUG_PRINTF</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#ifndef RAKNET_DEBUG_PRINTF</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a2a5d867f7ae6521f217847a78f17ab4a"> 98</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RAKNET_DEBUG_PRINTF printf</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor">#ifndef RAKNET_DEBUG_TPRINTF</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a29cf458f7287265fc1b414c3f72fa9ad"> 102</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RAKNET_DEBUG_TPRINTF _tprintf</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment">// Maximum number of local IP addresses supported</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#ifndef MAXIMUM_NUMBER_OF_INTERNAL_IDS</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80"> 107</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MAXIMUM_NUMBER_OF_INTERNAL_IDS 10</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#ifndef RakAssert</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor">#if defined(__native_client__)</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RakAssert(x)</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#if defined(_DEBUG)</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RakAssert(x) assert(x);</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368"> 120</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RakAssert(x) </span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor">#ifndef DATAGRAM_MESSAGE_ID_ARRAY_LENGTH</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#ab317fdfccccc36c15ea2ba0f3d6f2b10"> 129</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DATAGRAM_MESSAGE_ID_ARRAY_LENGTH 512</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor">#ifndef RESEND_BUFFER_ARRAY_LENGTH</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#af1cb26d5d5b8bbb60367a848ee905ade"> 136</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RESEND_BUFFER_ARRAY_LENGTH 512</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a3abde4cfe6a8c3a20ce719c1cad27a07"> 137</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RESEND_BUFFER_ARRAY_MASK 511</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment">// #define _LINK_DL_MALLOC</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor">#ifndef GET_TIME_SPIKE_LIMIT</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="preprocessor"></span></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;</div>
<div class="line"><a name="l00148"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a0dd271c1904495024a10d9fab4600681"> 148</a></span>&#160;<span class="preprocessor">#define GET_TIME_SPIKE_LIMIT 0</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">// Use sliding window congestion control instead of ping based congestion control</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor">#ifndef USE_SLIDING_WINDOW_CONGESTION_CONTROL</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#aee2e1bf9d15e3408ca6c75897a5d8249"> 153</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define USE_SLIDING_WINDOW_CONGESTION_CONTROL 1</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment">// When a large message is arriving, preallocate the memory for the entire block</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment">// This results in large messages not taking up time to reassembly with memcpy, but is vulnerable to attackers causing the host to run out of memory</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor">#ifndef PREALLOCATE_LARGE_MESSAGES</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#af0baf244b8f59c91d0e70cdbe99721fa"> 159</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define PREALLOCATE_LARGE_MESSAGES 0</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor">#ifndef RAKNET_SUPPORT_IPV6</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a48a3e5cd2e22f7d71c1373656e80d2ef"> 163</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RAKNET_SUPPORT_IPV6 0</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</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="preprocessor">#ifndef RAKSTRING_TYPE</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#if defined(_UNICODE)</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RAKSTRING_TYPE RakWString</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RAKSTRING_TYPE_IS_UNICODE 1</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a13ec6b700b7112c1726788c3ae8317e1"> 181</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RAKSTRING_TYPE RakString</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a13b0d29f2a8ccb7f23cbdea648f1286b"> 182</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RAKSTRING_TYPE_IS_UNICODE 0</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor">#ifndef RPC4_GLOBAL_REGISTRATION_MAX_FUNCTIONS</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#aeed5dc2e94045a66017b9cf04488aa6f"> 187</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RPC4_GLOBAL_REGISTRATION_MAX_FUNCTIONS 48</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="preprocessor">#ifndef RPC4_GLOBAL_REGISTRATION_MAX_FUNCTION_NAME_LENGTH</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#afbacf5808b1cd387e42d32823cafa5b8"> 191</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RPC4_GLOBAL_REGISTRATION_MAX_FUNCTION_NAME_LENGTH 48</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="preprocessor">#ifndef XBOX_BYPASS_SECURITY</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a11301b7eb6a7cb30f78afdbc98e1f33c"> 195</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define XBOX_BYPASS_SECURITY 1</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment">// Controls how many allocations occur at once for the memory pool of incoming datagrams waiting to be transferred between the recvfrom thread and the main update thread</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment">// Has large effect on memory usage, per instance of RakPeer. Approximately MAXIMUM_MTU_SIZE*BUFFERED_PACKETS_PAGE_SIZE bytes, once after calling RakPeer::Startup()</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor">#ifndef BUFFERED_PACKETS_PAGE_SIZE</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a419d19919ba0d7e85cd836bee64a5c87"> 201</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define BUFFERED_PACKETS_PAGE_SIZE 8</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment">// Controls how many allocations occur at once for the memory pool of incoming or outgoing datagrams.</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">// Has small effect on memory usage per connection. Uses about 256 bytes*INTERNAL_PACKET_PAGE_SIZE per connection</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor">#ifndef INTERNAL_PACKET_PAGE_SIZE</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a39dc00e80eb120ac177e55f2f509758d"> 207</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define INTERNAL_PACKET_PAGE_SIZE 8</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment">// If defined to 1, the user is responsible for calling RakPeer::RunUpdateCycle and RakPeer::RunRecvfrom</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor">#ifndef RAKPEER_USER_THREADED</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#af6b967c7c085fb3a418932360cfffe25"> 212</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RAKPEER_USER_THREADED 0</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor">#ifndef USE_ALLOCA</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#add1080711227ddca8bcc85a3976c989b"> 216</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define USE_ALLOCA 1</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</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;</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment">//#define USE_THREADED_SEND</span></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="comment">// @since 0.1.1: added</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment">// Controls the maximum retrievable filesize for incoming files using FileListTransfer.</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment">// The configured limit only applies for files which are transferred incrementally (which basically applies to any larger file).</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">// Note that this also impacts the upper limit for memory allocations. It&#39;s suggested to redefine the value to a reasonable smaller size in the defineoverrides.h header file.</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment">// For backwards compatibility with RakNet, the default is set to 4 GiB-1.</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment">// #low - consider introducing GiB/MiB/KiB-functions and then define as GiB(4)?</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor">#ifndef SLNET_MAX_RETRIEVABLE_FILESIZE</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"><a class="code" href="../../d8/db0/defines_8h.xhtml#a69f86bebc837357076fea17426799455"> 233</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SLNET_MAX_RETRIEVABLE_FILESIZE (0xFFFFFFFF)</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment">// #blocker_2_0 - remove RAKNET_COMPATIBILITY</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="preprocessor">#ifdef RAKNET_COMPATIBILITY</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="preprocessor"></span><span class="comment">// note: we cannot use namespace aliases here since we need to ensure ABI compatibility with shared libraries/DLLs</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment">// if we&#39;d use a namespace alias, the names in the DLLs would still point to the actual namespace (SLNet) rather</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment">// than the alias namespace and old apps would not be able to use the DLL as an in-place replacement</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment">// hence, go with a simple preprocessor macro which will replace the SLNet namespace names with RakNet</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="preprocessor">#define SLNet RakNet</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor">#endif // __RAKNET_DEFINES_H</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/db0/defines_8h.xhtml">defines.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,186 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/DS_OrderedChannelHeap.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/db6/_d_s___ordered_channel_heap_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">DS_OrderedChannelHeap.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../da/dcb/_d_s___heap_8h_source.xhtml">DS_Heap.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../de/dbe/_d_s___map_8h_source.xhtml">DS_Map.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/d8d/_d_s___queue_8h_source.xhtml">DS_Queue.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../db/dbd/_export_8h_source.xhtml">Export.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/da7/assert_8h_source.xhtml">assert.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/d10/_rand_8h_source.xhtml">Rand.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/db6/_d_s___ordered_channel_heap_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml">DataStructures::OrderedChannelHeap&lt; channel_key_type, heap_data_type, channel_key_comparison_func &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d2/df0/struct_data_structures_1_1_ordered_channel_heap_1_1_queue_and_weight"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#d2/df0/struct_data_structures_1_1_ordered_channel_heap_1_1_queue_and_weight">DataStructures::OrderedChannelHeap&lt; channel_key_type, heap_data_type, channel_key_comparison_func &gt;::QueueAndWeight</a></td></tr>
<tr class="separator:d2/df0/struct_data_structures_1_1_ordered_channel_heap_1_1_queue_and_weight"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml">DataStructures::OrderedChannelHeap&lt; channel_key_type, heap_data_type, channel_key_comparison_func &gt;::HeapChannelAndData</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/d80/namespace_data_structures"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml">DataStructures</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Class Documentation</h2>
<a name="d2/df0/struct_data_structures_1_1_ordered_channel_heap_1_1_queue_and_weight" id="d2/df0/struct_data_structures_1_1_ordered_channel_heap_1_1_queue_and_weight"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct DataStructures::OrderedChannelHeap::QueueAndWeight</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><h3>template&lt;class channel_key_type, class heap_data_type, int(*)(const channel_key_type &amp;, const channel_key_type &amp;) channel_key_comparison_func = defaultMapKeyComparison&lt;channel_key_type&gt;&gt;<br/>
struct DataStructures::OrderedChannelHeap&lt; channel_key_type, heap_data_type, channel_key_comparison_func &gt;::QueueAndWeight</h3>
<p>Definition at line <a class="el" href="../../d8/db6/_d_s___ordered_channel_heap_8h_source.xhtml#l00055">55</a> of file <a class="el" href="../../d8/db6/_d_s___ordered_channel_heap_8h_source.xhtml">DS_OrderedChannelHeap.h</a>.</p>
</div><table class="fieldtable">
<tr><th colspan="3">Class Members</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="aa2613a2d88d02022920c7e1e35acff14"></a><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">Queue</a>&lt; double &gt;</td>
<td class="fieldname">
randResultQueue</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a2906f6b6bb0f53c33dfd1ce8a7c3d3ba"></a>bool</td>
<td class="fieldname">
signalDeletion</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a223f9fd06aea86618c8cc771e374d82d"></a>double</td>
<td class="fieldname">
weight</td>
<td class="fielddoc">
</td></tr>
</table>
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/db6/_d_s___ordered_channel_heap_8h.xhtml">DS_OrderedChannelHeap.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,371 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/DS_OrderedChannelHeap.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/db6/_d_s___ordered_channel_heap_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">DS_OrderedChannelHeap.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/db6/_d_s___ordered_channel_heap_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#ifndef __RAKNET_ORDERED_CHANNEL_HEAP_H</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __RAKNET_ORDERED_CHANNEL_HEAP_H</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../da/dcb/_d_s___heap_8h.xhtml">DS_Heap.h</a>&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/dbe/_d_s___map_8h.xhtml">DS_Map.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/d8d/_d_s___queue_8h.xhtml">DS_Queue.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/dbd/_export_8h.xhtml">Export.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/da7/assert_8h.xhtml">assert.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/d10/_rand_8h.xhtml" title="[Internal] Random number generator">Rand.h</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">namespace </span>DataStructures</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;{</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)=defaultMapKeyComparison&lt;channel_key_type&gt; &gt;</div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml"> 37</a></span>&#160; <span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml">OrderedChannelHeap</a></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aed73f07f296769d86f0373f9cd2ede2d"> 40</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aed73f07f296769d86f0373f9cd2ede2d">IMPLEMENT_DEFAULT_COMPARISON</a>(<span class="keywordtype">void</span>) {DataStructures::defaultMapKeyComparison&lt;channel_key_type&gt;(channel_key_type(),channel_key_type());}</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml">OrderedChannelHeap</a>();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; ~<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml">OrderedChannelHeap</a>();</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> Push(<span class="keyword">const</span> channel_key_type &amp;channelID, <span class="keyword">const</span> heap_data_type &amp;data);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> PushAtHead(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> index, <span class="keyword">const</span> channel_key_type &amp;channelID, <span class="keyword">const</span> heap_data_type &amp;data);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; heap_data_type Pop(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> startingIndex=0);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; heap_data_type Peek(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> startingIndex) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> AddChannel(<span class="keyword">const</span> channel_key_type &amp;channelID, <span class="keyword">const</span> <span class="keywordtype">double</span> weight);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> RemoveChannel(channel_key_type channelID);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> Clear(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; heap_data_type&amp; operator[] ( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> position ) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">unsigned</span> ChannelSize(<span class="keyword">const</span> channel_key_type &amp;channelID);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> Size(<span class="keywordtype">void</span>) <span class="keyword">const</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"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml"> 55</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#d2/df0/struct_data_structures_1_1_ordered_channel_heap_1_1_queue_and_weight">QueueAndWeight</a></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14"> 57</a></span>&#160; <a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt;double&gt;</a> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a223f9fd06aea86618c8cc771e374d82d"> 58</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a223f9fd06aea86618c8cc771e374d82d">weight</a>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a2906f6b6bb0f53c33dfd1ce8a7c3d3ba"> 59</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a2906f6b6bb0f53c33dfd1ce8a7c3d3ba">signalDeletion</a>;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; };</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"><a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml"> 62</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml">HeapChannelAndData</a></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml#a4f98981f14e84391d0ff2535532c2655"> 64</a></span>&#160; <a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml#a4f98981f14e84391d0ff2535532c2655">HeapChannelAndData</a>() {}</div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml#ada0ca9b94437a7841736d7f6bec2874d"> 65</a></span>&#160; <a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml#ada0ca9b94437a7841736d7f6bec2874d">HeapChannelAndData</a>(<span class="keyword">const</span> channel_key_type &amp;_channel, <span class="keyword">const</span> heap_data_type &amp;_data) : data(_data), channel(_channel) {}</div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml#a64530eaa3b1a5893d83b87d074b2ea61"> 66</a></span>&#160; heap_data_type <a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml#a64530eaa3b1a5893d83b87d074b2ea61">data</a>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml#abe0f345d5b43d1df33b2830ea520a401"> 67</a></span>&#160; channel_key_type <a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml#abe0f345d5b43d1df33b2830ea520a401">channel</a>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; };</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#af858574a5f2f7b6618ae58f0cb4af52d"> 71</a></span>&#160; <a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt;channel_key_type, QueueAndWeight*, channel_key_comparison_func&gt;</a> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#af858574a5f2f7b6618ae58f0cb4af52d">map</a>;</div>
<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a71ec113d9527b267cf7f000ff17c330a"> 72</a></span>&#160; <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt;double, HeapChannelAndData, true&gt;</a> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a71ec113d9527b267cf7f000ff17c330a">heap</a>;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">void</span> GreatestRandResult(<span class="keywordtype">void</span>);</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;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a26034476bf17dcc86e79c05e7ce761b3"> 77</a></span>&#160; <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a26034476bf17dcc86e79c05e7ce761b3">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::OrderedChannelHeap</a>()</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</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="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a2fe40b812e8b80d5baf8c72067238467"> 82</a></span>&#160; <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a2fe40b812e8b80d5baf8c72067238467">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::~OrderedChannelHeap</a>()</div>
<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; Clear();</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#ad8cc882acdd1045a805418b893fb65f2"> 88</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#ad8cc882acdd1045a805418b893fb65f2">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::Push</a>(<span class="keyword">const</span> channel_key_type &amp;channelID, <span class="keyword">const</span> heap_data_type &amp;data)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; PushAtHead(<a class="code" href="../../d9/d7f/_d_s___list_8h.xhtml#afc42e3d98c21b07bd24b47aeb8ef2561" title="Maximum unsigned long.">MAX_UNSIGNED_LONG</a>, channelID, data);</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;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a9e92458dd3bf27589f621ae4cfac76da"> 94</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a9e92458dd3bf27589f621ae4cfac76da">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::GreatestRandResult</a>(<span class="keywordtype">void</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"> 96</span>&#160; <span class="keywordtype">double</span> greatest;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; greatest=0.0;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; map.Size(); i++)</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">if</span> (map[i]-&gt;randResultQueue.Size() &amp;&amp; map[i]-&gt;randResultQueue[0]&gt;greatest)</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; greatest=map[i]-&gt;randResultQueue[0];</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> greatest;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</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; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a789c8a7b948ef02ca1513c830c16a358"> 108</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a789c8a7b948ef02ca1513c830c16a358">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::PushAtHead</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> index, <span class="keyword">const</span> channel_key_type &amp;channelID, <span class="keyword">const</span> heap_data_type &amp;data)</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">// If an assert hits here then this is an unknown channel. Call AddChannel first.</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#d2/df0/struct_data_structures_1_1_ordered_channel_heap_1_1_queue_and_weight">QueueAndWeight</a> *queueAndWeight=map.Get(channelID);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">double</span> maxRange, minRange, rnd;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>()==0)</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// Set maxRange to the greatest random number waiting to be returned, rather than 1.0 necessarily</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// This is so weights are scaled similarly among channels. For example, if the head weight for a used channel was .25</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// and then we added another channel, the new channel would need to choose between .25 and 0</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// If we chose between 1.0 and 0, it would be 1/.25 (4x) more likely to be at the head of the heap than it should be</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; maxRange=GreatestRandResult();</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (maxRange==0.0)</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; maxRange=1.0;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; minRange=0.0;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (index &gt;= queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>())</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; maxRange=queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>[queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>()-1]*.99999999;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; minRange=0.0;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span> (index==0)</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; maxRange=GreatestRandResult();</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (maxRange==queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>[0])</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; maxRange=1.0;</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">else</span> <span class="keywordflow">if</span> (index &gt;= queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>())</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; maxRange=queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>[queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>()-1]*.99999999;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; maxRange=queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>[index-1]*.99999999;</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; minRange=maxRange=queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>[index]*1.00000001;</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; </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="preprocessor">#ifdef _DEBUG</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(maxRange!=0.0);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor"></span> rnd=<a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>() * (maxRange - minRange);</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span> (rnd==0.0)</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; rnd=maxRange/2.0;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (index &gt;= queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>())</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(rnd);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a3980613e44a80982708b9d1f49fa0fea">PushAtHead</a>(rnd, index);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; heap.Push(rnd*queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a223f9fd06aea86618c8cc771e374d82d">weight</a>, <a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml">HeapChannelAndData</a>(channelID, data));</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00161"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a61633143d38c47fedf2b5522f815437e"> 161</a></span>&#160; heap_data_type <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a61633143d38c47fedf2b5522f815437e">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::Pop</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> startingIndex)</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(startingIndex &lt; heap.Size());</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#d2/df0/struct_data_structures_1_1_ordered_channel_heap_1_1_queue_and_weight">QueueAndWeight</a> *queueAndWeight=map.Get(heap[startingIndex].channel);</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (startingIndex!=0)</div>
<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">// Ugly - have to count in the heap how many nodes have the same channel, so we know where to delete from in the queue</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">unsigned</span> indiceCount=0;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; startingIndex; i++)</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (channel_key_comparison_func(heap[i].channel,heap[startingIndex].channel)==0)</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; indiceCount++;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a8be7c3107161bb2ad869a9a6bb60605a">RemoveAtIndex</a>(indiceCount);</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="keywordflow">else</span></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; <span class="comment">// TODO - ordered channel heap uses progressively lower values as items are inserted. But this won&#39;t give relative ordering among channels. I have to renormalize after every pop.</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; queueAndWeight-&gt;randResultQueue.Pop();</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;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// Try to remove the channel after every pop, because doing so is not valid while there are elements in the list.</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (queueAndWeight-&gt;signalDeletion)</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; RemoveChannel(heap[startingIndex].channel);</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; <span class="keywordflow">return</span> heap.Pop(startingIndex).data;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00190"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#abfba44a3f552ddc905e686e97d91dedd"> 190</a></span>&#160; heap_data_type <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#abfba44a3f552ddc905e686e97d91dedd">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::Peek</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> startingIndex)<span class="keyword"> const</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml">HeapChannelAndData</a> heapChannelAndData = heap.Peek(startingIndex);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> heapChannelAndData.<a class="code" href="../../d4/da4/struct_data_structures_1_1_ordered_channel_heap_1_1_heap_channel_and_data.xhtml#a64530eaa3b1a5893d83b87d074b2ea61">data</a>;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00197"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a77415d10c497a89faaf05022f7c68b48"> 197</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a77415d10c497a89faaf05022f7c68b48">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::AddChannel</a>(<span class="keyword">const</span> channel_key_type &amp;channelID, <span class="keyword">const</span> <span class="keywordtype">double</span> weight)</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; <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#d2/df0/struct_data_structures_1_1_ordered_channel_heap_1_1_queue_and_weight">QueueAndWeight</a> *qaw = SLNet::OP_NEW&lt;QueueAndWeight&gt;( <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; qaw-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a223f9fd06aea86618c8cc771e374d82d">weight</a>=weight;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; qaw-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a2906f6b6bb0f53c33dfd1ce8a7c3d3ba">signalDeletion</a>=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; map.SetNew(channelID, qaw);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00206"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a6a4af0cc8c59949997588d8efc04c5ee"> 206</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a6a4af0cc8c59949997588d8efc04c5ee">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::RemoveChannel</a>(channel_key_type channelID)</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="keywordflow">if</span> (map.Has(channelID))</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; i=map.GetIndexAtKey(channelID);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (map[i]-&gt;randResultQueue.Size()==0)</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(map[i], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; map.RemoveAtIndex(i);</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="keywordflow">else</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// Signal this channel for deletion later, because the heap has nodes with this channel right now</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; map[i]-&gt;signalDeletion=<span class="keyword">true</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; }</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00226"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#af8a9a0b891209e681e13d293b0fe3149"> 226</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#af8a9a0b891209e681e13d293b0fe3149">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::Size</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> heap.Size();</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"> 231</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00232"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a538d385a1eeaeee648511be50d93b88f"> 232</a></span>&#160; heap_data_type&amp; <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a538d385a1eeaeee648511be50d93b88f">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::operator[]</a>( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> position )<span class="keyword"> const</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> heap[position].data;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00239"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a67f40384fe67108550b6152144b207dc"> 239</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#a67f40384fe67108550b6152144b207dc">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::ChannelSize</a>(<span class="keyword">const</span> channel_key_type &amp;channelID)</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; {</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#d2/df0/struct_data_structures_1_1_ordered_channel_heap_1_1_queue_and_weight">QueueAndWeight</a> *queueAndWeight=map.Get(channelID);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> queueAndWeight-&gt;<a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa2613a2d88d02022920c7e1e35acff14">randResultQueue</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>();</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> channel_key_type, <span class="keyword">class</span> heap_data_type, <span class="keywordtype">int</span> (*channel_key_comparison_func)(const channel_key_type&amp;, const channel_key_type&amp;)&gt;</div>
<div class="line"><a name="l00246"></a><span class="lineno"><a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa027bd584a0d968e999ab4cbaf851304"> 246</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml#aa027bd584a0d968e999ab4cbaf851304">OrderedChannelHeap&lt;channel_key_type, heap_data_type, channel_key_comparison_func&gt;::Clear</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; map.Size(); i++)</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(map[i], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; map.Clear(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; heap.Clear(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;}</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor">#endif</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/db6/_d_s___ordered_channel_heap_8h.xhtml">DS_OrderedChannelHeap.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,151 @@
<!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"/>
<title>SLikeNet: Member List</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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><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="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#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('d3/dbe/class_data_structures_1_1_circular_linked_list.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#af77041c880bfedbbb16afe1482c4ccd6">Add</a>(const CircularLinkedListType &amp;input)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a453cf3bafc9ff7ae5ab13456a88f1a98">Beginning</a>(void)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a9b448cf0cbc22330251d075387626f38">CircularLinkedList</a>()</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a6b8f95081e9afca5094c9169882fa93d">CircularLinkedList</a>(const CircularLinkedList &amp;original_copy)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a81e1d0da5ab3c3de3cadc41191075891">Clear</a>(void)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a42010425d7c024def67b54b0c41fda23">Concatenate</a>(const CircularLinkedList &amp;L)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a9c2f0f72166f49c62e99aa58f7ee19b5">Del</a>(void)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a9a4e832ea30d76d1dbe597c14e2d91d0">End</a>(void)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a42ed315ec6b27947c5c162f8ec67cb77">Find</a>(const CircularLinkedListType &amp;input)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#ab94fe9fff660e829d5013231bf8cb10e">FindPointer</a>(const CircularLinkedListType &amp;input)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#ae9f34d88cfb215008cda148c80ca1b94">Insert</a>(const CircularLinkedListType &amp;input)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#afaac868df2c498af8929c755161d3d2c">IsIn</a>(const CircularLinkedListType &amp;input)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a1f553549888450de0fe8302facda16fe">list_size</a></td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a09cd7f337ea27cb9a2847f78bcef4b6e">operator++</a>()</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a03df3f6bbb68d1919d4b0b7406ff89fc">operator++</a>(int)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#af7346fc2c9e57047dd7225891891e3fa">operator--</a>()</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a94e29b0bdaad70b4de1a768c15d9140c">operator--</a>(int)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#afb25fbc51ff0ddac711fb4b9e2422b67">operator=</a>(const CircularLinkedList &amp;original_copy)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a81644887456b6966c3bb882a1a1557d0">Peek</a>(void)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a4ec7084b10a554f32021a8ea298838a3">Pop</a>(void)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#af465832a55530fe55425f2b6e5015ad2">position</a></td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#aa94e608de8060f2ee02c9e3984545142">Replace</a>(const CircularLinkedListType &amp;input)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#aefbf7b5e06902907f5663f88bb7c646a">root</a></td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#acbd6339fc68ed1015b6811a20ee39910">Size</a>(void)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#afe72f0175ee659b26ad599693fc5b4ee">Sort</a>(void)</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#aa6ce0579b5e2a613e438b99b7af96a52">~CircularLinkedList</a>()</td><td class="entry"><a class="el" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">DataStructures::CircularLinkedList&lt; CircularLinkedListType &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
<map id="SLNet::RakNetTransport2" name="SLNet::RakNetTransport2">
<area shape="rect" id="node2" href="$d0/d4e/class_s_l_net_1_1_transport_interface.xhtml" title="Defines an interface that is used to send and receive null&#45;terminated strings." alt="" coords="5,57,212,281"/>
<area shape="rect" id="node3" href="$de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}" alt="" coords="237,5,418,332"/>
</map>

View File

@ -0,0 +1 @@
a0a2c343736dbf8eecee8642d417e492

View File

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: SLNet::RakNetTransport2 Pages: 1 -->
<!--zoomable 512 -->
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<defs>
<circle id="rim" cx="0" cy="0" r="7"/>
<circle id="rim2" cx="0" cy="0" r="3.5"/>
<g id="zoomPlus">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomplus.mouseover" end="zoomplus.mouseout"/>
</use>
<path d="M-4,0h8M0,-4v8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="zoomMin">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomminus.mouseover" end="zoomminus.mouseout"/>
</use>
<path d="M-4,0h8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="dirArrow">
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="resetDef">
<use xlink:href="#rim2" fill="#404040">
<set attributeName="fill" to="#808080" begin="reset.mouseover" end="reset.mouseout"/>
</use>
</g>
</defs>
<script type="text/javascript">
var viewWidth = 318;
var viewHeight = 512;
var sectionId = 'dynsection-0';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>SLNet::RakNetTransport2</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="82,-0.5 82,-222.5 237,-222.5 237,-0.5 82,-0.5"/>
<text text-anchor="middle" x="159.5" y="-210.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::RakNetTransport2</text>
<polyline fill="none" stroke="black" points="82,-203.5 237,-203.5 "/>
<text text-anchor="start" x="90" y="-191.5" font-family="Helvetica,sans-Serif" font-size="10.00"># newConnections</text>
<text text-anchor="start" x="90" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00"># lostConnections</text>
<text text-anchor="start" x="90" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00"># packetQueue</text>
<polyline fill="none" stroke="black" points="82,-162.5 237,-162.5 "/>
<text text-anchor="start" x="90" y="-150.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RakNetTransport2()</text>
<text text-anchor="start" x="90" y="-139.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~RakNetTransport2()</text>
<text text-anchor="start" x="90" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Start()</text>
<text text-anchor="start" x="90" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Stop()</text>
<text text-anchor="start" x="90" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Send()</text>
<text text-anchor="start" x="90" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CloseConnection()</text>
<text text-anchor="start" x="90" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Receive()</text>
<text text-anchor="start" x="90" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DeallocatePacket()</text>
<text text-anchor="start" x="90" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNewIncomingConnection()</text>
<text text-anchor="start" x="90" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasLostConnection()</text>
<text text-anchor="start" x="90" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetCommandParser()</text>
<text text-anchor="start" x="90" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="90" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="90" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml" target="_top" xlink:title="Defines an interface that is used to send and receive null&#45;terminated strings.">
<polygon fill="none" stroke="black" points="0,-298 0,-465 155,-465 155,-298 0,-298"/>
<text text-anchor="middle" x="77.5" y="-453" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::TransportInterface</text>
<polyline fill="none" stroke="black" points="0,-446 155,-446 "/>
<text text-anchor="middle" x="77.5" y="-434" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<polyline fill="none" stroke="black" points="0,-427 155,-427 "/>
<text text-anchor="start" x="8" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00">+ TransportInterface()</text>
<text text-anchor="start" x="8" y="-404" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~TransportInterface()</text>
<text text-anchor="start" x="8" y="-393" font-family="Helvetica,sans-Serif" font-size="10.00">+ Start()</text>
<text text-anchor="start" x="8" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">+ Stop()</text>
<text text-anchor="start" x="8" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">+ Send()</text>
<text text-anchor="start" x="8" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00">+ CloseConnection()</text>
<text text-anchor="start" x="8" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00">+ Receive()</text>
<text text-anchor="start" x="8" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">+ DeallocatePacket()</text>
<text text-anchor="start" x="8" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNewIncomingConnection()</text>
<text text-anchor="start" x="8" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasLostConnection()</text>
<text text-anchor="start" x="8" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetCommandParser()</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M105.785,-288.058C112.205,-267.074 119.087,-244.581 125.71,-222.935"/>
<polygon fill="none" stroke="midnightblue" points="102.351,-287.318 102.772,-297.904 109.045,-289.366 102.351,-287.318"/>
</g>
<!-- Node3 -->
<g id="node3" class="node"><title>Node3</title>
<g id="a_node3"><a xlink:href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" target="_top" xlink:title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}">
<polygon fill="none" stroke="black" points="173.5,-259.5 173.5,-503.5 309.5,-503.5 309.5,-259.5 173.5,-259.5"/>
<text text-anchor="middle" x="241.5" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::PluginInterface2</text>
<polyline fill="none" stroke="black" points="173.5,-484.5 309.5,-484.5 "/>
<text text-anchor="start" x="181.5" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"># rakPeerInterface</text>
<text text-anchor="start" x="181.5" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00"># tcpInterface</text>
<polyline fill="none" stroke="black" points="173.5,-454.5 309.5,-454.5 "/>
<text text-anchor="start" x="181.5" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PluginInterface2()</text>
<text text-anchor="start" x="181.5" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~PluginInterface2()</text>
<text text-anchor="start" x="181.5" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnAttach()</text>
<text text-anchor="start" x="181.5" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnDetach()</text>
<text text-anchor="start" x="181.5" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Update()</text>
<text text-anchor="start" x="181.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="181.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerStartup()</text>
<text text-anchor="start" x="181.5" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerShutdown()</text>
<text text-anchor="start" x="181.5" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="181.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="181.5" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
<text text-anchor="start" x="181.5" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="181.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="181.5" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendListUnified()</text>
<text text-anchor="start" x="181.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00"># AllocatePacketUnified()</text>
<text text-anchor="start" x="181.5" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00"># PushBackPacketUnified()</text>
<text text-anchor="start" x="181.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DeallocPacketUnified()</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node1 -->
<g id="edge2" class="edge"><title>Node3&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M201.475,-249.687C198.721,-240.687 195.962,-231.668 193.246,-222.793"/>
<polygon fill="none" stroke="midnightblue" points="198.186,-250.899 204.458,-259.437 204.879,-248.851 198.186,-250.899"/>
</g>
</g>
</svg>
<g id="navigator" transform="translate(0 0)" fill="#404254">
<rect fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width=".5" x="0" y="0" width="60" height="60"/>
<use id="zoomplus" xlink:href="#zoomPlus" x="17" y="9" onmousedown="handleZoom(evt,'in')"/>
<use id="zoomminus" xlink:href="#zoomMin" x="42" y="9" onmousedown="handleZoom(evt,'out')"/>
<use id="reset" xlink:href="#resetDef" x="30" y="36" onmousedown="handleReset()"/>
<g id="arrowUp" xlink:href="#dirArrow" transform="translate(30 24)" onmousedown="handlePan(0,-1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowUp.mouseover" end="arrowUp.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowRight" xlink:href="#dirArrow" transform="rotate(90) translate(36 -43)" onmousedown="handlePan(1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowRight.mouseover" end="arrowRight.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowDown" xlink:href="#dirArrow" transform="rotate(180) translate(-30 -48)" onmousedown="handlePan(0,1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowDown.mouseover" end="arrowDown.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowLeft" xlink:href="#dirArrow" transform="rotate(270) translate(-36 17)" onmousedown="handlePan(-1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowLeft.mouseover" end="arrowLeft.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
</g>
<svg viewBox="0 0 15 15" width="100%" height="30px" preserveAspectRatio="xMaxYMin meet">
<g id="arrow_out" transform="scale(0.3 0.3)">
<a xlink:href="class_s_l_net_1_1_rak_net_transport2__inherit__graph_org.svg" target="_base">
<rect id="button" ry="5" rx="5" y="6" x="6" height="38" width="38"
fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width="1.0"/>
<path id="arrow"
d="M 11.500037,31.436501 C 11.940474,20.09759 22.043105,11.32322 32.158766,21.979434 L 37.068811,17.246167 C 37.068811,17.246167 37.088388,32 37.088388,32 L 22.160133,31.978069 C 22.160133,31.978069 26.997745,27.140456 26.997745,27.140456 C 18.528582,18.264221 13.291696,25.230495 11.500037,31.436501 z"
style="fill:#404040;"/>
</a>
</g>
</svg>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: SLNet::RakNetTransport2 Pages: 1 -->
<svg width="318pt" height="512pt"
viewBox="0.00 0.00 317.50 512.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 508)">
<title>SLNet::RakNetTransport2</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="82,-0.5 82,-222.5 237,-222.5 237,-0.5 82,-0.5"/>
<text text-anchor="middle" x="159.5" y="-210.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::RakNetTransport2</text>
<polyline fill="none" stroke="black" points="82,-203.5 237,-203.5 "/>
<text text-anchor="start" x="90" y="-191.5" font-family="Helvetica,sans-Serif" font-size="10.00"># newConnections</text>
<text text-anchor="start" x="90" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00"># lostConnections</text>
<text text-anchor="start" x="90" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00"># packetQueue</text>
<polyline fill="none" stroke="black" points="82,-162.5 237,-162.5 "/>
<text text-anchor="start" x="90" y="-150.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RakNetTransport2()</text>
<text text-anchor="start" x="90" y="-139.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~RakNetTransport2()</text>
<text text-anchor="start" x="90" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Start()</text>
<text text-anchor="start" x="90" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Stop()</text>
<text text-anchor="start" x="90" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Send()</text>
<text text-anchor="start" x="90" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CloseConnection()</text>
<text text-anchor="start" x="90" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Receive()</text>
<text text-anchor="start" x="90" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DeallocatePacket()</text>
<text text-anchor="start" x="90" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNewIncomingConnection()</text>
<text text-anchor="start" x="90" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasLostConnection()</text>
<text text-anchor="start" x="90" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetCommandParser()</text>
<text text-anchor="start" x="90" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="90" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="90" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml" target="_top" xlink:title="Defines an interface that is used to send and receive null&#45;terminated strings.">
<polygon fill="none" stroke="black" points="0,-298 0,-465 155,-465 155,-298 0,-298"/>
<text text-anchor="middle" x="77.5" y="-453" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::TransportInterface</text>
<polyline fill="none" stroke="black" points="0,-446 155,-446 "/>
<text text-anchor="middle" x="77.5" y="-434" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<polyline fill="none" stroke="black" points="0,-427 155,-427 "/>
<text text-anchor="start" x="8" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00">+ TransportInterface()</text>
<text text-anchor="start" x="8" y="-404" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~TransportInterface()</text>
<text text-anchor="start" x="8" y="-393" font-family="Helvetica,sans-Serif" font-size="10.00">+ Start()</text>
<text text-anchor="start" x="8" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">+ Stop()</text>
<text text-anchor="start" x="8" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">+ Send()</text>
<text text-anchor="start" x="8" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00">+ CloseConnection()</text>
<text text-anchor="start" x="8" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00">+ Receive()</text>
<text text-anchor="start" x="8" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">+ DeallocatePacket()</text>
<text text-anchor="start" x="8" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNewIncomingConnection()</text>
<text text-anchor="start" x="8" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasLostConnection()</text>
<text text-anchor="start" x="8" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetCommandParser()</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M105.785,-288.058C112.205,-267.074 119.087,-244.581 125.71,-222.935"/>
<polygon fill="none" stroke="midnightblue" points="102.351,-287.318 102.772,-297.904 109.045,-289.366 102.351,-287.318"/>
</g>
<!-- Node3 -->
<g id="node3" class="node"><title>Node3</title>
<g id="a_node3"><a xlink:href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" target="_top" xlink:title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}">
<polygon fill="none" stroke="black" points="173.5,-259.5 173.5,-503.5 309.5,-503.5 309.5,-259.5 173.5,-259.5"/>
<text text-anchor="middle" x="241.5" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::PluginInterface2</text>
<polyline fill="none" stroke="black" points="173.5,-484.5 309.5,-484.5 "/>
<text text-anchor="start" x="181.5" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"># rakPeerInterface</text>
<text text-anchor="start" x="181.5" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00"># tcpInterface</text>
<polyline fill="none" stroke="black" points="173.5,-454.5 309.5,-454.5 "/>
<text text-anchor="start" x="181.5" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PluginInterface2()</text>
<text text-anchor="start" x="181.5" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~PluginInterface2()</text>
<text text-anchor="start" x="181.5" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnAttach()</text>
<text text-anchor="start" x="181.5" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnDetach()</text>
<text text-anchor="start" x="181.5" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Update()</text>
<text text-anchor="start" x="181.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="181.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerStartup()</text>
<text text-anchor="start" x="181.5" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerShutdown()</text>
<text text-anchor="start" x="181.5" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="181.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="181.5" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
<text text-anchor="start" x="181.5" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="181.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="181.5" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendListUnified()</text>
<text text-anchor="start" x="181.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00"># AllocatePacketUnified()</text>
<text text-anchor="start" x="181.5" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00"># PushBackPacketUnified()</text>
<text text-anchor="start" x="181.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DeallocPacketUnified()</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node1 -->
<g id="edge2" class="edge"><title>Node3&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M201.475,-249.687C198.721,-240.687 195.962,-231.668 193.246,-222.793"/>
<polygon fill="none" stroke="midnightblue" points="198.186,-250.899 204.458,-259.437 204.879,-248.851 198.186,-250.899"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,11 @@
var _message_filter_8h =
[
[ "FilterSet", "d3/db6/struct_s_l_net_1_1_filter_set.xhtml", "d3/db6/struct_s_l_net_1_1_filter_set" ],
[ "FilteredSystem", "dd/d30/namespace_s_l_net.xhtml#d6/db9/struct_s_l_net_1_1_filtered_system", [
[ "filter", "dd/d30/namespace_s_l_net.xhtml#a1b02975ea77ed32ba02dd52e92dc5b6d", null ],
[ "timeEnteredThisSet", "dd/d30/namespace_s_l_net.xhtml#a8fba0b5f0ed7b5bdcb7f57b68325f4fb", null ]
] ],
[ "MESSAGE_FILTER_MAX_MESSAGE_ID", "d8/db9/_message_filter_8h.xhtml#ae4d315ced89fd4074f5e3b1b3e2a4e29", null ],
[ "FilterSetComp", "d8/db9/_message_filter_8h.xhtml#a494e2ce57113dcaef2f1be93ac280b46", null ],
[ "MessageFilterStrComp", "d8/db9/_message_filter_8h.xhtml#a53e991e64fde527e283d10d70c7e7844", null ]
];

View File

@ -0,0 +1,218 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/MessageFilter.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/db9/_message_filter_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">MessageFilter.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Message filter plugin. Assigns systems to FilterSets. Each FilterSet limits what messages are allowed. This is a security related plugin.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">NativeFeatureIncludes.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d49/types_8h_source.xhtml">types.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/ddd/_plugin_interface2_8h_source.xhtml">PluginInterface2.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d2/d77/_d_s___hash_8h_source.xhtml">DS_Hash.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../db/dbd/_export_8h_source.xhtml">Export.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/db9/_message_filter_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml">SLNet::FilterSet</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d6/db9/struct_s_l_net_1_1_filtered_system"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#d6/db9/struct_s_l_net_1_1_filtered_system">SLNet::FilteredSystem</a></td></tr>
<tr class="separator:d6/db9/struct_s_l_net_1_1_filtered_system"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d4/d96/class_s_l_net_1_1_message_filter"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#d4/d96/class_s_l_net_1_1_message_filter">SLNet::MessageFilter</a></td></tr>
<tr class="memdesc:d4/d96/class_s_l_net_1_1_message_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assigns systems to FilterSets. Each <a class="el" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml">FilterSet</a> limits what kinds of messages are allowed. <a href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#d4/d96/class_s_l_net_1_1_message_filter">More...</a><br/></td></tr>
<tr class="separator:d4/d96/class_s_l_net_1_1_message_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:dd/d30/namespace_s_l_net"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></td></tr>
<tr class="memdesc:dd/d30/namespace_s_l_net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ae4d315ced89fd4074f5e3b1b3e2a4e29"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/db9/_message_filter_8h.xhtml#ae4d315ced89fd4074f5e3b1b3e2a4e29">MESSAGE_FILTER_MAX_MESSAGE_ID</a>&#160;&#160;&#160;256</td></tr>
<tr class="memdesc:ae4d315ced89fd4074f5e3b1b3e2a4e29"><td class="mdescLeft">&#160;</td><td class="mdescRight">MessageIdentifier (ID_*) values shoudln't go higher than this. Change it if you do. <a href="#ae4d315ced89fd4074f5e3b1b3e2a4e29"></a><br/></td></tr>
<tr class="separator:ae4d315ced89fd4074f5e3b1b3e2a4e29"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a53e991e64fde527e283d10d70c7e7844"><td class="memItemLeft" align="right" valign="top">int <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#a53e991e64fde527e283d10d70c7e7844">SLNet::MessageFilterStrComp</a> (char *const &amp;key, char *const &amp;data)</td></tr>
<tr class="separator:a53e991e64fde527e283d10d70c7e7844"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a494e2ce57113dcaef2f1be93ac280b46"><td class="memItemLeft" align="right" valign="top">int <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#a494e2ce57113dcaef2f1be93ac280b46">SLNet::FilterSetComp</a> (const int &amp;key, FilterSet *const &amp;data)</td></tr>
<tr class="separator:a494e2ce57113dcaef2f1be93ac280b46"><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>Message filter plugin. Assigns systems to FilterSets. Each FilterSet limits what messages are allowed. This is a security related plugin. </p>
<p>Definition in file <a class="el" href="../../d8/db9/_message_filter_8h_source.xhtml">MessageFilter.h</a>.</p>
</div><hr/><h2 class="groupheader">Class Documentation</h2>
<a name="d6/db9/struct_s_l_net_1_1_filtered_system" id="d6/db9/struct_s_l_net_1_1_filtered_system"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct SLNet::FilteredSystem</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock">
<p>Definition at line <a class="el" href="../../d8/db9/_message_filter_8h_source.xhtml#l00065">65</a> of file <a class="el" href="../../d8/db9/_message_filter_8h_source.xhtml">MessageFilter.h</a>.</p>
</div><table class="fieldtable">
<tr><th colspan="3">Class Members</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a1b02975ea77ed32ba02dd52e92dc5b6d"></a><a class="el" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml">FilterSet</a> *</td>
<td class="fieldname">
filter</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a8fba0b5f0ed7b5bdcb7f57b68325f4fb"></a><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">TimeMS</a></td>
<td class="fieldname">
timeEnteredThisSet</td>
<td class="fielddoc">
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ae4d315ced89fd4074f5e3b1b3e2a4e29"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MESSAGE_FILTER_MAX_MESSAGE_ID&#160;&#160;&#160;256</td>
</tr>
</table>
</div><div class="memdoc">
<p>MessageIdentifier (ID_*) values shoudln't go higher than this. Change it if you do. </p>
<p>Definition at line <a class="el" href="../../d8/db9/_message_filter_8h_source.xhtml#l00033">33</a> of file <a class="el" href="../../d8/db9/_message_filter_8h_source.xhtml">MessageFilter.h</a>.</p>
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/db9/_message_filter_8h.xhtml">MessageFilter.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,251 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/MessageFilter.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/db9/_message_filter_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">MessageFilter.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/db9/_message_filter_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_MessageFilter==1</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#ifndef __MESSAGE_FILTER_PLUGIN_H</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __MESSAGE_FILTER_PLUGIN_H</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d49/types_8h.xhtml" title="Types used by RakNet, most of which involve user code.">types.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/ddd/_plugin_interface2_8h.xhtml" title="RakNet&#39;s plugin functionality system, version 2. You can derive from this to create your own plugins...">PluginInterface2.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d4d/_d_s___ordered_list_8h.xhtml">DS_OrderedList.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d2/d77/_d_s___hash_8h.xhtml">DS_Hash.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/dbd/_export_8h.xhtml">Export.h</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="../../d8/db9/_message_filter_8h.xhtml#ae4d315ced89fd4074f5e3b1b3e2a4e29"> 33</a></span>&#160;<span class="preprocessor">#define MESSAGE_FILTER_MAX_MESSAGE_ID 256</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="keyword">namespace </span>SLNet</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">class </span>RakPeerInterface;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a53e991e64fde527e283d10d70c7e7844">MessageFilterStrComp</a>( <span class="keywordtype">char</span> *<span class="keyword">const</span> &amp;key,<span class="keywordtype">char</span> *<span class="keyword">const</span> &amp;data );</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml"> 44</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml">FilterSet</a></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;{</div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a564550ac00c0d0e13cdbb6f29c32f08c"> 46</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a564550ac00c0d0e13cdbb6f29c32f08c">banOnFilterTimeExceed</a>;</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#aff04a8d4b2314dd8409ae056b9696d60"> 47</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#aff04a8d4b2314dd8409ae056b9696d60">kickOnDisallowedMessage</a>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a173297bbb59348714737e2c48f0601d4"> 48</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a173297bbb59348714737e2c48f0601d4">banOnDisallowedMessage</a>;</div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a30628699a65e58ea82f7459183f352b0"> 49</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">SLNet::TimeMS</a> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a30628699a65e58ea82f7459183f352b0">disallowedMessageBanTimeMS</a>;</div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#ac8dfa6d6c341fcd7c3b4a2b072f0cf62"> 50</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">SLNet::TimeMS</a> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#ac8dfa6d6c341fcd7c3b4a2b072f0cf62">timeExceedBanTimeMS</a>;</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#aef4070edea684b0e06d6bfd5c0fc9e39"> 51</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">SLNet::TimeMS</a> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#aef4070edea684b0e06d6bfd5c0fc9e39">maxMemberTimeMS</a>;</div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a6cde4c07ae0dbf398042ab5def7f9c0b"> 52</a></span>&#160; void (*<a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a6cde4c07ae0dbf398042ab5def7f9c0b">invalidMessageCallback</a>)(<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml" title="The main interface for network communications.">RakPeerInterface</a> *peer, <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> systemAddress, <span class="keywordtype">int</span> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a33e39b6dcc9672b44904af5e1b728ee0">filterSetID</a>, <span class="keywordtype">void</span> *userData, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> messageID);</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#ad7bd1fbdcc3b653f605fe4d4d21b6148"> 53</a></span>&#160; <span class="keywordtype">void</span> *<a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#ad7bd1fbdcc3b653f605fe4d4d21b6148">disallowedCallbackUserData</a>;</div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a2a059ea79bdb6aca8c71ef105628efae"> 54</a></span>&#160; void (*<a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a2a059ea79bdb6aca8c71ef105628efae">timeoutCallback</a>)(<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml" title="The main interface for network communications.">RakPeerInterface</a> *peer, <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> systemAddress, <span class="keywordtype">int</span> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a33e39b6dcc9672b44904af5e1b728ee0">filterSetID</a>, <span class="keywordtype">void</span> *userData);</div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a5d0c49edd25c300d26254ef1cf66a3fb"> 55</a></span>&#160; <span class="keywordtype">void</span> *<a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a5d0c49edd25c300d26254ef1cf66a3fb">timeoutUserData</a>;</div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a33e39b6dcc9672b44904af5e1b728ee0"> 56</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a33e39b6dcc9672b44904af5e1b728ee0">filterSetID</a>;</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#af60cfa37fa3c466d465533773afee634"> 57</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#af60cfa37fa3c466d465533773afee634">allowedIDs</a>[<a class="code" href="../../d8/db9/_message_filter_8h.xhtml#ae4d315ced89fd4074f5e3b1b3e2a4e29" title="MessageIdentifier (ID_*) values shoudln&#39;t go higher than this. Change it if you do.">MESSAGE_FILTER_MAX_MESSAGE_ID</a>];</div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a89d91247fa9679a6f244ef90872eef90"> 58</a></span>&#160; <a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList&lt;SLNet::RakString, SLNet::RakString&gt;</a> <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml#a89d91247fa9679a6f244ef90872eef90">allowedRPC4</a>;</div>
<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;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a494e2ce57113dcaef2f1be93ac280b46">FilterSetComp</a>( <span class="keyword">const</span> <span class="keywordtype">int</span> &amp;key, <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml">FilterSet</a> * <span class="keyword">const</span> &amp;data );</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml"> 65</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d6/db9/struct_s_l_net_1_1_filtered_system">FilteredSystem</a></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;{</div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a1b02975ea77ed32ba02dd52e92dc5b6d"> 67</a></span>&#160; <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml">FilterSet</a> *<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a1b02975ea77ed32ba02dd52e92dc5b6d">filter</a>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a8fba0b5f0ed7b5bdcb7f57b68325f4fb"> 68</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">SLNet::TimeMS</a> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a8fba0b5f0ed7b5bdcb7f57b68325f4fb">timeEnteredThisSet</a>;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;};</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml"> 85</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#d4/d96/class_s_l_net_1_1_message_filter" title="Assigns systems to FilterSets. Each FilterSet limits what kinds of messages are allowed.">MessageFilter</a> : <span class="keyword">public</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">PluginInterface2</a></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;{</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// GetInstance() and DestroyInstance(instance*)</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="../../db/dbd/_export_8h.xhtml#af3e49377f340027d211b2814949efc48">STATIC_FACTORY_DECLARATIONS</a>(<a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#d4/d96/class_s_l_net_1_1_message_filter" title="Assigns systems to FilterSets. Each FilterSet limits what kinds of messages are allowed.">MessageFilter</a>)</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; <a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#d4/d96/class_s_l_net_1_1_message_filter" title="Assigns systems to FilterSets. Each FilterSet limits what kinds of messages are allowed.">MessageFilter</a>();</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#d4/d96/class_s_l_net_1_1_message_filter" title="Assigns systems to FilterSets. Each FilterSet limits what kinds of messages are allowed.">MessageFilter</a>();</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// --------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// User functions</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// --------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">void</span> SetAutoAddNewConnectionsToFilter(<span class="keywordtype">int</span> filterSetID);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordtype">void</span> SetAllowMessageID(<span class="keywordtype">bool</span> allow, <span class="keywordtype">int</span> messageIDStart, <span class="keywordtype">int</span> messageIDEnd,<span class="keywordtype">int</span> filterSetID);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">void</span> SetAllowRPC4(<span class="keywordtype">bool</span> allow, <span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, <span class="keywordtype">int</span> filterSetID);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">void</span> SetActionOnDisallowedMessage(<span class="keywordtype">bool</span> kickOnDisallowed, <span class="keywordtype">bool</span> banOnDisallowed, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">SLNet::TimeMS</a> banTimeMS, <span class="keywordtype">int</span> filterSetID);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">void</span> SetDisallowedMessageCallback(<span class="keywordtype">int</span> filterSetID, <span class="keywordtype">void</span> *userData, <span class="keywordtype">void</span> (*invalidMessageCallback)(<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml" title="The main interface for network communications.">RakPeerInterface</a> *peer, <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> addressOrGUID, <span class="keywordtype">int</span> filterSetID, <span class="keywordtype">void</span> *userData, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> messageID));</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">void</span> SetTimeoutCallback(<span class="keywordtype">int</span> filterSetID, <span class="keywordtype">void</span> *userData, <span class="keywordtype">void</span> (*invalidMessageCallback)(<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml" title="The main interface for network communications.">RakPeerInterface</a> *peer, <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> addressOrGUID, <span class="keywordtype">int</span> filterSetID, <span class="keywordtype">void</span> *userData));</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">void</span> SetFilterMaxTime(<span class="keywordtype">int</span> allowedTimeMS, <span class="keywordtype">bool</span> banOnExceed, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">SLNet::TimeMS</a> banTimeMS, <span class="keywordtype">int</span> filterSetID);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">int</span> GetSystemFilterSet(<a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> addressOrGUID);</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">void</span> SetSystemFilterSet(<a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> addressOrGUID, <span class="keywordtype">int</span> filterSetID);</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">unsigned</span> GetSystemCount(<span class="keywordtype">int</span> filterSetID) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordtype">unsigned</span> GetFilterSetCount(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordtype">int</span> GetFilterSetIDByIndex(<span class="keywordtype">unsigned</span> index);</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">void</span> DeleteFilterSet(<span class="keywordtype">int</span> filterSetID);</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">// --------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// Packet handling functions</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// --------------------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> Update(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">virtual</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga5c8f613a7c294e0b96deccbdabc38f18">PluginReceiveResult</a> OnReceive(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnNewConnection(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID, <span class="keywordtype">bool</span> isIncoming);</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnClosedConnection(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID, <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga4d3ac5ca8821fadad6d22d0267e06803">PI2_LostConnectionReason</a> lostConnectionReason );</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keyword">protected</span>:</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; <span class="keywordtype">void</span> Clear(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordtype">void</span> DeallocateFilterSet(<a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml">FilterSet</a> *filterSet);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml">FilterSet</a>* GetFilterSetByID(<span class="keywordtype">int</span> filterSetID);</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordtype">void</span> OnInvalidMessage(<a class="code" href="../../d3/db6/struct_s_l_net_1_1_filter_set.xhtml">FilterSet</a> *filterSet, <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> systemAddress, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> messageID);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
<div class="line"><a name="l00191"></a><span class="lineno"><a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#a3b65f3f2faf2f79a73f52fbeeef7171b"> 191</a></span>&#160; <a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList&lt;int, FilterSet*, FilterSetComp&gt;</a> <a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#a3b65f3f2faf2f79a73f52fbeeef7171b">filterList</a>;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// Change to guid</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"><a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#aa92fd69f4d6e665eee21aa16a6383bdd"> 193</a></span>&#160; <a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml">DataStructures::Hash&lt;AddressOrGUID, FilteredSystem, 2048, AddressOrGUID::ToInteger&gt;</a> <a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#aa92fd69f4d6e665eee21aa16a6383bdd">systemList</a>;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#abdad214726dc103ce1ee4303dedcec61"> 195</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#abdad214726dc103ce1ee4303dedcec61">autoAddNewConnectionsToFilter</a>;</div>
<div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#a1a2e39a4812a6ce9b7a129ba5d9f8e18"> 196</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">SLNet::Time</a> <a class="code" href="../../dc/dba/group___m_e_s_s_a_g_e_f_i_l_t_e_r___g_r_o_u_p.xhtml#a1a2e39a4812a6ce9b7a129ba5d9f8e18">whenLastTimeoutCheck</a>;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;};</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;} <span class="comment">// namespace SLNet</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor">#endif // _RAKNET_SUPPORT_*</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/db9/_message_filter_8h.xhtml">MessageFilter.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,3 @@
<map id="SLNet::HTTPConnection2" name="SLNet::HTTPConnection2">
<area shape="rect" id="node2" href="$de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}" alt="" coords="32,5,213,332"/>
</map>

View File

@ -0,0 +1 @@
c44199f244feddbfd7985fe376154cc6

View File

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: SLNet::HTTPConnection2 Pages: 1 -->
<!--zoomable 578 -->
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<defs>
<circle id="rim" cx="0" cy="0" r="7"/>
<circle id="rim2" cx="0" cy="0" r="3.5"/>
<g id="zoomPlus">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomplus.mouseover" end="zoomplus.mouseout"/>
</use>
<path d="M-4,0h8M0,-4v8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="zoomMin">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomminus.mouseover" end="zoomminus.mouseout"/>
</use>
<path d="M-4,0h8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="dirArrow">
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="resetDef">
<use xlink:href="#rim2" fill="#404040">
<set attributeName="fill" to="#808080" begin="reset.mouseover" end="reset.mouseout"/>
</use>
</g>
</defs>
<script type="text/javascript">
var viewWidth = 184;
var viewHeight = 578;
var sectionId = 'dynsection-0';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>SLNet::HTTPConnection2</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-288.5 176,-288.5 176,-0.5 0,-0.5"/>
<text text-anchor="middle" x="88" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::HTTPConnection2</text>
<polyline fill="none" stroke="black" points="0,-269.5 176,-269.5 "/>
<text text-anchor="start" x="8" y="-257.5" font-family="Helvetica,sans-Serif" font-size="10.00"># pendingRequests</text>
<text text-anchor="start" x="8" y="-246.5" font-family="Helvetica,sans-Serif" font-size="10.00"># sentRequests</text>
<text text-anchor="start" x="8" y="-235.5" font-family="Helvetica,sans-Serif" font-size="10.00"># completedRequests</text>
<text text-anchor="start" x="8" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00"># pendingRequestsMutex</text>
<text text-anchor="start" x="8" y="-213.5" font-family="Helvetica,sans-Serif" font-size="10.00"># sentRequestsMutex</text>
<text text-anchor="start" x="8" y="-202.5" font-family="Helvetica,sans-Serif" font-size="10.00"># completedRequestsMutex</text>
<polyline fill="none" stroke="black" points="0,-195.5 176,-195.5 "/>
<text text-anchor="start" x="8" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HTTPConnection2()</text>
<text text-anchor="start" x="8" y="-172.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~HTTPConnection2()</text>
<text text-anchor="start" x="8" y="-161.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TransmitRequest()</text>
<text text-anchor="start" x="8" y="-150.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetResponse()</text>
<text text-anchor="start" x="8" y="-139.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetResponse()</text>
<text text-anchor="start" x="8" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsBusy()</text>
<text text-anchor="start" x="8" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasResponse()</text>
<text text-anchor="start" x="8" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnFailedConnectionAttempt()</text>
<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IsConnected()</text>
<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendRequest()</text>
<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00"># RemovePendingRequest()</text>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendNextPendingRequest()</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendPendingRequestToConnected</text>
<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">System()</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" target="_top" xlink:title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}">
<polygon fill="none" stroke="black" points="20,-325.5 20,-569.5 156,-569.5 156,-325.5 20,-325.5"/>
<text text-anchor="middle" x="88" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::PluginInterface2</text>
<polyline fill="none" stroke="black" points="20,-550.5 156,-550.5 "/>
<text text-anchor="start" x="28" y="-538.5" font-family="Helvetica,sans-Serif" font-size="10.00"># rakPeerInterface</text>
<text text-anchor="start" x="28" y="-527.5" font-family="Helvetica,sans-Serif" font-size="10.00"># tcpInterface</text>
<polyline fill="none" stroke="black" points="20,-520.5 156,-520.5 "/>
<text text-anchor="start" x="28" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PluginInterface2()</text>
<text text-anchor="start" x="28" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~PluginInterface2()</text>
<text text-anchor="start" x="28" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnAttach()</text>
<text text-anchor="start" x="28" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnDetach()</text>
<text text-anchor="start" x="28" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Update()</text>
<text text-anchor="start" x="28" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="28" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerStartup()</text>
<text text-anchor="start" x="28" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerShutdown()</text>
<text text-anchor="start" x="28" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="28" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="28" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
<text text-anchor="start" x="28" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="28" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="28" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendListUnified()</text>
<text text-anchor="start" x="28" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00"># AllocatePacketUnified()</text>
<text text-anchor="start" x="28" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00"># PushBackPacketUnified()</text>
<text text-anchor="start" x="28" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DeallocPacketUnified()</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M88,-315.118C88,-306.342 88,-297.477 88,-288.647"/>
<polygon fill="none" stroke="midnightblue" points="84.5001,-315.373 88,-325.373 91.5001,-315.373 84.5001,-315.373"/>
</g>
</g>
</svg>
<g id="navigator" transform="translate(0 0)" fill="#404254">
<rect fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width=".5" x="0" y="0" width="60" height="60"/>
<use id="zoomplus" xlink:href="#zoomPlus" x="17" y="9" onmousedown="handleZoom(evt,'in')"/>
<use id="zoomminus" xlink:href="#zoomMin" x="42" y="9" onmousedown="handleZoom(evt,'out')"/>
<use id="reset" xlink:href="#resetDef" x="30" y="36" onmousedown="handleReset()"/>
<g id="arrowUp" xlink:href="#dirArrow" transform="translate(30 24)" onmousedown="handlePan(0,-1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowUp.mouseover" end="arrowUp.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowRight" xlink:href="#dirArrow" transform="rotate(90) translate(36 -43)" onmousedown="handlePan(1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowRight.mouseover" end="arrowRight.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowDown" xlink:href="#dirArrow" transform="rotate(180) translate(-30 -48)" onmousedown="handlePan(0,1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowDown.mouseover" end="arrowDown.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowLeft" xlink:href="#dirArrow" transform="rotate(270) translate(-36 17)" onmousedown="handlePan(-1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowLeft.mouseover" end="arrowLeft.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
</g>
<svg viewBox="0 0 15 15" width="100%" height="30px" preserveAspectRatio="xMaxYMin meet">
<g id="arrow_out" transform="scale(0.3 0.3)">
<a xlink:href="class_s_l_net_1_1_h_t_t_p_connection2__inherit__graph_org.svg" target="_base">
<rect id="button" ry="5" rx="5" y="6" x="6" height="38" width="38"
fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width="1.0"/>
<path id="arrow"
d="M 11.500037,31.436501 C 11.940474,20.09759 22.043105,11.32322 32.158766,21.979434 L 37.068811,17.246167 C 37.068811,17.246167 37.088388,32 37.088388,32 L 22.160133,31.978069 C 22.160133,31.978069 26.997745,27.140456 26.997745,27.140456 C 18.528582,18.264221 13.291696,25.230495 11.500037,31.436501 z"
style="fill:#404040;"/>
</a>
</g>
</svg>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: SLNet::HTTPConnection2 Pages: 1 -->
<svg width="184pt" height="578pt"
viewBox="0.00 0.00 184.00 578.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 574)">
<title>SLNet::HTTPConnection2</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-288.5 176,-288.5 176,-0.5 0,-0.5"/>
<text text-anchor="middle" x="88" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::HTTPConnection2</text>
<polyline fill="none" stroke="black" points="0,-269.5 176,-269.5 "/>
<text text-anchor="start" x="8" y="-257.5" font-family="Helvetica,sans-Serif" font-size="10.00"># pendingRequests</text>
<text text-anchor="start" x="8" y="-246.5" font-family="Helvetica,sans-Serif" font-size="10.00"># sentRequests</text>
<text text-anchor="start" x="8" y="-235.5" font-family="Helvetica,sans-Serif" font-size="10.00"># completedRequests</text>
<text text-anchor="start" x="8" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00"># pendingRequestsMutex</text>
<text text-anchor="start" x="8" y="-213.5" font-family="Helvetica,sans-Serif" font-size="10.00"># sentRequestsMutex</text>
<text text-anchor="start" x="8" y="-202.5" font-family="Helvetica,sans-Serif" font-size="10.00"># completedRequestsMutex</text>
<polyline fill="none" stroke="black" points="0,-195.5 176,-195.5 "/>
<text text-anchor="start" x="8" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HTTPConnection2()</text>
<text text-anchor="start" x="8" y="-172.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~HTTPConnection2()</text>
<text text-anchor="start" x="8" y="-161.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TransmitRequest()</text>
<text text-anchor="start" x="8" y="-150.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetResponse()</text>
<text text-anchor="start" x="8" y="-139.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetResponse()</text>
<text text-anchor="start" x="8" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsBusy()</text>
<text text-anchor="start" x="8" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasResponse()</text>
<text text-anchor="start" x="8" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnFailedConnectionAttempt()</text>
<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IsConnected()</text>
<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendRequest()</text>
<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00"># RemovePendingRequest()</text>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendNextPendingRequest()</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendPendingRequestToConnected</text>
<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">System()</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" target="_top" xlink:title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}">
<polygon fill="none" stroke="black" points="20,-325.5 20,-569.5 156,-569.5 156,-325.5 20,-325.5"/>
<text text-anchor="middle" x="88" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::PluginInterface2</text>
<polyline fill="none" stroke="black" points="20,-550.5 156,-550.5 "/>
<text text-anchor="start" x="28" y="-538.5" font-family="Helvetica,sans-Serif" font-size="10.00"># rakPeerInterface</text>
<text text-anchor="start" x="28" y="-527.5" font-family="Helvetica,sans-Serif" font-size="10.00"># tcpInterface</text>
<polyline fill="none" stroke="black" points="20,-520.5 156,-520.5 "/>
<text text-anchor="start" x="28" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PluginInterface2()</text>
<text text-anchor="start" x="28" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~PluginInterface2()</text>
<text text-anchor="start" x="28" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnAttach()</text>
<text text-anchor="start" x="28" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnDetach()</text>
<text text-anchor="start" x="28" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Update()</text>
<text text-anchor="start" x="28" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="28" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerStartup()</text>
<text text-anchor="start" x="28" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerShutdown()</text>
<text text-anchor="start" x="28" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="28" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="28" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
<text text-anchor="start" x="28" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="28" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="28" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendListUnified()</text>
<text text-anchor="start" x="28" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00"># AllocatePacketUnified()</text>
<text text-anchor="start" x="28" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00"># PushBackPacketUnified()</text>
<text text-anchor="start" x="28" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DeallocPacketUnified()</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M88,-315.118C88,-306.342 88,-297.477 88,-288.647"/>
<polygon fill="none" stroke="midnightblue" points="84.5001,-315.373 88,-325.373 91.5001,-315.373 84.5001,-315.373"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -0,0 +1,123 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/PS3Includes.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/dbe/_p_s3_includes_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">PS3Includes.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="../../d8/dbe/_p_s3_includes_8h_source.xhtml">Go to the source code of this file.</a></p>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/dbe/_p_s3_includes_8h.xhtml">PS3Includes.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,200 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/PS3Includes.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/dbe/_p_s3_includes_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">PS3Includes.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/dbe/_p_s3_includes_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * This file was taken from RakNet 4.082 without any modifications.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Please see licenses/RakNet license.txt for the underlying license and related copyright.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</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;</div>
<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;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</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;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</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;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</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;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</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;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</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;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</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;</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;</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/dbe/_p_s3_includes_8h.xhtml">PS3Includes.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,38 @@
var struct_s_l_net_1_1_system_address =
[
[ "SystemAddress", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ac8ef76a0c6926f3aa26768ad7d40ed5d", null ],
[ "SystemAddress", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a28f83756754f6396af6eb22121611247", null ],
[ "SystemAddress", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a942e43d24989def5c1a49c97bb8ecfbe", null ],
[ "CopyPort", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a9750eb4a3b71d71ff00d6ed856a1c5c9", null ],
[ "EqualsExcludingPort", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a5915af5dc768047a85938ae1a7a9b034", null ],
[ "FixForIPVersion", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#aa583d4ecc056ca5430eec9081213d52e", null ],
[ "FromString", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#acdd52cd5981fd1b58ff68ba52a98a13e", null ],
[ "FromStringExplicitPort", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a8a7cfd12b532b744d42bad6ed6b5f089", null ],
[ "GetIPPROTO", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a3e5cd976c057d99cd0cfd972cd9f9789", null ],
[ "GetIPVersion", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ad5b388ed6b6716d09042dcf3e363733a", null ],
[ "GetPort", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#afdd4a14b98b7e7b9f69afc30e8fe0d47", null ],
[ "GetPortNetworkOrder", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a311649e2a5619e10ddfb3585d5874e38", null ],
[ "IsLANAddress", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a4de69b4e577f31f50aba4a4d9a7f0a19", null ],
[ "IsLoopback", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ac9d938134d82e42d216903e2d4bc152f", null ],
[ "operator!=", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ad42f34e7780fa5f102cad67cc1438454", null ],
[ "operator<", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a29b81b769ffd8578dd5fd73824b9b803", null ],
[ "operator=", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ad32d4ac04f8def766f9c8a937b72d943", null ],
[ "operator==", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a4663fcb0034686cf46857c39bf45de90", null ],
[ "operator>", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#abebf47196ae436746197098514854e81", null ],
[ "SetBinaryAddress", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a34071dfa14d9faa8a7e28e6d1491cb92", null ],
[ "SetPortHostOrder", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a5f42b847875bcf297eda4ebadeda7abe", null ],
[ "SetPortNetworkOrder", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#aabe9a3741607e1e6772cae6ed1443ef1", null ],
[ "SetToLoopback", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#aca7760ea7186a59a70697634d9d585d7", null ],
[ "SetToLoopback", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a889998f29cf6e547e5fccd7da2e2c0a6", null ],
[ "size", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a095761d85f4ccef00a46c6c5d45d3cc7", null ],
[ "ToInteger", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ae283da58448d126c440fee04dfdce2c6", null ],
[ "ToString", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a7a994f9c414b5fd7094017b43e7c102b", null ],
[ "ToString", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a1ed3718bc19678614905b94c2396edd5", null ],
[ "ToString", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a930f9743c27f8c88f4dd445baf2eba39", null ],
[ "ToString_Old", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ae6fa77027c7b71489430e9acc6bcdd0c", null ],
[ "ToString_Old", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a44b753f9891b3e7ca67129b5ba18609d", null ],
[ "address", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#ab9652ec65cfbbf702d84ff340b12da47", null ],
[ "debugPort", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a2707e26293ed8eabfb8a699ac24ce14e", null ],
[ "systemIndex", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#aac702cdf872b7c57376b2e379845c150", null ],
[ "union", "d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a844163fff310f34520db616f9c9a50ff", null ]
];

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,128 @@
<!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"/>
<title>SLikeNet: Member List</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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><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="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#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('df/d02/class_s_l_net_1_1_incremental_read_interface.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">SLNet::IncrementalReadInterface Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../df/d02/class_s_l_net_1_1_incremental_read_interface.xhtml">SLNet::IncrementalReadInterface</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../df/d02/class_s_l_net_1_1_incremental_read_interface.xhtml#a3c77311efc0ce83c6f48eab70535ece4">GetFilePart</a>(const char *filename, unsigned int startReadBytes, unsigned int numBytesToRead, void *preallocatedDestination, FileListNodeContext context)</td><td class="entry"><a class="el" href="../../df/d02/class_s_l_net_1_1_incremental_read_interface.xhtml">SLNet::IncrementalReadInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../df/d02/class_s_l_net_1_1_incremental_read_interface.xhtml#a7ac9bc491609b10af538d5d4f9fc4da6">IncrementalReadInterface</a>()</td><td class="entry"><a class="el" href="../../df/d02/class_s_l_net_1_1_incremental_read_interface.xhtml">SLNet::IncrementalReadInterface</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../df/d02/class_s_l_net_1_1_incremental_read_interface.xhtml#a962a6c52c2d89deb78bdb2f7d6371a6d">~IncrementalReadInterface</a>()</td><td class="entry"><a class="el" href="../../df/d02/class_s_l_net_1_1_incremental_read_interface.xhtml">SLNet::IncrementalReadInterface</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,124 @@
<!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"/>
<title>SLikeNet: Source/src/RPC4Plugin.cpp File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/dd3/_r_p_c4_plugin_8cpp.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">RPC4Plugin.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/dd3/_r_p_c4_plugin_8cpp_source.xhtml">Go to the source code of this file.</a></p>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/dd3/_r_p_c4_plugin_8cpp.xhtml">RPC4Plugin.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,757 @@
<!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"/>
<title>SLikeNet: Source/src/RPC4Plugin.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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/dd3/_r_p_c4_plugin_8cpp_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">RPC4Plugin.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/dd3/_r_p_c4_plugin_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_RPC4Plugin==1</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d0/d30/_r_p_c4_plugin_8h.xhtml" title="Remote procedure call, supporting C functions only. No external dependencies required.">slikenet/RPC4Plugin.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml" title="All the message identifiers used by RakNet. Message identifiers comprise the first byte of any messag...">slikenet/MessageIdentifiers.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/d85/peerinterface_8h.xhtml" title="An interface for RakPeer. Simply contains all user functions as pure virtuals.">slikenet/peerinterface.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d2/dd1/_packetized_t_c_p_8h.xhtml" title="A simple TCP based server allowing sends and receives. Can be connected by any TCP client...">slikenet/PacketizedTCP.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d81/sleep_8h.xhtml">slikenet/sleep.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d8/db0/defines_8h.xhtml">slikenet/defines.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/d8d/_d_s___queue_8h.xhtml">slikenet/DS_Queue.h</a>&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">//#include &quot;slikenet/GetTime.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/db2/linux__adapter_8h.xhtml">slikenet/linux_adapter.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../da/dff/osx__adapter_8h.xhtml">slikenet/osx_adapter.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<a class="code" href="../../db/dbd/_export_8h.xhtml#aa00165c970bdb25e1c757b432509533b">STATIC_FACTORY_DEFINITIONS</a>(<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#de/d58/class_s_l_net_1_1_r_p_c4" title="The RPC4 plugin is just an association between a C function pointer and a string.">RPC4</a>,<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#de/d58/class_s_l_net_1_1_r_p_c4" title="The RPC4 plugin is just an association between a C function pointer and a string.">RPC4</a>);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">struct </span>GlobalRegistration</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; void ( *registerFunctionPointer ) (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *userData, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet );</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; void ( *registerBlockingFunctionPointer ) (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *userData, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *returnData, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet );</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">char</span> functionName[<a class="code" href="../../d8/db0/defines_8h.xhtml#afbacf5808b1cd387e42d32823cafa5b8">RPC4_GLOBAL_REGISTRATION_MAX_FUNCTION_NAME_LENGTH</a>];</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a> messageId;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">int</span> callPriority;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;};</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">static</span> GlobalRegistration globalRegistrationBuffer[<a class="code" href="../../d8/db0/defines_8h.xhtml#aeed5dc2e94045a66017b9cf04488aa6f">RPC4_GLOBAL_REGISTRATION_MAX_FUNCTIONS</a>];</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> globalRegistrationIndex=0;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<a class="code" href="../../d2/d79/class_s_l_net_1_1_r_p_c4_global_registration.xhtml#abd4f3d9e62dcd92bb9e9c19d970d5fab" title="Queue a call to RPC4::RegisterFunction() globally. Actual call occurs once RPC4 is attached to an ins...">RPC4GlobalRegistration::RPC4GlobalRegistration</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, <span class="keywordtype">void</span> ( *functionPointer ) (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *userData, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet ))</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; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(globalRegistrationIndex!=<a class="code" href="../../d8/db0/defines_8h.xhtml#aeed5dc2e94045a66017b9cf04488aa6f">RPC4_GLOBAL_REGISTRATION_MAX_FUNCTIONS</a>);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span> (i=0; uniqueID[i]; i++)</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(i&lt;=<a class="code" href="../../d8/db0/defines_8h.xhtml#afbacf5808b1cd387e42d32823cafa5b8">RPC4_GLOBAL_REGISTRATION_MAX_FUNCTION_NAME_LENGTH</a>-1);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].functionName[i]=uniqueID[i];</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].registerFunctionPointer=functionPointer;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].registerBlockingFunctionPointer=0;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].callPriority=0xFFFFFFFF;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; globalRegistrationIndex++;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<a class="code" href="../../d2/d79/class_s_l_net_1_1_r_p_c4_global_registration.xhtml#abd4f3d9e62dcd92bb9e9c19d970d5fab" title="Queue a call to RPC4::RegisterFunction() globally. Actual call occurs once RPC4 is attached to an ins...">RPC4GlobalRegistration::RPC4GlobalRegistration</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, <span class="keywordtype">void</span> ( *functionPointer ) (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *userData, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet ), <span class="keywordtype">int</span> callPriority)</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;{</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(globalRegistrationIndex!=<a class="code" href="../../d8/db0/defines_8h.xhtml#aeed5dc2e94045a66017b9cf04488aa6f">RPC4_GLOBAL_REGISTRATION_MAX_FUNCTIONS</a>);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span> (i=0; uniqueID[i]; i++)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(i&lt;=<a class="code" href="../../d8/db0/defines_8h.xhtml#afbacf5808b1cd387e42d32823cafa5b8">RPC4_GLOBAL_REGISTRATION_MAX_FUNCTION_NAME_LENGTH</a>-1);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].functionName[i]=uniqueID[i];</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].registerFunctionPointer=functionPointer;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].registerBlockingFunctionPointer=0;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(callPriority!=(<span class="keywordtype">int</span>) 0xFFFFFFFF);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].callPriority=callPriority;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; globalRegistrationIndex++;</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;<a class="code" href="../../d2/d79/class_s_l_net_1_1_r_p_c4_global_registration.xhtml#abd4f3d9e62dcd92bb9e9c19d970d5fab" title="Queue a call to RPC4::RegisterFunction() globally. Actual call occurs once RPC4 is attached to an ins...">RPC4GlobalRegistration::RPC4GlobalRegistration</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, <span class="keywordtype">void</span> ( *functionPointer ) (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *userData, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *returnData, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet ))</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(globalRegistrationIndex!=<a class="code" href="../../d8/db0/defines_8h.xhtml#aeed5dc2e94045a66017b9cf04488aa6f">RPC4_GLOBAL_REGISTRATION_MAX_FUNCTIONS</a>);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (i=0; uniqueID[i]; i++)</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(i&lt;=<a class="code" href="../../d8/db0/defines_8h.xhtml#afbacf5808b1cd387e42d32823cafa5b8">RPC4_GLOBAL_REGISTRATION_MAX_FUNCTION_NAME_LENGTH</a>-1);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].functionName[i]=uniqueID[i];</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].registerFunctionPointer=0;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].registerBlockingFunctionPointer=functionPointer;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; globalRegistrationIndex++;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<a class="code" href="../../d2/d79/class_s_l_net_1_1_r_p_c4_global_registration.xhtml#abd4f3d9e62dcd92bb9e9c19d970d5fab" title="Queue a call to RPC4::RegisterFunction() globally. Actual call occurs once RPC4 is attached to an ins...">RPC4GlobalRegistration::RPC4GlobalRegistration</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a> messageId)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(globalRegistrationIndex!=<a class="code" href="../../d8/db0/defines_8h.xhtml#aeed5dc2e94045a66017b9cf04488aa6f">RPC4_GLOBAL_REGISTRATION_MAX_FUNCTIONS</a>);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">for</span> (i=0; uniqueID[i]; i++)</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(i&lt;=<a class="code" href="../../d8/db0/defines_8h.xhtml#afbacf5808b1cd387e42d32823cafa5b8">RPC4_GLOBAL_REGISTRATION_MAX_FUNCTION_NAME_LENGTH</a>-1);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].functionName[i]=uniqueID[i];</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; globalRegistrationBuffer[globalRegistrationIndex].registerFunctionPointer=0;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].registerBlockingFunctionPointer=0;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; globalRegistrationBuffer[globalRegistrationIndex].messageId=messageId;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; globalRegistrationIndex++;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">enum</span> RPC4Identifiers</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;{</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; ID_RPC4_CALL,</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; ID_RPC4_RETURN,</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; ID_RPC4_SIGNAL,</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;};</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#abe1b27195128d90fb4fbf3a4b96fabe8">RPC4::LocalSlotObjectComp</a>( <span class="keyword">const</span> LocalSlotObject &amp;key, <span class="keyword">const</span> LocalSlotObject &amp;data )</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="keywordflow">if</span> (key.callPriority&gt;data.callPriority)</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> (key.callPriority==data.callPriority)</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (key.registrationCount&lt;data.registrationCount)</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (key.registrationCount==data.registrationCount)</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;}</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#aeaa88b77476e12830903a7962be1458a">RPC4::LocalCallbackComp</a>(<span class="keyword">const</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a> &amp;key, <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#d2/d7d/struct_s_l_net_1_1_r_p_c4_1_1_local_callback">RPC4::LocalCallback</a>* <span class="keyword">const</span> &amp;data )</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; <span class="keywordflow">if</span> (key &lt; data-&gt;messageId)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (key &gt; data-&gt;<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ab3f0bb19b886c587d873d8e4eecbeb4e">messageId</a>)</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a8cf7fc7da3d60685da38f0e9fba2b506">RPC4::RPC4</a>()</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; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a42c6def740ccc00e4e43d3654ec91aa8">gotBlockingReturnValue</a>=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a13e1e510840bb04488c9d65c367872ac" title="Used so slots are called in the order they are registered.">nextSlotRegistrationCount</a>=0;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a11e089e6f6518965d73bef62ed54b70a">interruptSignal</a>=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#acf17a28094d0763464b43b3d8df7428c">RPC4::~RPC4</a>()</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;{</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3d27be774422190974d5fe9bffe3f7a1">localCallbacks</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>(); i++)</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; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3d27be774422190974d5fe9bffe3f7a1">localCallbacks</a>[i],<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;SLNet::RakString&gt;</a> keyList;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;LocalSlot*&gt;</a> outputList;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a10d4e81e8087d55073e34c0677f569f0">GetAsList</a>(outputList,keyList,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; outputList.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); j++)</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="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(outputList[j],<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#adcbf7b437513650734419bd55f736276" title="Clear the list.">Clear</a>(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</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="keywordtype">bool</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a76d4f1373c622cf1a1d2c6b2bda30fd5" title="Register a function pointer to be callable from a remote system.">RPC4::RegisterFunction</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, <span class="keywordtype">void</span> ( *functionPointer ) (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *userData, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet ))</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="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> skhi = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a931e229b11729ab1d674aff512092d6e">registeredNonblockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(uniqueID);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (skhi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>()==<span class="keyword">false</span>)</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; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a931e229b11729ab1d674aff512092d6e">registeredNonblockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a1cd78525c3b53c60fc5a6f1f722d53f2">Push</a>(uniqueID,functionPointer,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</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="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a08c1f1cde743bf2e8dbb2eea2031e9ab">RPC4::RegisterSlot</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *sharedIdentifier, <span class="keywordtype">void</span> ( *functionPointer ) (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *userData, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet ), <span class="keywordtype">int</span> callPriority)</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;{</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; LocalSlotObject lso(<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a13e1e510840bb04488c9d65c367872ac" title="Used so slots are called in the order they are registered.">nextSlotRegistrationCount</a>++, callPriority, functionPointer);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> idx = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a99b121d95631c2b115d924301ef0f2db">GetLocalSlotIndex</a>(sharedIdentifier);</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; LocalSlot *localSlot;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span> (idx.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>())</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; localSlot = SLNet::OP_NEW&lt;LocalSlot&gt;(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a1cd78525c3b53c60fc5a6f1f722d53f2">Push</a>(sharedIdentifier, localSlot,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; localSlot=<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5fec5e2f5f479ddeebefe9a0ff1c50e4">ItemAtIndex</a>(idx);</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; localSlot-&gt;<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a75d9d2c343ebe27effb3cfd12664cbbd">slotObjects</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a30d44cd52bdb782478472a95cc5a4b0a">Insert</a>(lso,lso,<span class="keyword">true</span>,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</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;<span class="keywordtype">bool</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ad3b069b947e161794586f7b5c7addf00" title="Same as RegisterFunction, but is called with CallBlocking() instead of Call() and returns a value to ...">RPC4::RegisterBlockingFunction</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, <span class="keywordtype">void</span> ( *functionPointer ) (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *userData, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *returnData, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet ))</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;{</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> skhi = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a521111ffd556bddcf29ae207187063b6">registeredBlockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(uniqueID);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (skhi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</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; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a521111ffd556bddcf29ae207187063b6">registeredBlockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a1cd78525c3b53c60fc5a6f1f722d53f2">Push</a>(uniqueID,functionPointer,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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;<span class="keywordtype">void</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a508f3a63f49f9b76f55cae0dceb9fd21">RPC4::RegisterLocalCallback</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a> messageId)</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; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; LocalCallback *lc;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> str;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; str=uniqueID;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; index = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3d27be774422190974d5fe9bffe3f7a1">localCallbacks</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(messageId,&amp;objectExists);</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (objectExists)</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; lc = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3d27be774422190974d5fe9bffe3f7a1">localCallbacks</a>[index];</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; index = lc-&gt;functions.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(str,&amp;objectExists);</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (objectExists==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; lc-&gt;functions.InsertAtIndex(str,index,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span></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; lc = SLNet::OP_NEW&lt;LocalCallback&gt;(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; lc-&gt;messageId=messageId;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; lc-&gt;functions.Insert(str,str,<span class="keyword">false</span>,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3d27be774422190974d5fe9bffe3f7a1">localCallbacks</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a9ed08b2c35b20d08ebfab17927f5c4a2">InsertAtIndex</a>(lc,index,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</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;}</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a7b44e827b381d406b9889b756019bc87" title="Unregister a function pointer previously registered with RegisterFunction()">RPC4::UnregisterFunction</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID)</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; void ( *f ) (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> * );</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a931e229b11729ab1d674aff512092d6e">registeredNonblockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5c3f84193a5b2d74f0138a340215679a">Pop</a>(f,uniqueID,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#afdb98185e7eb00039ccec299fcf48181" title="Same as UnregisterFunction, except for a blocking function.">RPC4::UnregisterBlockingFunction</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID)</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;{</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; void ( *f ) (<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *,<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> * );</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a521111ffd556bddcf29ae207187063b6">registeredBlockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5c3f84193a5b2d74f0138a340215679a">Pop</a>(f,uniqueID,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</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;<span class="keywordtype">bool</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3c8b7eb5242eb1b2acf428b5bc338b09">RPC4::UnregisterLocalCallback</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a> messageId)</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;{</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index, index2;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; LocalCallback *lc;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> str;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; str=uniqueID;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; index = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3d27be774422190974d5fe9bffe3f7a1">localCallbacks</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(messageId,&amp;objectExists);</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (objectExists)</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; lc = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3d27be774422190974d5fe9bffe3f7a1">localCallbacks</a>[index];</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; index2 = lc-&gt;functions.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(str,&amp;objectExists);</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (objectExists)</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; lc-&gt;functions.RemoveAtIndex(index2);</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (lc-&gt;functions.Size()==0)</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(lc,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3d27be774422190974d5fe9bffe3f7a1">localCallbacks</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a65ef0eca14deb8698004b1cd074b6f0a">RemoveAtIndex</a>(index);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a766fec24de630fcc714f0d5b3431821c">RPC4::UnregisterSlot</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* sharedIdentifier)</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;{</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> hi = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(sharedIdentifier);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (hi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; LocalSlot *ls = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5fec5e2f5f479ddeebefe9a0ff1c50e4">ItemAtIndex</a>(hi);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(ls, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a72237d005a83cfc02f2b573ac4336cd0">RemoveAtIndex</a>(hi, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; </div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;}</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a09dc786630a940baae7166f49823ee7f">RPC4::CallLoopback</a>( <span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, SLNet::BitStream * bitStream )</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;{</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *p=0;</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> skhi = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a931e229b11729ab1d674aff512092d6e">registeredNonblockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(uniqueID);</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; <span class="keywordflow">if</span> (skhi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>()==<span class="keyword">true</span>)</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; <span class="keywordflow">if</span> (<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>) </div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; p=<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aed235e7933ca7f30448eb9c91cefab63">AllocatePacketUnified</a>(<span class="keyword">sizeof</span>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)+<span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)+(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) strlen(uniqueID)+1);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_PacketizedTCP==1 &amp;&amp; _RAKNET_SUPPORT_TCPInterface==1</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">else</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; p=<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ac298ef92904df807a3248e380e8edf43">tcpInterface</a>-&gt;<a class="code" href="../../df/dd8/class_s_l_net_1_1_t_c_p_interface.xhtml#a84ab36f6d36c31690c80bb5e51f2d016" title="Return an allocated but empty packet, for custom use.">AllocatePacket</a>(<span class="keyword">sizeof</span>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)+<span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)+(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) strlen(uniqueID)+1);</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>)</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4f42e82893aff6aade8a45c79d1b8fd3">guid</a>=<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a19e5960d76ee5af2ca108978daa2fcff">GetGuidFromSystemAddress</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>);</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_PacketizedTCP==1 &amp;&amp; _RAKNET_SUPPORT_TCPInterface==1</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">else</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4f42e82893aff6aade8a45c79d1b8fd3">guid</a>=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a242c86300509ec068e5e2ea534bbba51">UNASSIGNED_RAKNET_GUID</a>;</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>;</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>.<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#aac702cdf872b7c57376b2e379845c150">systemIndex</a>=(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aaebbed028894590d770e7fcf8518c441">SystemIndex</a>)-1;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]=<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a85a5903d5d7ededbe634484af8dfaad5">ID_RPC_REMOTE_ERROR</a>;</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[1]=<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ggaf57aae36449dec5f2df3be031e658dc9a1407810710bd678545cbe27c91263530" title="Named function was not registered with RegisterFunction(). Check your spelling.">RPC_ERROR_FUNCTION_NOT_REGISTERED</a>;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; strcpy_s((<span class="keywordtype">char</span>*) p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>+2, p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>-2, uniqueID);</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; </div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a00bb796b830ec2130b4c11ed13c3e838">PushBackPacketUnified</a>(p,<span class="keyword">false</span>);</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; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</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; SLNet::BitStream out;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) <a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3ad63d6f03ee2fe6a54f6a20907f000c02" title="Plugin based replacement for RPC system.">ID_RPC_PLUGIN</a>);</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) ID_RPC4_CALL);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a24121050ec7d63a6eba5d1b243b4922b" title="Write any integral type to a bitstream.">WriteCompressed</a>(uniqueID);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<span class="keyword">false</span>); <span class="comment">// nonblocking</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (bitStream)</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; bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a4868f40943c8e349500ec6de3a69df20" title="Sets the read pointer back to the beginning of your data.">ResetReadPointer</a>();</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a1083ab999b52c839709eab5cff65a68d" title="Align the next write and/or read to a byte boundary.">AlignWriteToByteBoundary</a>();</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(bitStream);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>) </div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; p=<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aed235e7933ca7f30448eb9c91cefab63">AllocatePacketUnified</a>(out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>());</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_PacketizedTCP==1 &amp;&amp; _RAKNET_SUPPORT_TCPInterface==1</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">else</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; p=<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ac298ef92904df807a3248e380e8edf43">tcpInterface</a>-&gt;<a class="code" href="../../df/dd8/class_s_l_net_1_1_t_c_p_interface.xhtml#a84ab36f6d36c31690c80bb5e51f2d016" title="Return an allocated but empty packet, for custom use.">AllocatePacket</a>(out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>());</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>)</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4f42e82893aff6aade8a45c79d1b8fd3">guid</a>=<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a19e5960d76ee5af2ca108978daa2fcff">GetGuidFromSystemAddress</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>);</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_PacketizedTCP==1 &amp;&amp; _RAKNET_SUPPORT_TCPInterface==1</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">else</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; p-&gt;guid=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a242c86300509ec068e5e2ea534bbba51">UNASSIGNED_RAKNET_GUID</a>;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="preprocessor"></span> p-&gt;systemAddress=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; p-&gt;systemAddress.<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#aac702cdf872b7c57376b2e379845c150">systemIndex</a>=(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aaebbed028894590d770e7fcf8518c441">SystemIndex</a>)-1;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; memcpy(p-&gt;data,out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a7b4099386f6f116f0978b00ead160a0d">GetData</a>(),out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>());</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a00bb796b830ec2130b4c11ed13c3e838">PushBackPacketUnified</a>(p,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span>;</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="keywordtype">void</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a1614d680409aa30ea7c79112ad9a6877">RPC4::Call</a>( <span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, SLNet::BitStream * bitStream, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705c" title="These enumerations are used to describe when packets are delivered.">PacketPriority</a> priority, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7e">PacketReliability</a> reliability, <span class="keywordtype">char</span> orderingChannel, <span class="keyword">const</span> <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> systemIdentifier, <span class="keywordtype">bool</span> broadcast )</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;{</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; SLNet::BitStream out;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) ID_RPC_PLUGIN);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) ID_RPC4_CALL);</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a24121050ec7d63a6eba5d1b243b4922b" title="Write any integral type to a bitstream.">WriteCompressed</a>(uniqueID);</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<span class="keyword">false</span>); <span class="comment">// Nonblocking</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">if</span> (bitStream)</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a4868f40943c8e349500ec6de3a69df20" title="Sets the read pointer back to the beginning of your data.">ResetReadPointer</a>();</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a1083ab999b52c839709eab5cff65a68d" title="Align the next write and/or read to a byte boundary.">AlignWriteToByteBoundary</a>();</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(bitStream);</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;out,priority,reliability,orderingChannel,systemIdentifier,broadcast);</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;}</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a417b68c1979b3948a568c57d6cdf7d24" title="Same as call, but don&#39;t return until the remote system replies. Broadcasting parameter does not exist...">RPC4::CallBlocking</a>( <span class="keyword">const</span> <span class="keywordtype">char</span>* uniqueID, SLNet::BitStream * bitStream, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705c" title="These enumerations are used to describe when packets are delivered.">PacketPriority</a> priority, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7e">PacketReliability</a> reliability, <span class="keywordtype">char</span> orderingChannel, <span class="keyword">const</span> <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> systemIdentifier, SLNet::BitStream *returnData )</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; SLNet::BitStream out;</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) ID_RPC_PLUGIN);</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) ID_RPC4_CALL);</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a24121050ec7d63a6eba5d1b243b4922b" title="Write any integral type to a bitstream.">WriteCompressed</a>(uniqueID);</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<span class="keyword">true</span>); <span class="comment">// Blocking</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (bitStream)</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a4868f40943c8e349500ec6de3a69df20" title="Sets the read pointer back to the beginning of your data.">ResetReadPointer</a>();</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a1083ab999b52c839709eab5cff65a68d" title="Align the next write and/or read to a byte boundary.">AlignWriteToByteBoundary</a>();</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(bitStream);</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(returnData);</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>);</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ad3fc8b60e351dfe5eb05cdba41d8c7a3" title="Returned from RakPeerInterface::GetConnectionState()">ConnectionState</a> cs;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; cs = <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a723925024fb74b89b2af6e0c2d19ad22">GetConnectionState</a>(systemIdentifier);</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (cs!=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ad3fc8b60e351dfe5eb05cdba41d8c7a3a042290df226826435b62d02f647281ff" title="Is connected and able to communicate.">IS_CONNECTED</a>)</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;out,priority,reliability,orderingChannel,systemIdentifier,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; returnData-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#aab4381d8b4a48dbc8e2975dba894f350" title="Resets the bitstream for reuse.">Reset</a>();</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ada24147085c7bdf3612df36348863c39">blockingReturnValue</a>.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#aab4381d8b4a48dbc8e2975dba894f350" title="Resets the bitstream for reuse.">Reset</a>();</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a42c6def740ccc00e4e43d3654ec91aa8">gotBlockingReturnValue</a>=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">DataStructures::Queue&lt;Packet*&gt;</a> packetQueue;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a42c6def740ccc00e4e43d3654ec91aa8">gotBlockingReturnValue</a>==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="comment">// TODO - block, filter until gotBlockingReturnValue==true or ID_CONNECTION_LOST or ID_DISCONNECTION_NOTIFICXATION or ID_RPC_REMOTE_ERROR/RPC_ERROR_FUNCTION_NOT_REGISTERED</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="../../df/d30/_rak_sleep_8cpp.xhtml#a5b4f72ab4031078e87f5ed1b6828e1c7">RakSleep</a>(30);</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; packet=<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a99738a11165d8d6feda63f2dfde1bf28">Receive</a>();</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span> (packet)</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">if</span> (</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]==<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a28dffd6d158f4003cb58fbe9b483a9a9">ID_CONNECTION_LOST</a> || packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]==<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3aa3c9ab42767af4b738cceb5a5b3600ae">ID_DISCONNECTION_NOTIFICATION</a>) &amp;&amp;</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; ((systemIdentifier.<a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml#a586cd1e6fa1a832ad3e584779ea88d80">rakNetGuid</a>!=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a242c86300509ec068e5e2ea534bbba51">UNASSIGNED_RAKNET_GUID</a> &amp;&amp; packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4f42e82893aff6aade8a45c79d1b8fd3">guid</a>==systemIdentifier.<a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml#a586cd1e6fa1a832ad3e584779ea88d80">rakNetGuid</a>) ||</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; (systemIdentifier.<a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml#a4d7090b1b5269c293f58fee1da43e098">systemAddress</a>!=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a> &amp;&amp; packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>==systemIdentifier.<a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml#a4d7090b1b5269c293f58fee1da43e098">systemAddress</a>))</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; )</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="comment">// Push back to head in reverse order</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a55e4b5cdc35701904e451e81ff237d08">PushBackPacket</a>(packet,<span class="keyword">true</span>);</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">while</span> (packetQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>())</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a55e4b5cdc35701904e451e81ff237d08">PushBackPacket</a>(packetQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a25272370e684388afd807c5369e4ef87">Pop</a>(),<span class="keyword">true</span>);</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]==<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a85a5903d5d7ededbe634484af8dfaad5">ID_RPC_REMOTE_ERROR</a> &amp;&amp; packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[1]==<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ggaf57aae36449dec5f2df3be031e658dc9a1407810710bd678545cbe27c91263530" title="Named function was not registered with RegisterFunction(). Check your spelling.">RPC_ERROR_FUNCTION_NOT_REGISTERED</a>)</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; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> functionName;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; SLNet::BitStream bsIn(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>,packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; bsIn.IgnoreBytes(2);</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; bsIn.Read(functionName);</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">if</span> (functionName==uniqueID)</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">// Push back to head in reverse order</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a55e4b5cdc35701904e451e81ff237d08">PushBackPacket</a>(packet,<span class="keyword">true</span>);</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">while</span> (packetQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>())</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a55e4b5cdc35701904e451e81ff237d08">PushBackPacket</a>(packetQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a25272370e684388afd807c5369e4ef87">Pop</a>(),<span class="keyword">true</span>);</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; {</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; packetQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a3980613e44a80982708b9d1f49fa0fea">PushAtHead</a>(packet,0,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; packetQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a3980613e44a80982708b9d1f49fa0fea">PushAtHead</a>(packet,0,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; returnData-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ada24147085c7bdf3612df36348863c39">blockingReturnValue</a>);</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; returnData-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a4868f40943c8e349500ec6de3a69df20" title="Sets the read pointer back to the beginning of your data.">ResetReadPointer</a>();</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;}</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a60623a6701a366548a94000f5c656a26">RPC4::Signal</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *sharedIdentifier, SLNet::BitStream *bitStream, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705c" title="These enumerations are used to describe when packets are delivered.">PacketPriority</a> priority, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7e">PacketReliability</a> reliability, <span class="keywordtype">char</span> orderingChannel, <span class="keyword">const</span> <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> systemIdentifier, <span class="keywordtype">bool</span> broadcast, <span class="keywordtype">bool</span> invokeLocal)</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; SLNet::BitStream out;</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) ID_RPC_PLUGIN);</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) ID_RPC4_SIGNAL);</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a24121050ec7d63a6eba5d1b243b4922b" title="Write any integral type to a bitstream.">WriteCompressed</a>(sharedIdentifier);</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span> (bitStream)</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; bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a4868f40943c8e349500ec6de3a69df20" title="Sets the read pointer back to the beginning of your data.">ResetReadPointer</a>();</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a1083ab999b52c839709eab5cff65a68d" title="Align the next write and/or read to a byte boundary.">AlignWriteToByteBoundary</a>();</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(bitStream);</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;out,priority,reliability,orderingChannel,systemIdentifier,broadcast);</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span> (invokeLocal)</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="comment">//TimeUS t1 = GetTimeUS();</span></div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> functionIndex;</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; functionIndex = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(sharedIdentifier);</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">//TimeUS t2 = GetTimeUS();</span></div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span> (functionIndex.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>())</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; </div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> p;</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; p.<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4f42e82893aff6aade8a45c79d1b8fd3">guid</a>=<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b84bba5f2e64578ac7d05899bd5967e" title="Return my own GUID.">GetMyGUID</a>();</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; p.<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>=<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ad3e572620ed2fc1bb127589ddb5245c3">GetInternalID</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>);</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; p.<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4a736945115119681c77e168346988c4">wasGeneratedLocally</a>=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; SLNet::BitStream *bsptr, bstemp;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span> (bitStream)</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a4868f40943c8e349500ec6de3a69df20" title="Sets the read pointer back to the beginning of your data.">ResetReadPointer</a>();</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; p.<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>=bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>();</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; p.<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a77b617c6ae559765f8ad26d1f460f082" title="The length of the data in bits.">bitSize</a>=bitStream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a0efe4cd010ac7ccc0a7aa8868e0c54c8" title="Returns the length in bits of the stream.">GetNumberOfBitsUsed</a>();</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; bsptr=bitStream;</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; p.<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>=0;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; p.<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a77b617c6ae559765f8ad26d1f460f082" title="The length of the data in bits.">bitSize</a>=0;</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; bsptr=&amp;bstemp;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="comment">//TimeUS t3 = GetTimeUS();</span></div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a6ac33fb920cab36b21a2ceb58f91d4dc">InvokeSignal</a>(functionIndex, bsptr, &amp;p);</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="comment">//TimeUS t4 = GetTimeUS();</span></div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="comment">//printf(&quot;b1: %I64d\n&quot;, t2-t1);</span></div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="comment">//printf(&quot;b2: %I64d\n&quot;, t3-t2);</span></div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">//printf(&quot;b3: %I64d\n&quot;, t4-t3);</span></div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;}</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a6ac33fb920cab36b21a2ceb58f91d4dc">RPC4::InvokeSignal</a>(<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> functionIndex, SLNet::BitStream *serializedParameters, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;{</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span> (functionIndex.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>())</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="comment">//TimeUS t1 = GetTimeUS();</span></div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="comment">//TimeUS t2=0;</span></div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">//TimeUS t3=0;</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a11e089e6f6518965d73bef62ed54b70a">interruptSignal</a>=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; LocalSlot *localSlot = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5fec5e2f5f479ddeebefe9a0ff1c50e4">ItemAtIndex</a>(functionIndex);</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; i=0;</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">while</span> (i &lt; localSlot-&gt;slotObjects.Size())</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">//t2 = GetTimeUS();</span></div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; localSlot-&gt;<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a75d9d2c343ebe27effb3cfd12664cbbd">slotObjects</a>[i].functionPointer(serializedParameters, packet);</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">//t3 = GetTimeUS();</span></div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">// Not threadsafe</span></div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a11e089e6f6518965d73bef62ed54b70a">interruptSignal</a>==<span class="keyword">true</span>)</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; serializedParameters-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a4868f40943c8e349500ec6de3a69df20" title="Sets the read pointer back to the beginning of your data.">ResetReadPointer</a>();</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; i++;</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">//TimeUS t4 = GetTimeUS();</span></div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="comment">//printf(&quot;b1: %I64d\n&quot;, t2-t1);</span></div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">//printf(&quot;b2: %I64d\n&quot;, t3-t2);</span></div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">//printf(&quot;b3: %I64d\n&quot;, t4-t3);</span></div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;}</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ad80d046f69c427b68e7d087a4409a2b8" title="If called while processing a slot, no further slots for the currently executing signal will be execut...">RPC4::InterruptSignal</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;{</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a11e089e6f6518965d73bef62ed54b70a">interruptSignal</a>=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;}</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#aaa352dac20c481024c71b96ac8e98f39" title="Called when the interface is attached.">RPC4::OnAttach</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;{</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; globalRegistrationIndex; i++)</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span> (globalRegistrationBuffer[i].registerFunctionPointer)</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span> (globalRegistrationBuffer[i].callPriority==(<span class="keywordtype">int</span>)0xFFFFFFFF)</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a76d4f1373c622cf1a1d2c6b2bda30fd5" title="Register a function pointer to be callable from a remote system.">RegisterFunction</a>(globalRegistrationBuffer[i].functionName, globalRegistrationBuffer[i].registerFunctionPointer);</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a08c1f1cde743bf2e8dbb2eea2031e9ab">RegisterSlot</a>(globalRegistrationBuffer[i].functionName, globalRegistrationBuffer[i].registerFunctionPointer, globalRegistrationBuffer[i].callPriority);</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (globalRegistrationBuffer[i].registerBlockingFunctionPointer)</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ad3b069b947e161794586f7b5c7addf00" title="Same as RegisterFunction, but is called with CallBlocking() instead of Call() and returns a value to ...">RegisterBlockingFunction</a>(globalRegistrationBuffer[i].functionName, globalRegistrationBuffer[i].registerBlockingFunctionPointer);</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a508f3a63f49f9b76f55cae0dceb9fd21">RegisterLocalCallback</a>(globalRegistrationBuffer[i].functionName, globalRegistrationBuffer[i].messageId);</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga5c8f613a7c294e0b96deccbdabc38f18">PluginReceiveResult</a> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#aacbb8dd9ddba653c9df0f8ad8f154f78">RPC4::OnReceive</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;{</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]==ID_RPC_PLUGIN)</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; {</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; SLNet::BitStream bsIn(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>,packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; bsIn.IgnoreBytes(2);</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[1]==ID_RPC4_CALL)</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> functionName;</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; bsIn.ReadCompressed(functionName);</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordtype">bool</span> isBlocking=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; bsIn.Read(isBlocking);</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">if</span> (isBlocking==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> skhi = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a931e229b11729ab1d674aff512092d6e">registeredNonblockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(functionName.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (skhi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>())</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; SLNet::BitStream bsOut;</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>) <a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a85a5903d5d7ededbe634484af8dfaad5">ID_RPC_REMOTE_ERROR</a>);</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>) <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ggaf57aae36449dec5f2df3be031e658dc9a1407810710bd678545cbe27c91263530" title="Named function was not registered with RegisterFunction(). Check your spelling.">RPC_ERROR_FUNCTION_NOT_REGISTERED</a>);</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(functionName.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(),(<span class="keywordtype">unsigned</span> int) functionName.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#abe4d216101d087910af4d93b594847b5" title="Returns the length of the string.">GetLength</a>()+1);</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;bsOut,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705cacb1785f11dd02aa7f5d164fb314c594e">HIGH_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a9f27ed7ccb7513dceb7ed4da3d99a1bf" title="The plugin used this message and it shouldn&#39;t be given to the user.">RR_STOP_PROCESSING_AND_DEALLOCATE</a>;</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; void ( *fp ) (SLNet::BitStream *, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> * );</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; fp = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a931e229b11729ab1d674aff512092d6e">registeredNonblockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5fec5e2f5f479ddeebefe9a0ff1c50e4">ItemAtIndex</a>(skhi);</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; bsIn.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af64b3663a865840e013f5aef490d891e" title="Align the next write and/or read to a byte boundary.">AlignReadToByteBoundary</a>();</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; fp(&amp;bsIn,packet);</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; {</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> skhi = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a521111ffd556bddcf29ae207187063b6">registeredBlockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(functionName.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">if</span> (skhi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>())</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; SLNet::BitStream bsOut;</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>) ID_RPC_REMOTE_ERROR);</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>) RPC_ERROR_FUNCTION_NOT_REGISTERED);</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(functionName.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(),(<span class="keywordtype">unsigned</span> int) functionName.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#abe4d216101d087910af4d93b594847b5" title="Returns the length of the string.">GetLength</a>()+1);</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;bsOut,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705cacb1785f11dd02aa7f5d164fb314c594e">HIGH_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a9f27ed7ccb7513dceb7ed4da3d99a1bf" title="The plugin used this message and it shouldn&#39;t be given to the user.">RR_STOP_PROCESSING_AND_DEALLOCATE</a>;</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; void ( *fp ) (SLNet::BitStream *, SLNet::BitStream *, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> * );</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; fp = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a521111ffd556bddcf29ae207187063b6">registeredBlockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5fec5e2f5f479ddeebefe9a0ff1c50e4">ItemAtIndex</a>(skhi);</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; SLNet::BitStream returnData;</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; bsIn.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af64b3663a865840e013f5aef490d891e" title="Align the next write and/or read to a byte boundary.">AlignReadToByteBoundary</a>();</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; fp(&amp;bsIn, &amp;returnData, packet);</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; SLNet::BitStream out;</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) ID_RPC_PLUGIN);</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) ID_RPC4_RETURN);</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; returnData.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a4868f40943c8e349500ec6de3a69df20" title="Sets the read pointer back to the beginning of your data.">ResetReadPointer</a>();</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a1083ab999b52c839709eab5cff65a68d" title="Align the next write and/or read to a byte boundary.">AlignWriteToByteBoundary</a>();</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; out.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(returnData);</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;out,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705ca416b3a41b78a58a7a5a6ee24d628e456" title="The highest possible priority. These message trigger sends immediately, and are generally not buffere...">IMMEDIATE_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; }</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[1]==ID_RPC4_SIGNAL)</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> sharedIdentifier;</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; bsIn.ReadCompressed(sharedIdentifier);</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> functionIndex;</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; functionIndex = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(sharedIdentifier);</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; SLNet::BitStream serializedParameters;</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; bsIn.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af64b3663a865840e013f5aef490d891e" title="Align the next write and/or read to a byte boundary.">AlignReadToByteBoundary</a>();</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; bsIn.Read(&amp;serializedParameters);</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a6ac33fb920cab36b21a2ceb58f91d4dc">InvokeSignal</a>(functionIndex, &amp;serializedParameters, packet);</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; {</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[1]==ID_RPC4_RETURN);</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ada24147085c7bdf3612df36348863c39">blockingReturnValue</a>.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#aab4381d8b4a48dbc8e2975dba894f350" title="Resets the bitstream for reuse.">Reset</a>();</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#ada24147085c7bdf3612df36348863c39">blockingReturnValue</a>.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(bsIn);</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a42c6def740ccc00e4e43d3654ec91aa8">gotBlockingReturnValue</a>=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; </div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a9f27ed7ccb7513dceb7ed4da3d99a1bf" title="The plugin used this message and it shouldn&#39;t be given to the user.">RR_STOP_PROCESSING_AND_DEALLOCATE</a>;</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index, index2;</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; index = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3d27be774422190974d5fe9bffe3f7a1">localCallbacks</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0],&amp;objectExists);</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">if</span> (objectExists)</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; LocalCallback *lc;</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; lc = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a3d27be774422190974d5fe9bffe3f7a1">localCallbacks</a>[index];</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">for</span> (index2=0; index2 &lt; lc-&gt;functions.Size(); index2++)</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; SLNet::BitStream bsIn(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>, packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> skhi = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a931e229b11729ab1d674aff512092d6e">registeredNonblockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(lc-&gt;functions[index2].C_String());</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">if</span> (skhi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; {</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; void ( *fp ) (SLNet::BitStream *, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> * );</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; fp = <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a931e229b11729ab1d674aff512092d6e">registeredNonblockingFunctions</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5fec5e2f5f479ddeebefe9a0ff1c50e4">ItemAtIndex</a>(skhi);</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; bsIn.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af64b3663a865840e013f5aef490d891e" title="Align the next write and/or read to a byte boundary.">AlignReadToByteBoundary</a>();</div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; fp(&amp;bsIn,packet);</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; } </div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a5b5a476b87be78212057efd5535345d4" title="This message will be processed by other plugins, and at last by the user.">RR_CONTINUE_PROCESSING</a>;</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;}</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a99b121d95631c2b115d924301ef0f2db">RPC4::GetLocalSlotIndex</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *sharedIdentifier)</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;{</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a668b14b2e79ab303943992d4c52881aa">localSlots</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(sharedIdentifier);</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;}</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;<span class="preprocessor">#endif // _RAKNET_SUPPORT_*</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../d8/dd3/_r_p_c4_plugin_8cpp.xhtml">RPC4Plugin.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:47 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,140 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/DS_ThreadsafeAllocatingQueue.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/dd5/_d_s___threadsafe_allocating_queue_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">DS_ThreadsafeAllocatingQueue.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../dc/d8d/_d_s___queue_8h_source.xhtml">DS_Queue.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/ddd/_simple_mutex_8h_source.xhtml">SimpleMutex.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d6/d7e/_d_s___memory_pool_8h_source.xhtml">DS_MemoryPool.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue&lt; structureType &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/d80/namespace_data_structures"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml">DataStructures</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h.xhtml">DS_ThreadsafeAllocatingQueue.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,307 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/DS_ThreadsafeAllocatingQueue.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">DS_ThreadsafeAllocatingQueue.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifndef __THREADSAFE_ALLOCATING_QUEUE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __THREADSAFE_ALLOCATING_QUEUE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/d8d/_d_s___queue_8h.xhtml">DS_Queue.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/ddd/_simple_mutex_8h.xhtml" title="[Internal] Encapsulates a mutex">SimpleMutex.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d7e/_d_s___memory_pool_8h.xhtml">DS_MemoryPool.h</a>&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="comment">// #if defined(new)</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// #pragma push_macro(&quot;new&quot;)</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">// #undef new</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">// #define RMO_NEW_UNDEF_ALLOCATING_QUEUE</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// #endif</span></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;<span class="keyword">namespace </span>DataStructures</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml"> 37</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">ThreadsafeAllocatingQueue</a></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Queue operations</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> Push(structureType *s);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; structureType *PopInaccurate(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; structureType *Pop(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> SetPageSize(<span class="keywordtype">int</span> size);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">bool</span> IsEmpty(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; structureType * operator[] ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> position );</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> RemoveAtIndex( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> position );</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Size( <span class="keywordtype">void</span> );</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// Memory pool operations</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; structureType *Allocate(<span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> Deallocate(structureType *s, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> Clear(<span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ad03957d4e81bbe15a87872844fa766f6"> 56</a></span>&#160; <span class="keyword">mutable</span> <a class="code" href="../../de/df9/class_data_structures_1_1_memory_pool.xhtml">MemoryPool&lt;structureType&gt;</a> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ad03957d4e81bbe15a87872844fa766f6">memoryPool</a>;</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ad8d18997393e8f1b1df780079fee9f25"> 57</a></span>&#160; <a class="code" href="../../d9/da8/class_s_l_net_1_1_simple_mutex.xhtml" title="An easy to use mutex.">SLNet::SimpleMutex</a> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ad8d18997393e8f1b1df780079fee9f25">memoryPoolMutex</a>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ae89e097ad6d19614990c8566a55ec7a7"> 58</a></span>&#160; <a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">Queue&lt;structureType*&gt;</a> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ae89e097ad6d19614990c8566a55ec7a7">queue</a>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a8ed3acc9c79a2c5586bfe44bfc383184"> 59</a></span>&#160; <a class="code" href="../../d9/da8/class_s_l_net_1_1_simple_mutex.xhtml" title="An easy to use mutex.">SLNet::SimpleMutex</a> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a8ed3acc9c79a2c5586bfe44bfc383184">queueMutex</a>;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;};</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="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a768320d1f04005713d0d94bd3b5a7f43"> 63</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a768320d1f04005713d0d94bd3b5a7f43">ThreadsafeAllocatingQueue&lt;structureType&gt;::Push</a>(structureType *s)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; queueMutex.Lock();</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; queue.Push(s, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; queueMutex.Unlock();</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aad86452e470ac42bbfe656aed0b192a2"> 71</a></span>&#160;structureType *<a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aad86452e470ac42bbfe656aed0b192a2">ThreadsafeAllocatingQueue&lt;structureType&gt;::PopInaccurate</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; structureType *s;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (queue.IsEmpty())</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; queueMutex.Lock();</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (queue.IsEmpty()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; s=queue.Pop();</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; s=0;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; queueMutex.Unlock(); </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> s;</div>
<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;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aeaee4f85f6aa6870a2eb57c533ba13f5"> 86</a></span>&#160;structureType *<a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aeaee4f85f6aa6870a2eb57c533ba13f5">ThreadsafeAllocatingQueue&lt;structureType&gt;::Pop</a>(<span class="keywordtype">void</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; structureType *s;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; queueMutex.Lock();</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> (queue.IsEmpty())</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; queueMutex.Unlock(); </div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; s=queue.Pop();</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; queueMutex.Unlock(); </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> s;</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;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa95962ea9808cd598c13048c31c52c6e"> 101</a></span>&#160;structureType *<a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa95962ea9808cd598c13048c31c52c6e">ThreadsafeAllocatingQueue&lt;structureType&gt;::Allocate</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line)</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; structureType *s;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; memoryPoolMutex.Lock();</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; s=memoryPool.Allocate(file, line);</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; memoryPoolMutex.Unlock();</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">// Call new operator, memoryPool doesn&#39;t do this</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; s = <span class="keyword">new</span> ((<span class="keywordtype">void</span>*)s) structureType;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> s;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a0eec464ecd7aa8af770e1ceb406661bf"> 112</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a0eec464ecd7aa8af770e1ceb406661bf">ThreadsafeAllocatingQueue&lt;structureType&gt;::Deallocate</a>(structureType *s, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line)</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;{</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// Call delete operator, memory pool doesn&#39;t do this</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; s-&gt;~structureType();</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; memoryPoolMutex.Lock();</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; memoryPool.Release(s, file, line);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; memoryPoolMutex.Unlock();</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;}</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a48ffb49251ed59f0fbf54d0226e374e0"> 122</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a48ffb49251ed59f0fbf54d0226e374e0">ThreadsafeAllocatingQueue&lt;structureType&gt;::Clear</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line)</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; memoryPoolMutex.Lock();</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i &lt; queue.Size(); i++)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; queue[i]-&gt;~structureType();</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; memoryPool.Release(queue[i], file, line);</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; queue.Clear(file, line);</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; memoryPoolMutex.Unlock();</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; memoryPoolMutex.Lock();</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; memoryPool.Clear(file, line);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; memoryPoolMutex.Unlock();</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;}</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="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a833da782723daa209092fa29b29fbc94"> 138</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a833da782723daa209092fa29b29fbc94">ThreadsafeAllocatingQueue&lt;structureType&gt;::SetPageSize</a>(<span class="keywordtype">int</span> size)</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;{</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; memoryPool.SetPageSize(size);</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;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a0e9dcb3ab5bb94af7535c41468a233c0"> 144</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a0e9dcb3ab5bb94af7535c41468a233c0">ThreadsafeAllocatingQueue&lt;structureType&gt;::IsEmpty</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;{</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">bool</span> isEmpty;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; queueMutex.Lock();</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; isEmpty=queue.IsEmpty();</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; queueMutex.Unlock();</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> isEmpty;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;}</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aeffe0642e5cea2431c976415955a1460"> 154</a></span>&#160;structureType * <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aeffe0642e5cea2431c976415955a1460">ThreadsafeAllocatingQueue&lt;structureType&gt;::operator[] </a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> position )</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; structureType *s;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; queueMutex.Lock();</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; s=queue[position];</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; queueMutex.Unlock();</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> s;</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;<span class="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa7a9ab0c4effa28652d64eb7624c810f"> 164</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa7a9ab0c4effa28652d64eb7624c810f">ThreadsafeAllocatingQueue&lt;structureType&gt;::RemoveAtIndex</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> position )</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; queueMutex.Lock();</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; queue.RemoveAtIndex(position);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; queueMutex.Unlock();</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</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;<span class="keyword">template</span> &lt;<span class="keyword">class</span> structureType&gt;</div>
<div class="line"><a name="l00172"></a><span class="lineno"><a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa2887f954c636f22b9463383ec7eb144"> 172</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa2887f954c636f22b9463383ec7eb144">ThreadsafeAllocatingQueue&lt;structureType&gt;::Size</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;{</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> s;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; queueMutex.Lock();</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; s=queue.Size();</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; queueMutex.Unlock();</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> s;</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;}</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment">// #if defined(RMO_NEW_UNDEF_ALLOCATING_QUEUE)</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment">// #pragma pop_macro(&quot;new&quot;)</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment">// #undef RMO_NEW_UNDEF_ALLOCATING_QUEUE</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment">// #endif</span></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;<span class="preprocessor">#endif</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h.xhtml">DS_ThreadsafeAllocatingQueue.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,3 @@
<map id="SLNet::RakNetCommandParser" name="SLNet::RakNetCommandParser">
<area shape="rect" id="node2" href="$d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml" title="The interface used by command parsers." alt="" coords="5,5,217,273"/>
</map>

View File

@ -0,0 +1 @@
7d80d301f8398cb738450c87adf29691

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: SLNet::RakNetCommandParser Pages: 1 -->
<svg width="167pt" height="358pt"
viewBox="0.00 0.00 167.00 358.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 354)">
<title>SLNet::RakNetCommandParser</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="2,-0.5 2,-112.5 157,-112.5 157,-0.5 2,-0.5"/>
<text text-anchor="middle" x="79.5" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::RakNetCommandParser</text>
<polyline fill="none" stroke="black" points="2,-93.5 157,-93.5 "/>
<text text-anchor="start" x="10" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00"># peer</text>
<polyline fill="none" stroke="black" points="2,-74.5 157,-74.5 "/>
<text text-anchor="start" x="10" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RakNetCommandParser()</text>
<text text-anchor="start" x="10" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~RakNetCommandParser()</text>
<text text-anchor="start" x="10" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnCommand()</text>
<text text-anchor="start" x="10" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetName()</text>
<text text-anchor="start" x="10" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SendHelp()</text>
<text text-anchor="start" x="10" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SetRakPeerInterface()</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml" target="_top" xlink:title="The interface used by command parsers.">
<polygon fill="none" stroke="black" points="0,-149.5 0,-349.5 159,-349.5 159,-149.5 0,-149.5"/>
<text text-anchor="middle" x="79.5" y="-337.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::CommandParserInterface</text>
<polyline fill="none" stroke="black" points="0,-330.5 159,-330.5 "/>
<text text-anchor="start" x="8" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VARIABLE_NUMBER_OF</text>
<text text-anchor="start" x="8" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">_PARAMETERS</text>
<text text-anchor="start" x="8" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00"># commandList</text>
<polyline fill="none" stroke="black" points="0,-289.5 159,-289.5 "/>
<text text-anchor="start" x="8" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CommandParserInterface()</text>
<text text-anchor="start" x="8" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~CommandParserInterface()</text>
<text text-anchor="start" x="8" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetName()</text>
<text text-anchor="start" x="8" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewIncomingConnection()</text>
<text text-anchor="start" x="8" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnConnectionLost()</text>
<text text-anchor="start" x="8" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SendHelp()</text>
<text text-anchor="start" x="8" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnCommand()</text>
<text text-anchor="start" x="8" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnTransportChange()</text>
<text text-anchor="start" x="8" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetRegisteredCommand()</text>
<text text-anchor="start" x="8" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SendCommandList()</text>
<text text-anchor="start" x="8" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 6 more...</text>
<text text-anchor="start" x="8" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ParseConsoleString()</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M79.5,-139.117C79.5,-130.09 79.5,-121.232 79.5,-112.874"/>
<polygon fill="none" stroke="midnightblue" points="76.0001,-139.364 79.5,-149.364 83.0001,-139.364 76.0001,-139.364"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -0,0 +1,152 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/EmailSender.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/de4/_email_sender_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">EmailSender.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Rudimentary class to send email from code. Don't expect anything fancy.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">NativeFeatureIncludes.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d49/types_8h_source.xhtml">types.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dd/dc5/memoryoverride_8h_source.xhtml">memoryoverride.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../db/dbd/_export_8h_source.xhtml">Export.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/d10/_rand_8h_source.xhtml">Rand.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../de/dd1/_t_c_p_interface_8h_source.xhtml">TCPInterface.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/de4/_email_sender_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/dfd/class_s_l_net_1_1_email_sender.xhtml">SLNet::EmailSender</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rudimentary class to send email from code. <a href="../../dc/dfd/class_s_l_net_1_1_email_sender.xhtml#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:dd/d30/namespace_s_l_net"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></td></tr>
<tr class="memdesc:dd/d30/namespace_s_l_net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. <br/></td></tr>
<tr class="separator:"><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>Rudimentary class to send email from code. Don't expect anything fancy. </p>
<p>Definition in file <a class="el" href="../../d8/de4/_email_sender_8h_source.xhtml">EmailSender.h</a>.</p>
</div></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/de4/_email_sender_8h.xhtml">EmailSender.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,186 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/EmailSender.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/de4/_email_sender_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">EmailSender.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/de4/_email_sender_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_EmailSender==1 &amp;&amp; _RAKNET_SUPPORT_TCPInterface==1 &amp;&amp; _RAKNET_SUPPORT_FileOperations==1</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#ifndef __EMAIL_SENDER_H</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __EMAIL_SENDER_H</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d49/types_8h.xhtml" title="Types used by RakNet, most of which involve user code.">types.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/dc5/memoryoverride_8h.xhtml" title="If _USE_RAK_MEMORY_OVERRIDE is defined, memory allocations go through rakMalloc, rakRealloc, and rakFree.">memoryoverride.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/dbd/_export_8h.xhtml">Export.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/d10/_rand_8h.xhtml" title="[Internal] Random number generator">Rand.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/dd1/_t_c_p_interface_8h.xhtml" title="A simple TCP based server allowing sends and receives. Can be connected by any TCP client...">TCPInterface.h</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">namespace </span>SLNet</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">class </span>FileList;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">class </span>TCPInterface;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="../../dc/dfd/class_s_l_net_1_1_email_sender.xhtml"> 39</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../dc/dfd/class_s_l_net_1_1_email_sender.xhtml" title="Rudimentary class to send email from code.">EmailSender</a></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// GetInstance() and DestroyInstance(instance*)</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="../../db/dbd/_export_8h.xhtml#af3e49377f340027d211b2814949efc48">STATIC_FACTORY_DECLARATIONS</a>(<a class="code" href="../../dc/dfd/class_s_l_net_1_1_email_sender.xhtml" title="Rudimentary class to send email from code.">EmailSender</a>)</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</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;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *Send(<span class="keyword">const</span> <span class="keywordtype">char</span> *hostAddress, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> hostPort, <span class="keyword">const</span> <span class="keywordtype">char</span> *sender, <span class="keyword">const</span> <span class="keywordtype">char</span> *recipient, <span class="keyword">const</span> <span class="keywordtype">char</span> *senderName, <span class="keyword">const</span> <span class="keywordtype">char</span> *recipientName, <span class="keyword">const</span> <span class="keywordtype">char</span> *subject, <span class="keyword">const</span> <span class="keywordtype">char</span> *body, <a class="code" href="../../d7/d87/class_s_l_net_1_1_file_list.xhtml">FileList</a> *attachedFiles, <span class="keywordtype">bool</span> doPrintf, <span class="keyword">const</span> <span class="keywordtype">char</span> *password);</div>
<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;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *GetResponse(<a class="code" href="../../df/dd8/class_s_l_net_1_1_t_c_p_interface.xhtml">TCPInterface</a> *tcpInterface, <span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;emailServer, <span class="keywordtype">bool</span> doPrintf);</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="../../dc/dfd/class_s_l_net_1_1_email_sender.xhtml#a7ff0521c85b5e8bcea2fa798c0183816"> 62</a></span>&#160; <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml">RakNetRandom</a> <a class="code" href="../../dc/dfd/class_s_l_net_1_1_email_sender.xhtml#a7ff0521c85b5e8bcea2fa798c0183816">rakNetRandom</a>;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;};</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;} <span class="comment">// namespace SLNet</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#endif // _RAKNET_SUPPORT_*</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/de4/_email_sender_8h.xhtml">EmailSender.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,226 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/ConnectionGraph2.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/de5/_connection_graph2_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">ConnectionGraph2.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Connection graph plugin, version 2. Tells new systems about existing and new connections.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">NativeFeatureIncludes.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dd/dc5/memoryoverride_8h_source.xhtml">memoryoverride.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d49/types_8h_source.xhtml">types.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/ddd/_plugin_interface2_8h_source.xhtml">PluginInterface2.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d7f/_d_s___list_8h_source.xhtml">DS_List.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d8/deb/_d_s___weighted_graph_8h_source.xhtml">DS_WeightedGraph.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d6/d76/_get_time_8h_source.xhtml">GetTime.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../db/dbd/_export_8h_source.xhtml">Export.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/de5/_connection_graph2_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A one hop connection graph. <a href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d6/dd0/struct_s_l_net_1_1_connection_graph2_1_1_system_address_and_guid"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#d6/dd0/struct_s_l_net_1_1_connection_graph2_1_1_system_address_and_guid">SLNet::ConnectionGraph2::SystemAddressAndGuid</a></td></tr>
<tr class="separator:d6/dd0/struct_s_l_net_1_1_connection_graph2_1_1_system_address_and_guid"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d2/d5f/struct_s_l_net_1_1_connection_graph2_1_1_remote_system"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#d2/d5f/struct_s_l_net_1_1_connection_graph2_1_1_remote_system">SLNet::ConnectionGraph2::RemoteSystem</a></td></tr>
<tr class="separator:d2/d5f/struct_s_l_net_1_1_connection_graph2_1_1_remote_system"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:dd/d30/namespace_s_l_net"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></td></tr>
<tr class="memdesc:dd/d30/namespace_s_l_net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. <br/></td></tr>
<tr class="separator:"><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>Connection graph plugin, version 2. Tells new systems about existing and new connections. </p>
<p>Definition in file <a class="el" href="../../d8/de5/_connection_graph2_8h_source.xhtml">ConnectionGraph2.h</a>.</p>
</div><hr/><h2 class="groupheader">Class Documentation</h2>
<a name="d6/dd0/struct_s_l_net_1_1_connection_graph2_1_1_system_address_and_guid" id="d6/dd0/struct_s_l_net_1_1_connection_graph2_1_1_system_address_and_guid"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct SLNet::ConnectionGraph2::SystemAddressAndGuid</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock">
<p>Definition at line <a class="el" href="../../d8/de5/_connection_graph2_8h_source.xhtml#l00094">94</a> of file <a class="el" href="../../d8/de5/_connection_graph2_8h_source.xhtml">ConnectionGraph2.h</a>.</p>
</div><table class="fieldtable">
<tr><th colspan="3">Class Members</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ab01d7ae58ce6865383af57162c58e625"></a><a class="el" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a></td>
<td class="fieldname">
guid</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a028cd1f89c6c2c554466e2b3ca2c23f0"></a><a class="el" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a></td>
<td class="fieldname">
sendersPingToThatSystem</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a09f9e44af39e0c8b1afccf6a8c85a958"></a><a class="el" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml">SystemAddress</a></td>
<td class="fieldname">
systemAddress</td>
<td class="fielddoc">
</td></tr>
</table>
</div>
</div>
<a name="d2/d5f/struct_s_l_net_1_1_connection_graph2_1_1_remote_system" id="d2/d5f/struct_s_l_net_1_1_connection_graph2_1_1_remote_system"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct SLNet::ConnectionGraph2::RemoteSystem</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock">
<p>Definition at line <a class="el" href="../../d8/de5/_connection_graph2_8h_source.xhtml#l00104">104</a> of file <a class="el" href="../../d8/de5/_connection_graph2_8h_source.xhtml">ConnectionGraph2.h</a>.</p>
</div><table class="fieldtable">
<tr><th colspan="3">Class Members</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a6b3357c45ebb4ce6147b440fe35f0c2b"></a><a class="el" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a></td>
<td class="fieldname">
guid</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a2ba4eca6611f389fe872c667e555b961"></a>OrderedList<br class="typebreak"/>
&lt; <a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#d6/dd0/struct_s_l_net_1_1_connection_graph2_1_1_system_address_and_guid">SystemAddressAndGuid</a>, <br class="typebreak"/>
<a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#d6/dd0/struct_s_l_net_1_1_connection_graph2_1_1_system_address_and_guid">SystemAddressAndGuid</a>, <br class="typebreak"/>
<a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a99cefc9306797dfa14dd046c49ad3bf3">SystemAddressAndGuidComp</a> &gt;</td>
<td class="fieldname">
remoteConnections</td>
<td class="fielddoc">
</td></tr>
</table>
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/de5/_connection_graph2_8h.xhtml">ConnectionGraph2.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,214 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/ConnectionGraph2.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/de5/_connection_graph2_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">ConnectionGraph2.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/de5/_connection_graph2_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_ConnectionGraph2==1</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef __CONNECTION_GRAPH_2_H</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __CONNECTION_GRAPH_2_H</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/dc5/memoryoverride_8h.xhtml" title="If _USE_RAK_MEMORY_OVERRIDE is defined, memory allocations go through rakMalloc, rakRealloc, and rakFree.">memoryoverride.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d49/types_8h.xhtml" title="Types used by RakNet, most of which involve user code.">types.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/ddd/_plugin_interface2_8h.xhtml" title="RakNet&#39;s plugin functionality system, version 2. You can derive from this to create your own plugins...">PluginInterface2.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d7f/_d_s___list_8h.xhtml">DS_List.h</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d8/deb/_d_s___weighted_graph_8h.xhtml">DS_WeightedGraph.h</a>&quot;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d76/_get_time_8h.xhtml" title="Returns the value from QueryPerformanceCounter. This is the function RakNet uses to represent time...">GetTime.h</a>&quot;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/dbd/_export_8h.xhtml">Export.h</a>&quot;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span>SLNet</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">class </span>RakPeerInterface;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml" title="A one hop connection graph.">ConnectionGraph2</a> : <span class="keyword">public</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">PluginInterface2</a></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;<span class="keyword">public</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">// GetInstance() and DestroyInstance(instance*)</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="../../db/dbd/_export_8h.xhtml#af3e49377f340027d211b2814949efc48">STATIC_FACTORY_DECLARATIONS</a>(<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml" title="A one hop connection graph.">ConnectionGraph2</a>)</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; <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml" title="A one hop connection graph.">ConnectionGraph2</a>();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; ~<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml" title="A one hop connection graph.">ConnectionGraph2</a>();</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">bool</span> GetConnectionListForRemoteSystem(<a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> remoteSystemGuid, <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> *saOut, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> *guidOut, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *outLength);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">bool</span> ConnectionExists(<a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> g1, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> g2);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a> GetPingBetweenSystems(<a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> g1, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> g2) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> GetLowestAveragePingSystem(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">void</span> SetAutoProcessNewConnections(<span class="keywordtype">bool</span> b);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">bool</span> GetAutoProcessNewConnections(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">void</span> AddParticipant(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> GetParticipantList(<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList&lt;RakNetGUID, RakNetGUID&gt;</a> &amp;participantList);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml"> 94</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#d6/dd0/struct_s_l_net_1_1_connection_graph2_1_1_system_address_and_guid">SystemAddressAndGuid</a></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="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a09f9e44af39e0c8b1afccf6a8c85a958"> 96</a></span>&#160; <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a09f9e44af39e0c8b1afccf6a8c85a958">systemAddress</a>;</div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ab01d7ae58ce6865383af57162c58e625"> 97</a></span>&#160; <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ab01d7ae58ce6865383af57162c58e625">guid</a>;</div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a028cd1f89c6c2c554466e2b3ca2c23f0"> 98</a></span>&#160; <a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a028cd1f89c6c2c554466e2b3ca2c23f0">sendersPingToThatSystem</a>;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; };</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> SystemAddressAndGuidComp( <span class="keyword">const</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#d6/dd0/struct_s_l_net_1_1_connection_graph2_1_1_system_address_and_guid">SystemAddressAndGuid</a> &amp;key, <span class="keyword">const</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#d6/dd0/struct_s_l_net_1_1_connection_graph2_1_1_system_address_and_guid">SystemAddressAndGuid</a> &amp;data );</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml"> 104</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#d2/d5f/struct_s_l_net_1_1_connection_graph2_1_1_remote_system">RemoteSystem</a></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div>
<div class="line"><a name="l00106"></a><span class="lineno"><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a2ba4eca6611f389fe872c667e555b961"> 106</a></span>&#160; <a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList&lt;SystemAddressAndGuid,SystemAddressAndGuid,ConnectionGraph2::SystemAddressAndGuidComp&gt;</a> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a2ba4eca6611f389fe872c667e555b961">remoteConnections</a>;</div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a6b3357c45ebb4ce6147b440fe35f0c2b"> 107</a></span>&#160; <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a6b3357c45ebb4ce6147b440fe35f0c2b">guid</a>;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; };</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> RemoteSystemComp( <span class="keyword">const</span> <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> &amp;key, <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#d2/d5f/struct_s_l_net_1_1_connection_graph2_1_1_remote_system">RemoteSystem</a> * <span class="keyword">const</span> &amp;data );</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnClosedConnection(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID, <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga4d3ac5ca8821fadad6d22d0267e06803">PI2_LostConnectionReason</a> lostConnectionReason );</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnNewConnection(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID, <span class="keywordtype">bool</span> isIncoming);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">virtual</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga5c8f613a7c294e0b96deccbdabc38f18">PluginReceiveResult</a> OnReceive(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet);</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// List of systems I am connected to, which in turn stores which systems they are connected to</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547"> 121</a></span>&#160; <a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList&lt;RakNetGUID, RemoteSystem*, ConnectionGraph2::RemoteSystemComp&gt;</a> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a5231308683c1c1a77449ad1f67dd5513"> 123</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a5231308683c1c1a77449ad1f67dd5513">autoProcessNewConnections</a>;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;};</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;} <span class="comment">// namespace SLNet</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor">#endif // #ifndef __CONNECTION_GRAPH_2_H</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor">#endif // _RAKNET_SUPPORT_*</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/de5/_connection_graph2_8h.xhtml">ConnectionGraph2.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,150 @@
<!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"/>
<title>SLikeNet: Member List</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);
</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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><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="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#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('dc/da9/class_data_structures_1_1_map.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a2d01e7c2be0ebd431ada0da5f3ebe98f">Clear</a>(void)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#af7be78b0821c0a775b3f0acfd7560abe">Delete</a>(const key_type &amp;key)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a3514ebacc6a333e824d4fda7382275df">Get</a>(const key_type &amp;key) const </td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#aacb6191d7d678267acc8bf6286033b21">GetIndexAtKey</a>(const key_type &amp;key)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a9472d4b96dd3a7919819120c6a1c1466">GetKeyAtIndex</a>(const unsigned int position) const </td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#ac4620bb554cace55c0f093abafad01d9">Has</a>(const key_type &amp;key) const </td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#ab3fd77fe360c86c40332ee05d2dcfeed">HasSavedSearchResult</a>(const key_type &amp;key) const </td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a5ff3a8c0572c98d5c2efa3e1380c77d5">IMPLEMENT_DEFAULT_COMPARISON</a>(void)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a56fa2a6d431b06152fb0cd9b9f7ae1e5">lastSearchIndex</a></td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#acf98e8afa54e3a773569f719802bb47a">lastSearchIndexValid</a></td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#aceac06eff85ef63c2e1e49e65e74f0f3">lastSearchKey</a></td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a122af88527b9e7ed41d72f86064bcf27">Map</a>()</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a5e7e6f886dc9dfe2e51f576bc492af9f">Map</a>(const Map &amp;original_copy)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a6da1ceaa9a89aacf8469576a09e2bb33">mapNodeList</a></td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a4737e24f5ae78118399dbeb80d2bd8a7">NodeComparisonFunc</a>(const key_type &amp;a, const MapNode &amp;b)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a8a100e16ebbae848f9ef51892bc41cdb">operator=</a>(const Map &amp;original_copy)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a18776c79d20486b7bd48e2e90b9c8005">operator[]</a>(const unsigned int position) const </td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a59bf633e857535b30db9bc81531bd5c3">Pop</a>(const key_type &amp;key)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#ab746756b18b120eed088420d9e289c0e">RemoveAtIndex</a>(const unsigned index)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a5b781a91324274f597aaabde5b3d6c51">SaveLastSearch</a>(const key_type &amp;key, unsigned index) const </td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a835a751752d457c333853bfecd30e9b0">Set</a>(const key_type &amp;key, const data_type &amp;data)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#ac1af66c855c322746bca61e7b9b26e8d">SetExisting</a>(const key_type &amp;key, const data_type &amp;data)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a101bf20cd6e9a46ed582618a48a1cfb4">SetNew</a>(const key_type &amp;key, const data_type &amp;data)</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#ad33475fbf642a7df45a48d9f453c3566">Size</a>(void) const </td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a69f77bd0f72b8292b6f0fb134409aa05">~Map</a>()</td><td class="entry"><a class="el" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt; key_type, data_type, key_comparison_func &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,179 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/DS_WeightedGraph.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/deb/_d_s___weighted_graph_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">DS_WeightedGraph.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../de/dbe/_d_s___map_8h_source.xhtml">DS_Map.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../da/dcb/_d_s___heap_8h_source.xhtml">DS_Heap.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/d8d/_d_s___queue_8h_source.xhtml">DS_Queue.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d1/df4/_d_s___tree_8h_source.xhtml">DS_Tree.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/da7/assert_8h_source.xhtml">assert.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dd/dc5/memoryoverride_8h_source.xhtml">memoryoverride.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/deb/_d_s___weighted_graph_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">DataStructures::WeightedGraph&lt; node_type, weight_type, allow_unlinkedNodes &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d2/d49/struct_data_structures_1_1_weighted_graph_1_1_node_and_parent"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#d2/d49/struct_data_structures_1_1_weighted_graph_1_1_node_and_parent">DataStructures::WeightedGraph&lt; node_type, weight_type, allow_unlinkedNodes &gt;::NodeAndParent</a></td></tr>
<tr class="separator:d2/d49/struct_data_structures_1_1_weighted_graph_1_1_node_and_parent"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/d80/namespace_data_structures"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml">DataStructures</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Class Documentation</h2>
<a name="d2/d49/struct_data_structures_1_1_weighted_graph_1_1_node_and_parent" id="d2/d49/struct_data_structures_1_1_weighted_graph_1_1_node_and_parent"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct DataStructures::WeightedGraph::NodeAndParent</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><h3>template&lt;class node_type, class weight_type, bool allow_unlinkedNodes&gt;<br/>
struct DataStructures::WeightedGraph&lt; node_type, weight_type, allow_unlinkedNodes &gt;::NodeAndParent</h3>
<p>Definition at line <a class="el" href="../../d8/deb/_d_s___weighted_graph_8h_source.xhtml#l00086">86</a> of file <a class="el" href="../../d8/deb/_d_s___weighted_graph_8h_source.xhtml">DS_WeightedGraph.h</a>.</p>
</div><table class="fieldtable">
<tr><th colspan="3">Class Members</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a29bb0785f3cb3448280b17fe457e7ad1"></a><a class="el" href="../../de/d2c/class_data_structures_1_1_tree.xhtml">Tree</a>&lt; node_type &gt; *</td>
<td class="fieldname">
node</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ac09b09f98e636f289ac435f0c9c46bc0"></a><a class="el" href="../../de/d2c/class_data_structures_1_1_tree.xhtml">Tree</a>&lt; node_type &gt; *</td>
<td class="fieldname">
parent</td>
<td class="fielddoc">
</td></tr>
</table>
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/deb/_d_s___weighted_graph_8h.xhtml">DS_WeightedGraph.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,660 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/DS_WeightedGraph.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/deb/_d_s___weighted_graph_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">DS_WeightedGraph.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/deb/_d_s___weighted_graph_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#ifndef __WEIGHTED_GRAPH_H</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __WEIGHTED_GRAPH_H</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d4d/_d_s___ordered_list_8h.xhtml">DS_OrderedList.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/dbe/_d_s___map_8h.xhtml">DS_Map.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../da/dcb/_d_s___heap_8h.xhtml">DS_Heap.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/d8d/_d_s___queue_8h.xhtml">DS_Queue.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d1/df4/_d_s___tree_8h.xhtml">DS_Tree.h</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/da7/assert_8h.xhtml">assert.h</a>&quot;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/dc5/memoryoverride_8h.xhtml" title="If _USE_RAK_MEMORY_OVERRIDE is defined, memory allocations go through rakMalloc, rakRealloc, and rakFree.">memoryoverride.h</a>&quot;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifdef _DEBUG</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning( push )</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">namespace </span>DataStructures</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml"> 46</a></span>&#160; <span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph</a></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a6b27537b51fc124f107b1ab44ad81f76"> 49</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a6b27537b51fc124f107b1ab44ad81f76">IMPLEMENT_DEFAULT_COMPARISON</a>(<span class="keywordtype">void</span>) {DataStructures::defaultMapKeyComparison&lt;node_type&gt;(node_type(),node_type());}</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph</a>();</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; ~<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph</a>();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph</a>( <span class="keyword">const</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph</a>&amp; original_copy );</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph</a>&amp; operator= ( <span class="keyword">const</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph</a>&amp; original_copy );</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">void</span> AddNode(<span class="keyword">const</span> node_type &amp;node);</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> RemoveNode(<span class="keyword">const</span> node_type &amp;node);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> AddConnection(<span class="keyword">const</span> node_type &amp;node1, <span class="keyword">const</span> node_type &amp;node2, weight_type weight);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">void</span> RemoveConnection(<span class="keyword">const</span> node_type &amp;node1, <span class="keyword">const</span> node_type &amp;node2);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">bool</span> HasConnection(<span class="keyword">const</span> node_type &amp;node1, <span class="keyword">const</span> node_type &amp;node2);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> Print(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> Clear(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">bool</span> GetShortestPath(<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;node_type&gt;</a> &amp;path, node_type startNode, node_type endNode, weight_type INFINITE_WEIGHT);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">bool</span> GetSpanningTree(<a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml">DataStructures::Tree&lt;node_type&gt;</a> &amp;outTree, <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;node_type&gt;</a> *inputNodes, node_type startNode, weight_type INFINITE_WEIGHT );</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">unsigned</span> GetNodeCount(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> GetConnectionCount(<span class="keywordtype">unsigned</span> nodeIndex) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> GetConnectionAtIndex(<span class="keywordtype">unsigned</span> nodeIndex, <span class="keywordtype">unsigned</span> connectionIndex, node_type &amp;outNode, weight_type &amp;outWeight) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; node_type GetNodeAtIndex(<span class="keywordtype">unsigned</span> nodeIndex) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">void</span> ClearDijkstra(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">void</span> GenerateDisjktraMatrix(node_type startNode, weight_type INFINITE_WEIGHT);</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"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a9b7213f0f01a226cd7033d4a84b7cdf8"> 73</a></span>&#160; <a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt;node_type, DataStructures::Map&lt;node_type, weight_type&gt;</a> *&gt; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a9b7213f0f01a226cd7033d4a84b7cdf8">adjacencyLists</a>;</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">// All these variables are for path finding with Dijkstra</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// 08/23/06 Won&#39;t compile as a DLL inside this struct</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// struct </span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// {</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac48608c2c44bfa4f9655c05eddd56940"> 79</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac48608c2c44bfa4f9655c05eddd56940">isValidPath</a>;</div>
<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a2f42d391d260dabc17b2c6096753839a"> 80</a></span>&#160; node_type <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a2f42d391d260dabc17b2c6096753839a">rootNode</a>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac034f7d08bcf8f4c63fe4f5e7d888cd9"> 81</a></span>&#160; <a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList&lt;node_type, node_type&gt;</a> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac034f7d08bcf8f4c63fe4f5e7d888cd9">costMatrixIndices</a>;</div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a121ddaacaed31a2ad5e3f5313f3561d0"> 82</a></span>&#160; weight_type *<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a121ddaacaed31a2ad5e3f5313f3561d0">costMatrix</a>;</div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a685964d9ffea0f84739693b569db80fa"> 83</a></span>&#160; node_type *<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a685964d9ffea0f84739693b569db80fa">leastNodeArray</a>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// } dijkstra;</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml"> 86</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#d2/d49/struct_data_structures_1_1_weighted_graph_1_1_node_and_parent">NodeAndParent</a></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"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a29bb0785f3cb3448280b17fe457e7ad1"> 88</a></span>&#160; <a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml">DataStructures::Tree&lt;node_type&gt;</a>*<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a29bb0785f3cb3448280b17fe457e7ad1">node</a>;</div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac09b09f98e636f289ac435f0c9c46bc0"> 89</a></span>&#160; <a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml">DataStructures::Tree&lt;node_type&gt;</a>*<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac09b09f98e636f289ac435f0c9c46bc0">parent</a>;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; };</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; };</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a9f070c4eeb822ea4747d312170aa6bae"> 94</a></span>&#160; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a9f070c4eeb822ea4747d312170aa6bae">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::WeightedGraph</a>()</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; isValidPath=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; costMatrix=0;</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;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#aa4e5739e4643b62a847f262032db51c1"> 101</a></span>&#160; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#aa4e5739e4643b62a847f262032db51c1">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::~WeightedGraph</a>()</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; Clear();</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;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ab697e42de015f040beafe130da1b76b5"> 107</a></span>&#160; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a9f070c4eeb822ea4747d312170aa6bae">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::WeightedGraph</a>( <span class="keyword">const</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph</a>&amp; original_copy )</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; adjacencyLists=original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a9b7213f0f01a226cd7033d4a84b7cdf8">adjacencyLists</a>;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; isValidPath=original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac48608c2c44bfa4f9655c05eddd56940">isValidPath</a>;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> (isValidPath)</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; rootNode=original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a2f42d391d260dabc17b2c6096753839a">rootNode</a>;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; costMatrixIndices=original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac034f7d08bcf8f4c63fe4f5e7d888cd9">costMatrixIndices</a>;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; costMatrix = SLNet::OP_NEW_ARRAY&lt;weight_type&gt;(costMatrixIndices.Size() * costMatrixIndices.Size(), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; leastNodeArray = SLNet::OP_NEW_ARRAY&lt;node_type&gt;(costMatrixIndices.Size(), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; memcpy(costMatrix, original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a121ddaacaed31a2ad5e3f5313f3561d0">costMatrix</a>, costMatrixIndices.Size() * costMatrixIndices.Size() * <span class="keyword">sizeof</span>(weight_type));</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; memcpy(leastNodeArray, original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a685964d9ffea0f84739693b569db80fa">leastNodeArray</a>, costMatrixIndices.Size() * <span class="keyword">sizeof</span>(weight_type));</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; }</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#acbae80df6e3d282616e24b47b6fb10de"> 124</a></span>&#160; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;</a>&amp; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#acbae80df6e3d282616e24b47b6fb10de">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::operator=</a>( <span class="keyword">const</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph</a>&amp; original_copy )</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; adjacencyLists=original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a9b7213f0f01a226cd7033d4a84b7cdf8">adjacencyLists</a>;</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; isValidPath=original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac48608c2c44bfa4f9655c05eddd56940">isValidPath</a>;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (isValidPath)</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; rootNode=original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a2f42d391d260dabc17b2c6096753839a">rootNode</a>;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; costMatrixIndices=original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac034f7d08bcf8f4c63fe4f5e7d888cd9">costMatrixIndices</a>;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; costMatrix = SLNet::OP_NEW_ARRAY&lt;weight_type&gt;(costMatrixIndices.Size() * costMatrixIndices.Size(), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; leastNodeArray = SLNet::OP_NEW_ARRAY&lt;node_type&gt;(costMatrixIndices.Size(), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; memcpy(costMatrix, original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a121ddaacaed31a2ad5e3f5313f3561d0">costMatrix</a>, costMatrixIndices.Size() * costMatrixIndices.Size() * <span class="keyword">sizeof</span>(weight_type));</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; memcpy(leastNodeArray, original_copy.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a685964d9ffea0f84739693b569db80fa">leastNodeArray</a>, costMatrixIndices.Size() * <span class="keyword">sizeof</span>(weight_type));</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</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; <span class="keywordflow">return</span> *<span class="keyword">this</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="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac2f5ba3910a6cfd634e6a33e8c68f89d"> 143</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac2f5ba3910a6cfd634e6a33e8c68f89d">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::AddNode</a>(<span class="keyword">const</span> node_type &amp;node)</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; adjacencyLists.SetNew(node, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#af78c01538ca9bd144136bdce3dfd174d">SLNet::OP_NEW</a>&lt;<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt;node_type, weight_type&gt;</a> &gt;( <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>) );</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;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00149"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#abf55d60605fb5ad3deca6fb7a1cf38ac"> 149</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#abf55d60605fb5ad3deca6fb7a1cf38ac">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::RemoveNode</a>(<span class="keyword">const</span> node_type &amp;node)</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; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml" title="A queue implemented as an array with a read and write index.">DataStructures::Queue&lt;node_type&gt;</a> removeNodeQueue;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; removeNodeQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(node, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">while</span> (removeNodeQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>())</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(adjacencyLists.Pop(removeNodeQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a25272370e684388afd807c5369e4ef87">Pop</a>()), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// Remove this node from all of the other lists as well</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; adjacencyLists.Size(); i++)</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; adjacencyLists[i]-&gt;Delete(node);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4127 ) // warning C4127: conditional expression is constant</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (allow_unlinkedNodes==<span class="keyword">false</span> &amp;&amp; adjacencyLists[i]-&gt;Size()==0)</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; removeNodeQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(adjacencyLists.GetKeyAtIndex(i), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; ClearDijkstra();</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00176"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a7b598441f4ed3ff1ffbda47d5e6f3153"> 176</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a7b598441f4ed3ff1ffbda47d5e6f3153">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::HasConnection</a>(<span class="keyword">const</span> node_type &amp;node1, <span class="keyword">const</span> node_type &amp;node2)</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; <span class="keywordflow">if</span> (node1==node2)</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (adjacencyLists.Has(node1)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> adjacencyLists.Get(node1)-&gt;Has(node2);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#adc378f34b57faf0885d7edacea35d9d8"> 186</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#adc378f34b57faf0885d7edacea35d9d8">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::AddConnection</a>(<span class="keyword">const</span> node_type &amp;node1, <span class="keyword">const</span> node_type &amp;node2, weight_type weight)</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; <span class="keywordflow">if</span> (node1==node2)</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (adjacencyLists.Has(node1)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; AddNode(node1);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; adjacencyLists.Get(node1)-&gt;Set(node2, weight);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (adjacencyLists.Has(node2)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; AddNode(node2);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; adjacencyLists.Get(node2)-&gt;Set(node1, weight);</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00200"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a3e6a2a94aa9cf4c3c46922e51a9e8cc8"> 200</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a3e6a2a94aa9cf4c3c46922e51a9e8cc8">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::RemoveConnection</a>(<span class="keyword">const</span> node_type &amp;node1, <span class="keyword">const</span> node_type &amp;node2)</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; adjacencyLists.Get(node2)-&gt;Delete(node1);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; adjacencyLists.Get(node1)-&gt;Delete(node2);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4127 ) // warning C4127: conditional expression is constant</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (allow_unlinkedNodes==<span class="keyword">false</span>) <span class="comment">// If we do not allow _unlinked nodes, then if there are no connections, remove the node</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (adjacencyLists.Get(node1)-&gt;Size()==0)</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; RemoveNode(node1); <span class="comment">// Will also remove node1 from the adjacency list of node2</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (adjacencyLists.Has(node2) &amp;&amp; adjacencyLists.Get(node2)-&gt;Size()==0)</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; RemoveNode(node2);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div>
<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; ClearDijkstra();</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00220"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ae728c1f41989d531588829916f7b28ae"> 220</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ae728c1f41989d531588829916f7b28ae">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::Clear</a>(<span class="keywordtype">void</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="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; adjacencyLists.Size(); i++)</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(adjacencyLists[i], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; adjacencyLists.Clear();</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; ClearDijkstra();</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; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00231"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ae7fcebbbd48228744e31a6c4d1750e9e"> 231</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ae7fcebbbd48228744e31a6c4d1750e9e">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::GetShortestPath</a>(<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;node_type&gt;</a> &amp;path, node_type startNode, node_type endNode, weight_type INFINITE_WEIGHT)</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; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a34219a5ce92981102d06fb1da7842a6b" title="Clear the list.">Clear</a>(<span class="keyword">false</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (startNode==endNode)</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(startNode, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(endNode, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span> (isValidPath==<span class="keyword">false</span> || rootNode!=startNode)</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; ClearDijkstra();</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; GenerateDisjktraMatrix(startNode, INFINITE_WEIGHT);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">// return the results</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">unsigned</span> col,row;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; weight_type currentWeight;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml" title="A queue implemented as an array with a read and write index.">DataStructures::Queue&lt;node_type&gt;</a> outputQueue;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; col=costMatrixIndices.GetIndexFromKey(endNode, &amp;objectExists);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (costMatrixIndices.Size()&lt;2)</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span> (objectExists==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; node_type vertex;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; row=costMatrixIndices.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>()-2;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> (row==0)</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(startNode, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(endNode, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; currentWeight=costMatrix[row*adjacencyLists.Size() + col];</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> (currentWeight==INFINITE_WEIGHT)</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">// No path</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; vertex=endNode;</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; outputQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a3980613e44a80982708b9d1f49fa0fea">PushAtHead</a>(vertex, 0, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; row--;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">for</span>(;;)</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; <span class="keywordflow">while</span> (costMatrix[row*adjacencyLists.Size() + col] == currentWeight)</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (row==0)</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(startNode, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">while</span>(!outputQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a8a535ff9f0dceecedf31401490da3a31">IsEmpty</a>())</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(outputQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a25272370e684388afd807c5369e4ef87">Pop</a>(), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; --row;</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; vertex=leastNodeArray[row];</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; outputQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a3980613e44a80982708b9d1f49fa0fea">PushAtHead</a>(vertex, 0, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (row==0)</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; col=costMatrixIndices.GetIndexFromKey(vertex, &amp;objectExists);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; currentWeight=costMatrix[row*adjacencyLists.Size() + col];</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(startNode, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">while</span>(!outputQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a8a535ff9f0dceecedf31401490da3a31">IsEmpty</a>())</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(outputQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a25272370e684388afd807c5369e4ef87">Pop</a>(), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00307"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ad53ce73bf226c91905d0d81c97c1a4db"> 307</a></span>&#160; node_type <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ad53ce73bf226c91905d0d81c97c1a4db">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::GetNodeAtIndex</a>(<span class="keywordtype">unsigned</span> nodeIndex)<span class="keyword"> const</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> adjacencyLists.GetKeyAtIndex(nodeIndex);</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00313"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a66f4034521b47d5e331b0f08a37afc36"> 313</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a66f4034521b47d5e331b0f08a37afc36">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::GetNodeCount</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> adjacencyLists.Size();</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="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00319"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a67427257d69b16e530f8e9bdfed7e6bb"> 319</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a67427257d69b16e530f8e9bdfed7e6bb">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::GetConnectionCount</a>(<span class="keywordtype">unsigned</span> nodeIndex)<span class="keyword"> const</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> adjacencyLists[nodeIndex]-&gt;Size();</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</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="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00325"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a3a2958a36405b1c4e441c5560e660813"> 325</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a3a2958a36405b1c4e441c5560e660813">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::GetConnectionAtIndex</a>(<span class="keywordtype">unsigned</span> nodeIndex, <span class="keywordtype">unsigned</span> connectionIndex, node_type &amp;outNode, weight_type &amp;outWeight)<span class="keyword"> const</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; outWeight=adjacencyLists[nodeIndex]-&gt;operator[](connectionIndex);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; outNode=adjacencyLists[nodeIndex]-&gt;GetKeyAtIndex(connectionIndex);</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00332"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#af6ae09481c0c13f41def60dc4ed6a9f1"> 332</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#af6ae09481c0c13f41def60dc4ed6a9f1">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::GetSpanningTree</a>(<a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml">DataStructures::Tree&lt;node_type&gt;</a> &amp;outTree, <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;node_type&gt;</a> *inputNodes, node_type startNode, weight_type INFINITE_WEIGHT )</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">// Find the shortest path from the start node to each of the input nodes. Add this path to a new WeightedGraph if the result is reachable</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;node_type&gt;</a> path;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">DataStructures::WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;</a> outGraph;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordtype">bool</span> res;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordtype">unsigned</span> i,j;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; inputNodes-&gt;<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</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; res=GetShortestPath(path, startNode, (*inputNodes)[i], INFINITE_WEIGHT);</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (res &amp;&amp; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>()&gt;0)</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; path.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>()-1; j++)</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// Don&#39;t bother looking up the weight</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; outGraph.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#adc378f34b57faf0885d7edacea35d9d8">AddConnection</a>(path[j], path[j+1], INFINITE_WEIGHT);</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">// Copy the graph to a tree.</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml" title="A queue implemented as an array with a read and write index.">DataStructures::Queue&lt;NodeAndParent&gt;</a> nodesToProcess;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml">DataStructures::Tree&lt;node_type&gt;</a> *current;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt;node_type, weight_type&gt;</a> *adjacencyList;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; node_type key;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#d2/d49/struct_data_structures_1_1_weighted_graph_1_1_node_and_parent">NodeAndParent</a> nap, nap2;</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; outTree.<a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml#a9c5a255e506458607a63c30e25c51281">DeleteDecendants</a>();</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; outTree.<a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml#aa0ddb15c34075d02357b08c917bd4196">data</a>=startNode;</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; current=&amp;outTree;</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (outGraph.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a9b7213f0f01a226cd7033d4a84b7cdf8">adjacencyLists</a>.<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#ac4620bb554cace55c0f093abafad01d9">Has</a>(startNode)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; adjacencyList = outGraph.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a9b7213f0f01a226cd7033d4a84b7cdf8">adjacencyLists</a>.<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a3514ebacc6a333e824d4fda7382275df">Get</a>(startNode);</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; adjacencyList-&gt;<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#ad33475fbf642a7df45a48d9f453c3566">Size</a>(); i++)</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; nap2.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a29bb0785f3cb3448280b17fe457e7ad1">node</a>= SLNet::OP_NEW&lt;DataStructures::Tree&lt;node_type&gt; &gt;( <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; nap2.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a29bb0785f3cb3448280b17fe457e7ad1">node</a>-&gt;<a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml#aa0ddb15c34075d02357b08c917bd4196">data</a>=adjacencyList-&gt;<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a9472d4b96dd3a7919819120c6a1c1466">GetKeyAtIndex</a>(i);</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; nap2.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac09b09f98e636f289ac435f0c9c46bc0">parent</a>=current;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; nodesToProcess.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(nap2, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; current-&gt;<a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml#a13b78d683620e94033d89fa950f4bda6">children</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(nap2.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a29bb0785f3cb3448280b17fe457e7ad1">node</a>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">while</span> (nodesToProcess.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>())</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; nap=nodesToProcess.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a25272370e684388afd807c5369e4ef87">Pop</a>();</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; current=nap.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a29bb0785f3cb3448280b17fe457e7ad1">node</a>;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; adjacencyList = outGraph.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a9b7213f0f01a226cd7033d4a84b7cdf8">adjacencyLists</a>.<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a3514ebacc6a333e824d4fda7382275df">Get</a>(nap.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a29bb0785f3cb3448280b17fe457e7ad1">node</a>-&gt;<a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml#aa0ddb15c34075d02357b08c917bd4196">data</a>);</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; adjacencyList-&gt;<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#ad33475fbf642a7df45a48d9f453c3566">Size</a>(); i++)</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; key=adjacencyList-&gt;<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a9472d4b96dd3a7919819120c6a1c1466">GetKeyAtIndex</a>(i);</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> (key!=nap.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac09b09f98e636f289ac435f0c9c46bc0">parent</a>-&gt;<a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml#aa0ddb15c34075d02357b08c917bd4196">data</a>)</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; nap2.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a29bb0785f3cb3448280b17fe457e7ad1">node</a>= SLNet::OP_NEW&lt;DataStructures::Tree&lt;node_type&gt; &gt;( <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; nap2.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a29bb0785f3cb3448280b17fe457e7ad1">node</a>-&gt;<a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml#aa0ddb15c34075d02357b08c917bd4196">data</a>=key;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; nap2.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac09b09f98e636f289ac435f0c9c46bc0">parent</a>=current;</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; nodesToProcess.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(nap2, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; current-&gt;<a class="code" href="../../de/d2c/class_data_structures_1_1_tree.xhtml#a13b78d683620e94033d89fa950f4bda6">children</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(nap2.<a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#a29bb0785f3cb3448280b17fe457e7ad1">node</a>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; } </div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00398"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac1f514b3abe06d47cb5991d592f16e17"> 398</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ac1f514b3abe06d47cb5991d592f16e17">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::GenerateDisjktraMatrix</a>(node_type startNode, weight_type INFINITE_WEIGHT)</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">if</span> (adjacencyLists.Size()==0)</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; costMatrix = SLNet::OP_NEW_ARRAY&lt;weight_type&gt;(adjacencyLists.Size() * adjacencyLists.Size(), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; leastNodeArray = SLNet::OP_NEW_ARRAY&lt;node_type&gt;(adjacencyLists.Size(), <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; node_type currentNode;</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordtype">unsigned</span> col, row, row2, openSetIndex;</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; node_type adjacentKey;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordtype">unsigned</span> adjacentIndex;</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; weight_type edgeWeight, currentNodeWeight, adjacentNodeWeight;</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt;node_type, weight_type&gt;</a> *adjacencyList;</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt;weight_type, node_type, false&gt;</a> minHeap;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml">DataStructures::Map&lt;node_type, weight_type&gt;</a> openSet;</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; <span class="keywordflow">for</span> (col=0; col &lt; adjacencyLists.Size(); col++)</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// This should be already sorted, so it&#39;s a bit inefficient to do an insertion sort, but what the heck</span></div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; costMatrixIndices.Insert(adjacencyLists.GetKeyAtIndex(col),adjacencyLists.GetKeyAtIndex(col), <span class="keyword">true</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</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; <span class="keywordflow">for</span> (col=0; col &lt; adjacencyLists.Size() * adjacencyLists.Size(); col++)</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; costMatrix[col]=INFINITE_WEIGHT;</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; currentNode=startNode;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; row=0;</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; currentNodeWeight=0;</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; rootNode=startNode;</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="comment">// Clear the starting node column</span></div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (adjacencyLists.Size())</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; adjacentIndex=adjacencyLists.<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#aacb6191d7d678267acc8bf6286033b21">GetIndexAtKey</a>(startNode);</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">for</span> (row2=0; row2 &lt; adjacencyLists.Size(); row2++)</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; costMatrix[row2*adjacencyLists.Size() + adjacentIndex]=0;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">while</span> (row &lt; adjacencyLists.Size()-1)</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; adjacencyList = adjacencyLists.<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a3514ebacc6a333e824d4fda7382275df">Get</a>(currentNode);</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="comment">// Go through all connections from the current node. If the new weight is less than the current weight, then update that weight.</span></div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">for</span> (col=0; col &lt; adjacencyList-&gt;<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#ad33475fbf642a7df45a48d9f453c3566">Size</a>(); col++)</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; edgeWeight=(*adjacencyList)[col];</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; adjacentKey=adjacencyList-&gt;<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a9472d4b96dd3a7919819120c6a1c1466">GetKeyAtIndex</a>(col);</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; adjacentIndex=adjacencyLists.GetIndexAtKey(adjacentKey);</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; adjacentNodeWeight=costMatrix[row*adjacencyLists.Size() + adjacentIndex];</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span> (currentNodeWeight + edgeWeight &lt; adjacentNodeWeight)</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="comment">// Update the weight for the adjacent node</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">for</span> (row2=row; row2 &lt; adjacencyLists.Size(); row2++)</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; costMatrix[row2*adjacencyLists.Size() + adjacentIndex]=currentNodeWeight + edgeWeight;</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; openSet.<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a835a751752d457c333853bfecd30e9b0">Set</a>(adjacentKey, currentNodeWeight + edgeWeight);</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="comment">// Find the lowest in the open set</span></div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; minHeap.<a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#ab573390b91ff42db9465a289f1c417de">Clear</a>(<span class="keyword">true</span>,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">for</span> (openSetIndex=0; openSetIndex &lt; openSet.<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#ad33475fbf642a7df45a48d9f453c3566">Size</a>(); openSetIndex++)</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; minHeap.<a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#aa01a134957e811c1af719805d493b700">Push</a>(openSet[openSetIndex], openSet.<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#a9472d4b96dd3a7919819120c6a1c1466">GetKeyAtIndex</a>(openSetIndex),<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="comment"> unsigned i,j;</span></div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="comment"> for (i=0; i &lt; adjacencyLists.Size()-1; i++)</span></div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="comment"> for (j=0; j &lt; adjacencyLists.Size(); j++)</span></div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="comment"> RAKNET_DEBUG_PRINTF(&quot;%2i &quot;, costMatrix[i*adjacencyLists.Size() + j]);</span></div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="comment"> RAKNET_DEBUG_PRINTF(&quot;Node=%i&quot;, leastNodeArray[i]);</span></div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="comment"> RAKNET_DEBUG_PRINTF(&quot;\n&quot;);</span></div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">if</span> (minHeap.<a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#acdb7d16c52998d6fc8a7b1a8602b8906">Size</a>()==0)</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// Unreachable nodes</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; isValidPath=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; currentNodeWeight=minHeap.<a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a50ae6f55a75156e2ab679a0575ebe7ef">PeekWeight</a>(0);</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; leastNodeArray[row]=minHeap.<a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a9ce961937f06f77b7ad82a02ce8d64ac">Pop</a>(0);</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; currentNode=leastNodeArray[row];</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; openSet.<a class="code" href="../../dc/da9/class_data_structures_1_1_map.xhtml#af7be78b0821c0a775b3f0acfd7560abe">Delete</a>(currentNode); </div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; row++;</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; }</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="comment">#ifdef _DEBUG</span></div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="comment"> unsigned i,j;</span></div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="comment"> for (i=0; i &lt; adjacencyLists.Size()-1; i++)</span></div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="comment"> for (j=0; j &lt; adjacencyLists.Size(); j++)</span></div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="comment"> RAKNET_DEBUG_PRINTF(&quot;%2i &quot;, costMatrix[i*adjacencyLists.Size() + j]);</span></div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="comment"> RAKNET_DEBUG_PRINTF(&quot;Node=%i&quot;, leastNodeArray[i]);</span></div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="comment"> RAKNET_DEBUG_PRINTF(&quot;\n&quot;);</span></div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; isValidPath=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00506"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#abb95a374208eb9c62101aae4c00f9072"> 506</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#abb95a374208eb9c62101aae4c00f9072">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::ClearDijkstra</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">if</span> (isValidPath)</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; isValidPath=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acd53258ab2c0b731df325c91b2e85c9b">SLNet::OP_DELETE_ARRAY</a>(costMatrix, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acd53258ab2c0b731df325c91b2e85c9b">SLNet::OP_DELETE_ARRAY</a>(leastNodeArray, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; costMatrixIndices.Clear(<span class="keyword">false</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> node_type, <span class="keyword">class</span> weight_type, <span class="keywordtype">bool</span> allow_unlinkedNodes&gt;</div>
<div class="line"><a name="l00518"></a><span class="lineno"><a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ae3903323e2315b7cb2850a8ff1fcbf76"> 518</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml#ae3903323e2315b7cb2850a8ff1fcbf76">WeightedGraph&lt;node_type, weight_type, allow_unlinkedNodes&gt;::Print</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor">#ifdef _DEBUG</span></div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="preprocessor"></span> <span class="keywordtype">unsigned</span> i,j;</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; adjacencyLists.Size(); i++)</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">//RAKNET_DEBUG_PRINTF(&quot;%i connected to &quot;, i);</span></div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#a2a5d867f7ae6521f217847a78f17ab4a">RAKNET_DEBUG_PRINTF</a>(<span class="stringliteral">&quot;%s connected to &quot;</span>, adjacencyLists.GetKeyAtIndex(i).systemAddress.ToString());</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">if</span> (adjacencyLists[i]-&gt;Size()==0)</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#a2a5d867f7ae6521f217847a78f17ab4a">RAKNET_DEBUG_PRINTF</a>(<span class="stringliteral">&quot;&lt;Empty&gt;&quot;</span>);</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; adjacencyLists[i]-&gt;Size(); j++)</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">// RAKNET_DEBUG_PRINTF(&quot;%i (%.2f) &quot;, adjacencyLists.GetIndexAtKey(adjacencyLists[i]-&gt;GetKeyAtIndex(j)), (float) adjacencyLists[i]-&gt;operator[](j) );</span></div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#a2a5d867f7ae6521f217847a78f17ab4a">RAKNET_DEBUG_PRINTF</a>(<span class="stringliteral">&quot;%s (%.2f) &quot;</span>, adjacencyLists[i]-&gt;GetKeyAtIndex(j).systemAddress.ToString(), (float) adjacencyLists[i]-&gt;<span class="keyword">operator</span>[](j) );</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#a2a5d867f7ae6521f217847a78f17ab4a">RAKNET_DEBUG_PRINTF</a>(<span class="stringliteral">&quot;\n&quot;</span>);</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;}</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning( pop )</span></div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor">#endif</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/deb/_d_s___weighted_graph_8h.xhtml">DS_WeightedGraph.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,211 @@
var group___c_l_o_u_d___g_r_o_u_p =
[
[ "CloudClient", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#dc/d7d/class_s_l_net_1_1_cloud_client", [
[ "CloudClient", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#abfcb6bd3b6ac641a83a65773c76ef361", null ],
[ "~CloudClient", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a1dc05ac199e8f1da69066238d65680e4", null ],
[ "DeallocateWithDefaultAllocator", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a1fecb2cde2c80edbb39ca9db411b9788", null ],
[ "DeallocateWithDefaultAllocator", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa65d1efb89a91f282ab06e844921c609", null ],
[ "Get", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a6e5e3f760ba459512ae9df2addd433b6", null ],
[ "Get", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ac5b9a2ac1f6e69a2097f59c60111116e", null ],
[ "Get", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a07d50e53244825d262211708ced9105e", null ],
[ "OnGetReponse", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a527196f94cf1244e962f91267b29dd29", null ],
[ "OnGetReponse", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a1a48c3c7560aa2142a0f25faad82a760", null ],
[ "OnReceive", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a697aac291ae72c8bec6e0766a141f8ee", null ],
[ "OnSubscriptionNotification", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#accb36db0d67affc472fe9f048e8098bb", null ],
[ "OnSubscriptionNotification", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a6375aa5131d16d4d70532e232bd6d392", null ],
[ "Post", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a6250dddbb6207134d8db0bd934abb92f", null ],
[ "Release", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#add4616c7c490eaf25bcf1e0ac284d283", null ],
[ "SetDefaultCallbacks", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ad8f91a7b308a0bf4ecbfc65ffe69b264", null ],
[ "Unsubscribe", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a823aad670a1008a475b7de566a1f615a", null ],
[ "Unsubscribe", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a24c82920b6aa26401759321499b23b18", null ],
[ "Unsubscribe", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a24c8ba8a01e64f08e0362af008a35002", null ],
[ "allocator", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aaa6adfbbcaaa3874dae8858d1904d864", null ],
[ "callback", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab3645c13ffbd11137b434613dbf385c7", null ],
[ "unsetDefaultAllocator", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aecb33a4b6d9b4e04e3a6645de32fcd0a", null ]
] ],
[ "CloudClientCallback", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#dc/d31/class_s_l_net_1_1_cloud_client_callback", [
[ "CloudClientCallback", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a35f19d7b627c5a21303f9acfcb1c676a", null ],
[ "~CloudClientCallback", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#acaab030cb7667d94c0899e484279bc2a", null ],
[ "OnGet", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ad4fd7aeef422354cd4d26460c6412b04", null ],
[ "OnSubscriptionNotification", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a73febf6d23167b2eff4c7631dc3e8163", null ]
] ],
[ "CloudAllocator", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#db/de6/class_s_l_net_1_1_cloud_allocator", [
[ "CloudAllocator", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa53da432ec9359041696e6b466f68f7e", null ],
[ "~CloudAllocator", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a5f109301b802457733090e6977a6f5ae", null ],
[ "AllocateCloudQueryRow", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a702e1f84191b2543c51f07a8e2b0d3b0", null ],
[ "AllocateRowData", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#abefab52c76dd290a38bf84a45f5ca3a3", null ],
[ "DeallocateCloudQueryRow", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#af90ada1dc15a640d42f10817a81cbc2f", null ],
[ "DeallocateRowData", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa04ce7ac88f01d2ff1345c3c581f975b", null ]
] ],
[ "CloudKey", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#d9/d8c/struct_s_l_net_1_1_cloud_key", [
[ "CloudKey", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a3dfad0266c31649c5a17df900d106af5", null ],
[ "CloudKey", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a1dac3fe7440534017daa11dcee443fee", null ],
[ "~CloudKey", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#af26eaac1ad703fff78dcf40680a4a68e", null ],
[ "Serialize", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a203e1138107916d9d04276d3a2fc7f51", null ],
[ "primaryKey", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab91dede511718a8609a094665f4865cb", null ],
[ "secondaryKey", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a5532b87d2d0330cf90dc7906a328fdc1", null ]
] ],
[ "CloudQuery", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#da/d88/struct_s_l_net_1_1_cloud_query", [
[ "CloudQuery", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a4ea5d11fcc8682176cda64965c14bd3d", null ],
[ "Serialize", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a1285e085515482afd0ae2ffbf1ae2ca0", null ],
[ "keys", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aeb5f523e8a9f72fc591af880244fb35b", null ],
[ "maxRowsToReturn", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ae0c655d192717f0cebe590fec254d4a2", null ],
[ "startingRowIndex", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a95f7b3a6511053956da43e8cf1bfd679", null ],
[ "subscribeToResults", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#af3478798840055cbf3f2371e8f6fb7ed", null ]
] ],
[ "CloudQueryRow", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#de/dfa/struct_s_l_net_1_1_cloud_query_row", [
[ "Serialize", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ad166a7c146000c594b4c1f609a7dfc28", null ],
[ "clientGUID", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a470096c756e51a301f9bfe96a42c393c", null ],
[ "clientSystemAddress", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ad1a242bf51ad8439641a1e15945a0bb1", null ],
[ "data", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a0f37df8209412d7f60f007b5c0919e81", null ],
[ "key", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ad68ff8aaa1ac1230f06614a7dc2e21d4", null ],
[ "length", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa90a3b04ab03190a76654f199de0e4e1", null ],
[ "serverGUID", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a11360751ae128aacaec75b69e15d1c09", null ],
[ "serverSystemAddress", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a4c23886322289dfda16b3d591032f170", null ]
] ],
[ "CloudQueryResult", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#d0/d6e/struct_s_l_net_1_1_cloud_query_result", [
[ "Serialize", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ae5cd6e8a6d154817e1448ea6a6f4f4e7", null ],
[ "SerializeCloudQueryRows", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a52f0033830fb93a8148dfd58df8f22b2", null ],
[ "SerializeHeader", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a3750faaa2a35f9c63c46edf8a018a477", null ],
[ "SerializeNumRows", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ad84dc07aa681785cf91e27e9bd5efaca", null ],
[ "cloudQuery", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a9ad65984ad2a31a0bc5292f174f997dd", null ],
[ "resultKeyIndices", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#abfd21ef967570a089f485214bdfda43b", null ],
[ "rowsReturned", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa7ba7034f6886188248d60728310cbb2", null ],
[ "subscribeToResults", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#abfc6ae94f0e8d98bf0c5dbdde087c2c8", null ]
] ],
[ "CloudServerQueryFilter", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#d8/d0a/class_s_l_net_1_1_cloud_server_query_filter", [
[ "CloudServerQueryFilter", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a5a9e3e0f82d728ab5d4145b83b1b8e9f", null ],
[ "~CloudServerQueryFilter", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aaa6270fa5bd901aaa41f8d96556d489d", null ],
[ "OnGetRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a685ad59a272a670aec4df6043d80acea", null ],
[ "OnPostRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a800e6237a3569c47424b8c01778e153e", null ],
[ "OnReleaseRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a1d45f53742b53e9703370affe8b0011b", null ],
[ "OnUnsubscribeRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a42a9dbb96da5b20c8f1786aeec837cd3", null ]
] ],
[ "CloudServer", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#db/d6e/class_s_l_net_1_1_cloud_server", [
[ "CloudServer", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a3fd55032bc47470a1421d3a95fd82bfa", null ],
[ "~CloudServer", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a25819bf6be129aa384e17e73cb22eb88", null ],
[ "AddQueryFilter", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a62b9c66d2840a66daf9c2fd560af0617", null ],
[ "AddServer", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ac72cf0435ed30c749a92f203a2ab5f05", null ],
[ "BufferedGetResponseFromServerComp", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a0a8004b7c1ae92a71c979e79c87e3cbb", null ],
[ "Clear", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a8baf8cae6e0a448e2e4024455c901e1c", null ],
[ "ForceExternalSystemAddress", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a7c2eecc0d639853005f7021e6589d251", null ],
[ "GetOrAllocateCloudDataList", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a7cbeb9b04e30e6d8f490fdf35411fb05", null ],
[ "GetRemoteServers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a320c90b41c7f9ba11f7da5f72b7e1b0c", null ],
[ "GetRequestComp", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab473b4e53bc1b115afb7a9185a611f52", null ],
[ "GetServersWithUploadedKeys", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a03c0b8571b5cef9b12a3f6f49997e1cb", null ],
[ "KeyDataListComp", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ad7b54760915d1f812ac1283dd2dce8fa", null ],
[ "KeyDataPtrComp", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa8b54dbdff5866251bd31f3e5c207bbd", null ],
[ "KeySubscriberIDComp", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a1de0240c1c81505538d103d50e65e166", null ],
[ "NotifyClientSubscribersOfDataChange", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a78071762fba350058bdc5246e398cce3", null ],
[ "NotifyClientSubscribersOfDataChange", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab00e572aace9698c4a3521fd3f40e997", null ],
[ "NotifyServerSubscribersOfDataChange", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#acd2fe25b3f3f0f03f0379fe1393ac05c", null ],
[ "OnClosedConnection", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a4079fb5604ffa5ad70214e7082c480bd", null ],
[ "OnGetRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a0236a9a65c79dfdabd73f919562b32c4", null ],
[ "OnPostRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a622c978cf14279a484bd45354c584755", null ],
[ "OnRakPeerShutdown", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ad07c2757e44c9218701528f84030894b", null ],
[ "OnReceive", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a1ce852e3a99bbbc9ff3bd292729c5a14", null ],
[ "OnReleaseRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a3a1a3e2a15e692c7b3ed9b13705631be", null ],
[ "OnRemoveSubscribedKeyFromServers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a31fc60e0412b9f67ed80da4d2cb7cc36", null ],
[ "OnRemoveUploadedKeyFromServers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a453a1cdf6e4ef35b86bb651a01c23c48", null ],
[ "OnSendSubscribedKeyToServers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a6150d8847132ff96cbfe8803e184ec65", null ],
[ "OnSendUploadedAndSubscribedKeysToServer", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab7a5d03a26a1ecdf6eb3e27f0902769e", null ],
[ "OnSendUploadedKeyToServers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a83bddc9c6b08c497ad7009401abf17d1", null ],
[ "OnServerDataChanged", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a71f9224f86cda7507d858393616a796d", null ],
[ "OnServerToServerGetRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aab8a34fce820fa33832d34b04d09c34d", null ],
[ "OnServerToServerGetResponse", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#afadd1623be44f785f05cf6ec031b3a16", null ],
[ "OnUnsubscribeRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a363053da9b386b9618ce7476b743c6f1", null ],
[ "ProcessAndTransmitGetRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a78367f0efd4c497e4bfceba7cf3e3830", null ],
[ "ProcessCloudQueryWithAddresses", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ad41cacafe65b569862d0d658324f0d33", null ],
[ "ReleaseKeys", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ac022bb7299093d566cee1e53116a534a", null ],
[ "ReleaseSystem", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a54449e169aeb88c82cdb64a7597a18f6", null ],
[ "RemoteServerComp", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a43d630f102785575b83dbc9ad9363e3f", null ],
[ "RemoveAllQueryFilters", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#afe919a59b09205ea59a90002a732de46", null ],
[ "RemoveQueryFilter", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a16a5456256f6af391ec0503e7104d9b6", null ],
[ "RemoveServer", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a975250b6f2caf1e3578c8d8b5506d7d3", null ],
[ "RemoveSpecificSubscriber", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa5122268054597b57cac036710ecefb5", null ],
[ "RemoveSubscribedKeyFromServers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a9f3d86eaebe03524b31b5d1cba595133", null ],
[ "RemoveUploadedKeyFromServers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a8aa711ea82287e389a65527a09025fc9", null ],
[ "SendSubscribedKeyToServers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ae7234f25306cd09794781a95931baf68", null ],
[ "SendUploadedAndSubscribedKeysToServer", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a7491984d386fa4ed3372910d17d0898e", null ],
[ "SendUploadedKeyToServers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ae5180d55cf3c038884f3dd664902a2ae", null ],
[ "SetMaxBytesPerDownload", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a2142c4609235a2bb7b9339bd588e302e", null ],
[ "SetMaxUploadBytesPerClient", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a334793d6126f26bd54bfdb0808b0ebda", null ],
[ "UnsubscribeFromKey", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a8527b9978f243373989058496602c38b", null ],
[ "Update", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a4910c8f996fc22e15c04a7a9c02315dc", null ],
[ "WriteCloudQueryRowFromResultList", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a1ed4f2d471d51949a91a929200ba9bcc", null ],
[ "WriteCloudQueryRowFromResultList", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa9a2c50f0babbdcc918d2a80aa4481ae", null ],
[ "dataRepository", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#abd9a9cf5b4704c6edc34cef815e428c0", null ],
[ "forceAddress", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a80a9b8d48adf55ea3a4d5aed3f0bb2eb", null ],
[ "getRequests", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a2b91804d97e3190084e28095333c7674", null ],
[ "maxBytesPerDowload", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a3c1d79fedcee6b46edbea584702cbc8e", null ],
[ "maxUploadBytesPerClient", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a451ce0b6c4eafb417dc71ef2851384d0", null ],
[ "nextGetRequestId", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a3d1030da046f265e5ef6cdc9c4b0fe7a", null ],
[ "nextGetRequestsCheck", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a7f62561d0a4acde06ca2ad8ebe51c051", null ],
[ "queryFilters", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a4a9a8dee12df4e8082fbf34929d49c62", null ],
[ "remoteServers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab02da0ac79ccd9d9e1aac98e81091100", null ],
[ "remoteSystems", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a13a1c33adc880b61926ed9d4965f6f86", null ]
] ],
[ "BufferedGetResponseFromServer", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#df/dd3/struct_s_l_net_1_1_cloud_server_1_1_buffered_get_response_from_server", [
[ "Clear", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab3ca01e8e7dfeeb783383640fffd9f9f", null ],
[ "gotResult", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab426f5122bd8e7a93bd48f130e1a2875", null ],
[ "queryResult", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#affe2e3912c96178576c53d0cc32428c6", null ],
[ "serverAddress", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a4fb19c0fd822cec8c6e88380f2e9d6a9", null ]
] ],
[ "CloudData", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#df/d02/struct_s_l_net_1_1_cloud_server_1_1_cloud_data", [
[ "CloudData", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa7db89b1110e1cb06ddf6439c703b601", null ],
[ "~CloudData", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a2da7d30c7bbc805cf3a0f0a26656d5fa", null ],
[ "Clear", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa7880c4ecb94fc5fb3d788bb96f03048", null ],
[ "IsUnused", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aff15de50fc7e6c60dfcb3594ed9eac6c", null ],
[ "allocatedData", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aee8bfd2959b6b63fe12b89658b68bddc", null ],
[ "clientGUID", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#abbe7395b98d64c1f14cbb10300c04f4d", null ],
[ "clientSystemAddress", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ac4d6f477202bb717805db284e5f05c89", null ],
[ "dataLengthBytes", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#adaaaeaae337f69c7cd66c96032b1fdca", null ],
[ "dataPtr", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a641611d73cc90c7d19fad351d01fe71a", null ],
[ "isUploaded", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a08adcfc39da0e0ddb797073a1193a535", null ],
[ "serverGUID", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a67c99ef247882fbfb16867b3398d2cca", null ],
[ "serverSystemAddress", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a3cadd51f5b040f98d94d82265bd63db3", null ],
[ "specificSubscribers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aebea8ddcbccbfad60be41ee7aa31c814", null ],
[ "stackData", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a9277999b8483c42e45dd851a7f9f4870", null ]
] ],
[ "CloudDataList", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#d4/d61/struct_s_l_net_1_1_cloud_server_1_1_cloud_data_list", [
[ "IsNotUploaded", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a85756e43371a1ae5033ac660a09b7b24", null ],
[ "IsUnused", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#acf62342a88ab24c82e0830e6bee81ba4", null ],
[ "RemoveSubscriber", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a750aad9410ab1e402e314d4462bde85b", null ],
[ "key", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a941cf50199c2dae6c61a7132312e22c6", null ],
[ "keyData", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ac72c1c8b01346c2b43812cf0e0258f41", null ],
[ "nonSpecificSubscribers", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a2d76f81b1c4f7a856952683058cc90d8", null ],
[ "subscriberCount", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a9798bce174cddca2f35d144896000f76", null ],
[ "uploaderCount", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a89bb52729c263d29e95dd2996243c642", null ]
] ],
[ "CloudQueryWithAddresses", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#d4/dad/struct_s_l_net_1_1_cloud_server_1_1_cloud_query_with_addresses", [
[ "Serialize", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a06b093b1b4c4d81087387db7bc44b8b0", null ],
[ "cloudQuery", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a9eb1db70173a0d7e6fac426bcb66fd51", null ],
[ "specificSystems", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a472f4737197ffc9141e9e0d06d42f694", null ]
] ],
[ "GetRequest", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#da/dd1/struct_s_l_net_1_1_cloud_server_1_1_get_request", [
[ "AllRemoteServersHaveResponded", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ac6c1824bf1e3e114a3ce7858767e3971", null ],
[ "Clear", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aeaeaf98452dc16f18dee63f3f5c844a8", null ],
[ "cloudQueryWithAddresses", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aee738175786b499d1137cc6c48fdbbd9", null ],
[ "remoteServerResponses", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a0075897569da6f46ef3932bf66b52494", null ],
[ "requestId", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#af3094dc676015e95093c0e17d9030e82", null ],
[ "requestingClient", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a36e10e1b9496c680a087b73cb15d60a6", null ],
[ "requestStartTime", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a196df2bc751b73abf25edf8247e33ea5", null ]
] ],
[ "KeySubscriberID", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#d9/d5a/struct_s_l_net_1_1_cloud_server_1_1_key_subscriber_i_d", [
[ "key", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ac64476140985100e63b7d5a2a851270f", null ],
[ "specificSystemsSubscribedTo", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a03c99199f30eb0202856f12bef0f0455", null ]
] ],
[ "RemoteCloudClient", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#d1/d31/struct_s_l_net_1_1_cloud_server_1_1_remote_cloud_client", [
[ "IsUnused", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#abd5de8116fc1799e36aa4890d3eb3ab9", null ],
[ "subscribedKeys", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#aa51d5bdfb87693c34cfacd2f66e2481b", null ],
[ "uploadedBytes", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab22de88374c75ee74221e7d557e4f303", null ],
[ "uploadedKeys", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ad77f29503cea427c50fa18aef65a5468", null ]
] ],
[ "RemoteServer", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#d9/d6f/struct_s_l_net_1_1_cloud_server_1_1_remote_server", [
[ "gotSubscribedAndUploadedKeys", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a7a57c9a64199722d28616b2303c8d175", null ],
[ "serverAddress", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a933573b24c93a003fb0c9a3fd89549ad", null ],
[ "subscribedKeys", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab9ada164c0ca448438b06a9eb669631f", null ],
[ "uploadedKeys", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#ab6198528d4bbfd4736c4150756ea0b81", null ],
[ "workingFlag", "d8/df5/group___c_l_o_u_d___g_r_o_u_p.xhtml#a39d9618b04dcf72cf64566574398853d", null ]
] ]
];

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,124 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/SecureHandshake.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/df8/_secure_handshake_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">SecureHandshake.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">NativeFeatureIncludes.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/df8/_secure_handshake_8h_source.xhtml">Go to the source code of this file.</a></p>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/df8/_secure_handshake_8h.xhtml">SecureHandshake.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,160 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/SecureHandshake.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/df8/_secure_handshake_8h_source.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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">SecureHandshake.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d8/df8/_secure_handshake_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef SECURE_HANDSHAKE_H</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SECURE_HANDSHAKE_H</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#if LIBCAT_SECURITY==1</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// If building a RakNet DLL, be sure to tweak the CAT_EXPORT macro meaning</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#if !defined(_RAKNET_LIB) &amp;&amp; defined(_RAKNET_DLL)</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor"># define CAT_BUILD_DLL</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor"></span><span class="preprocessor"># define CAT_NEUTER_EXPORT</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">// Include DependentExtensions in your path to include this</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifdef _M_X64</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning(push)</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning(disable:4838)</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &quot;cat/AllTunnel.hpp&quot;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#ifdef _M_X64</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning(pop)</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor"></span><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;<span class="preprocessor">#endif // LIBCAT_SECURITY</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#endif // SECURE_HANDSHAKE_H</span></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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/df8/_secure_handshake_8h.xhtml">SecureHandshake.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,185 @@
<!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"/>
<title>SLikeNet: Source/include/slikenet/DS_BinarySearchTree.h File 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="../../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/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">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<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.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><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.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><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('d8/dfa/_d_s___binary_search_tree_8h.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)">
<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>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">DS_BinarySearchTree.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dd/dc5/memoryoverride_8h_source.xhtml">memoryoverride.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../db/dbd/_export_8h_source.xhtml">Export.h</a>&quot;</code><br/>
</div>
<p><a href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d19/class_data_structures_1_1_binary_search_tree.xhtml">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A binary search tree and an AVL balanced binary search tree. <a href="../../db/d19/class_data_structures_1_1_binary_search_tree.xhtml#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:de/d61/struct_data_structures_1_1_binary_search_tree_1_1node"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d19/class_data_structures_1_1_binary_search_tree.xhtml#de/d61/struct_data_structures_1_1_binary_search_tree_1_1node">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::node</a></td></tr>
<tr class="separator:de/d61/struct_data_structures_1_1_binary_search_tree_1_1node"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d07/class_data_structures_1_1_a_v_l_balanced_binary_search_tree.xhtml">DataStructures::AVLBalancedBinarySearchTree&lt; BinarySearchTreeType &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="../../dd/d07/class_data_structures_1_1_a_v_l_balanced_binary_search_tree.xhtml" title="An AVLBalancedBinarySearchTree is a binary tree that is always balanced.">AVLBalancedBinarySearchTree</a> is a binary tree that is always balanced. <a href="../../dd/d07/class_data_structures_1_1_a_v_l_balanced_binary_search_tree.xhtml#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/d80/namespace_data_structures"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml">DataStructures</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Class Documentation</h2>
<a name="de/d61/struct_data_structures_1_1_binary_search_tree_1_1node" id="de/d61/struct_data_structures_1_1_binary_search_tree_1_1node"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct DataStructures::BinarySearchTree::node</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><h3>template&lt;class BinarySearchTreeType&gt;<br/>
struct DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::node</h3>
<p>Definition at line <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml#l00102">102</a> of file <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml">DS_BinarySearchTree.h</a>.</p>
</div><table class="fieldtable">
<tr><th colspan="3">Class Members</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="aae201835a5764223f821b246ebd3f700"></a>BinarySearchTreeType *</td>
<td class="fieldname">
item</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ac4f290c3a0db3cbeb593c0fc4e825efc"></a><a class="el" href="../../db/d19/class_data_structures_1_1_binary_search_tree.xhtml#de/d61/struct_data_structures_1_1_binary_search_tree_1_1node">node</a> *</td>
<td class="fieldname">
left</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a081b81949db193622d3ec9811c1fbaf9"></a><a class="el" href="../../db/d19/class_data_structures_1_1_binary_search_tree.xhtml#de/d61/struct_data_structures_1_1_binary_search_tree_1_1node">node</a> *</td>
<td class="fieldname">
right</td>
<td class="fielddoc">
</td></tr>
</table>
</div>
</div>
</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_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h.xhtml">DS_BinarySearchTree.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff