moderator

package
v0.7.177 Latest Latest
Warning

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

Go to latest
Published: May 31, 2026 License: AGPL-3.0, AGPL-3.0-or-later Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ErrModeratorInitFailed warpnet.WarpError = "failed to init moderator engine"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Engine added in v0.5.21

type Engine interface {
	Moderate(content string) (bool, string, error)
	Close()
}

type Moderator

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

Moderator now runs entirely report-driven: there is no peer-scanning loop. Every Moderate() call originates from a Report published on ReportsTopic by some member node.

func NewModerator added in v0.5.21

func NewModerator(
	ctx context.Context,
	node ModeratorNode,
	pub Publisher,
	sub ReportSubscriber,
) (*Moderator, error)

func (*Moderator) Close

func (m *Moderator) Close()

func (*Moderator) Start added in v0.5.21

func (m *Moderator) Start() error

type ModeratorNode

type ModeratorNode interface {
	Node() warpnet.P2PNode
	ID() warpnet.WarpPeerID
	NodeInfo() warpnet.NodeInfo
	GenericStream(nodeIdStr string, path stream.WarpRoute, data any) (_ []byte, err error)
}

type Publisher added in v0.5.21

type Publisher interface {
	PublishUpdateToFollowers(ownerId, dest string, body any) (err error)
}

type ReportSubscriber added in v0.7.59

type ReportSubscriber interface {
	SubscribeReports(h func(ev event.ReportEvent) error) error
}

ReportSubscriber is the slice of the moderator pubsub the Moderator needs. It hands out one ReportEvent per gossip message.

Jump to

Keyboard shortcuts

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