package com.limegroup.gnutella; import org.limewire.util.MediaType; import com.limegroup.gnutella.messages.QueryRequest; /** * Records information about queries so that responses can be validated later. * Typical use is to call record(..) on an outgoing query request, and * score/matchesType/isMandragoreWorm on each incoming response. */ public interface ResponseVerifier { /** Same as record(qr, null). */ public void record(QueryRequest qr); /** * @modifies this * @effects memorizes the query string for qr; this will be used to score * responses later. If type!=null, also memorizes that qr was for the given * media type; otherwise, this is assumed to be for any type. */ public void record(QueryRequest qr, MediaType type); public boolean matchesQuery(byte [] guid, Response response); /** * Returns true if response has the same media type as the * corresponding query request the given GUID. In the rare case * that guid is not known (because this' buffers overflowed), * conservatively returns true. */ public boolean matchesType(byte[] guid, Response response); /** * Returns true if the given response is an instance of the Mandragore * Worm. This worm responds to the query "x" with a 8KB file named * "x.exe". In the rare case that the query for guid can't be found * returns false. */ public boolean isMandragoreWorm(byte[] guid, Response response); }