func()

in pkg/mesh/app.go [101:126]


func (kr *KRun) WaitTCPReady(addr string, max time.Duration) error {
	t0 := time.Now()
	deadline := t0.Add(max)

	for {
		// if we cant connect, count as fail
		conn, err := net.DialTimeout("tcp", addr, deadline.Sub(time.Now()))
		if err != nil {
			if time.Now().After(deadline) {
				return err
			}
			time.Sleep(50 * time.Millisecond)
			if conn != nil {
				_ = conn.Close()
			}
			continue
		}
		err = conn.Close()
		if err != nil {
			log.Println("WaitTCP.Close()", err)
		}
		log.Println("Application ready", time.Since(t0), time.Since(kr.StartTime))
		return nil
	}
	return nil
}