Versions in this module Expand all Collapse all v0 v0.14.1 Nov 13, 2022 Changes in this version + const BoltDefaultCleanupFrequency + const DefaultTopicSelectorStoreLRUMaxEntriesPerShard + const DefaultTopicSelectorStoreLRUShardCount + const EarliestLastEventID + const TopicSelectorStoreRistrettoCacheMaxCost + const TopicSelectorStoreRistrettoDefaultCacheNumCounters + var ErrClosedTransport = errors.New("hub: read/write on closed Transport") + var ErrInvalidAuthorizationHeader = errors.New(`invalid "Authorization" HTTP header`) + var ErrInvalidAuthorizationQuery = errors.New(`invalid "authorization" Query parameter`) + var ErrInvalidConfig = errors.New("invalid config") + var ErrInvalidJWT = errors.New("invalid JWT") + var ErrNoOrigin = errors.New(...) + var ErrOriginNotAllowed = errors.New("origin not allowed to post updates") + var ErrPublicKey = errors.New("public key error") + var ErrUnexpectedSigningMethod = errors.New("unexpected signing method") + var ErrUnsupportedProtocolVersion = errors.New("compatibility mode only supports protocol version 7") + func AssignUUID(u *Update) + func InitConfig(v *viper.Viper) + func RegisterTransportFactory(scheme string, factory TransportFactory) + func SetConfigDefaults(v *viper.Viper) + func SetFlags(fs *pflag.FlagSet, v *viper.Viper) + func Start() + func ValidateConfig(v *viper.Viper) error + type BoltTransport struct + func (t *BoltTransport) AddSubscriber(s *Subscriber) error + func (t *BoltTransport) Close() (err error) + func (t *BoltTransport) Dispatch(update *Update) error + func (t *BoltTransport) GetSubscribers() (string, []*Subscriber, error) + func (t *BoltTransport) RemoveSubscriber(s *Subscriber) error + type CheckedEntry = zapcore.CheckedEntry + type Event struct + Data string + ID string + Retry uint64 + Type string + func (e *Event) String() string + type Hub struct + func NewHub(options ...Option) (*Hub, error) + func NewHubFromViper(v *viper.Viper) (*Hub, error) + func (h *Hub) Demo(w http.ResponseWriter, r *http.Request) + func (h *Hub) PublishHandler(w http.ResponseWriter, r *http.Request) + func (h *Hub) Serve() + func (h *Hub) ServeHTTP(w http.ResponseWriter, r *http.Request) + func (h *Hub) Stop() error + func (h *Hub) SubscribeHandler(w http.ResponseWriter, r *http.Request) + func (h *Hub) SubscriptionHandler(w http.ResponseWriter, r *http.Request) + func (h *Hub) SubscriptionsHandler(w http.ResponseWriter, r *http.Request) + type Level = zapcore.Level + type LocalTransport struct + func (t *LocalTransport) AddSubscriber(s *Subscriber) error + func (t *LocalTransport) Close() (err error) + func (t *LocalTransport) Dispatch(update *Update) error + func (t *LocalTransport) GetSubscribers() (string, []*Subscriber, error) + func (t *LocalTransport) RemoveSubscriber(s *Subscriber) error + type LogField = zapcore.Field + type Logger interface + Check func(Level, string) *CheckedEntry + Error func(msg string, fields ...LogField) + Info func(msg string, fields ...LogField) + type Metrics interface + SubscriberConnected func(s *Subscriber) + SubscriberDisconnected func(s *Subscriber) + UpdatePublished func(u *Update) + type NopMetrics struct + func (NopMetrics) SubscriberConnected(s *Subscriber) + func (NopMetrics) SubscriberDisconnected(s *Subscriber) + func (NopMetrics) UpdatePublished(s *Update) + type Option func(h *opt) error + func WithAllowedHosts(hosts []string) Option + func WithAnonymous() Option + func WithCORSOrigins(origins []string) Option + func WithCookieName(cookieName string) Option + func WithDebug() Option + func WithDemo() Option + func WithDispatchTimeout(timeout time.Duration) Option + func WithHeartbeat(interval time.Duration) Option + func WithLogger(logger Logger) Option + func WithMetrics(m Metrics) Option + func WithProtocolVersionCompatibility(protocolVersionCompatibility int) Option + func WithPublishOrigins(origins []string) Option + func WithPublisherJWT(key []byte, alg string) Option + func WithSubscriberJWT(key []byte, alg string) Option + func WithSubscriptions() Option + func WithTopicSelectorStore(tss *TopicSelectorStore) Option + func WithTransport(t Transport) Option + func WithUI() Option + func WithWriteTimeout(timeout time.Duration) Option + type PrometheusMetrics struct + func NewPrometheusMetrics(registry prometheus.Registerer) *PrometheusMetrics + func (m *PrometheusMetrics) Register(r *mux.Router) + func (m *PrometheusMetrics) SubscriberConnected(s *Subscriber) + func (m *PrometheusMetrics) SubscriberDisconnected(s *Subscriber) + func (m *PrometheusMetrics) UpdatePublished(u *Update) + type Subscriber struct + AllowedPrivateRegexps []*regexp.Regexp + AllowedPrivateTopics []string + Claims *claims + Debug bool + EscapedID string + EscapedTopics []string + ID string + RemoteAddr string + RequestLastEventID string + SubscribedTopicRegexps []*regexp.Regexp + SubscribedTopics []string + func NewSubscriber(lastEventID string, logger Logger) *Subscriber + func (s *Subscriber) Disconnect() + func (s *Subscriber) Dispatch(u *Update, fromHistory bool) bool + func (s *Subscriber) HistoryDispatched(responseLastEventID string) + func (s *Subscriber) MarshalLogObject(enc zapcore.ObjectEncoder) error + func (s *Subscriber) Match(u *Update) bool + func (s *Subscriber) MatchTopics(topics []string, private bool) bool + func (s *Subscriber) Ready() int + func (s *Subscriber) Receive() <-chan *Update + func (s *Subscriber) SetTopics(subscribedTopics, allowedPrivateTopics []string) + type SubscriberList struct + func NewSubscriberList(size int) *SubscriberList + func (sl *SubscriberList) Add(s *Subscriber) + func (sl *SubscriberList) Len() int + func (sl *SubscriberList) MatchAny(u *Update) (res []*Subscriber) + func (sl *SubscriberList) Remove(s *Subscriber) + func (sl *SubscriberList) Walk(start uint64, callback func(s *Subscriber) bool) uint64 + type TopicSelectorStore struct + func NewTopicSelectorStoreLRU(maxEntriesPerShard, shardCount int64) (*TopicSelectorStore, error) + func NewTopicSelectorStoreRistretto(cacheNumCounters, cacheMaxCost int64) (*TopicSelectorStore, error) + type TopicSelectorStoreCache interface + Get func(interface{}) (interface{}, bool) + Set func(interface{}, interface{}, int64) bool + type Transport interface + AddSubscriber func(s *Subscriber) error + Close func() error + Dispatch func(update *Update) error + RemoveSubscriber func(s *Subscriber) error + func NewBoltTransport(u *url.URL, l Logger, tss *TopicSelectorStore) (Transport, error) + func NewLocalTransport(u *url.URL, l Logger, tss *TopicSelectorStore) (Transport, error) + func NewTransport(u *url.URL, l Logger, tss *TopicSelectorStore) (Transport, error) + type TransportError struct + func (e *TransportError) Error() string + func (e *TransportError) Unwrap() error + type TransportFactory = func(u *url.URL, l Logger, tss *TopicSelectorStore) (Transport, error) + type TransportSubscribers interface + GetSubscribers func() (string, []*Subscriber, error) + type Update struct + Debug bool + Private bool + Topics []string + func (u *Update) MarshalLogObject(enc zapcore.ObjectEncoder) error