Documentation ¶
Index ¶
Constants ¶
View Source
const ( // MWC is the multi-level wildcard MWC = "#" // SWC is the single level wildcard SWC = "+" )
Variables ¶
View Source
var ( // TopicSubscribeRegexp regular expression that all subcriptions must be validated TopicSubscribeRegexp = regexp.MustCompile(`^(([^+#]*|\+)(/([^+#]*|\+))*(/#)?|#)$`) // TopicPublishRegexp regular expression that all publish to topic must be validated TopicPublishRegexp = regexp.MustCompile(`^[^#+]*$`) )
View Source
var ( // ErrInvalidArgs invalid arguments provided ErrInvalidArgs = errors.New("topics: invalid arguments") // ErrUnexpectedObjectType invalid arguments provided ErrUnexpectedObjectType = errors.New("topics: unexpected object type") // ErrUnknownProvider if provider is unknown ErrUnknownProvider = errors.New("topics: unknown provider") // ErrAlreadyExists object already exists ErrAlreadyExists = errors.New("topics: already exists") // ErrNotFound object not found ErrNotFound = errors.New("topics: not found") )
View Source
var ( // ErrMultiLevel multi-level wildcard ErrMultiLevel = errors.New("multi-level wildcard found in topic and it's not at the last level") // ErrInvalidSubscriber invalid subscriber object ErrInvalidSubscriber = errors.New("subscriber cannot be nil") // ErrInvalidWildcardPlus Wildcard character '+' must occupy entire topic level ErrInvalidWildcardPlus = errors.New("wildcard character '+' must occupy entire topic level") // ErrInvalidWildcardSharp Wildcard character '#' must occupy entire topic level ErrInvalidWildcardSharp = errors.New("wildcard character '#' must occupy entire topic level") // ErrInvalidWildcard Wildcard characters '#' and '+' must occupy entire topic level ErrInvalidWildcard = errors.New("wildcard characters '#' and '+' must occupy entire topic level") )
Functions ¶
This section is empty.
Types ¶
type MemConfig ¶
type MemConfig struct { TopicsStat systree.TopicsStat SubscriptionsStat systree.SubscriptionsStat Persist persistence.Retained OnCleanUnsubscribe func([]string) Name string MaxQosAllowed packet.QosType AllowOverlappingSubscriptions bool }
MemConfig of topics manager
type Provider ¶
type Provider interface { Subscribe(string, Subscriber, *SubscriptionParams) (packet.QosType, []*packet.Publish, error) UnSubscribe(string, Subscriber) error Publish(interface{}) error Retain(types.RetainObject) error Retained(string) ([]*packet.Publish, error) Close() error }
Provider interface
type ProviderConfig ¶
type ProviderConfig interface{}
ProviderConfig interface implemented by every backend
type Subscriber ¶
type Subscriber interface { Acquire() Release() Publish(*packet.Publish, packet.QosType, packet.SubscriptionOptions, []uint32) error Hash() uintptr ID() string }
Subscriber used inside each session as an object to provide to topic manager upon subscribe
type SubscriberInterface ¶
type SubscriberInterface interface { Publish(interface{}) error Subscribe(string, Subscriber, *SubscriptionParams) (packet.QosType, []*packet.Publish, error) UnSubscribe(string, Subscriber) error Retain(types.RetainObject) error Retained(string) ([]*packet.Publish, error) }
SubscriberInterface used by subscriber to handle messages
type Subscribers ¶
type Subscribers []Subscriber
Subscribers used by topic manager to return list of subscribers matching topic
type SubscriptionParams ¶
type SubscriptionParams struct { // Subscription id // V5.0 ONLY ID uint32 // Ops requested subscription options Ops packet.SubscriptionOptions // Granted QoS granted by topics manager Granted packet.QosType Group string }
SubscriptionParams parameters of the subscription
Click to show internal directories.
Click to hide internal directories.