github.com/bytom/bytom@v1.1.2-0.20221014091027-bbcba3df6075/netsync/consensusmgr/broadcast_msg.go (about) 1 package consensusmgr 2 3 import ( 4 "github.com/bytom/bytom/netsync/peers" 5 ) 6 7 // BroadcastMsg the message that can be broadcast 8 // by peer set. 9 type BroadcastMsg struct { 10 msg ConsensusMessage 11 transChan byte 12 } 13 14 // NewBroadcastMsg create concrete broadcast message, implement peers.BroadcastMsg interface. 15 func NewBroadcastMsg(msg ConsensusMessage, transChan byte) *BroadcastMsg { 16 return &BroadcastMsg{ 17 msg: msg, 18 transChan: transChan, 19 } 20 } 21 22 // GetChan get message transfer channel. 23 func (b *BroadcastMsg) GetChan() byte { 24 return b.transChan 25 } 26 27 // GetMsg get ConsensusMessage. 28 func (b *BroadcastMsg) GetMsg() interface{} { 29 return struct{ ConsensusMessage }{b.msg} 30 } 31 32 // MsgString get a string representation of the message. 33 func (b *BroadcastMsg) MsgString() string { 34 return b.msg.String() 35 } 36 37 // MarkSendRecord mark send message record to prevent messages from being sent repeatedly. 38 func (b *BroadcastMsg) MarkSendRecord(ps *peers.PeerSet, peers []string) { 39 b.msg.BroadcastMarkSendRecord(ps, peers) 40 } 41 42 // FilterTargetPeers filter target peers to filter the nodes that need to send messages. 43 func (b *BroadcastMsg) FilterTargetPeers(ps *peers.PeerSet) []string { 44 return b.msg.BroadcastFilterTargetPeers(ps) 45 }