p2p

package
v0.0.0-...-a5500e3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 27, 2023 License: Apache-2.0, MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Listener

type Listener interface {
	Protocol() protocol.ID
	ListenAddress() ma.Multiaddr
	TargetAddress() ma.Multiaddr
	// contains filtered or unexported methods
}

Listener listens for connections and proxies them to a target

type Listeners

type Listeners struct {
	sync.RWMutex

	Listeners map[string]Listener
}

Listeners manages a group of Listener implementations, checking for conflicts and optionally dispatching connections

func (*Listeners) Close

func (r *Listeners) Close(matchFunc func(listener Listener) bool) int

func (*Listeners) Register

func (r *Listeners) Register(l Listener) error

Register registers listenerInfo into this registry and starts it

type P2P

type P2P struct {
	ListenersLocal *Listeners
	ListenersP2P   *Listeners
	Streams        *StreamRegistry
	// contains filtered or unexported fields
}

P2P structure holds information on currently running streams/Listeners

func New

func New(identity peer.ID, peerHost p2phost.Host, peerstore pstore.Peerstore) *P2P

New creates new P2P struct

func (*P2P) CheckProtoExists

func (p2p *P2P) CheckProtoExists(proto string) bool

CheckProtoExists checks whether a proto handler is registered to mux handler

func (*P2P) ForwardLocal

func (p2p *P2P) ForwardLocal(ctx context.Context, peer peer.ID, proto protocol.ID, bindAddr ma.Multiaddr) (Listener, error)

ForwardLocal creates new P2P stream to a remote listener

func (*P2P) ForwardRemote

func (p2p *P2P) ForwardRemote(ctx context.Context, proto protocol.ID, addr ma.Multiaddr, reportRemote bool) (Listener, error)

ForwardRemote creates new p2p listener

type Stream

type Stream struct {
	Protocol protocol.ID

	OriginAddr ma.Multiaddr
	TargetAddr ma.Multiaddr

	Local  manet.Conn
	Remote net.Stream

	Registry *StreamRegistry
	// contains filtered or unexported fields
}

Stream holds information on active incoming and outgoing p2p streams.

type StreamRegistry

type StreamRegistry struct {
	sync.Mutex

	Streams map[uint64]*Stream // map of stream id to *Stream

	ifconnmgr.ConnManager
	// contains filtered or unexported fields
}

StreamRegistry is a collection of active incoming and outgoing proto app streams.

func (*StreamRegistry) Close

func (r *StreamRegistry) Close(s *Stream)

Close stream endpoints and deregister it

func (*StreamRegistry) Deregister

func (r *StreamRegistry) Deregister(streamID uint64)

Deregister deregisters stream from the registry

func (*StreamRegistry) GetStreamRemotePeerID

func (r *StreamRegistry) GetStreamRemotePeerID(addr string) (peer.ID, bool)

GetStreamRemotePeerID looks up the remote's peer ID based on local open address Note `addr` is `RemoteAddr` from handler's context

func (*StreamRegistry) Register

func (r *StreamRegistry) Register(streamInfo *Stream)

Register registers a stream to the registry

func (*StreamRegistry) Reset

func (r *StreamRegistry) Reset(s *Stream)

Reset closes stream endpoints and deregisters it

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL