network

package
v0.19.0 Latest Latest
Warning

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

Go to latest
Published: Sep 8, 2021 License: MIT Imports: 29 Imported by: 2

Documentation

Index

Constants

View Source
const (
	// ErrNotFound is returned by Get() when the object was not found
	ErrNotFound = errors.Error("not found")
	// ErrCannotSendToSelf is returned when trying to Send() to our own peer
	ErrCannotSendToSelf = errors.Error("cannot send objects to ourself")
	// 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")
	// ErrWaitingForResponseTimedOut is returned when Send is waiting for a
	// response given a response id
	ErrWaitingForResponseTimedOut = errors.Error("time out waiting for response")
	// ErrUnableToUnmarshalIntoResponse is returned when the returned object
	// cannot be unmarshalled into given struct
	ErrUnableToUnmarshalIntoResponse = errors.Error("unable to unmarshal into" +
		" given response")
)
View Source
const DataForwardEnvelopeType = "nimona.io/network.DataForwardEnvelope"
View Source
const DataForwardRequestType = "nimona.io/network.DataForwardRequest"
View Source
const DataForwardResponseType = "nimona.io/network.DataForwardResponse"

Variables

This section is empty.

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 SendWithConnectionInfo added in v0.15.5

func SendWithConnectionInfo(c *peer.ConnectionInfo) func(*sendOptions)

func SendWithResponse added in v0.15.5

func SendWithResponse(
	v interface{},
	t time.Duration,
) func(*sendOptions)

func WithPeerKey added in v0.19.0

func WithPeerKey(k crypto.PrivateKey) func(*network)

WithPeerKey sets the private key for the peer, if not provided a new one will be generated.

Types

type DataForwardEnvelope added in v0.15.0

type DataForwardEnvelope struct {
	Metadata object.Metadata  `nimona:"@metadata:m,type=nimona.io/network.DataForwardEnvelope"`
	Sender   crypto.PublicKey `nimona:"sender:s"`
	Data     []byte           `nimona:"data:d"`
}

type DataForwardRequest added in v0.15.0

type DataForwardRequest struct {
	Metadata  object.Metadata  `nimona:"@metadata:m,type=nimona.io/network.DataForwardRequest"`
	RequestID string           `nimona:"requestID:s"`
	Recipient crypto.PublicKey `nimona:"recipient:s"`
	Payload   *object.Object   `nimona:"payload:m"`
}

type DataForwardResponse added in v0.15.0

type DataForwardResponse struct {
	Metadata  object.Metadata `nimona:"@metadata:m,type=nimona.io/network.DataForwardResponse"`
	RequestID string          `nimona:"requestID:s"`
	Success   bool            `nimona:"success:b"`
}

type Envelope

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

Envelope -

type EnvelopeFilter

type EnvelopeFilter func(*Envelope) bool

func FilterByObjectHash

func FilterByObjectHash(objectHashes ...tilde.Digest) EnvelopeFilter

func FilterByObjectType

func FilterByObjectType(typePatterns ...string) EnvelopeFilter

func FilterByRequestID added in v0.15.0

func FilterByRequestID(requestID string) 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 {
	Channel() <-chan *Envelope
	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
	SubscribeOnce(
		ctx context.Context,
		filters ...EnvelopeFilter,
	) (*Envelope, error)
	Send(
		ctx context.Context,
		object *object.Object,
		publicKey crypto.PublicKey,
		sendOptions ...SendOption,
	) error
	Listen(
		ctx context.Context,
		bindAddress string,
		options ...ListenOption,
	) (net.Listener, error)
	RegisterResolver(
		resolver Resolver,
	)
	GetAddresses() []string
	RegisterAddresses(...string)
	GetRelays() []*peer.ConnectionInfo
	RegisterRelays(...*peer.ConnectionInfo)
	GetPeerKey() crypto.PrivateKey
	GetConnectionInfo() *peer.ConnectionInfo
	Close() error
}

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 New

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 string)

Delete -

func (*OutboxesMap) Get

func (m *OutboxesMap) Get(k string) (*outbox, bool)

Get -

func (*OutboxesMap) GetOrPut

func (m *OutboxesMap) GetOrPut(k string, v *outbox) (*outbox, bool)

GetOrPut -

func (*OutboxesMap) ListKeys

func (m *OutboxesMap) ListKeys() []string

ListKeys -

func (*OutboxesMap) ListValues

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

ListValues -

func (*OutboxesMap) Put

func (m *OutboxesMap) Put(k string, v *outbox)

Put -

func (*OutboxesMap) Range

func (m *OutboxesMap) Range(i func(k string, v *outbox) bool)

Range -

type Resolver added in v0.15.5

type Resolver interface {
	LookupPeer(
		ctx context.Context,
		publicKey crypto.PublicKey,
	) (*peer.ConnectionInfo, error)
}

type ResolverSyncList added in v0.15.5

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

ResolverSyncList -

func (*ResolverSyncList) Delete added in v0.15.5

func (m *ResolverSyncList) Delete(k Resolver)

Delete -

func (*ResolverSyncList) Exists added in v0.15.5

func (m *ResolverSyncList) Exists(k Resolver) bool

Exists -

func (*ResolverSyncList) List added in v0.15.5

func (m *ResolverSyncList) List() []Resolver

List -

func (*ResolverSyncList) Put added in v0.15.5

func (m *ResolverSyncList) Put(k Resolver)

Put -

func (*ResolverSyncList) Range added in v0.15.5

func (m *ResolverSyncList) Range(i func(k Resolver) bool)

Range -

type SendOption added in v0.15.5

type SendOption func(*sendOptions)

SendOption for customizing a Send method

type StringSyncList added in v0.19.0

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

StringSyncList -

func (*StringSyncList) Delete added in v0.19.0

func (m *StringSyncList) Delete(k string)

Delete -

func (*StringSyncList) Exists added in v0.19.0

func (m *StringSyncList) Exists(k string) bool

Exists -

func (*StringSyncList) List added in v0.19.0

func (m *StringSyncList) List() []string

List -

func (*StringSyncList) Put added in v0.19.0

func (m *StringSyncList) Put(k string)

Put -

func (*StringSyncList) Range added in v0.19.0

func (m *StringSyncList) Range(i func(k string) bool)

Range -

Jump to

Keyboard shortcuts

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