Documentation ¶
Overview ¶
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
Index ¶
- Constants
- Variables
- func NewMemProvider() *memTopics
- func Register(name string, provider TopicsProvider)
- func TopicInit(topicPro string)
- func Unregister(name string)
- type Manager
- func (this *Manager) AllSubInfo() (map[string][]string, error)
- func (this *Manager) Close() error
- func (this *Manager) Retain(msg *message.PublishMessage) error
- func (this *Manager) Retained(topic []byte, msgs *[]*message.PublishMessage) error
- func (this *Manager) Subscribe(topic []byte, qos byte, subscriber interface{}) (byte, error)
- func (this *Manager) Subscribers(topic []byte, qos byte, subs *[]interface{}, qoss *[]byte, svc bool, ...) error
- func (this *Manager) Unsubscribe(topic []byte, subscriber interface{}) error
- type TopicsProvider
Constants ¶
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是系统级主题的起始字符 SYS = "$" )
Variables ¶
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") )
var Default = "default"
var ( // MaxQosAllowed is the maximum QOS supported by this server MaxQosAllowed = message.QosExactlyOnce )
Functions ¶
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. NewMemProvider返回memTopics的一个新实例,该实例实现了 TopicsProvider接口。memProvider是存储主题的隐藏结构 订阅并保留内存中的消息。内容不是这样持久化的 当服务器关闭时,所有东西都将消失。小心使用。
func Register ¶
func Register(name string, provider TopicsProvider)
func Unregister ¶
func Unregister(name string)
Types ¶
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
func NewManager ¶
func (*Manager) Retained ¶
func (this *Manager) Retained(topic []byte, msgs *[]*message.PublishMessage) error
func (*Manager) Subscribers ¶
func (this *Manager) Subscribers(topic []byte, qos byte, subs *[]interface{}, qoss *[]byte, svc bool, shareName string, onlyShare bool) error
if shareName == "" && onlyShare == false ===>> 表示不需要获取任何共享主题订阅者,只需要所有非共享组的订阅者们 if shareName == "" && onlyShare == true ===>> 表示获取当前主题shareName的所有共享组每个的组的一个订阅者,不需要所有非共享组的订阅者们 if onlyShare == false && shareName != "" ===>> 获取当前主题的共享组名为shareName的订阅者一个与所有非共享组订阅者们 if onlyShare == true && shareName != "" ===>> 仅仅获取主题的共享组名为shareName的订阅者一个
func (*Manager) Unsubscribe ¶
type TopicsProvider ¶
type TopicsProvider interface { Subscribe(topic []byte, qos byte, subscriber interface{}) (byte, error) Unsubscribe(topic []byte, subscriber interface{}) error // if shareName == "" && onlyShare == false ===>> 表示不需要获取任何共享主题订阅者,只需要所有非共享组的订阅者们 // if shareName == "" && onlyShare == true ===>> 表示获取当前主题shareName的所有共享组每个的组的一个订阅者,不需要所有非共享组的订阅者们 // if onlyShare == false && shareName != "" ===>> 获取当前主题的共享组名为shareName的订阅者一个与所有非共享组订阅者们 // if onlyShare == true && shareName != "" ===>> 仅仅获取主题的共享组名为shareName的订阅者一个 Subscribers(topic []byte, qos byte, subs *[]interface{}, qoss *[]byte, svc bool, shareName string, onlyShare bool) error AllSubInfo() (map[string][]string, error) // 获取所有的共享订阅,k: 主题,v: 该主题的所有共享组 Retain(msg *message.PublishMessage) error Retained(topic []byte, msgs *[]*message.PublishMessage) error Close() error }
TopicsProvider