private GameTimeController() {
    _gameStartTime = getDayStartTime();

    GameServer.getInstance().addListener(new OnStartListenerImpl());

    StringBuilder msg = new StringBuilder();
    msg.append("GameTimeController: initialized.").append(" ");
    msg.append("Current time is ");
    msg.append(getGameHour()).append(":");
    if (getGameMin() < 10) msg.append("0");
    msg.append(getGameMin());
    msg.append(" in the ");
    if (isNowNight()) msg.append("night");
    else msg.append("day");
    msg.append(".");

    _log.info(msg.toString());

    long nightStart = 0;
    long dayStart = 60 * 60 * 1000;

    while (_gameStartTime + nightStart < System.currentTimeMillis())
      nightStart += 4 * 60 * 60 * 1000;

    while (_gameStartTime + dayStart < System.currentTimeMillis()) dayStart += 4 * 60 * 60 * 1000;

    dayStart -= System.currentTimeMillis() - _gameStartTime;
    nightStart -= System.currentTimeMillis() - _gameStartTime;

    ThreadPoolManager.getInstance()
        .scheduleAtFixedRate(_dayChangeNotify, nightStart, 4 * 60 * 60 * 1000L);
    ThreadPoolManager.getInstance()
        .scheduleAtFixedRate(_dayChangeNotify, dayStart, 4 * 60 * 60 * 1000L);
  }
  /** @param args */
  public static void main(String[] args) {
    MethodExample e = new MethodExample();
    e.setArg("321");

    MethodThreadModel methodThreadModel = new MethodThreadModel();
    methodThreadModel.setObject(e);
    methodThreadModel.setType("method");
    methodThreadModel.setMethodName("test");

    ThreadPoolManager.getManager().addThread(methodThreadModel);
    ThreadPoolManager.getManager().startThreadPool();
  }
 @Test
 public void testShutdownGetsNewThreadPool() throws Exception {
   Map<String, Object> cache = new HashMap<String, Object>();
   ThreadPoolBuilder builder =
       new ThreadPoolBuilder(name.getTableNameString(), new Configuration(false));
   ThreadPoolExecutor exec = ThreadPoolManager.getExecutor(builder, cache);
   assertNotNull("Got a null exector from the pool!", exec);
   // shutdown the pool and ensure that it actually shutdown
   exec.shutdown();
   ThreadPoolExecutor exec2 = ThreadPoolManager.getExecutor(builder, cache);
   assertFalse("Got the same exectuor, even though the original shutdown", exec2 == exec);
 }
Example #4
0
 public static synchronized void destory() {
   decreaseUserCount();
   if (sUserCount <= 0 && sSelf != null) {
     sSelf.clearUp();
     sSelf = null;
     sIsPrepare = false;
     sUserCount = 0;
     if (sThemeAppinBilling != null) {
       sThemeAppinBilling.destory();
       sThemeAppinBilling = null;
     }
     // 销毁HttpAdapter
     SimpleHttpAdapter.destory();
     // 销毁HttpTool
     GoStoreHttpTool.destory();
     // 释放ImageManager里面的资源
     ImageManager.destory();
     // 销毁线程池
     ThreadPoolManager.destory();
     // 销毁缓存管理器
     CacheManager.destory();
     GoStoreCacheManager.destory();
     // 退出商店督促gc回收
     System.gc();
     // 把进程杀掉
     android.os.Process.killProcess(android.os.Process.myPid());
   }
 }
