Commit 2a4e0b13 authored by nanahira's avatar nanahira

callback queue time limit

parent 306c62e1
...@@ -274,36 +274,36 @@ if settings.modules.challonge.enabled ...@@ -274,36 +274,36 @@ if settings.modules.challonge.enabled
if settings.modules.challonge.cache_ttl if settings.modules.challonge.cache_ttl
challonge_cache = [] challonge_cache = []
challonge_queue_callbacks = [[], []] challonge_queue_callbacks = [[], []]
is_requesting = [false, false] is_requesting = [null, null]
get_callback = (challonge_type, _callback) -> get_callback = (challonge_type, _callback) ->
return ((err, data) -> return ((err, data) ->
if settings.modules.challonge.cache_ttl and !err and data if settings.modules.challonge.cache_ttl and !err and data
challonge_cache[challonge_type] = data challonge_cache[challonge_type] = data
is_requesting[challonge_type] =null
_callback(err, data) _callback(err, data)
while challonge_queue_callbacks[challonge_type].length while challonge_queue_callbacks[challonge_type].length
cur_callback = challonge_queue_callbacks[challonge_type].splice(0, 1)[0] cur_callback = challonge_queue_callbacks[challonge_type].splice(0, 1)[0]
cur_callback(err, data) cur_callback(err, data)
is_requesting[challonge_type] = false
return return
) )
challonge.participants._index = (_data) -> challonge.participants._index = (_data) ->
if settings.modules.challonge.cache_ttl and challonge_cache[0] if settings.modules.challonge.cache_ttl and challonge_cache[0]
_data.callback(null, challonge_cache[0]) _data.callback(null, challonge_cache[0])
else if is_requesting[0] else if is_requesting[0] and moment() - is_requesting[0] <= 5000
challonge_queue_callbacks[0].push(_data.callback) challonge_queue_callbacks[0].push(_data.callback)
else else
_data.callback = get_callback(0, _data.callback) _data.callback = get_callback(0, _data.callback)
is_requesting[0] = true is_requesting[0] = moment()
challonge.participants.index(_data) challonge.participants.index(_data)
return return
challonge.matches._index = (_data) -> challonge.matches._index = (_data) ->
if settings.modules.challonge.cache_ttl and challonge_cache[1] if settings.modules.challonge.cache_ttl and challonge_cache[1]
_data.callback(null, challonge_cache[1]) _data.callback(null, challonge_cache[1])
else if is_requesting[1] else if is_requesting[1] and moment() - is_requesting[1] <= 5000
challonge_queue_callbacks[1].push(_data.callback) challonge_queue_callbacks[1].push(_data.callback)
else else
_data.callback = get_callback(1, _data.callback) _data.callback = get_callback(1, _data.callback)
is_requesting[1] = true is_requesting[1] = moment()
challonge.matches.index(_data) challonge.matches.index(_data)
return return
refresh_challonge_cache = () -> refresh_challonge_cache = () ->
......
...@@ -322,40 +322,40 @@ ...@@ -322,40 +322,40 @@
challonge_cache = []; challonge_cache = [];
} }
challonge_queue_callbacks = [[], []]; challonge_queue_callbacks = [[], []];
is_requesting = [false, false]; is_requesting = [null, null];
get_callback = function(challonge_type, _callback) { get_callback = function(challonge_type, _callback) {
return (function(err, data) { return (function(err, data) {
var cur_callback; var cur_callback;
if (settings.modules.challonge.cache_ttl && !err && data) { if (settings.modules.challonge.cache_ttl && !err && data) {
challonge_cache[challonge_type] = data; challonge_cache[challonge_type] = data;
} }
is_requesting[challonge_type] = null;
_callback(err, data); _callback(err, data);
while (challonge_queue_callbacks[challonge_type].length) { while (challonge_queue_callbacks[challonge_type].length) {
cur_callback = challonge_queue_callbacks[challonge_type].splice(0, 1)[0]; cur_callback = challonge_queue_callbacks[challonge_type].splice(0, 1)[0];
cur_callback(err, data); cur_callback(err, data);
} }
is_requesting[challonge_type] = false;
}); });
}; };
challonge.participants._index = function(_data) { challonge.participants._index = function(_data) {
if (settings.modules.challonge.cache_ttl && challonge_cache[0]) { if (settings.modules.challonge.cache_ttl && challonge_cache[0]) {
_data.callback(null, challonge_cache[0]); _data.callback(null, challonge_cache[0]);
} else if (is_requesting[0]) { } else if (is_requesting[0] && moment() - is_requesting[0] <= 5000) {
challonge_queue_callbacks[0].push(_data.callback); challonge_queue_callbacks[0].push(_data.callback);
} else { } else {
_data.callback = get_callback(0, _data.callback); _data.callback = get_callback(0, _data.callback);
is_requesting[0] = true; is_requesting[0] = moment();
challonge.participants.index(_data); challonge.participants.index(_data);
} }
}; };
challonge.matches._index = function(_data) { challonge.matches._index = function(_data) {
if (settings.modules.challonge.cache_ttl && challonge_cache[1]) { if (settings.modules.challonge.cache_ttl && challonge_cache[1]) {
_data.callback(null, challonge_cache[1]); _data.callback(null, challonge_cache[1]);
} else if (is_requesting[1]) { } else if (is_requesting[1] && moment() - is_requesting[1] <= 5000) {
challonge_queue_callbacks[1].push(_data.callback); challonge_queue_callbacks[1].push(_data.callback);
} else { } else {
_data.callback = get_callback(1, _data.callback); _data.callback = get_callback(1, _data.callback);
is_requesting[1] = true; is_requesting[1] = moment();
challonge.matches.index(_data); challonge.matches.index(_data);
} }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment