// Configure initializes this producer with values from a plugin config. func (prod *Socket) Configure(conf core.PluginConfig) error { err := prod.ProducerBase.Configure(conf) if err != nil { return err } prod.SetStopCallback(prod.close) prod.batchMaxCount = conf.GetInt("BatchMaxCount", 8192) prod.batchFlushCount = conf.GetInt("BatchFlushCount", prod.batchMaxCount/2) prod.batchFlushCount = shared.MinI(prod.batchFlushCount, prod.batchMaxCount) prod.batchTimeout = time.Duration(conf.GetInt("BatchTimeoutSec", 5)) * time.Second prod.bufferSizeByte = conf.GetInt("ConnectionBufferSizeKB", 1<<10) << 10 // 1 MB prod.acknowledge = shared.Unescape(conf.GetString("Acknowledge", "")) prod.ackTimeout = time.Duration(conf.GetInt("AckTimeoutMs", 2000)) * time.Millisecond prod.address, prod.protocol = shared.ParseAddress(conf.GetString("Address", ":5880")) if prod.protocol != "unix" { if prod.acknowledge != "" { prod.protocol = "tcp" } else { prod.protocol = "udp" } } prod.batch = core.NewMessageBatch(prod.batchMaxCount) prod.assembly = core.NewWriterAssembly(nil, prod.Drop, prod.GetFormatter()) prod.assembly.SetValidator(prod.validate) prod.assembly.SetErrorHandler(prod.onWriteError) prod.SetCheckFuseCallback(prod.tryConnect) return nil }
func newFileState(maxMessageCount int, formatter core.Formatter, drop func(core.Message), timeout time.Duration) *fileState { return &fileState{ batch: core.NewMessageBatch(maxMessageCount), bgWriter: new(sync.WaitGroup), flushTimeout: timeout, assembly: core.NewWriterAssembly(nil, drop, formatter), } }
func newSpoolFile(prod *Spooling, streamName string, source core.MessageSource) *spoolFile { spool := &spoolFile{ file: nil, batch: core.NewMessageBatch(prod.batchMaxCount), assembly: core.NewWriterAssembly(nil, prod.Drop, prod.GetFormatter()), fileCreated: time.Now(), streamName: streamName, basePath: prod.path + "/" + streamName, prod: prod, source: source, lastMetricUpdate: time.Now(), } shared.Metric.New(spoolingMetricWrite + streamName) shared.Metric.New(spoolingMetricWriteSec + streamName) shared.Metric.New(spoolingMetricRead + streamName) shared.Metric.New(spoolingMetricReadSec + streamName) go spool.read() return spool }
// Configure initializes this producer with values from a plugin config. func (prod *InfluxDB) Configure(conf core.PluginConfig) error { if err := prod.ProducerBase.Configure(conf); err != nil { return err } prod.SetStopCallback(prod.close) version := conf.GetInt("Version", 100) if conf.GetBool("UseVersion08", false) { version = 80 } switch { case version < 90: Log.Debug.Print("Using InfluxDB 0.8.x format") prod.writer = new(influxDBWriter08) case version == 90: Log.Debug.Print("Using InfluxDB 0.9.0 format") prod.writer = new(influxDBWriter09) default: Log.Debug.Print("Using InfluxDB 0.9.1+ format") prod.writer = new(influxDBWriter10) } if err := prod.writer.configure(conf, prod); err != nil { return err } prod.batchMaxCount = conf.GetInt("BatchMaxCount", 8192) prod.batchFlushCount = conf.GetInt("BatchFlushCount", prod.batchMaxCount/2) prod.batchFlushCount = shared.MinI(prod.batchFlushCount, prod.batchMaxCount) prod.batchTimeout = time.Duration(conf.GetInt("BatchTimeoutSec", 5)) * time.Second prod.batch = core.NewMessageBatch(prod.batchMaxCount) prod.assembly = core.NewWriterAssembly(prod.writer, prod.Drop, prod.GetFormatter()) return nil }