aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/nio
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2002-11-01 12:03:40 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2002-11-01 12:03:40 +0000
commit9dcb1ec8139c2ebd15357e6efe37d19f4ff80267 (patch)
tree98c97770f4673a67f522bcdbce39858aa29df2a6 /libjava/java/nio
parent075fc17aa50627c58a902aca1b27a74a7c7f7311 (diff)
downloadgcc-9dcb1ec8139c2ebd15357e6efe37d19f4ff80267.zip
gcc-9dcb1ec8139c2ebd15357e6efe37d19f4ff80267.tar.gz
gcc-9dcb1ec8139c2ebd15357e6efe37d19f4ff80267.tar.bz2
ByteOrder.java: New file.
2002-11-01 Michael Koch <konqueror@gmx.de> * java/nio/ByteOrder.java: New file. * java/nio/channels/DatagramChannel.java: (DatagramChannel): New constructor. * java/nio/channels/Pipe.java: New file. * java/nio/channels/SelectableChannel.java: New file. * java/nio/channels/SelectionKey.java: New file. * java/nio/channels/Selector.java: New file. * java/nio/channels/ServerSocketChannel.java (ServerSocketChannel): New constructor. * java/nio/channels/SocketChannel.java (SocketChannel): New constructor. * java/nio/channels/Pipe.java: New file. * java/nio/channels/spi/AbstractChannel.java: New file. * java/nio/channels/spi/AbstractInterruptibleChannel.java: New file. * java/nio/channels/spi/AbstractSelectableChannel.java: License added (AbstractSelectableChannel): New stubbed method. * java/nio/channels/spi/AbstractSelectionKey.java: New file. * java/nio/channels/spi/AbstractSelector.java: New file. * java/nio/channels/spi/SelectorProvider.java: New file. * java/nio/charset/Charset.java: New file. * java/nio/charset/CoderMalfunctionError.java: New file. * java/nio/charset/CodingErrorAction.java: New file. * java/nio/charset/spi/CharsetProvider.java (charsetForName): Uncommented. * Makefile.am (java_native_source_files): Added new files. * Makefile.in: Regenerated. From-SVN: r58713
Diffstat (limited to 'libjava/java/nio')
-rw-r--r--libjava/java/nio/ByteOrder.java60
-rw-r--r--libjava/java/nio/channels/DatagramChannel.java9
-rw-r--r--libjava/java/nio/channels/Pipe.java79
-rw-r--r--libjava/java/nio/channels/SelectableChannel.java89
-rw-r--r--libjava/java/nio/channels/SelectionKey.java120
-rw-r--r--libjava/java/nio/channels/Selector.java96
-rw-r--r--libjava/java/nio/channels/ServerSocketChannel.java7
-rw-r--r--libjava/java/nio/channels/SocketChannel.java7
-rw-r--r--libjava/java/nio/channels/spi/AbstractChannel.java57
-rw-r--r--libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java87
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelectableChannel.java44
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelectionKey.java66
-rw-r--r--libjava/java/nio/channels/spi/AbstractSelector.java100
-rw-r--r--libjava/java/nio/channels/spi/SelectorProvider.java82
-rw-r--r--libjava/java/nio/charset/Charset.java90
-rw-r--r--libjava/java/nio/charset/CoderMalfunctionError.java52
-rw-r--r--libjava/java/nio/charset/CodingErrorAction.java54
-rw-r--r--libjava/java/nio/charset/spi/CharsetProvider.java4
18 files changed, 1096 insertions, 7 deletions
diff --git a/libjava/java/nio/ByteOrder.java b/libjava/java/nio/ByteOrder.java
new file mode 100644
index 0000000..010fa29
--- /dev/null
+++ b/libjava/java/nio/ByteOrder.java
@@ -0,0 +1,60 @@
+/* ByteOrder.java --
+ Copyright (C) 2002 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 java.nio;
+
+
+public final class ByteOrder
+{
+ public static final ByteOrder BIG_ENDIAN = new ByteOrder();
+ public static final ByteOrder LITTLE_ENDIAN = new ByteOrder();
+
+ public static ByteOrder nativeOrder()
+ {
+ return BIG_ENDIAN;
+ }
+
+ public String toString()
+ {
+ return this == BIG_ENDIAN ? "BIG_ENDIAN" : "LITTLE_ENDIAN";
+ }
+
+ // This class can only be instantiated here.
+ private ByteOrder ()
+ {
+ }
+}
diff --git a/libjava/java/nio/channels/DatagramChannel.java b/libjava/java/nio/channels/DatagramChannel.java
index 74a26c6..301f33e 100644
--- a/libjava/java/nio/channels/DatagramChannel.java
+++ b/libjava/java/nio/channels/DatagramChannel.java
@@ -38,10 +38,13 @@ exception statement from your version. */
package java.nio.channels;
import java.nio.channels.spi.AbstractSelectableChannel;
+import java.nio.channels.spi.SelectorProvider;
-public class DatagramChannel
+public abstract class DatagramChannel
extends AbstractSelectableChannel
{
+ public DatagramChannel (SelectorProvider provider)
+ {
+ super (provider);
+ }
}
-
-
diff --git a/libjava/java/nio/channels/Pipe.java b/libjava/java/nio/channels/Pipe.java
new file mode 100644
index 0000000..9c3c6cd
--- /dev/null
+++ b/libjava/java/nio/channels/Pipe.java
@@ -0,0 +1,79 @@
+/* Pipe.java --
+ Copyright (C) 2002 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 java.nio.channels;
+
+import java.nio.channels.spi.AbstractSelectableChannel;
+import java.nio.channels.spi.SelectorProvider;
+
+public abstract class Pipe
+{
+ public abstract static class SinkChannel
+ extends AbstractSelectableChannel
+ implements WritableByteChannel, GatheringByteChannel
+ {
+ protected SinkChannel(SelectorProvider provider)
+ {
+ super (provider);
+ }
+ }
+
+ public abstract static class SourceChannel
+ extends AbstractSelectableChannel
+ implements ReadableByteChannel, ScatteringByteChannel
+ {
+ protected SourceChannel(SelectorProvider provider)
+ {
+ super (provider);
+ }
+ }
+
+ protected Pipe()
+ {
+ }
+
+ /**
+ * @exception IOException If an error occurs
+ */
+ public static Pipe open()
+ {
+ return null;
+ }
+
+ public abstract Pipe.SinkChannel sink();
+ public abstract Pipe.SourceChannel source();
+}
diff --git a/libjava/java/nio/channels/SelectableChannel.java b/libjava/java/nio/channels/SelectableChannel.java
new file mode 100644
index 0000000..7b3a50e
--- /dev/null
+++ b/libjava/java/nio/channels/SelectableChannel.java
@@ -0,0 +1,89 @@
+/* SelectableChannel.java --
+ Copyright (C) 2002 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 java.nio.channels;
+
+import java.nio.channels.spi.AbstractInterruptibleChannel;
+import java.nio.channels.spi.SelectorProvider;
+
+public abstract class SelectableChannel
+ extends AbstractInterruptibleChannel
+{
+ protected SelectableChannel()
+ {
+ }
+
+ public abstract Object blockingLock();
+
+ /**
+ * @exception ClosedChannelException FIXME
+ * @exception IllegalBlockingModeException FIXME
+ * @exception IOException FIXME
+ */
+ public abstract SelectableChannel configureBlocking(boolean block);
+
+ public abstract boolean isBlocking();
+
+ public abstract boolean isRegistered();
+
+ public abstract SelectionKey keyFor(Selector sel);
+
+ public abstract SelectorProvider provider();
+
+ /**
+ * @exception CancelledKeyException FIXME
+ * @exception ClosedChannelException FIXME
+ * @exception IllegalArgumentException FIXME
+ * @exception IllegalBlockingModeException FIXME
+ * @exception IllegalSelectorException FIXME
+ */
+ public final SelectionKey register(Selector sel, int ops) throws java.nio.channels.ClosedChannelException
+ {
+ return register(sel, ops, null);
+ }
+
+ /**
+ * @exception CancelledKeyException FIXME
+ * @exception ClosedChannelException FIXME
+ * @exception IllegalArgumentException FIXME
+ * @exception IllegalBlockingModeException FIXME
+ * @exception IllegalSelectorException FIXME
+ */
+ public abstract SelectionKey register(Selector sel, int ops, Object att) throws java.nio.channels.ClosedChannelException;
+
+ public abstract int validOps();
+}
diff --git a/libjava/java/nio/channels/SelectionKey.java b/libjava/java/nio/channels/SelectionKey.java
new file mode 100644
index 0000000..6835d1d
--- /dev/null
+++ b/libjava/java/nio/channels/SelectionKey.java
@@ -0,0 +1,120 @@
+/* SelectionKey.java --
+ Copyright (C) 2002 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 java.nio.channels;
+
+public abstract class SelectionKey
+{
+ public static final int OP_ACCEPT = 1<<0;
+ public static final int OP_CONNECT = 1<<1;
+ public static final int OP_READ = 1<<2;
+ public static final int OP_WRITE = 1<<3;
+
+ Object attached;
+
+ protected SelectionKey()
+ {
+ }
+
+ public final Object attach(Object obj)
+ {
+ Object old = attached;
+ attached = obj;
+ return old;
+ }
+
+ public final Object attachment()
+ {
+ return attached;
+ }
+
+ /**
+ * @exception CancelledKeyException FIXME
+ */
+ public final boolean isAcceptable()
+ {
+ return (readyOps() & OP_ACCEPT) != 0;
+ }
+
+ /**
+ * @exception CancelledKeyException FIXME
+ */
+ public final boolean isConnectable()
+ {
+ return (readyOps() & OP_CONNECT) != 0;
+ }
+
+ /**
+ * @exception CancelledKeyException FIXME
+ */
+ public final boolean isReadable()
+ {
+ return (readyOps() & OP_READ) != 0;
+ }
+
+ /**
+ * @exception CancelledKeyException FIXME
+ */
+ public final boolean isWritable()
+ {
+ return (readyOps() & OP_WRITE) != 0;
+ }
+
+ public abstract void cancel();
+
+ public abstract SelectableChannel channel();
+
+ /**
+ * @exception CancelledKeyException FIXME
+ */
+ public abstract int interestOps();
+
+ /**
+ * @exception CancelledKeyException FIXME
+ * @exception IllegalArgumentException FIXME
+ */
+ public abstract SelectionKey interestOps(int ops);
+
+ public abstract boolean isValid();
+
+ /**
+ * @exception CancelledKeyException FIXME
+ */
+ public abstract int readyOps();
+
+ public abstract Selector selector();
+}
diff --git a/libjava/java/nio/channels/Selector.java b/libjava/java/nio/channels/Selector.java
new file mode 100644
index 0000000..715bc7f
--- /dev/null
+++ b/libjava/java/nio/channels/Selector.java
@@ -0,0 +1,96 @@
+/* Selector.java --
+ Copyright (C) 2002 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 java.nio.channels;
+
+import java.util.Set;
+import java.nio.channels.spi.SelectorProvider;
+
+public abstract class Selector
+{
+ protected Selector()
+ {
+ }
+
+ /**
+ * @exception IOException If an error occurs
+ */
+ public static Selector open()
+ {
+ return SelectorProvider.provider().openSelector();
+ }
+
+ /**
+ * @exception IOException If an error occurs
+ */
+ public abstract void close();
+
+ public abstract boolean isOpen();
+
+ /**
+ * @exception ClosedSelectorException FIXME
+ */
+ public abstract Set keys();
+
+ public abstract SelectorProvider provider();
+
+ /**
+ * @exception ClosedSelectorException FIXME
+ * @exception IOException If an error occurs
+ */
+ public abstract int select();
+
+ /**
+ * @exception ClosedSelectorException FIXME
+ * @exception IllegalArgumentException FIXME
+ * @exception IOException If an error occurs
+ */
+ public abstract int select(long timeout);
+
+ /**
+ * @exception ClosedSelectorException FIXME
+ */
+ public abstract Set selectedKeys();
+
+ /**
+ * @exception ClosedSelectorException FIXME
+ * @exception IOException If an error occurs
+ */
+ public abstract int selectNow();
+
+ public abstract Selector wakeup();
+}
diff --git a/libjava/java/nio/channels/ServerSocketChannel.java b/libjava/java/nio/channels/ServerSocketChannel.java
index e5d95c1..e423bd1 100644
--- a/libjava/java/nio/channels/ServerSocketChannel.java
+++ b/libjava/java/nio/channels/ServerSocketChannel.java
@@ -38,8 +38,13 @@ exception statement from your version. */
package java.nio.channels;
import java.nio.channels.spi.AbstractSelectableChannel;
+import java.nio.channels.spi.SelectorProvider;
-public class ServerSocketChannel
+public abstract class ServerSocketChannel
extends AbstractSelectableChannel
{
+ public ServerSocketChannel (SelectorProvider provider)
+ {
+ super (provider);
+ }
}
diff --git a/libjava/java/nio/channels/SocketChannel.java b/libjava/java/nio/channels/SocketChannel.java
index 05fc8a5..dc6e1d2 100644
--- a/libjava/java/nio/channels/SocketChannel.java
+++ b/libjava/java/nio/channels/SocketChannel.java
@@ -38,8 +38,13 @@ exception statement from your version. */
package java.nio.channels;
import java.nio.channels.spi.AbstractSelectableChannel;
+import java.nio.channels.spi.SelectorProvider;
-public class SocketChannel
+public abstract class SocketChannel
extends AbstractSelectableChannel
{
+ public SocketChannel (SelectorProvider provider)
+ {
+ super (provider);
+ }
}
diff --git a/libjava/java/nio/channels/spi/AbstractChannel.java b/libjava/java/nio/channels/spi/AbstractChannel.java
new file mode 100644
index 0000000..3d7fe7a
--- /dev/null
+++ b/libjava/java/nio/channels/spi/AbstractChannel.java
@@ -0,0 +1,57 @@
+/* AbstractChannel.java --
+ Copyright (C) 2002 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 java.nio.channels.spi;
+
+import java.io.IOException;
+import java.nio.channels.Channel;
+
+public abstract class AbstractChannel implements Channel
+{
+ boolean opened;
+
+ public boolean isOpen()
+ {
+ return opened;
+ }
+
+ public void close() throws IOException
+ {
+ if (! isOpen())
+ return;
+ }
+}
diff --git a/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java b/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java
new file mode 100644
index 0000000..235b995d2
--- /dev/null
+++ b/libjava/java/nio/channels/spi/AbstractInterruptibleChannel.java
@@ -0,0 +1,87 @@
+/* AbstractInterruptibleChannel.java --
+ Copyright (C) 2002 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 java.nio.channels.spi;
+
+import java.io.IOException;
+import java.nio.channels.Channel;
+import java.nio.channels.InterruptibleChannel;
+
+public abstract class AbstractInterruptibleChannel
+ implements Channel, InterruptibleChannel
+{
+ boolean opened = false;
+
+ protected AbstractInterruptibleChannel()
+ {
+ }
+
+ protected final void begin()
+ {
+ // Marks the beginning of an I/O operation that might block indefinitely.
+ }
+
+ /**
+ * @exception IOException If an error occurs
+ */
+ public final void close() throws IOException
+ {
+ // Closes this channel.
+ implCloseChannel();
+ }
+
+ /**
+ * @exception AsynchronousCloseException FIXME
+ * @exception ClosedByInterruptException FIXME
+ */
+ protected final void end(boolean completed)
+ {
+ // Marks the end of an I/O operation that might block indefinitely.
+ }
+
+ /**
+ * @exception IOException If an error occurs
+ */
+ protected abstract void implCloseChannel() throws IOException;
+
+ public final boolean isOpen()
+ {
+ // Tells whether or not this channel is open.
+ return opened;
+ }
+}
+
diff --git a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
index 99f7233..42bb1f2 100644
--- a/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
+++ b/libjava/java/nio/channels/spi/AbstractSelectableChannel.java
@@ -1,7 +1,51 @@
+/* AbstractSelectableChannel.java --
+ Copyright (C) 2002 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 java.nio.channels.spi;
+import java.nio.channels.SelectableChannel;
+
public abstract class AbstractSelectableChannel
+ extends SelectableChannel
{
+ protected AbstractSelectableChannel (SelectorProvider provider)
+ {
+ }
+
public final boolean isBlocking()
{
return true;
diff --git a/libjava/java/nio/channels/spi/AbstractSelectionKey.java b/libjava/java/nio/channels/spi/AbstractSelectionKey.java
new file mode 100644
index 0000000..e14e3b3
--- /dev/null
+++ b/libjava/java/nio/channels/spi/AbstractSelectionKey.java
@@ -0,0 +1,66 @@
+/* AbstractSelectionKey.java --
+ Copyright (C) 2002 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 java.nio.channels.spi;
+
+import java.nio.channels.SelectionKey;
+
+public abstract class AbstractSelectionKey
+ extends SelectionKey
+{
+ boolean ok = true;
+
+ protected AbstractSelectionKey ()
+ {
+ }
+
+ public final void cancel ()
+ {
+ if (ok)
+ {
+ selector ().selectedKeys ().add (this);
+ }
+
+ ok = false;
+ }
+
+ public final boolean isValid ()
+ {
+ return ok;
+ }
+}
+
diff --git a/libjava/java/nio/channels/spi/AbstractSelector.java b/libjava/java/nio/channels/spi/AbstractSelector.java
new file mode 100644
index 0000000..033a8d7
--- /dev/null
+++ b/libjava/java/nio/channels/spi/AbstractSelector.java
@@ -0,0 +1,100 @@
+/* AbstractSelector.java --
+ Copyright (C) 2002 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 java.nio.channels.spi;
+
+import java.nio.channels.SelectionKey;
+import java.nio.channels.Selector;
+import java.util.List;
+import java.util.Set;
+
+public abstract class AbstractSelector extends Selector
+{
+ boolean closed = true;
+ SelectorProvider provider;
+
+ protected AbstractSelector(SelectorProvider provider)
+ {
+ this.provider = provider;
+ }
+
+ protected final void begin()
+ {
+ }
+
+ /**
+ * @exception IOException If an error occurs
+ */
+ public final void close()
+ {
+ if (closed)
+ return;
+ closed = true;
+ implCloseSelector();
+ }
+
+ protected final void deregister(AbstractSelectionKey key)
+ {
+ cancelledKeys().remove(key);
+ }
+
+ protected final void end()
+ {
+ }
+
+ public final boolean isOpen()
+ {
+ return ! closed;
+ }
+
+ public final SelectorProvider provider()
+ {
+ return provider;
+ }
+
+ protected final Set cancelledKeys()
+ {
+ return null;
+ }
+
+ /**
+ * @exception IOException If an error occurs
+ */
+ protected abstract void implCloseSelector();
+
+ protected abstract SelectionKey register(AbstractSelectableChannel ch, int ops, Object att);
+}
diff --git a/libjava/java/nio/channels/spi/SelectorProvider.java b/libjava/java/nio/channels/spi/SelectorProvider.java
new file mode 100644
index 0000000..93ea537
--- /dev/null
+++ b/libjava/java/nio/channels/spi/SelectorProvider.java
@@ -0,0 +1,82 @@
+/* SelectorProvider.java --
+ Copyright (C) 2002 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 java.nio.channels.spi;
+
+import java.nio.channels.DatagramChannel;
+import java.nio.channels.Pipe;
+import java.nio.channels.ServerSocketChannel;
+import java.nio.channels.SocketChannel;
+
+/**
+ * @since 1.4
+ */
+public abstract class SelectorProvider
+{
+ static SelectorProvider pr;
+
+ /**
+ * Creates the <code>SelectorProvider<code> object
+ *
+ * @exception SecurityException If a security manager has been installed and
+ * it denies RuntimePermission("selectorProvider")
+ */
+ protected SelectorProvider()
+ {
+ SecurityManager sm = System.getSecurityManager ();
+ if (sm != null)
+ sm.checkPermission (new RuntimePermission ("selectorProvider"));
+ }
+
+ public abstract DatagramChannel openDatagramChannel();
+
+ public abstract Pipe openPipe();
+
+ public abstract AbstractSelector openSelector();
+
+ public abstract ServerSocketChannel openServerSocketChannel();
+
+ public abstract SocketChannel openSocketChannel();
+
+ /**
+ * Returns the global <code>SelectorProvider</code> object
+ */
+ public static SelectorProvider provider()
+ {
+ return pr;
+ }
+}
diff --git a/libjava/java/nio/charset/Charset.java b/libjava/java/nio/charset/Charset.java
new file mode 100644
index 0000000..2a1338f
--- /dev/null
+++ b/libjava/java/nio/charset/Charset.java
@@ -0,0 +1,90 @@
+/* Charset.java --
+ Copyright (C) 2002 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 java.nio.charset;
+
+
+import java.nio.*;
+
+public class Charset
+{
+ public static Charset forName(String name)
+ {
+ return new Charset();
+ }
+
+/*
+ public CharsetDecoder newDecoder()
+ {
+ return new CharsetDecoder(this,2,2)
+ {
+ protected CoderResult decodeLoop(ByteBuffer in,
+ CharBuffer out)
+ {
+ while (in.hasRemaining())
+ {
+ char a = (char) in.get();
+ out.put(a);
+ }
+ return null;
+ }
+ };
+ }
+
+ public CharsetEncoder newEncoder()
+ {
+ return new CharsetEncoder(this,2,2)
+ {
+ protected CoderResult encodeLoop(CharBuffer in,
+ ByteBuffer out)
+ {
+ //System.out.println("in encode loop:"+in.hasRemaining());
+
+ while (in.hasRemaining())
+ {
+ char a = in.get();
+ out.put((byte)a);
+
+ //int len = out.position();
+ //System.out.println("pos="+len + ","+a);
+ }
+ return null;
+ }
+ };
+ }
+ */
+}
diff --git a/libjava/java/nio/charset/CoderMalfunctionError.java b/libjava/java/nio/charset/CoderMalfunctionError.java
new file mode 100644
index 0000000..16c23bf
--- /dev/null
+++ b/libjava/java/nio/charset/CoderMalfunctionError.java
@@ -0,0 +1,52 @@
+/* CoderMalfunctionError.java --
+ Copyright (C) 2002 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 java.nio.charset;
+
+/**
+ * @since 1.4
+ */
+class CoderMalfunctionError extends Error
+{
+ /**
+ * Creates the error
+ */
+ public CoderMalfunctionError(Exception cause)
+ {
+ super (cause);
+ }
+}
diff --git a/libjava/java/nio/charset/CodingErrorAction.java b/libjava/java/nio/charset/CodingErrorAction.java
new file mode 100644
index 0000000..4631077
--- /dev/null
+++ b/libjava/java/nio/charset/CodingErrorAction.java
@@ -0,0 +1,54 @@
+/* CodingErrorAction.java --
+ Copyright (C) 2002 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 java.nio.charset;
+
+
+class CodingErrorAction
+{
+ public static final CodingErrorAction IGNORE;
+ public static final CodingErrorAction REPLACE;
+ public static final CodingErrorAction REPORT;
+
+ /**
+ * FIXME
+ */
+ public String toString ()
+ {
+ return "";
+ }
+}
diff --git a/libjava/java/nio/charset/spi/CharsetProvider.java b/libjava/java/nio/charset/spi/CharsetProvider.java
index 2eddf61..32346a0 100644
--- a/libjava/java/nio/charset/spi/CharsetProvider.java
+++ b/libjava/java/nio/charset/spi/CharsetProvider.java
@@ -37,7 +37,7 @@ exception statement from your version. */
package java.nio.charset.spi;
-//import java.nio.charset.Charset;
+import java.nio.charset.Charset;
import java.util.Iterator;
/**
@@ -84,5 +84,5 @@ public abstract class CharsetProvider
*
* @return the charset, or null if not supported
*/
- //public abstract Charset charsetForName(String name);
+ public abstract Charset charsetForName(String name);
} // class CharsetProvider