dash-docs/en/doxygen/html/classCAddrMan.html

1704 lines
86 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Dash Core: CAddrMan Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="bitcoin_logo_doxygen.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Dash Core
&#160;<span id="projectnumber">0.12.2.1</span>
</div>
<div id="projectbrief">P2P Digital Currency</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classCAddrMan.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classCAddrMan-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">CAddrMan Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="addrman_8h_source.html">addrman.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a08668d8cf435750a80316b4708bbc9eb"><td class="memTemplParams" colspan="2">template&lt;typename Stream &gt; </td></tr>
<tr class="memitem:a08668d8cf435750a80316b4708bbc9eb"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a08668d8cf435750a80316b4708bbc9eb">Serialize</a> (Stream &amp;s, int nType, int nVersionDummy) const</td></tr>
<tr class="separator:a08668d8cf435750a80316b4708bbc9eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68eaf1797ecb8bff380aa7f9fc452e14"><td class="memTemplParams" colspan="2">template&lt;typename Stream &gt; </td></tr>
<tr class="memitem:a68eaf1797ecb8bff380aa7f9fc452e14"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a68eaf1797ecb8bff380aa7f9fc452e14">Unserialize</a> (Stream &amp;s, int nType, int nVersionDummy)</td></tr>
<tr class="separator:a68eaf1797ecb8bff380aa7f9fc452e14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a958c50de16b0d7fa068cce22a4cd8cb9"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a958c50de16b0d7fa068cce22a4cd8cb9">GetSerializeSize</a> (int nType, int nVersion) const</td></tr>
<tr class="separator:a958c50de16b0d7fa068cce22a4cd8cb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53c27520b7f8c6fa817c2fa869dd4e25"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a53c27520b7f8c6fa817c2fa869dd4e25">Clear</a> ()</td></tr>
<tr class="separator:a53c27520b7f8c6fa817c2fa869dd4e25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9179d1c36c2ea3492e221576f340d33"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#ad9179d1c36c2ea3492e221576f340d33">CAddrMan</a> ()</td></tr>
<tr class="separator:ad9179d1c36c2ea3492e221576f340d33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1b1838e4de4effbc1fbc888126a9352"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#ae1b1838e4de4effbc1fbc888126a9352">~CAddrMan</a> ()</td></tr>
<tr class="separator:ae1b1838e4de4effbc1fbc888126a9352"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a244508e8463c4fdfd8b085fcb3b5a225"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a244508e8463c4fdfd8b085fcb3b5a225">size</a> () const</td></tr>
<tr class="memdesc:a244508e8463c4fdfd8b085fcb3b5a225"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of (unique) addresses in all tables. <a href="#a244508e8463c4fdfd8b085fcb3b5a225">More...</a><br /></td></tr>
<tr class="separator:a244508e8463c4fdfd8b085fcb3b5a225"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c2677ae50ce0d680f0105b285d1f5d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a0c2677ae50ce0d680f0105b285d1f5d0">Check</a> ()</td></tr>
<tr class="memdesc:a0c2677ae50ce0d680f0105b285d1f5d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Consistency check. <a href="#a0c2677ae50ce0d680f0105b285d1f5d0">More...</a><br /></td></tr>
<tr class="separator:a0c2677ae50ce0d680f0105b285d1f5d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03fcc7109b5f014760dc50a81f68c5ec"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a03fcc7109b5f014760dc50a81f68c5ec">Add</a> (const <a class="el" href="classCAddress.html">CAddress</a> &amp;addr, const <a class="el" href="classCNetAddr.html">CNetAddr</a> &amp;<a class="el" href="rpcconsole_8cpp.html#af2ed45b90afa2ef4ec6e09625335a082">source</a>, int64_t nTimePenalty=0)</td></tr>
<tr class="memdesc:a03fcc7109b5f014760dc50a81f68c5ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a single address. <a href="#a03fcc7109b5f014760dc50a81f68c5ec">More...</a><br /></td></tr>
<tr class="separator:a03fcc7109b5f014760dc50a81f68c5ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2ae2abdf710b2d81fa37f072bab028e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#aa2ae2abdf710b2d81fa37f072bab028e">Add</a> (const std::vector&lt; <a class="el" href="classCAddress.html">CAddress</a> &gt; &amp;vAddr, const <a class="el" href="classCNetAddr.html">CNetAddr</a> &amp;<a class="el" href="rpcconsole_8cpp.html#af2ed45b90afa2ef4ec6e09625335a082">source</a>, int64_t nTimePenalty=0)</td></tr>
<tr class="memdesc:aa2ae2abdf710b2d81fa37f072bab028e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add multiple addresses. <a href="#aa2ae2abdf710b2d81fa37f072bab028e">More...</a><br /></td></tr>
<tr class="separator:aa2ae2abdf710b2d81fa37f072bab028e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a993e80e74701d7bc6bb49880c387b847"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a993e80e74701d7bc6bb49880c387b847">Good</a> (const <a class="el" href="classCService.html">CService</a> &amp;addr, int64_t nTime=<a class="el" href="timedata_8h.html#a09f81b9c7650f898cf3cf305b87547e6">GetAdjustedTime</a>())</td></tr>
<tr class="memdesc:a993e80e74701d7bc6bb49880c387b847"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark an entry as accessible. <a href="#a993e80e74701d7bc6bb49880c387b847">More...</a><br /></td></tr>
<tr class="separator:a993e80e74701d7bc6bb49880c387b847"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcddc2573121065177dc981cea710789"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#afcddc2573121065177dc981cea710789">Attempt</a> (const <a class="el" href="classCService.html">CService</a> &amp;addr, int64_t nTime=<a class="el" href="timedata_8h.html#a09f81b9c7650f898cf3cf305b87547e6">GetAdjustedTime</a>())</td></tr>
<tr class="memdesc:afcddc2573121065177dc981cea710789"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark an entry as connection attempted to. <a href="#afcddc2573121065177dc981cea710789">More...</a><br /></td></tr>
<tr class="separator:afcddc2573121065177dc981cea710789"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6279e9fdd1b78378c016087daf09a439"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCAddrInfo.html">CAddrInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a6279e9fdd1b78378c016087daf09a439">Select</a> (bool newOnly=false)</td></tr>
<tr class="separator:a6279e9fdd1b78378c016087daf09a439"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69cc6138e696cf88de60925d26023bf2"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classCAddress.html">CAddress</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a69cc6138e696cf88de60925d26023bf2">GetAddr</a> ()</td></tr>
<tr class="memdesc:a69cc6138e696cf88de60925d26023bf2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a bunch of addresses, selected at random. <a href="#a69cc6138e696cf88de60925d26023bf2">More...</a><br /></td></tr>
<tr class="separator:a69cc6138e696cf88de60925d26023bf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7aba66d9e9527522fed974567d34c322"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a7aba66d9e9527522fed974567d34c322">Connected</a> (const <a class="el" href="classCService.html">CService</a> &amp;addr, int64_t nTime=<a class="el" href="timedata_8h.html#a09f81b9c7650f898cf3cf305b87547e6">GetAdjustedTime</a>())</td></tr>
<tr class="memdesc:a7aba66d9e9527522fed974567d34c322"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark an entry as currently-connected-to. <a href="#a7aba66d9e9527522fed974567d34c322">More...</a><br /></td></tr>
<tr class="separator:a7aba66d9e9527522fed974567d34c322"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3234587a7d74e0329906005342a7824"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#ab3234587a7d74e0329906005342a7824">SetServices</a> (const <a class="el" href="classCService.html">CService</a> &amp;addr, <a class="el" href="protocol_8h.html#ad131f3177584caea787cdbf6f85a9537">ServiceFlags</a> nServices)</td></tr>
<tr class="separator:ab3234587a7d74e0329906005342a7824"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ac961ead1a1afde144fc486b6d7c7369d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCAddrInfo.html">CAddrInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#ac961ead1a1afde144fc486b6d7c7369d">Find</a> (const <a class="el" href="classCNetAddr.html">CNetAddr</a> &amp;addr, int *pnId=NULL)</td></tr>
<tr class="memdesc:ac961ead1a1afde144fc486b6d7c7369d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find an entry. <a href="#ac961ead1a1afde144fc486b6d7c7369d">More...</a><br /></td></tr>
<tr class="separator:ac961ead1a1afde144fc486b6d7c7369d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac93f51c0580e38a950a0f63b053bedb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCAddrInfo.html">CAddrInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#aac93f51c0580e38a950a0f63b053bedb">Create</a> (const <a class="el" href="classCAddress.html">CAddress</a> &amp;addr, const <a class="el" href="classCNetAddr.html">CNetAddr</a> &amp;addrSource, int *pnId=NULL)</td></tr>
<tr class="separator:aac93f51c0580e38a950a0f63b053bedb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3074bc8e3dcfb5348054613f575dc38e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a3074bc8e3dcfb5348054613f575dc38e">SwapRandom</a> (unsigned int nRandomPos1, unsigned int nRandomPos2)</td></tr>
<tr class="memdesc:a3074bc8e3dcfb5348054613f575dc38e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swap two elements in vRandom. <a href="#a3074bc8e3dcfb5348054613f575dc38e">More...</a><br /></td></tr>
<tr class="separator:a3074bc8e3dcfb5348054613f575dc38e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98e8383efb48b7c2932795438f35a10a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a98e8383efb48b7c2932795438f35a10a">MakeTried</a> (<a class="el" href="classCAddrInfo.html">CAddrInfo</a> &amp;info, int nId)</td></tr>
<tr class="memdesc:a98e8383efb48b7c2932795438f35a10a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move an entry from the "new" table(s) to the "tried" table. <a href="#a98e8383efb48b7c2932795438f35a10a">More...</a><br /></td></tr>
<tr class="separator:a98e8383efb48b7c2932795438f35a10a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af488eac123030538770dbc4e3b16eb74"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#af488eac123030538770dbc4e3b16eb74">Delete</a> (int nId)</td></tr>
<tr class="memdesc:af488eac123030538770dbc4e3b16eb74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete an entry. It must not be in tried, and have refcount 0. <a href="#af488eac123030538770dbc4e3b16eb74">More...</a><br /></td></tr>
<tr class="separator:af488eac123030538770dbc4e3b16eb74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab283de3e750f006c85573976bd40da81"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#ab283de3e750f006c85573976bd40da81">ClearNew</a> (int nUBucket, int nUBucketPos)</td></tr>
<tr class="memdesc:ab283de3e750f006c85573976bd40da81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a position in a "new" table. This is the only place where entries are actually deleted. <a href="#ab283de3e750f006c85573976bd40da81">More...</a><br /></td></tr>
<tr class="separator:ab283de3e750f006c85573976bd40da81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33ec6a4584cf4b17af821e6e35216459"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a33ec6a4584cf4b17af821e6e35216459">Good_</a> (const <a class="el" href="classCService.html">CService</a> &amp;addr, int64_t nTime)</td></tr>
<tr class="memdesc:a33ec6a4584cf4b17af821e6e35216459"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark an entry "good", possibly moving it from "new" to "tried". <a href="#a33ec6a4584cf4b17af821e6e35216459">More...</a><br /></td></tr>
<tr class="separator:a33ec6a4584cf4b17af821e6e35216459"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dd6df8b1904548a86054d19d4a90724"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a9dd6df8b1904548a86054d19d4a90724">Add_</a> (const <a class="el" href="classCAddress.html">CAddress</a> &amp;addr, const <a class="el" href="classCNetAddr.html">CNetAddr</a> &amp;<a class="el" href="rpcconsole_8cpp.html#af2ed45b90afa2ef4ec6e09625335a082">source</a>, int64_t nTimePenalty)</td></tr>
<tr class="memdesc:a9dd6df8b1904548a86054d19d4a90724"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an entry to the "new" table. <a href="#a9dd6df8b1904548a86054d19d4a90724">More...</a><br /></td></tr>
<tr class="separator:a9dd6df8b1904548a86054d19d4a90724"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1a1bfa8b435ef139570c88de1a5245f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#ab1a1bfa8b435ef139570c88de1a5245f">Attempt_</a> (const <a class="el" href="classCService.html">CService</a> &amp;addr, int64_t nTime)</td></tr>
<tr class="memdesc:ab1a1bfa8b435ef139570c88de1a5245f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark an entry as attempted to connect. <a href="#ab1a1bfa8b435ef139570c88de1a5245f">More...</a><br /></td></tr>
<tr class="separator:ab1a1bfa8b435ef139570c88de1a5245f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27e51ef4fe86db1ff5a5e45caefc1ef4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCAddrInfo.html">CAddrInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a27e51ef4fe86db1ff5a5e45caefc1ef4">Select_</a> (bool newOnly)</td></tr>
<tr class="memdesc:a27e51ef4fe86db1ff5a5e45caefc1ef4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Select an address to connect to, if newOnly is set to true, only the new table is selected from. <a href="#a27e51ef4fe86db1ff5a5e45caefc1ef4">More...</a><br /></td></tr>
<tr class="separator:a27e51ef4fe86db1ff5a5e45caefc1ef4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bf12611bd89c5e524396e50bf8f3846"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a4bf12611bd89c5e524396e50bf8f3846">RandomInt</a> (int nMax)</td></tr>
<tr class="memdesc:a4bf12611bd89c5e524396e50bf8f3846"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wraps GetRandInt to allow tests to override RandomInt and make it determinismistic. <a href="#a4bf12611bd89c5e524396e50bf8f3846">More...</a><br /></td></tr>
<tr class="separator:a4bf12611bd89c5e524396e50bf8f3846"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff86d04dc7c0e0afae3ff5998417db17"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#aff86d04dc7c0e0afae3ff5998417db17">GetAddr_</a> (std::vector&lt; <a class="el" href="classCAddress.html">CAddress</a> &gt; &amp;vAddr)</td></tr>
<tr class="memdesc:aff86d04dc7c0e0afae3ff5998417db17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Select several addresses at once. <a href="#aff86d04dc7c0e0afae3ff5998417db17">More...</a><br /></td></tr>
<tr class="separator:aff86d04dc7c0e0afae3ff5998417db17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ae72643c51293f3f3345e74ce0368ca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a1ae72643c51293f3f3345e74ce0368ca">Connected_</a> (const <a class="el" href="classCService.html">CService</a> &amp;addr, int64_t nTime)</td></tr>
<tr class="memdesc:a1ae72643c51293f3f3345e74ce0368ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark an entry as currently-connected-to. <a href="#a1ae72643c51293f3f3345e74ce0368ca">More...</a><br /></td></tr>
<tr class="separator:a1ae72643c51293f3f3345e74ce0368ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afda6b68a9b1b462f7b054b660c88a341"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#afda6b68a9b1b462f7b054b660c88a341">SetServices_</a> (const <a class="el" href="classCService.html">CService</a> &amp;addr, <a class="el" href="protocol_8h.html#ad131f3177584caea787cdbf6f85a9537">ServiceFlags</a> nServices)</td></tr>
<tr class="memdesc:afda6b68a9b1b462f7b054b660c88a341"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update an entry's service bits. <a href="#afda6b68a9b1b462f7b054b660c88a341">More...</a><br /></td></tr>
<tr class="separator:afda6b68a9b1b462f7b054b660c88a341"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:adcb5b2b86ea5739730b111c89e84e965"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classuint256.html">uint256</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#adcb5b2b86ea5739730b111c89e84e965">nKey</a></td></tr>
<tr class="memdesc:adcb5b2b86ea5739730b111c89e84e965"><td class="mdescLeft">&#160;</td><td class="mdescRight">secret key to randomize bucket select with <a href="#adcb5b2b86ea5739730b111c89e84e965">More...</a><br /></td></tr>
<tr class="separator:adcb5b2b86ea5739730b111c89e84e965"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:aa4519d05a02e493046e5ece1ce87c084"><td class="memItemLeft" align="right" valign="top"><a class="el" href="sync_8h.html#a37a4692b2d517f2843655ca11af7668a">CCriticalSection</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#aa4519d05a02e493046e5ece1ce87c084">cs</a></td></tr>
<tr class="memdesc:aa4519d05a02e493046e5ece1ce87c084"><td class="mdescLeft">&#160;</td><td class="mdescRight">critical section to protect the inner data structures <a href="#aa4519d05a02e493046e5ece1ce87c084">More...</a><br /></td></tr>
<tr class="separator:aa4519d05a02e493046e5ece1ce87c084"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77ff8bd51009324f2be012bd759b37d0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a77ff8bd51009324f2be012bd759b37d0">nIdCount</a></td></tr>
<tr class="memdesc:a77ff8bd51009324f2be012bd759b37d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">last used nId <a href="#a77ff8bd51009324f2be012bd759b37d0">More...</a><br /></td></tr>
<tr class="separator:a77ff8bd51009324f2be012bd759b37d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1232db343240bf03c45eaea7bcec550b"><td class="memItemLeft" align="right" valign="top">std::map&lt; int, <a class="el" href="classCAddrInfo.html">CAddrInfo</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a1232db343240bf03c45eaea7bcec550b">mapInfo</a></td></tr>
<tr class="memdesc:a1232db343240bf03c45eaea7bcec550b"><td class="mdescLeft">&#160;</td><td class="mdescRight">table with information about all nIds <a href="#a1232db343240bf03c45eaea7bcec550b">More...</a><br /></td></tr>
<tr class="separator:a1232db343240bf03c45eaea7bcec550b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c387857d8553818a56a4faac33fb691"><td class="memItemLeft" align="right" valign="top">std::map&lt; <a class="el" href="classCNetAddr.html">CNetAddr</a>, int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a5c387857d8553818a56a4faac33fb691">mapAddr</a></td></tr>
<tr class="memdesc:a5c387857d8553818a56a4faac33fb691"><td class="mdescLeft">&#160;</td><td class="mdescRight">find an nId based on its network address <a href="#a5c387857d8553818a56a4faac33fb691">More...</a><br /></td></tr>
<tr class="separator:a5c387857d8553818a56a4faac33fb691"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9c2199d29d7a1a7c6c5c1e3abec4102"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#af9c2199d29d7a1a7c6c5c1e3abec4102">vRandom</a></td></tr>
<tr class="memdesc:af9c2199d29d7a1a7c6c5c1e3abec4102"><td class="mdescLeft">&#160;</td><td class="mdescRight">randomly-ordered vector of all nIds <a href="#af9c2199d29d7a1a7c6c5c1e3abec4102">More...</a><br /></td></tr>
<tr class="separator:af9c2199d29d7a1a7c6c5c1e3abec4102"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8566be810e6429012f1c2c1609b4540"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#ae8566be810e6429012f1c2c1609b4540">nTried</a></td></tr>
<tr class="separator:ae8566be810e6429012f1c2c1609b4540"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d0e798757be2620f76a5ee02d3b321e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a3d0e798757be2620f76a5ee02d3b321e">vvTried</a> [<a class="el" href="addrman_8h.html#ab09df186aa818ce7b9e7c86446511cf1">ADDRMAN_TRIED_BUCKET_COUNT</a>][<a class="el" href="addrman_8h.html#a3499731a6c89e164cf74b68be2be0a84">ADDRMAN_BUCKET_SIZE</a>]</td></tr>
<tr class="memdesc:a3d0e798757be2620f76a5ee02d3b321e"><td class="mdescLeft">&#160;</td><td class="mdescRight">list of "tried" buckets <a href="#a3d0e798757be2620f76a5ee02d3b321e">More...</a><br /></td></tr>
<tr class="separator:a3d0e798757be2620f76a5ee02d3b321e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a469f5f8e9ac527812338d7894b784986"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#a469f5f8e9ac527812338d7894b784986">nNew</a></td></tr>
<tr class="memdesc:a469f5f8e9ac527812338d7894b784986"><td class="mdescLeft">&#160;</td><td class="mdescRight">number of (unique) "new" entries <a href="#a469f5f8e9ac527812338d7894b784986">More...</a><br /></td></tr>
<tr class="separator:a469f5f8e9ac527812338d7894b784986"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb2dcfcd27aedab01f5259980f322fa8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCAddrMan.html#afb2dcfcd27aedab01f5259980f322fa8">vvNew</a> [<a class="el" href="addrman_8h.html#a74a626eb1dbb8e307a413e86493cd510">ADDRMAN_NEW_BUCKET_COUNT</a>][<a class="el" href="addrman_8h.html#a3499731a6c89e164cf74b68be2be0a84">ADDRMAN_BUCKET_SIZE</a>]</td></tr>
<tr class="memdesc:afb2dcfcd27aedab01f5259980f322fa8"><td class="mdescLeft">&#160;</td><td class="mdescRight">list of "new" buckets <a href="#afb2dcfcd27aedab01f5259980f322fa8">More...</a><br /></td></tr>
<tr class="separator:afb2dcfcd27aedab01f5259980f322fa8"><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>Stochastical (IP) address manager </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00172">172</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ad9179d1c36c2ea3492e221576f340d33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9179d1c36c2ea3492e221576f340d33">&#9670;&nbsp;</a></span>CAddrMan()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">CAddrMan::CAddrMan </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00457">457</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
</div>
</div>
<a id="ae1b1838e4de4effbc1fbc888126a9352"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1b1838e4de4effbc1fbc888126a9352">&#9670;&nbsp;</a></span>~CAddrMan()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">CAddrMan::~CAddrMan </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00462">462</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a03fcc7109b5f014760dc50a81f68c5ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03fcc7109b5f014760dc50a81f68c5ec">&#9670;&nbsp;</a></span>Add() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CAddrMan::Add </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCAddress.html">CAddress</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classCNetAddr.html">CNetAddr</a> &amp;&#160;</td>
<td class="paramname"><em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>nTimePenalty</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a single address. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00487">487</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="net_8cpp_source.html#l02390">CConnman::AddNewAddress()</a>, <a class="el" href="net_8cpp_source.html#l02395">CConnman::AddNewAddresses()</a>, <a class="el" href="net_8cpp_source.html#l01522">CConnman::ThreadDNSAddressSeed()</a>, and <a class="el" href="net_8cpp_source.html#l01620">CConnman::ThreadOpenConnections()</a>.</p>
</div>
</div>
<a id="aa2ae2abdf710b2d81fa37f072bab028e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2ae2abdf710b2d81fa37f072bab028e">&#9670;&nbsp;</a></span>Add() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CAddrMan::Add </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classCAddress.html">CAddress</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>vAddr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classCNetAddr.html">CNetAddr</a> &amp;&#160;</td>
<td class="paramname"><em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>nTimePenalty</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add multiple addresses. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00502">502</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
</div>
</div>
<a id="a9dd6df8b1904548a86054d19d4a90724"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9dd6df8b1904548a86054d19d4a90724">&#9670;&nbsp;</a></span>Add_()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CAddrMan::Add_ </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCAddress.html">CAddress</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classCNetAddr.html">CNetAddr</a> &amp;&#160;</td>
<td class="paramname"><em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>nTimePenalty</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Add an entry to the "new" table. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00245">245</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00487">Add()</a>.</p>
</div>
</div>
<a id="afcddc2573121065177dc981cea710789"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afcddc2573121065177dc981cea710789">&#9670;&nbsp;</a></span>Attempt()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Attempt </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCService.html">CService</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>nTime</em> = <code><a class="el" href="timedata_8h.html#a09f81b9c7650f898cf3cf305b87547e6">GetAdjustedTime</a>()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Mark an entry as connection attempted to. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00529">529</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="net_8cpp_source.html#l00347">CConnman::ConnectNode()</a>.</p>
</div>
</div>
<a id="ab1a1bfa8b435ef139570c88de1a5245f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1a1bfa8b435ef139570c88de1a5245f">&#9670;&nbsp;</a></span>Attempt_()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Attempt_ </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCService.html">CService</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>nTime</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Mark an entry as attempted to connect. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00313">313</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00529">Attempt()</a>.</p>
</div>
</div>
<a id="a0c2677ae50ce0d680f0105b285d1f5d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c2677ae50ce0d680f0105b285d1f5d0">&#9670;&nbsp;</a></span>Check()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Check </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Consistency check. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00474">474</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00487">Add()</a>, <a class="el" href="addrman_8h_source.html#l00529">Attempt()</a>, <a class="el" href="addrman_8h_source.html#l00568">Connected()</a>, <a class="el" href="addrman_8h_source.html#l00555">GetAddr()</a>, <a class="el" href="addrman_8h_source.html#l00518">Good()</a>, <a class="el" href="addrman_8h_source.html#l00542">Select()</a>, <a class="el" href="addrman_8h_source.html#l00578">SetServices()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="a53c27520b7f8c6fa817c2fa869dd4e25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a53c27520b7f8c6fa817c2fa869dd4e25">&#9670;&nbsp;</a></span>Clear()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Clear </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00437">437</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00457">CAddrMan()</a>, <a class="el" href="addrdb_8cpp_source.html#l00197">CAddrDB::Read()</a>, <a class="el" href="net_8cpp_source.html#l02156">CConnman::Start()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="ab283de3e750f006c85573976bd40da81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab283de3e750f006c85573976bd40da81">&#9670;&nbsp;</a></span>ClearNew()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::ClearNew </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nUBucket</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nUBucketPos</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear a position in a "new" table. This is the only place where entries are actually deleted. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00133">133</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00245">Add_()</a>, and <a class="el" href="addrman_8cpp_source.html#l00148">MakeTried()</a>.</p>
</div>
</div>
<a id="a7aba66d9e9527522fed974567d34c322"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7aba66d9e9527522fed974567d34c322">&#9670;&nbsp;</a></span>Connected()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Connected </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCService.html">CService</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>nTime</em> = <code><a class="el" href="timedata_8h.html#a09f81b9c7650f898cf3cf305b87547e6">GetAdjustedTime</a>()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Mark an entry as currently-connected-to. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00568">568</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="net_8cpp_source.html#l02359">CConnman::DeleteNode()</a>.</p>
</div>
</div>
<a id="a1ae72643c51293f3f3345e74ce0368ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ae72643c51293f3f3345e74ce0368ca">&#9670;&nbsp;</a></span>Connected_()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Connected_ </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCService.html">CService</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>nTime</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Mark an entry as currently-connected-to. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00478">478</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00568">Connected()</a>.</p>
</div>
</div>
<a id="aac93f51c0580e38a950a0f63b053bedb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac93f51c0580e38a950a0f63b053bedb">&#9670;&nbsp;</a></span>Create()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classCAddrInfo.html">CAddrInfo</a> * CAddrMan::Create </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCAddress.html">CAddress</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classCNetAddr.html">CNetAddr</a> &amp;&#160;</td>
<td class="paramname"><em>addrSource</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>pnId</em> = <code>NULL</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>find an entry, creating it if necessary. nTime and nServices of the found node are updated, if necessary. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00087">87</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00245">Add_()</a>.</p>
</div>
</div>
<a id="af488eac123030538770dbc4e3b16eb74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af488eac123030538770dbc4e3b16eb74">&#9670;&nbsp;</a></span>Delete()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Delete </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nId</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete an entry. It must not be in tried, and have refcount 0. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00119">119</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00245">Add_()</a>, <a class="el" href="addrman_8cpp_source.html#l00133">ClearNew()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="ac961ead1a1afde144fc486b6d7c7369d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac961ead1a1afde144fc486b6d7c7369d">&#9670;&nbsp;</a></span>Find()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classCAddrInfo.html">CAddrInfo</a> * CAddrMan::Find </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCNetAddr.html">CNetAddr</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>pnId</em> = <code>NULL</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Find an entry. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00074">74</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00245">Add_()</a>, <a class="el" href="addrman_8cpp_source.html#l00313">Attempt_()</a>, <a class="el" href="addrman_8cpp_source.html#l00478">Connected_()</a>, <a class="el" href="addrman_8cpp_source.html#l00196">Good_()</a>, and <a class="el" href="addrman_8cpp_source.html#l00498">SetServices_()</a>.</p>
</div>
</div>
<a id="a69cc6138e696cf88de60925d26023bf2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69cc6138e696cf88de60925d26023bf2">&#9670;&nbsp;</a></span>GetAddr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="classCAddress.html">CAddress</a>&gt; CAddrMan::GetAddr </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a bunch of addresses, selected at random. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00555">555</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="net_8cpp_source.html#l02400">CConnman::GetAddresses()</a>.</p>
</div>
</div>
<a id="aff86d04dc7c0e0afae3ff5998417db17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff86d04dc7c0e0afae3ff5998417db17">&#9670;&nbsp;</a></span>GetAddr_()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::GetAddr_ </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classCAddress.html">CAddress</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>vAddr</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Select several addresses at once. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00457">457</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00555">GetAddr()</a>.</p>
</div>
</div>
<a id="a958c50de16b0d7fa068cce22a4cd8cb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a958c50de16b0d7fa068cce22a4cd8cb9">&#9670;&nbsp;</a></span>GetSerializeSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int CAddrMan::GetSerializeSize </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nType</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nVersion</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00432">432</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
</div>
</div>
<a id="a993e80e74701d7bc6bb49880c387b847"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a993e80e74701d7bc6bb49880c387b847">&#9670;&nbsp;</a></span>Good()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Good </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCService.html">CService</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>nTime</em> = <code><a class="el" href="timedata_8h.html#a09f81b9c7650f898cf3cf305b87547e6">GetAdjustedTime</a>()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Mark an entry as accessible. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00518">518</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="net_8cpp_source.html#l02385">CConnman::MarkAddressGood()</a>.</p>
</div>
</div>
<a id="a33ec6a4584cf4b17af821e6e35216459"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33ec6a4584cf4b17af821e6e35216459">&#9670;&nbsp;</a></span>Good_()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Good_ </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCService.html">CService</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>nTime</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Mark an entry "good", possibly moving it from "new" to "tried". </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00196">196</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00518">Good()</a>.</p>
</div>
</div>
<a id="a98e8383efb48b7c2932795438f35a10a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98e8383efb48b7c2932795438f35a10a">&#9670;&nbsp;</a></span>MakeTried()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::MakeTried </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classCAddrInfo.html">CAddrInfo</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nId</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move an entry from the "new" table(s) to the "tried" table. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00148">148</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00196">Good_()</a>.</p>
</div>
</div>
<a id="a4bf12611bd89c5e524396e50bf8f3846"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4bf12611bd89c5e524396e50bf8f3846">&#9670;&nbsp;</a></span>RandomInt()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CAddrMan::RandomInt </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nMax</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Wraps GetRandInt to allow tests to override RandomInt and make it determinismistic. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00516">516</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00245">Add_()</a>, <a class="el" href="addrman_8cpp_source.html#l00457">GetAddr_()</a>, <a class="el" href="addrman_8cpp_source.html#l00196">Good_()</a>, and <a class="el" href="addrman_8cpp_source.html#l00332">Select_()</a>.</p>
</div>
</div>
<a id="a6279e9fdd1b78378c016087daf09a439"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6279e9fdd1b78378c016087daf09a439">&#9670;&nbsp;</a></span>Select()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classCAddrInfo.html">CAddrInfo</a> CAddrMan::Select </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>newOnly</em> = <code>false</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Choose an address to connect to. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00542">542</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="net_8cpp_source.html#l01620">CConnman::ThreadOpenConnections()</a>.</p>
</div>
</div>
<a id="a27e51ef4fe86db1ff5a5e45caefc1ef4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27e51ef4fe86db1ff5a5e45caefc1ef4">&#9670;&nbsp;</a></span>Select_()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classCAddrInfo.html">CAddrInfo</a> CAddrMan::Select_ </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>newOnly</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Select an address to connect to, if newOnly is set to true, only the new table is selected from. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00332">332</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00542">Select()</a>.</p>
</div>
</div>
<a id="a08668d8cf435750a80316b4708bbc9eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08668d8cf435750a80316b4708bbc9eb">&#9670;&nbsp;</a></span>Serialize()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Stream &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Serialize </td>
<td>(</td>
<td class="paramtype">Stream &amp;&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nType</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nVersionDummy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>serialized format:</p><ul>
<li>version byte (currently 1)</li>
<li>0x20 + nKey (serialized as if it were a vector, for backward compatibility)</li>
<li>nNew</li>
<li>nTried</li>
<li>number of "new" buckets XOR 2**30</li>
<li>all nNew addrinfos in vvNew</li>
<li>all nTried addrinfos in vvTried</li>
<li>for each bucket:<ul>
<li>number of elements</li>
<li>for each element: index</li>
</ul>
</li>
</ul>
<p>2**30 is xorred with the number of buckets to make addrman deserializer v0 detect it as incompatible. This is necessary because it did not check the version number on deserialization.</p>
<p>Notice that vvTried, mapAddr and vVector are never encoded explicitly; they are instead reconstructed from the other information.</p>
<p>vvNew is serialized, but only used if ADDRMAN_UNKNOWN_BUCKET_COUNT didn't change, otherwise it is reconstructed as well.</p>
<p>This format is more complex, but significantly smaller (at most 1.5 MiB), and supports changes to the ADDRMAN_ parameters without breaking the on-disk structure.</p>
<p>We don't use ADD_SERIALIZE_METHODS since the serialization and deserialization code has very little in common. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00285">285</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
</div>
</div>
<a id="ab3234587a7d74e0329906005342a7824"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3234587a7d74e0329906005342a7824">&#9670;&nbsp;</a></span>SetServices()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::SetServices </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCService.html">CService</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="protocol_8h.html#ad131f3177584caea787cdbf6f85a9537">ServiceFlags</a>&#160;</td>
<td class="paramname"><em>nServices</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00578">578</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="net_8cpp_source.html#l02380">CConnman::SetServices()</a>.</p>
</div>
</div>
<a id="afda6b68a9b1b462f7b054b660c88a341"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afda6b68a9b1b462f7b054b660c88a341">&#9670;&nbsp;</a></span>SetServices_()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::SetServices_ </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classCService.html">CService</a> &amp;&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="protocol_8h.html#ad131f3177584caea787cdbf6f85a9537">ServiceFlags</a>&#160;</td>
<td class="paramname"><em>nServices</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Update an entry's service bits. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00498">498</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00578">SetServices()</a>.</p>
</div>
</div>
<a id="a244508e8463c4fdfd8b085fcb3b5a225"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a244508e8463c4fdfd8b085fcb3b5a225">&#9670;&nbsp;</a></span>size()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t CAddrMan::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the number of (unique) addresses in all tables. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00468">468</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="net_8cpp_source.html#l01585">CConnman::DumpAddresses()</a>, <a class="el" href="net_8cpp_source.html#l02375">CConnman::GetAddressCount()</a>, <a class="el" href="addrman_8cpp_source.html#l00332">Select_()</a>, <a class="el" href="net_8cpp_source.html#l02156">CConnman::Start()</a>, <a class="el" href="net_8cpp_source.html#l01522">CConnman::ThreadDNSAddressSeed()</a>, and <a class="el" href="net_8cpp_source.html#l01620">CConnman::ThreadOpenConnections()</a>.</p>
</div>
</div>
<a id="a3074bc8e3dcfb5348054613f575dc38e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3074bc8e3dcfb5348054613f575dc38e">&#9670;&nbsp;</a></span>SwapRandom()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::SwapRandom </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>nRandomPos1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>nRandomPos2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Swap two elements in vRandom. </p>
<p class="definition">Definition at line <a class="el" href="addrman_8cpp_source.html#l00099">99</a> of file <a class="el" href="addrman_8cpp_source.html">addrman.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00119">Delete()</a>, and <a class="el" href="addrman_8cpp_source.html#l00457">GetAddr_()</a>.</p>
</div>
</div>
<a id="a68eaf1797ecb8bff380aa7f9fc452e14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68eaf1797ecb8bff380aa7f9fc452e14">&#9670;&nbsp;</a></span>Unserialize()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Stream &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CAddrMan::Unserialize </td>
<td>(</td>
<td class="paramtype">Stream &amp;&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nType</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nVersionDummy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00335">335</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="aa4519d05a02e493046e5ece1ce87c084"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4519d05a02e493046e5ece1ce87c084">&#9670;&nbsp;</a></span>cs</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="sync_8h.html#a37a4692b2d517f2843655ca11af7668a">CCriticalSection</a> CAddrMan::cs</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">mutable</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>critical section to protect the inner data structures </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00176">176</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00487">Add()</a>, <a class="el" href="addrman_8h_source.html#l00529">Attempt()</a>, <a class="el" href="addrman_8h_source.html#l00474">Check()</a>, <a class="el" href="addrman_8h_source.html#l00568">Connected()</a>, <a class="el" href="addrman_8h_source.html#l00555">GetAddr()</a>, <a class="el" href="addrman_8h_source.html#l00518">Good()</a>, <a class="el" href="addrman_8h_source.html#l00542">Select()</a>, <a class="el" href="addrman_8h_source.html#l00285">Serialize()</a>, <a class="el" href="addrman_8h_source.html#l00578">SetServices()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="a5c387857d8553818a56a4faac33fb691"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c387857d8553818a56a4faac33fb691">&#9670;&nbsp;</a></span>mapAddr</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::map&lt;<a class="el" href="classCNetAddr.html">CNetAddr</a>, int&gt; CAddrMan::mapAddr</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>find an nId based on its network address </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00185">185</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00087">Create()</a>, <a class="el" href="addrman_8cpp_source.html#l00119">Delete()</a>, <a class="el" href="addrman_8cpp_source.html#l00074">Find()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="a1232db343240bf03c45eaea7bcec550b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1232db343240bf03c45eaea7bcec550b">&#9670;&nbsp;</a></span>mapInfo</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::map&lt;int, <a class="el" href="classCAddrInfo.html">CAddrInfo</a>&gt; CAddrMan::mapInfo</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>table with information about all nIds </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00182">182</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00245">Add_()</a>, <a class="el" href="addrman_8cpp_source.html#l00133">ClearNew()</a>, <a class="el" href="addrman_8cpp_source.html#l00087">Create()</a>, <a class="el" href="addrman_8cpp_source.html#l00119">Delete()</a>, <a class="el" href="addrman_8cpp_source.html#l00074">Find()</a>, <a class="el" href="addrman_8cpp_source.html#l00457">GetAddr_()</a>, <a class="el" href="addrman_8cpp_source.html#l00148">MakeTried()</a>, <a class="el" href="addrman_8cpp_source.html#l00332">Select_()</a>, <a class="el" href="addrman_8h_source.html#l00285">Serialize()</a>, <a class="el" href="addrman_8cpp_source.html#l00099">SwapRandom()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="a77ff8bd51009324f2be012bd759b37d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77ff8bd51009324f2be012bd759b37d0">&#9670;&nbsp;</a></span>nIdCount</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CAddrMan::nIdCount</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>last used nId </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00179">179</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00437">Clear()</a>, <a class="el" href="addrman_8cpp_source.html#l00087">Create()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="adcb5b2b86ea5739730b111c89e84e965"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adcb5b2b86ea5739730b111c89e84e965">&#9670;&nbsp;</a></span>nKey</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classuint256.html">uint256</a> CAddrMan::nKey</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>secret key to randomize bucket select with </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00204">204</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00245">Add_()</a>, <a class="el" href="addrman_8h_source.html#l00437">Clear()</a>, <a class="el" href="addrman_8h_source.html#l00091">CAddrInfo::GetNewBucket()</a>, <a class="el" href="addrman_8cpp_source.html#l00196">Good_()</a>, <a class="el" href="addrman_8cpp_source.html#l00148">MakeTried()</a>, <a class="el" href="addrman_8h_source.html#l00285">Serialize()</a>, <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>, and <a class="el" href="addrman_8h_source.html#l00462">~CAddrMan()</a>.</p>
</div>
</div>
<a id="a469f5f8e9ac527812338d7894b784986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a469f5f8e9ac527812338d7894b784986">&#9670;&nbsp;</a></span>nNew</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CAddrMan::nNew</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>number of (unique) "new" entries </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00197">197</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00487">Add()</a>, <a class="el" href="addrman_8cpp_source.html#l00245">Add_()</a>, <a class="el" href="addrman_8h_source.html#l00437">Clear()</a>, <a class="el" href="addrman_8cpp_source.html#l00119">Delete()</a>, <a class="el" href="addrman_8cpp_source.html#l00148">MakeTried()</a>, <a class="el" href="addrman_8cpp_source.html#l00332">Select_()</a>, <a class="el" href="addrman_8h_source.html#l00285">Serialize()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="ae8566be810e6429012f1c2c1609b4540"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8566be810e6429012f1c2c1609b4540">&#9670;&nbsp;</a></span>nTried</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CAddrMan::nTried</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00191">191</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00487">Add()</a>, <a class="el" href="addrman_8h_source.html#l00437">Clear()</a>, <a class="el" href="addrman_8cpp_source.html#l00148">MakeTried()</a>, <a class="el" href="addrman_8cpp_source.html#l00332">Select_()</a>, <a class="el" href="addrman_8h_source.html#l00285">Serialize()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="af9c2199d29d7a1a7c6c5c1e3abec4102"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9c2199d29d7a1a7c6c5c1e3abec4102">&#9670;&nbsp;</a></span>vRandom</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;int&gt; CAddrMan::vRandom</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>randomly-ordered vector of all nIds </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00188">188</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00437">Clear()</a>, <a class="el" href="addrman_8cpp_source.html#l00087">Create()</a>, <a class="el" href="addrman_8cpp_source.html#l00119">Delete()</a>, <a class="el" href="addrman_8cpp_source.html#l00457">GetAddr_()</a>, <a class="el" href="addrman_8h_source.html#l00468">size()</a>, <a class="el" href="addrman_8cpp_source.html#l00099">SwapRandom()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="afb2dcfcd27aedab01f5259980f322fa8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb2dcfcd27aedab01f5259980f322fa8">&#9670;&nbsp;</a></span>vvNew</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CAddrMan::vvNew[<a class="el" href="addrman_8h.html#a74a626eb1dbb8e307a413e86493cd510">ADDRMAN_NEW_BUCKET_COUNT</a>][<a class="el" href="addrman_8h.html#a3499731a6c89e164cf74b68be2be0a84">ADDRMAN_BUCKET_SIZE</a>]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>list of "new" buckets </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00200">200</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8cpp_source.html#l00245">Add_()</a>, <a class="el" href="addrman_8h_source.html#l00437">Clear()</a>, <a class="el" href="addrman_8cpp_source.html#l00133">ClearNew()</a>, <a class="el" href="addrman_8cpp_source.html#l00196">Good_()</a>, <a class="el" href="addrman_8cpp_source.html#l00148">MakeTried()</a>, <a class="el" href="addrman_8cpp_source.html#l00332">Select_()</a>, <a class="el" href="addrman_8h_source.html#l00285">Serialize()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<a id="a3d0e798757be2620f76a5ee02d3b321e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d0e798757be2620f76a5ee02d3b321e">&#9670;&nbsp;</a></span>vvTried</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CAddrMan::vvTried[<a class="el" href="addrman_8h.html#ab09df186aa818ce7b9e7c86446511cf1">ADDRMAN_TRIED_BUCKET_COUNT</a>][<a class="el" href="addrman_8h.html#a3499731a6c89e164cf74b68be2be0a84">ADDRMAN_BUCKET_SIZE</a>]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>list of "tried" buckets </p>
<p class="definition">Definition at line <a class="el" href="addrman_8h_source.html#l00194">194</a> of file <a class="el" href="addrman_8h_source.html">addrman.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="addrman_8h_source.html#l00437">Clear()</a>, <a class="el" href="addrman_8cpp_source.html#l00148">MakeTried()</a>, <a class="el" href="addrman_8cpp_source.html#l00332">Select_()</a>, and <a class="el" href="addrman_8h_source.html#l00335">Unserialize()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="addrman_8h_source.html">addrman.h</a></li>
<li>src/<a class="el" href="addrman_8cpp_source.html">addrman.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="classCAddrMan.html">CAddrMan</a></li>
<li class="footer">Generated on Thu Dec 14 2017 13:15:11 for Dash Core by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
</ul>
</div>
</body>
</html>