prow/pjutil/pjutil.go
func PartitionActive(pjs []prowapi.ProwJob) (pending, triggered chan prowapi.ProwJob) {
	// Size channels correctly.
	pendingCount, triggeredCount := 0, 0
	for _, pj := range pjs {
		switch pj.Status.State {
		case prowapi.PendingState:
			pendingCount++
		case prowapi.TriggeredState:
			triggeredCount++
		}
	}
	pending = make(chan prowapi.ProwJob, pendingCount)
	triggered = make(chan prowapi.ProwJob, triggeredCount)

	// Partition the jobs into the two separate channels.
	for _, pj := range pjs {
		switch pj.Status.State {
		case prowapi.PendingState:
			pending <- pj
		case prowapi.TriggeredState:
			triggered <- pj
		}
	}
	close(pending)
	close(triggered)
	return pending, triggered
}
func PartitionActive(pjs []prowapi.ProwJob) (pending, triggered chan prowapi.ProwJob) {
	// Size channels correctly.
	pendingCount, triggeredCount := 0, 0
	for _, pj := range pjs {
		switch pj.Status.State {
		case prowapi.PendingState:
			pendingCount++
		case prowapi.TriggeredState:
			triggeredCount++
		}
	}
	pending = make(chan prowapi.ProwJob, pendingCount)
	triggered = make(chan prowapi.ProwJob, triggeredCount)

	// Partition the jobs into the two separate channels.
	for _, pj := range pjs {
		switch pj.Status.State {
		case prowapi.PendingState:
			pending <- pj
		case prowapi.TriggeredState:
			triggered <- pj
		}
	}
	close(pending)
	close(triggered)
	return pending, triggered
}
func PartitionActive ( pjs [ ] prowapi . ProwJob ) ( pending , triggered chan prowapi . ProwJob ) { // Size channels correctly. pendingCount , triggeredCount := 0 , 0 for _ , pj := range pjs { switch pj . Status . State { case prowapi . PendingState : pendingCount ++ case prowapi . TriggeredState : triggeredCount ++ } } pending = make ( chan prowapi . ProwJob , pendingCount ) triggered = make ( chan prowapi . ProwJob , triggeredCount ) // Partition the jobs into the two separate channels. for _ , pj := range pjs { switch pj . Status . State { case prowapi . PendingState : pending <- pj case prowapi . TriggeredState : triggered <- pj } } close ( pending ) close ( triggered ) return pending , triggered }
// PartitionActive separates the provided prowjobs into pending and triggered
// and returns them inside channels so that they can be consumed in parallel
// by different goroutines. Complete prowjobs are filtered out. Controller
// loops need to handle pending jobs first so they can conform to maximum
// concurrency requirements that different jobs may have.
PartitionActive separates the provided prowjobs into pending and triggered and returns them inside channels so that they can be consumed in parallel by different goroutines . Complete prowjobs are filtered out . Controller loops need to handle pending jobs first so they can conform to maximum concurrency requirements that different jobs may have .