// New Creates a new Discoverer. func New(join *tracker.NodeStream, incoming *connection.Incoming, cfg *config.Config) (d *Discoverer) { d = &Discoverer{ cfg: cfg, incoming: incoming, connectedPeers: peer.NewPeerStreamController(), seenNodes: map[config.UUID]*peer.Peer{}, m: &sync.Mutex{}, logger: log.New(cfg.Logger(), fmt.Sprintf("%s DISCOVERER ", cfg.UUID()), 0), } //TODO replace with listenwhere join.Where(d.isNodeInteresting).Listen(d.onInterestingNode) incoming.Messages().Where(messages.Is(messages.HELLO)).Listen(d.onHello) return }