package com.limegroup.gnutella.messages.vendor;
import java.io.IOException;
import java.io.OutputStream;
import com.limegroup.gnutella.GUID;
import com.limegroup.gnutella.messages.BadPacketException;
import com.limegroup.gnutella.util.DataUtils;
/** In Vendor Message parlance, the "message type" of this message is "BEAR/11".
* Sent to a servent (a leaf usually) to inquire about the status of a query
* as denoted by the GUID of this message.
* This message has no payload - we simply set the client guid as the GUID of
* the message.
*/
public final class QueryStatusRequest extends VendorMessage {
public static final int VERSION = 1;
/**
* Constructs a new QueryStatusRequest with data from the network.
*/
QueryStatusRequest(byte[] guid, byte ttl, byte hops, int version,
byte[] payload) throws BadPacketException {
super(guid, ttl, hops, F_BEAR_VENDOR_ID, F_LIME_ACK,
version, payload);
if (getVersion() > VERSION) // we don't support it!!
throw new BadPacketException("UNSUPPORTED VERSION");
// there is no payload
}
/**
* Constructs a new QueryStatusRequest to be sent out.
* @param guid the guid of the query you want the status about.
*/
public QueryStatusRequest(GUID guid) {
super(F_BEAR_VENDOR_ID, F_LIME_ACK, VERSION,
DataUtils.EMPTY_BYTE_ARRAY);
setGUID(guid);
}
/** The query guid that needs to needs status.
*/
public GUID getQueryGUID() {
return new GUID(getGUID());
}
/** Overridden purely for stats handling.
*/
protected void writePayload(OutputStream out) throws IOException {
super.writePayload(out);
}
/** Overridden purely for stats handling.
*/
public void recordDrop() {
super.recordDrop();
}
}