package org.webpieces.httpclient.api;
import java.net.InetSocketAddress;
import java.util.concurrent.CompletableFuture;
import org.webpieces.httpparser.api.dto.HttpRequest;
import org.webpieces.httpparser.api.dto.HttpResponse;
public interface HttpSocket {
public CompletableFuture<HttpSocket> connect(InetSocketAddress addr);
/**
* This can be used ONLY if 'you' know that the far end does NOT sended a chunked download.
* The reason is in a chunked download, we don't want to blow up your RAM. Some apis like
* twitters streaming api and we would never ever be done and have a full response. Others
* are just a very very large download you don't want existing in RAM anyways.
*
* @param request
*/
//TODO: Implement timeout for clients so that requests will timeout
public CompletableFuture<HttpResponse> send(HttpRequest request);
public CompletableFuture<HttpChunkWriter> send(HttpRequest request, HttpResponseListener l);
public CompletableFuture<HttpSocket> close();
}