Java tutorial
/* * Copyright 2014 jts * * Licensed under the Apache License, Version 2.0 (the "License") * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package ru.jts.gameserver; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelOption; import io.netty.channel.socket.nio.NioDatagramChannel; import io.netty.channel.socket.nio.NioSocketChannel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.jts.common.database.UoWFactory; import ru.jts.common.info.PrintInfo; import ru.jts.common.network.NetworkThread; import ru.jts.common.threading.ThreadPoolManager; import ru.jts.gameserver.configuration.GameServerProperty; import ru.jts.gameserver.network.handler.Game2AuthChannelInitializer; import ru.jts.gameserver.network.handler.Game2ClientChannelHandler; /** * @author : Camelion, Grizly(Skype: r-grizly) * @date : 20.01.14 15:52 * @last : 31.01.2014 */ public class GameServer { private static final Logger log = LoggerFactory.getLogger(GameServer.class); public static void main(String[] args) { PrintInfo.getInstance().printSection("Properties"); GameServerProperty.getInstance(); PrintInfo.getInstance().printSection("ThreadPoolManager"); ThreadPoolManager.getInstance().init(GameServerProperty.getInstance().GAME_SCHEDULED_THREAD_POOL_SIZE, GameServerProperty.getInstance().GAME_EXECUTOR_THREAD_POOL_SIZE); log.info("ThreadPoolManager created."); PrintInfo.getInstance().printSection("UoWFactory"); UoWFactory.getInstance().init("PersistenceUnit"); log.info("UoWFactory loaded."); PrintInfo.getInstance().printSection("Load information"); PrintInfo.getInstance().printLoadInfos(); PrintInfo.getInstance().printSection("Network"); startNetworkServer(); startNetworkClient(); } public static void startNetworkServer() { Bootstrap bootstrap = new Bootstrap(); bootstrap.option(ChannelOption.SO_BROADCAST, true); bootstrap.channel(NioDatagramChannel.class).handler(new Game2ClientChannelHandler()); String host = GameServerProperty.getInstance().GAME_CLIENT_HOST; int port = GameServerProperty.getInstance().GAME_CLIENT_PORT; if (host.equals("*")) { bootstrap.localAddress(port); } else { bootstrap.localAddress(host, port); } NetworkThread clientsNetworkThread = new NetworkThread(bootstrap, true); clientsNetworkThread.start(); log.info("Clients NetworkThread loaded on {}:{}", host, port); } private static void startNetworkClient() { Bootstrap bootstrap = new Bootstrap(); bootstrap.channel(NioSocketChannel.class).handler(new Game2AuthChannelInitializer()); String host = GameServerProperty.getInstance().AUTH_CLIENT_HOST; int port = GameServerProperty.getInstance().AUTH_CLIENT_PORT; bootstrap.remoteAddress(host, port); NetworkThread clientsNetworkThread = new NetworkThread(bootstrap, false); clientsNetworkThread.start(); log.info("Connect to auth on {}:{}", host, port); } }