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")
}
}
}