package com.limegroup.gnutella.messages;
import java.util.Locale;
import java.util.Set;
import org.limewire.core.api.search.SearchCategory;
import org.limewire.core.settings.SearchSettings;
import org.limewire.io.GGEP;
import org.limewire.io.GUID;
import org.limewire.security.AddressSecurityToken;
import org.limewire.security.MACCalculatorRepositoryManager;
import org.limewire.util.OSUtils;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.limegroup.gnutella.NetworkManager;
import com.limegroup.gnutella.URN;
import com.limegroup.gnutella.UrnSet;
import com.limegroup.gnutella.messages.Message.Network;
import com.limegroup.gnutella.xml.LimeXMLDocumentFactory;
@Singleton
public class QueryRequestFactoryImpl implements QueryRequestFactory {
private final NetworkManager networkManager;
private final LimeXMLDocumentFactory limeXMLDocumentFactory;
private final MACCalculatorRepositoryManager MACCalculatorRepositoryManager;
@Inject
public QueryRequestFactoryImpl(NetworkManager networkManager,
LimeXMLDocumentFactory limeXMLDocumentFactory,
MACCalculatorRepositoryManager MACCalculatorRepositoryManager) {
this.networkManager = networkManager;
this.limeXMLDocumentFactory = limeXMLDocumentFactory;
this.MACCalculatorRepositoryManager = MACCalculatorRepositoryManager;
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createRequery(com.limegroup.gnutella.URN)
*/
public QueryRequest createRequery(URN sha1) {
if (sha1 == null) {
throw new NullPointerException("null sha1");
}
Set<URN> sha1Set = new UrnSet(sha1);
return createQueryRequest(QueryRequestImpl.newQueryGUID(true),
QueryRequest.DEFAULT_TTL, QueryRequest.DEFAULT_URN_QUERY, "",
sha1Set, null, !networkManager.acceptedIncomingConnection(),
Network.UNKNOWN, false, 0, false, 0);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQuery(com.limegroup.gnutella.URN)
*/
public QueryRequest createQuery(URN sha1) {
if (sha1 == null) {
throw new NullPointerException("null sha1");
}
Set<URN> sha1Set = new UrnSet(sha1);
return createQueryRequest(QueryRequestImpl.newQueryGUID(false),
QueryRequest.DEFAULT_TTL, QueryRequest.DEFAULT_URN_QUERY, "",
sha1Set, null, !networkManager.acceptedIncomingConnection(),
Network.UNKNOWN, false, 0, false, 0);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQuery(com.limegroup.gnutella.URN, java.lang.String)
*/
public QueryRequest createQuery(URN sha1, String filename) {
if (sha1 == null) {
throw new NullPointerException("null sha1");
}
if (filename == null) {
throw new NullPointerException("null query");
}
if (filename.length() == 0) {
filename = QueryRequest.DEFAULT_URN_QUERY;
}
Set<URN> sha1Set = new UrnSet(sha1);
return createQueryRequest(QueryRequestImpl.newQueryGUID(false),
QueryRequest.DEFAULT_TTL, filename, "", sha1Set, null,
!networkManager.acceptedIncomingConnection(), Network.UNKNOWN,
false, 0, false, 0);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createRequery(com.limegroup.gnutella.URN, byte)
*/
public QueryRequest createRequery(URN sha1, byte ttl) {
if (sha1 == null) {
throw new NullPointerException("null sha1");
}
if (ttl <= 0 || ttl > 6) {
throw new IllegalArgumentException("invalid TTL: " + ttl);
}
Set<URN> sha1Set = new UrnSet(sha1);
return createQueryRequest(QueryRequestImpl.newQueryGUID(true), ttl,
QueryRequest.DEFAULT_URN_QUERY, "", sha1Set, null,
!networkManager.acceptedIncomingConnection(), Network.UNKNOWN,
false, 0, false, 0);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQuery(java.util.Set)
*/
public QueryRequest createQuery(Set<? extends URN> urnSet) {
if (urnSet == null)
throw new NullPointerException("null urnSet");
return createQueryRequest(QueryRequestImpl.newQueryGUID(false),
QueryRequest.DEFAULT_TTL, QueryRequest.DEFAULT_URN_QUERY, "",
urnSet, null, !networkManager.acceptedIncomingConnection(),
Network.UNKNOWN, false, 0, false, 0);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createRequery(java.lang.String)
*/
public QueryRequest createRequery(String query) {
if (query == null) {
throw new NullPointerException("null query");
}
if (query.length() == 0) {
throw new IllegalArgumentException("empty query");
}
return create(QueryRequestImpl.newQueryGUID(true), query);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQuery(java.lang.String)
*/
public QueryRequest createQuery(String query) {
if (query == null) {
throw new NullPointerException("null query");
}
if (query.length() == 0) {
throw new IllegalArgumentException("empty query");
}
return create(QueryRequestImpl.newQueryGUID(false), query);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createOutOfBandQuery(byte[], java.lang.String, java.lang.String)
*/
public QueryRequest createOutOfBandQuery(byte[] guid, String query,
String xmlQuery) {
if (query == null) {
throw new NullPointerException("null query");
}
if (xmlQuery == null) {
throw new NullPointerException("null xml query");
}
if (query.length() == 0 && xmlQuery.length() == 0) {
throw new IllegalArgumentException("empty query");
}
if (xmlQuery.length() != 0 && !xmlQuery.startsWith("<?xml")) {
throw new IllegalArgumentException("invalid XML");
}
return create(guid, QueryRequest.DEFAULT_TTL, query, xmlQuery, true);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createOutOfBandQuery(byte[], java.lang.String, java.lang.String, com.limegroup.gnutella.MediaType)
*/
public QueryRequest createOutOfBandQuery(byte[] guid, String query,
String xmlQuery, SearchCategory type) {
if (query == null) {
throw new NullPointerException("null query");
}
if (xmlQuery == null) {
throw new NullPointerException("null xml query");
}
if (query.length() == 0 && xmlQuery.length() == 0) {
throw new IllegalArgumentException("empty query");
}
if (xmlQuery.length() != 0 && !xmlQuery.startsWith("<?xml")) {
throw new IllegalArgumentException("invalid XML");
}
return create(guid, QueryRequest.DEFAULT_TTL, query, xmlQuery, true,
type);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createOutOfBandQuery(java.lang.String, byte[], int)
*/
public QueryRequest createOutOfBandQuery(String query, byte[] ip, int port) {
byte[] guid = GUID.makeAddressEncodedGuid(ip, port);
return createOutOfBandQuery(guid, query, "");
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createWhatIsNewQuery(byte[], byte)
*/
public QueryRequest createWhatIsNewQuery(byte[] guid, byte ttl) {
return createWhatIsNewQuery(guid, ttl, null);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createWhatIsNewQuery(byte[], byte, com.limegroup.gnutella.MediaType)
*/
public QueryRequest createWhatIsNewQuery(byte[] guid, byte ttl,
SearchCategory type) {
if (ttl < 1)
throw new IllegalArgumentException("Bad TTL.");
return createQueryRequest(guid, ttl,
QueryRequest.WHAT_IS_NEW_QUERY_STRING, "", null, null,
!networkManager.acceptedIncomingConnection(), Network.UNKNOWN,
false, FeatureSearchData.WHAT_IS_NEW, false, getMetaFlag(type));
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createWhatIsNewOOBQuery(byte[], byte)
*/
public QueryRequest createWhatIsNewOOBQuery(byte[] guid, byte ttl) {
return createWhatIsNewOOBQuery(guid, ttl, null);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createWhatIsNewOOBQuery(byte[], byte, com.limegroup.gnutella.MediaType)
*/
public QueryRequest createWhatIsNewOOBQuery(byte[] guid, byte ttl,
SearchCategory type) {
if (ttl < 1)
throw new IllegalArgumentException("Bad TTL.");
return createQueryRequest(guid, ttl,
QueryRequest.WHAT_IS_NEW_QUERY_STRING, "", null, null,
!networkManager.acceptedIncomingConnection(), Network.UNKNOWN,
true, FeatureSearchData.WHAT_IS_NEW, false, getMetaFlag(type));
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQuery(java.lang.String, java.lang.String)
*/
public QueryRequest createQuery(String query, String xmlQuery) {
if (query == null) {
throw new NullPointerException("null query");
}
if (xmlQuery == null) {
throw new NullPointerException("null xml query");
}
if (query.length() == 0 && xmlQuery.length() == 0) {
throw new IllegalArgumentException("empty query");
}
if (xmlQuery.length() != 0 && !xmlQuery.startsWith("<?xml")) {
throw new IllegalArgumentException("invalid XML");
}
return create(QueryRequestImpl.newQueryGUID(false), query, xmlQuery);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQuery(java.lang.String, byte)
*/
public QueryRequest createQuery(String query, byte ttl) {
if (query == null) {
throw new NullPointerException("null query");
}
if (query.length() == 0) {
throw new IllegalArgumentException("empty query");
}
if (ttl <= 0 || ttl > 6) {
throw new IllegalArgumentException("invalid TTL: " + ttl);
}
return create(QueryRequestImpl.newQueryGUID(false), ttl, query);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQuery(byte[], java.lang.String, java.lang.String)
*/
public QueryRequest createQuery(byte[] guid, String query, String xmlQuery) {
return createQuery(guid, query, xmlQuery, null);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQuery(byte[], java.lang.String, java.lang.String, com.limegroup.gnutella.MediaType)
*/
public QueryRequest createQuery(byte[] guid, String query, String xmlQuery,
SearchCategory type) {
if (guid == null) {
throw new NullPointerException("null guid");
}
if (guid.length != 16) {
throw new IllegalArgumentException("invalid guid length");
}
if (query == null) {
throw new NullPointerException("null query");
}
if (xmlQuery == null) {
throw new NullPointerException("null xml query");
}
if (query.length() == 0 && xmlQuery.length() == 0) {
throw new IllegalArgumentException("empty query");
}
if (xmlQuery.length() != 0 && !xmlQuery.startsWith("<?xml")) {
throw new IllegalArgumentException("invalid XML");
}
return create(guid, QueryRequest.DEFAULT_TTL, query, xmlQuery, type);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createProxyQuery(com.limegroup.gnutella.messages.QueryRequest, byte[])
*/
public QueryRequest createProxyQuery(QueryRequest qr, byte[] guid) {
if (guid.length != 16)
throw new IllegalArgumentException("bad guid size: " + guid.length);
// i can't just call a new constructor, since there might be stuff in
// the payload we don't understand and would get lost
byte[] payload = qr.getPayload();
byte[] newPayload = new byte[payload.length];
System.arraycopy(payload, 0, newPayload, 0, newPayload.length);
// disable old out of band if requested
if (SearchSettings.DISABLE_OOB_V2.getBoolean())
newPayload[0] &= ~QueryRequest.SPECIAL_OUTOFBAND_MASK;
else
newPayload[0] |= QueryRequest.SPECIAL_OUTOFBAND_MASK;
GGEP ggep = new GGEP(true);
// signal oob capability
ggep.put(GGEPKeys.GGEP_HEADER_SECURE_OOB);
try {
newPayload = QueryRequestImpl.patchInGGEP(newPayload, ggep, MACCalculatorRepositoryManager);
return createNetworkQuery(guid, qr.getTTL(), qr.getHops(),
newPayload, qr.getNetwork());
} catch (BadPacketException ioe) {
throw new IllegalArgumentException(ioe.getMessage());
}
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createDoNotProxyQuery(com.limegroup.gnutella.messages.QueryRequest)
*/
public QueryRequest createDoNotProxyQuery(QueryRequest qr) {
if (!GUID.isLimeGUID(qr.getGUID())) {
throw new IllegalArgumentException(
"query request from different vendor cannot not be unmarked");
}
if (!qr.isOriginated()) {
throw new IllegalArgumentException("query not originated from here");
}
// only used for queries understood by us
// so we can use the copy constructor and set OOB to false
return createQueryRequest(qr.getGUID(), qr.getTTL(), qr.getMinSpeed(),
qr.getQuery(), qr.getRichQueryString(), qr.getQueryUrns(), qr
.getQueryKey(), qr.isFirewalledSource(), qr
.getNetwork(), qr.desiresOutOfBandReplies(), qr
.getFeatureSelector(), true, qr.getMetaMask(), false); // no
// normalization
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQuery(com.limegroup.gnutella.messages.QueryRequest, byte)
*/
public QueryRequest createQuery(QueryRequest qr, byte ttl) {
// Construct a query request that is EXACTLY like the other query,
// but with a different TTL.
try {
return createNetworkQuery(qr.getGUID(), ttl, qr.getHops(), qr
.getPayload(), qr.getNetwork());
} catch (BadPacketException ioe) {
throw new IllegalArgumentException(ioe);
}
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#unmarkOOBQuery(com.limegroup.gnutella.messages.QueryRequest)
*/
public QueryRequest unmarkOOBQuery(QueryRequest qr) {
if (!GUID.isLimeGUID(qr.getGUID())) {
throw new IllegalArgumentException(
"query request from different vendor cannot not be unmarked");
}
// only used for queries understood by us
// so we can use the copy constructor and set OOB to false
return createQueryRequest(qr.getGUID(), qr.getTTL(), qr.getQuery(), qr
.getRichQueryString(), qr.getQueryUrns(), qr.getQueryKey(), qr
.isFirewalledSource(), qr.getNetwork(), false, qr
.getFeatureSelector(), qr.doNotProxy(), qr.getMetaMask());
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQueryKeyQuery(java.lang.String, org.limewire.security.AddressSecurityToken)
*/
public QueryRequest createQueryKeyQuery(String query,
AddressSecurityToken key) {
if (query == null) {
throw new NullPointerException("null query");
}
if (query.length() == 0) {
throw new IllegalArgumentException("empty query");
}
if (key == null) {
throw new NullPointerException("null query key");
}
return createQueryRequest(QueryRequestImpl.newQueryGUID(false), (byte) 1,
query, "", URN.NO_URN_SET, key, !networkManager
.acceptedIncomingConnection(), Network.UNKNOWN, false,
0, false, 0);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQueryKeyQuery(com.limegroup.gnutella.URN, org.limewire.security.AddressSecurityToken)
*/
public QueryRequest createQueryKeyQuery(URN sha1, AddressSecurityToken key) {
if (sha1 == null) {
throw new NullPointerException("null sha1");
}
if (key == null) {
throw new NullPointerException("null query key");
}
Set<URN> sha1Set = new UrnSet(sha1);
return createQueryRequest(QueryRequestImpl.newQueryGUID(false), (byte) 1,
QueryRequest.DEFAULT_URN_QUERY, "", sha1Set, key,
!networkManager.acceptedIncomingConnection(), Network.UNKNOWN,
false, 0, false, 0);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createMulticastQuery(byte[], com.limegroup.gnutella.messages.QueryRequest)
*/
public QueryRequest createMulticastQuery(byte[] guid, QueryRequest qr) {
if (qr == null)
throw new NullPointerException("null query");
// modify the payload to not be OOB.
byte[] payload = qr.getPayload();
byte[] newPayload = new byte[payload.length];
System.arraycopy(payload, 0, newPayload, 0, newPayload.length);
newPayload[0] &= ~QueryRequest.SPECIAL_OUTOFBAND_MASK;
newPayload[0] |= QueryRequest.SPECIAL_XML_MASK;
try {
return createNetworkQuery(guid, (byte) 1, qr.getHops(), newPayload,
Network.MULTICAST);
} catch (BadPacketException ioe) {
throw new IllegalArgumentException(ioe.getMessage());
}
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQueryKeyQuery(com.limegroup.gnutella.messages.QueryRequest, org.limewire.security.AddressSecurityToken)
*/
public QueryRequest createQueryKeyQuery(QueryRequest qr,
AddressSecurityToken key) {
// TODO: Copy the payload verbatim, except add the query-key
// into the GGEP section.
return createQueryRequest(qr.getGUID(), qr.getTTL(), qr.getQuery(), qr
.getRichQueryString(), qr.getQueryUrns(), key, qr
.isFirewalledSource(), Network.UNKNOWN, qr
.desiresOutOfBandReplies(), qr.getFeatureSelector(), false, qr
.getMetaMask());
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createNonFirewalledQuery(java.lang.String, byte)
*/
public QueryRequest createNonFirewalledQuery(String query, byte ttl) {
return createQueryRequest(QueryRequestImpl.newQueryGUID(false), ttl, query,
"", URN.NO_URN_SET, null, false, Network.UNKNOWN, false, 0,
false, 0);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createNetworkQuery(byte[], byte, byte, byte[], com.limegroup.gnutella.messages.Message.Network)
*/
public QueryRequest createNetworkQuery(byte[] guid, byte ttl, byte hops,
byte[] payload, Network network) throws BadPacketException {
return new QueryRequestImpl(guid, ttl, hops, payload, network, limeXMLDocumentFactory, MACCalculatorRepositoryManager);
}
/**
* Builds a new query from scratch, with no metadata, using the given GUID.
* Whether or not this is a repeat query is encoded in guid. GUID must have
* been created via newQueryGUID; this allows the caller to match up results
*/
private QueryRequest create(byte[] guid, String query) {
return create(guid, query, "");
}
/**
* Builds a new query from scratch, with no metadata, using the given GUID.
* Whether or not this is a repeat query is encoded in guid. GUID must have
* been created via newQueryGUID; this allows the caller to match up results
*/
private QueryRequest create(byte[] guid, byte ttl, String query) {
return create(guid, ttl, query, "");
}
/**
* Builds a new query from scratch, with no metadata, using the given GUID.
* Whether or not this is a repeat query is encoded in guid. GUID must have
* been created via newQueryGUID; this allows the caller to match up results
*/
private QueryRequest create(byte[] guid, String query, String xmlQuery) {
return create(guid, QueryRequest.DEFAULT_TTL, query, xmlQuery);
}
/**
* Builds a new query from scratch, with metadata, using the given GUID.
* Whether or not this is a repeat query is encoded in guid. GUID must have
* been created via newQueryGUID; this allows the caller to match up
* results.
*
* @requires 0<=minSpeed<2^16 (i.e., can fit in 2 unsigned bytes)
*/
private QueryRequest create(byte[] guid, byte ttl, String query,
String richQuery) {
return createQueryRequest(guid, ttl, query, richQuery, URN.NO_URN_SET,
null, !networkManager.acceptedIncomingConnection(),
Network.UNKNOWN, false, 0, false, 0);
}
/**
* Builds a new query from scratch, with metadata, using the given GUID.
* Whether or not this is a repeat query is encoded in guid. GUID must have
* been created via newQueryGUID; this allows the caller to match up
* results.
*
* @requires 0<=minSpeed<2^16 (i.e., can fit in 2 unsigned bytes)
*/
private QueryRequest create(byte[] guid, byte ttl, String query,
String richQuery, SearchCategory type) {
return createQueryRequest(guid, ttl, getQuery(query, type), richQuery, URN.NO_URN_SET,
null, !networkManager.acceptedIncomingConnection(),
Network.UNKNOWN, false, 0, false, getMetaFlag(type));
}
/**
* Builds a new query from scratch, with metadata, using the given GUID.
* Whether or not this is a repeat query is encoded in guid. GUID must have
* been created via newQueryGUID; this allows the caller to match up
* results.
*
* @requires 0<=minSpeed<2^16 (i.e., can fit in 2 unsigned bytes)
*/
private QueryRequest create(byte[] guid, byte ttl, String query,
String richQuery, boolean canReceiveOutOfBandReplies) {
return createQueryRequest(guid, ttl, query, richQuery, URN.NO_URN_SET,
null, !networkManager.acceptedIncomingConnection(),
Network.UNKNOWN, canReceiveOutOfBandReplies, 0, false, 0);
}
/**
* Builds a new query from scratch, with metadata, using the given GUID.
* Whether or not this is a repeat query is encoded in guid. GUID must have
* been created via newQueryGUID; this allows the caller to match up
* results.
*
* @requires 0<=minSpeed<2^16 (i.e., can fit in 2 unsigned bytes)
*/
private QueryRequest create(byte[] guid, byte ttl, String query,
String richQuery, boolean canReceiveOutOfBandReplies, SearchCategory type) {
return createQueryRequest(guid, ttl, getQuery(query, type), richQuery, URN.NO_URN_SET,
null, !networkManager.acceptedIncomingConnection(),
Network.UNKNOWN, canReceiveOutOfBandReplies, 0, false,
getMetaFlag(type));
}
private String getQuery(String query, SearchCategory category) {
if (category == SearchCategory.TORRENT && SearchSettings.APPEND_TORRENT_TO_TORRENT_QUERIES.getValue()
&& query.toLowerCase(Locale.US).indexOf("torrent") < 0) {
return query + " torrent";
}
return query;
}
private int getMetaFlag(SearchCategory type) {
int metaFlag = 0;
if (type == null)
;
else if (type == SearchCategory.AUDIO)
metaFlag |= QueryRequest.AUDIO_MASK;
else if (type == SearchCategory.VIDEO)
metaFlag |= QueryRequest.VIDEO_MASK;
else if (type == SearchCategory.IMAGE)
metaFlag |= QueryRequest.IMAGE_MASK;
else if (type == SearchCategory.DOCUMENT)
metaFlag |= QueryRequest.DOC_MASK;
else if (type == SearchCategory.TORRENT)
// Always append the mask since no recognised mask falls over to ALL anyways
metaFlag |= QueryRequest.TORRENT_MASK;
else if (type == SearchCategory.PROGRAM) {
if (OSUtils.isLinux() || OSUtils.isMacOSX())
metaFlag |= QueryRequest.LIN_PROG_MASK;
else if (OSUtils.isWindows())
metaFlag |= QueryRequest.WIN_PROG_MASK;
else
// Other OS, search any type of programs
metaFlag |= (QueryRequest.LIN_PROG_MASK | QueryRequest.WIN_PROG_MASK);
}
return metaFlag;
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQueryRequest(byte[], byte, java.lang.String, java.lang.String, java.util.Set, org.limewire.security.AddressSecurityToken, boolean, com.limegroup.gnutella.messages.Message.Network, boolean, int)
*/
public QueryRequest createQueryRequest(byte[] guid, byte ttl, String query,
String richQuery, Set<? extends URN> queryUrns,
AddressSecurityToken addressSecurityToken, boolean isFirewalled,
Network network, boolean canReceiveOutOfBandReplies,
int featureSelector) {
return createQueryRequest(guid, ttl, query, richQuery, queryUrns,
addressSecurityToken, isFirewalled, network,
canReceiveOutOfBandReplies, featureSelector, false, 0);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQueryRequest(byte[], byte, java.lang.String, java.lang.String, java.util.Set, org.limewire.security.AddressSecurityToken, boolean, com.limegroup.gnutella.messages.Message.Network, boolean, int, boolean, int)
*/
public QueryRequest createQueryRequest(byte[] guid, byte ttl, String query,
String richQuery, Set<? extends URN> queryUrns,
AddressSecurityToken addressSecurityToken, boolean isFirewalled,
Network network, boolean canReceiveOutOfBandReplies,
int featureSelector, boolean doNotProxy, int metaFlagMask) {
return createQueryRequest(guid, ttl, 0, query, richQuery, queryUrns,
addressSecurityToken, isFirewalled, network,
canReceiveOutOfBandReplies, featureSelector, doNotProxy,
metaFlagMask, true);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQueryRequest(byte[], byte, int, java.lang.String, java.lang.String, java.util.Set, org.limewire.security.AddressSecurityToken, boolean, com.limegroup.gnutella.messages.Message.Network, boolean, int, boolean, int)
*/
public QueryRequest createQueryRequest(byte[] guid, byte ttl, int minSpeed,
String query, String richQuery, Set<? extends URN> queryUrns,
AddressSecurityToken addressSecurityToken, boolean isFirewalled,
Network network, boolean canReceiveOutOfBandReplies,
int featureSelector, boolean doNotProxy, int metaFlagMask) {
return createQueryRequest(guid, ttl, minSpeed, query, richQuery,
queryUrns, addressSecurityToken, isFirewalled, network,
canReceiveOutOfBandReplies, featureSelector, doNotProxy,
metaFlagMask, true);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.messages.QueryRequestFactory#createQueryRequest(byte[], byte, int, java.lang.String, java.lang.String, java.util.Set, org.limewire.security.AddressSecurityToken, boolean, com.limegroup.gnutella.messages.Message.Network, boolean, int, boolean, int, boolean)
*/
public QueryRequest createQueryRequest(byte[] guid, byte ttl, int minSpeed,
String query, String richQuery, Set<? extends URN> queryUrns,
AddressSecurityToken addressSecurityToken, boolean isFirewalled,
Network network, boolean canReceiveOutOfBandReplies,
int featureSelector, boolean doNotProxy, int metaFlagMask,
boolean normalize) {
return new QueryRequestImpl(guid, ttl, minSpeed, query, richQuery,
queryUrns, addressSecurityToken, isFirewalled, network,
canReceiveOutOfBandReplies, featureSelector, doNotProxy,
metaFlagMask, normalize, networkManager.canDoFWT(), limeXMLDocumentFactory);
}
}