diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 8d04a293ba9..66d6f5e828f 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,33 @@ +2002-11-01 Michael Koch + + * 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. + 2002-11-01 Michael Koch * java/net/InetAddress.java: diff --git a/libjava/Makefile.am b/libjava/Makefile.am index bbcd51d8e38..e55c964fe9e 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -1958,6 +1958,7 @@ java/net/UnknownHostException.java \ java/net/UnknownServiceException.java \ java/nio/Buffer.java \ java/nio/ByteBuffer.java \ +java/nio/ByteOrder.java \ java/nio/MappedByteBuffer.java \ java/nio/channels/AlreadyConnectedException.java \ java/nio/channels/ByteChannel.java \ @@ -1967,13 +1968,25 @@ java/nio/channels/DatagramChannel.java \ java/nio/channels/GatheringByteChannel.java \ java/nio/channels/IllegalBlockingModeException.java \ java/nio/channels/InterruptibleChannel.java \ +java/nio/channels/Pipe.java \ java/nio/channels/ReadableByteChannel.java \ java/nio/channels/ScatteringByteChannel.java \ +java/nio/channels/SelectableChannel.java \ +java/nio/channels/SelectionKey.java \ +java/nio/channels/Selector.java \ java/nio/channels/ServerSocketChannel.java \ java/nio/channels/SocketChannel.java \ java/nio/channels/WritableByteChannel.java \ java/nio/channels/spi/AbstractSelectableChannel.java \ +java/nio/channels/spi/AbstractChannel.java \ +java/nio/channels/spi/AbstractInterruptibleChannel.java \ +java/nio/channels/spi/AbstractSelectionKey.java \ +java/nio/channels/spi/AbstractSelector.java \ +java/nio/channels/spi/SelectorProvider.java \ +java/nio/charset/Charset.java \ java/nio/charset/CharacterCodingException.java \ +java/nio/charset/CoderMalfunctionError.java \ +java/nio/charset/CodingErrorAction.java \ java/nio/charset/IllegalCharsetNameException.java \ java/nio/charset/MalformedInputException.java \ java/nio/charset/UnmappableCharacterException.java \ diff --git a/libjava/Makefile.in b/libjava/Makefile.in index b45966030c4..02093faa799 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -1708,6 +1708,7 @@ java/net/UnknownHostException.java \ java/net/UnknownServiceException.java \ java/nio/Buffer.java \ java/nio/ByteBuffer.java \ +java/nio/ByteOrder.java \ java/nio/MappedByteBuffer.java \ java/nio/channels/AlreadyConnectedException.java \ java/nio/channels/ByteChannel.java \ @@ -1717,13 +1718,25 @@ java/nio/channels/DatagramChannel.java \ java/nio/channels/GatheringByteChannel.java \ java/nio/channels/IllegalBlockingModeException.java \ java/nio/channels/InterruptibleChannel.java \ +java/nio/channels/Pipe.java \ java/nio/channels/ReadableByteChannel.java \ java/nio/channels/ScatteringByteChannel.java \ +java/nio/channels/SelectableChannel.java \ +java/nio/channels/SelectionKey.java \ +java/nio/channels/Selector.java \ java/nio/channels/ServerSocketChannel.java \ java/nio/channels/SocketChannel.java \ java/nio/channels/WritableByteChannel.java \ java/nio/channels/spi/AbstractSelectableChannel.java \ +java/nio/channels/spi/AbstractChannel.java \ +java/nio/channels/spi/AbstractInterruptibleChannel.java \ +java/nio/channels/spi/AbstractSelectionKey.java \ +java/nio/channels/spi/AbstractSelector.java \ +java/nio/channels/spi/SelectorProvider.java \ +java/nio/charset/Charset.java \ java/nio/charset/CharacterCodingException.java \ +java/nio/charset/CoderMalfunctionError.java \ +java/nio/charset/CodingErrorAction.java \ java/nio/charset/IllegalCharsetNameException.java \ java/nio/charset/MalformedInputException.java \ java/nio/charset/UnmappableCharacterException.java \ @@ -2959,7 +2972,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/java/net/natInetAddress.P .deps/java/net/natNetworkInterface.P \ .deps/java/net/natPlainDatagramSocketImpl.P \ .deps/java/net/natPlainSocketImpl.P .deps/java/nio/Buffer.P \ -.deps/java/nio/ByteBuffer.P .deps/java/nio/MappedByteBuffer.P \ +.deps/java/nio/ByteBuffer.P .deps/java/nio/ByteOrder.P \ +.deps/java/nio/MappedByteBuffer.P \ .deps/java/nio/channels/AlreadyConnectedException.P \ .deps/java/nio/channels/ByteChannel.P .deps/java/nio/channels/Channel.P \ .deps/java/nio/channels/ClosedChannelException.P \ @@ -2967,13 +2981,25 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/java/nio/channels/GatheringByteChannel.P \ .deps/java/nio/channels/IllegalBlockingModeException.P \ .deps/java/nio/channels/InterruptibleChannel.P \ +.deps/java/nio/channels/Pipe.P \ .deps/java/nio/channels/ReadableByteChannel.P \ .deps/java/nio/channels/ScatteringByteChannel.P \ +.deps/java/nio/channels/SelectableChannel.P \ +.deps/java/nio/channels/SelectionKey.P \ +.deps/java/nio/channels/Selector.P \ .deps/java/nio/channels/ServerSocketChannel.P \ .deps/java/nio/channels/SocketChannel.P \ .deps/java/nio/channels/WritableByteChannel.P \ +.deps/java/nio/channels/spi/AbstractChannel.P \ +.deps/java/nio/channels/spi/AbstractInterruptibleChannel.P \ .deps/java/nio/channels/spi/AbstractSelectableChannel.P \ +.deps/java/nio/channels/spi/AbstractSelectionKey.P \ +.deps/java/nio/channels/spi/AbstractSelector.P \ +.deps/java/nio/channels/spi/SelectorProvider.P \ .deps/java/nio/charset/CharacterCodingException.P \ +.deps/java/nio/charset/Charset.P \ +.deps/java/nio/charset/CoderMalfunctionError.P \ +.deps/java/nio/charset/CodingErrorAction.P \ .deps/java/nio/charset/IllegalCharsetNameException.P \ .deps/java/nio/charset/MalformedInputException.P \ .deps/java/nio/charset/UnmappableCharacterException.P \ diff --git a/libjava/java/nio/ByteOrder.java b/libjava/java/nio/ByteOrder.java new file mode 100644 index 00000000000..010fa29d0b6 --- /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 74a26c64ec5..301f33e20a0 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 00000000000..9c3c6cdc2de --- /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 00000000000..7b3a50e9bcd --- /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 00000000000..6835d1d99db --- /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 00000000000..715bc7f98bb --- /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 e5d95c1bfbb..e423bd10b43 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 05fc8a55f63..dc6e1d2d96a 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 00000000000..3d7fe7ac799 --- /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 00000000000..235b995d2de --- /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 99f7233f00b..42bb1f24bb4 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 00000000000..e14e3b330ae --- /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 00000000000..033a8d7f98b --- /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 00000000000..93ea5378f6b --- /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 SelectorProvider 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 SelectorProvider 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 00000000000..2a1338feae4 --- /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 00000000000..16c23bfa224 --- /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 00000000000..463107712f6 --- /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 2eddf6161ea..32346a0457c 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