tracker: added a way for middleware constructors to fail
This commit is contained in:
parent
1874584eae
commit
230e0573c0
2 changed files with 17 additions and 8 deletions
|
@ -16,7 +16,7 @@ type AnnounceMiddleware func(AnnounceHandler) AnnounceHandler
|
||||||
|
|
||||||
// AnnounceMiddlewareConstructor is a function that creates a new
|
// AnnounceMiddlewareConstructor is a function that creates a new
|
||||||
// AnnounceMiddleware from a MiddlewareConfig.
|
// AnnounceMiddleware from a MiddlewareConfig.
|
||||||
type AnnounceMiddlewareConstructor func(chihaya.MiddlewareConfig) AnnounceMiddleware
|
type AnnounceMiddlewareConstructor func(chihaya.MiddlewareConfig) (AnnounceMiddleware, error)
|
||||||
|
|
||||||
type announceChain struct{ mw []AnnounceMiddleware }
|
type announceChain struct{ mw []AnnounceMiddleware }
|
||||||
|
|
||||||
|
@ -65,8 +65,8 @@ func RegisterAnnounceMiddleware(name string, mw AnnounceMiddleware) {
|
||||||
panic("tracker: could not register nil AnnounceMiddleware")
|
panic("tracker: could not register nil AnnounceMiddleware")
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterAnnounceMiddlewareConstructor(name, func(_ chihaya.MiddlewareConfig) AnnounceMiddleware {
|
RegisterAnnounceMiddlewareConstructor(name, func(_ chihaya.MiddlewareConfig) (AnnounceMiddleware, error) {
|
||||||
return mw
|
return mw, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ type ScrapeMiddleware func(ScrapeHandler) ScrapeHandler
|
||||||
|
|
||||||
// ScrapeMiddlewareConstructor is a function that creates a new
|
// ScrapeMiddlewareConstructor is a function that creates a new
|
||||||
// ScrapeMiddleware from a MiddlewareConfig.
|
// ScrapeMiddleware from a MiddlewareConfig.
|
||||||
type ScrapeMiddlewareConstructor func(chihaya.MiddlewareConfig) ScrapeMiddleware
|
type ScrapeMiddlewareConstructor func(chihaya.MiddlewareConfig) (ScrapeMiddleware, error)
|
||||||
|
|
||||||
type scrapeChain struct{ mw []ScrapeMiddleware }
|
type scrapeChain struct{ mw []ScrapeMiddleware }
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ func RegisterScrapeMiddleware(name string, mw ScrapeMiddleware) {
|
||||||
panic("tracker: could not register nil ScrapeMiddleware")
|
panic("tracker: could not register nil ScrapeMiddleware")
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterScrapeMiddlewareConstructor(name, func(_ chihaya.MiddlewareConfig) ScrapeMiddleware {
|
RegisterScrapeMiddlewareConstructor(name, func(_ chihaya.MiddlewareConfig) (ScrapeMiddleware, error) {
|
||||||
return mw
|
return mw, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ package tracker
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
|
"fmt"
|
||||||
"github.com/chihaya/chihaya"
|
"github.com/chihaya/chihaya"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -36,7 +37,11 @@ func NewTracker(cfg *chihaya.TrackerConfig) (*Tracker, error) {
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, errors.New("failed to find announce middleware: " + mwConfig.Name)
|
return nil, errors.New("failed to find announce middleware: " + mwConfig.Name)
|
||||||
}
|
}
|
||||||
achain.Append(mw(mwConfig))
|
middleware, err := mw(mwConfig)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to load announce middleware %q: %s", mwConfig.Name, err.Error())
|
||||||
|
}
|
||||||
|
achain.Append(middleware)
|
||||||
}
|
}
|
||||||
|
|
||||||
var schain scrapeChain
|
var schain scrapeChain
|
||||||
|
@ -45,7 +50,11 @@ func NewTracker(cfg *chihaya.TrackerConfig) (*Tracker, error) {
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, errors.New("failed to find scrape middleware: " + mwConfig.Name)
|
return nil, errors.New("failed to find scrape middleware: " + mwConfig.Name)
|
||||||
}
|
}
|
||||||
schain.Append(mw(mwConfig))
|
middleware, err := mw(mwConfig)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to load scrape middleware %q: %s", mwConfig.Name, err.Error())
|
||||||
|
}
|
||||||
|
schain.Append(middleware)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Tracker{
|
return &Tracker{
|
||||||
|
|
Loading…
Reference in a new issue