|
|
|
@ -94,6 +94,7 @@ func NewProtocolEngine(identity primitives.Identity, privateKey ed25519.PrivateK
|
|
|
|
|
engine.eventManager = eventManager
|
|
|
|
|
|
|
|
|
|
engine.eventManager.Subscribe(event.ProtocolEngineStartListen, engine.queue)
|
|
|
|
|
engine.eventManager.Subscribe(event.ProtocolEngineShutdown, engine.queue)
|
|
|
|
|
engine.eventManager.Subscribe(event.PeerRequest, engine.queue)
|
|
|
|
|
engine.eventManager.Subscribe(event.RetryPeerRequest, engine.queue)
|
|
|
|
|
engine.eventManager.Subscribe(event.InvitePeerToGroup, engine.queue)
|
|
|
|
@ -137,6 +138,10 @@ func (e *engine) EventManager() event.Manager {
|
|
|
|
|
func (e *engine) eventHandler() {
|
|
|
|
|
for {
|
|
|
|
|
ev := e.queue.Next()
|
|
|
|
|
// optimistic shutdown...
|
|
|
|
|
if e.shuttingDown {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
switch ev.EventType {
|
|
|
|
|
case event.StatusRequest:
|
|
|
|
|
e.eventManager.Publish(event.Event{EventType: event.ProtocolEngineStatus, EventID: ev.EventID})
|
|
|
|
@ -248,6 +253,8 @@ func (e *engine) eventHandler() {
|
|
|
|
|
e.eventManager.Publish(event.NewEvent(event.SendMessageToPeerError, map[event.Field]string{event.RemotePeer: ev.Data[event.RemotePeer], event.EventID: ev.EventID, event.Error: err.Error()}))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
case event.ProtocolEngineShutdown:
|
|
|
|
|
return
|
|
|
|
|
default:
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
@ -297,8 +304,10 @@ func (e *engine) listenFn() {
|
|
|
|
|
|
|
|
|
|
// Shutdown tears down the eventHandler goroutine
|
|
|
|
|
func (e *engine) Shutdown() {
|
|
|
|
|
e.shuttingDown = true
|
|
|
|
|
// don't accept any more events...
|
|
|
|
|
e.queue.Publish(event.NewEvent(event.ProtocolEngineShutdown, map[event.Field]string{}))
|
|
|
|
|
e.service.Shutdown()
|
|
|
|
|
e.shuttingDown = true
|
|
|
|
|
|
|
|
|
|
e.ephemeralServicesLock.Lock()
|
|
|
|
|
defer e.ephemeralServicesLock.Unlock()
|
|
|
|
|