package freenet.node; import freenet.client.async.ChosenBlock; import freenet.client.async.ClientContext; /** * Interface for class responsible for doing the actual sending of requests. * Strictly non-persistent. * @author Matthew Toseland <toad@amphibian.dyndns.org> (0xE43DA450) */ public interface SendableRequestSender { /** ONLY called by RequestStarter. Start the actual request using the NodeClientCore * provided, and the key and key number earlier got from chooseKey(). Either use the * callbacks on the ChosenBlock, which will remove the key from KeysFetchingLocally, or * do it directly (in obscure cases such as OfferedKeysList). * @param sched The scheduler this request has just been grabbed from. * @param request The ChosenBlock containing the key, the SendableRequestItem, * and the methods to call to indicate success/failure. * @return True if a request was sent, false otherwise (in which case the request will * be removed if it hasn't already been). */ public abstract boolean send(NodeClientCore node, RequestScheduler sched, ClientContext context, ChosenBlock request); public abstract boolean sendIsBlocking(); }