[courier/requestQueue] fix get(), added getStartable()

get() implies that it will get all pending requests that match a strategy, but it is actually filtering by wether a require is startable. Added getStartable() to accomplish that task and get() now returns all requests that match a strategy.
This commit is contained in:
spalger 2015-11-19 14:05:58 -06:00
parent 1a29624c00
commit 88a1cd929a
4 changed files with 8 additions and 6 deletions

View file

@ -16,8 +16,11 @@ define(function (require) {
}); });
}; };
queue.get = function (/* strategies.. */) { queue.getStartable = function (...strategies) {
var strategies = _.toArray(arguments); return queue.get(...strategies).filter(req => req.canStart());
};
queue.get = function (...strategies) {
return queue.filter(function (req) { return queue.filter(function (req) {
var strategyMatch = !strategies.length; var strategyMatch = !strategies.length;
if (!strategyMatch) { if (!strategyMatch) {
@ -26,7 +29,7 @@ define(function (require) {
}); });
} }
return strategyMatch && req.canStart(); return strategyMatch;
}); });
}; };

View file

@ -203,7 +203,7 @@ define(function (require) {
*****/ *****/
SourceAbstract.prototype._myQueued = function () { SourceAbstract.prototype._myQueued = function () {
var reqs = requestQueue.get(this._fetchStrategy); var reqs = requestQueue.getStartable(this._fetchStrategy);
return _.where(reqs, { source: this }); return _.where(reqs, { source: this });
}; };

View file

@ -9,7 +9,7 @@ define(function (require) {
var INCOMPLETE = Private(require('ui/courier/fetch/_req_status')).INCOMPLETE; var INCOMPLETE = Private(require('ui/courier/fetch/_req_status')).INCOMPLETE;
function fetchQueued(strategy) { function fetchQueued(strategy) {
var requests = requestQueue.get(strategy); var requests = requestQueue.getStartable(strategy);
if (!requests.length) return Promise.resolve(); if (!requests.length) return Promise.resolve();
else return fetchThese(requests); else return fetchThese(requests);
} }

View file

@ -2,7 +2,6 @@ define(function (require) {
return function CourierSegmentedReqProvider(es, Private, Promise, Notifier, timefilter, config) { return function CourierSegmentedReqProvider(es, Private, Promise, Notifier, timefilter, config) {
var _ = require('lodash'); var _ = require('lodash');
var SearchReq = Private(require('ui/courier/fetch/request/search')); var SearchReq = Private(require('ui/courier/fetch/request/search'));
var requestQueue = Private(require('ui/courier/_request_queue'));
var SegmentedHandle = Private(require('ui/courier/fetch/request/_segmented_handle')); var SegmentedHandle = Private(require('ui/courier/fetch/request/_segmented_handle'));
var notify = new Notifier({ var notify = new Notifier({