zbytes.go 1.02 KB
Newer Older
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
1
2
3
4
5
6
7
package zbytes

import (
	"bytes"
	"sync"
)

Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
8
type Buffer struct {
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
9
10
11
12
	Buff *bytes.Buffer
	Mu   *sync.Mutex
}

Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
13
14
func NewBuffer() *Buffer {
	return &Buffer{
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
15
16
17
18
19
		Buff: bytes.NewBuffer(nil),
		Mu:   new(sync.Mutex),
	}
}

Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
20
func (z *Buffer) Write(p []byte) (n int, err error) {
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
21
22
	z.Mu.Lock()
	defer z.Mu.Unlock()
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
23

Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
24
25
	return z.Buff.Write(p)
}
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
26
func (z *Buffer) WriteRune(r rune) (n int, err error) {
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
27
28
	z.Mu.Lock()
	defer z.Mu.Unlock()
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
29

Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
30
31
	return z.Buff.WriteRune(r)
}
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
32
func (z *Buffer) WriteByte(c byte) error {
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
33
	z.Mu.Lock()
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
34
35
	defer z.Mu.Unlock()

Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
36
37
	return z.Buff.WriteByte(c)
}
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
38
func (z *Buffer) WriteString(s string) (n int, err error) {
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
39
40
	z.Mu.Lock()
	defer z.Mu.Unlock()
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
41

Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
42
43
44
	return z.Buff.WriteString(s)
}

Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
45
func (z *Buffer) Bytes() []byte {
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
46
47
	z.Mu.Lock()
	defer z.Mu.Unlock()
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
48

Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
49
50
51
	return z.Buff.Bytes()
}

Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
52
func (z *Buffer) String() string {
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
53
54
	z.Mu.Lock()
	defer z.Mu.Unlock()
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
55

Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
56
57
58
	return z.Buff.String()
}

Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
59
func (z *Buffer) Reset() {
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
60
61
	z.Mu.Lock()
	defer z.Mu.Unlock()
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
62

Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
63
64
	z.Buff.Reset()
}
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
65
func (z *Buffer) Len() int {
Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
66
67
	z.Mu.Lock()
	defer z.Mu.Unlock()
Vladimir Barsukov's avatar
fix    
Vladimir Barsukov committed
68

Vladimir Barsukov's avatar
zbytes  
Vladimir Barsukov committed
69
70
	return z.Buff.Len()
}