func main()

in cmd/redplex/redplex.go [34:85]


func main() {
	kingpin.UsageTemplate(kingpin.DefaultUsageTemplate)

	kingpin.Parse()
	level, err := logrus.ParseLevel(*logLevel)
	if err != nil {
		logrus.WithError(err).Fatal("redplex/main: error parsing log level")
		os.Exit(1)
	}

	listener, err := net.Listen(*network, *address)
	if err != nil {
		logrus.WithError(err).Fatal("redplex/main: could not listen on the requested address")
		os.Exit(1)
	}

	logrus.SetLevel(level)

	password := os.Getenv(*passwordEnv)
	sentinelPassword := os.Getenv(*sentinelEnv)

	var dialer redplex.Dialer
	if *sentinelMaster != "" {
		dialer = redplex.NewSentinelDialer(*remoteNetwork, *sentinels, *sentinelMaster, password, sentinelPassword, *useTLS, *dialTimeout)
	} else {
		useRemote := *remote
		useRemoveEnv := *remoteEnv
		if useRemoveEnv != "" {
			useRemote = os.Getenv(useRemoveEnv)
		}
		dialer = redplex.NewDirectDialer(*remoteNetwork, useRemote, password, *useTLS, *dialTimeout)
	}

	closed := make(chan struct{})
	go func() {
		awaitInterrupt()
		close(closed)
		listener.Close()
	}()

	go startPprof()

	logrus.Debugf("redplex/main: listening on %s://%s", *network, *address)
	if err := redplex.NewServer(listener, redplex.NewPubsub(dialer, *writeTimeout)).Listen(); err != nil {
		select {
		case <-closed:
			os.Exit(0)
		default:
			logrus.WithError(err).Fatal("redplex/main: error accepting incoming connections")
		}
	}
}