Commit a2bc43d8 authored by mercury233's avatar mercury233

test:stop log to avoid memory leak;http shout

parent 8b34cc43
config.json
/ygocore/
#################
## node
......
......@@ -89,7 +89,7 @@ class Room
@process = spawn './ygopro', param, cwd: 'ygocore'
@process.on 'exit', (code)=>
log.info 'room-exit', this.name, this.port, code
#log.info 'room-exit', this.name, this.port, code
@disconnector = 'server' unless @disconnector
this.delete()
@process.stdout.setEncoding('utf8')
......@@ -135,22 +135,22 @@ class Room
return unless @dueling_players[0] and @dueling_players[1] #a WTF fix
User.findOne { name: @dueling_players[0].name }, (err, player0)=>
if(err)
log.error "error when find user", @dueling_players[0].name, err
#log.error "error when find user", @dueling_players[0].name, err
else if(!player0)
log.error "can't find user ", @dueling_players[0].name
#log.error "can't find user ", @dueling_players[0].name
else
User.findOne { name: @dueling_players[1].name }, (err, player1)=>
if(err)
log.error "error when find user", @dueling_players[1].name, err
#log.error "error when find user", @dueling_players[1].name, err
else if(!player1)
log.error "can't find user ", @dueling_players[1].name
#log.error "can't find user ", @dueling_players[1].name
else
#---------------------------------------------------------------------------
#卡组
log.info user: player0._id, card_usages: @dueling_players[0].deck
#log.info user: player0._id, card_usages: @dueling_players[0].deck
Deck.findOne user: player0._id, card_usages: @dueling_players[0].deck, (err, deck0)=>
if(err)
log.error "error when find deck"
#log.error "error when find deck"
else if(!deck0)
deck0 = new Deck({name: 'match', user: player0._id, card_usages: @dueling_players[0].deck, used_count: 1, last_used_at: Date.now()})
deck0.save()
......@@ -158,11 +158,11 @@ class Room
deck0.used_count++
deck0.last_used_at = Date.now()
deck0.save()
log.info deck0
log.info @dueling_players[0].deck, @dueling_players[1].deck, @dueling_players
#log.info deck0
#log.info @dueling_players[0].deck, @dueling_players[1].deck, @dueling_players
Deck.findOne user: player1._id, card_usages: @dueling_players[1].deck, (err, deck1)=>
if(err)
log.error "error when find deck"
#log.error "error when find deck"
else if(!deck1)
deck1 = new Deck({name: 'match', user: player1._id, card_usages: @dueling_players[1].deck, used_count: 1, last_used_at: Date.now()})
deck1.save()
......@@ -170,7 +170,7 @@ class Room
deck1.used_count++
deck1.last_used_at = Date.now()
deck1.save()
log.info deck1
#log.info deck1
Match.create
players: [{user: player0._id, deck: deck0._id}, {user: player1._id, deck: deck1._id}]
......@@ -178,7 +178,7 @@ class Room
winner: if match_winner == 0 then player0._id else player1._id,
ygopro_version: settings.version
,(err, match)->
log.info err, match
#log.info err, match
#积分
if match_winner == 0
......@@ -188,13 +188,13 @@ class Room
winner = player1
loser = player0
log.info('before_settle_result',winner.name, winner.points,loser.name, loser.points)
#log.info('before_settle_result',winner.name, winner.points,loser.name, loser.points)
winner.points += 5
if _.last(@duels).reason == 4
loser.points -= 8
else
loser.points -= 3
log.info('duel_settle_result',winner.name, winner.points,loser.name, loser.points)
#log.info('duel_settle_result',winner.name, winner.points,loser.name, loser.points)
winner.save()
loser.save()
......
......@@ -108,7 +108,6 @@
});
this.process.on('exit', (function(_this) {
return function(code) {
log.info('room-exit', _this.name, _this.port, code);
if (!_this.disconnector) {
_this.disconnector = 'server';
}
......@@ -205,29 +204,25 @@
}, (function(_this) {
return function(err, player0) {
if (err) {
return log.error("error when find user", _this.dueling_players[0].name, err);
} else if (!player0) {
return log.error("can't find user ", _this.dueling_players[0].name);
} else {
return User.findOne({
name: _this.dueling_players[1].name
}, function(err, player1) {
var loser, winner;
if (err) {
return log.error("error when find user", _this.dueling_players[1].name, err);
} else if (!player1) {
return log.error("can't find user ", _this.dueling_players[1].name);
} else {
log.info({
user: player0._id,
card_usages: _this.dueling_players[0].deck
});
Deck.findOne({
user: player0._id,
card_usages: _this.dueling_players[0].deck
}, function(err, deck0) {
if (err) {
log.error("error when find deck");
} else if (!deck0) {
deck0 = new Deck({
name: 'match',
......@@ -242,14 +237,12 @@
deck0.last_used_at = Date.now();
deck0.save();
}
log.info(deck0);
log.info(_this.dueling_players[0].deck, _this.dueling_players[1].deck, _this.dueling_players);
return Deck.findOne({
user: player1._id,
card_usages: _this.dueling_players[1].deck
}, function(err, deck1) {
if (err) {
log.error("error when find deck");
} else if (!deck1) {
deck1 = new Deck({
name: 'match',
......@@ -264,7 +257,6 @@
deck1.last_used_at = Date.now();
deck1.save();
}
log.info(deck1);
return Match.create({
players: [
{
......@@ -278,9 +270,7 @@
duels: _this.duels,
winner: match_winner === 0 ? player0._id : player1._id,
ygopro_version: settings.version
}, function(err, match) {
return log.info(err, match);
});
}, function(err, match) {});
});
});
if (match_winner === 0) {
......@@ -290,14 +280,12 @@
winner = player1;
loser = player0;
}
log.info('before_settle_result', winner.name, winner.points, loser.name, loser.points);
winner.points += 5;
if (_.last(_this.duels).reason === 4) {
loser.points -= 8;
} else {
loser.points -= 3;
}
log.info('duel_settle_result', winner.name, winner.points, loser.name, loser.points);
winner.save();
return loser.save();
}
......
......@@ -49,7 +49,7 @@ net.createServer (client) ->
#释放处理
client.on 'close', (had_error) ->
log.info "client closed", client.name, had_error
#log.info "client closed", client.name, had_error
client.room.disconnector = client if client.room and client.room.started and client in client.room.dueling_players and !client.room.disconnector
unless client.closed
client.closed = true
......@@ -57,7 +57,7 @@ net.createServer (client) ->
server.end()
client.on 'error', (error)->
log.info "client error", client.name, error
#log.info "client error", client.name, error
client.room.disconnector = client if client.room and client.room.started and client in client.room.dueling_players and !client.room.disconnector
unless client.closed
client.closed = error
......@@ -65,7 +65,7 @@ net.createServer (client) ->
server.end()
server.on 'close', (had_error) ->
log.info "server closed", client.name, had_error
#log.info "server closed", client.name, had_error
server.closed = true unless server.closed
client.room.disconnector = 'server' if client.room and client.room.started and client in client.room.dueling_players and !client.room.disconnector
unless client.closed
......@@ -73,7 +73,7 @@ net.createServer (client) ->
client.end()
server.on 'error', (error)->
log.info "server error", client.name, error
#log.info "server error", client.name, error
server.closed = error
client.room.disconnector = 'server' if client.room and client.room.started and client in client.room.dueling_players and !client.room.disconnector
unless client.closed
......@@ -218,7 +218,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
}
client.end()
else
log.info 'join_game',info.pass, client.name
#log.info 'join_game',info.pass, client.name
client.room = Room.find_or_create_by_name(info.pass)
if client.room.started
if settings.modules.post_start_watching
......@@ -297,7 +297,7 @@ ygopro.stoc_follow 'JOIN_GAME', false, (buffer, info, client, server)->
break
watcher.on 'error', (error)->
log.error "watcher error", error
#log.error "watcher error", error
watcher.on 'close', (had_error)->
for w in client.room.ws_watchers
......@@ -331,7 +331,7 @@ ygopro.stoc_follow 'GAME_MSG', false, (buffer, info, client, server)->
pos = buffer.readUInt8(1)
pos = 1 - pos unless client.is_first or pos == 2
reason = buffer.readUInt8(2)
log.info {winner: pos, reason: reason}
#log.info {winner: pos, reason: reason}
client.room.duels.push {winner: pos, reason: reason}
#lp跟踪
if ygopro.constants.MSG[msg] == 'DAMAGE' and client.is_host
......@@ -421,7 +421,7 @@ if settings.modules.tips
json: true
, (error, response, body)->
tips = body
log.info "tips loaded", tips.length
#log.info "tips loaded", tips.length
ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server)->
unless client.room.started #first start
......@@ -431,12 +431,12 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server)->
for player in client.room.players when player.pos != 7
client.room.dueling_players[player.pos] = player
if !player.main
log.error 'WTF', client
#log.error 'WTF', client
else
player.deck = mycard.load_card_usages_from_cards(player.main, player.side)
if !client.room.dueling_players[0] or !client.room.dueling_players[1]
log.error 'incomplete room', client.room.dueling_players, client.room.players
#if !client.room.dueling_players[0] or !client.room.dueling_players[1]
#log.error 'incomplete room', client.room.dueling_players, client.room.players
if settings.modules.tips
ygopro.stoc_send_random_tip(client)
......@@ -452,13 +452,13 @@ ygopro.ctos_follow 'CHAT', false, (buffer, info, client, server)->
if line.indexOf('rtt') != -1
ygopro.stoc_send_chat_to_room client.room, line
else
log.warn 'ping', stdout
#log.warn 'ping', stdout
ygopro.stoc_send_chat_to_room client.room, stdout
when '/ranktop'
if settings.modules.database
User.find null, null, { sort: { points : -1 }, limit: 8 }, (err, users)->
if err
return log.error 'ranktop', err
return #log.error 'ranktop', err
for index, user of users
ygopro.stoc_send_chat client, [parseInt(index)+1, user.points, user.name].join(' ')
......@@ -480,7 +480,7 @@ ygopro.ctos_follow 'CHAT', false, (buffer, info, client, server)->
when '/admin showroom'
log.info client.room
ygopro.ctos_follow 'UPDATE_DECK', false, (buffer, info, client, server)->
log.info info
#log.info info
main = (info.deckbuf[i] for i in [0...info.mainc])
side = (info.deckbuf[i] for i in [info.mainc...info.mainc+info.sidec])
client.main = main
......@@ -536,7 +536,7 @@ if settings.modules.http
log.info 'level_points loaded', level_points
http_server = http.createServer (request, response)->
#http://122.0.65.70:7922/?operation=getroomjson
u = url.parse(request.url)
u = url.parse(request.url,1)
#log.info u
if u.pathname == '/count.json'
response.writeHead(200);
......@@ -583,7 +583,7 @@ if settings.modules.http
istart: if room.started then 'start' else 'wait'
)
response.end("loadroom( " + roomsjson + " );");
else if u.query == 'operation=getroomjson'
else if u.query.operation == 'getroomjson'
response.writeHead(200);
response.end JSON.stringify rooms: (for room in Room.all when room.established
roomid: room.port.toString(),
......@@ -596,6 +596,10 @@ if settings.modules.http
),
istart: if room.started then "start" else "wait"
)
else if u.query.pass == settings.modules.http.password && u.query.shout
for room in Room.all
ygopro.stoc_send_chat_to_room(room, u.query.shout)
response.writeHead(200);
else
response.writeHead(404);
response.end();
......
......@@ -70,7 +70,6 @@
server = new net.Socket();
client.server = server;
client.on('close', function(had_error) {
log.info("client closed", client.name, had_error);
if (client.room && client.room.started && indexOf.call(client.room.dueling_players, client) >= 0 && !client.room.disconnector) {
client.room.disconnector = client;
}
......@@ -83,7 +82,6 @@
return server.end();
});
client.on('error', function(error) {
log.info("client error", client.name, error);
if (client.room && client.room.started && indexOf.call(client.room.dueling_players, client) >= 0 && !client.room.disconnector) {
client.room.disconnector = client;
}
......@@ -96,7 +94,6 @@
return server.end();
});
server.on('close', function(had_error) {
log.info("server closed", client.name, had_error);
if (!server.closed) {
server.closed = true;
}
......@@ -109,7 +106,6 @@
}
});
server.on('error', function(error) {
log.info("server error", client.name, error);
server.closed = error;
if (client.room && client.room.started && indexOf.call(client.room.dueling_players, client) >= 0 && !client.room.disconnector) {
client.room.disconnector = 'server';
......@@ -257,7 +253,6 @@
});
return client.end();
} else {
log.info('join_game', info.pass, client.name);
client.room = Room.find_or_create_by_name(info.pass);
if (client.room.started) {
if (settings.modules.post_start_watching) {
......@@ -371,9 +366,7 @@
}
return results;
});
watcher.on('error', function(error) {
return log.error("watcher error", error);
});
watcher.on('error', function(error) {});
return watcher.on('close', function(had_error) {
var j, len, ref, results, w;
ref = client.room.ws_watchers;
......@@ -418,10 +411,6 @@
pos = 1 - pos;
}
reason = buffer.readUInt8(2);
log.info({
winner: pos,
reason: reason
});
client.room.duels.push({
winner: pos,
reason: reason
......@@ -519,8 +508,7 @@
url: settings.modules.tips,
json: true
}, function(error, response, body) {
tips = body;
return log.info("tips loaded", tips.length);
return tips = body;
});
}
......@@ -538,14 +526,11 @@
}
client.room.dueling_players[player.pos] = player;
if (!player.main) {
log.error('WTF', client);
} else {
player.deck = mycard.load_card_usages_from_cards(player.main, player.side);
}
}
if (!client.room.dueling_players[0] || !client.room.dueling_players[1]) {
log.error('incomplete room', client.room.dueling_players, client.room.players);
}
}
if (settings.modules.tips) {
return ygopro.stoc_send_random_tip(client);
......@@ -564,7 +549,6 @@
if (line.indexOf('rtt') !== -1) {
return ygopro.stoc_send_chat_to_room(client.room, line);
} else {
log.warn('ping', stdout);
return ygopro.stoc_send_chat_to_room(client.room, stdout);
}
}
......@@ -579,7 +563,7 @@
}, function(err, users) {
var index, results, user;
if (err) {
return log.error('ranktop', err);
return;
}
results = [];
for (index in users) {
......@@ -619,7 +603,6 @@
ygopro.ctos_follow('UPDATE_DECK', false, function(buffer, info, client, server) {
var i, main, side;
log.info(info);
main = (function() {
var j, ref, results;
results = [];
......@@ -693,8 +676,8 @@
}
log.info('level_points loaded', level_points);
http_server = http.createServer(function(request, response) {
var level, name, password, player, ref, ref1, room, roomsjson, u;
u = url.parse(request.url);
var j, len, level, name, password, player, ref, ref1, ref2, room, roomsjson, u;
u = url.parse(request.url, 1);
if (u.pathname === '/count.json') {
response.writeHead(200);
return response.end(Room.all.length.toString());
......@@ -780,7 +763,7 @@
})()
});
return response.end("loadroom( " + roomsjson + " );");
} else if (u.query === 'operation=getroomjson') {
} else if (u.query.operation === 'getroomjson') {
response.writeHead(200);
return response.end(JSON.stringify({
rooms: (function() {
......@@ -817,6 +800,13 @@
return results;
})()
}));
} else if (u.query.pass === settings.modules.http.password && u.query.shout) {
ref2 = Room.all;
for (j = 0, len = ref2.length; j < len; j++) {
room = ref2[j];
ygopro.stoc_send_chat_to_room(room, u.query.shout);
}
return response.writeHead(200);
} else {
response.writeHead(404);
return response.end();
......
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