package com.limegroup.gnutella.library; import org.limewire.core.settings.DHTSettings; import org.limewire.setting.evt.SettingEvent; import org.limewire.setting.evt.SettingListener; import org.limewire.util.RPNParser; import com.google.inject.Inject; import com.google.inject.Singleton; @Singleton public class RareFileStrategyImpl implements RareFileStrategy { private volatile RPNParser parser; @Inject RareFileStrategyImpl() { parser = new RPNParser(DHTSettings.RARE_FILE_DEFINITION.get()); DHTSettings.RARE_FILE_DEFINITION.addSettingListener(new SettingListener() { @Override public void settingChanged(SettingEvent evt) { parser = new RPNParser(DHTSettings.RARE_FILE_DEFINITION.get()); } }); } public boolean isRareFile(FileDesc fd) { try { return parser.evaluate(fd); } catch (IllegalArgumentException badSimpp) { return false; } } }