Skip to content

visonX/event_center

 
 

Repository files navigation

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, ....)
...

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%