Example #5
0
  @Override
  public void run() {
    Bitmap bitmap = null;
    if (imageLoadInfo.isSearchInCache()) {
      bitmap = CacheManager.getImage(imageLoadInfo.getUrl());
    }

    if (bitmap != null) {
      // 缓存命中
      imageLoadInfo.getOnImageLoadListener().loaded(bitmap, imageLoadInfo.getUrl());
    } else {
      L.d(L.TAG, "no hit: start download form" + imageLoadInfo.getUrl());
      try {
        if (!imageLoadInfo.hasProgress()) {
          justDownLoad();
        } else {
          downLoadWithProgress();
        }
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        if (controllerStatus == Constants.CONTROLLER_STATUS_HOLDER) {
          imageLoadInfo.getOnImageLoadListener().loadFail(Message.obtainMessage(e.getMessage()));
        } else {
          L.d(L.TAG, imageLoadInfo.getUrl() + "宿主控制器destroy!");
        }
      }
    }
    ThreadPoolManager.removeTask(this);
  }
 @Test
 public void testShutdownWithReferencesDoesNotStopExecutor() throws Exception {
   Map<String, Object> cache = new HashMap<String, Object>();
   ThreadPoolBuilder builder =
       new ThreadPoolBuilder(name.getTableNameString(), new Configuration(false));
   ThreadPoolExecutor exec = ThreadPoolManager.getExecutor(builder, cache);
   assertNotNull("Got a null exector from the pool!", exec);
   ThreadPoolExecutor exec2 = ThreadPoolManager.getExecutor(builder, cache);
   assertTrue("Should have gotten the same executor", exec2 == exec);
   exec.shutdown();
   assertFalse(
       "Executor is shutting down, even though we have a live reference!",
       exec.isShutdown() || exec.isTerminating());
   exec2.shutdown();
   // wait 5 minutes for thread pool to shutdown
   assertTrue(
       "Executor is NOT shutting down, after releasing live reference!",
       exec.awaitTermination(300, TimeUnit.SECONDS));
 }
  /** @param args */
  public static void main(String[] args) {
    // 注入测试方法
    ThreadPoolManager.getManager()
        .putFreeModel("test1", "com.shine.framework.ThreadPoolUtil.FreeThreadTest", "println");
    // 注入测试方法2
    ThreadPoolManager.getManager()
        .putFreeModel("test2", "com.shine.framework.ThreadPoolUtil.FreeThreadTest2", "println");
    // 注入测试方法3
    FreeThreadTest3 freeThreadTest3 = new FreeThreadTest3();
    ThreadPoolManager.getManager().putFreeModel("test3", freeThreadTest3, "println");

    // 初始化初始线程和最大线程
    ThreadPoolManager.getManager().initFreeThreadPool(2, 100);
    // 启动线程池
    ThreadPoolManager.getManager().startThreadPool();

    ThreadPoolManager.getManager().getFreeThread().setValues("test1", "FreeThreadTest");
    ThreadPoolManager.getManager().getFreeThread().setValues("test2", "FreeThreadTest2");
    ThreadPoolManager.getManager().getFreeThread().setValues("test1", "FreeThreadTest");
    ThreadPoolManager.getManager().getFreeThread().setValues("test1", "FreeThreadTest");
    ThreadPoolManager.getManager().getFreeThread().setValues("test3", "FreeThreadTest3");
  }
  @Test
  public void testGetExpectedExecutorForName() throws Exception {
    Map<String, Object> cache = new HashMap<String, Object>();
    ThreadPoolBuilder builder =
        new ThreadPoolBuilder(name.getTableNameString(), new Configuration(false));
    ThreadPoolExecutor exec = ThreadPoolManager.getExecutor(builder, cache);
    assertNotNull("Got a null exector from the pool!", exec);
    ThreadPoolExecutor exec2 = ThreadPoolManager.getExecutor(builder, cache);
    assertTrue("Got a different exectuor, even though they have the same name", exec2 == exec);
    builder = new ThreadPoolBuilder(name.getTableNameString(), new Configuration(false));
    exec2 = ThreadPoolManager.getExecutor(builder, cache);
    assertTrue(
        "Got a different exectuor, even though they have the same name, but different confs",
        exec2 == exec);

    builder =
        new ThreadPoolBuilder(
            name.getTableNameString() + "-some-other-pool", new Configuration(false));
    exec2 = ThreadPoolManager.getExecutor(builder, cache);
    assertFalse(
        "Got a different exectuor, even though they have the same name, but different confs",
        exec2 == exec);
  }
