mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			857 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			857 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package ioutils // import "github.com/docker/docker/pkg/ioutils"
 | 
						|
 | 
						|
import (
 | 
						|
	"errors"
 | 
						|
	"io"
 | 
						|
)
 | 
						|
 | 
						|
var errBufferFull = errors.New("buffer is full")
 | 
						|
 | 
						|
type fixedBuffer struct {
 | 
						|
	buf      []byte
 | 
						|
	pos      int
 | 
						|
	lastRead int
 | 
						|
}
 | 
						|
 | 
						|
func (b *fixedBuffer) Write(p []byte) (int, error) {
 | 
						|
	n := copy(b.buf[b.pos:cap(b.buf)], p)
 | 
						|
	b.pos += n
 | 
						|
 | 
						|
	if n < len(p) {
 | 
						|
		if b.pos == cap(b.buf) {
 | 
						|
			return n, errBufferFull
 | 
						|
		}
 | 
						|
		return n, io.ErrShortWrite
 | 
						|
	}
 | 
						|
	return n, nil
 | 
						|
}
 | 
						|
 | 
						|
func (b *fixedBuffer) Read(p []byte) (int, error) {
 | 
						|
	n := copy(p, b.buf[b.lastRead:b.pos])
 | 
						|
	b.lastRead += n
 | 
						|
	return n, nil
 | 
						|
}
 | 
						|
 | 
						|
func (b *fixedBuffer) Len() int {
 | 
						|
	return b.pos - b.lastRead
 | 
						|
}
 | 
						|
 | 
						|
func (b *fixedBuffer) Cap() int {
 | 
						|
	return cap(b.buf)
 | 
						|
}
 | 
						|
 | 
						|
func (b *fixedBuffer) Reset() {
 | 
						|
	b.pos = 0
 | 
						|
	b.lastRead = 0
 | 
						|
	b.buf = b.buf[:0]
 | 
						|
}
 | 
						|
 | 
						|
func (b *fixedBuffer) String() string {
 | 
						|
	return string(b.buf[b.lastRead:b.pos])
 | 
						|
}
 |