package p2p import ( logging "gitlab.dms3.io/dms3/go-log" p2phost "gitlab.dms3.io/p2p/go-p2p-core/host" peer "gitlab.dms3.io/p2p/go-p2p-core/peer" pstore "gitlab.dms3.io/p2p/go-p2p-core/peerstore" ) var log = logging.Logger("p2p-mount") // P2P structure holds information on currently running streams/Listeners type P2P struct { ListenersLocal *Listeners ListenersP2P *Listeners Streams *StreamRegistry identity peer.ID peerHost p2phost.Host peerstore pstore.Peerstore } // New creates new P2P struct func New(identity peer.ID, peerHost p2phost.Host, peerstore pstore.Peerstore) *P2P { return &P2P{ identity: identity, peerHost: peerHost, peerstore: peerstore, ListenersLocal: newListenersLocal(), ListenersP2P: newListenersP2P(peerHost), Streams: &StreamRegistry{ Streams: map[uint64]*Stream{}, ConnManager: peerHost.ConnManager(), conns: map[peer.ID]int{}, }, } } // CheckProtoExists checks whether a proto handler is registered to // mux handler func (p2p *P2P) CheckProtoExists(proto string) bool { protos := p2p.peerHost.Mux().Protocols() for _, p := range protos { if p != proto { continue } return true } return false }