Example #9
0
    public void run() {
      int currentOnline =
          (int) (L2World.getInstance().getAllPlayers().size() * Config.ONLINE_PLAYERS_MULTIPLIER);

      if (currentOnline == 1) {
        Announcements.getInstance().announceToAll("Сейчас 1 игрок в игре.");
      } else {
        Announcements.getInstance()
            .announceToAll("Сейчас " + currentOnline + " игрока(ов) в игре.");
      }
      if (Config.ONLINE_PLAYERS_ANNOUNCE_INTERVAL > 0)
        ThreadPoolManager.getInstance()
            .scheduleGeneral(new AnnounceOnline(), Config.ONLINE_PLAYERS_ANNOUNCE_INTERVAL);
    }
  public static void shutdownThreadPoolsNow() {
    try {
      ThreadPoolManager.shutdownAllNow();
    } catch (Throwable ex) {
      // Log info:
      {
        Level level = Level.SEVERE;
        Logger logger = log;
        if (logger.isLoggable(level)) {
          String message = "Failure to stop thread pools!";
          logger.log(level, message, ex);
        }
      }

      throw new RuntimeException(ex);
    }
  }
Example #11
0
 public static synchronized void destroyNotKill() {
   decreaseUserCount();
   if (sUserCount <= 0 && sSelf != null) {
     sSelf.clearUp();
     sSelf = null;
     sIsPrepare = false;
     sUserCount = 0;
     // 销毁HttpAdapter
     SimpleHttpAdapter.destory();
     // 释放ImageManager里面的资源
     ImageManager.destory();
     // 销毁线程池
     ThreadPoolManager.destory();
     // 销毁缓存管理器
     CacheManager.destory();
     GoStoreCacheManager.destory();
     // 退出商店督促gc回收
     System.gc();
     // 这里不杀掉进程
   }
 }
  public GameServerStartup() throws Exception {
    long serverLoadStart = System.currentTimeMillis();

    gameServer = this;

    printSection("Database Engine");
    L2DatabaseFactory.getInstance();

    printSection("IDFactory Engine");
    IdFactory.getInstance();
    _log.log(Level.INFO, "IdFactory: Free ObjectID's remaining: " + IdFactory.getInstance().size());

    ThreadPoolManager.getInstance();

    printSection("Engines");
    ScriptsManager.getInstance();
    ServerPacketOpCodeManager.getInstance();

    printSection("World Engine");
    Colors.loadColors();
    GameTimeController.init();
    InstanceManager.getInstance();
    WorldManager.getInstance();
    MapRegionManager.getInstance();
    Announcements.getInstance();
    GlobalVariablesManager.getInstance();
    AccountShareDataTable.getInstance();
    DynamicSpawnData.getInstance();
    ResidenceFunctionData.getInstance();

    printSection("Skills Engine");
    BuffStackGroupData.getInstance();
    EnchantSkillGroupsTable.getInstance();
    SkillTable.getInstance().load(false);
    SkillTreesData.getInstance();

    printSection("Items Engine");
    ItemTable.getInstance().loadClient();
    ItemTable.getInstance().load(false);
    SummonItemsData.getInstance();
    EnchantBonusData.getInstance();
    BuyListData.getInstance();
    MultiSellData.getInstance();
    RecipeData.getInstance();
    // PrimeShopTable.getInstance(); TODO
    ArmorSetsTable.getInstance();
    FishData.getInstance();
    FishingRodsData.getInstance();
    EnchantItemData.getInstance();
    EnchantEffectTable.getInstance();
    CrystallizationData.getInstance();
    SoulCrystalData.getInstance();
    ShapeShiftingItemsData.getInstance();
    HennaTable.getInstance();
    HennaTreeTable.getInstance();
    AugmentationData.getInstance();
    ItemPriceData.getInstance();
    AbilityPointsData.getInstance();
    AlchemyDataTable.getInstance();

    printSection("Characters Engine");
    CharTemplateTable.getInstance();
    ClassTemplateTable.getInstance();
    CharNameTable.getInstance();
    ExperienceTable.getInstance();
    AdminTable.getInstance();
    RaidBossPointsManager.getInstance();
    RelationListManager.getInstance();
    PetDataTable.getInstance();
    CharSummonTable.getInstance();
    SummonPointsTable.getInstance();
    HitConditionBonus.getInstance();
    ObsceneFilterTable.getInstance();

    printSection("Clans Engine");
    ClanTable.getInstance();
    ClanTable.getInstance().restoreWars();
    ClanHallSiegeManager.getInstance();
    ClanHallManager.getInstance();
    AuctionManager.getInstance();

    printSection("Geodata Engine");
    GeoEngine.init();
    PathFinding.init();
    DoorGeoEngine.init();

    printSection("NPCs Engine");
    HerbDropTable.getInstance();
    NpcTable.getInstance();
    AutoChatDataTable.getInstance();
    NpcWalkerRoutesData.getInstance();
    WalkingManager.getInstance();
    ZoneManager.getInstance();
    StaticObjectsData.getInstance();
    ItemAuctionManager.getInstance();
    CastleManager.getInstance();
    FortManager.getInstance().init();
    SpawnTable.getInstance();
    AutoSpawnHandler.getInstance();
    HellboundManager.getInstance();
    RaidBossSpawnManager.getInstance();
    DayNightSpawnManager.getInstance().trim().notifyChangeMode();
    GrandBossManager.getInstance().initZones();
    FourSepulchersManager.getInstance().init();
    TeleportListTable.getInstance();
    BeautyShopData.getInstance();
    CustomDropListDataXml.getInstance();

    printSection("Residence Siege Engine");
    CastleSiegeManager.getInstance().getSieges();
    FortSpawnList.getInstance();
    FortSiegeManager.getInstance();
    CastleManorManager.getInstance();
    CastleMercTicketManager.getInstance();
    ManorData.getInstance();
    ResidenceSiegeMusicList.getInstance();

    printSection("Olympiad Engine");
    Olympiad.getInstance();
    HeroManager.getInstance();

    printSection("Cache Engine");
    CrestCache.getInstance();
    HtmCache.getInstance();

    PartyMatchWaitingList.getInstance();
    PartyMatchRoomList.getInstance();
    PetitionManager.getInstance();
    CursedWeaponsManager.getInstance();
    CommunityBuffTable.getInstance();
    CommunityTeleportData.getInstance();

    printSection("Mods Engine");
    PcCafePointsManager.getInstance();

    if (Config.MMO_TOP_MANAGER_ENABLED) {
      MMOTopManager.getInstance();
    }
    if (Config.L2_TOP_MANAGER_ENABLED) {
      L2TopManager.getInstance();
    }

    printSection("Handlers Engine");
    ActionHandler.getInstance();
    ActionShiftHandler.getInstance();
    AdminCommandHandler.getInstance();
    BypassCommandManager.getInstance();
    ChatCommandManager.getInstance();
    EffectHandler.getInstance();
    ItemHandler.getInstance();
    SkillHandler.getInstance();
    TargetHandler.getInstance();
    TransformHandler.getInstance();
    UserCommandManager.getInstance();
    VoicedHandlerManager.getInstance();

    printSection("Transformations Engine");
    TransformationManager.getInstance();
    TransformationManager.getInstance().report();

    printSection("Jump Engine");
    CharJumpRoutesTable.getInstance();

    printSection("Commission Engine");
    CommissionManager.getInstance();

    printSection("ClanSearch Engine");
    ClanSearchManager.getInstance();

    printSection("Awakening Engine");
    AwakeningManager.getInstance();

    printSection("World Statistics Engine");
    if (ConfigWorldStatistic.WORLD_STATISTIC_ENABLED) {
      WorldStatisticsManager.getInstance();
    } else {
      _log.log(Level.INFO, "World Statistic Engine Disabled");
    }

    printSection("Quests Engine");
    QuestManager.getInstance();
    DynamicQuestManager.getInstance();
    BoatManager.getInstance();
    AirShipManager.getInstance();
    ShuttleManager.getInstance();
    GraciaSeedsManager.getInstance();
    if (Config.ALLOW_WEDDING) {
      WeddingManager.getInstance();
    }
    AutoChatDataTable.getInstance().setAutoChatActive(true);

    printSection("Scripts Engine");
    ScriptsManager.getInstance().executeCoreScripts();

    TaskManager.getInstance();

    QuestManager.getInstance().report();

    if (Config.SAVE_DROPPED_ITEM) {
      ItemsOnGroundManager.getInstance();
    }

    if (Config.AUTODESTROY_ITEM_AFTER > 0 || Config.HERB_AUTO_DESTROY_TIME > 0) {
      ItemsOnGroundAutoDestroyManager.getInstance();
    }

    CastleManager.getInstance().spawnDoors();
    FortManager.getInstance().spawnDoors();

    if (Config.ALLOW_MAIL) {
      MailManager.getInstance();
    }

    MentorManager.getInstance();
    DuelManager.getInstance();

    Runtime.getRuntime().addShutdownHook(GameServerShutdown.getInstance());

    _log.log(Level.INFO, "IdFactory: Free ObjectID's remaining: " + IdFactory.getInstance().size());

    EventManager.getEventsInstances();

    KnownListUpdateTaskManager.getInstance();

    if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.RESTORE_OFFLINERS) {
      OfflineTradersTable.restoreOfflineTraders();
    }

    if (Config.DEADLOCK_DETECTOR) {
      _deadDetectThread = new DeadLockDetector();
      _deadDetectThread.setDaemon(true);
      _deadDetectThread.start();
    } else {
      _deadDetectThread = null;
    }

    printSection("Finalization");
    System.runFinalization();
    System.gc();
    Util.printMemoryInfo();
    Util.printCpuInfo();
    Util.printOSInfo();
    Toolkit.getDefaultToolkit().beep();

    printSection("Server Thread");
    LoginServerThread.getInstance().start();

    SelectorConfig sc = new SelectorConfig();
    sc.MAX_READ_PER_PASS = Config.MMO_MAX_READ_PER_PASS;
    sc.MAX_SEND_PER_PASS = Config.MMO_MAX_SEND_PER_PASS;
    sc.SLEEP_TIME = Config.MMO_SELECTOR_SLEEP_TIME;
    sc.HELPER_BUFFER_COUNT = Config.MMO_HELPER_BUFFER_COUNT;
    sc.TCP_NODELAY = Config.MMO_TCP_NODELAY;

    _gamePacketHandler = new L2GamePacketHandler();
    _selectorThread =
        new SelectorThread<>(
            sc, _gamePacketHandler, _gamePacketHandler, _gamePacketHandler, new IPv4Filter());

    InetAddress bindAddress = null;
    if (!Config.GAMESERVER_HOSTNAME.equals("*")) {
      try {
        bindAddress = InetAddress.getByName(Config.GAMESERVER_HOSTNAME);
      } catch (UnknownHostException e1) {
        _log.log(
            Level.ERROR,
            "GameServerStartup: The GameServer bind address is invalid, using all avaliable IPs. Reason: "
                + e1.getMessage(),
            e1);
      }
    }

    try {
      _selectorThread.openServerSocket(bindAddress, Config.PORT_GAME);
    } catch (IOException e) {
      _log.log(
          Level.FATAL,
          "GameServerStartup:: Failed to open server socket. Reason: " + e.getMessage(),
          e);
      System.exit(1);
    }
    _selectorThread.start();
    _log.log(Level.INFO, "Maximum Numbers of Connected Players: " + Config.MAXIMUM_ONLINE_USERS);
    long serverLoadEnd = System.currentTimeMillis();
    _log.log(
        Level.INFO, "Server Loaded in " + (serverLoadEnd - serverLoadStart) / 1000L + " seconds");

    AutoAnnounceTaskManager.getInstance();

    XMLRPCServer.getInstance();
  }
 @Override
 public void onStart() {
   ThreadPoolManager.getInstance().execute(_dayChangeNotify);
 }
