mirror of
https://github.com/jie65535/gc-opencommand-plugin.git
synced 2025-07-28 18:59:16 +08:00
DON'T LOCK PLAYER!
This commit is contained in:
parent
564f4d1e56
commit
290c4fbf8c
@ -44,13 +44,11 @@ public final class EventListeners {
|
|||||||
* @param uid 玩家uid
|
* @param uid 玩家uid
|
||||||
* @return 新的玩家消息处理类
|
* @return 新的玩家消息处理类
|
||||||
*/
|
*/
|
||||||
public static StringBuilder getPlayerNewMessageHandler(int uid) {
|
public static StringBuilder getPlayerMessageHandler(int uid) {
|
||||||
var handler = playerMessageHandlers.get(uid);
|
var handler = playerMessageHandlers.get(uid);
|
||||||
if (handler == null) {
|
if (handler == null) {
|
||||||
handler = new StringBuilder();
|
handler = new StringBuilder();
|
||||||
playerMessageHandlers.put(uid, handler);
|
playerMessageHandlers.put(uid, handler);
|
||||||
} else {
|
|
||||||
handler.setLength(0);
|
|
||||||
}
|
}
|
||||||
return handler;
|
return handler;
|
||||||
}
|
}
|
||||||
|
@ -152,11 +152,12 @@ public final class OpenCommandHandler implements Router {
|
|||||||
context.json(new JsonResponse(404, "Player not found"));
|
context.json(new JsonResponse(404, "Player not found"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//noinspection SynchronizationOnLocalVariableOrMethodParameter
|
|
||||||
synchronized (player) {
|
|
||||||
// Player MessageHandler do not support concurrency
|
// Player MessageHandler do not support concurrency
|
||||||
var handler = EventListeners.getPlayerNewMessageHandler(player.getUid());
|
var handler = EventListeners.getPlayerMessageHandler(player.getUid());
|
||||||
|
//noinspection SynchronizationOnLocalVariableOrMethodParameter
|
||||||
|
synchronized (handler) {
|
||||||
try {
|
try {
|
||||||
|
handler.setLength(0);
|
||||||
CommandMap.getInstance().invoke(player, player, command);
|
CommandMap.getInstance().invoke(player, player, command);
|
||||||
context.json(new JsonResponse(handler.toString()));
|
context.json(new JsonResponse(handler.toString()));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -159,11 +159,12 @@ public class SocketClient {
|
|||||||
sendPacket(new HttpPacket(404, "Player not found."), packet.packetID);
|
sendPacket(new HttpPacket(404, "Player not found."), packet.packetID);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//noinspection SynchronizationOnLocalVariableOrMethodParameter
|
|
||||||
synchronized (playerData) {
|
|
||||||
// Player MessageHandler do not support concurrency
|
// Player MessageHandler do not support concurrency
|
||||||
var handler = EventListeners.getPlayerNewMessageHandler(playerData.getUid());
|
var handler = EventListeners.getPlayerMessageHandler(playerData.getUid());
|
||||||
|
//noinspection SynchronizationOnLocalVariableOrMethodParameter
|
||||||
|
synchronized (handler) {
|
||||||
try {
|
try {
|
||||||
|
handler.setLength(0);
|
||||||
CommandMap.getInstance().invoke(playerData, playerData, command);
|
CommandMap.getInstance().invoke(playerData, playerData, command);
|
||||||
sendPacket(new HttpPacket(200, handler.toString()), packet.packetID);
|
sendPacket(new HttpPacket(200, handler.toString()), packet.packetID);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
Loading…
Reference in New Issue
Block a user