holepunch

package
v0.24.0-dev Latest Latest
Warning

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

Go to latest
Published: Sep 23, 2022 License: MIT Imports: 16 Imported by: 37

Documentation

Index

Constants

View Source
const (
	DirectDialEvtT       = "DirectDial"
	ProtocolErrorEvtT    = "ProtocolError"
	StartHolePunchEvtT   = "StartHolePunch"
	EndHolePunchEvtT     = "EndHolePunch"
	HolePunchAttemptEvtT = "HolePunchAttempt"
)

Event Types

View Source
const Protocol protocol.ID = "/libp2p/dcutr"

Protocol is the libp2p protocol for Hole Punching.

View Source
const (
	ServiceName = "libp2p.holepunch"
)

Variables

View Source
var ErrClosed = errors.New("hole punching service closing")

ErrClosed is returned when the hole punching is closed

View Source
var ErrHolePunchActive = errors.New("another hole punching attempt to this peer is active")

ErrHolePunchActive is returned from DirectConnect when another hole punching attempt is currently running

View Source
var StreamTimeout = 1 * time.Minute

StreamTimeout is the timeout for the hole punch protocol stream.

Functions

This section is empty.

Types

type DirectDialEvt

type DirectDialEvt struct {
	Success      bool
	EllapsedTime time.Duration
	Error        string `json:",omitempty"`
}

Event Objects

type EndHolePunchEvt

type EndHolePunchEvt struct {
	Success      bool
	EllapsedTime time.Duration
	Error        string `json:",omitempty"`
}

type Event

type Event struct {
	Timestamp int64       // UNIX nanos
	Peer      peer.ID     // local peer ID
	Remote    peer.ID     // remote peer ID
	Type      string      // event type
	Evt       interface{} // the actual event
}

type EventTracer

type EventTracer interface {
	Trace(evt *Event)
}

type HolePunchAttemptEvt

type HolePunchAttemptEvt struct {
	Attempt int
}

type Option

type Option func(*Service) error

func WithTracer

func WithTracer(tr EventTracer) Option

WithTracer is a Service option that enables hole punching tracing

type ProtocolErrorEvt

type ProtocolErrorEvt struct {
	Error string
}

type Service

type Service struct {
	// contains filtered or unexported fields
}

The Service runs on every node that supports the DCUtR protocol.

func NewService

func NewService(h host.Host, ids identify.IDService, opts ...Option) (*Service, error)

NewService creates a new service that can be used for hole punching The Service runs on all hosts that support the DCUtR protocol, no matter if they are behind a NAT / firewall or not. The Service handles DCUtR streams (which are initiated from the node behind a NAT / Firewall once we establish a connection to them through a relay.

func (*Service) Close

func (s *Service) Close() error

Close closes the Hole Punch Service.

func (*Service) DirectConnect

func (s *Service) DirectConnect(p peer.ID) error

DirectConnect is only exposed for testing purposes. TODO: find a solution for this.

type StartHolePunchEvt

type StartHolePunchEvt struct {
	RemoteAddrs []string
	RTT         time.Duration
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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