- java.lang.Object
-
- org.xnio.IoUtils
-
public final class IoUtils extends java.lang.ObjectGeneral I/O utility methods.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static IoFuture.Notifier<java.lang.Object,java.io.Closeable>attachmentClosingNotifier()Get a notifier that closes the attachment.static voidawaitAll(IoFuture<?>... futures)Wait for all the futures to complete.static voidawaitAllInterruptibly(IoFuture<?>... futures)Wait for all the futures to complete.static <I,O>
IoFuture<? extends O>cast(IoFuture<I> parent, java.lang.Class<O> type)Create anIoFuturewhich wraps anotherIoFuture, but returns a different type.static <T extends java.nio.channels.Channel>
IoFuture.Notifier<T,ChannelListener<? super T>>channelListenerNotifier()Get the notifier that invokes the channel listener given as an attachment.static CancellableclosingCancellable(java.io.Closeable c)A cancellable which closes the given resource on cancel.static IoFuture.Notifier<java.io.Closeable,java.lang.Void>closingNotifier()Get a notifier that closes the result.static java.util.concurrent.ExecutordirectExecutor()Get the direct executor.static <T> java.util.concurrent.Future<T>getFuture(IoFuture<T> ioFuture)Get ajava.util.concurrent-styleFutureinstance wrapper for anIoFutureinstance.static <T> IoFuture.Notifier<T,FutureResult<T>>getManagerNotifier()Get a notifier which forwards the result to anotherIoFuture's manager.static <T extends java.nio.channels.Channel>
ChannelSource<T>getRetryingChannelSource(ChannelSource<T> delegate, int maxTries)A channel source which tries to acquire a channel from a delegate channel source the given number of times before giving up.static java.util.RandomgetThreadLocalRandom()Get a thread-local RNG.static CancellablenullCancellable()Get the null cancellable.static java.io.CloseablenullCloseable()Get the null closeable.static java.util.concurrent.ExecutornullExecutor()Get the null executor.static <T> IoFuture.Notifier<T,Result<T>>resultNotifier()Get the result notifier.static <T> IoFuture.Notifier<T,java.lang.Void>runnableNotifier(java.lang.Runnable runnable)Get a notifier that runs the supplied action.static voidsafeClose(java.io.Closeable resource)Close a resource, logging an error if an error occurs.static voidsafeClose(java.io.Closeable... resources)Close a series of resources, logging errors if they occur.static voidsafeClose(java.lang.AutoCloseable resource)Close a resource, logging an error if an error occurs.static voidsafeClose(java.net.DatagramSocket resource)Close a resource, logging an error if an error occurs.static voidsafeClose(java.net.ServerSocket resource)Close a resource, logging an error if an error occurs.static voidsafeClose(java.net.Socket resource)Close a resource, logging an error if an error occurs.static voidsafeClose(java.nio.channels.Selector resource)Close a resource, logging an error if an error occurs.static voidsafeClose(java.util.logging.Handler resource)Close a resource, logging an error if an error occurs.static voidsafeClose(java.util.zip.ZipFile resource)Close a resource, logging an error if an error occurs.static voidsafeClose(IoFuture<? extends java.io.Closeable> futureResource)Close a future resource, logging an error if an error occurs.static voidsafeShutdownReads(SuspendableReadChannel channel)Safely shutdown reads on the given channel.static longtransfer(java.nio.channels.ReadableByteChannel source, long count, java.nio.ByteBuffer throughBuffer, java.nio.channels.WritableByteChannel sink)Platform-independent channel-to-channel transfer method.
-
-
-
Method Detail
-
directExecutor
public static java.util.concurrent.Executor directExecutor()
Get the direct executor. This is an executor that executes the provided task in the same thread.- Returns:
- a direct executor
-
nullExecutor
public static java.util.concurrent.Executor nullExecutor()
Get the null executor. This is an executor that never actually executes the provided task.- Returns:
- a null executor
-
nullCloseable
public static java.io.Closeable nullCloseable()
Get the null closeable. This is a simpleCloseableinstance that does nothing when itsclose()method is invoked.- Returns:
- the null closeable
-
safeClose
public static void safeClose(java.lang.AutoCloseable resource)
Close a resource, logging an error if an error occurs.- Parameters:
resource- the resource to close
-
safeClose
public static void safeClose(java.io.Closeable resource)
Close a resource, logging an error if an error occurs.- Parameters:
resource- the resource to close
-
safeClose
public static void safeClose(java.io.Closeable... resources)
Close a series of resources, logging errors if they occur.- Parameters:
resources- the resources to close
-
safeClose
public static void safeClose(java.net.Socket resource)
Close a resource, logging an error if an error occurs.- Parameters:
resource- the resource to close
-
safeClose
public static void safeClose(java.net.DatagramSocket resource)
Close a resource, logging an error if an error occurs.- Parameters:
resource- the resource to close
-
safeClose
public static void safeClose(java.nio.channels.Selector resource)
Close a resource, logging an error if an error occurs.- Parameters:
resource- the resource to close
-
safeClose
public static void safeClose(java.net.ServerSocket resource)
Close a resource, logging an error if an error occurs.- Parameters:
resource- the resource to close
-
safeClose
public static void safeClose(java.util.zip.ZipFile resource)
Close a resource, logging an error if an error occurs.- Parameters:
resource- the resource to close
-
safeClose
public static void safeClose(java.util.logging.Handler resource)
Close a resource, logging an error if an error occurs.- Parameters:
resource- the resource to close
-
safeClose
public static void safeClose(IoFuture<? extends java.io.Closeable> futureResource)
Close a future resource, logging an error if an error occurs. Attempts to cancel the operation if it is still in progress.- Parameters:
futureResource- the resource to close
-
attachmentClosingNotifier
public static IoFuture.Notifier<java.lang.Object,java.io.Closeable> attachmentClosingNotifier()
Get a notifier that closes the attachment.- Returns:
- a notifier which will close its attachment
-
closingNotifier
public static IoFuture.Notifier<java.io.Closeable,java.lang.Void> closingNotifier()
Get a notifier that closes the result.- Returns:
- a notifier which will close the result of the operation (if successful)
-
runnableNotifier
public static <T> IoFuture.Notifier<T,java.lang.Void> runnableNotifier(java.lang.Runnable runnable)
Get a notifier that runs the supplied action.- Type Parameters:
T- the future type (not used)- Parameters:
runnable- the notifier type- Returns:
- a notifier which will run the given command
-
resultNotifier
public static <T> IoFuture.Notifier<T,Result<T>> resultNotifier()
Get the result notifier. This notifier will forward the result of theIoFutureto the attachedResult.- Type Parameters:
T- the result type- Returns:
- the notifier
-
channelListenerNotifier
public static <T extends java.nio.channels.Channel> IoFuture.Notifier<T,ChannelListener<? super T>> channelListenerNotifier()
Get the notifier that invokes the channel listener given as an attachment.- Type Parameters:
T- the channel type- Returns:
- the notifier
-
getFuture
public static <T> java.util.concurrent.Future<T> getFuture(IoFuture<T> ioFuture)
Get ajava.util.concurrent-styleFutureinstance wrapper for anIoFutureinstance.- Parameters:
ioFuture- theIoFutureto wrap- Returns:
- a
Future
-
awaitAll instance wrapper for an
-
-