package suricata import ( "bytes" "sync" ) // A thread-safe Buffer wrapper to enable concurrent access to log output. type buffer struct { b bytes.Buffer m sync.Mutex } func (b *buffer) Read(p []byte) (n int, err error) { b.m.Lock() defer b.m.Unlock() return b.b.Read(p) } func (b *buffer) Write(p []byte) (n int, err error) { b.m.Lock() defer b.m.Unlock() return b.b.Write(p) } func (b *buffer) String() string { b.m.Lock() defer b.m.Unlock() return b.b.String() } func (b *buffer) Reset() { b.m.Lock() defer b.m.Unlock() b.b.Reset() } func (b *buffer) Bytes() []byte { b.m.Lock() defer b.m.Unlock() return b.b.Bytes() }