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
This commit is contained in:
Michael Koch
2003-10-12 13:39:07 +00:00
committed by Michael Koch
parent b77d1698d9
commit 81bc077a39
7 changed files with 208 additions and 21 deletions
@@ -1,5 +1,5 @@
/* SelectorProvider.java
Copyright (C) 2002 Free Software Foundation, Inc.
Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -50,7 +50,7 @@ import java.nio.channels.SocketChannel;
*/
public abstract class SelectorProvider
{
static SelectorProvider pr;
private static SelectorProvider systemDefaultProvider;
/**
* Initializes the selector provider.
@@ -95,13 +95,32 @@ public abstract class SelectorProvider
* Returns the system-wide default selector provider for this invocation
* 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;
}
}