package com.limegroup.gnutella.filters;
import java.util.Set;
import com.limegroup.gnutella.URN;
import com.limegroup.gnutella.filters.response.ResponseFilter;
import com.limegroup.gnutella.filters.response.SearchResultFilter;
import com.limegroup.gnutella.messages.QueryReply;
/**
* A filter that checks query responses, query replies and individual URNs
* against a URN blacklist.
*/
public interface URNFilter extends SpamFilter, ResponseFilter, SearchResultFilter {
/**
* Reloads the blacklist in a different thread and informs the callback,
* unless the callback is null.
*/
void refreshURNs(final LoadCallback callback);
/**
* Returns true if any response in the query reply matches the blacklist.
* Unlike <code>allow(Message)</code>, matching query replies are not
* passed to the spam filter.
*/
boolean isBlacklisted(QueryReply q);
/**
* Returns true if the given URN matches the blacklist.
*/
boolean isBlacklisted(URN urn);
/**
* Returns the blacklisted URNs as base32-encoded strings. For testing.
*/
Set<String> getBlacklist();
}