Documentation ¶
Index ¶
- Constants
- Variables
- func GenKeyPair() ([32]byte, [32]byte, error)
- func GenSharedSecret(selfPri, otherPub []byte) ([]byte, error)
- func MustJson(v interface{}) []byte
- type Client
- type Connection
- type Connections
- type Handler
- type HandlerFunc
- type Message
- type Peer
- type PeerMemoryRepository
- func (r *PeerMemoryRepository) Create(ctx context.Context, peer *Peer) error
- func (r *PeerMemoryRepository) Get(ctx context.Context, id string) (*Peer, error)
- func (r *PeerMemoryRepository) GetAll(ctx context.Context) ([]*Peer, error)
- func (r *PeerMemoryRepository) Remove(ctx context.Context, id string) error
- type PeerRepository
- type Server
- type UDPClient
- func (c *UDPClient) Connect(id string) error
- func (c *UDPClient) ConnectedCallback()
- func (c *UDPClient) ConnectingCallback()
- func (c *UDPClient) GetPeer(id string) (*Peer, error)
- func (c *UDPClient) GetPeerConn(id string) (Connection, error)
- func (c *UDPClient) GetSelf() *Peer
- func (c *UDPClient) GetServer() Server
- func (c *UDPClient) GetServerConn() Connection
- func (c *UDPClient) Handle(handler *Handler)
- func (c *UDPClient) OnConnected(f func(Client))
- func (c *UDPClient) OnConnecting(f func(Client))
- func (c *UDPClient) OnRegistered(f func(Client))
- func (c *UDPClient) RegisteredCallback()
- func (c *UDPClient) SetKeyReceived(id string, b bool)
- func (c *UDPClient) SetKeySent(id string, b bool)
- func (c *UDPClient) SetPeer(peer *Peer)
- func (c *UDPClient) SetPeerConn(id string, connection Connection)
- func (c *UDPClient) SetServerConn(connection Connection)
- func (c *UDPClient) Start() error
- func (c *UDPClient) Stop()
- func (c *UDPClient) WasKeyReceived(id string) bool
- func (c *UDPClient) WasKeySent(id string) bool
- type UDPConnection
- type UDPMessage
- func (r *UDPMessage) Bytes() []byte
- func (r *UDPMessage) GetAddr() net.Addr
- func (r *UDPMessage) GetError() error
- func (r *UDPMessage) GetHeader(s string) (string, error)
- func (r *UDPMessage) GetPath() string
- func (r *UDPMessage) GetPeerID() string
- func (r *UDPMessage) RawBody() []byte
- func (r *UDPMessage) SetAddr(addr net.Addr)
- type UDPServer
Constants ¶
View Source
const ( RouteGreeting = "greeting" RouteConnect = "connect" RouteRegister = "register" RouteEstablish = "establish" RouteKey = "key" RouteNotFound = "not-found" )
Variables ¶
View Source
var ( ErrHeaderNotFound = errors.New("header not found") ErrHandlerNotFound = errors.New("handler not found") )
View Source
var ( ErrPeerNotFound = errors.New("peer not found") ErrPeerConnectionNotFound = errors.New("peer connection not found") )
View Source
var ( ErrAddMustBeUDPAddr = errors.New("could not assert net.Addr to *net.UDPAddr") DefaultPeerRepository = NewPeerMemoryRepository )
View Source
var (
ErrConnectionIsNil = errors.New("connection is nil")
)
View Source
var (
ErrPeerConnectionTimeout = errors.New("peer connection timeout")
)
Functions ¶
func GenKeyPair ¶
func GenSharedSecret ¶
Types ¶
type Client ¶
type Client interface { WasKeySent(string) bool SetKeySent(string, bool) WasKeyReceived(string) bool SetKeyReceived(string, bool) GetServer() Server GetSelf() *Peer GetPeer(id string) (*Peer, error) SetPeer(*Peer) GetPeerConn(id string) (Connection, error) SetPeerConn(string, Connection) GetServerConn() Connection SetServerConn(Connection) Connect(id string) error Stop() Start() error RegisteredCallback() ConnectingCallback() ConnectedCallback() OnRegistered(func(Client)) OnConnecting(func(Client)) OnConnected(func(Client)) Handle(handler *Handler) }
type Connection ¶
type Connection interface { Send(message Message) error GetAddr() net.Addr GetSecret() ([]byte, error) SetSecret([]byte) }
func NewUDPConn ¶
func NewUDPConn(send chan Message, addr *net.UDPAddr) Connection
type Connections ¶
type Connections map[string]Connection
type Handler ¶ added in v0.0.3
type Handler struct {
// contains filtered or unexported fields
}
func NewHandler ¶ added in v0.0.3
func NewHandler() *Handler
func (*Handler) Handle ¶ added in v0.0.3
func (h *Handler) Handle(path string, handlerFunc HandlerFunc)
func (*Handler) Handlers ¶ added in v0.0.3
func (h *Handler) Handlers() map[string]HandlerFunc
type HandlerFunc ¶
type Message ¶
type Message interface { GetPath() string GetPeerID() string GetError() error GetHeader(string) (string, error) RawBody() []byte GetAddr() net.Addr SetAddr(net.Addr) Bytes() []byte }
func NewUDPErrMessage ¶
func NewUDPMessage ¶
type PeerMemoryRepository ¶ added in v0.0.4
type PeerMemoryRepository struct {
// contains filtered or unexported fields
}
func (*PeerMemoryRepository) Create ¶ added in v0.0.4
func (r *PeerMemoryRepository) Create(ctx context.Context, peer *Peer) error
type PeerRepository ¶ added in v0.0.4
type PeerRepository interface { Create(ctx context.Context, peer *Peer) error GetAll(ctx context.Context) ([]*Peer, error) Get(ctx context.Context, id string) (*Peer, error) Remove(ctx context.Context, id string) error }
func NewPeerMemoryRepository ¶ added in v0.0.4
func NewPeerMemoryRepository() PeerRepository
type Server ¶
type Server interface { Stop() Listen() CreateConnection(addr net.Addr) (Connection, error) Handle(handler *Handler) PeerRepository(repository PeerRepository) }
type UDPClient ¶
type UDPClient struct {
// contains filtered or unexported fields
}
func (*UDPClient) ConnectedCallback ¶
func (c *UDPClient) ConnectedCallback()
func (*UDPClient) ConnectingCallback ¶
func (c *UDPClient) ConnectingCallback()
func (*UDPClient) GetPeerConn ¶
func (c *UDPClient) GetPeerConn(id string) (Connection, error)
func (*UDPClient) GetServerConn ¶
func (c *UDPClient) GetServerConn() Connection
func (*UDPClient) OnConnected ¶
func (*UDPClient) OnConnecting ¶
func (*UDPClient) OnRegistered ¶
func (*UDPClient) RegisteredCallback ¶
func (c *UDPClient) RegisteredCallback()
func (*UDPClient) SetKeyReceived ¶
func (*UDPClient) SetKeySent ¶
func (*UDPClient) SetPeerConn ¶
func (c *UDPClient) SetPeerConn(id string, connection Connection)
func (*UDPClient) SetServerConn ¶
func (c *UDPClient) SetServerConn(connection Connection)
func (*UDPClient) WasKeyReceived ¶
func (*UDPClient) WasKeySent ¶
type UDPConnection ¶
type UDPConnection struct {
// contains filtered or unexported fields
}
func (*UDPConnection) GetAddr ¶
func (c *UDPConnection) GetAddr() net.Addr
func (*UDPConnection) GetSecret ¶
func (c *UDPConnection) GetSecret() ([]byte, error)
func (*UDPConnection) Send ¶
func (c *UDPConnection) Send(message Message) error
func (*UDPConnection) SetSecret ¶
func (c *UDPConnection) SetSecret(secret []byte)
type UDPMessage ¶
type UDPMessage struct { Path string `json:"path"` PeerID string `json:"peerID"` Error string `json:"error"` Headers map[string]string `json:"headers"` Body []byte `json:"body"` Addr *net.UDPAddr }
func (*UDPMessage) Bytes ¶
func (r *UDPMessage) Bytes() []byte
func (*UDPMessage) GetAddr ¶
func (r *UDPMessage) GetAddr() net.Addr
func (*UDPMessage) GetError ¶
func (r *UDPMessage) GetError() error
func (*UDPMessage) GetPath ¶
func (r *UDPMessage) GetPath() string
func (*UDPMessage) GetPeerID ¶
func (r *UDPMessage) GetPeerID() string
func (*UDPMessage) RawBody ¶
func (r *UDPMessage) RawBody() []byte
func (*UDPMessage) SetAddr ¶
func (r *UDPMessage) SetAddr(addr net.Addr)
type UDPServer ¶
type UDPServer struct {
// contains filtered or unexported fields
}
func (*UDPServer) CreateConnection ¶
func (s *UDPServer) CreateConnection(addr net.Addr) (Connection, error)
func (*UDPServer) PeerRepository ¶ added in v0.0.4
func (s *UDPServer) PeerRepository(repository PeerRepository)
Click to show internal directories.
Click to hide internal directories.