Documentation
¶
Index ¶
- Constants
- Variables
- func DisableCache() func(*hashTableGetOptions)
- func WithTimeout(d time.Duration) func(*hashTableGetOptions)
- type Channel
- type HashTable
- type HashTableOption
- type HashTablePublisher
- type HashTableStore
- type Host
- func (h *Host) AddNetwork(key []byte) (*Node, error)
- func (h *Host) Node(key []byte) (*Node, bool)
- func (h *Host) Nodes() []*Node
- func (h *Host) NotifyNetwork(ch chan *Network)
- func (h *Host) NotifyPeerNetwork(ch chan PeerNetwork)
- func (h *Host) RemoveNetwork(key []byte) error
- func (h *Host) StopNotifyingNetwork(ch chan *Network)
- func (h *Host) VNIC() *vnic.Host
- type Message
- func (m *Message) ID() (id MessageID)
- func (m *Message) Marshal(b []byte, host *vnic.Host) (n int, err error)
- func (m Message) ShallowClone() *Message
- func (m *Message) Size() int
- func (m *Message) SrcHostID() (id kademlia.ID)
- func (m *Message) Unmarshal(b []byte) (n int, err error)
- func (m *Message) Verify(hop int) bool
- func (m Message) WriteTo(w io.Writer, host *vnic.Host) (int64, error)
- type MessageHandler
- type MessageHeader
- type MessageID
- type MessageTrailer
- type MessageTrailerEntry
- type Network
- func (n *Network) AddPeer(peer *vnic.Peer, srcPort, dstPort uint16)
- func (n *Network) Broadcast(port, srcPort uint16, b []byte) error
- func (n *Network) BroadcastProto(port, srcPort uint16, msg proto.Message) error
- func (n *Network) BroadcastProtoWithFlags(port, srcPort uint16, msg proto.Message, f uint16) error
- func (n *Network) BroadcastWithFlags(port, srcPort uint16, b []byte, f uint16) error
- func (n *Network) Close()
- func (n *Network) Handler(port uint16) MessageHandler
- func (n *Network) HasPeer(id kademlia.ID) bool
- func (n *Network) Key() []byte
- func (n *Network) ReleasePort(port uint16)
- func (n *Network) RemoveHandler(port uint16)
- func (n *Network) RemovePeer(id kademlia.ID)
- func (n *Network) ReservePort() (uint16, error)
- func (n *Network) Send(id kademlia.ID, port, srcPort uint16, b []byte) error
- func (n *Network) SendProto(id kademlia.ID, port, srcPort uint16, msg proto.Message) error
- func (n *Network) SendProtoWithFlags(id kademlia.ID, port, srcPort uint16, msg proto.Message, f uint16) error
- func (n *Network) SendWithFlags(id kademlia.ID, port, srcPort uint16, b []byte, f uint16) error
- func (n *Network) SetHandler(port uint16, h MessageHandler) error
- func (n *Network) VNIC() *vnic.Host
- type Node
- type PeerExchange
- type PeerIndex
- type PeerIndexHost
- type PeerNetwork
Constants ¶
View Source
const ( Mcompress uint16 = 1 << iota Mencrypt Mbroadcast Mnorelay MstdFlags uint16 = Mencrypt )
Variables ¶
View Source
var ( ErrDuplicateNetworkKey = errors.New("duplicate network key") ErrNetworkNotFound = errors.New("network not found") ErrPeerClosed = errors.New("peer closed") ErrNetworkBindingsEmpty = errors.New("network bindings empty") ErrDiscriminatorBounds = errors.New("discriminator out of range") ErrNetworkOwnerMismatch = errors.New("init and network certificate key mismatch") ErrNetworkAuthorityMismatch = errors.New("network ca mismatch") ErrNetworkIDBounds = errors.New("network id out of range") )
errors ...
Functions ¶
Types ¶
type Channel ¶
type Channel struct {
// contains filtered or unexported fields
}
Channel ...
type HashTable ¶
type HashTable interface {
Set(ctx context.Context, key *key.Key, salt, value []byte) (*HashTablePublisher, error)
Get(ctx context.Context, key, salt []byte, options ...HashTableOption) (<-chan []byte, error)
}
HashTable ...
type HashTablePublisher ¶
type HashTablePublisher struct {
// contains filtered or unexported fields
}
HashTablePublisher ...
type HashTableStore ¶
type HashTableStore struct {
// contains filtered or unexported fields
}
HashTableStore ...
type Host ¶
type Host struct {
// contains filtered or unexported fields
}
Host ...
func (*Host) NotifyPeerNetwork ¶
func (h *Host) NotifyPeerNetwork(ch chan PeerNetwork)
NotifyPeerNetwork ...
func (*Host) StopNotifyingNetwork ¶
StopNotifyingNetwork ...
type Message ¶
type Message struct {
Header MessageHeader
Body []byte
Trailer MessageTrailer
// contains filtered or unexported fields
}
Message ...
type MessageHandler ¶
MessageHandler ...
func MessageHandlerFunc ¶
func MessageHandlerFunc(fn func(*Message) error) MessageHandler
MessageHandlerFunc ...
type MessageHeader ¶
type MessageHeader struct {
DstID kademlia.ID
DstPort uint16
SrcPort uint16
Seq uint16
Length uint16
Flags uint16
}
MessageHeader ...
type MessageTrailer ¶
type MessageTrailer struct {
Hops int
Entries []MessageTrailerEntry
}
MessageTrailer represents the messages path index 0 is the sender and subsequent indexes are hops
func (MessageTrailer) Contains ¶
func (m MessageTrailer) Contains(hostID kademlia.ID) bool
Contains ...
type MessageTrailerEntry ¶
MessageTrailerEntry represents a node in the message path
type Network ¶
type Network struct {
// contains filtered or unexported fields
}
Network ...
func (*Network) BroadcastProto ¶
BroadcastProto ...
func (*Network) BroadcastProtoWithFlags ¶
BroadcastProtoWithFlags ...
func (*Network) BroadcastWithFlags ¶
BroadcastWithFlags ...
func (*Network) SendProtoWithFlags ¶
func (n *Network) SendProtoWithFlags(id kademlia.ID, port, srcPort uint16, msg proto.Message, f uint16) error
SendProtoWithFlags ...
func (*Network) SendWithFlags ¶
SendWithFlags ...
func (*Network) SetHandler ¶
func (n *Network) SetHandler(port uint16, h MessageHandler) error
SetHandler ...
type Node ¶
type Node struct {
Host *Host
Network *Network
HashTable HashTable
PeerIndex PeerIndex
PeerExchange PeerExchange
}
Node ...
type PeerExchange ¶
type PeerIndex ¶
type PeerIndex interface {
Publish(ctx context.Context, key, salt []byte, port uint16) error
Search(ctx context.Context, key, salt []byte) (<-chan *PeerIndexHost, error)
}
PeerIndex ...
type PeerIndexHost ¶
PeerIndexHost ...
Click to show internal directories.
Click to hide internal directories.