events

package
v0.0.0-...-d771ed5 Latest Latest
Warning

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

Go to latest
Published: May 29, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Bus

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

Bus is a simple in-process publish/subscribe event bus.

func New

func New(logger *slog.Logger) *Bus

New creates a new Bus.

func (*Bus) Publish

func (b *Bus) Publish(ctx context.Context, e Event)

Publish sends an event to all registered handlers asynchronously.

func (*Bus) Subscribe

func (b *Bus) Subscribe(h Handler)

Subscribe registers a handler to receive all future events.

type Event

type Event struct {
	Type      Type           `json:"type"`
	Timestamp time.Time      `json:"timestamp"`
	ShowID    string         `json:"show_id,omitempty"`
	EpisodeID string         `json:"episode_id,omitempty"`
	Data      map[string]any `json:"data,omitempty"`
}

Event carries the context of something that happened.

type Handler

type Handler func(ctx context.Context, e Event)

Handler is a function that receives events.

type Type

type Type string

Type identifies what happened.

const (
	TypeShowAdded         Type = "show_added"
	TypeShowDeleted       Type = "show_deleted"
	TypeShowUpdated       Type = "show_updated"
	TypeEpisodeGrabbed    Type = "episode_grabbed"
	TypeGrabFailed        Type = "grab_failed"
	TypeGrabStalled       Type = "grab_stalled"         // stallwatcher auto-blocklisted a grab
	TypeGrabStalledGaveUp Type = "grab_stalled_gave_up" // stall retry circuit breaker hit
	TypeAutoSearchRetry   Type = "auto_search_retry"    // stallwatcher asks the scheduler to re-search
	TypeDownloadDone      Type = "download_done"
	TypeImportComplete    Type = "import_complete"
	TypeImportFailed      Type = "import_failed"
	TypeImportRetryNeeded Type = "import_retry_needed" // file-existence reconciler flipped has_file or found a completed-without-file grab
	TypeHealthIssue       Type = "health_issue"
	TypeHealthOK          Type = "health_ok"
	TypeTaskStarted       Type = "task_started"
	TypeTaskFinished      Type = "task_finished"
)

Jump to

Keyboard shortcuts

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