/* * File : BadIpsImpl.java * Created : 10 nov. 2003} * By : Olivier * * Azureus - a Java Bittorrent client * * 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 2 of the License. * * 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 ( see the LICENSE file ). * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.gudy.azureus2.core3.ipfilter.impl; import java.util.HashMap; import java.util.Map; import org.gudy.azureus2.core3.ipfilter.BadIp; import org.gudy.azureus2.core3.ipfilter.BadIps; import org.gudy.azureus2.core3.util.*; /** * @author Olivier * */ public class BadIpsImpl implements BadIps { private static BadIps instance; private static AEMonitor class_mon = new AEMonitor( "BadIps:class" ); private Map bad_ip_map; private AEMonitor bad_ip_map_mon = new AEMonitor( "BadIps:Map"); public static BadIps getInstance() { try{ class_mon.enter(); if( instance == null ){ instance = new BadIpsImpl(); } return( instance ); }finally{ class_mon.exit(); } } public BadIpsImpl() { bad_ip_map = new HashMap(); } public int addWarningForIp( String ip ) { try{ bad_ip_map_mon.enter(); BadIpImpl bad_ip = (BadIpImpl)bad_ip_map.get( ip ); if ( bad_ip == null ){ bad_ip = new BadIpImpl(ip); bad_ip_map.put( ip, bad_ip ); } return( bad_ip.incrementWarnings()); }finally{ bad_ip_map_mon.exit(); } } public int getNbWarningForIp( String ip) { try{ bad_ip_map_mon.enter(); BadIpImpl bad_ip = (BadIpImpl) bad_ip_map.get(ip); if(bad_ip == null) { return 0; }else{ return bad_ip.getNumberOfWarnings(); } }finally{ bad_ip_map_mon.exit(); } } public BadIp[] getBadIps() { try{ bad_ip_map_mon.enter(); BadIp[] res = new BadIp[bad_ip_map.size()]; bad_ip_map.values().toArray( res ); return( res ); }finally{ bad_ip_map_mon.exit(); } } public void clearBadIps() { try{ bad_ip_map_mon.enter(); bad_ip_map.clear(); }finally{ bad_ip_map_mon.exit(); } } public int getNbBadIps() { return( bad_ip_map.size()); } }