code: func (c *Controller) notify(name string, data []byte) error {
  	c.mu.Lock()
  	defer c.mu.Unlock()
  	if !c.isActive(name) {
  		return fmt.Errorf("Notification service %s doesn't exist", name)
  	}
  	msg := NewMsg(MsgCodeNotify, name, data)
  	smsg, err := rlp.EncodeToBytes(msg)
  	if err != nil {
  		return err
  	}
  	for _, m := range c.notifiers[name].bins {
  		log.Debug("sending pss notify", "name", name, "addr", fmt.Sprintf("%x", m.address), "topic", fmt.Sprintf("%x", c.notifiers[name].topic), "data", data)
  		go func(m *sendBin) {
  			err = c.pss.SendSym(m.symKeyId, c.notifiers[name].topic, smsg)
  			if err != nil {
  				log.Warn("Failed to send notify to addr %x: %v", m.address, err)
  			}
  		}(m)
  	}
  	return nil
  }
docs: // Notify is called by a notification service provider to issue a new notification
  // It takes the name of the notification service and the data to be sent.
  // It fails if a notifier with this name does not exist or if data could not be serialized
  // Note that it does NOT fail on failure to send a message