Home | History | Annotate | Download | only in okhttp
      1 /*
      2  * Copyright (C) 2014 Square, Inc.
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package com.squareup.okhttp;
     17 
     18 import java.io.IOException;
     19 import java.net.InetAddress;
     20 import java.net.Socket;
     21 import java.net.UnknownHostException;
     22 import javax.net.SocketFactory;
     23 
     24 /**
     25  * A {@link SocketFactory} that delegates calls. Sockets can be configured after creation by
     26  * overriding {@link #configureSocket(java.net.Socket)}.
     27  */
     28 public class DelegatingSocketFactory extends SocketFactory {
     29 
     30   private final SocketFactory delegate;
     31 
     32   public DelegatingSocketFactory(SocketFactory delegate) {
     33     this.delegate = delegate;
     34   }
     35 
     36   @Override
     37   public Socket createSocket() throws IOException {
     38     Socket socket = delegate.createSocket();
     39     return configureSocket(socket);
     40   }
     41 
     42   @Override
     43   public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
     44     Socket socket = delegate.createSocket(host, port);
     45     return configureSocket(socket);
     46   }
     47 
     48   @Override
     49   public Socket createSocket(String host, int port, InetAddress localAddress, int localPort)
     50       throws IOException, UnknownHostException {
     51     Socket socket = delegate.createSocket(host, port, localAddress, localPort);
     52     return configureSocket(socket);
     53   }
     54 
     55   @Override
     56   public Socket createSocket(InetAddress host, int port) throws IOException {
     57     Socket socket = delegate.createSocket(host, port);
     58     return configureSocket(socket);
     59   }
     60 
     61   @Override
     62   public Socket createSocket(InetAddress host, int port, InetAddress localAddress, int localPort)
     63       throws IOException {
     64     Socket socket = delegate.createSocket(host, port, localAddress, localPort);
     65     return configureSocket(socket);
     66   }
     67 
     68   protected Socket configureSocket(Socket socket) throws IOException {
     69     // No-op by default.
     70     return socket;
     71   }
     72 }
     73