Example #14
0
  @SuppressWarnings("unchecked")
  public GameServer() throws Exception {
    _instance = this;
    _serverStarted = time();
    _listeners = new GameServerListenerList();

    new File("./log/").mkdir();

    version = new Version(GameServer.class);

    _log.info("=================================================");
    _log.info("Project Revision: ........ " + PROJECT_REVISION);
    _log.info("Build Revision: .......... " + version.getRevisionNumber());
    _log.info("Update: .................. " + UPDATE_NAME);
    _log.info("Build date: .............. " + version.getBuildDate());
    _log.info("Compiler version: ........ " + version.getBuildJdk());
    _log.info("=================================================");
    Clients.Load();
    // Initialize config
    Config.load();
    // Check binding address
    checkFreePorts();
    // Initialize database
    Class.forName(Config.DATABASE_DRIVER).newInstance();
    DatabaseFactory.getInstance().getConnection().close();

    IdFactory _idFactory = IdFactory.getInstance();
    if (!_idFactory.isInitialized()) {
      _log.error("Could not read object IDs from DB. Please Check Your Data.");
      throw new Exception("Could not initialize the ID factory");
    }

    CacheManager.getInstance();

    ThreadPoolManager.getInstance();

    LfcDAO.LoadArenas();
    LfcStatisticDAO.LoadGlobalStatistics();
    LfcStatisticDAO.LoadLocalStatistics();

    CustomStatsDAO.LoadCustomValues();

    PremiumAccountRatesHolder.loadLists();

    BotCheckManager.loadBotQuestions();

    FreePremiumAccountsDao.LoadTable();

    HidenItemsDAO.LoadAllHiddenItems();

    CustomHeroDAO.getInstance();

    HWIDBan.getInstance().load();

    Scripts.getInstance();

    GeoEngine.load();

    Strings.reload();

    GameTimeController.getInstance();

    World.init();

    Parsers.parseAll();

    ItemsDAO.getInstance();

    CrestCache.getInstance();

    ImagesCache.getInstance();

    CharacterDAO.getInstance();

    ClanTable.getInstance();

    DailyQuestsManager.EngageSystem();

    //		FakePlayersTable.getInstance();
    SkillTreeTable.getInstance();

    SubClassTable.getInstance();

    EnchantHPBonusTable.getInstance();

    PetSkillsTable.getInstance();

    ItemAuctionManager.getInstance();

    SpawnManager.getInstance().spawnAll();

    FakePlayersSpawnManager.getInstance().spawnAll();

    StaticObjectHolder.getInstance().spawnAll();

    RaidBossSpawnManager.getInstance();

    Scripts.getInstance().init();

    ItemHolder.getInstance().initItems();

    DimensionalRiftManager.getInstance();

    Announcements.getInstance();

    LotteryManager.getInstance();

    PlayerMessageStack.getInstance();

    if (Config.AUTODESTROY_ITEM_AFTER > 0) ItemsAutoDestroy.getInstance();

    MonsterRace.getInstance();

    if (Config.ENABLE_OLYMPIAD) {
      Olympiad.load();
      Hero.getInstance();
    }

    PetitionManager.getInstance();

    CursedWeaponsManager.getInstance();

    if (Config.ALLOW_WEDDING) {
      CoupleManager.getInstance();
    }

    ItemHandler.getInstance();

    AdminCommandHandler.getInstance().log();
    UserCommandHandler.getInstance().log();
    VoicedCommandHandler.getInstance().log();

    TaskManager.getInstance();

    _log.info("=[Events]=========================================");
    ResidenceHolder.getInstance().callInit();
    EventHolder.getInstance().callInit();
    _log.info("==================================================");

    BoatHolder.getInstance().spawnAll();
    CastleManorManager.getInstance();

    Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());

    _log.info("IdFactory: Free ObjectID's remaining: " + IdFactory.getInstance().size());

    if (Config.ALT_FISH_CHAMPIONSHIP_ENABLED) FishingChampionShipManager.getInstance();

    HellboundManager.getInstance();

    NaiaTowerManager.getInstance();
    NaiaCoreManager.getInstance();

    SoDManager.getInstance();
    SoIManager.getInstance();
    SoHManager.getInstance();

    MiniGameScoreManager.getInstance();

    CommissionManager.getInstance().init();

    WorldStatisticsManager.getInstance();
    ArcanManager.getInstance();
    ToIManager.getInstance();
    ParnassusManager.getInstance();
    BaltusManager.getInstance();
    Shutdown.getInstance().schedule(Config.RESTART_AT_TIME, Shutdown.RESTART);

    /* CCP Guard START
    ccpGuard.Protection.Init();
    ** CCP Guard END*/

    _log.info("GameServer Started");
    _log.info("Maximum Numbers of Connected Players: " + Config.MAXIMUM_ONLINE_USERS);

    GamePacketHandler gph = new GamePacketHandler();

    InetAddress serverAddr =
        Config.GAMESERVER_HOSTNAME.equalsIgnoreCase("*")
            ? null
            : InetAddress.getByName(Config.GAMESERVER_HOSTNAME);

    _selectorThreads = new ArrayList<SelectorThread<GameClient>>(Config.PORTS_GAME.length);
    for (int i = 0; i < Config.PORTS_GAME.length; i++) {
      SelectorThread<GameClient> selectorThread =
          new SelectorThread<GameClient>(Config.SELECTOR_CONFIG, gph, gph, gph, null);
      selectorThread.openServerSocket(serverAddr, Config.PORTS_GAME[i]);
      selectorThread.start();
      _selectorThreads.add(i, selectorThread);
    }

    AuthServerCommunication.getInstance().start();

    if (Config.SERVICES_OFFLINE_TRADE_RESTORE_AFTER_RESTART)
      ThreadPoolManager.getInstance().schedule(new RestoreOfflineTraders(), 30000L);

    if (Config.ONLINE_GENERATOR_ENABLED)
      ThreadPoolManager.getInstance()
          .scheduleAtFixedRate(
              new OnlineTxtGenerator(), 5000L, Config.ONLINE_GENERATOR_DELAY * 60 * 1000L);

    getListeners().onStart();

    if (Config.IS_TELNET_ENABLED) statusServer = new TelnetServer();
    else _log.info("Telnet server is currently disabled.");

    _log.info("=================================================");
    String memUsage = new StringBuilder().append(StatsUtils.getMemUsage()).toString();
    for (String line : memUsage.split("\n")) _log.info(line);
    _log.info("=================================================");
  }
