Version: v0.0.0-...-357aab5 Latest Latest

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

Go to latest
Published: Oct 30, 2015 License: Apache-2.0 Imports: 5 Imported by: 0



Package topics deals with MQTT topic names, topic filters and subscriptions. - "Topic name" is a / separated string that could contain #, * and $ - / in topic name separates the string into "topic levels" - # is a multi-level wildcard, and it must be the last character in the

topic name. It represents the parent and all children levels.

- + is a single level wildwcard. It must be the only character in the

topic level. It represents all names in the current level.

- $ is a special character that says the topic is a system level topic



View Source
const (
	// MWC is the multi-level wildcard
	MWC = "#"

	// SWC is the single level wildcard
	SWC = "+"

	// SEP is the topic level separator
	SEP = "/"

	// SYS is the starting character of the system level topics
	SYS = "$"


View Source
var (
	// ErrAuthFailure is returned when the user/pass supplied are invalid
	ErrAuthFailure = errors.New("auth: Authentication failure")

	// ErrAuthProviderNotFound is returned when the requested provider does not exist.
	// It probably hasn't been registered yet.
	ErrAuthProviderNotFound = errors.New("auth: Authentication provider not found")
View Source
var (
	// MaxQosAllowed is the maximum QOS supported by this server
	MaxQosAllowed = message.QosExactlyOnce


func NewMemProvider

func NewMemProvider() *memTopics

NewMemProvider returns an new instance of the memTopics, which is implements the TopicsProvider interface. memProvider is a hidden struct that stores the topic subscriptions and retained messages in memory. The content is not persistend so when the server goes, everything will be gone. Use with care.

func Register

func Register(name string, provider TopicsProvider)

func Unregister

func Unregister(name string)


type Manager

type Manager struct {
	// contains filtered or unexported fields

func NewManager

func NewManager(providerName string) (*Manager, error)

func (*Manager) Close

func (this *Manager) Close() error

func (*Manager) Retain

func (this *Manager) Retain(msg *message.PublishMessage) error

func (*Manager) Retained

func (this *Manager) Retained(topic []byte, msgs *[]*message.PublishMessage) error

func (*Manager) Subscribe

func (this *Manager) Subscribe(topic []byte, qos byte, subscriber interface{}) (byte, error)

func (*Manager) Subscribers

func (this *Manager) Subscribers(topic []byte, qos byte, subs *[]interface{}, qoss *[]byte) error

func (*Manager) Unsubscribe

func (this *Manager) Unsubscribe(topic []byte, subscriber interface{}) error

type TopicsProvider

type TopicsProvider interface {
	Subscribe(topic []byte, qos byte, subscriber interface{}) (byte, error)
	Unsubscribe(topic []byte, subscriber interface{}) error
	Subscribers(topic []byte, qos byte, subs *[]interface{}, qoss *[]byte) error
	Retain(msg *message.PublishMessage) error
	Retained(topic []byte, msgs *[]*message.PublishMessage) error
	Close() error


Jump to

Keyboard shortcuts

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