goob

package module
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Oct 14, 2020 License: MIT Imports: 1 Imported by: 20

README

Overview

A lightweight observable lib. Go channel doesn't support unlimited buffer size, it's a pain to decide what size to use, this lib will handle it dynamically.

  • unlimited buffer size
  • one publisher to multiple subscribers
  • thread-safe
  • subscribers never block each other
  • stable event order

Examples

See examples_test.go.

Documentation

Overview

Example (Basic)
package main

import (
	"fmt"

	"github.com/ysmood/goob"
)

func main() {
	// create an observable instance
	ob := goob.New()
	defer ob.Close()

	events := ob.Subscribe()

	// publish events without blocking
	ob.Publish(1)
	ob.Publish(2)
	ob.Publish(3)

	// consume events
	for e := range events {
		fmt.Print(e)

		if e.(int) == 3 {
			break
		}
	}

}
Output:
123

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Event

type Event interface{}

Event interface

type Observable

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

Observable hub

func New

func New() *Observable

New observable instance

func (*Observable) Close added in v0.3.0

func (ob *Observable) Close()

Close subscribers

func (*Observable) Len added in v0.3.0

func (ob *Observable) Len() int

Len of the subscribers

func (*Observable) Publish

func (ob *Observable) Publish(e Event)

Publish message to the queue

func (*Observable) Subscribe

func (ob *Observable) Subscribe() Subscriber

Subscribe message

func (*Observable) Unsubscribe added in v0.3.0

func (ob *Observable) Unsubscribe(s Subscriber)

Unsubscribe from observable

type Pipe added in v0.2.6

type Pipe struct {
	Write  func(Event)
	Events <-chan Event
	Stop   func()
}

Pipe the Event via Write to Events. Events uses an internal buffer so it won't block Write. Call Stop to abort.

func NewPipe added in v0.3.0

func NewPipe() *Pipe

NewPipe instance

type Subscriber added in v0.3.0

type Subscriber <-chan Event

Subscriber type

Jump to

Keyboard shortcuts

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