func connectTCP(timeout time.Duration) TransportFactory { return func(addr string, proxy *transport.ProxyConfig) (*transport.Client, error) { cfg := transport.Config{ Proxy: proxy, Timeout: timeout, } return transport.NewClient(&cfg, "tcp", addr, 0) } }
func makeClientFactory(cfg *logstashConfig, tcfg *transport.Config) mode.ClientFactory { compressLvl := cfg.CompressionLevel maxBulkSz := cfg.BulkMaxSize to := cfg.Timeout return func(host string) (mode.ProtocolClient, error) { t, err := transport.NewClient(tcfg, "tcp", host, cfg.Port) if err != nil { return nil, err } return newLumberjackClient(t, compressLvl, maxBulkSz, to, cfg.Index) } }
func makeAsyncClientFactory( cfg *logstashConfig, tcfg *transport.Config, ) modeutil.AsyncClientFactory { compressLvl := cfg.CompressionLevel maxBulkSz := cfg.BulkMaxSize queueSize := cfg.Pipelining - 1 to := cfg.Timeout return func(host string) (mode.AsyncProtocolClient, error) { t, err := transport.NewClient(tcfg, "tcp", host, cfg.Port) if err != nil { return nil, err } return newAsyncLumberjackClient(t, queueSize, compressLvl, maxBulkSz, to, cfg.Index) } }
func connectTLS(timeout time.Duration, certName string) TransportFactory { return func(addr string, proxy *transport.ProxyConfig) (*transport.Client, error) { tlsConfig, err := outputs.LoadTLSConfig(&outputs.TLSConfig{ CAs: []string{certName + ".pem"}, }) if err != nil { return nil, err } cfg := transport.Config{ Proxy: proxy, TLS: tlsConfig, Timeout: timeout, } return transport.NewClient(&cfg, "tcp", addr, 0) } }
func (r *redisOut) init(cfg *common.Config, expireTopo int) error { config := defaultConfig if err := cfg.Unpack(&config); err != nil { return err } sendRetries := config.MaxRetries maxAttempts := config.MaxRetries + 1 if sendRetries < 0 { maxAttempts = 0 } var dataType redisDataType switch config.DataType { case "", "list": dataType = redisListType case "channel": dataType = redisChannelType default: return errors.New("Bad Redis data type") } index := []byte(config.Index) if len(index) == 0 { return fmt.Errorf("missing %v", cfg.PathOf("index")) } tls, err := outputs.LoadTLSConfig(config.TLS) if err != nil { return err } transp := &transport.Config{ Timeout: config.Timeout, Proxy: &config.Proxy, TLS: tls, Stats: &transport.IOStats{ Read: statReadBytes, Write: statWriteBytes, ReadErrors: statReadErrors, WriteErrors: statWriteErrors, }, } // configure topology support r.topology.init(transp, topoConfig{ host: config.HostTopology, password: config.PasswordTopology, db: config.DbTopology, expire: time.Duration(expireTopo) * time.Second, }) // configure publisher clients clients, err := modeutil.MakeClients(cfg, func(host string) (mode.ProtocolClient, error) { t, err := transport.NewClient(transp, "tcp", host, config.Port) if err != nil { return nil, err } return newClient(t, config.Password, config.Db, index, dataType), nil }) if err != nil { return err } logp.Info("Max Retries set to: %v", sendRetries) m, err := modeutil.NewConnectionMode(clients, !config.LoadBalance, maxAttempts, defaultWaitRetry, config.Timeout, defaultMaxWaitRetry) if err != nil { return err } r.mode = m return nil }
func (r *redisOut) init(cfg *common.Config, expireTopo int) error { config := defaultConfig if err := cfg.Unpack(&config); err != nil { return err } sendRetries := config.MaxRetries maxAttempts := config.MaxRetries + 1 if sendRetries < 0 { maxAttempts = 0 } var dataType redisDataType switch config.DataType { case "", "list": dataType = redisListType case "channel": dataType = redisChannelType default: return errors.New("Bad Redis data type") } if cfg.HasField("index") && !cfg.HasField("key") { s, err := cfg.String("index", -1) if err != nil { return err } if err := cfg.SetString("key", -1, s); err != nil { return err } } if !cfg.HasField("key") { cfg.SetString("key", -1, r.beatName) } key, err := outil.BuildSelectorFromConfig(cfg, outil.Settings{ Key: "key", MultiKey: "keys", EnableSingleOnly: true, FailEmpty: true, }) if err != nil { return err } tls, err := outputs.LoadTLSConfig(config.TLS) if err != nil { return err } transp := &transport.Config{ Timeout: config.Timeout, Proxy: &config.Proxy, TLS: tls, Stats: &transport.IOStats{ Read: statReadBytes, Write: statWriteBytes, ReadErrors: statReadErrors, WriteErrors: statWriteErrors, }, } // configure topology support r.topology.init(transp, topoConfig{ host: config.HostTopology, password: config.PasswordTopology, db: config.DbTopology, expire: time.Duration(expireTopo) * time.Second, }) // configure publisher clients clients, err := modeutil.MakeClients(cfg, func(host string) (mode.ProtocolClient, error) { t, err := transport.NewClient(transp, "tcp", host, config.Port) if err != nil { return nil, err } return newClient(t, config.Password, config.Db, key, dataType), nil }) if err != nil { return err } logp.Info("Max Retries set to: %v", sendRetries) m, err := modeutil.NewConnectionMode(clients, modeutil.Settings{ Failover: !config.LoadBalance, MaxAttempts: maxAttempts, Timeout: config.Timeout, WaitRetry: defaultWaitRetry, MaxWaitRetry: defaultMaxWaitRetry, }) if err != nil { return err } r.mode = m return nil }