func newGossipSender(
	makeMsg func(msg []byte) protocolMsg,
	makeBroadcastMsg func(srcName PeerName, msg []byte) protocolMsg,
	sender protocolSender,
	stop <-chan struct{},
) *gossipSender {
	more := make(chan struct{}, 1)
	flush := make(chan chan<- bool)
	s := &gossipSender{
		makeMsg:          makeMsg,
		makeBroadcastMsg: makeBroadcastMsg,
		sender:           sender,
		broadcasts:       make(map[PeerName]GossipData),
		more:             more,
		flush:            flush,
	}
	go s.run(stop, more, flush)
	return s
}
func newGossipSender(
	makeMsg func(msg []byte) protocolMsg,
	makeBroadcastMsg func(srcName PeerName, msg []byte) protocolMsg,
	sender protocolSender,
	stop <-chan struct{},
) *gossipSender {
	more := make(chan struct{}, 1)
	flush := make(chan chan<- bool)
	s := &gossipSender{
		makeMsg:          makeMsg,
		makeBroadcastMsg: makeBroadcastMsg,
		sender:           sender,
		broadcasts:       make(map[PeerName]GossipData),
		more:             more,
		flush:            flush,
	}
	go s.run(stop, more, flush)
	return s
}
func newGossipSender ( makeMsg func ( msg [ ] byte ) protocolMsg , makeBroadcastMsg func ( srcName PeerName , msg [ ] byte ) protocolMsg , sender protocolSender , stop <- chan struct { } , ) * gossipSender { more := make ( chan struct { } , 1 ) flush := make ( chan chan <- bool ) s := & gossipSender { makeMsg : makeMsg , makeBroadcastMsg : makeBroadcastMsg , sender : sender , broadcasts : make ( map [ PeerName ] GossipData ) , more : more , flush : flush , } go s . run ( stop , more , flush ) return s }
// NewGossipSender constructs a usable GossipSender.
NewGossipSender constructs a usable GossipSender .