[kaffe] CVS kaffe (guilhem): Partial synchronization with classpath/libgcj (nio). JVMPI/XPROF disable on Cygw

Kaffe CVS cvs-commits at kaffe.org
Sat Dec 27 13:19:02 PST 2003


PatchSet 4239 
Date: 2003/12/27 21:15:47
Author: guilhem
Branch: HEAD
Tag: (none) 
Log:
Partial synchronization with classpath/libgcj (nio). JVMPI/XPROF disable on Cygwin

Members: 
	ChangeLog:1.1828->1.1829 
	configure:1.270->1.271 
	configure.in:1.235->1.236 
	config/i386/cygwin32/md.h:1.3->1.4 
	kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.104->1.105 
	libraries/javalib/Makefile.am:1.150->1.151 
	libraries/javalib/Makefile.in:1.202->1.203 
	libraries/javalib/essential.files:1.33->1.34 
	libraries/javalib/gnu/java/lang/reflect/TypeSignature.java:1.3->1.4 
	libraries/javalib/gnu/java/net/DNSJavaInetAddressImpl.java:1.1->1.2 
	libraries/javalib/gnu/java/net/protocol/http/Connection.java:1.3->1.4 
	libraries/javalib/gnu/java/nio/ChannelInputStream.java:INITIAL->1.1 
	libraries/javalib/gnu/java/nio/ChannelOutputStream.java:INITIAL->1.1 
	libraries/javalib/gnu/java/nio/InputStreamChannel.java:INITIAL->1.1 
	libraries/javalib/gnu/java/nio/OutputStreamChannel.java:INITIAL->1.1 
	libraries/javalib/gnu/java/nio/SelectorImpl.java:1.6->1.7 
	libraries/javalib/gnu/java/rmi/server/RMIVoidValue.java:1.1->1.2 
	libraries/javalib/gnu/java/rmi/server/UnicastRemoteCall.java:1.2->1.3 
	libraries/javalib/gnu/java/rmi/server/UnicastServerRef.java:1.2->1.3 
	libraries/javalib/java/io/FilePermission.java:1.5->1.6 
	libraries/javalib/java/net/DatagramSocket.java:1.19->1.20 
	libraries/javalib/java/net/ServerSocket.java:1.20->1.21 
	libraries/javalib/java/net/URL.java:1.35->1.36 
	libraries/javalib/java/net/URLStreamHandler.java:1.13->1.14 
	libraries/javalib/java/nio/ByteOrder.java:1.4->1.5 
	libraries/javalib/java/nio/DirectByteBufferImpl.java:1.3->1.4 
	libraries/javalib/java/nio/channels/Channels.java:1.3->1.4 
	libraries/javalib/java/nio/channels/FileChannelImpl.java:1.3->1.4 
	libraries/javalib/java/nio/channels/spi/AbstractSelectableChannel.java:1.3->1.4 
	libraries/javalib/javax/naming/directory/Attribute.java:1.3->1.4 
	libraries/javalib/javax/naming/directory/Attributes.java:1.2->1.3 
	libraries/javalib/javax/naming/directory/DirContext.java:1.2->1.3 
	libraries/javalib/javax/naming/directory/InitialDirContext.java:1.1->1.2 
	libraries/javalib/javax/naming/directory/SearchResult.java:1.1->1.2 
	libraries/javalib/javax/naming/event/EventContext.java:1.2->1.3 
	libraries/javalib/javax/naming/event/EventDirContext.java:1.2->1.3 
	libraries/javalib/javax/naming/event/NamingEvent.java:1.1->1.2 
	libraries/javalib/javax/naming/event/NamingExceptionEvent.java:1.1->1.2 
	libraries/javalib/javax/naming/ldap/ControlFactory.java:1.1->1.2 
	libraries/javalib/javax/naming/ldap/ExtendedRequest.java:1.2->1.3 
	libraries/javalib/javax/naming/ldap/HasControls.java:1.2->1.3 
	libraries/javalib/javax/naming/ldap/InitialLdapContext.java:1.1->1.2 
	libraries/javalib/javax/naming/ldap/LdapContext.java:1.2->1.3 
	libraries/javalib/javax/naming/ldap/LdapReferralException.java:1.1->1.2 
	libraries/javalib/javax/naming/ldap/UnsolicitedNotification.java:1.2->1.3 
	libraries/javalib/javax/naming/ldap/UnsolicitedNotificationListener.java:1.2->1.3 
	libraries/javalib/javax/naming/spi/DirObjectFactory.java:1.2->1.3 
	libraries/javalib/javax/naming/spi/DirStateFactory.java:1.2->1.3 
	libraries/javalib/javax/naming/spi/DirectoryManager.java:1.1->1.2 
	libraries/javalib/javax/naming/spi/NamingManager.java:1.5->1.6 
	libraries/javalib/javax/naming/spi/ObjectFactoryBuilder.java:1.2->1.3 
	libraries/javalib/javax/naming/spi/ResolveResult.java:1.1->1.2 
	libraries/javalib/javax/naming/spi/Resolver.java:1.2->1.3 
	libraries/javalib/javax/naming/spi/StateFactory.java:1.2->1.3 
	libraries/javalib/pure-java/math/java/math/BigDecimal.java:1.3->1.4 
	libraries/javalib/pure-java/math/java/math/BigInteger.java:1.2->1.3 
	test/regression/URLTest.java:1.4->1.5 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.1828 kaffe/ChangeLog:1.1829
