realtime

package
v0.0.0-...-ff244ab Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2021 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EventCreate = "CREATED"
	EventUpdate = "UPDATED"
	EventDelete = "DELETED"
)

Basic data events

Variables

This section is empty.

Functions

func LogHook

func LogHook(db prefixer.Prefixer, hub Hub, parentDocType, documentID string) logrus.Hook

LogHook creates a hook that transmits logs through redis pubsub messaging.

Types

type Doc

type Doc interface {
	ID() string
	DocType() string
}

Doc is an interface for a object with DocType, ID

type DynamicSubscriber

type DynamicSubscriber struct {
	prefixer.Prefixer
	Channel MemSub
	// contains filtered or unexported fields
}

DynamicSubscriber is used to subscribe to several doctypes

func (*DynamicSubscriber) Close

func (ds *DynamicSubscriber) Close() error

Close closes the channel (async)

func (*DynamicSubscriber) Closed

func (ds *DynamicSubscriber) Closed() bool

Closed returns true if it will no longer send events in its channel

func (*DynamicSubscriber) Subscribe

func (ds *DynamicSubscriber) Subscribe(doctype string) error

Subscribe adds a listener for events on a whole doctype

func (*DynamicSubscriber) Watch

func (ds *DynamicSubscriber) Watch(doctype, id string) error

Watch adds a listener for events for a specific document (doctype+id)

type Event

type Event struct {
	Domain string `json:"domain"`
	Prefix string `json:"prefix,omitempty"`
	Verb   string `json:"verb"`
	Doc    Doc    `json:"doc"`
	OldDoc Doc    `json:"old,omitempty"`
}

Event is the basic message structure manipulated by the realtime package

func (*Event) DBPrefix

func (e *Event) DBPrefix() string

DBPrefix implements the prefixer.Prefixer interface.

func (*Event) DomainName

func (e *Event) DomainName() string

DomainName implements the prefixer.Prefixer interface.

type Hub

type Hub interface {
	// Emit is used by publishers when an event occurs
	Publish(db prefixer.Prefixer, verb string, doc Doc, oldDoc Doc)

	// Subscriber creates a DynamicSubscriber that can subscribe to several
	// doctypes. Call its Close method to Unsubscribe.
	Subscriber(prefixer.Prefixer) *DynamicSubscriber

	// SubscribeLocalAll adds a listener for all events that happened in this
	// cozy-stack process.
	SubscribeLocalAll() *DynamicSubscriber

	// GetTopic returns the topic for the given domain+doctype.
	// It creates the topic if it does not exist.
	GetTopic(db prefixer.Prefixer, doctype string) *topic
}

Hub is an object which recive events and calls appropriate listener

func GetHub

func GetHub() Hub

GetHub returns the global hub

type MemSub

type MemSub chan *Event

MemSub is a chan of events

Jump to

Keyboard shortcuts

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