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:
committed by
Michael Koch
parent
b77d1698d9
commit
81bc077a39
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user