event_center

package module
v0.0.0-...-c569fe5 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2015 License: Apache-2.0 Imports: 4 Imported by: 1

README

Event Center

A Event-Driven library for decoupling each component

EventCenter Interface
type EventCenter interface {
	Name() string
	RegisterEvent(pushMode PushMode, eventNames ...string) (err error)
	Subscribe(eventName string, subscriber *Subscriber) (err error)
	Unsubscribe(eventName string, subscriberIds ...string) (err error)
	UnsubscribeAll(eventName string) (err error)
	PushEvent(eventName string, values ...interface{})
	ListEvents() []string
}

Usage:

Create An Event Center
import (
	"github.com/gogap/event_center"
)

...

EventCenter event_center.EventCenter = event_center.NewClassicEventCenter("GoGapEventCenter")

Or you can just use the default EventCenter like as following


event_center.RegisterEvent(...)
...
...

Register Event
const (
	EVENT_CMD_STOP			= "EVENT_CMD_STOP"
	EVENT_RECEIVER_STOPPED	= "EVENT_RECEIVER_STOPPED"
)

...
EventCenter.RegisterEvent(event_center.ConcurrencyAndWaitMode,
		EVENT_CMD_STOP,
		EVENT_RECEIVER_STOPPED,
	)
...
Subscribe Event

...
stopSubscriber := event_center.NewSubscriber(func(eventName string, values ...interface{}) {
		if !isStoped {
			isStoped = true

			EventCenter.PushEvent(EVENT_RECEIVER_STOPPED, ....)
		}
	})

EventCenter.Subscribe(EVENT_CMD_STOP, stopSubscriber)
...

Push Event
...
EventCenter.PushEvent(EVENT_RECEIVER_STOPPED, ....)
...

Documentation

Index

Constants

View Source
const (
	SequencyMode           PushMode = 1
	SequencyAndWaitMode             = 2
	ConcurrencyMode                 = 3
	ConcurrencyAndWaitMode          = 4
)
View Source
const EVENT_CENTER_ERR_NS = "EVENT_CENTER"

Variables

View Source
var (
	ERR_SUBSCRIBER_NOT_EXIST               = errors.TN(EVENT_CENTER_ERR_NS, 1, "subscriber {{.id}} not exist")
	ERR_COULD_NOT_GET_ANONYMOUS_SUBSCRIBER = errors.TN(EVENT_CENTER_ERR_NS, 2, "could not get subscriber anonymous by name")
	ERR_INVALIDATE_INDEX_RANGE             = errors.TN(EVENT_CENTER_ERR_NS, 3, "invalidate index range")
	ERR_SUBSCRIBER_ID_IS_EMPTY             = errors.TN(EVENT_CENTER_ERR_NS, 4, "subscriber id is empty")
	ERR_SUBSCRIBER_HANDLER_IS_NIL          = errors.TN(EVENT_CENTER_ERR_NS, 5, "subscriber handler is nil, index: {{.index}}, name: {{.id}}")
	ERR_SUBSCRIBER_ID_GENERATE_FAILED      = errors.TN(EVENT_CENTER_ERR_NS, 6, "generate subscriber id failed, err: {{.err}}")
	ERR_SUBSCRIBER_IS_NIL                  = errors.TN(EVENT_CENTER_ERR_NS, 7, "subscriber is nil")

	ERR_EVENT_ALREADY_REGISTERED = errors.TN(EVENT_CENTER_ERR_NS, 8, "event already registered, name: {{.name}}")
	ERR_EVENT_NAME_IS_EMPTY      = errors.TN(EVENT_CENTER_ERR_NS, 9, "event name is empty")
	ERR_EVENT_NOT_EXIST          = errors.TN(EVENT_CENTER_ERR_NS, 10, "event not exist, name: {{.name}}")

	ERR_EVENT_CENTER_NAME_IS_EMPTY = errors.TN(EVENT_CENTER_ERR_NS, 11, "event center name is empty")
)

