/* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ package com.l2jserver.gameserver.cache; import java.util.Map; import com.l2jserver.Config; import com.l2jserver.gameserver.ThreadPoolManager; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.util.L2FastMap; /** * @author -Nemesiss- */ public class WarehouseCacheManager { protected final Map _cachedWh = new L2FastMap<>(true); protected final long _cacheTime = Config.WAREHOUSE_CACHE_TIME * 60000L; protected WarehouseCacheManager() { ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new CacheScheduler(), 120000, 60000); } public void addCacheTask(L2PcInstance pc) { _cachedWh.put(pc, System.currentTimeMillis()); } public void remCacheTask(L2PcInstance pc) { _cachedWh.remove(pc); } public class CacheScheduler implements Runnable { @Override public void run() { long cTime = System.currentTimeMillis(); for (L2PcInstance pc : _cachedWh.keySet()) { if ((cTime - _cachedWh.get(pc)) > _cacheTime) { pc.clearWarehouse(); _cachedWh.remove(pc); } } } } public static WarehouseCacheManager getInstance() { return SingletonHolder._instance; } private static class SingletonHolder { protected static final WarehouseCacheManager _instance = new WarehouseCacheManager(); } }