| //------------------------------------------------------------------------------ |
| // Copyright (c) 2005, 2006 IBM Corporation and others. |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // which accompanies this distribution, and is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| // |
| // Contributors: |
| // IBM Corporation - initial implementation |
| //------------------------------------------------------------------------------ |
| package org.eclipse.epf.publishing.util.http; |
| |
| import java.io.BufferedOutputStream; |
| import java.io.IOException; |
| import java.io.PrintStream; |
| import java.net.SocketException; |
| import java.net.URL; |
| |
| import sun.net.www.http.HttpClient; |
| //import sun.net.*; |
| //import sun.net.www.*; |
| class HttpClientTimeout extends HttpClient |
| { |
| private int timeout = 0 ; |
| |
| HttpClientTimeout(URL url, String proxy, int proxyPort, int timeout) throws IOException |
| { |
| super(url, proxy, proxyPort); |
| _setTimeout(timeout); |
| |
| } |
| |
| HttpClientTimeout(URL url, int timeout) throws IOException |
| { |
| super(url, (String)null, -1); |
| setTimeout(timeout); |
| } |
| |
| private void _setTimeout(int i) |
| throws SocketException |
| { |
| this.timeout = i; |
| serverSocket.setSoTimeout(i) ; |
| } |
| |
| /* This class has no public constructor for HTTP. This method is used to |
| * get an HttpClient to the specifed URL. If there's currently an |
| * active HttpClient to that server/port, you'll get that one. |
| * |
| * no longer syncrhonized -- it slows things down too much |
| * synchronize at a higher level |
| */ |
| static HttpClientTimeout GetNew(URL url, int timeout) |
| throws IOException { |
| /* see if one's already around */ |
| HttpClientTimeout ret = (HttpClientTimeout) kac.get(url); |
| if (ret == null) { |
| ret = new HttpClientTimeout (url, timeout); // CTOR called openServer() |
| } else { |
| ret.url = url; |
| } |
| // don't know if we're keeping alive until we parse the headers |
| // for now, keepingAlive is false |
| return ret; |
| } |
| |
| public void openServer(String s, int i) |
| throws IOException |
| { |
| serverSocket = doConnect(s, i); |
| serverOutput = new PrintStream(new BufferedOutputStream(serverSocket.getOutputStream())); |
| serverSocket.setTcpNoDelay(true); |
| serverSocket.setSoTimeout(timeout); |
| } |
| |
| } |