Functions

func ListEvents

func ListEvents() []string

func PushEvent

func PushEvent(eventName string, values ...interface{})

func RegisterEvent

func RegisterEvent(pushMode PushMode, eventNames ...string) (err error)

func Subscribe

func Subscribe(eventName string, subscriber *Subscriber) (err error)

func Unsubscribe

func Unsubscribe(eventName string, subscriberIds ...string) (err error)

func UnsubscribeAll

func UnsubscribeAll(eventName string) (err error)

Types

type ClassicEventCenter

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

func (*ClassicEventCenter) ListEvents

func (p *ClassicEventCenter) ListEvents() (events []string)

func (*ClassicEventCenter) Name

func (p *ClassicEventCenter) Name() string

func (*ClassicEventCenter) PushEvent

func (p *ClassicEventCenter) PushEvent(eventName string, values ...interface{})

func (*ClassicEventCenter) RegisterEvent

func (p *ClassicEventCenter) RegisterEvent(pushMode PushMode, eventNames ...string) (err error)

func (*ClassicEventCenter) Subscribe

func (p *ClassicEventCenter) Subscribe(eventName string, subscriber *Subscriber) (err error)

func (*ClassicEventCenter) Unsubscribe

func (p *ClassicEventCenter) Unsubscribe(eventName string, subscriberNames ...string) (err error)

func (*ClassicEventCenter) UnsubscribeAll

func (p *ClassicEventCenter) UnsubscribeAll(eventName string) (err error)

type EventCenter

type EventCenter interface {
	Name() string
	RegisterEvent(pushMode PushMode, eventNames ...string) (err error)
	Subscribe(eventName string, subscriber *Subscriber) (err error)
	Unsubscribe(eventName string, subscriberIds ...string) (err error)
	UnsubscribeAll(eventName string) (err error)
	PushEvent(eventName string, values ...interface{})
	ListEvents() []string
}

func NewClassicEventCenter

func NewClassicEventCenter(name string) (eventCenter EventCenter)

type PushMode

type PushMode int32

type Subscriber

type Subscriber struct {
	Handler SubscriberHandler
	Weight  int64
	// contains filtered or unexported fields
}

func NewSubscriber

func NewSubscriber(handler SubscriberHandler) *Subscriber

func (*Subscriber) Id

func (p *Subscriber) Id() string

func (*Subscriber) SetWeight

func (p *Subscriber) SetWeight(weight int64) *Subscriber

type SubscriberGroup

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

func NewSubscriberGroup

func NewSubscriberGroup(pushMode PushMode) *SubscriberGroup

func (*SubscriberGroup) AddSubscriber

func (p *SubscriberGroup) AddSubscriber(subscribers ...*Subscriber) (err error)

func (*SubscriberGroup) ClearSubscriber

func (p *SubscriberGroup) ClearSubscriber()

func (*SubscriberGroup) GetSubscriber

func (p *SubscriberGroup) GetSubscriber(subscriberIds ...string) (subscriber []*Subscriber, err error)

func (*SubscriberGroup) PushEvent

func (p *SubscriberGroup) PushEvent(eventName string, values ...interface{})

func (*SubscriberGroup) RemoveSubscriber

func (p *SubscriberGroup) RemoveSubscriber(subscriberIds ...string) (err error)

func (*SubscriberGroup) SubscriberNameList

func (p *SubscriberGroup) SubscriberNameList() (subscriberNameList []string, err error)

type SubscriberHandler

type SubscriberHandler func(eventName string, values ...interface{})

type Subscribers

type Subscribers []*Subscriber

func (Subscribers) Len

func (p Subscribers) Len() int

func (Subscribers) Less

func (p Subscribers) Less(i, j int) bool

func (Subscribers) Swap

func (p Subscribers) Swap(i, j int)

Jump to

Keyboard shortcuts

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