peers

package
v0.0.0-...-35b3a18 Latest Latest
Warning

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

Go to latest
Published: Nov 16, 2022 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const CiphertextTag = "AesCiphertext::"

CiphertextTag prefixes all messages that have body encrypted

View Source
const EventAppAdded = messages.TypeAppAdded

EventAppAdded is emmited, when peer wants to expose a new app

View Source
const EventAppWithdrawn = messages.TypeAppWithdrawn

EventAppWithdrawn is emmited, when peer no longer wants to expose an app

Variables

This section is empty.

Functions

func CreateMockTransportPair

func CreateMockTransportPair() (*MockTransport, *MockTransport)

CreateMockTransportPair creates two mock transports

Types

type App

type App struct {
	Name    string
	Address string
}

App is a definition of application exposed by given peer

type AppEvent

type AppEvent struct {
	Type string
	App  App
}

AppEvent is a change in app exposure status

type DefaultPeer

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

DefaultPeer implements Peer by plucing out Transport layer into another interface

func NewDefaultPeer

func NewDefaultPeer(introduceAsName string, transport Transport) (*DefaultPeer, error)

NewDefaultPeer creates PeerConnection instances

func (*DefaultPeer) AppEvents

func (o *DefaultPeer) AppEvents() chan AppEvent

AppEvents immplements Peer

func (*DefaultPeer) Close

func (o *DefaultPeer) Close() error

Close immplements Peer

func (*DefaultPeer) Frames

func (o *DefaultPeer) Frames() chan messages.Message

Frames returns messages that are used to interchange app data

func (*DefaultPeer) Name

func (o *DefaultPeer) Name() string

Name implements Peer

func (*DefaultPeer) Send

func (o *DefaultPeer) Send(msg messages.Message) error

Send immplements Peer

func (*DefaultPeer) SessionEvents

func (o *DefaultPeer) SessionEvents() chan messages.Message

SessionEvents immplements Peer

type DefaultPeerFactory

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

DefaultPeerFactory implements PeerFactory

func (*DefaultPeerFactory) Peers

func (defaultPeerFactory *DefaultPeerFactory) Peers() (chan Peer, error)

Peers implements PeerFactory

type MockPeer

type MockPeer struct {

	// AppEventsPeer can be used to force the mock to emit AppEvents
	AppEventsPeer chan AppEvent

	// MessaesFromPeer can be used to simulate, that the mock emits messages
	MessagesFromPeer chan messages.Message

	// MessagesToPeer are used to simulate sending messages to remote peer
	MessagesToPeer chan messages.Message

	// SessionEvents can be used to simulate, that the mock emits session changing events
	MessagesSessionEvents chan messages.Message
	// contains filtered or unexported fields
}

MockPeer implements Peer and can be used for unit tests

func NewMockPeer

func NewMockPeer() *MockPeer

NewMockPeer creates MockPeer instances

func (*MockPeer) AppEvents

func (wt *MockPeer) AppEvents() chan AppEvent

AppEvents implements Peer

func (*MockPeer) Close

func (wt *MockPeer) Close() error

Close implements Peer

func (*MockPeer) Frames

func (wt *MockPeer) Frames() chan messages.Message

Frames implements Peer

func (*MockPeer) Name

func (wt *MockPeer) Name() string

Name implements Peer

func (*MockPeer) Send

func (wt *MockPeer) Send(message messages.Message) error

Send implements Peer

func (*MockPeer) SessionEvents

func (wt *MockPeer) SessionEvents() chan messages.Message

SessionEvents implements Peer

type MockTransport

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

MockTransport implements Transport and can be used for unit tests

func (*MockTransport) Close

func (transport *MockTransport) Close() error

Close implements Transport

func (*MockTransport) Receive

func (transport *MockTransport) Receive() (chan messages.Message, error)

Receive implements Transport

func (*MockTransport) Send

func (transport *MockTransport) Send(message messages.Message) error

Send implements Transport

type Peer

type Peer interface {
	Name() string
	Send(messages.Message) error
	Frames() chan messages.Message
	SessionEvents() chan messages.Message
	AppEvents() chan AppEvent
}

Peer is entity connected to wormhole network, that can exchange messages with other entities

type PeerFactory

type PeerFactory interface {
	Peers() (chan Peer, error)
}

PeerFactory is responsible for creating new peers

func NewDefaultPeerFactory

func NewDefaultPeerFactory(ownName string, transportFactory TransportFactory) PeerFactory

NewDefaultPeerFactory creates PeerConnectionFactory instances

func NewMockPeerFactory

func NewMockPeerFactory(peers chan Peer) PeerFactory

NewMockPeerFactory creates mockPeerFactory instances

type Transport

type Transport interface {
	Send(messages.Message) error
	Receive() (chan messages.Message, error)
	Close() error
}

Transport is used to allow communication between the peers

func NewAesTransport

func NewAesTransport(password string, child Transport) Transport

NewAesTransport creates AesTranport instances

func NewWebsocketClientTransport

func NewWebsocketClientTransport(
	serverAddr string,
) (Transport, error)

NewWebsocketClientTransport creates new websocketTransport instances, that implement Transport over a websocket

func NewWebsocketTransport

func NewWebsocketTransport(
	connection *websocket.Conn,

) Transport

NewWebsocketTransport creates new websocketTransport instances, that implement Transport over a websocket connection

type TransportFactory

type TransportFactory interface {
	Transports() (chan Transport, error)
}

TransportFactory creates Transport instances

func NewAesTransportFactory

func NewAesTransportFactory(password string, child TransportFactory) TransportFactory

NewAesTransportFactory is a decorator over TransportFactory, that allows encryption in transit with AES

func NewWebsocketTransportFactory

func NewWebsocketTransportFactory(host, port, path string) (TransportFactory, error)

NewWebsocketTransportFactory allows creating peers, that are servers, waiting for clients to connect to them

Jump to

Keyboard shortcuts

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