1/*
2 * Copyright 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 */
16package com.squareup.okhttp;
17
18import java.io.IOException;
19import java.io.InputStream;
20import java.io.OutputStream;
21import java.net.InetAddress;
22import java.net.SocketAddress;
23import java.net.SocketException;
24import java.nio.channels.SocketChannel;
25import javax.net.ssl.HandshakeCompletedListener;
26import javax.net.ssl.SSLParameters;
27import javax.net.ssl.SSLSession;
28import javax.net.ssl.SSLSocket;
29
30/**
31 * An {@link javax.net.ssl.SSLSocket} that delegates all calls.
32 */
33public abstract class DelegatingSSLSocket extends SSLSocket {
34  protected final SSLSocket delegate;
35
36  public DelegatingSSLSocket(SSLSocket delegate) {
37    this.delegate = delegate;
38  }
39
40  @Override public void shutdownInput() throws IOException {
41    delegate.shutdownInput();
42  }
43
44  @Override public void shutdownOutput() throws IOException {
45    delegate.shutdownOutput();
46  }
47
48  @Override public String[] getSupportedCipherSuites() {
49    return delegate.getSupportedCipherSuites();
50  }
51
52  @Override public String[] getEnabledCipherSuites() {
53    return delegate.getEnabledCipherSuites();
54  }
55
56  @Override public void setEnabledCipherSuites(String[] suites) {
57    delegate.setEnabledCipherSuites(suites);
58  }
59
60  @Override public String[] getSupportedProtocols() {
61    return delegate.getSupportedProtocols();
62  }
63
64  @Override public String[] getEnabledProtocols() {
65    return delegate.getEnabledProtocols();
66  }
67
68  @Override public void setEnabledProtocols(String[] protocols) {
69    delegate.setEnabledProtocols(protocols);
70  }
71
72  @Override public SSLSession getSession() {
73    return delegate.getSession();
74  }
75
76  @Override public void addHandshakeCompletedListener(HandshakeCompletedListener listener) {
77    delegate.addHandshakeCompletedListener(listener);
78  }
79
80  @Override public void removeHandshakeCompletedListener(HandshakeCompletedListener listener) {
81    delegate.removeHandshakeCompletedListener(listener);
82  }
83
84  @Override public void startHandshake() throws IOException {
85    delegate.startHandshake();
86  }
87
88  @Override public void setUseClientMode(boolean mode) {
89    delegate.setUseClientMode(mode);
90  }
91
92  @Override public boolean getUseClientMode() {
93    return delegate.getUseClientMode();
94  }
95
96  @Override public void setNeedClientAuth(boolean need) {
97    delegate.setNeedClientAuth(need);
98  }
99
100  @Override public void setWantClientAuth(boolean want) {
101    delegate.setWantClientAuth(want);
102  }
103
104  @Override public boolean getNeedClientAuth() {
105    return delegate.getNeedClientAuth();
106  }
107
108  @Override public boolean getWantClientAuth() {
109    return delegate.getWantClientAuth();
110  }
111
112  @Override public void setEnableSessionCreation(boolean flag) {
113    delegate.setEnableSessionCreation(flag);
114  }
115
116  @Override public boolean getEnableSessionCreation() {
117    return delegate.getEnableSessionCreation();
118  }
119
120  @Override public SSLParameters getSSLParameters() {
121    return delegate.getSSLParameters();
122  }
123
124  @Override public void setSSLParameters(SSLParameters p) {
125    delegate.setSSLParameters(p);
126  }
127
128  @Override public void close() throws IOException {
129    delegate.close();
130  }
131
132  @Override public InetAddress getInetAddress() {
133    return delegate.getInetAddress();
134  }
135
136  @Override public InputStream getInputStream() throws IOException {
137    return delegate.getInputStream();
138  }
139
140  @Override public boolean getKeepAlive() throws SocketException {
141    return delegate.getKeepAlive();
142  }
143
144  @Override public InetAddress getLocalAddress() {
145    return delegate.getLocalAddress();
146  }
147
148  @Override public int getLocalPort() {
149    return delegate.getLocalPort();
150  }
151
152  @Override public OutputStream getOutputStream() throws IOException {
153    return delegate.getOutputStream();
154  }
155
156  @Override public int getPort() {
157    return delegate.getPort();
158  }
159
160  @Override public int getSoLinger() throws SocketException {
161    return delegate.getSoLinger();
162  }
163
164  @Override public int getReceiveBufferSize() throws SocketException {
165    return delegate.getReceiveBufferSize();
166  }
167
168  @Override public int getSendBufferSize() throws SocketException {
169    return delegate.getSendBufferSize();
170  }
171
172  @Override public int getSoTimeout() throws SocketException {
173    return delegate.getSoTimeout();
174  }
175
176  @Override public boolean getTcpNoDelay() throws SocketException {
177    return delegate.getTcpNoDelay();
178  }
179
180  @Override public void setKeepAlive(boolean keepAlive) throws SocketException {
181    delegate.setKeepAlive(keepAlive);
182  }
183
184  @Override public void setSendBufferSize(int size) throws SocketException {
185    delegate.setSendBufferSize(size);
186  }
187
188  @Override public void setReceiveBufferSize(int size) throws SocketException {
189    delegate.setReceiveBufferSize(size);
190  }
191
192  @Override public void setSoLinger(boolean on, int timeout) throws SocketException {
193    delegate.setSoLinger(on, timeout);
194  }
195
196  @Override public void setSoTimeout(int timeout) throws SocketException {
197    delegate.setSoTimeout(timeout);
198  }
199
200  @Override public void setTcpNoDelay(boolean on) throws SocketException {
201    delegate.setTcpNoDelay(on);
202  }
203
204  @Override public String toString() {
205    return delegate.toString();
206  }
207
208  @Override public SocketAddress getLocalSocketAddress() {
209    return delegate.getLocalSocketAddress();
210  }
211
212  @Override public SocketAddress getRemoteSocketAddress() {
213    return delegate.getRemoteSocketAddress();
214  }
215
216  @Override public boolean isBound() {
217    return delegate.isBound();
218  }
219
220  @Override public boolean isConnected() {
221    return delegate.isConnected();
222  }
223
224  @Override public boolean isClosed() {
225    return delegate.isClosed();
226  }
227
228  @Override public void bind(SocketAddress localAddr) throws IOException {
229    delegate.bind(localAddr);
230  }
231
232  @Override public void connect(SocketAddress remoteAddr) throws IOException {
233    delegate.connect(remoteAddr);
234  }
235
236  @Override public void connect(SocketAddress remoteAddr, int timeout) throws IOException {
237    delegate.connect(remoteAddr, timeout);
238  }
239
240  @Override public boolean isInputShutdown() {
241    return delegate.isInputShutdown();
242  }
243
244  @Override public boolean isOutputShutdown() {
245    return delegate.isOutputShutdown();
246  }
247
248  @Override public void setReuseAddress(boolean reuse) throws SocketException {
249    delegate.setReuseAddress(reuse);
250  }
251
252  @Override public boolean getReuseAddress() throws SocketException {
253    return delegate.getReuseAddress();
254  }
255
256  @Override public void setOOBInline(boolean oobinline) throws SocketException {
257    delegate.setOOBInline(oobinline);
258  }
259
260  @Override public boolean getOOBInline() throws SocketException {
261    return delegate.getOOBInline();
262  }
263
264  @Override public void setTrafficClass(int value) throws SocketException {
265    delegate.setTrafficClass(value);
266  }
267
268  @Override public int getTrafficClass() throws SocketException {
269    return delegate.getTrafficClass();
270  }
271
272  @Override public void sendUrgentData(int value) throws IOException {
273    delegate.sendUrgentData(value);
274  }
275
276  @Override public SocketChannel getChannel() {
277    return delegate.getChannel();
278  }
279
280  @Override public void setPerformancePreferences(int connectionTime, int latency, int bandwidth) {
281    delegate.setPerformancePreferences(connectionTime, latency, bandwidth);
282  }
283}
284