⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connection.java

📁 this gcc-g++-3.3.1.tar.gz is a source file of gcc, you can learn more about gcc through this codes f
💻 JAVA
字号:
// Connection.java - Implementation of URLConnection for core protocol./* Copyright (C) 2001  Free Software Foundation   This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License.  Please consult the file "LIBGCJ_LICENSE" fordetails.  */package gnu.gcj.protocol.core;import gnu.gcj.Core;import java.net.*;import java.io.*;import java.util.Map;import java.util.Vector;import java.util.Hashtable;import java.util.Enumeration;/** * @author Anthony Green <green@redhat.com> * @date August 13, 2001 */class Connection extends URLConnection{  private Hashtable hdrHash = new Hashtable();  private Vector hdrVec = new Vector();  private boolean gotHeaders = false;  private Core core;  public Connection(URL url)  {    super(url);  }  // Implementation of abstract method.  public void connect() throws IOException  {    // Call is ignored if already connected.    if (connected)      return;    // If not connected, then file needs to be opened.    core = Core.create (url.getFile());    connected = true;  }  public InputStream getInputStream() throws IOException  {    if (!connected)      connect();    if (! doInput)      throw new ProtocolException("Can't open InputStream if doInput is false");    return new BufferedInputStream(new CoreInputStream (core));  }  // Override default method in URLConnection.  public String getHeaderField(String name)  {    try      {	getHeaders();      }    catch (IOException x)      {	return null;      }    return (String) hdrHash.get(name.toLowerCase());  }  // Override default method in URLConnection.  public Map getHeaderFields()  {    try      {	getHeaders();      }    catch (IOException x)      {	return null;      }    return hdrHash;  }  // Override default method in URLConnection.  public String getHeaderField(int n)  {    try      {	getHeaders();      }    catch (IOException x)      {	return null;      }    if (n < hdrVec.size())      return getField((String) hdrVec.elementAt(n));    return null;  }  // Override default method in URLConnection.  public String getHeaderFieldKey(int n)  {    try      {	getHeaders();      }    catch (IOException x)      {	return null;      }    if (n < hdrVec.size())      return getKey((String) hdrVec.elementAt(n));    return null;  }  private String getKey(String str)  {    if (str == null)      return null;    int index = str.indexOf(':');    if (index >= 0)      return str.substring(0, index);    else      return null;  }  private String getField(String str)  {    if (str == null)      return null;    int index = str.indexOf(':');    if (index >= 0)      return str.substring(index + 1).trim();    else      return str;  }  private void getHeaders() throws IOException  {    if (gotHeaders)      return;    gotHeaders = true;    connect();    // Yes, it is overkill to use the hash table and vector here since    // we're only putting one header in the file, but in case we need    // to add others later and for consistency, we'll implement it this way.    // Add the only header we know about right now:  Content-length.    long len = core.length;    String line = "Content-length: " + len;    hdrVec.addElement(line);    // The key will never be null in this scenario since we build up the    // headers ourselves.  If we ever rely on getting a header from somewhere    // else, then we may have to check if the result of getKey() is null.    String key = getKey(line);    hdrHash.put(key.toLowerCase(), Long.toString(len));  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -