network

package
v0.12.1 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2020 License: MIT Imports: 26 Imported by: 2

Documentation

Index

Constants

View Source
const (
	// ErrInvalidRequest when received an invalid request object
	ErrInvalidRequest = errors.Error("invalid request")
	// ErrSendingTimedOut when sending times out
	ErrSendingTimedOut = errors.Error("sending timed out")
	// ErrAlreadySentDuringContext when trying to send to the same peer during
	// this context
	ErrAlreadySentDuringContext = errors.Error("already sent to peer")
)

Variables

View Source
var (
	// ErrNotFound is returned by Get() when the object was not found
	ErrNotFound = errors.New("not found")
	// ErrCannotSendToSelf is returned when trying to Send() to our own peer
	ErrCannotSendToSelf = errors.New("cannot send objects to ourself")
)

Functions

func HandleEnvelopeSubscription

func HandleEnvelopeSubscription(
	sub EnvelopeSubscription,
	handler func(*Envelope) error,
)

func ListenOnExternalPort

func ListenOnExternalPort(c *listenConfig)

func ListenOnIPV6

func ListenOnIPV6(c *listenConfig)

func ListenOnLocalIPs

func ListenOnLocalIPs(c *listenConfig)

func ListenOnPrivateIPs

func ListenOnPrivateIPs(c *listenConfig)

func WithLocalPeer

func WithLocalPeer(k localpeer.LocalPeer) func(*network)

WithLocalPeer overrides the default localpeer for the network.

Types

type DataForward

type DataForward struct {
	Metadata   object.Metadata  `nimona:"metadata:m"`
	Recipient  crypto.PublicKey `nimona:"recipient:s,omitempty"`
	Ephermeral crypto.PublicKey `nimona:"ephermeral:s,omitempty"`
	Data       []byte           `nimona:"data:d,omitempty"`
}

func (*DataForward) FromObject

func (e *DataForward) FromObject(o *object.Object) error

func (DataForward) ToObject

func (e DataForward) ToObject() *object.Object

func (*DataForward) Type added in v0.12.0

func (e *DataForward) Type() string

type Envelope

type Envelope struct {
	Sender  crypto.PublicKey
	Payload *object.Object
}

Envelope -

type EnvelopeFilter

type EnvelopeFilter func(*Envelope) bool

func FilterByNonce

func FilterByNonce(nonce string) EnvelopeFilter

func FilterByObjectHash

func FilterByObjectHash(objectHashes ...object.Hash) EnvelopeFilter

func FilterByObjectType

func FilterByObjectType(typePatterns ...string) EnvelopeFilter

func FilterBySender

func FilterBySender(keys ...crypto.PublicKey) EnvelopeFilter

type EnvelopePubSub

type EnvelopePubSub interface {
	Publish(*Envelope)
	Subscribe(...EnvelopeFilter) EnvelopeSubscription
}

EnvelopePubSub -

func NewEnvelopePubSub

func NewEnvelopePubSub() EnvelopePubSub

NewEnvelope constructs and returns a new Envelope

type EnvelopeSubscription

type EnvelopeSubscription interface {
	Next() (*Envelope, error)
	Cancel()
}

EnvelopeSubscription is returned for every subscription

type ListenOption

type ListenOption func(c *listenConfig)

type MockEnvelopeSubscription

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

func (*MockEnvelopeSubscription) AddNext

func (s *MockEnvelopeSubscription) AddNext(env *Envelope, err error)

func (*MockEnvelopeSubscription) Cancel

func (s *MockEnvelopeSubscription) Cancel()

func (*MockEnvelopeSubscription) Next

func (s *MockEnvelopeSubscription) Next() (*Envelope, error)

type Network

type Network interface {
	Subscribe(
		filters ...EnvelopeFilter,
	) EnvelopeSubscription
	Send(
		ctx context.Context,
		object *object.Object,
		recipient *peer.Peer,
	) error
	Listen(
		ctx context.Context,
		bindAddress string,
		options ...ListenOption,
	) (net.Listener, error)
	LocalPeer() localpeer.LocalPeer
}

Network interface for mocking

func New

func New(
	ctx context.Context,
	opts ...Option,
) Network

New creates a network on a given network

type Option

type Option func(*network)

Option for customizing a new Network

type OutboxesMap

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

OutboxesMap -

func NewOutboxesMap

func NewOutboxesMap() *OutboxesMap

NewOutboxesMap constructs a new SyncMap

func (*OutboxesMap) Delete

func (m *OutboxesMap) Delete(k crypto.PublicKey)

Delete -

func (*OutboxesMap) Get

func (m *OutboxesMap) Get(k crypto.PublicKey) (*outbox, bool)

Get -

func (*OutboxesMap) GetOrPut

func (m *OutboxesMap) GetOrPut(k crypto.PublicKey, v *outbox) (*outbox, bool)

GetOrPut -

func (*OutboxesMap) ListKeys

func (m *OutboxesMap) ListKeys() []crypto.PublicKey

ListKeys -

func (*OutboxesMap) ListValues

func (m *OutboxesMap) ListValues() []*outbox

ListValues -

func (*OutboxesMap) Put

func (m *OutboxesMap) Put(k crypto.PublicKey, v *outbox)

Put -

func (*OutboxesMap) Range

func (m *OutboxesMap) Range(i func(k crypto.PublicKey, v *outbox) bool)

Range -

Jump to

Keyboard shortcuts

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