package com.limegroup.gnutella.search; import com.limegroup.gnutella.ReplyHandler; import com.limegroup.gnutella.messages.QueryRequest; public interface QueryHandlerFactory { /** * Factory constructor for generating a new <tt>QueryHandler</tt> * for the given <tt>QueryRequest</tt>. * * @param handler the <tt>ReplyHandler</tt> for routing the replies * @param counter the <tt>ResultCounter</tt> that keeps track of how * many results have been returned for this query * @return the <tt>QueryHandler</tt> instance for this query */ public QueryHandler createHandler(QueryRequest query, ReplyHandler handler, ResultCounter counter); /** * Factory constructor for generating a new <tt>QueryHandler</tt> * for the given <tt>QueryRequest</tt>. Used by supernodes to run * their own queries (ties up to ForMeReplyHandler.instance()). * * @param guid the <tt>QueryRequest</tt> instance containing data * for this set of queries * @param counter the <tt>ResultCounter</tt> that keeps track of how * many results have been returned for this query * @return the <tt>QueryHandler</tt> instance for this query */ public QueryHandler createHandlerForMe(QueryRequest query, ResultCounter counter); /** * Factory constructor for generating a new <tt>QueryHandler</tt> * for the given <tt>QueryRequest</tt>. * * @param handler the <tt>ReplyHandler</tt> for routing the replies * @param counter the <tt>ResultCounter</tt> that keeps track of how * many results have been returned for this query * @return the <tt>QueryHandler</tt> instance for this query */ public QueryHandler createHandlerForOldLeaf(QueryRequest query, ReplyHandler handler, ResultCounter counter); /** * Factory constructor for generating a new <tt>QueryHandler</tt> * for the given <tt>QueryRequest</tt>. * * @param handler the <tt>ReplyHandler</tt> for routing the replies * @param counter the <tt>ResultCounter</tt> that keeps track of how * many results have been returned for this query * @return the <tt>QueryHandler</tt> instance for this query */ public QueryHandler createHandlerForNewLeaf(QueryRequest query, ReplyHandler handler, ResultCounter counter); }