Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void reconnectWorld() {
- // Check if the connection is really gone.
- try {
- wci.isAvailable();
- } catch (RemoteException ex) {
- synchronized (worldReady) {
- worldReady = false;
- }
- synchronized (cwi) {
- synchronized (worldReady) {
- if (worldReady) {
- return;
- }
- }
- System.out.println("Reconnecting to world server.");
- synchronized (wci) {
- // Completely re-establish the rmi connection.
- try {
- initialProp = new Properties();
- FileReader fr = new FileReader(System.getProperty("net.sf.odinms.channel.config"));
- initialProp.load(fr);
- fr.close();
- Registry registry = LocateRegistry.getRegistry(initialProp.getProperty("net.sf.odinms.world.host"),
- Registry.REGISTRY_PORT, new SslRMIClientSocketFactory());
- worldRegistry = (WorldRegistry) registry.lookup("WorldRegistry");
- cwi = new ChannelWorldInterfaceImpl(this);
- wci = worldRegistry.registerChannelServer(key, cwi);
- props = wci.getGameProperties();
- expRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.exp"));
- mesoRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.meso"));
- dropRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.drop"));
- bossdropRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.bossdrop"));
- petExpRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.petExp"));
- serverMessage = props.getProperty("net.sf.odinms.world.serverMessage");
- dropUndroppables = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.alldrop", "false"));
- moreThanOne = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.morethanone", "false"));
- serverName = props.getProperty("net.sf.odinms.world.serverName");
- godlyItems = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.godlyItems", "false"));
- itemStatMultiplier = Short.parseShort(props.getProperty("net.sf.odinms.world.itemStatMultiplier"));
- godlyItemRate = Short.parseShort(props.getProperty("net.sf.odinms.world.godlyItemRate"));
- multiLevel = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.multiLevel", "false"));
- levelCap = Integer.parseInt(props.getProperty("net.sf.odinms.world.levelCap"));
- AB = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.Autoban", "false"));
- CS = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.CashShop", "false"));
- MT = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.MTS", "false"));
- GMItems = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.GMItems", "false"));
- PvPis = Integer.parseInt(props.getProperty("net.sf.odinms.world.PvPis", "4"));
- Properties dbProp = new Properties();
- fr = new FileReader("db.properties");
- dbProp.load(fr);
- fr.close();
- DatabaseConnection.setProps(dbProp);
- DatabaseConnection.getConnection();
- wci.serverReady();
- } catch (Exception e) {
- System.out.println("Reconnecting failed" + e);
- }
- worldReady = true;
- }
- }
- synchronized (worldReady) {
- worldReady.notifyAll();
- }
- }
- }
- @Override
- public void run() {
- try {
- cwi = new ChannelWorldInterfaceImpl(this);
- wci = worldRegistry.registerChannelServer(key, cwi);
- props = wci.getGameProperties();
- expRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.exp"));
- mesoRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.meso"));
- dropRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.drop"));
- bossdropRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.bossdrop"));
- petExpRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.petExp"));
- serverMessage = props.getProperty("net.sf.odinms.world.serverMessage");
- dropUndroppables = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.alldrop", "false"));
- moreThanOne = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.morethanone", "false"));
- eventSM = new EventScriptManager(this, props.getProperty("net.sf.odinms.channel.events").split(","));
- serverName = props.getProperty("net.sf.odinms.world.serverName");
- godlyItems = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.godlyItems", "false"));
- itemStatMultiplier = Short.parseShort(props.getProperty("net.sf.odinms.world.itemStatMultiplier"));
- godlyItemRate = Short.parseShort(props.getProperty("net.sf.odinms.world.godlyItemRate"));
- multiLevel = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.multiLevel", "false"));
- levelCap = Integer.parseInt(props.getProperty("net.sf.odinms.world.levelCap"));
- AB = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.Autoban", "false"));
- CS = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.CashShop", "false"));
- MT = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.MTS", "false"));
- GMItems = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.GMItems", "false"));
- PvPis = Integer.parseInt(props.getProperty("net.sf.odinms.world.PvPis", "4"));
- Properties dbProp = new Properties();
- FileReader fileReader = new FileReader("db.properties");
- dbProp.load(fileReader);
- fileReader.close();
- DatabaseConnection.setProps(dbProp);
- DatabaseConnection.getConnection();
- Connection c = DatabaseConnection.getConnection();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- port = Integer.parseInt(props.getProperty("net.sf.odinms.channel.net.port"));
- ip = props.getProperty("net.sf.odinms.channel.net.interface") + ":" + port;
- ByteBuffer.setUseDirectBuffers(false);
- ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
- acceptor = new SocketAcceptor();
- SocketAcceptorConfig cfg = new SocketAcceptorConfig();
- // cfg.setThreadModel(ThreadModel.MANUAL); // *fingers crossed*, I hope the executor filter handles everything
- // executor = new ThreadPoolExecutor(16, 16, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
- // cfg.getFilterChain().addLast("executor", new ExecutorFilter(executor));
- cfg.getFilterChain().addLast("codec", new ProtocolCodecFilter(new MapleCodecFactory()));
- // Item.loadInitialDataFromDB();
- TimerManager tMan = TimerManager.getInstance();
- tMan.start();
- tMan.register(AutobanManager.getInstance(), 60000);
- try {
- MapleServerHandler serverHandler = new MapleServerHandler(PacketProcessor.getProcessor(PacketProcessor.Mode.CHANNELSERVER), channel);
- acceptor.bind(new InetSocketAddress(port), serverHandler, cfg);
- System.out.println("Channel " + getChannel() + ": Listening on port: " + port);
- wci.serverReady();
- eventSM.init();
- } catch (IOException e) {
- System.out.println("Binding to port " + port + " failed (ch: " + getChannel() + ")" + e);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement