Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BuildChannelSubscription ¶
type BuildChannelSubscription interface { // Directive indicates BuildChannelSubscription is a directive. directive.Directive // BuildChannelSubscriptionChannelID returns the channel ID constraint. // Cannot be empty. BuildChannelSubscriptionChannelID() string // BuildChannelSubscriptionPrivKey returns the private key to use to subscribe. // Cannot be empty. BuildChannelSubscriptionPrivKey() crypto.PrivKey }
BuildChannelSubscription is a directive to subscribe to a channel.
func NewBuildChannelSubscription ¶
func NewBuildChannelSubscription(channelID string, privKey crypto.PrivKey) BuildChannelSubscription
NewBuildChannelSubscription constructs a new BuildChannelSubscription directive.
type BuildChannelSubscriptionValue ¶
type BuildChannelSubscriptionValue = Subscription
BuildChannelSubscriptionValue is the result type for BuildChannelSubscription. The value is removed and replaced when necessary.
type Controller ¶
type Controller interface { // Controller is the controllerbus controller interface. controller.Controller // GetPubSub returns the controlled PubSub router. // This may wait for the PubSub to be ready. GetPubSub(ctx context.Context) (PubSub, error) }
Controller is a PubSub controller.
type Message ¶
type Message interface { // GetFrom returns the peer ID of the sender. GetFrom() peer.ID // GetAuthenticated indicates if the signature is valid. GetAuthenticated() bool // GetData returns the message data. GetData() []byte }
Message is a pubsub message.
type PeerLinkTuple ¶
PeerLinkTuple is the peer-id link-id tuple.
func NewPeerLinkTuple ¶
func NewPeerLinkTuple(lnk link.Link) PeerLinkTuple
NewPeerLinkTuple constructs a new peer link tuple.
type PubSub ¶
type PubSub interface { // Execute executes the PubSub routines. Execute(ctx context.Context) error // AddPeerStream adds a negotiated peer stream. // Two streams will be negotiated, one outgoing, one incoming. // The pubsub should communicate over the stream. AddPeerStream(tpl PeerLinkTuple, initiator bool, mstrm link.MountedStream) // AddSubscription adds a channel subscription, returning a subscription handle. AddSubscription(ctx context.Context, privKey crypto.PrivKey, channelID string) (Subscription, error) // Close closes the pubsub. Close() }
PubSub is an implementation of a pub-sub message router. The PubSub controller provides a common implementation for pub-sub routers. The PubSub interface declares the requirements for a router. The router is constructed with a private key which is used for communications. Each subscription also has a private key to identify the publisher/subscriber. Publishing is performed by first subscribing and then publishing to the subscription.
type PubSubHandler ¶
type PubSubHandler interface { }
PubSubHandler manages a PubSub and receives event callbacks. This is typically fulfilled by the PubSub controller.
type Subscription ¶
type Subscription interface { // GetPeerId returns the peer ID for this subscription derived from private key. GetPeerId() peer.ID // GetChannelId returns the channel id. GetChannelId() string // Publish writes to the channel using the subscription's private key. Publish(data []byte) error // AddHandler adds a callback that is called with each received message. // The callback should not block. // Returns a remove function. // The handler(s) are also removed when the subscription is released. AddHandler(cb func(m Message)) func() // Release releases the subscription handle, clearing the handlers. Release() }
Subscription is a pubsub channel subscription handle.