Commit 81bc077a by Michael Koch Committed by Michael Koch

2003-10-12 Michael Koch <konqueror@gmx.de>

	* gnu/java/nio/PipeImpl.java
	(SourceChannelImpl): New inner class.
	(SinkChannelImpl): New inner class.
	(sink): New member variable.
	(source): New member variable.
	(PipeImpl): Add SelectorProvider argument, implemented.
	(nativeInit): New method.
	(sink): Return sink channel.
	(source): Return source channel.
	* gnu/java/nio/SelectorProviderImpl.java
	(openPipe): Give provider as argument to PipeImpl constructor.
	* java/nio/channels/spi/SelectorProvider.java
	(pr): Removed.
	(systemDefaultProvider): New member variable.
	(provider): Made it synchronized, use property
	java.nio.channels.spi.SelectorProvider.
	* gnu/java/nio/natPipeImpl.cc: New file.
	* Makefile.am (nat_source_files): Added gnu/java/nio/natPipeImpl.cc.
	* Makefile.in: Regenerated.

From-SVN: r72397
parent b77d1698
2003-10-12 Michael Koch <konqueror@gmx.de> 2003-10-12 Michael Koch <konqueror@gmx.de>
* gnu/java/nio/PipeImpl.java
(SourceChannelImpl): New inner class.
(SinkChannelImpl): New inner class.
(sink): New member variable.
(source): New member variable.
(PipeImpl): Add SelectorProvider argument, implemented.
(nativeInit): New method.
(sink): Return sink channel.
(source): Return source channel.
* gnu/java/nio/SelectorProviderImpl.java
(openPipe): Give provider as argument to PipeImpl constructor.
* java/nio/channels/spi/SelectorProvider.java
(pr): Removed.
(systemDefaultProvider): New member variable.
(provider): Made it synchronized, use property
java.nio.channels.spi.SelectorProvider.
* gnu/java/nio/natPipeImpl.cc: New file.
* Makefile.am (nat_source_files): Added gnu/java/nio/natPipeImpl.cc.
* Makefile.in: Regenerated.
2003-10-12 Michael Koch <konqueror@gmx.de>
* javax/swing/table/DefaultTableModel.java, * javax/swing/table/DefaultTableModel.java,
javax/swing/table/TableCellEditor.java, javax/swing/table/TableCellEditor.java,
javax/swing/table/TableCellRenderer.java, javax/swing/table/TableCellRenderer.java,
......
...@@ -2659,6 +2659,7 @@ gnu/java/net/natPlainDatagramSocketImpl.cc \ ...@@ -2659,6 +2659,7 @@ gnu/java/net/natPlainDatagramSocketImpl.cc \
gnu/java/net/natPlainSocketImpl.cc \ gnu/java/net/natPlainSocketImpl.cc \
gnu/java/net/protocol/core/natCoreInputStream.cc \ gnu/java/net/protocol/core/natCoreInputStream.cc \
gnu/java/nio/natFileLockImpl.cc \ gnu/java/nio/natFileLockImpl.cc \
gnu/java/nio/natPipeImpl.cc \
gnu/java/nio/natSelectorImpl.cc \ gnu/java/nio/natSelectorImpl.cc \
gnu/java/nio/natNIOServerSocket.cc \ gnu/java/nio/natNIOServerSocket.cc \
java/io/natFile.cc \ java/io/natFile.cc \
......
...@@ -2377,6 +2377,7 @@ gnu/java/net/natPlainDatagramSocketImpl.cc \ ...@@ -2377,6 +2377,7 @@ gnu/java/net/natPlainDatagramSocketImpl.cc \
gnu/java/net/natPlainSocketImpl.cc \ gnu/java/net/natPlainSocketImpl.cc \
gnu/java/net/protocol/core/natCoreInputStream.cc \ gnu/java/net/protocol/core/natCoreInputStream.cc \
gnu/java/nio/natFileLockImpl.cc \ gnu/java/nio/natFileLockImpl.cc \
gnu/java/nio/natPipeImpl.cc \
gnu/java/nio/natSelectorImpl.cc \ gnu/java/nio/natSelectorImpl.cc \
gnu/java/nio/natNIOServerSocket.cc \ gnu/java/nio/natNIOServerSocket.cc \
java/io/natFile.cc \ java/io/natFile.cc \
...@@ -2555,14 +2556,14 @@ gnu/java/awt/natEmbeddedWindow.lo \ ...@@ -2555,14 +2556,14 @@ gnu/java/awt/natEmbeddedWindow.lo \
gnu/java/net/natPlainDatagramSocketImpl.lo \ gnu/java/net/natPlainDatagramSocketImpl.lo \
gnu/java/net/natPlainSocketImpl.lo \ gnu/java/net/natPlainSocketImpl.lo \
gnu/java/net/protocol/core/natCoreInputStream.lo \ gnu/java/net/protocol/core/natCoreInputStream.lo \
gnu/java/nio/natFileLockImpl.lo gnu/java/nio/natSelectorImpl.lo \ gnu/java/nio/natFileLockImpl.lo gnu/java/nio/natPipeImpl.lo \
gnu/java/nio/natNIOServerSocket.lo java/io/natFile.lo \ gnu/java/nio/natSelectorImpl.lo gnu/java/nio/natNIOServerSocket.lo \
java/io/natFileDescriptor.lo java/io/natObjectInputStream.lo \ java/io/natFile.lo java/io/natFileDescriptor.lo \
java/io/natVMObjectStreamClass.lo java/lang/natCharacter.lo \ java/io/natObjectInputStream.lo java/io/natVMObjectStreamClass.lo \
java/lang/natClass.lo java/lang/natClassLoader.lo \ java/lang/natCharacter.lo java/lang/natClass.lo \
java/lang/natConcreteProcess.lo java/lang/natDouble.lo \ java/lang/natClassLoader.lo java/lang/natConcreteProcess.lo \
java/lang/natFloat.lo java/lang/natMath.lo java/lang/natObject.lo \ java/lang/natDouble.lo java/lang/natFloat.lo java/lang/natMath.lo \
java/lang/natRuntime.lo java/lang/natString.lo \ java/lang/natObject.lo java/lang/natRuntime.lo java/lang/natString.lo \
java/lang/natStringBuffer.lo java/lang/natSystem.lo \ java/lang/natStringBuffer.lo java/lang/natSystem.lo \
java/lang/natThread.lo java/lang/natVMSecurityManager.lo \ java/lang/natThread.lo java/lang/natVMSecurityManager.lo \
java/lang/ref/natReference.lo java/lang/reflect/natArray.lo \ java/lang/ref/natReference.lo java/lang/reflect/natArray.lo \
...@@ -3055,7 +3056,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ ...@@ -3055,7 +3056,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/java/nio/charset/UTF_16LE.P \ .deps/gnu/java/nio/charset/UTF_16LE.P \
.deps/gnu/java/nio/charset/UTF_8.P .deps/gnu/java/nio/natFileLockImpl.P \ .deps/gnu/java/nio/charset/UTF_8.P .deps/gnu/java/nio/natFileLockImpl.P \
.deps/gnu/java/nio/natNIOServerSocket.P \ .deps/gnu/java/nio/natNIOServerSocket.P \
.deps/gnu/java/nio/natSelectorImpl.P \ .deps/gnu/java/nio/natPipeImpl.P .deps/gnu/java/nio/natSelectorImpl.P \
.deps/gnu/java/rmi/RMIMarshalledObjectInputStream.P \ .deps/gnu/java/rmi/RMIMarshalledObjectInputStream.P \
.deps/gnu/java/rmi/RMIMarshalledObjectOutputStream.P \ .deps/gnu/java/rmi/RMIMarshalledObjectOutputStream.P \
.deps/gnu/java/rmi/dgc/DGCImpl.P .deps/gnu/java/rmi/dgc/DGCImpl_Skel.P \ .deps/gnu/java/rmi/dgc/DGCImpl.P .deps/gnu/java/rmi/dgc/DGCImpl_Skel.P \
......
/* PipeImpl.java -- /* PipeImpl.java --
Copyright (C) 2002 Free Software Foundation, Inc. Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath. This file is part of GNU Classpath.
...@@ -37,21 +37,127 @@ exception statement from your version. */ ...@@ -37,21 +37,127 @@ exception statement from your version. */
package gnu.java.nio; package gnu.java.nio;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.Pipe; import java.nio.channels.Pipe;
import java.nio.channels.spi.SelectorProvider;
class PipeImpl extends Pipe class PipeImpl extends Pipe
{ {
public PipeImpl() public final class SourceChannelImpl extends Pipe.SourceChannel
{ {
private int native_fd;
public SourceChannelImpl (SelectorProvider selectorProvider,
int native_fd)
{
super (selectorProvider);
this.native_fd = native_fd;
}
protected final void implCloseSelectableChannel()
throws IOException
{
throw new Error ("Not implemented");
}
protected void implConfigureBlocking (boolean blocking)
throws IOException
{
throw new Error ("Not implemented");
}
public final int read (ByteBuffer src)
throws IOException
{
throw new Error ("Not implemented");
}
public final long read (ByteBuffer[] srcs)
throws IOException
{
return read (srcs, 0, srcs.length);
}
public final long read (ByteBuffer[] srcs, int offset, int len)
throws IOException
{
throw new Error ("Not implemented");
}
public final int getNativeFD()
{
return native_fd;
}
} }
public final class SinkChannelImpl extends Pipe.SinkChannel
{
private int native_fd;
public SinkChannelImpl (SelectorProvider selectorProvider,
int native_fd)
{
super (selectorProvider);
this.native_fd = native_fd;
}
protected final void implCloseSelectableChannel()
throws IOException
{
throw new Error ("Not implemented");
}
protected final void implConfigureBlocking (boolean blocking)
throws IOException
{
throw new Error ("Not implemented");
}
public final int write (ByteBuffer dst)
throws IOException
{
throw new Error ("Not implemented");
}
public final long write (ByteBuffer[] dsts)
throws IOException
{
return write (dsts, 0, dsts.length);
}
public final long write (ByteBuffer[] dsts, int offset, int len)
throws IOException
{
throw new Error ("Not implemented");
}
public final int getNativeFD()
{
return native_fd;
}
}
private SinkChannelImpl sink;
private SourceChannelImpl source;
public PipeImpl (SelectorProvider provider)
throws IOException
{
super();
nativeInit (provider);
}
private native void nativeInit (SelectorProvider provider)
throws IOException;
public Pipe.SinkChannel sink() public Pipe.SinkChannel sink()
{ {
return null; return sink;
} }
public Pipe.SourceChannel source() public Pipe.SourceChannel source()
{ {
return null; return source;
} }
} }
/* SelectorProviderImpl.java -- /* SelectorProviderImpl.java --
Copyright (C) 2002 Free Software Foundation, Inc. Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath. This file is part of GNU Classpath.
...@@ -60,7 +60,7 @@ public class SelectorProviderImpl extends SelectorProvider ...@@ -60,7 +60,7 @@ public class SelectorProviderImpl extends SelectorProvider
public Pipe openPipe () public Pipe openPipe ()
throws IOException throws IOException
{ {
return new PipeImpl (); return new PipeImpl (this);
} }
public AbstractSelector openSelector () public AbstractSelector openSelector ()
......
// natPipeImpl.cc
/* Copyright (C) 2003 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
#include <config.h>
#include <platform.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <gnu/java/nio/PipeImpl.h>
//#include <gnu/java/nio/PipeImpl$SinkChannelImpl.h>
//#include <gnu/java/nio/PipeImpl$SourceChannelImpl.h>
#include <java/io/IOException.h>
#include <java/nio/channels/spi/SelectorProvider.h>
void
gnu::java::nio::PipeImpl::nativeInit (::java::nio::channels::spi::SelectorProvider* /*provider*/)
{
int filedes [2];
if (::pipe (filedes) < 0)
throw new ::java::io::IOException (JvNewStringUTF (strerror (errno)));
/* FIXME
source = new gnu::java::nio::PipeImpl$SourceChannelImpl
(this, provider, filedes [0]);
sink = new gnu::java::nio::PipeImpl$SinkChannelImpl
(this, provider, filedes [1]);
*/
}
/* SelectorProvider.java /* SelectorProvider.java
Copyright (C) 2002 Free Software Foundation, Inc. Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath. This file is part of GNU Classpath.
...@@ -50,7 +50,7 @@ import java.nio.channels.SocketChannel; ...@@ -50,7 +50,7 @@ import java.nio.channels.SocketChannel;
*/ */
public abstract class SelectorProvider public abstract class SelectorProvider
{ {
static SelectorProvider pr; private static SelectorProvider systemDefaultProvider;
/** /**
* Initializes the selector provider. * Initializes the selector provider.
...@@ -95,13 +95,32 @@ public abstract class SelectorProvider ...@@ -95,13 +95,32 @@ public abstract class SelectorProvider
* Returns the system-wide default selector provider for this invocation * Returns the system-wide default selector provider for this invocation
* of the Java virtual machine. * of the Java virtual machine.
*/ */
public static SelectorProvider provider () public static synchronized SelectorProvider provider ()
{ {
if (pr == null) if (systemDefaultProvider == null)
{ {
pr = new SelectorProviderImpl (); String propertyValue =
System.getProperty ("java.nio.channels.spi.SelectorProvider");
if (propertyValue == null
|| propertyValue.equals (""))
systemDefaultProvider = new SelectorProviderImpl();
else
{
try
{
systemDefaultProvider = (SelectorProvider) Class.forName
(propertyValue).newInstance();
}
catch (Exception e)
{
System.err.println ("Could not instantiate class: "
+ propertyValue);
systemDefaultProvider = new SelectorProviderImpl();
}
}
} }
return pr; return systemDefaultProvider;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment