msgbus

package
v0.0.0-...-e70b4cf Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2022 License: Apache-2.0 Imports: 2 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DefaultSubscriber

type DefaultSubscriber struct{}

func (DefaultSubscriber) OnMessage

func (DefaultSubscriber) OnMessage(*Message)

func (DefaultSubscriber) OnQuit

func (DefaultSubscriber) OnQuit()

type Message

type Message struct {
	Topic   Topic
	Payload interface{}
}

type MessageBus

type MessageBus interface {
	// A subscriber register on s specific topic.
	// When a message on this topic is published, the subscriber's OnMessage() is called.
	Register(topic Topic, sub Subscriber)
	// UnRegister unregister the subscriber from message bus.
	UnRegister(topic Topic, sub Subscriber)
	// Used to publish a message on this message bus to notify subscribers.
	Publish(topic Topic, payload interface{})
	// Used to publish a message on this message bus to notify subscribers.
	// Safe mode, make sure the subscriber's OnMessage() is called with the order of a message on this topic is published.
	PublishSafe(topic Topic, payload interface{})
	// Used to publish a message on this message bus to notify subscribers.
	// Sync mod, make sure all messages  are completed sequentially.
	PublishSync(topic Topic, payload interface{})
	// Close the message bus, all publishes are ignored.
	Close()
}

MessageBus provides a pub-sub interface for cross-module communication

func NewMessageBus

func NewMessageBus() MessageBus

type Subscriber

type Subscriber interface {
	// When a message with topic A is published on the message bus,
	// all the subscribers's OnMessage() methods of topic A are called.
	OnMessage(*Message)

	// When the message bus is shutting down,
	OnQuit()
}

Subscriber should implement these methods,

type Topic

type Topic int
const (
	Invalid Topic = iota
	ProposedBlock
	VerifyBlock
	VerifyResult
	CommitBlock
	ProposeState
	TxPoolSignal
	BlockInfo
	ContractEventInfo

	// For Net Service
	SendConsensusMsg
	RecvConsensusMsg
	SendSyncBlockMsg
	RecvSyncBlockMsg
	SendTxPoolMsg
	RecvTxPoolMsg

	BuildProposal

	// The following are contractual events topics
	// ChainConfig BlockVerifier Blockchain net cert_ac pk_ac pwk_ac
	ChainConfig
	// net cert_ac
	CertManageCertsDelete
	CertManageCertsFreeze
	CertManageCertsUnfreeze
	CertManageCertsRevoke
	CertManageCertsAliasUpdate
	CertManageCertsAliasDelete
	// net pk_ac
	PubkeyManageAdd
	PubkeyManageDelete
)

func (Topic) String

func (i Topic) String() string

Jump to

Keyboard shortcuts

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