Documentation
      ¶
    
    
  
    
  
    Index ¶
- Variables
 - type RingBuffer
 - func (r *RingBuffer) Bytes() (buf []byte)
 - func (r *RingBuffer) Capacity() int
 - func (r *RingBuffer) IsEmpty() bool
 - func (r *RingBuffer) IsFull() bool
 - func (r *RingBuffer) Length() int
 - func (r *RingBuffer) Peek(len int) (first []byte, end []byte)
 - func (r *RingBuffer) PeekAll() (first []byte, end []byte)
 - func (r *RingBuffer) Read(p []byte) (n int, err error)
 - func (r *RingBuffer) ReadByte() (b byte, err error)
 - func (r *RingBuffer) Reset()
 - func (r *RingBuffer) Retrieve(len int)
 - func (r *RingBuffer) RetrieveAll()
 - func (r *RingBuffer) String() string
 - func (r *RingBuffer) VirtualFlush()
 - func (r *RingBuffer) VirtualLength() int
 - func (r *RingBuffer) VirtualRead(p []byte) (n int, err error)
 - func (r *RingBuffer) VirtualRevert()
 - func (r *RingBuffer) Write(p []byte) (n int, err error)
 - func (r *RingBuffer) WriteByte(c byte) error
 - func (r *RingBuffer) WriteString(s string) (n int, err error)
 
Examples ¶
Constants ¶
This section is empty.
Variables ¶
      View Source
      
  var ErrIsEmpty = errors.New("ring buffer is empty")
    ErrIsEmpty 缓冲区为空
Functions ¶
This section is empty.
Types ¶
type RingBuffer ¶
type RingBuffer struct {
	// contains filtered or unexported fields
}
    RingBuffer 自动扩容循环缓冲区
Example ¶
rb := New(1024)
_, _ = rb.Write([]byte("abcd"))
fmt.Println(rb.Length())
fmt.Println(rb.free())
buf := make([]byte, 4)
_, _ = rb.Read(buf)
fmt.Println(string(buf))
rb.Write([]byte("1234567890"))
rb.VirtualRead(buf)
fmt.Println(string(buf))
fmt.Println(rb.Length())
fmt.Println(rb.VirtualLength())
rb.VirtualFlush()
fmt.Println(rb.Length())
fmt.Println(rb.VirtualLength())
rb.VirtualRead(buf)
fmt.Println(string(buf))
fmt.Println(rb.Length())
fmt.Println(rb.VirtualLength())
rb.VirtualRevert()
fmt.Println(rb.Length())
fmt.Println(rb.VirtualLength())
Output: 4 1020 abcd 1234 10 6 6 6 5678 6 2 6 6
func NewWithData ¶
func NewWithData(data []byte) *RingBuffer
NewWithData 特殊场景使用,RingBuffer 会持有data,不会自己申请内存去拷贝
func (*RingBuffer) Bytes ¶
func (r *RingBuffer) Bytes() (buf []byte)
Bytes 返回所有可读数据,此操作不会移动读指针,仅仅是拷贝全部数据
func (*RingBuffer) Capacity ¶
func (r *RingBuffer) Capacity() int
func (*RingBuffer) IsEmpty ¶
func (r *RingBuffer) IsEmpty() bool
func (*RingBuffer) IsFull ¶
func (r *RingBuffer) IsFull() bool
func (*RingBuffer) Length ¶
func (r *RingBuffer) Length() int
func (*RingBuffer) PeekAll ¶
func (r *RingBuffer) PeekAll() (first []byte, end []byte)
func (*RingBuffer) ReadByte ¶
func (r *RingBuffer) ReadByte() (b byte, err error)
func (*RingBuffer) Reset ¶
func (r *RingBuffer) Reset()
func (*RingBuffer) Retrieve ¶
func (r *RingBuffer) Retrieve(len int)
func (*RingBuffer) RetrieveAll ¶
func (r *RingBuffer) RetrieveAll()
func (*RingBuffer) String ¶
func (r *RingBuffer) String() string
func (*RingBuffer) VirtualFlush ¶
func (r *RingBuffer) VirtualFlush()
VirtualFlush 刷新虚读指针 VirtualXXX 系列配合使用
func (*RingBuffer) VirtualLength ¶
func (r *RingBuffer) VirtualLength() int
VirtualLength 虚拟长度,虚读后剩余可读数据长度 VirtualXXX 系列配合使用
func (*RingBuffer) VirtualRead ¶
func (r *RingBuffer) VirtualRead(p []byte) (n int, err error)
VirtualRead 虚读,不移动 read 指针,需要配合 VirtualFlush 和 VirtualRevert 使用 VirtualXXX 系列配合使用
func (*RingBuffer) VirtualRevert ¶
func (r *RingBuffer) VirtualRevert()
VirtualRevert 还原虚读指针 VirtualXXX 系列配合使用
func (*RingBuffer) WriteByte ¶
func (r *RingBuffer) WriteByte(c byte) error
func (*RingBuffer) WriteString ¶
func (r *RingBuffer) WriteString(s string) (n int, err error)
 Click to show internal directories. 
   Click to hide internal directories.