buffer.go 588 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package fllcc
  2. import (
  3. "bytes"
  4. "sync"
  5. )
  6. type Buffer struct {
  7. b bytes.Buffer
  8. rw sync.RWMutex
  9. }
  10. func NewBuffer() *Buffer {
  11. return &Buffer{
  12. b: bytes.Buffer{},
  13. rw: sync.RWMutex{},
  14. }
  15. }
  16. func (b *Buffer) Read(p []byte) (n int, err error) {
  17. b.rw.RLock()
  18. defer b.rw.RUnlock()
  19. return b.b.Read(p)
  20. }
  21. func (b *Buffer) Write(p []byte) (n int, err error) {
  22. b.rw.Lock()
  23. defer b.rw.Unlock()
  24. return b.b.Write(p)
  25. }
  26. func (b *Buffer) String() string {
  27. b.rw.Lock()
  28. defer b.rw.Unlock()
  29. return b.b.String()
  30. }
  31. func (b *Buffer) Clear() {
  32. b.rw.Lock()
  33. defer b.rw.Unlock()
  34. b.b.Reset()
  35. }