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,164 @@
<!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/NatPunchthroughServer.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('dc/dd7/_nat_punchthrough_server_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">NatPunchthroughServer.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Contains the NAT-punchthrough plugin for the server.
<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="../../db/dbd/_export_8h_source.xhtml">Export.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="../../d7/d03/_packet_priority_8h_source.xhtml">PacketPriority.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="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.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="../../dc/dd7/_nat_punchthrough_server_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:d4/da9/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d4/da9/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface">SLNet::NatPunchthroughServerDebugInterface</a></td></tr>
<tr class="separator:d4/da9/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d4/d59/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface___printf"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d4/d59/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface___printf">SLNet::NatPunchthroughServerDebugInterface_Printf</a></td></tr>
<tr class="separator:d4/d59/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface___printf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d4/dd5/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface___packet_logger"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d4/dd5/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface___packet_logger">SLNet::NatPunchthroughServerDebugInterface_PacketLogger</a></td></tr>
<tr class="separator:d4/dd5/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface___packet_logger"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d1/dc6/class_s_l_net_1_1_nat_punchthrough_server"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d1/dc6/class_s_l_net_1_1_nat_punchthrough_server">SLNet::NatPunchthroughServer</a></td></tr>
<tr class="memdesc:d1/dc6/class_s_l_net_1_1_nat_punchthrough_server"><td class="mdescLeft">&#160;</td><td class="mdescRight">Server code for NATPunchthrough. <a href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d1/dc6/class_s_l_net_1_1_nat_punchthrough_server">More...</a><br/></td></tr>
<tr class="separator:d1/dc6/class_s_l_net_1_1_nat_punchthrough_server"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:df/d23/struct_s_l_net_1_1_nat_punchthrough_server_1_1_connection_attempt"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d23/struct_s_l_net_1_1_nat_punchthrough_server_1_1_connection_attempt">SLNet::NatPunchthroughServer::ConnectionAttempt</a></td></tr>
<tr class="separator:df/d23/struct_s_l_net_1_1_nat_punchthrough_server_1_1_connection_attempt"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:df/d9b/struct_s_l_net_1_1_nat_punchthrough_server_1_1_user"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d9b/struct_s_l_net_1_1_nat_punchthrough_server_1_1_user">SLNet::NatPunchthroughServer::User</a></td></tr>
<tr class="separator:df/d9b/struct_s_l_net_1_1_nat_punchthrough_server_1_1_user"><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>Contains the NAT-punchthrough plugin for the server. </p>
<p>Definition in file <a class="el" href="../../dc/dd7/_nat_punchthrough_server_8h_source.xhtml">NatPunchthroughServer.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="../../dc/dd7/_nat_punchthrough_server_8h.xhtml">NatPunchthroughServer.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,260 @@
<!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/NatPunchthroughServer.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('dc/dd7/_nat_punchthrough_server_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">NatPunchthroughServer.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../dc/dd7/_nat_punchthrough_server_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_NatPunchthroughServer==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 __NAT_PUNCHTHROUGH_SERVER_H</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __NAT_PUNCHTHROUGH_SERVER_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="../../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="../../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/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="../../d7/d03/_packet_priority_8h.xhtml" title="This file contains enumerations for packet priority and reliability enumerations.">PacketPriority.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="../../d4/dc5/_socket_includes_8h.xhtml">SocketIncludes.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/d4d/_d_s___ordered_list_8h.xhtml">DS_OrderedList.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="../../da/d66/string_8h.xhtml">string.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;<span class="keyword">struct </span>Packet;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_PacketLogger==1</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"></span><span class="keyword">class </span>PacketLogger;</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="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml"> 50</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d4/da9/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface">NatPunchthroughServerDebugInterface</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"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a8bb55d6e6b5a067419aa21a282506af8"> 52</a></span>&#160; <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a8bb55d6e6b5a067419aa21a282506af8">NatPunchthroughServerDebugInterface</a>() {}</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#aaed1a529e88be7cf33ee0f71f228eae0"> 53</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#aaed1a529e88be7cf33ee0f71f228eae0">~NatPunchthroughServerDebugInterface</a>() {}</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnServerMessage(<span class="keyword">const</span> <span class="keywordtype">char</span> *msg)=0;</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="l00058"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml"> 58</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d4/d59/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface___printf">NatPunchthroughServerDebugInterface_Printf</a> : <span class="keyword">public</span> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d4/da9/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface">NatPunchthroughServerDebugInterface</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; <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnServerMessage(<span class="keyword">const</span> <span class="keywordtype">char</span> *msg);</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;<span class="preprocessor">#if _RAKNET_SUPPORT_PacketLogger==1</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml"> 65</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d4/dd5/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface___packet_logger">NatPunchthroughServerDebugInterface_PacketLogger</a> : <span class="keyword">public</span> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d4/da9/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface">NatPunchthroughServerDebugInterface</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"> 67</span>&#160; <span class="comment">// Set to non-zero to write to the packetlogger!</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a63ed284c9a24d473e503da42c1cc5640"> 68</a></span>&#160; <a class="code" href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml#d9/d2e/class_s_l_net_1_1_packet_logger" title="Writes incoming and outgoing messages to the screen. This will write all incoming and outgoing messag...">PacketLogger</a> *<a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a63ed284c9a24d473e503da42c1cc5640">pl</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"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#adf4e3676a0678c28dee871c2f0e94202"> 70</a></span>&#160; <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#adf4e3676a0678c28dee871c2f0e94202">NatPunchthroughServerDebugInterface_PacketLogger</a>() {pl=0;}</div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#ab15821dbb2755c2b48754ff1f0b8d219"> 71</a></span>&#160; <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#ab15821dbb2755c2b48754ff1f0b8d219">~NatPunchthroughServerDebugInterface_PacketLogger</a>() {}</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnServerMessage(<span class="keyword">const</span> <span class="keywordtype">char</span> *msg);</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;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml"> 83</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/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d1/dc6/class_s_l_net_1_1_nat_punchthrough_server" title="Server code for NATPunchthrough.">NatPunchthroughServer</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="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">public</span>:</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="../../db/dbd/_export_8h.xhtml#af3e49377f340027d211b2814949efc48">STATIC_FACTORY_DECLARATIONS</a>(<a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d1/dc6/class_s_l_net_1_1_nat_punchthrough_server" title="Server code for NATPunchthrough.">NatPunchthroughServer</a>)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// Constructor</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d1/dc6/class_s_l_net_1_1_nat_punchthrough_server" title="Server code for NATPunchthrough.">NatPunchthroughServer</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; <span class="comment">// Destructor</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d1/dc6/class_s_l_net_1_1_nat_punchthrough_server" title="Server code for NATPunchthrough.">NatPunchthroughServer</a>();</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">void</span> SetDebugInterface(<a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d4/da9/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface">NatPunchthroughServerDebugInterface</a> *i);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> Update(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</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="l00104"></a><span class="lineno"> 104</span>&#160;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</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="l00107"></a><span class="lineno"> 107</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="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">// Each connected user has a ready state. Ready means ready for nat punchthrough.</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">struct </span><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d9b/struct_s_l_net_1_1_nat_punchthrough_server_1_1_user">User</a>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml"> 111</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d23/struct_s_l_net_1_1_nat_punchthrough_server_1_1_connection_attempt">ConnectionAttempt</a></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"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a7fa14422af622c5121f846a6adb1e360"> 113</a></span>&#160; <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a7fa14422af622c5121f846a6adb1e360">ConnectionAttempt</a>() {sender=0; recipient=0; startTime=0; attemptPhase=NAT_ATTEMPT_PHASE_NOT_STARTED;}</div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a3358fd965173cc731941667819a3eebe"> 114</a></span>&#160; <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d9b/struct_s_l_net_1_1_nat_punchthrough_server_1_1_user">User</a> *<a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a3358fd965173cc731941667819a3eebe">sender</a>, *recipient;</div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#ab8444bbb02b3645feee4209f6aa8a7e9"> 115</a></span>&#160; <a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#ab8444bbb02b3645feee4209f6aa8a7e9">sessionId</a>;</div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a9d81d3dd954d0a0cf952fb45b6d0dccc"> 116</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">SLNet::Time</a> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a9d81d3dd954d0a0cf952fb45b6d0dccc">startTime</a>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">enum</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#aff86976af401867ed4d46d7acd65f6d5ab8ba21cfdde1a3c54ad521d69fcf3c85"> 119</a></span>&#160; <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#aff86976af401867ed4d46d7acd65f6d5ab8ba21cfdde1a3c54ad521d69fcf3c85">NAT_ATTEMPT_PHASE_NOT_STARTED</a>,</div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#aff86976af401867ed4d46d7acd65f6d5a5a01227075446c3b8b517fb1c0248102"> 120</a></span>&#160; <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#aff86976af401867ed4d46d7acd65f6d5a5a01227075446c3b8b517fb1c0248102">NAT_ATTEMPT_PHASE_GETTING_RECENT_PORTS</a>,</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; } attemptPhase;</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/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml"> 123</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d9b/struct_s_l_net_1_1_nat_punchthrough_server_1_1_user">User</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"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a7a8800ba2b7d7746f22c55a28bb3611e"> 125</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/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a7a8800ba2b7d7746f22c55a28bb3611e">guid</a>;</div>
<div class="line"><a name="l00126"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a17f941fb4700ac4809602e82cfcf4d2c"> 126</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/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a17f941fb4700ac4809602e82cfcf4d2c">systemAddress</a>;</div>
<div class="line"><a name="l00127"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a474635bfaeef18e03fded53780e1ad32"> 127</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a474635bfaeef18e03fded53780e1ad32">mostRecentPort</a>;</div>
<div class="line"><a name="l00128"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#af54e159de2bfbc50a8f8f2c7329c16f0"> 128</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#af54e159de2bfbc50a8f8f2c7329c16f0">isReady</a>;</div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a74cde578be4021f3315f558f358fbb7b"> 129</a></span>&#160; <a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList&lt;RakNetGUID,RakNetGUID&gt;</a> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a74cde578be4021f3315f558f358fbb7b">groupPunchthroughRequests</a>;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00131"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a757edca63526795f3bffc0cf5f73ea03"> 131</a></span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;ConnectionAttempt *&gt;</a> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a757edca63526795f3bffc0cf5f73ea03">connectionAttempts</a>;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">bool</span> HasConnectionAttemptToUser(<a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d9b/struct_s_l_net_1_1_nat_punchthrough_server_1_1_user">User</a> *user);</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordtype">void</span> DerefConnectionAttempt(<a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d23/struct_s_l_net_1_1_nat_punchthrough_server_1_1_connection_attempt">ConnectionAttempt</a> *ca);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">void</span> DeleteConnectionAttempt(<a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d23/struct_s_l_net_1_1_nat_punchthrough_server_1_1_connection_attempt">ConnectionAttempt</a> *ca);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">void</span> LogConnectionAttempts(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> &amp;rs);</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"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#ac5a417f74afb60a79548c55d7e264c6d"> 137</a></span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">SLNet::Time</a> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#ac5a417f74afb60a79548c55d7e264c6d">lastUpdate</a>;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> NatPunchthroughUserComp( <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/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d9b/struct_s_l_net_1_1_nat_punchthrough_server_1_1_user">User</a> * <span class="keyword">const</span> &amp;data );</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordtype">void</span> OnNATPunchthroughRequest(<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="l00141"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a04eba32c62dafa92f1f740b87003876f"> 141</a></span>&#160; <a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList&lt;RakNetGUID, User*, NatPunchthroughServer::NatPunchthroughUserComp&gt;</a> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a04eba32c62dafa92f1f740b87003876f">users</a>;</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="keywordtype">void</span> OnGetMostRecentPort(<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="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">void</span> OnClientReady(<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="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">void</span> SendTimestamps(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">void</span> StartPendingPunchthrough(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordtype">void</span> StartPunchthroughForUser(<a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#df/d9b/struct_s_l_net_1_1_nat_punchthrough_server_1_1_user">User</a>*user);</div>
<div class="line"><a name="l00149"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a67f3444e4bd7ecdeabcc09dc3222e758"> 149</a></span>&#160; <a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a67f3444e4bd7ecdeabcc09dc3222e758">sessionId</a>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a28dc7d8afe7644f11f4950ae3bf02358"> 150</a></span>&#160; <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d4/da9/struct_s_l_net_1_1_nat_punchthrough_server_debug_interface">NatPunchthroughServerDebugInterface</a> *<a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a28dc7d8afe7644f11f4950ae3bf02358">natPunchthroughServerDebugInterface</a>;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#a9278bf1a7551ced21e864981e7fc8008"> 152</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> boundAddresses[<a class="code" href="../../d8/db0/defines_8h.xhtml#aaac58d0b7314b7f900c0045e0c303b80">MAXIMUM_NUMBER_OF_INTERNAL_IDS</a>];</div>
<div class="line"><a name="l00153"></a><span class="lineno"><a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#ad8ebeb64e2b010f3a44b2e6f11afb9ff"> 153</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#ad8ebeb64e2b010f3a44b2e6f11afb9ff">boundAddressCount</a>;</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;};</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="comment">// namespace SLNet</span></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="preprocessor">#endif</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</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="../../dc/dd7/_nat_punchthrough_server_8h.xhtml">NatPunchthroughServer.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,126 @@
<!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/RakNetSocket2_Berkley_NativeClient.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('dc/dd7/_rak_net_socket2___berkley___native_client_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">RakNetSocket2_Berkley_NativeClient.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../d7/d5b/_empty_header_8h_source.xhtml">slikenet/EmptyHeader.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/>
<code>#include &quot;<a class="el" href="../../da/d7e/_w_s_a_startup_singleton_8h_source.xhtml">slikenet/WSAStartupSingleton.h</a>&quot;</code><br/>
</div>
<p><a href="../../dc/dd7/_rak_net_socket2___berkley___native_client_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="../../dc/dd7/_rak_net_socket2___berkley___native_client_8cpp.xhtml">RakNetSocket2_Berkley_NativeClient.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,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/src/RakNetSocket2_Berkley_NativeClient.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('dc/dd7/_rak_net_socket2___berkley___native_client_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">RakNetSocket2_Berkley_NativeClient.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../dc/dd7/_rak_net_socket2___berkley___native_client_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="../../d7/d5b/_empty_header_8h.xhtml">slikenet/EmptyHeader.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">#ifdef RAKNET_SOCKET_2_INLINE_FUNCTIONS</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">#ifndef RAKNETSOCKET2_BERKLEY_NATIVE_CLIENT_CPP</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RAKNETSOCKET2_BERKLEY_NATIVE_CLIENT_CPP</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="comment">// Every platform except windows store 8 and native client supports Berkley sockets</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if !defined(WINDOWS_STORE_RT)</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="../../de/d3e/_itoa_8h.xhtml">slikenet/Itoa.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="../../da/d7e/_w_s_a_startup_singleton_8h.xhtml">slikenet/WSAStartupSingleton.h</a>&quot;</span> <span class="comment">// used for WSAStartupSingleton</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="comment">// Shared on most platforms, but excluded from the listed</span></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="comment">// #low - maybe change to char (&amp;ip)[65] - then we can also use sizeof again</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keywordtype">void</span> DomainNameToIP_Berkley_IPV4And6( <span class="keyword">const</span> <span class="keywordtype">char</span> *domainName, <span class="keywordtype">char</span> ip[65] )</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#if RAKNET_SUPPORT_IPV6==1</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"></span> <span class="keyword">struct </span>addrinfo hints, *res, *p;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">int</span> status;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; memset(&amp;hints, 0, <span class="keyword">sizeof</span> hints);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; hints.ai_family = AF_UNSPEC; <span class="comment">// AF_INET or AF_INET6 to force version</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; hints.ai_socktype = SOCK_DGRAM;</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="keywordflow">if</span> ((status = getaddrinfo(domainName, NULL, &amp;hints, &amp;res)) != 0) {</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// #high - review/update callers - some unnecessarily initialize ip unnecessarily</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; ip[0] = <span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span>;</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; p=res;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">// for(p = res;p != NULL; p = p-&gt;ai_next) {</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> *addr;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">// char *ipver;</span></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="comment">// get the pointer to the address itself,</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// different fields in IPv4 and IPv6:</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (p-&gt;ai_family == AF_INET)</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="keyword">struct </span>sockaddr_in *ipv4 = (<span class="keyword">struct </span>sockaddr_in *)p-&gt;ai_addr;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; addr = &amp;(ipv4-&gt;sin_addr);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; inet_ntop(AF_INET, &amp;ipv4-&gt;sin_addr, ip, 65);</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">else</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// TODO - test</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">struct </span>sockaddr_in6 *ipv6 = (<span class="keyword">struct </span>sockaddr_in6 *)p-&gt;ai_addr;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; addr = &amp;(ipv6-&gt;sin6_addr);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// inet_ntop function does not exist on windows</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">// http://www.mail-archive.com/users@ipv6.org/msg02107.html</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; getnameinfo((<span class="keyword">struct</span> sockaddr *)ipv6, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> sockaddr_in6), ip, 1, NULL, 0, NI_NUMERICHOST);</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; freeaddrinfo(res); <span class="comment">// free the linked list</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">// }</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"></span> (void) domainName;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; (void) ip;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#endif // #if RAKNET_SUPPORT_IPV6==1</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keywordtype">void</span> DomainNameToIP_Berkley_IPV4( <span class="keyword">const</span> <span class="keywordtype">char</span> *domainName, <span class="keywordtype">char</span> ip[65] )</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="comment">// Use inet_addr instead? What is the difference?</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">struct </span>addrinfo *addressinfo = NULL;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">// needed for getaddrinfo</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="../../d4/dcb/class_w_s_a_startup_singleton.xhtml#aec8c21ef29199bcf9be7f3568c8afadf">WSAStartupSingleton::AddRef</a>();</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">int</span> error = getaddrinfo(domainName, NULL, NULL, &amp;addressinfo);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="../../d4/dcb/class_w_s_a_startup_singleton.xhtml#ad33efe86b5377555e3062058b5a4be01">WSAStartupSingleton::Deref</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="keywordflow">if</span> ( error != 0 || addressinfo == 0 )</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">//cerr &lt;&lt; &quot;Yow! Bad host lookup.&quot; &lt;&lt; endl;</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// #high - review/update callers - some unnecessarily initialize ip unnecessarily</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; ip[0] = <span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// get the (first) IPv4 address</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">while</span> (addressinfo != NULL) {</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span> (addressinfo-&gt;ai_family == AF_INET) {</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">break</span>; <span class="comment">// found an IPv4 address</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; addressinfo = addressinfo-&gt;ai_next;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (addressinfo == NULL) {</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</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="keyword">struct </span>sockaddr_in *sockaddr_ipv4 = (<span class="keyword">struct </span>sockaddr_in *) addressinfo-&gt;ai_addr;</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; inet_ntop(AF_INET, &amp;sockaddr_ipv4-&gt;sin_addr, ip, 65);</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;</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="keywordtype">void</span> DomainNameToIP_Berkley( <span class="keyword">const</span> <span class="keywordtype">char</span> *domainName, <span class="keywordtype">char</span> ip[65] )</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="keywordflow">return</span> DomainNameToIP_Berkley_IPV4And6(domainName, ip);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> DomainNameToIP_Berkley_IPV4(domainName, ip);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"></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;</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;<span class="preprocessor">#endif // !defined(WINDOWS_STORE_RT) &amp;&amp; !defined(__native_client__)</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor">#endif // file header</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor">#endif // #ifdef RAKNET_SOCKET_2_INLINE_FUNCTIONS</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="../../dc/dd7/_rak_net_socket2___berkley___native_client_8cpp.xhtml">RakNetSocket2_Berkley_NativeClient.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,172 @@
<!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('d1/dbc/struct_thread_pool.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">ThreadPool&lt; InputType, OutputType &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a5f64a8c4a4400106a2d7d03f7f9de132">AddInput</a>(OutputType(*workerThreadCallback)(InputType, bool *returnOutput, void *perThreadData), InputType inputData)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a833f8cc619dbf051c525c2ecd7ce78a0">AddOutput</a>(OutputType outputData)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#af1e0cc5c3c8786fc49f60aef34160cbd">Clear</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a568d636d8a27645c6641d3b4cc7308f6">ClearInput</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a8d8d2d173ca5ddb99614ed5b9df1fb85">ClearOutput</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a09194411e4f4d87804111459fad24522">GetInputAtIndex</a>(unsigned index)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a568e3e2035977a38ad35aeee74ed7388">GetOutput</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#ade45848613e8230e5324edabe40fcde9">GetOutputAtIndex</a>(unsigned index)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#aac1ae43b7b3581b5ae9803c7cae7b724">HasInput</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#adde82517b452d9a74e91114a3783ce02">HasInputFast</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a925d6c332e4c48bc99dc5750dfd5fcdd">HasOutput</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a5d517170f4b61211325ac5c9717e32e1">HasOutputFast</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#aba1210d4a8738dbb73fd4aba224a5437">inputFunctionQueue</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#ac808a3f10661465e2d83a4e7579dc880">inputQueue</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a207a7b9f54818a3168d81b013c765d56">inputQueueMutex</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a0c7631f35a83c4f992b881174b6c8eff">InputSize</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a90b37c13ba8b9f67db4bd99ee4a5d811">IsWorking</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a024e2da38f846fc76d1fb16cf13c1b90">LockInput</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a384ba5c62d60ac2e12e3f8aeea30d8bc">LockOutput</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#afa44d9d22aaa0b45008a146d3d99dd22">numThreadsRunning</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a6b2a6ffe4c4a62c3da27b6f1c99377e5">numThreadsRunningMutex</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#aad431a8d3f28af0ae5249c7e3b819307">NumThreadsWorking</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a31406cbf875ff36d9d0c5ba6207382c3">numThreadsWorking</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a6b76ae04819bd8b15bae573217b15735">outputQueue</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a89540985de3cb90dccccbd837ef80385">outputQueueMutex</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#ac2ebae170e7dbdbad6034ba69271f86f">OutputSize</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a870e8e68979a7b0f1cc5b0fda7044a49">Pause</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#ac2f69d2ba866370e2899980a06d29df4">perThreadDataDestructor</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#aacf9c53af2e2bae9560f1520ad63a1e9">perThreadDataFactory</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a04ce603e15a77377eec89c468f35e8a1">quitAndIncomingDataEvents</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a6f77f4d6ec9d6f207f16fdb79b54fe2a">RAK_THREAD_DECLARATION</a>(WorkerThread)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a7e41bfe6660b1a55cbf14b99b77defac">RemoveInputAtIndex</a>(unsigned index)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#afb4958a8df475d6060bede0fa4af7faa">RemoveOutputAtIndex</a>(unsigned index)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a16261d79beca0692cc4aa97ec204fd6d">Resume</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a6d53166bc98ac94b11d2f9346f8d61b2">runThreads</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a4de670b464cb1afd303812571819aa0e">runThreadsMutex</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#ad2bca8ada8b0f6c30ee3c49b90a1d31e">SetThreadDataInterface</a>(ThreadDataInterface *tdi, void *context)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a09fde0ca678340723840fae1dcda51a2">StartThreads</a>(int numThreads, int stackSize, void *(*_perThreadInit)()=0, void(*_perThreadDeinit)(void *)=0)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#ad93b8ba41d96c5f0f814ae0acabfcdfc">StopThreads</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a5e346620f540fa4791d9916e51513b1d">tdiContext</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#af5e51a5c831a7dc16b0dad34203790b0">threadDataInterface</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a785b0bc4ecfd1ad640fb9d5ec5423bc6">ThreadPool</a>()</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a710a554919e550501f9f06ab61e1d911">UnlockInput</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#af6e5208df0686a4a76ecb3bbcc6ffcb2">UnlockOutput</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a531920221fd17dce38b5da74b56f2eff">WasStarted</a>(void)</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#aed1cb4abb580c8688236782c2d6bff49">workingThreadCountMutex</a></td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml#a156388a0aae28b9b9202ad0fd55275c5">~ThreadPool</a>()</td><td class="entry"><a class="el" href="../../d1/dbc/struct_thread_pool.xhtml">ThreadPool&lt; InputType, OutputType &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>