--- kaffe/ChangeLog:1.1828	Fri Dec 26 18:51:20 2003
+++ kaffe/ChangeLog	Sat Dec 27 21:15:47 2003
@@ -1,3 +1,73 @@
+2003-12-27  Guilhem Lavaux <guilhem at kaffe.org>
+
+	* configure, libraries/javalib/Makefile.am,
+	libraries/javalib/Makefile.in: Regenerated.
+
+	* configure.in, config/i386/cygwin32/md.h,
+	kaffe/kaffevm/systems/unix-jthreads/jthread.c:
+	Disable JVMPI and XPROF when the system is a cygwin.
+
+	* libraries/javalib/essential.files: Added missing classes in NIO.
+
+	* test/regression/URLTest.java: Changed regression test. Checking here is
+	too strict and so the message could change.
+	
+	* libraries/javalib/gnu/java/lang/reflect/TypeSignature.java,
+	libraries/javalib/gnu/java/rmi/server/RMIVoidValue.java,
+	libraries/javalib/gnu/java/rmi/server/UnicastRemoteCall.java,
+	libraries/javalib/gnu/java/rmi/server/UnicastServerRef.java,
+	libraries/javalib/java/io/FilePermission.java,
+	libraries/javalib/java/net/DatagramSocket.java,
+	libraries/javalib/java/net/ServerSocket.java,
+	libraries/javalib/java/net/URL.java,
+	libraries/javalib/java/net/URLStreamHandler.java,
+	libraries/javalib/java/nio/ByteOrder.java,
+	libraries/javalib/java/nio/DirectByteBufferImpl.java,
+	libraries/javalib/java/nio/channels/Channels.java,
+	libraries/javalib/java/nio/channels/FileChannelImpl.java,
+	libraries/javalib/java/nio/channels/spi/AbstractSelectableChannel.java,
+	libraries/javalib/javax/naming/directory/Attribute.java,
+	libraries/javalib/javax/naming/directory/Attributes.java,
+	libraries/javalib/javax/naming/directory/DirContext.java,
+	libraries/javalib/javax/naming/directory/InitialDirContext.java,
+	libraries/javalib/javax/naming/directory/SearchResult.java,
+	libraries/javalib/javax/naming/event/EventContext.java,
+	libraries/javalib/javax/naming/event/EventDirContext.java,
+	libraries/javalib/javax/naming/event/NamingEvent.java,
+	libraries/javalib/javax/naming/event/NamingExceptionEvent.java,
+	libraries/javalib/javax/naming/ldap/ControlFactory.java,
+	libraries/javalib/javax/naming/ldap/ExtendedRequest.java,
+	libraries/javalib/javax/naming/ldap/HasControls.java,
+	libraries/javalib/javax/naming/ldap/InitialLdapContext.java,
+	libraries/javalib/javax/naming/ldap/LdapContext.java,
+	libraries/javalib/javax/naming/ldap/LdapReferralException.java,
+	libraries/javalib/javax/naming/ldap/UnsolicitedNotification.java,
+	libraries/javalib/javax/naming/ldap/UnsolicitedNotificationListener.java,
+	libraries/javalib/javax/naming/spi/DirObjectFactory.java,
+	libraries/javalib/javax/naming/spi/DirStateFactory.java,
+	libraries/javalib/javax/naming/spi/DirectoryManager.java,
+	libraries/javalib/javax/naming/spi/NamingManager.java,
+	libraries/javalib/javax/naming/spi/ObjectFactoryBuilder.java,
+	libraries/javalib/javax/naming/spi/ResolveResult.java,
+	libraries/javalib/javax/naming/spi/Resolver.java,
+	libraries/javalib/javax/naming/spi/StateFactory.java,
+	libraries/javalib/pure-java/math/java/math/BigDecimal.java,
+	libraries/javalib/pure-java/math/java/math/BigInteger.java:
+	Resynchronized with Classpath.
+
+	* libraries/javalib/java/nio/ByteOrder.java,
+	libraries/javalib/java/nio/DirectByteBufferImpl.java,
+	libraries/javalib/java/nio/channels/Channels.java,
+	libraries/javalib/java/nio/channels/FileChannelImpl.java,
+	libraries/javalib/java/nio/channels/spi/AbstractSelectableChannel.java,
+	libraries/javalib/gnu/java/net/protocol/http/Connection.java,
+	libraries/javalib/gnu/java/nio/ChannelInputStream.java,
+	libraries/javalib/gnu/java/nio/ChannelOutputStream.java,
+	libraries/javalib/gnu/java/nio/InputStreamChannel.java,
+	libraries/javalib/gnu/java/nio/OutputStreamChannel.java,
+	libraries/javalib/gnu/java/nio/SelectorImpl.java:
+	Merged from GCJ/libjava.
+	
 2003-12-26  Guilhem Lavaux <guilhem at kaffe.org>
 
 	* libraries/javalib/kjc.jar: Regenerated KJC to
