aboutsummaryrefslogtreecommitdiffstats
path: root/dex/peer.go
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2018-11-20 17:46:17 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 21:32:53 +0800
commit404496ca9ac1974fff5c4e89f4fee146da7bac33 (patch)
treef212f76b50393506b4f95ee8b679989b22419c4e /dex/peer.go
parent4802a4126fecf3971858b028f4d343fa8a6973d4 (diff)
downloaddexon-404496ca9ac1974fff5c4e89f4fee146da7bac33.tar.gz
dexon-404496ca9ac1974fff5c4e89f4fee146da7bac33.tar.zst
dexon-404496ca9ac1974fff5c4e89f4fee146da7bac33.zip
dex: Tx message optimization (#39)
* dex: Add a tx queue in broadcast * Modify queue parameter * Priority select all messages except tx
Diffstat (limited to 'dex/peer.go')
-rw-r--r--dex/peer.go32
1 files changed, 26 insertions, 6 deletions
diff --git a/dex/peer.go b/dex/peer.go
index 5aa1c1b80..263dc5647 100644
--- a/dex/peer.go
+++ b/dex/peer.go
@@ -1,3 +1,20 @@
+// Copyright 2018 The dexon-consensus Authors
+// This file is part of the dexon-consensus library.
+//
+// The dexon-consensus library is free software: you can redistribute it
+// and/or modify it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the License,
+// or (at your option) any later version.
+//
+// The dexon-consensus library is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
+// General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the dexon-consensus library. If not, see
+// <http://www.gnu.org/licenses/>.
+
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
@@ -188,12 +205,6 @@ func newPeer(version int, p *p2p.Peer, rw p2p.MsgReadWriter) *peer {
func (p *peer) broadcast() {
for {
select {
- case txs := <-p.queuedTxs:
- if err := p.SendTransactions(txs); err != nil {
- return
- }
- p.Log().Trace("Broadcast transactions", "count", len(txs))
-
case metas := <-p.queuedMetas:
if err := p.SendNodeMetas(metas); err != nil {
return
@@ -253,6 +264,15 @@ func (p *peer) broadcast() {
p.Log().Trace("Pulling Votes", "position", pos)
case <-p.term:
return
+ case <-time.After(100 * time.Millisecond):
+ }
+ select {
+ case txs := <-p.queuedTxs:
+ if err := p.SendTransactions(txs); err != nil {
+ return
+ }
+ p.Log().Trace("Broadcast transactions", "count", len(txs))
+ default:
}
}
}