An open API service indexing awesome lists of open source software.

https://github.com/sergeyfrolov/bsbuffer

BSBuffer: B - Blocking - Read() calls are blocking. S - Safe - Supports arbitrary amount of readers and writers. Could be unblocked and turned into SBuffer. "Smart data structures and dumb code works a lot better than the other way around."(c)
https://github.com/sergeyfrolov/bsbuffer

blocking buffer concurrent-buffer goroutine-safe safe

Last synced: about 1 month ago
JSON representation

BSBuffer: B - Blocking - Read() calls are blocking. S - Safe - Supports arbitrary amount of readers and writers. Could be unblocked and turned into SBuffer. "Smart data structures and dumb code works a lot better than the other way around."(c)

Awesome Lists containing this project

README

        

# 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)