// PushHandler adds a new ibm handler to our list. This is usually triggered // when an external entity (like Electron) connects to the service, and we can // safely send Gregor information to it func (g *gregorHandler) PushHandler(handler libkb.GregorInBandMessageHandler) { g.Lock() defer g.Unlock() g.G().Log.Debug("pushing inband handler %s to position %d", handler.Name(), len(g.ibmHandlers)) g.ibmHandlers = append(g.ibmHandlers, handler) // Only try replaying if we are logged in, it's possible that a handler can // attach before that is true (like if we start the service logged out and // Electron connects) if g.IsConnected() { if _, err := g.replayInBandMessages(context.TODO(), gregor1.IncomingClient{Cli: g.cli}, time.Time{}, handler); err != nil { g.Errorf("replayInBandMessages on PushHandler failed: %s", err) } } }