Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Feb 14th, 2010  |  syntax: None  |  size: 8.19 KB  |  views: 84  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. public void reconnectWorld() {
  2.         // Check if the connection is really gone.
  3.         try {
  4.             wci.isAvailable();
  5.         } catch (RemoteException ex) {
  6.             synchronized (worldReady) {
  7.                 worldReady = false;
  8.             }
  9.             synchronized (cwi) {
  10.                 synchronized (worldReady) {
  11.                     if (worldReady) {
  12.                         return;
  13.                     }
  14.                 }
  15.                 System.out.println("Reconnecting to world server.");
  16.                 synchronized (wci) {
  17.                     // Completely re-establish the rmi connection.
  18.                     try {
  19.                         initialProp = new Properties();
  20.                         FileReader fr = new FileReader(System.getProperty("net.sf.odinms.channel.config"));
  21.                         initialProp.load(fr);
  22.                         fr.close();
  23.                         Registry registry = LocateRegistry.getRegistry(initialProp.getProperty("net.sf.odinms.world.host"),
  24.                         Registry.REGISTRY_PORT, new SslRMIClientSocketFactory());
  25.                         worldRegistry = (WorldRegistry) registry.lookup("WorldRegistry");
  26.                         cwi = new ChannelWorldInterfaceImpl(this);
  27.                         wci = worldRegistry.registerChannelServer(key, cwi);
  28.                         props = wci.getGameProperties();
  29.                         expRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.exp"));
  30.                         mesoRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.meso"));
  31.                         dropRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.drop"));
  32.                         bossdropRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.bossdrop"));
  33.                         petExpRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.petExp"));
  34.                         serverMessage = props.getProperty("net.sf.odinms.world.serverMessage");
  35.                         dropUndroppables = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.alldrop", "false"));
  36.                         moreThanOne = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.morethanone", "false"));
  37.                         serverName = props.getProperty("net.sf.odinms.world.serverName");
  38.                         godlyItems = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.godlyItems", "false"));
  39.                         itemStatMultiplier = Short.parseShort(props.getProperty("net.sf.odinms.world.itemStatMultiplier"));
  40.                         godlyItemRate = Short.parseShort(props.getProperty("net.sf.odinms.world.godlyItemRate"));
  41.                         multiLevel = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.multiLevel", "false"));
  42.                         levelCap = Integer.parseInt(props.getProperty("net.sf.odinms.world.levelCap"));
  43.                         AB = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.Autoban", "false"));
  44.                         CS = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.CashShop", "false"));
  45.                         MT = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.MTS", "false"));
  46.                         GMItems = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.GMItems", "false"));
  47.                         PvPis = Integer.parseInt(props.getProperty("net.sf.odinms.world.PvPis", "4"));
  48.                         Properties dbProp = new Properties();
  49.                         fr = new FileReader("db.properties");
  50.                         dbProp.load(fr);
  51.                         fr.close();
  52.                         DatabaseConnection.setProps(dbProp);
  53.                         DatabaseConnection.getConnection();
  54.                         wci.serverReady();
  55.                     } catch (Exception e) {
  56.                         System.out.println("Reconnecting failed" + e);
  57.                     }
  58.                     worldReady = true;
  59.                 }
  60.             }
  61.             synchronized (worldReady) {
  62.                 worldReady.notifyAll();
  63.             }
  64.         }
  65.     }
  66.  
  67.     @Override
  68.     public void run() {
  69.         try {
  70.             cwi = new ChannelWorldInterfaceImpl(this);
  71.             wci = worldRegistry.registerChannelServer(key, cwi);
  72.             props = wci.getGameProperties();
  73.             expRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.exp"));
  74.             mesoRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.meso"));
  75.             dropRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.drop"));
  76.             bossdropRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.bossdrop"));
  77.             petExpRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.petExp"));
  78.             serverMessage = props.getProperty("net.sf.odinms.world.serverMessage");
  79.             dropUndroppables = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.alldrop", "false"));
  80.             moreThanOne = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.morethanone", "false"));
  81.             eventSM = new EventScriptManager(this, props.getProperty("net.sf.odinms.channel.events").split(","));
  82.             serverName = props.getProperty("net.sf.odinms.world.serverName");
  83.             godlyItems = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.godlyItems", "false"));
  84.             itemStatMultiplier = Short.parseShort(props.getProperty("net.sf.odinms.world.itemStatMultiplier"));
  85.             godlyItemRate = Short.parseShort(props.getProperty("net.sf.odinms.world.godlyItemRate"));
  86.             multiLevel = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.multiLevel", "false"));
  87.             levelCap = Integer.parseInt(props.getProperty("net.sf.odinms.world.levelCap"));
  88.             AB = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.Autoban", "false"));
  89.             CS = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.CashShop", "false"));
  90.             MT = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.MTS", "false"));
  91.             GMItems = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.GMItems", "false"));
  92.             PvPis = Integer.parseInt(props.getProperty("net.sf.odinms.world.PvPis", "4"));
  93.             Properties dbProp = new Properties();
  94.             FileReader fileReader = new FileReader("db.properties");
  95.             dbProp.load(fileReader);
  96.             fileReader.close();
  97.             DatabaseConnection.setProps(dbProp);
  98.             DatabaseConnection.getConnection();
  99.             Connection c = DatabaseConnection.getConnection();
  100.         } catch (Exception e) {
  101.             throw new RuntimeException(e);
  102.         }
  103.         port = Integer.parseInt(props.getProperty("net.sf.odinms.channel.net.port"));
  104.         ip = props.getProperty("net.sf.odinms.channel.net.interface") + ":" + port;
  105.         ByteBuffer.setUseDirectBuffers(false);
  106.         ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
  107.         acceptor = new SocketAcceptor();
  108.         SocketAcceptorConfig cfg = new SocketAcceptorConfig();
  109.         // cfg.setThreadModel(ThreadModel.MANUAL); // *fingers crossed*, I hope the executor filter handles everything
  110.         // executor = new ThreadPoolExecutor(16, 16, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
  111.         // cfg.getFilterChain().addLast("executor", new ExecutorFilter(executor));
  112.         cfg.getFilterChain().addLast("codec", new ProtocolCodecFilter(new MapleCodecFactory()));
  113.         // Item.loadInitialDataFromDB();
  114.         TimerManager tMan = TimerManager.getInstance();
  115.         tMan.start();
  116.         tMan.register(AutobanManager.getInstance(), 60000);
  117.         try {
  118.             MapleServerHandler serverHandler = new MapleServerHandler(PacketProcessor.getProcessor(PacketProcessor.Mode.CHANNELSERVER), channel);
  119.             acceptor.bind(new InetSocketAddress(port), serverHandler, cfg);
  120.             System.out.println("Channel " + getChannel() + ": Listening on port: " + port);
  121.             wci.serverReady();
  122.             eventSM.init();
  123.         } catch (IOException e) {
  124.             System.out.println("Binding to port " + port + " failed (ch: " + getChannel() + ")" + e);
  125.         }
  126.     }