pubsub: github.com/tuxychandru/pubsub Index | Files

package pubsub

import "github.com/tuxychandru/pubsub"

Package pubsub implements a simple multi-topic pub-sub library.

Topics must be strings and messages of any type can be published. A topic can have any number of subcribers and all of them receive messages published on the topic.

Index

type PubSub

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

PubSub is a collection of channels to interface with PubSub start thread.

func New

func New(capacity int) *PubSub

New creates a new PubSub and starts a goroutine for handling operations. The capacity of the channels created by Sub and SubOnce will be as specified.

func (*PubSub) Close

func (ps *PubSub) Close(topics ...string)

Close closes all channels currently subscribed to the specified topics. If a channel is subscribed to multiple topics, some of which is not specified, it is not closed.

func (*PubSub) Pub

func (ps *PubSub) Pub(msg interface{}, topics ...string)

Pub publishes the given message to all subscribers of the specified topics.

func (*PubSub) Shutdown

func (ps *PubSub) Shutdown()

Shutdown closes all subscribed channels and terminates the goroutine.

func (*PubSub) Sub

func (ps *PubSub) Sub(topics ...string) chan interface{}

Sub returns a channel on which messages published on any of the specified topics can be received.

func (*PubSub) SubOnce

func (ps *PubSub) SubOnce(topics ...string) chan interface{}

SubOnce is similar to Sub, but only the first message published, after subscription, on any of the specified topics can be received.

func (*PubSub) Unsub

func (ps *PubSub) Unsub(ch chan interface{}, topics ...string)

Unsub unsubscribes the given channel from the specified topics.

Files

pubsub.go

Updated 2013-03-21. Refresh.