56public final class GameSession
extends Session {
58 private static final Logger logger = LogManager.getLogger(GameSession.class);
60 private final Player player;
62 private final MessagePassingQueue<GamePacket> incomingPackets
65 private final MessagePassingQueue<GamePacket> outgoingPackets
85 private void queueClientPacket(
final GamePacket packet) {
86 incomingPackets.offer(packet);
89 public void processClientPackets() {
90 final MessagePassingQueue<GamePacket> incomingPackets = this.incomingPackets;
91 final Player player = this.player;
94 final GamePacket packet = incomingPackets.poll();
95 if (packet ==
null)
break;
98 PacketRepository.sendToListener(player, packet);
99 }
catch (Exception ex) {
100 logger.error(String.format(
"error processing client packet for %s", player), ex);
107 public void queueServerPacket(GamePacket packet) {
108 outgoingPackets.offer(packet);
111 public void processServerPacketQueue() {
113 final boolean channelActive =
channel.isActive();
115 final MessagePassingQueue<GamePacket> outgoingPackets = this.outgoingPackets;
118 for (; count < Config.SERVER_PACKET_THRESHOLD; count++) {
119 final GamePacket packet = outgoingPackets.poll();
120 if (packet ==
null)
break;
124 }
catch (
final Exception ex) {
125 logger.error(String.format(
"error writing packet %s for %s", packet, player));
128 if (packet.refCnt() > 0) {
133 if (channelActive && count > 0) {
138 public Player getPlayer() {