# bsbuffer `import "github.com/SergeyFrolov/bsbuffer"` * [Overview](#pkg-overview) * [Imported Packages](#pkg-imports) * [Index](#pkg-index) ## Overview ## Imported Packages No packages beyond the Go standard library are imported. ## Index * [type BSBuffer](#BSBuffer) * [func NewBSBuffer() \*BSBuffer](#NewBSBuffer) * [func (b \*BSBuffer) Read(p []byte) (n int, err error)](#BSBuffer.Read) * [func (b \*BSBuffer) Unblock()](#BSBuffer.Unblock) * [func (b \*BSBuffer) Write(p []byte) (n int, err error)](#BSBuffer.Write) #### Package files [bsbuffer.go](./bsbuffer.go) ## type [BSBuffer](./bsbuffer.go#L17-L29) ``` go type BSBuffer struct { sync.Mutex // contains filtered or unexported fields } ``` BSBuffer: B - Blocking - Read() calls are blocking. S - Safe - Supports arbitrary amount of readers and writers. Could be unblocked and turned into SBuffer. ### func [NewBSBuffer](./bsbuffer.go#L32) ``` go func NewBSBuffer() *BSBuffer ``` Creates new BSBuffer ### func (\*BSBuffer) [Read](./bsbuffer.go#L63) ``` go func (b *BSBuffer) Read(p []byte) (n int, err error) ``` Reads data from the BSBuffer, blocking until a writer arrives or the BSBuffer is unblocked. If the write end is closed with an error, that error is returned as err; otherwise err is EOF. Supports multiple concurrent goroutines and p is valid forever. ### func (\*BSBuffer) [Unblock](./bsbuffer.go#L108) ``` go func (b *BSBuffer) Unblock() ``` Turns BSBuffer into SBuffer: Read() is no longer blocking, but still safe. Unblock() is safe to call multiple times. ### func (\*BSBuffer) [Write](./bsbuffer.go#L85) ``` go func (b *BSBuffer) Write(p []byte) (n int, err error) ``` Non-blocking write appends the contents of p to the buffer, growing the buffer as needed. The return value n is the length of p; err is always nil. If the buffer becomes too large, Write will panic with ErrTooLarge. Supports multiple concurrent goroutines and p is safe for reuse right away. - - - Generated by [godoc2ghmd](https://github.com/GandalfUK/godoc2ghmd)