1 // 2 // ======================================================================== 3 // Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd. 4 // ------------------------------------------------------------------------ 5 // All rights reserved. This program and the accompanying materials 6 // are made available under the terms of the Eclipse Public License v1.0 7 // and Apache License v2.0 which accompanies this distribution. 8 // 9 // The Eclipse Public License is available at 10 // http://www.eclipse.org/legal/epl-v10.html 11 // 12 // The Apache License v2.0 is available at 13 // http://www.opensource.org/licenses/apache2.0.php 14 // 15 // You may elect to redistribute this code under either of these licenses. 16 // ======================================================================== 17 // 18 19 package org.eclipse.jetty.client.api; 20 21 import java.io.Closeable; 22 23 import org.eclipse.jetty.util.Promise; 24 25 /** 26 * {@link Connection} represent a connection to a {@link Destination} and allow applications to send 27 * requests via {@link #send(Request, Response.CompleteListener)}. 28 * <p> 29 * {@link Connection}s are normally pooled by {@link Destination}s, but unpooled {@link Connection}s 30 * may be created by applications that want to do their own connection management via 31 * {@link Destination#newConnection(Promise)} and {@link Connection#close()}. 32 */ 33 public interface Connection extends Closeable 34 { 35 /** 36 * Sends a request with an associated response listener. 37 * <p> 38 * {@link Request#send(Response.CompleteListener)} will eventually call this method to send the request. 39 * It is exposed to allow applications to send requests via unpooled connections. 40 * 41 * @param request the request to send 42 * @param listener the response listener 43 */ 44 void send(Request request, Response.CompleteListener listener); 45 46 @Override 47 void close(); 48 }