Beispiel #1
0
// SendChord triggers a group of parallel tasks with a callback
func (server *Server) SendChord(chord *Chord) (*backends.ChordAsyncResult, error) {
	_, err := server.SendGroup(chord.Group)
	if err != nil {
		return nil, err
	}

	return backends.NewChordAsyncResult(
		chord.Group.Tasks,
		chord.Callback,
		server.backend,
	), nil
}
Beispiel #2
0
// SendChord triggers a group of parallel tasks with a callback
func (server *Server) SendChord(chord *Chord) (*backends.ChordAsyncResult, error) {
	// Set initial task states to PENDING
	for _, signature := range chord.Group.Tasks {
		if err := server.backend.SetStatePending(signature); err != nil {
			return nil, fmt.Errorf("Set State Pending: %v", err)
		}
	}

	for _, signature := range chord.Group.Tasks {
		if err := server.broker.Publish(signature); err != nil {
			return nil, fmt.Errorf("Publish Message: %v", err)
		}
	}

	return backends.NewChordAsyncResult(chord.Group.Tasks, chord.Callback, server.backend), nil
}