package com.limegroup.gnutella.messages.vendor;
import com.limegroup.gnutella.messages.BadPacketException;
import com.limegroup.gnutella.messages.Message.Network;
public interface VendorMessageFactory {
/**
* Registers a VendorMessageParser under the provided selector (unsigned short)
* and Vendor ID.
*/
public void setParser(int selector, byte[] vendorId,
VendorMessageParser parser);
/**
* Returns a VendorMessageParser for the provided selector
* and vendor ID or null if no such parser is registered.
*/
public VendorMessageParser getParser(int selector, byte[] vendorId);
public VendorMessage deriveVendorMessage(byte[] guid, byte ttl, byte hops,
byte[] fromNetwork, Network network) throws BadPacketException;
/**
* The interface for custom VendorMessageParser(s).
*/
public static interface VendorMessageParser {
public VendorMessage parse(byte[] guid, byte ttl, byte hops, int version,
byte[] restOf, Network network) throws BadPacketException;
}
}