// +build ignore,OMIT

package main

import (
	"fmt"
	"math/rand"
	"time"
)

type Result string
type Search func(query string) Result

// START1 OMIT
func First(query string, replicas ...Search) Result {
	c := make(chan Result, len(replicas))
	searchReplica := func(i int) { c <- replicas[i](query) }
	for i := range replicas {
		go searchReplica(i)
	}
	return <-c
}

// STOP1 OMIT

func init() {
	rand.Seed(time.Now().UnixNano())
}

// START2 OMIT
func main() {
	start := time.Now()
	result := First("golang", // HL
		fakeSearch("replica 1"), // HL
		fakeSearch("replica 2")) // HL
	elapsed := time.Since(start)
	fmt.Println(result)
	fmt.Println(elapsed)
}

// STOP2 OMIT

func fakeSearch(kind string) Search {
	return func(query string) Result {
		time.Sleep(time.Duration(rand.Intn(100)) * time.Millisecond)
		return Result(fmt.Sprintf("%s result for %q\n", kind, query))
	}
}
