From b9a25c1141f6ea67686bfa7054e5be2453b9033f Mon Sep 17 00:00:00 2001 From: Svarog Date: Sun, 19 Jul 2020 11:24:25 +0300 Subject: [PATCH] [NOD-1163] Combine seperated flows into single packages (#801) * [NOD-1163] Combine seperated flows into single packages * [NOD-1163] Move handshake.go to handshake package * [NOD-1163] Use single logger prefix for everything under protocol * [NOD-1163] Add comment * [NOD-1163] Fix refactor error --- logger/logger.go | 12 ----------- protocol/blocklogger/log.go | 2 +- .../addressexchange}/receiveaddresses.go | 5 +++-- .../addressexchange}/sendaddresses.go | 7 ++++--- .../handle_relay_block_requests.go | 2 +- .../blockrelay}/handle_relay_invs.go | 5 +++-- .../blockrelay}/hashes_queue_set.go | 2 +- .../{sendversion => flows/blockrelay}/log.go | 4 ++-- .../blockrelay}/shared_requested_blocks.go | 5 +++-- protocol/{ => flows/handshake}/handshake.go | 16 +++++++------- .../handshake}/log.go | 4 ++-- .../handshake}/receiveversion.go | 5 +++-- .../handshake}/sendversion.go | 5 +---- protocol/{ => flows}/ping/ping.go | 0 protocol/handlerelayblockrequests/log.go | 9 -------- protocol/peer/log.go | 2 +- protocol/protocol.go | 21 ++++++++++--------- 17 files changed, 44 insertions(+), 62 deletions(-) rename protocol/{receiveaddresses => flows/addressexchange}/receiveaddresses.go (98%) rename protocol/{sendaddresses => flows/addressexchange}/sendaddresses.go (98%) rename protocol/{handlerelayblockrequests => flows/blockrelay}/handle_relay_block_requests.go (97%) rename protocol/{handlerelayinvs => flows/blockrelay}/handle_relay_invs.go (99%) rename protocol/{handlerelayinvs => flows/blockrelay}/hashes_queue_set.go (96%) rename protocol/{sendversion => flows/blockrelay}/log.go (65%) rename protocol/{handlerelayinvs => flows/blockrelay}/shared_requested_blocks.go (96%) rename protocol/{ => flows/handshake}/handshake.go (78%) rename protocol/{handlerelayinvs => flows/handshake}/log.go (64%) rename protocol/{receiveversion => flows/handshake}/receiveversion.go (99%) rename protocol/{sendversion => flows/handshake}/sendversion.go (97%) rename protocol/{ => flows}/ping/ping.go (100%) delete mode 100644 protocol/handlerelayblockrequests/log.go diff --git a/logger/logger.go b/logger/logger.go index 6b6cd0b4e..2fcef731c 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -51,9 +51,6 @@ var ( grpcLog = BackendLog.Logger("GRPC") p2psLog = BackendLog.Logger("P2PS") ntarLog = BackendLog.Logger("NTAR") - blkrLog = BackendLog.Logger("BLKR") - gbrlLog = BackendLog.Logger("GBRL") - blprLog = BackendLog.Logger("BLPR") dnssLog = BackendLog.Logger("DNSS") snvrLog = BackendLog.Logger("SNVR") ) @@ -82,10 +79,7 @@ var SubsystemTags = struct { MUXX, GRPC, P2PS, - BLKR, NTAR, - GBRL, - BLPR, DNSS, SNVR string }{ @@ -111,10 +105,7 @@ var SubsystemTags = struct { MUXX: "MUXX", GRPC: "GRPC", P2PS: "P2PS", - BLKR: "BLKR", - GBRL: "GBRL", NTAR: "NTAR", - BLPR: "BLPR", DNSS: "DNSS", SNVR: "SNVR", } @@ -143,10 +134,7 @@ var subsystemLoggers = map[string]*logs.Logger{ SubsystemTags.MUXX: muxxLog, SubsystemTags.GRPC: grpcLog, SubsystemTags.P2PS: p2psLog, - SubsystemTags.BLKR: blkrLog, - SubsystemTags.GBRL: gbrlLog, SubsystemTags.NTAR: ntarLog, - SubsystemTags.BLPR: blprLog, SubsystemTags.DNSS: dnssLog, SubsystemTags.SNVR: snvrLog, } diff --git a/protocol/blocklogger/log.go b/protocol/blocklogger/log.go index 228862c90..adbfde447 100644 --- a/protocol/blocklogger/log.go +++ b/protocol/blocklogger/log.go @@ -8,4 +8,4 @@ import ( "github.com/kaspanet/kaspad/logger" ) -var log, _ = logger.Get(logger.SubsystemTags.BLPR) +var log, _ = logger.Get(logger.SubsystemTags.PROT) diff --git a/protocol/receiveaddresses/receiveaddresses.go b/protocol/flows/addressexchange/receiveaddresses.go similarity index 98% rename from protocol/receiveaddresses/receiveaddresses.go rename to protocol/flows/addressexchange/receiveaddresses.go index 15d8bd7ee..b9c8aeaea 100644 --- a/protocol/receiveaddresses/receiveaddresses.go +++ b/protocol/flows/addressexchange/receiveaddresses.go @@ -1,13 +1,14 @@ -package receiveaddresses +package addressexchange import ( + "time" + "github.com/kaspanet/kaspad/addrmgr" "github.com/kaspanet/kaspad/config" "github.com/kaspanet/kaspad/netadapter/router" peerpkg "github.com/kaspanet/kaspad/protocol/peer" "github.com/kaspanet/kaspad/protocol/protocolerrors" "github.com/kaspanet/kaspad/wire" - "time" ) const timeout = 30 * time.Second diff --git a/protocol/sendaddresses/sendaddresses.go b/protocol/flows/addressexchange/sendaddresses.go similarity index 98% rename from protocol/sendaddresses/sendaddresses.go rename to protocol/flows/addressexchange/sendaddresses.go index e72ee77c8..e7513fa95 100644 --- a/protocol/sendaddresses/sendaddresses.go +++ b/protocol/flows/addressexchange/sendaddresses.go @@ -1,11 +1,12 @@ -package sendaddresses +package addressexchange import ( + "math/rand" + "time" + "github.com/kaspanet/kaspad/addrmgr" "github.com/kaspanet/kaspad/netadapter/router" "github.com/kaspanet/kaspad/wire" - "math/rand" - "time" ) // SendAddresses sends addresses to a peer that requests it. diff --git a/protocol/handlerelayblockrequests/handle_relay_block_requests.go b/protocol/flows/blockrelay/handle_relay_block_requests.go similarity index 97% rename from protocol/handlerelayblockrequests/handle_relay_block_requests.go rename to protocol/flows/blockrelay/handle_relay_block_requests.go index 0290823b0..313d89366 100644 --- a/protocol/handlerelayblockrequests/handle_relay_block_requests.go +++ b/protocol/flows/blockrelay/handle_relay_block_requests.go @@ -1,4 +1,4 @@ -package handlerelayblockrequests +package blockrelay import ( "github.com/kaspanet/kaspad/blockdag" diff --git a/protocol/handlerelayinvs/handle_relay_invs.go b/protocol/flows/blockrelay/handle_relay_invs.go similarity index 99% rename from protocol/handlerelayinvs/handle_relay_invs.go rename to protocol/flows/blockrelay/handle_relay_invs.go index 2915b0657..5d4d60cd8 100644 --- a/protocol/handlerelayinvs/handle_relay_invs.go +++ b/protocol/flows/blockrelay/handle_relay_invs.go @@ -1,6 +1,8 @@ -package handlerelayinvs +package blockrelay import ( + "time" + "github.com/kaspanet/kaspad/blockdag" "github.com/kaspanet/kaspad/netadapter" "github.com/kaspanet/kaspad/netadapter/router" @@ -12,7 +14,6 @@ import ( mathUtil "github.com/kaspanet/kaspad/util/math" "github.com/kaspanet/kaspad/wire" "github.com/pkg/errors" - "time" ) const timeout = 30 * time.Second diff --git a/protocol/handlerelayinvs/hashes_queue_set.go b/protocol/flows/blockrelay/hashes_queue_set.go similarity index 96% rename from protocol/handlerelayinvs/hashes_queue_set.go rename to protocol/flows/blockrelay/hashes_queue_set.go index e6867f141..cfcf44fdc 100644 --- a/protocol/handlerelayinvs/hashes_queue_set.go +++ b/protocol/flows/blockrelay/hashes_queue_set.go @@ -1,4 +1,4 @@ -package handlerelayinvs +package blockrelay import "github.com/kaspanet/kaspad/util/daghash" diff --git a/protocol/sendversion/log.go b/protocol/flows/blockrelay/log.go similarity index 65% rename from protocol/sendversion/log.go rename to protocol/flows/blockrelay/log.go index 017c7989a..48fe4f83e 100644 --- a/protocol/sendversion/log.go +++ b/protocol/flows/blockrelay/log.go @@ -1,9 +1,9 @@ -package sendversion +package blockrelay import ( "github.com/kaspanet/kaspad/logger" "github.com/kaspanet/kaspad/util/panics" ) -var log, _ = logger.Get(logger.SubsystemTags.GBRL) +var log, _ = logger.Get(logger.SubsystemTags.PROT) var spawn = panics.GoroutineWrapperFunc(log) diff --git a/protocol/handlerelayinvs/shared_requested_blocks.go b/protocol/flows/blockrelay/shared_requested_blocks.go similarity index 96% rename from protocol/handlerelayinvs/shared_requested_blocks.go rename to protocol/flows/blockrelay/shared_requested_blocks.go index dfa231cfe..18a8253a6 100644 --- a/protocol/handlerelayinvs/shared_requested_blocks.go +++ b/protocol/flows/blockrelay/shared_requested_blocks.go @@ -1,8 +1,9 @@ -package handlerelayinvs +package blockrelay import ( - "github.com/kaspanet/kaspad/util/daghash" "sync" + + "github.com/kaspanet/kaspad/util/daghash" ) type sharedRequestedBlocks struct { diff --git a/protocol/handshake.go b/protocol/flows/handshake/handshake.go similarity index 78% rename from protocol/handshake.go rename to protocol/flows/handshake/handshake.go index 97539f565..478d5bb45 100644 --- a/protocol/handshake.go +++ b/protocol/flows/handshake/handshake.go @@ -1,4 +1,4 @@ -package protocol +package handshake import ( "sync" @@ -9,14 +9,14 @@ import ( "github.com/kaspanet/kaspad/netadapter" routerpkg "github.com/kaspanet/kaspad/netadapter/router" peerpkg "github.com/kaspanet/kaspad/protocol/peer" - "github.com/kaspanet/kaspad/protocol/receiveversion" - "github.com/kaspanet/kaspad/protocol/sendversion" "github.com/kaspanet/kaspad/util/locks" "github.com/kaspanet/kaspad/wire" "github.com/pkg/errors" ) -func handshake(router *routerpkg.Router, netAdapter *netadapter.NetAdapter, peer *peerpkg.Peer, +// HandleHandshake sets up the handshake protocol - It sends a version message and waits for an incoming +// version message, as well as a verack for the sent version +func HandleHandshake(router *routerpkg.Router, netAdapter *netadapter.NetAdapter, peer *peerpkg.Peer, dag *blockdag.BlockDAG, addressManager *addrmgr.AddrManager) (closed bool, err error) { receiveVersionRoute, err := router.AddIncomingRoute([]wire.MessageCommand{wire.CmdVersion}) @@ -29,9 +29,9 @@ func handshake(router *routerpkg.Router, netAdapter *netadapter.NetAdapter, peer panic(err) } - // For the handshake to finish, we need to get from the other node + // For HandleHandshake to finish, we need to get from the other node // a version and verack messages, so we increase the wait group by 2 - // and block the handshake with wg.Wait(). + // and block HandleHandshake with wg.Wait(). wg := sync.WaitGroup{} wg.Add(2) @@ -41,7 +41,7 @@ func handshake(router *routerpkg.Router, netAdapter *netadapter.NetAdapter, peer var peerAddress *wire.NetAddress spawn(func() { defer wg.Done() - address, closed, err := receiveversion.ReceiveVersion(receiveVersionRoute, router.OutgoingRoute(), netAdapter, peer, dag) + address, closed, err := ReceiveVersion(receiveVersionRoute, router.OutgoingRoute(), netAdapter, peer, dag) if err != nil { log.Errorf("error from ReceiveVersion: %s", err) } @@ -56,7 +56,7 @@ func handshake(router *routerpkg.Router, netAdapter *netadapter.NetAdapter, peer spawn(func() { defer wg.Done() - closed, err := sendversion.SendVersion(sendVersionRoute, router.OutgoingRoute(), netAdapter, dag) + closed, err := SendVersion(sendVersionRoute, router.OutgoingRoute(), netAdapter, dag) if err != nil { log.Errorf("error from SendVersion: %s", err) } diff --git a/protocol/handlerelayinvs/log.go b/protocol/flows/handshake/log.go similarity index 64% rename from protocol/handlerelayinvs/log.go rename to protocol/flows/handshake/log.go index 33084c962..0ae220cf9 100644 --- a/protocol/handlerelayinvs/log.go +++ b/protocol/flows/handshake/log.go @@ -1,9 +1,9 @@ -package handlerelayinvs +package handshake import ( "github.com/kaspanet/kaspad/logger" "github.com/kaspanet/kaspad/util/panics" ) -var log, _ = logger.Get(logger.SubsystemTags.BLKR) +var log, _ = logger.Get(logger.SubsystemTags.PROT) var spawn = panics.GoroutineWrapperFunc(log) diff --git a/protocol/receiveversion/receiveversion.go b/protocol/flows/handshake/receiveversion.go similarity index 99% rename from protocol/receiveversion/receiveversion.go rename to protocol/flows/handshake/receiveversion.go index 02cb0dda5..2eedde27c 100644 --- a/protocol/receiveversion/receiveversion.go +++ b/protocol/flows/handshake/receiveversion.go @@ -1,13 +1,14 @@ -package receiveversion +package handshake import ( + "time" + "github.com/kaspanet/kaspad/blockdag" "github.com/kaspanet/kaspad/netadapter" "github.com/kaspanet/kaspad/netadapter/router" peerpkg "github.com/kaspanet/kaspad/protocol/peer" "github.com/kaspanet/kaspad/protocol/protocolerrors" "github.com/kaspanet/kaspad/wire" - "time" ) var ( diff --git a/protocol/sendversion/sendversion.go b/protocol/flows/handshake/sendversion.go similarity index 97% rename from protocol/sendversion/sendversion.go rename to protocol/flows/handshake/sendversion.go index 4ee9e1b04..e6da4e057 100644 --- a/protocol/sendversion/sendversion.go +++ b/protocol/flows/handshake/sendversion.go @@ -1,4 +1,4 @@ -package sendversion +package handshake import ( "github.com/kaspanet/kaspad/blockdag" @@ -7,7 +7,6 @@ import ( "github.com/kaspanet/kaspad/netadapter/router" "github.com/kaspanet/kaspad/version" "github.com/kaspanet/kaspad/wire" - "time" ) var ( @@ -28,8 +27,6 @@ var ( defaultRequiredServices = wire.SFNodeNetwork ) -const timeout = 30 * time.Second - // SendVersion sends a version to a peer and waits for verack. func SendVersion(incomingRoute *router.Route, outgoingRoute *router.Route, netAdapter *netadapter.NetAdapter, dag *blockdag.BlockDAG) (routeClosed bool, err error) { diff --git a/protocol/ping/ping.go b/protocol/flows/ping/ping.go similarity index 100% rename from protocol/ping/ping.go rename to protocol/flows/ping/ping.go diff --git a/protocol/handlerelayblockrequests/log.go b/protocol/handlerelayblockrequests/log.go deleted file mode 100644 index 277b5ca5d..000000000 --- a/protocol/handlerelayblockrequests/log.go +++ /dev/null @@ -1,9 +0,0 @@ -package handlerelayblockrequests - -import ( - "github.com/kaspanet/kaspad/logger" - "github.com/kaspanet/kaspad/util/panics" -) - -var log, _ = logger.Get(logger.SubsystemTags.GBRL) -var spawn = panics.GoroutineWrapperFunc(log) diff --git a/protocol/peer/log.go b/protocol/peer/log.go index 4eb65dc11..c5ecb0769 100644 --- a/protocol/peer/log.go +++ b/protocol/peer/log.go @@ -5,5 +5,5 @@ import ( "github.com/kaspanet/kaspad/util/panics" ) -var log, _ = logger.Get(logger.SubsystemTags.PEER) +var log, _ = logger.Get(logger.SubsystemTags.PROT) var spawn = panics.GoroutineWrapperFunc(log) diff --git a/protocol/protocol.go b/protocol/protocol.go index ddea7f12f..afe4efbd1 100644 --- a/protocol/protocol.go +++ b/protocol/protocol.go @@ -4,17 +4,18 @@ import ( "errors" "sync/atomic" + "github.com/kaspanet/kaspad/protocol/flows/handshake" + + "github.com/kaspanet/kaspad/protocol/flows/addressexchange" + "github.com/kaspanet/kaspad/protocol/flows/blockrelay" + "github.com/kaspanet/kaspad/addrmgr" "github.com/kaspanet/kaspad/blockdag" "github.com/kaspanet/kaspad/netadapter" routerpkg "github.com/kaspanet/kaspad/netadapter/router" - "github.com/kaspanet/kaspad/protocol/handlerelayblockrequests" - "github.com/kaspanet/kaspad/protocol/handlerelayinvs" + "github.com/kaspanet/kaspad/protocol/flows/ping" peerpkg "github.com/kaspanet/kaspad/protocol/peer" - "github.com/kaspanet/kaspad/protocol/ping" "github.com/kaspanet/kaspad/protocol/protocolerrors" - "github.com/kaspanet/kaspad/protocol/receiveaddresses" - "github.com/kaspanet/kaspad/protocol/sendaddresses" "github.com/kaspanet/kaspad/wire" ) @@ -65,7 +66,7 @@ func startFlows(netAdapter *netadapter.NetAdapter, router *routerpkg.Router, dag outgoingRoute := router.OutgoingRoute() peer := new(peerpkg.Peer) - closed, err := handshake(router, netAdapter, peer, dag, addressManager) + closed, err := handshake.HandleHandshake(router, netAdapter, peer, dag, addressManager) if err != nil { return err } @@ -75,25 +76,25 @@ func startFlows(netAdapter *netadapter.NetAdapter, router *routerpkg.Router, dag addOneTimeFlow("SendAddresses", router, []wire.MessageCommand{wire.CmdGetAddresses}, &stopped, stop, func(incomingRoute *routerpkg.Route) (routeClosed bool, err error) { - return sendaddresses.SendAddresses(incomingRoute, outgoingRoute, addressManager) + return addressexchange.SendAddresses(incomingRoute, outgoingRoute, addressManager) }, ) addOneTimeFlow("ReceiveAddresses", router, []wire.MessageCommand{wire.CmdAddress}, &stopped, stop, func(incomingRoute *routerpkg.Route) (routeClosed bool, err error) { - return receiveaddresses.ReceiveAddresses(incomingRoute, outgoingRoute, peer, addressManager) + return addressexchange.ReceiveAddresses(incomingRoute, outgoingRoute, peer, addressManager) }, ) addFlow("HandleRelayInvs", router, []wire.MessageCommand{wire.CmdInvRelayBlock, wire.CmdBlock}, &stopped, stop, func(incomingRoute *routerpkg.Route) error { - return handlerelayinvs.HandleRelayInvs(incomingRoute, outgoingRoute, peer, netAdapter, dag) + return blockrelay.HandleRelayInvs(incomingRoute, outgoingRoute, peer, netAdapter, dag) }, ) addFlow("HandleRelayBlockRequests", router, []wire.MessageCommand{wire.CmdGetRelayBlocks}, &stopped, stop, func(incomingRoute *routerpkg.Route) error { - return handlerelayblockrequests.HandleRelayBlockRequests(incomingRoute, outgoingRoute, peer, dag) + return blockrelay.HandleRelayBlockRequests(incomingRoute, outgoingRoute, peer, dag) }, )