Server manages all peer connections.
| 185 | |
| 186 | // Server manages all peer connections. |
| 187 | type Server struct { |
| 188 | // Config fields may not be modified while the server is running. |
| 189 | Config |
| 190 | |
| 191 | // Hooks for testing. These are useful because we can inhibit |
| 192 | // the whole protocol stack. |
| 193 | newTransport func(net.Conn, *ecdsa.PublicKey) transport |
| 194 | newPeerHook func(*Peer) |
| 195 | listenFunc func(network, addr string) (net.Listener, error) |
| 196 | |
| 197 | lock sync.Mutex // protects running |
| 198 | running bool |
| 199 | |
| 200 | listener net.Listener |
| 201 | ourHandshake *protoHandshake |
| 202 | loopWG sync.WaitGroup // loop, listenLoop |
| 203 | peerFeed event.Feed |
| 204 | log log.Logger |
| 205 | |
| 206 | nodedb *enode.DB |
| 207 | localnode *enode.LocalNode |
| 208 | ntab *discover.UDPv4 |
| 209 | DiscV5 *discover.UDPv5 |
| 210 | discmix *enode.FairMix |
| 211 | dialsched *dialScheduler |
| 212 | |
| 213 | forkFilter forkid.Filter |
| 214 | |
| 215 | // This is read by the NAT port mapping loop. |
| 216 | portMappingRegister chan *portMapping |
| 217 | |
| 218 | // Channels into the run loop. |
| 219 | quit chan struct{} |
| 220 | addtrusted chan *enode.Node |
| 221 | removetrusted chan *enode.Node |
| 222 | peerOp chan peerOpFunc |
| 223 | peerOpDone chan struct{} |
| 224 | delpeer chan peerDrop |
| 225 | checkpointPostHandshake chan *conn |
| 226 | checkpointAddPeer chan *conn |
| 227 | |
| 228 | // State of run loop and listenLoop. |
| 229 | inboundHistory expHeap |
| 230 | disconnectEnodeSet map[enode.ID]struct{} |
| 231 | } |
| 232 | |
| 233 | type peerOpFunc func(map[enode.ID]*Peer) |
| 234 |
nothing calls this directly
no outgoing calls
no test coverage detected