bitcoin-s/api/org/bitcoins/node/networking/index.html

25 lines
20 KiB
HTML
Raw Normal View History

<!DOCTYPE html ><html><head><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"/><title></title><meta content="" name="description"/><meta content="" name="keywords"/><meta http-equiv="content-type" content="text/html; charset=UTF-8"/><link href="../../../../lib/index.css" media="screen" type="text/css" rel="stylesheet"/><link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet"/><link href="../../../../lib/print.css" media="print" type="text/css" rel="stylesheet"/><link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css"/><script type="text/javascript" src="../../../../lib/jquery.min.js"></script><script type="text/javascript" src="../../../../lib/index.js"></script><script type="text/javascript" src="../../../../index.js"></script><script type="text/javascript" src="../../../../lib/scheduler.js"></script><script type="text/javascript" src="../../../../lib/template.js"></script><script type="text/javascript">/* this variable can be used by the JS to determine the path to the root document */
var toRoot = '../../../../';</script></head><body><div id="search"><span id="doc-title"><span id="doc-version"></span></span> <span class="close-results"><span class="left">&lt;</span> Back</span><div id="textfilter"><span class="input"><input autocapitalize="none" placeholder="Search" id="index-input" type="text" accesskey="/"/><i class="clear material-icons"></i><i id="search-icon" class="material-icons"></i></span></div></div><div id="search-results"><div id="search-progress"><div id="progress-fill"></div></div><div id="results-content"><div id="entity-results"></div><div id="member-results"></div></div></div><div id="content-scroll-container" style="-webkit-overflow-scrolling: touch;"><div id="content-container" style="-webkit-overflow-scrolling: touch;"><div id="subpackage-spacer"><div id="packages"><h1>Packages</h1><ul><li class="indented0 " name="_root_.root" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="_root_" class="anchorToMember"></a><a id="root:_root_" class="anchorToMember"></a> <span class="permalink"><a href="../../../../index.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><a href="../../../../index.html" title=""><span class="name">root</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../../../../index.html" name="_root_" id="_root_" class="extype">root</a></dd></dl></div></li><li class="indented1 " name="_root_.org" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="org" class="anchorToMember"></a><a id="org:org" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/index.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><a href="../../../index.html" title=""><span class="name">org</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../../../../index.html" name="_root_" id="_root_" class="extype">root</a></dd></dl></div></li><li class="indented2 " name="org.bitcoins" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="bitcoins" class="anchorToMember"></a><a id="bitcoins:bitcoins" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/index.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><a href="../../index.html" title=""><span class="name">bitcoins</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../../../index.html" name="org" id="org" class="extype">org</a></dd></dl></div></li><li class="indented3 " name="org.bitcoins.node" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="node" class="anchorToMember"></a><a id="node:node" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/index.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><a href="../index.html" title=""><span class="name">node</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../../index.html" name="org.bitcoins" id="org.bitcoins" class="extype">bitcoins</a></dd></dl></div></li><li class="indented4 " name="org.bitcoins.node.config" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="config" class="anchorToMember"></a><a id="config:config" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/config/index.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind
relaying messages and closing a connection to our peer on
the P2P network.</p><div class="fullcomment"><div class="comment cmt"><p>This actor is responsible for creating a connection,
relaying messages and closing a connection to our peer on
the P2P network. This is the actor that directly interacts
with the p2p network. It's responsibly is to deal with low
level .TCP messages.</p><p>If the client receives a <a href="../../core/p2p/NetworkMessage.html" name="org.bitcoins.core.p2p.NetworkMessage" id="org.bitcoins.core.p2p.NetworkMessage" class="extype">NetworkMessage</a>, from a
<a href="peer/PeerMessageSender.html" name="org.bitcoins.node.networking.peer.PeerMessageSender" id="org.bitcoins.node.networking.peer.PeerMessageSender" class="extype">PeerMessageSender</a>
it serializes the message to it to a <a href="https://doc.akka.io/api/akka/2.6.18/akka/util/ByteString.html" name="akka.util.ByteString" id="akka.util.ByteString" class="extype">akka.util.ByteString</a> and then
sends it to the internal <code>manager</code> which streams the data to our peer
on the Bitcoin network.</p><p>If the client receives a <span name="Tcp.Received" class="extype">Tcp.Received</span> message, it means we have received
a message from our peer on the Bitcoin P2P network. This means we try to parse
the bytes into a <a href="../../core/p2p/NetworkMessage.html" name="org.bitcoins.core.p2p.NetworkMessage" id="org.bitcoins.core.p2p.NetworkMessage" class="extype">NetworkMessage</a>.
If we successfully parse the message we relay that message to the
<a href="peer/PeerMessageSender.html" name="org.bitcoins.node.networking.peer.PeerMessageSender" id="org.bitcoins.node.networking.peer.PeerMessageSender" class="extype">PeerMessageSender</a>
that created the Client Actor.</p><p>In this class you will see a 'unalignedBytes' value passed around in a lot of methods.
This is because we cannot assume that a Bitcoin P2P message aligns with a TCP packet.
For instance, a large block message (up to 4MB in size)
CANNOT fit in a single TCP packet. This means we must cache
the bytes and wait for the rest of them to be sent.
</p></div><dl class="paramcmts block"><dt class="param">initPeerMsgHandlerReceiver</dt><dd class="cmt"><p>The place we send messages that we successfully parsed
from our peer on the P2P network. This is mostly likely
a <a href="peer/PeerMessageSender.html" name="org.bitcoins.node.networking.peer.PeerMessageSender" id="org.bitcoins.node.networking.peer.PeerMessageSender" class="extype">org.bitcoins.node.networking.peer.PeerMessageSender</a></p></dd></dl></div></li></ol></div><div class="values members"><h3>Value Members</h3><ol><li class="indented0 " name="org.bitcoins.node.networking.P2PClient" group="Ungrouped" fullComment="no" data-isabs="false" visbl="pub"><a id="P2PClient" class="anchorToMember"></a><a id="P2PClient:P2PClient" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/networking/P2PClient$.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">object</span></span> <span class="symbol"><a href="P2PClient$.html" title=""><span class="name">P2PClient</span></a><span class="result"> extends <span name="org.bitcoins.node.P2PLogger" class="extype">P2PLogger</span> with <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java/io/Serializable.html#java.io.Serializable" name="java.io.Serializable" id="java.io.Serializable" class="extype">Serializable</a></span></span></li></ol></div></div><div id="inheritedMembers"></div><div id="groupedMembers"><div name="Ungrouped" class="group"><h3>Ungrouped</h3></div></div></div><div id="tooltip"></div><div id="footer"></div></body></div></div></div></body></html>