Virtual thread related

Using asynchronous methods for logic such as checking if room information exists may lead to unexpected issues.
This commit is contained in:
NetRiceCake
2025-12-08 01:50:26 +09:00
parent b2bd90097b
commit 4bf3959c33
3 changed files with 23 additions and 13 deletions

View File

@@ -10,6 +10,7 @@ import io.netty.handler.codec.MessageToMessageCodec;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
public class LocoCodec extends MessageToMessageCodec<byte[], LocoPacket> {
@@ -21,9 +22,12 @@ public class LocoCodec extends MessageToMessageCodec<byte[], LocoPacket> {
private final LocoSocketHandler locoSocketHandler;
public LocoCodec(LocoSocketHandler locoSocketHandler, Map<Integer, Future<LocoPacket>> waitList) {
private final ExecutorService handlerLoop;
public LocoCodec(LocoSocketHandler locoSocketHandler, Map<Integer, Future<LocoPacket>> waitList, ExecutorService handlerLoop) {
this.locoSocketHandler = locoSocketHandler;
this.waitList = waitList;
this.handlerLoop = handlerLoop;
}
@Override
@@ -72,7 +76,7 @@ public class LocoCodec extends MessageToMessageCodec<byte[], LocoPacket> {
((CompletableFuture<LocoPacket>) waitList.get(currentLocoPacket.getPacketId())).complete(currentLocoPacket);
} else {
final LocoPacket p = currentLocoPacket;
Thread.ofVirtual().start(() -> {
handlerLoop.execute(() -> {
locoSocketHandler.onPacket(p);
});
}