2019-06-05 20:40:55 +00:00
|
|
|
package event
|
|
|
|
|
|
|
|
type ipcManager struct {
|
|
|
|
manager Manager
|
|
|
|
|
|
|
|
onion string
|
|
|
|
ipcBridge IPCBridge
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewIPCEventManager returns an EvenetManager that also pipes events over and supplied IPCBridge
|
|
|
|
func NewIPCEventManager(bridge IPCBridge, onion string) Manager {
|
|
|
|
em := &ipcManager{onion: onion, ipcBridge: bridge, manager: NewEventManager()}
|
|
|
|
return em
|
|
|
|
}
|
|
|
|
|
|
|
|
// IPCEventManagerFrom returns an IPCEventManger from the supplied manager and IPCBridge
|
|
|
|
func IPCEventManagerFrom(bridge IPCBridge, onion string, manager Manager) Manager {
|
|
|
|
em := &ipcManager{onion: onion, ipcBridge: bridge, manager: manager}
|
|
|
|
return em
|
|
|
|
}
|
|
|
|
|
|
|
|
func (ipcm *ipcManager) Publish(ev Event) {
|
|
|
|
ipcm.manager.Publish(ev)
|
|
|
|
message := &IPCMessage{Dest: ipcm.onion, Message: ev}
|
|
|
|
ipcm.ipcBridge.Write(message)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (ipcm *ipcManager) PublishLocal(ev Event) {
|
|
|
|
ipcm.manager.Publish(ev)
|
|
|
|
}
|
|
|
|
|
2019-08-14 20:56:45 +00:00
|
|
|
func (ipcm *ipcManager) Subscribe(eventType Type, queue Queue) {
|
|
|
|
ipcm.manager.Subscribe(eventType, queue)
|
2019-06-05 20:40:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ipcm *ipcManager) Shutdown() {
|
|
|
|
ipcm.manager.Shutdown()
|
|
|
|
}
|