buffer

package
v0.0.0-...-012d1c6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 19, 2021 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SeekStart   = io.SeekStart
	SeekCurrent = io.SeekCurrent
	SeekEnd     = io.SeekEnd
)

Variables

View Source
var (
	ErrOverflow     = errors.New("buffer overflow")
	ErrNoEnoughData = errors.New("no enough data")
)

Functions

func Swap

func Swap(a *Buffer, b *Buffer)

Swap 交换数据

Types

type Buffer

type Buffer struct {
	// contains filtered or unexported fields
}

Buffer 使用链表的方式管理数据

func New

func New() *Buffer

New 新建Buffer

func (*Buffer) Append

func (b *Buffer) Append(data []byte)

Append 追加数据,并将游标指向末尾

func (*Buffer) AppendBuffer

func (b *Buffer) AppendBuffer(o *Buffer)

追加其他buffer

func (*Buffer) Bytes

func (b *Buffer) Bytes() []byte

func (*Buffer) Clear

func (b *Buffer) Clear()

Clear 清空所有数据

func (*Buffer) Concat

func (b *Buffer) Concat()

Concat 合并成一块内存

func (*Buffer) Discard

func (b *Buffer) Discard()

Discard 抛弃当前位置之前的所有数据

func (*Buffer) Empty

func (b *Buffer) Empty() bool

func (*Buffer) Eof

func (b *Buffer) Eof() bool

func (*Buffer) Iter

func (b *Buffer) Iter() Iterator

func (*Buffer) Len

func (b *Buffer) Len() int

Len return the total length

func (*Buffer) Mark

func (b *Buffer) Mark() int

func (*Buffer) Peek

func (b *Buffer) Peek(data []byte) (int, error)

Peek 读取数据并填充到data中,并返回真实读取的个数

func (*Buffer) Pos

func (b *Buffer) Pos() int

Pos return the current position

func (*Buffer) Prepend

func (b *Buffer) Prepend(data []byte)

Prepend 在前边添加数据,并修改游标为0

func (*Buffer) Read

func (b *Buffer) Read(data []byte) (int, error)

Read 读取数据并移动当前位置,实现io.Reader接口

func (*Buffer) ReadByte

func (b *Buffer) ReadByte() (byte, error)

ReadByte 实现接口io.ByteReader

func (*Buffer) Seek

func (b *Buffer) Seek(offset int64, whence int) (int64, error)

Seek 移动当前位置,实现io.Seeker接口

func (*Buffer) SetMark

func (b *Buffer) SetMark(v int)

func (*Buffer) Split

func (b *Buffer) Split() *Buffer

Split 从当前位置分隔成两部分

func (*Buffer) String

func (b *Buffer) String() string

String 合并并返回string

func (*Buffer) Visit

func (b *Buffer) Visit(cb func([]byte) bool)

Visit 遍历所有数据

func (*Buffer) Write

func (b *Buffer) Write(data []byte) (int, error)

Write 从当前位置写数据,数据溢出时会自动分配内存, 实现io.Writer接口 使用上尽量在外部使用Append创建好数据,Write仅仅提供了一种修改数据的能力,并不希望使用Write来分配内存

func (*Buffer) WriteAll

func (b *Buffer) WriteAll(w io.Writer) (int, error)

发送所有数据

func (*Buffer) WriteByte

func (b *Buffer) WriteByte(data byte) error

WriteByte 实现接口io.ByteWriter

type Iterator

type Iterator struct {
	// contains filtered or unexported fields
}

Iterator 迭代器,只能向前或者向后,不能随意来回迭代

func (*Iterator) Data

func (iter *Iterator) Data() []byte

返回当前数据,调用前必须已经调用过Prev或者Next确认过有数据

func (*Iterator) Next

func (iter *Iterator) Next() bool

正向迭代

func (*Iterator) Prev

func (iter *Iterator) Prev() bool

前向迭代

func (*Iterator) Remove

func (iter *Iterator) Remove()

Remove删除当前节点数据,不影响迭代器指针

type LockedBuffer

type LockedBuffer struct {
	sync.Mutex
	Buffer
}

LockedBuffer,增加Mutex,但需要外部手动加锁和释放锁

type Pool

type Pool struct {
}

type Reader

type Reader struct {
	// contains filtered or unexported fields
}

func (*Reader) Init

func (r *Reader) Init(b *Buffer)

func (*Reader) ReadLenString

func (r *Reader) ReadLenString() (string, error)

func (*Reader) ReadString

func (r *Reader) ReadString(l int) (string, error)

func (*Reader) ReadUVarint

func (r *Reader) ReadUVarint() (uint, error)

func (*Reader) ReadVarintLen

func (r *Reader) ReadVarintLen() (int, error)

type Writer

type Writer struct {
	// contains filtered or unexported fields
}

Writer 带有缓存的写Buffer

func (*Writer) Flush

func (w *Writer) Flush()

func (*Writer) Init

func (w *Writer) Init(b *Buffer, chunk int)

func (*Writer) PutByte

func (w *Writer) PutByte(b byte)

func (*Writer) PutBytes

func (w *Writer) PutBytes(d []byte)

func (*Writer) PutInt16BE

func (w *Writer) PutInt16BE(i int16)

BigEndian

func (*Writer) PutInt16LE

func (w *Writer) PutInt16LE(i int16)

LittleEndian

func (*Writer) PutInt32BE

func (w *Writer) PutInt32BE(i int32)

func (*Writer) PutInt32LE

func (w *Writer) PutInt32LE(i int32)

func (*Writer) PutInt64BE

func (w *Writer) PutInt64BE(i int64)

func (*Writer) PutInt64LE

func (w *Writer) PutInt64LE(i int64)

func (*Writer) PutLen

func (w *Writer) PutLen(i int)

func (*Writer) PutString

func (w *Writer) PutString(s string) bool

func (*Writer) PutUInt16BE

func (w *Writer) PutUInt16BE(i uint16)

func (*Writer) PutUInt16LE

func (w *Writer) PutUInt16LE(i uint16)

func (*Writer) PutUInt32BE

func (w *Writer) PutUInt32BE(i uint32)

func (*Writer) PutUInt32LE

func (w *Writer) PutUInt32LE(i uint32)

func (*Writer) PutUInt64BE

func (w *Writer) PutUInt64BE(i uint64)

func (*Writer) PutUInt64LE

func (w *Writer) PutUInt64LE(i uint64)

func (*Writer) PutUVarint

func (w *Writer) PutUVarint(u uint)

func (*Writer) PutUVarint32

func (w *Writer) PutUVarint32(u uint32)

func (*Writer) PutUVarint64

func (w *Writer) PutUVarint64(u uint64)

func (*Writer) PutVarint

func (w *Writer) PutVarint(i int)

func (*Writer) PutVarint32

func (w *Writer) PutVarint32(i int32)

func (*Writer) PutVarint64

func (w *Writer) PutVarint64(i int64)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL