proximitytransport

package
v2.289.1 Latest Latest
Warning

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

Go to latest
Published: Jun 8, 2021 License: Apache-2.0, MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var TransportMap sync.Map

TransportMap prevents instantiating multiple Transport

Functions

func NewTransport

func NewTransport(ctx context.Context, l *zap.Logger, driver NativeDriver) func(h host.Host, u *tptu.Upgrader) (*proximityTransport, error)

Types

type Addr

type Addr struct {
	Address string
	// contains filtered or unexported fields
}

Addr represents a network end point address.

func (*Addr) Network

func (b *Addr) Network() string

Network returns the address's network name.

func (*Addr) String

func (b *Addr) String() string

String return's the string form of the address.

type Conn

type Conn struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Conn is the equivalent of a net.Conn object. It is the result of calling the Dial or Listen functions in this package, with associated local and remote Multiaddrs.

func (*Conn) Close

func (c *Conn) Close() error

Close closes the connection. Any blocked Read or Write operations will be unblocked and return errors.

func (*Conn) LocalAddr

func (c *Conn) LocalAddr() net.Addr

LocalAddr returns the local network address.

func (*Conn) LocalMultiaddr

func (c *Conn) LocalMultiaddr() ma.Multiaddr

LocalMultiaddr returns the local Multiaddr associated with this connection.

func (*Conn) Read

func (c *Conn) Read(payload []byte) (n int, err error)

Read reads data from the connection. Timeout handled by the native driver.

func (*Conn) RemoteAddr

func (c *Conn) RemoteAddr() net.Addr

RemoteAddr returns the remote network address.

func (*Conn) RemoteMultiaddr

func (c *Conn) RemoteMultiaddr() ma.Multiaddr

RemoteMultiaddr returns the remote Multiaddr associated with this connection.

func (*Conn) SetDeadline

func (c *Conn) SetDeadline(t time.Time) error

SetDeadline does nothing

func (*Conn) SetReadDeadline

func (c *Conn) SetReadDeadline(t time.Time) error

SetReadDeadline does nothing

func (*Conn) SetWriteDeadline

func (c *Conn) SetWriteDeadline(t time.Time) error

SetWriteDeadline does nothing

func (*Conn) Write

func (c *Conn) Write(payload []byte) (n int, err error)

Write writes data to the connection. Timeout handled by the native driver.

type Listener

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

Listener is an interface closely resembling the net.Listener interface. The only real difference is that Accept() returns Conn's of the type in this package, and also exposes a Multiaddr method as opposed to a regular Addr method.

func (*Listener) Accept

func (l *Listener) Accept() (tpt.CapableConn, error)

Accept waits for and returns the next connection to the listener. Returns a Multiaddr friendly Conn.

func (*Listener) Addr

func (l *Listener) Addr() net.Addr

Addr returns the net.Listener's network address.

func (*Listener) Close

func (l *Listener) Close() error

Close closes the listener. Any blocked Accept operations will be unblocked and return errors.

func (*Listener) Multiaddr

func (l *Listener) Multiaddr() ma.Multiaddr

Multiaddr returns the listener's (local) Multiaddr.

type NativeDriver

type NativeDriver interface {
	// Start the native driver
	Start(localPID string)

	// Stop the native driver
	Stop()

	// Check if the native driver is connected to the remote peer
	DialPeer(remotePID string) bool

	// Send data to the remote peer
	SendToPeer(remotePID string, payload []byte) bool

	// Close the connection with the remote peer
	CloseConnWithPeer(remotePID string)

	// Return the multiaddress protocol code
	ProtocolCode() int

	// Return the multiaddress protocol name
	ProtocolName() string

	// Return the default multiaddress
	DefaultAddr() string
}

type NoopNativeDriver

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

func NewNoopNativeDriver

func NewNoopNativeDriver(protocolCode int, protocolName, defaultAddr string) *NoopNativeDriver

func (*NoopNativeDriver) CloseConnWithPeer

func (d *NoopNativeDriver) CloseConnWithPeer(_ string)

func (*NoopNativeDriver) DefaultAddr

func (d *NoopNativeDriver) DefaultAddr() string

func (*NoopNativeDriver) DialPeer

func (d *NoopNativeDriver) DialPeer(_ string) bool

func (*NoopNativeDriver) ProtocolCode

func (d *NoopNativeDriver) ProtocolCode() int

func (*NoopNativeDriver) ProtocolName

func (d *NoopNativeDriver) ProtocolName() string

func (*NoopNativeDriver) SendToPeer

func (d *NoopNativeDriver) SendToPeer(_ string, _ []byte) bool

func (*NoopNativeDriver) Start

func (d *NoopNativeDriver) Start(_ string)

func (*NoopNativeDriver) Stop

func (d *NoopNativeDriver) Stop()

type ProximityTransport

type ProximityTransport interface {
	HandleFoundPeer(remotePID string) bool
	HandleLostPeer(remotePID string)
	ReceiveFromPeer(remotePID string, payload []byte)
}

type RingBufferMap

type RingBufferMap struct {
	sync.Mutex
	// contains filtered or unexported fields
}

RingBufferMap is a map of string:ringBuffer(aka circular buffer) The key is a peerID.

func NewRingBufferMap

func NewRingBufferMap(logger *zap.Logger, size int) *RingBufferMap

NewRingBufferMap returns a new connMgr struct The size argument is the number of packets to save in cache.

func (*RingBufferMap) Add

func (rbm *RingBufferMap) Add(peerID string, payload []byte)

Add adds the payload into a circular cache

func (*RingBufferMap) Flush

func (rbm *RingBufferMap) Flush(peerID string) <-chan []byte

Flush puts the cache contents into a chan and clears it

Jump to

Keyboard shortcuts

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