Files
sweetgum-server/src/main/java/net/netty/ChannelServerInitializer.java
2021-09-09 21:13:48 +02:00

41 lines
1.5 KiB
Java

package net.netty;
import client.Client;
import io.netty.channel.socket.SocketChannel;
import net.PacketProcessor;
import net.server.Server;
import net.server.coordinator.session.SessionCoordinator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ChannelServerInitializer extends ServerChannelInitializer {
private static final Logger log = LoggerFactory.getLogger(ChannelServerInitializer.class);
private final int world;
private final int channel;
public ChannelServerInitializer(int world, int channel) {
this.world = world;
this.channel = channel;
}
@Override
public void initChannel(SocketChannel socketChannel) {
final String clientIp = socketChannel.remoteAddress().getHostString();
log.debug("Client connecting to world {}, channel {} from {}", world, channel, clientIp);
PacketProcessor packetProcessor = PacketProcessor.getChannelServerProcessor(world, channel);
final long clientSessionId = sessionId.getAndIncrement();
final String remoteAddress = getRemoteAddress(socketChannel);
final Client client = Client.createChannelClient(clientSessionId, remoteAddress, packetProcessor, world, channel);
if (Server.getInstance().getChannel(world, channel) == null) {
SessionCoordinator.getInstance().closeSession(client, true);
socketChannel.close();
return;
}
initPipeline(socketChannel, client);
}
}