mirror of
https://github.com/tendermint/tendermint.git
synced 2026-09-09 01:26:19 +00:00
pubsub: Refactor Event Subscription (#6634)
This commit is contained in:
+10
-8
@@ -32,7 +32,7 @@ type Eventable interface {
|
||||
//
|
||||
// FireEvent fires an event with the given name and data.
|
||||
type Fireable interface {
|
||||
FireEvent(event string, data EventData)
|
||||
FireEvent(eventValue string, data EventData)
|
||||
}
|
||||
|
||||
// EventSwitch is the interface for synchronous pubsub, where listeners
|
||||
@@ -46,7 +46,7 @@ type EventSwitch interface {
|
||||
service.Service
|
||||
Fireable
|
||||
|
||||
AddListenerForEvent(listenerID, event string, cb EventCallback) error
|
||||
AddListenerForEvent(listenerID, eventValue string, cb EventCallback) error
|
||||
RemoveListenerForEvent(event string, listenerID string)
|
||||
RemoveListener(listenerID string)
|
||||
}
|
||||
@@ -74,27 +74,29 @@ func (evsw *eventSwitch) OnStart() error {
|
||||
|
||||
func (evsw *eventSwitch) OnStop() {}
|
||||
|
||||
func (evsw *eventSwitch) AddListenerForEvent(listenerID, event string, cb EventCallback) error {
|
||||
func (evsw *eventSwitch) AddListenerForEvent(listenerID, eventValue string, cb EventCallback) error {
|
||||
// Get/Create eventCell and listener.
|
||||
evsw.mtx.Lock()
|
||||
eventCell := evsw.eventCells[event]
|
||||
|
||||
eventCell := evsw.eventCells[eventValue]
|
||||
if eventCell == nil {
|
||||
eventCell = newEventCell()
|
||||
evsw.eventCells[event] = eventCell
|
||||
evsw.eventCells[eventValue] = eventCell
|
||||
}
|
||||
|
||||
listener := evsw.listeners[listenerID]
|
||||
if listener == nil {
|
||||
listener = newEventListener(listenerID)
|
||||
evsw.listeners[listenerID] = listener
|
||||
}
|
||||
|
||||
evsw.mtx.Unlock()
|
||||
|
||||
// Add event and listener.
|
||||
if err := listener.AddEvent(event); err != nil {
|
||||
if err := listener.AddEvent(eventValue); err != nil {
|
||||
return err
|
||||
}
|
||||
eventCell.AddListener(listenerID, cb)
|
||||
|
||||
eventCell.AddListener(listenerID, cb)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user