Example #1
0
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
}