Advertisement
Guest User

Untitled

a guest
Feb 14th, 2010
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.19 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement