in server/resource/v1/common.go [213:234]
func eventHappened(waitStr string, topic *pubsub.Topic) (bool, string, error) {
d, err := time.ParseDuration(waitStr)
if err != nil || d > common.MaxWait {
return false, "", errors.New(common.MsgInvalidWait)
}
happened := true
o, err := NewObserver()
if err != nil {
openlog.Error(err.Error())
return false, "", err
}
topicName, err := pubsub.AddObserver(o, topic)
if err != nil {
return false, "", errors.New("observe once failed: " + err.Error())
}
select {
case <-time.After(d):
happened = false
case <-o.Event:
}
return happened, topicName, nil
}