| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package p2p
- import (
- "blockchain-go/log"
- "errors"
- "net"
- "sync"
- )
- var (
- ErrServerStopped = errors.New("server stopped")
- )
- // Server manages all peer connections.
- type Server struct {
- // Config fields may not be modified while the server is running.
- Config
- // Hooks for testing. These are useful because we can inhibit
- // the whole protocol stack.
- //newTransport func(net.Conn, *ecdsa.PublicKey) transport
- //newPeerHook func(*Peer)
- listenFunc func(network, addr string) (net.Listener, error)
- lock sync.Mutex // protects running
- running bool
- listener net.Listener
- //ourHandshake *protoHandshake
- loopWG sync.WaitGroup // loop, listenLoop
- //peerFeed event.Feed
- log log.Logger
- //nodedb *enode.DB
- //localnode *enode.LocalNode
- //ntab *discover.UDPv4
- //DiscV5 *discover.UDPv5
- //discmix *enode.FairMix
- //dialsched *dialScheduler
- // Channels into the run loop.
- quit chan struct{}
- //addtrusted chan *enode.Node
- //removetrusted chan *enode.Node
- //peerOp chan peerOpFunc
- peerOpDone chan struct{}
- //delpeer chan peerDrop
- //checkpointPostHandshake chan *conn
- //checkpointAddPeer chan *conn
- // State of run loop and listenLoop.
- //inboundHistory expHeap
- }
- //type peerOpFunc func(map[enode.ID]*Peer)
- type peerDrop struct {
- *Peer
- err error
- requested bool // true if signaled by the peer
- }
|