realtime

package
v0.0.0-...-4b98c26 Latest Latest
Warning

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

Go to latest
Published: Dec 7, 2021 License: AGPL-3.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

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

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) Unsubscribe

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

Unsubscribe removes a listener for events on a whole doctype

func (*DynamicSubscriber) Unwatch

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

Unwatch removes a listener for events for a specific document (doctype+id)

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 JSONDoc

type JSONDoc struct {
	M    map[string]interface{}
	Type string
}

JSONDoc is a map representing a simple json object that implements the couchdb.Doc interface.

Note: we can't use the couchdb.JSONDoc as the couchdb package imports the realtime package, and it would create an import loop. And we cannot move the JSONDoc from couchdb here, as some of its methods use other functions from the couchdb package.

func (JSONDoc) DocType

func (j JSONDoc) DocType() string

DocType returns the DocType of the document

func (JSONDoc) ID

func (j JSONDoc) ID() string

ID returns the ID of the document

func (*JSONDoc) MarshalJSON

func (j *JSONDoc) MarshalJSON() ([]byte, error)

MarshalJSON is used for marshalling the document to JSON, with the doctype as _type.

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