Example #15
0
 private OnlinePlayers() {
   ThreadPoolManager.getInstance()
       .scheduleGeneral(new AnnounceOnline(), Config.ONLINE_PLAYERS_ANNOUNCE_INTERVAL);
 }
Example #16
0
  public Bitmap loadImage(
      final String imageName,
      final String imgUrl,
      final boolean isbusy,
      final ImageCallback callback) {

    Bitmap bitmap = null;
    if (imageCache.containsKey(imgUrl)) {
      SoftReference<Bitmap> softReference = imageCache.get(imgUrl);
      bitmap = softReference.get();
      if (bitmap != null) {
        Log.i("m", "从内存获得图片成功。。");
        callback.loadImage(bitmap, imgUrl);
        return bitmap;
      }
    }
    // if(!isbusy){
    // 从本地获取图片
    bitmap = getBitmapFromData(imageName, mContext);
    // System.out.println("从本地获取图片");
    // }
    if (bitmap != null) {
      imageCache.put(imgUrl, new SoftReference<Bitmap>(bitmap));
      Log.i("m", "从本地获得图片成功。。");
      callback.loadImage(bitmap, imgUrl);
      return bitmap;
    } else { // 从网络获取图片
      final Handler handler =
          new Handler() {
            @Override
            public void handleMessage(Message msg) {
              if (msg.obj != null) {
                synchronized (imageCache) {
                  Map<String, Bitmap> bitmapMap = (Map) msg.obj;
                  for (String str : bitmapMap.keySet()) {
                    mbitmap = bitmapMap.get(str);
                    url = str;
                    imageCache.put(url, new SoftReference<Bitmap>(mbitmap));
                  }

                  if (android.os.Environment.getExternalStorageState()
                      .equals(android.os.Environment.MEDIA_MOUNTED)) {
                    try {
                      String imageName = url.substring(url.lastIndexOf("/") + 1, url.length());
                      if (!imageName.endsWith(".jpg") && !imageName.endsWith(".png")) {
                        imageName += ".png";
                      }
                      String mImagePath = ImageUtil.IMAGE_PATH + imageName;
                      /*if (url.endsWith(".png")) {
                      	saveImagePng(mImagePath, mbitmap);
                      } else if (url.endsWith(".jpg")) {
                      	saveImageJpeg(mImagePath, mbitmap);
                      }*/
                      saveBitmapToData(imageName, mbitmap, mContext);
                      // System.out.println("向SD卡获取图片");

                    } catch (Exception e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                    }
                  }

                  callback.loadImage(mbitmap, url);
                }
              }
            }
          };

      getImageRunnable run = new getImageRunnable(imgUrl, handler, callback);
      ThreadPoolManager.getInstance().addTask(run);
    }
    return bitmap;
  }