Index: kaffe/configure
diff -u kaffe/configure:1.270 kaffe/configure:1.271
--- kaffe/configure:1.270	Wed Dec 24 19:06:50 2003
+++ kaffe/configure	Sat Dec 27 21:15:48 2003
@@ -19288,9 +19288,14 @@
 fi
 
 
+NOSIGCONTEXT=false
+
 case $Khost_os in
 win32*)
 	SYSTEM=win32 ;;
+cygwin*)
+	SYSTEM=unix;
+	NOSIGCONTEXT=true;;
 *)
 	SYSTEM=unix ;;
 esac
@@ -19468,11 +19473,15 @@
 case "$enable_jvmpi" in
 "") ;;
 no) ;;
-*)
+*) if test "x$NOSIGCONTEXT" = "xtrue"; then
+	echo "JVMPI does not support Cygwin"
+   else
+
 cat >>confdefs.h <<\_ACEOF
 #define ENABLE_JVMPI 1
 _ACEOF
-;;
+
+   fi;;
 esac
 
 
@@ -19516,6 +19525,11 @@
   enableval="$enable_xprofiling"
 
 fi;
+if test "x$NOSIGCONTEXT" = "xtrue"; then
+  echo "XProfiling does not support Cygwin"
+  enable_xprofiling=no
+fi
+
 case "$enable_xprofiling" in
 "") xprofiling=no ;;
 no) xprofiling=no ;;
Index: kaffe/configure.in
diff -u kaffe/configure.in:1.235 kaffe/configure.in:1.236
--- kaffe/configure.in:1.235	Wed Dec 24 19:06:54 2003
+++ kaffe/configure.in	Sat Dec 27 21:15:52 2003
@@ -159,9 +159,14 @@
 dnl -------------------------------------------------------------------------
 
 dnl What kind of system are we using?
+NOSIGCONTEXT=false
+
 case $Khost_os in
 win32*)
 	SYSTEM=win32 ;;
+cygwin*)
+	SYSTEM=unix;
+	NOSIGCONTEXT=true;;
 *)
 	SYSTEM=unix ;;
 esac
@@ -330,7 +335,11 @@
 case "$enable_jvmpi" in
 "") ;;
 no) ;;
-*) AC_DEFINE(ENABLE_JVMPI, 1, [JVM Profiling Interface]);;
+*) if test "x$NOSIGCONTEXT" = "xtrue"; then
+	echo "JVMPI does not support Cygwin"
+   else
+	AC_DEFINE(ENABLE_JVMPI, 1, [JVM Profiling Interface])
+   fi;;
 esac
 
 AM_CONDITIONAL(ENABLE_JVMPI, test x"$enable_jvmpi" = x"yes")
