diff --git a/http/handler/api/session.go b/http/handler/api/session.go index c0257a99..de297cd9 100644 --- a/http/handler/api/session.go +++ b/http/handler/api/session.go @@ -13,11 +13,11 @@ import ( // The SessionHandler type provides handlers to retrieve session information type SessionHandler struct { - registry session.Registry + registry session.RegistryReader } // NewSession returns a new Session type. You have to provide a session registry. -func NewSession(registry session.Registry) *SessionHandler { +func NewSession(registry session.RegistryReader) *SessionHandler { return &SessionHandler{ registry: registry, } diff --git a/http/handler/api/widget.go b/http/handler/api/widget.go index 6eba3c09..7bd22602 100644 --- a/http/handler/api/widget.go +++ b/http/handler/api/widget.go @@ -13,13 +13,13 @@ import ( type WidgetConfig struct { Restream restream.Restreamer - Registry session.Registry + Registry session.RegistryReader } // The WidgetHandler type provides handlers for the widget API type WidgetHandler struct { restream restream.Restreamer - registry session.Registry + registry session.RegistryReader } // NewWidget return a new Widget type diff --git a/http/server.go b/http/server.go index 94c4b026..439df8ab 100644 --- a/http/server.go +++ b/http/server.go @@ -89,7 +89,7 @@ type Config struct { JWT jwt.JWT Config config.Store Cache cache.Cacher - Sessions session.Registry + Sessions session.RegistryReader Router router.Router ReadOnly bool } diff --git a/monitor/session.go b/monitor/session.go index 118a5ea4..d2ac15b9 100644 --- a/monitor/session.go +++ b/monitor/session.go @@ -7,7 +7,7 @@ import ( type sessionCollector struct { prefix string - r session.Registry + r session.RegistryReader collectors []string totalDescr *metric.Description limitDescr *metric.Description @@ -20,7 +20,7 @@ type sessionCollector struct { maxRxBitrateDescr *metric.Description } -func NewSessionCollector(r session.Registry, collectors []string) metric.Collector { +func NewSessionCollector(r session.RegistryReader, collectors []string) metric.Collector { c := &sessionCollector{ prefix: "session", r: r, diff --git a/session/registry.go b/session/registry.go index 3e2570f2..adf40530 100644 --- a/session/registry.go +++ b/session/registry.go @@ -22,6 +22,20 @@ type Config struct { Logger log.Logger } +type RegistryReader interface { + // Collectors returns an array of all registered IDs + Collectors() []string + + // Collector returns the collector with the ID, or nil if the ID is not registered + Collector(id string) Collector + + // Summary returns the summary from a collector with the ID, or an empty summary if the ID is not registered + Summary(id string) Summary + + // Active returns the active sessions from a collector with the ID, or an empty list if the ID is not registered + Active(id string) []Session +} + // The Registry interface type Registry interface { // Register returns a new collector from conf and registers it under the id and error is nil. In case of error @@ -34,17 +48,7 @@ type Registry interface { // UnregisterAll unregisters al registered collectors UnregisterAll() - // Collectors returns an array of all registered IDs - Collectors() []string - - // Collector returns the collector with the ID, or nil if the ID is not registered - Collector(id string) Collector - - // Summary returns the summary from a collector with the ID, or an empty summary if the ID is not registered - Summary(id string) Summary - - // Active returns the active sessions from a collector with the ID, or an empty list if the ID is not registered - Active(id string) []Session + RegistryReader } type registry struct {