func (manager Manager) MakeTeammateAvailable(teammate *model.Teammate) bool { if !teammate.MakeAvailable() { return false } manager.busManager.PublishEvent(event.TeammateAvailable, teammate.Identity, []interface{}{}) if task := FindTaskForTeammate(manager.store, teammate); task != nil { // for now we just try offering this task: if it doesn't work we give up if !task.Offer(teammate.Uid()) { return true } if teammate.OfferTask(task.Uid()) { manager.busManager.PublishEvent(event.OfferTask, teammate.Identity, []interface{}{teammate.Uid(), task.Uid()}) } else { task.Requeue() } } return true }