[#182] Reuse search filter in policer

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
Alex Vanin 2020-11-19 17:50:16 +03:00 committed by Alex Vanin
parent 2e605b2435
commit a14bb6292b

View file

@ -9,16 +9,15 @@ type jobQueue struct {
localStorage *localstore.Storage localStorage *localstore.Storage
} }
var jobFilter object.SearchFilters
func (q *jobQueue) Select(limit int) ([]*object.Address, error) { func (q *jobQueue) Select(limit int) ([]*object.Address, error) {
// TODO: optimize the logic for selecting objects // TODO: optimize the logic for selecting objects
// We can prioritize objects for migration, newly arrived objects, etc. // We can prioritize objects for migration, newly arrived objects, etc.
// It is recommended to make changes after updating the metabase // It is recommended to make changes after updating the metabase
jobFilter := object.NewSearchFilters()
jobFilter.AddPhyFilter()
// FIXME: add the ability to limit Select result // FIXME: add the ability to limit Select result
res, err := q.localStorage.Select(jobFilter) res, err := q.localStorage.Select(getJobFilter())
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -29,3 +28,12 @@ func (q *jobQueue) Select(limit int) ([]*object.Address, error) {
return res[:limit], nil return res[:limit], nil
} }
// getJobFilter is a getter for a singleton instance.
func getJobFilter() object.SearchFilters {
if len(jobFilter) == 0 {
jobFilter.AddPhyFilter() // this initiates a list of filters
}
return jobFilter
}