// Path: Core/src/main/java/com/zhaoxiaodan/mirserver/network/packets/ServerPacket.java
// public class ServerPacket extends Packet {
// 
// 	public ServerPacket() {
// 		super();
// 	}
// 
// 	public ServerPacket(int recog, Protocol protocol, short p1, short p2, short p3) {
// 		super(recog, protocol, p1, p2, p3);
// 	}
// 
// 	public ServerPacket(int recog, Protocol protocol) {
// 		this(recog, protocol, (short) 0, (short) 0, (short) 0);
// 	}
// 
// 	public ServerPacket(Protocol protocol) {
// 		super(protocol);
// 	}
// }


import com.zhaoxiaodan.mirserver.network.packets.ServerPacket;
import io.netty.channel.ChannelHandlerContext;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
package com.zhaoxiaodan.mirserver.network;



public class Session {

	private static Logger logger = LogManager.getLogger(Session.class);
	private static final Map<String, Session> sessions = new ConcurrentHashMap<String, Session>();

	private final Map<String, Object> values = new ConcurrentHashMap<String, Object>();
	private final ChannelHandlerContext socket;

	private Session(ChannelHandlerContext ctx){
		this.socket = ctx;
	}

	public void remove() {
		logger.debug("remove session for {}", socket.toString());
		sessions.remove(socket.channel().remoteAddress().toString());
	}

// Path: Core/src/main/java/com/zhaoxiaodan/mirserver/network/packets/ServerPacket.java
// public class ServerPacket extends Packet {
// 
// 	public ServerPacket() {
// 		super();
// 	}
// 
// 	public ServerPacket(int recog, Protocol protocol, short p1, short p2, short p3) {
// 		super(recog, protocol, p1, p2, p3);
// 	}
// 
// 	public ServerPacket(int recog, Protocol protocol) {
// 		this(recog, protocol, (short) 0, (short) 0, (short) 0);
// 	}
// 
// 	public ServerPacket(Protocol protocol) {
// 		super(protocol);
// 	}
// }


// Path: Core/src/main/java/com/zhaoxiaodan/mirserver/network/Session.java
import com.zhaoxiaodan.mirserver.network.packets.ServerPacket;
import io.netty.channel.ChannelHandlerContext;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

package com.zhaoxiaodan.mirserver.network;



public class Session {

	private static Logger logger = LogManager.getLogger(Session.class);
	private static final Map<String, Session> sessions = new ConcurrentHashMap<String, Session>();

	private final Map<String, Object> values = new ConcurrentHashMap<String, Object>();
	private final ChannelHandlerContext socket;

	private Session(ChannelHandlerContext ctx){
		this.socket = ctx;
	}

	public void remove() {
		logger.debug("remove session for {}", socket.toString());
		sessions.remove(socket.channel().remoteAddress().toString());
	}

	public void sendPacket(ServerPacket msg){