mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-03-21 14:32:37 +01:00
24 lines
20 KiB
HTML
24 lines
20 KiB
HTML
<!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"><</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"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><a href="../config/index.html" title=""><span class="name">config</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../index.html" name="org.bitcoins.node" id="org.bitcoins.node" class="extype">node</a></dd></dl></div></li><li class="indented4 " name="org.bitcoins.node.constant" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="constant" class="anchorToMember"></a><a id="constant:constant" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/constant/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="../constant/index.html" title=""><span class="name">constant</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../index.html" name="org.bitcoins.node" id="org.bitcoins.node" class="extype">node</a></dd></dl></div></li><li class="indented4 " name="org.bitcoins.node.db" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="db" class="anchorToMember"></a><a id="db:db" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/db/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="../db/index.html" title=""><span class="name">db</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../index.html" name="org.bitcoins.node" id="org.bitcoins.node" class="extype">node</a></dd></dl></div></li><li class="indented4 " name="org.bitcoins.node.models" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="models" class="anchorToMember"></a><a id="models:models" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/models/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="../models/index.html" title=""><span class="name">models</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../index.html" name="org.bitcoins.node" id="org.bitcoins.node" class="extype">node</a></dd></dl></div></li><li class="indented4 current" name="org.bitcoins.node.networking" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="networking" class="anchorToMember"></a><a id="networking:networking" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/networking/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"><span class="name">networking</span></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../index.html" name="org.bitcoins.node" id="org.bitcoins.node" class="extype">node</a></dd></dl></div></li><li class="indented5 " name="org.bitcoins.node.networking.peer" group="Ungrouped" fullComment="no" data-isabs="false" visbl="pub"><a id="peer" class="anchorToMember"></a><a id="peer:peer" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/networking/peer/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="peer/index.html" title=""><span class="name">peer</span></a></span></li><li class="current-entities indented4"><a href="P2PClient$.html" title="" class="object"></a> <a href="P2PClient.html" title="" class="class"></a><a href="P2PClient.html" title="">P2PClient</a></li><li class="current-entities indented4"><span class="separator"></span> <a href="P2PClientActor.html" title="This actor is responsible for creating a connection, relaying messages and closing a connection to our peer on the P2P network." class="class"></a><a href="P2PClientActor.html" title="This actor is responsible for creating a connection, relaying messages and closing a connection to our peer on the P2P network.">P2PClientActor</a></li><li class="indented4 " name="org.bitcoins.node.util" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="util" class="anchorToMember"></a><a id="util:util" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/util/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="../util/index.html" title=""><span class="name">util</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../index.html" name="org.bitcoins.node" id="org.bitcoins.node" class="extype">node</a></dd></dl></div></li></ul></div></div><div id="content"><body class="package value"><div id="definition"><div class="big-circle package">p</div><p id="owner"><a href="../../../index.html" name="org" id="org" class="extype">org</a>.<a href="../../index.html" name="org.bitcoins" id="org.bitcoins" class="extype">bitcoins</a>.<a href="../index.html" name="org.bitcoins.node" id="org.bitcoins.node" class="extype">node</a></p><h1>networking<span class="permalink"><a href="../../../../org/bitcoins/node/networking/index.html" title="Permalink"><i class="material-icons"></i></a></span></h1></div><h4 id="signature" class="signature"><span class="modifier_kind"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><span class="name">networking</span></span></h4><div id="comment" class="fullcommenttop"></div><div id="mbrsel"><div class="toggle"></div><div id="memberfilter"><i class="material-icons arrow"></i><span class="input"><input placeholder="Filter all members" id="mbrsel-input" type="text" accesskey="/"/></span><i class="clear material-icons"></i></div><div id="filterby"><div id="order"><span class="filtertype">Ordering</span><ol><li class="alpha in"><span>Alphabetic</span></li></ol></div><div id="visbl"><span class="filtertype">Visibility</span><ol><li class="public in"><span>Public</span></li><li class="protected out"><span>Protected</span></li></ol></div></div></div><div id="template"><div id="allMembers"><div id="packages" class="package members"><h3>Package Members</h3><ol><li class="indented0 " name="org.bitcoins.node.networking.peer" group="Ungrouped" fullComment="no" data-isabs="false" visbl="pub"><a id="peer" class="anchorToMember"></a><a id="peer:peer" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/networking/peer/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="peer/index.html" title=""><span class="name">peer</span></a></span></li></ol></div><div id="types" class="types members"><h3>Type Members</h3><ol><li class="indented0 " name="org.bitcoins.node.networking.P2PClient" group="Ungrouped" fullComment="no" data-isabs="false" visbl="pub"><a id="P2PClientextendsP2PLoggerwithProductwithSerializable" 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">case class</span></span> <span class="symbol"><a href="P2PClient.html" title=""><span class="name">P2PClient</span></a><span class="params">(<span name="actor">actor: <a href="https://doc.akka.io/api/akka/2.6.18/akka/actor/ActorRef.html#akka.actor.ActorRef" name="akka.actor.ActorRef" id="akka.actor.ActorRef" class="extype">ActorRef</a></span>, <span name="peer">peer: <a href="../models/Peer.html" name="org.bitcoins.node.models.Peer" id="org.bitcoins.node.models.Peer" class="extype">Peer</a></span>)</span><span class="result"> extends <span name="org.bitcoins.node.P2PLogger" class="extype">P2PLogger</span> with <a href="https://www.scala-lang.org/api/2.13.8/scala/Product.html#scala.Product" name="scala.Product" id="scala.Product" class="extype">Product</a> with <a href="../../../../scala/index.html#Serializable=java.io.Serializable" name="scala.Serializable" id="scala.Serializable" class="extmbr">Serializable</a></span></span></li><li class="indented0 " name="org.bitcoins.node.networking.P2PClientActor" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="P2PClientActorextendsActorwithP2PLoggerwithProductwithSerializable" class="anchorToMember"></a><a id="P2PClientActor:P2PClientActor" class="anchorToMember"></a> <span class="permalink"><a href="../../../../org/bitcoins/node/networking/P2PClientActor.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">case class</span></span> <span class="symbol"><a href="P2PClientActor.html" title="This actor is responsible for creating a connection, relaying messages and closing a connection to our peer on the P2P network."><span class="name">P2PClientActor</span></a><span class="params">(<span name="peer">peer: <a href="../models/Peer.html" name="org.bitcoins.node.models.Peer" id="org.bitcoins.node.models.Peer" class="extype">Peer</a></span>, <span name="initPeerMsgHandlerReceiver">initPeerMsgHandlerReceiver: <a href="peer/PeerMessageReceiver.html" name="org.bitcoins.node.networking.peer.PeerMessageReceiver" id="org.bitcoins.node.networking.peer.PeerMessageReceiver" class="extype">PeerMessageReceiver</a></span>, <span name="onReconnect">onReconnect: () => <a href="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future" name="scala.concurrent.Future" id="scala.concurrent.Future" class="extype">Future</a>[<a href="https://www.scala-lang.org/api/2.13.8/scala/Unit.html#scala.Unit" name="scala.Unit" id="scala.Unit" class="extype">Unit</a>]</span>)</span><span class="params">(<span class="implicit">implicit </span><span name="config">config: <a href="../config/NodeAppConfig.html" name="org.bitcoins.node.config.NodeAppConfig" id="org.bitcoins.node.config.NodeAppConfig" class="extype">NodeAppConfig</a></span>)</span><span class="result"> extends <a href="https://doc.akka.io/api/akka/2.6.18/akka/actor/Actor.html#akka.actor.Actor" name="akka.actor.Actor" id="akka.actor.Actor" class="extype">Actor</a> with <span name="org.bitcoins.node.P2PLogger" class="extype">P2PLogger</span> with <a href="https://www.scala-lang.org/api/2.13.8/scala/Product.html#scala.Product" name="scala.Product" id="scala.Product" class="extype">Product</a> with <a href="../../../../scala/index.html#Serializable=java.io.Serializable" name="scala.Serializable" id="scala.Serializable" class="extmbr">Serializable</a></span></span><p class="shortcomment cmt">This actor is responsible for creating a connection,
|
|
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>
|