/* * Copyright (C) 2004-2015 L2J Server * * This file is part of L2J Server. * * L2J Server 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. * * L2J Server 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 java.util.concurrent.ConcurrentHashMap; import com.l2jserver.Config; import com.l2jserver.gameserver.ThreadPoolManager; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; /** * @author -Nemesiss- */ public class WarehouseCacheManager { protected final Map _cachedWh = new ConcurrentHashMap<>(); 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(); } }