Commit 42ae911a authored by mercury233's avatar mercury233

full of bug

parent 098a4dfa
......@@ -16,7 +16,7 @@
"underscore": "*",
"underscore.string": "*",
"request": "*",
"bunyan": "*",
"bunyan": "*"
},
"license": "GPLv3",
"main": "ygopro-server.js",
......
......@@ -83,7 +83,7 @@ class Room
@process = spawn './ygopro', param, cwd: 'ygocore'
@process.on 'exit', (code)=>
#log.info 'room-exit', this.name, this.port, code
@disconnector = 'server' unless @disconnector
@process = null
this.delete()
@process.stdout.setEncoding('utf8')
@process.stdout.once 'data', (data)=>
......@@ -91,7 +91,10 @@ class Room
@port = parseInt data
_.each @players, (player)=>
player.server.connect @port, '127.0.0.1',=>
player.server.write buffer for buffer in player.pre_establish_buffers
for buffer in player.pre_establish_buffers
player.buffer=buffer
buffer=null
player.server.write player.buffer
player.established = true
delete: ->
......@@ -107,7 +110,10 @@ class Room
if @established
client.server.connect @port, '127.0.0.1', ->
client.server.write buffer for buffer in client.pre_establish_buffers
for buffer in client.pre_establish_buffers
client.buffer=buffer
buffer=null
client.server.write client.buffer
client.established = true
disconnect: (client, error)->
......@@ -121,7 +127,7 @@ class Room
if @players.length
ygopro.stoc_send_chat_to_room this, "#{client.name} #{'离开了游戏'}#{if error then ": #{error}" else ''}"
else
@process.kill()
@process.kill() if @process
this.delete()
module.exports = Room
\ No newline at end of file
......@@ -99,9 +99,7 @@
});
this.process.on('exit', (function(_this) {
return function(code) {
if (!_this.disconnector) {
_this.disconnector = 'server';
}
_this.process = null;
return _this["delete"]();
};
})(this));
......@@ -116,7 +114,9 @@
ref = player.pre_establish_buffers;
for (i = 0, len = ref.length; i < len; i++) {
buffer = ref[i];
player.server.write(buffer);
player.buffer = buffer;
buffer = null;
player.server.write(player.buffer);
}
return player.established = true;
});
......@@ -148,7 +148,9 @@
ref = client.pre_establish_buffers;
for (i = 0, len = ref.length; i < len; i++) {
buffer = ref[i];
client.server.write(buffer);
client.buffer = buffer;
buffer = null;
client.server.write(client.buffer);
}
return client.established = true;
});
......@@ -171,7 +173,9 @@
if (this.players.length) {
return ygopro.stoc_send_chat_to_room(this, client.name + " " + '离开了游戏' + (error ? ": " + error : ''));
} else {
this.process.kill();
if (this.process) {
this.process.kill();
}
return this["delete"]();
}
}
......
This diff is collapsed.
This diff is collapsed.
......@@ -76,8 +76,9 @@ for name, declaration of structs_declaration
header = new Buffer(3)
header.writeUInt16LE buffer.length + 1, 0
header.writeUInt8 proto, 2
socket.write header
socket.write buffer if buffer.length
if socket
socket.write header
socket.write buffer if buffer.length
@ctos_send = (socket, proto, info)->
#console.log proto, proto_structs.CTOS[proto], structs[proto_structs.CTOS[proto]]
......@@ -101,8 +102,9 @@ for name, declaration of structs_declaration
header = new Buffer(3)
header.writeUInt16LE buffer.length + 1, 0
header.writeUInt8 proto, 2
socket.write header
socket.write buffer if buffer.length
if socket
socket.write header
socket.write buffer if buffer.length
#util
@stoc_send_chat = (client, msg, player = 8)->
......
......@@ -126,9 +126,11 @@
header = new Buffer(3);
header.writeUInt16LE(buffer.length + 1, 0);
header.writeUInt8(proto, 2);
socket.write(header);
if (buffer.length) {
return socket.write(buffer);
if (socket) {
socket.write(header);
if (buffer.length) {
return socket.write(buffer);
}
}
};
......@@ -160,9 +162,11 @@
header = new Buffer(3);
header.writeUInt16LE(buffer.length + 1, 0);
header.writeUInt8(proto, 2);
socket.write(header);
if (buffer.length) {
return socket.write(buffer);
if (socket) {
socket.write(header);
if (buffer.length) {
return socket.write(buffer);
}
}
};
......
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