@@ -354,6 +363,11 @@
 need_libxprof=no
 
 AC_ARG_ENABLE(xprofiling,[  --enable-xprofiling     Enable profiling for C and jitted code])
+if test "x$NOSIGCONTEXT" = "xtrue"; then
+  echo "XProfiling does not support Cygwin"
+  enable_xprofiling=no
+fi
+
 case "$enable_xprofiling" in
 "") xprofiling=no ;;
 no) xprofiling=no ;;
Index: kaffe/config/i386/cygwin32/md.h
diff -u kaffe/config/i386/cygwin32/md.h:1.3 kaffe/config/i386/cygwin32/md.h:1.4
--- kaffe/config/i386/cygwin32/md.h:1.3	Thu Dec 11 17:56:21 2003
+++ kaffe/config/i386/cygwin32/md.h	Sat Dec 27 21:15:54 2003
@@ -26,7 +26,10 @@
 #undef SP_OFFSET
 #define	SP_OFFSET	7
 
-#error Signal handlers are not supported on CygWin32.
+#define SIGNAL_ARGS(sig, sc) int sig
+#define SIGNAL_CONTEXT_POINTER(scp) int scp
+#define GET_SIGNAL_CONTEXT_POINTER(sc) (NULL)
+#define SIGNAL_PC(scp) (0)
 
 #if defined(TRANSLATOR)
 #include "jit-md.h"
