hc-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rola...@apache.org
Subject svn commit: r492175 - in /jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn: UnmanagedClientConnection.java impl/DefaultClientConnection.java
Date Wed, 03 Jan 2007 15:16:09 GMT
Author: rolandw
Date: Wed Jan  3 07:16:08 2007
New Revision: 492175

URL: http://svn.apache.org/viewvc?view=rev&rev=492175
Log:
new connection interfaces, step 1

Added:
    jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/UnmanagedClientConnection.java
  (with props)
    jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/impl/DefaultClientConnection.java
  (with props)

Added: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/UnmanagedClientConnection.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/UnmanagedClientConnection.java?view=auto&rev=492175
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/UnmanagedClientConnection.java
(added)
+++ jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/UnmanagedClientConnection.java
Wed Jan  3 07:16:08 2007
@@ -0,0 +1,138 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.conn;
+
+import java.io.IOException;
+import java.net.Socket;
+
+import org.apache.http.HttpClientConnection;
+import org.apache.http.HttpInetConnection;
+import org.apache.http.HttpHost;
+import org.apache.http.params.HttpParams;
+
+
+//@@@ merge this interface into HttpCore?
+public interface UnmanagedClientConnection
+    extends HttpClientConnection, HttpInetConnection {
+
+    /**
+     * Obtains the target host for this connection.
+     * If the connection is to a proxy but not tunnelled, this is
+     * the proxy. If the connection is tunnelled through a proxy,
+     * this is the target of the tunnel.
+     * <br/>
+     * The return value is well-defined only while the connection is open.
+     * It may change even while the connection is open,
+     * because of an {@link #update update}.
+     *
+     * @return  the host to which this connection is opened
+     */
+    HttpHost getTargetHost()
+        ;
+
+    /**
+     * Indicates whether this connection is secure.
+     * The return value is well-defined only while the connection is open.
+     * It may change even while the connection is open,
+     * because of an {@link #update update}.
+     *
+     * @return  <code>true</code> if this connection is secure,
+     *          <code>false</code> otherwise
+     */
+    boolean isSecure()
+        ;
+
+    /**
+     * Obtains the socket for this connection.
+     * The return value is well-defined only while the connection is open.
+     * It may change even while the connection is open,
+     * because of an {@link #update update}.
+     *
+     * @return  the socket for communicating with the
+     *          {@link #getTargetHost target host}
+     */
+    Socket getSocket()
+        ;
+
+
+    // There is no getParams(). For the moment, we
+    // do not require connections to store parameters.
+
+
+    /**
+     * Opens this connection.
+     * A connection can be openend only while it is closed.
+     * To modify a connection while it is open, use {@link #update update}.
+     *
+     * @param sock      the open socket for communicating with the target host
+     * @param target    the target host of this connection
+     * @param secure    <code>true</code> if this connection is secure, for
+     *                  example if an <code>SSLSocket</code> is used, or
+     *                  <code>false</code> if it is not secure
+     * @param params    parameters for this connection. The parameters will
+     *                  be used when creating dependent objects, for example
+     *                  to determine buffer sizes.
+     */
+    void open(Socket sock, HttpHost target,
+              boolean secure, HttpParams params)
+        throws IOException
+        ;
+
+
+    /**
+     * Updates this connection.
+     * A connection can be updated only while it is open.
+     * Updates are used for example when a tunnel has been established,
+     * or when a TLS/SSL connection has been layered on top of a plain
+     * socket connection.
+     * <br/>
+     * <b>Note:</b> Updating the connection will <i>not</i> close
the
+     * previously used socket. It is the caller's responsibility to close
+     * that socket if it is no longer required.
+     *
+     * @param sock      the new socket for communicating with the target host,
+     *                  or <code>null</code> to continue using the old socket.
+     *                  If <code>null</code> is passed, helper objects that
+     *                  depend on the socket should be re-used. In that case,
+     *                  some changes in the parameters will not take effect.
+     * @param target    the new target host of this connection
+     * @param secure    <code>true</code> if this connection is now secure,
+     *                  <code>false</code> if it is not secure
+     * @param params    new parameters for this connection
+     */
+    void update(Socket sock, HttpHost target,
+                boolean secure, HttpParams params)
+        throws IOException
+        ;
+
+
+} // interface UnmanagedClientConnection

Propchange: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/UnmanagedClientConnection.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/UnmanagedClientConnection.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/UnmanagedClientConnection.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/impl/DefaultClientConnection.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/impl/DefaultClientConnection.java?view=auto&rev=492175
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/impl/DefaultClientConnection.java
(added)
+++ jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/impl/DefaultClientConnection.java
Wed Jan  3 07:16:08 2007
@@ -0,0 +1,136 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.conn.impl;
+
+
+import java.io.IOException;
+import java.net.Socket;
+
+import org.apache.http.HttpHost;
+import org.apache.http.params.HttpParams;
+import org.apache.http.impl.SocketHttpClientConnection;
+
+import org.apache.http.conn.UnmanagedClientConnection;
+
+
+/**
+ * Default implementation of a managed client connection.
+ *
+ * @author Roland Weber (rolandw@apache.org)
+ *
+ *
+ * <!-- empty lines to avoid svn diff problems -->
+ * @version   $Revision$ $Date$
+ *
+ */
+public class DefaultClientConnection extends SocketHttpClientConnection
+    implements UnmanagedClientConnection {
+
+    /** The target host of this connection. */
+    private HttpHost targetHost;
+
+    /** Whether this connection is secure. */
+    private boolean connSecure;
+
+
+
+    // public default constructor
+
+
+    // non-javadoc, see interface UnmanagedClientConnection
+    public final HttpHost getTargetHost() {
+        return this.targetHost;
+    }
+
+
+    // non-javadoc, see interface UnmanagedClientConnection
+    public final boolean isSecure() {
+        return this.connSecure;
+    }
+
+
+    // non-javadoc, see interface UnmanagedClientConnection
+    public final Socket getSocket() {
+        return this.socket; // base class attribute
+    }
+
+
+    // non-javadoc, see interface UnmanagedClientConnection
+    public void open(Socket sock, HttpHost target,
+                     boolean secure, HttpParams params)
+        throws IOException {
+
+        assertNotOpen();
+        if (sock == null) {
+            throw new IllegalArgumentException
+                ("Socket must not be null.");
+        }
+        if (target == null) {
+            throw new IllegalArgumentException
+                ("Target host must not be null.");
+        }
+        if (params == null) {
+            throw new IllegalArgumentException
+                ("Parameters must not be null.");
+        }
+
+        bind(sock, params);
+        targetHost = target;
+        connSecure = secure;
+
+    } // open
+
+
+    // non-javadoc, see interface UnmanagedClientConnection
+    public void update(Socket sock, HttpHost target,
+                       boolean secure, HttpParams params)
+        throws IOException {
+
+        assertOpen();
+        if (target == null) {
+            throw new IllegalArgumentException
+                ("Target host must not be null.");
+        }
+        if (params == null) {
+            throw new IllegalArgumentException
+                ("Parameters must not be null.");
+        }
+
+        if (sock != null)
+            bind(sock, params);
+        targetHost = target;
+        connSecure = secure;
+
+    } // update
+
+
+} // class DefaultClientConnection

Propchange: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/impl/DefaultClientConnection.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/impl/DefaultClientConnection.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/conn/impl/DefaultClientConnection.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message