[#182] Reuse search filter in policer

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
remotes/KirillovDenis/release/v0.21.1
Alex Vanin 2020-11-19 17:50:16 +03:00 committed by Alex Vanin
parent 2e605b2435
commit a14bb6292b
1 changed files with 12 additions and 4 deletions

View File

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