logfrog-go/processor.go

35 lines
583 B
Go

package logfrog
type LogProcessor interface {
Close() error
Ref()
Unref() error
Process(*LogRecord) *LogRecord
}
type LogProcessorFn func(*LogRecord) *LogRecord
type BaseLogProcessor struct {
LogProcessor
refs int
}
func NewBaseLogProcessor() *BaseLogProcessor {
return &BaseLogProcessor{ refs: 0 }
}
func (b *BaseLogProcessor) Close() error {
return nil
}
func (b *BaseLogProcessor) Ref() {
b.refs++
}
func (b *BaseLogProcessor) Unref() error {
b.refs--
if b.refs <= 0 {
return b.LogProcessor.Close()
}
return nil
}