Index: kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c
diff -u kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.104 kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.105
--- kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.104	Fri Dec 19 18:36:00 2003
+++ kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c	Sat Dec 27 21:15:54 2003
@@ -417,7 +417,9 @@
 {
 	if( currentJThread->status != THREAD_SUSPENDED )
 	{
+#ifdef ENABLE_JVMPI
 		EXCEPTIONFRAME(jthread_current()->localData.topFrame, sc);
+#endif
 	}
 	
 	/*
Index: kaffe/libraries/javalib/Makefile.am
diff -u kaffe/libraries/javalib/Makefile.am:1.150 kaffe/libraries/javalib/Makefile.am:1.151
--- kaffe/libraries/javalib/Makefile.am:1.150	Tue Dec 23 20:18:42 2003
+++ kaffe/libraries/javalib/Makefile.am	Sat Dec 27 21:15:55 2003
@@ -389,13 +389,17 @@
 	gnu/java/net/protocol/jar/Connection.java \
 	gnu/java/net/protocol/jar/Handler.java
 gnu_java_nio_SRCS = \
+	gnu/java/nio/ChannelInputStream.java \
+	gnu/java/nio/ChannelOutputStream.java \
 	gnu/java/nio/DatagramChannelImpl.java \
 	gnu/java/nio/DatagramChannelSelectionKey.java \
 	gnu/java/nio/FileLockImpl.java \
+	gnu/java/nio/InputStreamChannel.java \
 	gnu/java/nio/NIOConstants.java \
 	gnu/java/nio/NIODatagramSocket.java \
 	gnu/java/nio/NIOServerSocket.java \
 	gnu/java/nio/NIOSocket.java \
+	gnu/java/nio/OutputStreamChannel.java \
 	gnu/java/nio/PipeImpl.java \
 	gnu/java/nio/SelectionKeyImpl.java \
 	gnu/java/nio/SelectorImpl.java \
Index: kaffe/libraries/javalib/Makefile.in
diff -u kaffe/libraries/javalib/Makefile.in:1.202 kaffe/libraries/javalib/Makefile.in:1.203
--- kaffe/libraries/javalib/Makefile.in:1.202	Wed Dec 24 19:07:23 2003
+++ kaffe/libraries/javalib/Makefile.in	Sat Dec 27 21:15:55 2003
@@ -662,13 +662,17 @@
 	gnu/java/net/protocol/jar/Handler.java
 
 gnu_java_nio_SRCS = \
+	gnu/java/nio/ChannelInputStream.java \
+	gnu/java/nio/ChannelOutputStream.java \
 	gnu/java/nio/DatagramChannelImpl.java \
 	gnu/java/nio/DatagramChannelSelectionKey.java \
 	gnu/java/nio/FileLockImpl.java \
+	gnu/java/nio/InputStreamChannel.java \
 	gnu/java/nio/NIOConstants.java \
 	gnu/java/nio/NIODatagramSocket.java \
 	gnu/java/nio/NIOServerSocket.java \
 	gnu/java/nio/NIOSocket.java \
+	gnu/java/nio/OutputStreamChannel.java \
 	gnu/java/nio/PipeImpl.java \
 	gnu/java/nio/SelectionKeyImpl.java \
 	gnu/java/nio/SelectorImpl.java \
Index: kaffe/libraries/javalib/essential.files
diff -u kaffe/libraries/javalib/essential.files:1.33 kaffe/libraries/javalib/essential.files:1.34
--- kaffe/libraries/javalib/essential.files:1.33	Mon Nov  3 04:25:49 2003
+++ kaffe/libraries/javalib/essential.files	Sat Dec 27 21:15:55 2003
@@ -20,13 +20,17 @@
 gnu/java/nio/charset/UTF_16.java
 gnu/java/nio/charset/UTF_16LE.java
 gnu/java/nio/charset/UTF_8.java
+gnu/java/nio/ChannelInputStream.java
+gnu/java/nio/ChannelOutputStream.java
 gnu/java/nio/DatagramChannelImpl.java
 gnu/java/nio/DatagramChannelSelectionKey.java
 gnu/java/nio/FileLockImpl.java
+gnu/java/nio/InputStreamChannel.java
 gnu/java/nio/NIOConstants.java
 gnu/java/nio/NIODatagramSocket.java
 gnu/java/nio/NIOServerSocket.java
 gnu/java/nio/NIOSocket.java
+gnu/java/nio/OutputStreamChannel.java
 gnu/java/nio/PipeImpl.java
 gnu/java/nio/SelectionKeyImpl.java
 gnu/java/nio/SelectorImpl.java
Index: kaffe/libraries/javalib/gnu/java/lang/reflect/TypeSignature.java
diff -u kaffe/libraries/javalib/gnu/java/lang/reflect/TypeSignature.java:1.3 kaffe/libraries/javalib/gnu/java/lang/reflect/TypeSignature.java:1.4
--- kaffe/libraries/javalib/gnu/java/lang/reflect/TypeSignature.java:1.3	Wed Dec  3 19:57:15 2003
+++ kaffe/libraries/javalib/gnu/java/lang/reflect/TypeSignature.java	Sat Dec 27 21:15:56 2003
@@ -173,7 +173,8 @@
    * @see #getEncodingOfClass(Class, boolean)
    * @see #getClassForEncoding(String, boolean)
    */
-   public static Class getClassForEncoding(String type_code, boolean descriptor, ClassLoader loader)
+  public static Class getClassForEncoding(String type_code, boolean descriptor,
+		 			  ClassLoader loader)
     throws ClassNotFoundException
   {
     if (descriptor)
Index: kaffe/libraries/javalib/gnu/java/net/DNSJavaInetAddressImpl.java
diff -u kaffe/libraries/javalib/gnu/java/net/DNSJavaInetAddressImpl.java:1.1 kaffe/libraries/javalib/gnu/java/net/DNSJavaInetAddressImpl.java:1.2
--- kaffe/libraries/javalib/gnu/java/net/DNSJavaInetAddressImpl.java:1.1	Tue Dec 23 20:18:54 2003
+++ kaffe/libraries/javalib/gnu/java/net/DNSJavaInetAddressImpl.java	Sat Dec 27 21:15:56 2003
@@ -52,7 +52,6 @@
 import org.xbill.DNS.DClass;
 import org.xbill.DNS.ReverseMap;
 
-/* This class is just a forward to native implementation. */
 public class DNSJavaInetAddressImpl implements InetAddressImpl
 {
   static private Resolver resolver = null;
@@ -60,7 +59,6 @@
   public String getHostByAddr(byte[] ip)
     throws UnknownHostException
   {
-    
     if (resolver == null)
       resolver = new ExtendedResolver();
 
Index: kaffe/libraries/javalib/gnu/java/net/protocol/http/Connection.java
diff -u kaffe/libraries/javalib/gnu/java/net/protocol/http/Connection.java:1.3 kaffe/libraries/javalib/gnu/java/net/protocol/http/Connection.java:1.4
--- kaffe/libraries/javalib/gnu/java/net/protocol/http/Connection.java:1.3	Tue Dec 23 20:18:54 2003
+++ kaffe/libraries/javalib/gnu/java/net/protocol/http/Connection.java	Sat Dec 27 21:15:57 2003
@@ -119,11 +119,6 @@
   private ByteArrayOutputStream bufferedOutputStream;
 
   /**
-   * The PrintWriter for this connection (used internally)
-   */
-  private PrintWriter outputWriter;
-
-  /**
    * This is the object that holds the header field information
    */
   private HeaderFieldHelper headers = new HeaderFieldHelper();
@@ -164,13 +159,11 @@
 	socket = new Socket(url.getHost(), port);
       }
 
-    if (doInput)
-      inputStream = new DataInputStream
-	(new BufferedInputStream (socket.getInputStream()));
+    inputStream =
+      new DataInputStream(new BufferedInputStream(socket.getInputStream()));
 
     outputStream = new BufferedOutputStream (socket.getOutputStream());
     bufferedOutputStream = new ByteArrayOutputStream (256); //default is too small
-    outputWriter = new PrintWriter (new OutputStreamWriter (outputStream, "8859_1")); 
 
     sendRequest();
     receiveReply();
@@ -202,36 +195,30 @@
    */
   void sendRequest() throws IOException
   {
+    // Create PrintWriter for easier sending of headers.
+    PrintWriter outputWriter =
+      new PrintWriter(new OutputStreamWriter(outputStream, "8859_1")); 
+    
     // Send request including any request properties that were set.
     outputWriter.print (getRequestMethod() + " " + url.getFile()
                         + " HTTP/1.1\r\n");
 
     // Set additional HTTP headers.
     if (getRequestProperty ("Host") == null)
-      {
-        setRequestProperty ("Host", url.getHost());
-      }
+      setRequestProperty ("Host", url.getHost());
     
     if (getRequestProperty ("Connection") == null)
-      {
-        setRequestProperty ("Connection", "Close");
-      }
+      setRequestProperty ("Connection", "Close");
     
     if (getRequestProperty ("user-agent") == null)
-      {
-        setRequestProperty ("user-agent", "gnu-classpath/"
-                            + System.getProperty ("classpath.version"));
-      }
+      setRequestProperty ("user-agent", "gnu-classpath/"
+                          + System.getProperty ("classpath.version"));
     
     if (getRequestProperty ("accept") == null)
-      {
-        setRequestProperty ("accept", "*/*");
-      }
+      setRequestProperty ("accept", "*/*");
     
     if (getRequestProperty ("Content-type") == null)
-      {
-        setRequestProperty ("Content-type", "application/x-www-form-urlencoded");
-      }
+      setRequestProperty ("Content-type", "application/x-www-form-urlencoded");
 
     // Set correct content length.
     setRequestProperty ("Content-length", String.valueOf (bufferedOutputStream.size()));
@@ -257,7 +244,7 @@
   /**
    * Read HTTP reply from inputStream.
    */
-  void receiveReply() throws IOException
+  private void receiveReply() throws IOException
   {
     // Parse the reply
     String line = inputStream.readLine();
@@ -268,6 +255,8 @@
         || (line.length() < (idx + 6)))
       throw new IOException ("Server reply was unparseable: " + saveline);
 
+    headers.addHeaderField (null, line);
+
     line = line.substring (idx + 1);
     String code = line.substring (0, 3);
     
@@ -349,6 +338,59 @@
   }
 
   /**
+   * Return a boolean indicating whether or not this connection is
+   * going through a proxy
+   *
+   * @return true if using a proxy, false otherwise
+   */
+  public boolean usingProxy()
+  {
+    return proxyInUse;
+  }
+
+  /**
+   * Returns an InputStream for reading from this connection.  This stream
+   * will be "queued up" for reading just the contents of the requested file.
+   * Overrides URLConnection.getInputStream()
+   *
+   * @return An InputStream for this connection.
+   *
+   * @exception IOException If an error occurs
+   */
+  public InputStream getInputStream() throws IOException
+  {
+    if (!connected)
+      connect();
+
+    if (!doInput)
+      throw new ProtocolException("Can't open InputStream if doInput is false");
+    
+    return inputStream;
+  }
+
+  /**
+   * Returns on OutputStream for writing to this connection.
+   *
+   * @return An OutputStream for this connection.
+   *
+   * @exception IOException If an error occurs
+   */
+  public OutputStream getOutputStream() throws IOException
+  {
+    if (!doOutput)
+      throw new ProtocolException
+        ("Want output stream while haven't setDoOutput(true)");
+    
+    if (!method.equals ("POST")) //But we might support "PUT" in future
+      setRequestMethod ("POST");
+  
+    if (!connected)
+      connect();
+    
+    return bufferedOutputStream;
+  }
+
+  /**
    * Overrides java.net.HttpURLConnection.setRequestMethod() in order to
    * restrict the available methods to only those we support.
    *
@@ -368,34 +410,18 @@
       throw new ProtocolException ("Unsupported or unknown request method " +
                                    method);
   }
-  
-  /**
-   * Return a boolean indicating whether or not this connection is
-   * going through a proxy
-   *
-   * @return true if using a proxy, false otherwise
-   */
-  public boolean usingProxy()
-  {
-    return proxyInUse;
-  }
 
   /**
-   * This method returns the header field key at the specified numeric
+   * This method returns the header field value at the specified numeric
    * index.
    *
    * @param n The index into the header field array
    *
-   * @return The name of the header field key, or <code>null</code> if the
-   * specified index is not valid.
+   * @return The value of the specified header field, or <code>null</code>
+   * if the specified index is not valid.
    */
-  public String getHeaderFieldKey (int n)
+  public String getHeaderField(int n)
   {
-    if (n < 1)
-      return null;
-
-    n--;
-
     if (!connected)
       try
 	{
@@ -406,24 +432,20 @@
 	  return null;
 	}
 
-    return headers.getHeaderFieldKeyByIndex (n);
+    return headers.getHeaderFieldValueByIndex (n);
   }
 
   /**
-   * This method returns the header field value at the specified numeric
+   * This method returns the header field key at the specified numeric
    * index.
    *
    * @param n The index into the header field array
    *
-   * @return The value of the specified header field, or <code>null</code>
-   * if the specified index is not valid.
+   * @return The name of the header field key, or <code>null</code> if the
+   * specified index is not valid.
    */
-  public String getHeaderField (int n)
+  public String getHeaderFieldKey(int n)
   {
-    if (n < 1)
-      return null;
-
-    n--;
     if (!connected)
       try
 	{
@@ -434,43 +456,6 @@
 	  return null;
 	}
 
-    return headers.getHeaderFieldValueByIndex (n);
-  }
-
-  /**
-   * Returns an InputStream for reading from this connection.  This stream
-   * will be "queued up" for reading just the contents of the requested file.
-   * Overrides URLConnection.getInputStream()
-   *
-   * @return An InputStream for this connection.
-   *
-   * @exception IOException If an error occurs
-   */
-  public InputStream getInputStream() throws IOException
-  {
-    if(inputStream != null)
-      return inputStream;
-
-    if (!connected)
-      connect();
-
-    return inputStream;
-  }
-
-  public OutputStream getOutputStream() throws IOException
-  {
-    if (!doOutput)
-      throw new ProtocolException
-        ("Want output stream while haven't setDoOutput(true)");
-    
-    if (!method.equals ("POST")) //But we might support "PUT" in future
-      setRequestMethod ("POST");
-  
-    if (!connected)
-      connect();
-  
-    return bufferedOutputStream;
+    return headers.getHeaderFieldKeyByIndex (n);
   }
-
-
 }
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/nio/ChannelInputStream.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/nio/ChannelInputStream.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/nio/ChannelInputStream.java	Sat Dec 27 21:18:06 2003
@@ -0,0 +1,79 @@
+/* ChannelInputStream.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.nio;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.IllegalBlockingModeException;
+import java.nio.channels.ReadableByteChannel;
+import java.nio.channels.SelectableChannel;
+
+/**
+ * @author Michael Koch
+ */
+public final class ChannelInputStream extends InputStream
+{
+  private ReadableByteChannel ch;
+  
+  public ChannelInputStream (ReadableByteChannel ch)
+  {
+    super();
+    
+    this.ch = ch;
+  }
+
+  public int read() throws IOException
+  {
+    if (ch instanceof SelectableChannel
+	&& (! ((SelectableChannel) ch).isBlocking()))
+      throw new IllegalBlockingModeException();
+      
+    ByteBuffer buffer = ByteBuffer.allocate(1);
+    int result = ch.read(buffer);
+
+    if (result == -1)
+      return -1;
+
+    if (result == 0)
+      throw new IOException("Could not read from channel");
+
+     return buffer.get(0);
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/nio/ChannelOutputStream.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/nio/ChannelOutputStream.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/nio/ChannelOutputStream.java	Sat Dec 27 21:18:06 2003
@@ -0,0 +1,67 @@
+/* ChannelOutputStream.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.nio;
+
+import java.io.OutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.WritableByteChannel;
+
+/**
+ * @author Michael Koch
+ */
+public final class ChannelOutputStream extends OutputStream
+{
+  private WritableByteChannel ch;
+  
+  public ChannelOutputStream (WritableByteChannel ch)
+  {
+    super();
+    
+    this.ch = ch;
+  }
+
+  public void write (int value) throws IOException
+  {
+    ByteBuffer buffer = ByteBuffer.allocate (1);
+    buffer.put ((byte) (value & 0xff));
+    buffer.flip();
+    ch.write (buffer);
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/nio/InputStreamChannel.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/nio/InputStreamChannel.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/nio/InputStreamChannel.java	Sat Dec 27 21:18:06 2003
@@ -0,0 +1,88 @@
+/* InputStreamChannel.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.nio;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.ClosedChannelException;
+import java.nio.channels.ReadableByteChannel;
+
+/**
+ * @author Michael Koch
+ */
+public final class InputStreamChannel implements ReadableByteChannel
+{
+  private boolean closed = false;
+  private InputStream in;
+  
+  public InputStreamChannel (InputStream in)
+  {
+    super();
+    this.in = in;
+  }
+
+  public void close() throws IOException
+  {
+    if (!closed)
+      {
+        in.close();
+        closed = true;
+      }
+  }
+
+  public boolean isOpen()
+  {
+    return !closed;
+  }
+
+  public int read (ByteBuffer dst) throws IOException
+  {
+    if (!isOpen())
+      throw new ClosedChannelException();
+    
+    byte[] buffer = new byte [dst.remaining()];
+    int readBytes = in.read (buffer);
+
+    if (readBytes > 0)
+      dst.put (buffer, 0, readBytes);
+
+    return readBytes;
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/nio/OutputStreamChannel.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/nio/OutputStreamChannel.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/nio/OutputStreamChannel.java	Sat Dec 27 21:18:06 2003
@@ -0,0 +1,87 @@
+/* OutputStreamChannel.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.nio;
+
+import java.io.OutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.ClosedChannelException;
+import java.nio.channels.WritableByteChannel;
+
+/**
+ * @author Michael Koch
+ */
+public final class OutputStreamChannel implements WritableByteChannel
+{
+  private boolean closed = false;
+  private OutputStream out;
+  
+  public OutputStreamChannel (OutputStream out)
+  {
+    super();
+    
+    this.out = out;
+  }
+
+  public void close() throws IOException
+  {
+    if (!closed)
+      {
+        out.close();
+        closed = true;
+      }
+  }
+
+  public boolean isOpen()
+  {
+    return !closed;
+  }
+  
+  public int write (ByteBuffer src) throws IOException
+  {
+    if (!isOpen())
+      throw new ClosedChannelException();
+    
+    int len = src.remaining();
+    byte[] buffer = new byte [len];
+    src.get (buffer);
+    out.write (buffer);
+    return len;
+  }
+}
Index: kaffe/libraries/javalib/gnu/java/nio/SelectorImpl.java
diff -u kaffe/libraries/javalib/gnu/java/nio/SelectorImpl.java:1.6 kaffe/libraries/javalib/gnu/java/nio/SelectorImpl.java:1.7
--- kaffe/libraries/javalib/gnu/java/nio/SelectorImpl.java:1.6	Tue Oct 28 12:29:38 2003
+++ kaffe/libraries/javalib/gnu/java/nio/SelectorImpl.java	Sat Dec 27 21:15:57 2003
@@ -65,12 +65,34 @@
   private Set keys;
   private Set selected;
 

*** Patch too long, truncated ***




More information about the kaffe mailing list