Commit 869a8fdc authored by nanahira's avatar nanahira

use resolve data

parent 97344b22
......@@ -349,6 +349,15 @@ if settings.modules.mycard.enabled
# log.info 'ARENA INIT POST OK', response.statusCode, response.statusMessage
return
class ResolveData
constructor: (@func) ->
resolved: false
resolve: (err, data) ->
if @resolved
return false
@func(err, data)
return true
if settings.modules.challonge.enabled
challonge_module_name = 'challonge'
if settings.modules.challonge.use_custom_module
......@@ -363,23 +372,16 @@ if settings.modules.challonge.enabled
if settings.modules.challonge.cache_ttl and !err and data
challonge_cache[challonge_type] = data
is_requesting[challonge_type] =null
resolve_data.resolved = true
resolve_data.func(err, data)
resolve_data.resolve(err, data)
while challonge_queue_callbacks[challonge_type].length
cur_resolve_data = challonge_queue_callbacks[challonge_type].splice(0, 1)[0]
if !cur_resolve_data.resolved
cur_resolve_data.resolved = true
cur_resolve_data.func(err, data)
cur_resolve_data.resolve(err, data)
return
)
challonge.participants._index = (_data) ->
resolve_data = {
func: _data.callback
resolved: false
}
resolve_data = new ResolveData(_data.callback)
if settings.modules.challonge.cache_ttl and challonge_cache[0]
resolve_data.resolved = true
_data.callback(null, challonge_cache[0])
resolve_data.resolve(null, challonge_cache[0])
else if is_requesting[0] and moment() - is_requesting[0] <= 5000
challonge_queue_callbacks[0].push(resolve_data)
else
......@@ -391,13 +393,9 @@ if settings.modules.challonge.enabled
_data.callback(err, null)
return
challonge.matches._index = (_data) ->
resolve_data = {
func: _data.callback
resolved: false
}
resolve_data = new ResolveData(_data.callback)
if settings.modules.challonge.cache_ttl and challonge_cache[1]
resolve_data.resolved = true
_data.callback(null, challonge_cache[1])
resolve_data.resolve(null, challonge_cache[1])
else if is_requesting[1] and moment() - is_requesting[1] <= 5000
challonge_queue_callbacks[1].push(resolve_data)
else
......
// Generated by CoffeeScript 2.5.1
(function() {
// 标准库
var CLIENT_get_authorize_key, CLIENT_get_kick_reconnect_target, CLIENT_heartbeat_register, CLIENT_heartbeat_unregister, CLIENT_import_data, CLIENT_is_able_to_kick_reconnect, CLIENT_is_able_to_reconnect, CLIENT_is_banned_by_mc, CLIENT_is_player, CLIENT_kick, CLIENT_kick_reconnect, CLIENT_pre_reconnect, CLIENT_reconnect, CLIENT_reconnect_register, CLIENT_reconnect_unregister, CLIENT_send_pre_reconnect_info, CLIENT_send_reconnect_info, CLIENT_send_replays, Cloud_replay_ids, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_clear_disconnect, ROOM_connected_ip, ROOM_find_by_name, ROOM_find_by_pid, ROOM_find_by_port, ROOM_find_by_title, ROOM_find_or_create_ai, ROOM_find_or_create_by_name, ROOM_find_or_create_random, ROOM_kick, ROOM_player_flee, ROOM_player_get_score, ROOM_player_lose, ROOM_player_win, ROOM_players_banned, ROOM_players_oppentlist, ROOM_players_scores, ROOM_unwelcome, ROOM_validate, Room, SERVER_clear_disconnect, SERVER_kick, SOCKET_flush_data, _, _async, addCallback, auth, badwords, ban_user, bunyan, challonge, challonge_cache, challonge_module_name, challonge_queue_callbacks, chat_color, config, cppversion, crypto, date, deck_name_match, default_config, default_data, dialogues, disconnect_list, dns, duel_log, e, exec, execFile, fs, geoip, get_callback, get_memory_usage, http, http_server, https, https_server, import_datas, imported, is_requesting, j, l, len, len1, len2, lflists, list, loadJSON, load_dialogues, load_tips, log, long_resolve_cards, m, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldduellog, oldtips, options, os, path, pgClient, pg_client, pg_query, plugin_filename, plugin_list, plugin_path, real_windbot_server_ip, redis, redisdb, ref, ref1, refresh_challonge_cache, release_disconnect, report_to_big_brother, request, requestListener, roomlist, setting_change, setting_save, settings, spawn, spawnSync, spawn_windbot, tips, url, users_cache, util, wait_room_start, wait_room_start_arena, windbot_looplimit, windbot_process, windbots, ygopro, zlib;
var CLIENT_get_authorize_key, CLIENT_get_kick_reconnect_target, CLIENT_heartbeat_register, CLIENT_heartbeat_unregister, CLIENT_import_data, CLIENT_is_able_to_kick_reconnect, CLIENT_is_able_to_reconnect, CLIENT_is_banned_by_mc, CLIENT_is_player, CLIENT_kick, CLIENT_kick_reconnect, CLIENT_pre_reconnect, CLIENT_reconnect, CLIENT_reconnect_register, CLIENT_reconnect_unregister, CLIENT_send_pre_reconnect_info, CLIENT_send_reconnect_info, CLIENT_send_replays, Cloud_replay_ids, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_clear_disconnect, ROOM_connected_ip, ROOM_find_by_name, ROOM_find_by_pid, ROOM_find_by_port, ROOM_find_by_title, ROOM_find_or_create_ai, ROOM_find_or_create_by_name, ROOM_find_or_create_random, ROOM_kick, ROOM_player_flee, ROOM_player_get_score, ROOM_player_lose, ROOM_player_win, ROOM_players_banned, ROOM_players_oppentlist, ROOM_players_scores, ROOM_unwelcome, ROOM_validate, ResolveData, Room, SERVER_clear_disconnect, SERVER_kick, SOCKET_flush_data, _, _async, addCallback, auth, badwords, ban_user, bunyan, challonge, challonge_cache, challonge_module_name, challonge_queue_callbacks, chat_color, config, cppversion, crypto, date, deck_name_match, default_config, default_data, dialogues, disconnect_list, dns, duel_log, e, exec, execFile, fs, geoip, get_callback, get_memory_usage, http, http_server, https, https_server, import_datas, imported, is_requesting, j, l, len, len1, len2, lflists, list, loadJSON, load_dialogues, load_tips, log, long_resolve_cards, m, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldduellog, oldtips, options, os, path, pgClient, pg_client, pg_query, plugin_filename, plugin_list, plugin_path, real_windbot_server_ip, redis, redisdb, ref, ref1, refresh_challonge_cache, release_disconnect, report_to_big_brother, request, requestListener, roomlist, setting_change, setting_save, settings, spawn, spawnSync, spawn_windbot, tips, url, users_cache, util, wait_room_start, wait_room_start_arena, windbot_looplimit, windbot_process, windbots, ygopro, zlib;
net = require('net');
......@@ -435,8 +435,30 @@
}
}
//else
// log.info 'ARENA INIT POST OK', response.statusCode, response.statusMessage
ResolveData = (function() {
//else
// log.info 'ARENA INIT POST OK', response.statusCode, response.statusMessage
class ResolveData {
constructor(func) {
this.func = func;
}
resolve(err, data) {
if (this.resolved) {
return false;
}
this.func(err, data);
return true;
}
};
ResolveData.prototype.resolved = false;
return ResolveData;
}).call(this);
if (settings.modules.challonge.enabled) {
challonge_module_name = 'challonge';
if (settings.modules.challonge.use_custom_module) {
......@@ -455,26 +477,18 @@
challonge_cache[challonge_type] = data;
}
is_requesting[challonge_type] = null;
resolve_data.resolved = true;
resolve_data.func(err, data);
resolve_data.resolve(err, data);
while (challonge_queue_callbacks[challonge_type].length) {
cur_resolve_data = challonge_queue_callbacks[challonge_type].splice(0, 1)[0];
if (!cur_resolve_data.resolved) {
cur_resolve_data.resolved = true;
cur_resolve_data.func(err, data);
}
cur_resolve_data.resolve(err, data);
}
});
};
challonge.participants._index = function(_data) {
var err, resolve_data;
resolve_data = {
func: _data.callback,
resolved: false
};
resolve_data = new ResolveData(_data.callback);
if (settings.modules.challonge.cache_ttl && challonge_cache[0]) {
resolve_data.resolved = true;
_data.callback(null, challonge_cache[0]);
resolve_data.resolve(null, challonge_cache[0]);
} else if (is_requesting[0] && moment() - is_requesting[0] <= 5000) {
challonge_queue_callbacks[0].push(resolve_data);
} else {
......@@ -490,13 +504,9 @@
};
challonge.matches._index = function(_data) {
var err, resolve_data;
resolve_data = {
func: _data.callback,
resolved: false
};
resolve_data = new ResolveData(_data.callback);
if (settings.modules.challonge.cache_ttl && challonge_cache[1]) {
resolve_data.resolved = true;
_data.callback(null, challonge_cache[1]);
resolve_data.resolve(null, challonge_cache[1]);
} else if (is_requesting[1] && moment() - is_requesting[1] <= 5000) {
challonge_queue_callbacks[1].push(resolve_data);
} else {
......
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