rpc

package
v0.1.7 Latest Latest
Warning

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

Go to latest
Published: Jun 9, 2023 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// ErrResponseNotReceived indicates a response was not received after publishing a message.
	ErrResponseNotReceived = errors.New("response not received")
)

Functions

This section is empty.

Types

type EventHandler

type EventHandler func(from peer.ID, topic string, msg []byte)

EventHandler is used to receive topic peer events.

type MessageHandler

type MessageHandler func(from peer.ID, topic string, msg []byte) ([]byte, error)

MessageHandler is used to receive topic messages.

type PublishOption

type PublishOption func(*PublishOptions) error

PublishOption defines a Publish option.

func WithIgnoreResponse

func WithIgnoreResponse(enable bool) PublishOption

WithIgnoreResponse indicates whether or not Publish will wait for a response(s) from the receiver(s). Default: disabled.

func WithMultiResponse

func WithMultiResponse(enable bool) PublishOption

WithMultiResponse indicates whether or not Publish will wait for multiple responses before returning. Default: disabled.

func WithPubOpts

func WithPubOpts(opts ...pubsub.PubOpt) PublishOption

WithPubOpts sets native pubsub.PubOpt options.

func WithRepublishing

func WithRepublishing(enable bool) PublishOption

WithRepublishing indicates whether or not Publish will continue republishing to newly joined peers as long as the context hasn't expired or is not canceled. Default: disabled.

type PublishOptions

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

PublishOptions defines options for Publish.

type Response

type Response struct {
	// ID is the cid.Cid of the received message.
	ID string
	// From is the peer.ID of the sender.
	From peer.ID
	// Data is the message data.
	Data []byte
	// Err is an error from the sender.
	Err error
}

Response wraps a message response.

type Topic

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

Topic provides a nice interface to a libp2p pubsub topic.

func NewTopic

func NewTopic(ctx context.Context, ps *pubsub.PubSub, host peer.ID, topic string, subscribe bool) (*Topic, error)

NewTopic returns a new topic for the host.

func (*Topic) Close

func (t *Topic) Close() error

Close the topic.

func (*Topic) Publish

func (t *Topic) Publish(
	ctx context.Context,
	data []byte,
	opts ...PublishOption,
) (<-chan Response, error)

Publish data. Note that the data may arrive peers duplicated. And as a result, if WithMultiResponse is supplied, the response may be duplicated as well. See PublishOptions for option details.

func (*Topic) SetEventHandler

func (t *Topic) SetEventHandler(handler EventHandler)

SetEventHandler sets a handler func that will be called with peer events.

func (*Topic) SetMessageHandler

func (t *Topic) SetMessageHandler(handler MessageHandler)

SetMessageHandler sets a handler func that will be called with topic messages. A subscription is required for the handler to be called.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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