 Documentation
      ¶
      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.
func ExBuildChannelSubscription ¶ added in v0.8.9
func ExBuildChannelSubscription( ctx context.Context, b bus.Bus, returnIfIdle bool, channelID string, privKey crypto.PrivKey, valDisposeCallback func(), ) (BuildChannelSubscriptionValue, directive.Instance, directive.Reference, error)
ExBuildChannelSubscription executes the BuildChannelSubscription directive. Waits for the channel subscription to be built. If values are returned, returns vals, valsRef, nil Otherwise returns nil, nil, err
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.