| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package p2p
- import (
- "blockchain-go/log"
- "blockchain-go/p2p/enode"
- "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
- }
|