diff --git a/codec/src/main/java/io/netty/handler/codec/compression/JZlibEncoder.java b/codec/src/main/java/io/netty/handler/codec/compression/JZlibEncoder.java index 3868bfb868..0e6f0c30d9 100644 --- a/codec/src/main/java/io/netty/handler/codec/compression/JZlibEncoder.java +++ b/codec/src/main/java/io/netty/handler/codec/compression/JZlibEncoder.java @@ -26,6 +26,7 @@ import io.netty.channel.ChannelPromise; import io.netty.channel.ChannelPromiseNotifier; import io.netty.util.concurrent.EventExecutor; import io.netty.util.internal.EmptyArrays; +import io.netty.util.internal.OneTimeTask; import java.util.concurrent.TimeUnit; @@ -252,7 +253,7 @@ public class JZlibEncoder extends ZlibEncoder { return finishEncode(ctx, promise); } else { final ChannelPromise p = ctx.newPromise(); - executor.execute(new Runnable() { + executor.execute(new OneTimeTask() { @Override public void run() { ChannelFuture f = finishEncode(ctx(), p); @@ -351,7 +352,7 @@ public class JZlibEncoder extends ZlibEncoder { if (!f.isDone()) { // Ensure the channel is closed even if the write operation completes in time. - ctx.executor().schedule(new Runnable() { + ctx.executor().schedule(new OneTimeTask() { @Override public void run() { ctx.close(promise); diff --git a/codec/src/main/java/io/netty/handler/codec/compression/JdkZlibEncoder.java b/codec/src/main/java/io/netty/handler/codec/compression/JdkZlibEncoder.java index 49be347890..a75fb5c4b1 100644 --- a/codec/src/main/java/io/netty/handler/codec/compression/JdkZlibEncoder.java +++ b/codec/src/main/java/io/netty/handler/codec/compression/JdkZlibEncoder.java @@ -22,6 +22,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPromise; import io.netty.channel.ChannelPromiseNotifier; import io.netty.util.concurrent.EventExecutor; +import io.netty.util.internal.OneTimeTask; import java.util.concurrent.TimeUnit; import java.util.zip.CRC32; @@ -163,7 +164,7 @@ public class JdkZlibEncoder extends ZlibEncoder { return finishEncode(ctx, promise); } else { final ChannelPromise p = ctx.newPromise(); - executor.execute(new Runnable() { + executor.execute(new OneTimeTask() { @Override public void run() { ChannelFuture f = finishEncode(ctx(), p); @@ -259,7 +260,7 @@ public class JdkZlibEncoder extends ZlibEncoder { if (!f.isDone()) { // Ensure the channel is closed even if the write operation completes in time. - ctx.executor().schedule(new Runnable() { + ctx.executor().schedule(new OneTimeTask() { @Override public void run() { ctx.close(promise); diff --git a/handler/src/main/java/io/netty/handler/ssl/SslHandler.java b/handler/src/main/java/io/netty/handler/ssl/SslHandler.java index 9763c59683..53e1d93e0f 100644 --- a/handler/src/main/java/io/netty/handler/ssl/SslHandler.java +++ b/handler/src/main/java/io/netty/handler/ssl/SslHandler.java @@ -366,10 +366,10 @@ public class SslHandler extends ByteToMessageDecoder { */ public ChannelFuture close(final ChannelPromise future) { final ChannelHandlerContext ctx = this.ctx; - ctx.executor().execute(new Runnable() { + ctx.executor().execute(new OneTimeTask() { @Override public void run() { - SslHandler.this.outboundClosed = true; + outboundClosed = true; engine.closeOutbound(); try { write(ctx, Unpooled.EMPTY_BUFFER, future); @@ -1322,7 +1322,7 @@ public class SslHandler extends ByteToMessageDecoder { return; } - final ScheduledFuture timeoutFuture = ctx.executor().schedule(new Runnable() { + final ScheduledFuture timeoutFuture = ctx.executor().schedule(new OneTimeTask() { @Override public void run() { if (p.isDone()) { @@ -1364,7 +1364,7 @@ public class SslHandler extends ByteToMessageDecoder { final ScheduledFuture timeoutFuture; if (closeNotifyTimeoutMillis > 0) { // Force-close the connection if close_notify is not fully sent in time. - timeoutFuture = ctx.executor().schedule(new Runnable() { + timeoutFuture = ctx.executor().schedule(new OneTimeTask() { @Override public void run() { logger.warn("{} Last write attempt timed out; force-closing the connection.", ctx.channel()); diff --git a/handler/src/main/java/io/netty/handler/stream/ChunkedWriteHandler.java b/handler/src/main/java/io/netty/handler/stream/ChunkedWriteHandler.java index a4746c8a0a..ac6a326221 100644 --- a/handler/src/main/java/io/netty/handler/stream/ChunkedWriteHandler.java +++ b/handler/src/main/java/io/netty/handler/stream/ChunkedWriteHandler.java @@ -26,6 +26,7 @@ import io.netty.channel.ChannelPipeline; import io.netty.channel.ChannelProgressivePromise; import io.netty.channel.ChannelPromise; import io.netty.util.ReferenceCountUtil; +import io.netty.util.internal.OneTimeTask; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; @@ -110,7 +111,7 @@ public class ChunkedWriteHandler extends ChannelHandlerAdapter { } } else { // let the transfer resume on the next event loop round - ctx.executor().execute(new Runnable() { + ctx.executor().execute(new OneTimeTask() { @Override public void run() { diff --git a/handler/src/main/java/io/netty/handler/timeout/WriteTimeoutHandler.java b/handler/src/main/java/io/netty/handler/timeout/WriteTimeoutHandler.java index c57d4b6a29..0d327557f9 100644 --- a/handler/src/main/java/io/netty/handler/timeout/WriteTimeoutHandler.java +++ b/handler/src/main/java/io/netty/handler/timeout/WriteTimeoutHandler.java @@ -23,6 +23,7 @@ import io.netty.channel.ChannelHandlerAdapter; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPromise; +import io.netty.util.internal.OneTimeTask; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -111,7 +112,7 @@ public class WriteTimeoutHandler extends ChannelHandlerAdapter { private void scheduleTimeout(final ChannelHandlerContext ctx, final ChannelPromise future) { // Schedule a timeout. - final ScheduledFuture sf = ctx.executor().schedule(new Runnable() { + final ScheduledFuture sf = ctx.executor().schedule(new OneTimeTask() { @Override public void run() { // Was not written yet so issue a write timeout diff --git a/handler/src/main/java/io/netty/handler/traffic/ChannelTrafficShapingHandler.java b/handler/src/main/java/io/netty/handler/traffic/ChannelTrafficShapingHandler.java index 8074a6a344..f5fd5d3599 100644 --- a/handler/src/main/java/io/netty/handler/traffic/ChannelTrafficShapingHandler.java +++ b/handler/src/main/java/io/netty/handler/traffic/ChannelTrafficShapingHandler.java @@ -18,6 +18,7 @@ package io.netty.handler.traffic; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPromise; +import io.netty.util.internal.OneTimeTask; import java.util.ArrayDeque; import java.util.concurrent.TimeUnit; @@ -192,7 +193,7 @@ public class ChannelTrafficShapingHandler extends AbstractTrafficShapingHandler checkWriteSuspend(ctx, delay, queueSize); } final long futureNow = newToSend.relativeTimeAction; - ctx.executor().schedule(new Runnable() { + ctx.executor().schedule(new OneTimeTask() { @Override public void run() { sendAllValid(ctx, futureNow); diff --git a/handler/src/main/java/io/netty/handler/traffic/GlobalTrafficShapingHandler.java b/handler/src/main/java/io/netty/handler/traffic/GlobalTrafficShapingHandler.java index b7667b2d48..00eb27cdd7 100644 --- a/handler/src/main/java/io/netty/handler/traffic/GlobalTrafficShapingHandler.java +++ b/handler/src/main/java/io/netty/handler/traffic/GlobalTrafficShapingHandler.java @@ -21,6 +21,7 @@ import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPromise; import io.netty.util.concurrent.EventExecutor; +import io.netty.util.internal.OneTimeTask; import io.netty.util.internal.PlatformDependent; import java.util.ArrayDeque; @@ -360,7 +361,7 @@ public class GlobalTrafficShapingHandler extends AbstractTrafficShapingHandler { } final long futureNow = newToSend.relativeTimeAction; final PerChannel forSchedule = perChannel; - ctx.executor().schedule(new Runnable() { + ctx.executor().schedule(new OneTimeTask() { @Override public void run() { sendAllValid(ctx, forSchedule, futureNow); diff --git a/transport-native-epoll/src/main/java/io/netty/channel/epoll/AbstractEpollStreamChannel.java b/transport-native-epoll/src/main/java/io/netty/channel/epoll/AbstractEpollStreamChannel.java index f3c28a3f64..3ab4806672 100644 --- a/transport-native-epoll/src/main/java/io/netty/channel/epoll/AbstractEpollStreamChannel.java +++ b/transport-native-epoll/src/main/java/io/netty/channel/epoll/AbstractEpollStreamChannel.java @@ -644,7 +644,7 @@ public abstract class AbstractEpollStreamChannel extends AbstractEpollChannel { // Schedule connect timeout. int connectTimeoutMillis = config().getConnectTimeoutMillis(); if (connectTimeoutMillis > 0) { - connectTimeoutFuture = eventLoop().schedule(new Runnable() { + connectTimeoutFuture = eventLoop().schedule(new OneTimeTask() { @Override public void run() { ChannelPromise connectPromise = AbstractEpollStreamChannel.this.connectPromise; diff --git a/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollDomainSocketChannel.java b/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollDomainSocketChannel.java index aa7d4bb170..489a21c9c5 100644 --- a/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollDomainSocketChannel.java +++ b/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollDomainSocketChannel.java @@ -23,6 +23,7 @@ import io.netty.channel.unix.DomainSocketAddress; import io.netty.channel.unix.DomainSocketChannel; import io.netty.channel.unix.FileDescriptor; import io.netty.channel.unix.Socket; +import io.netty.util.internal.OneTimeTask; import java.net.SocketAddress; diff --git a/transport-rxtx/src/main/java/io/netty/channel/rxtx/RxtxChannel.java b/transport-rxtx/src/main/java/io/netty/channel/rxtx/RxtxChannel.java index 8df3d10cc8..07628a944a 100644 --- a/transport-rxtx/src/main/java/io/netty/channel/rxtx/RxtxChannel.java +++ b/transport-rxtx/src/main/java/io/netty/channel/rxtx/RxtxChannel.java @@ -20,6 +20,7 @@ import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import io.netty.channel.ChannelPromise; import io.netty.channel.oio.OioByteStreamChannel; +import io.netty.util.internal.OneTimeTask; import java.net.SocketAddress; import java.util.concurrent.TimeUnit; @@ -143,7 +144,7 @@ public class RxtxChannel extends OioByteStreamChannel { int waitTime = config().getOption(WAIT_TIME); if (waitTime > 0) { - eventLoop().schedule(new Runnable() { + eventLoop().schedule(new OneTimeTask() { @Override public void run() { try { diff --git a/transport-sctp/src/main/java/io/netty/channel/sctp/nio/NioSctpChannel.java b/transport-sctp/src/main/java/io/netty/channel/sctp/nio/NioSctpChannel.java index ae14b96047..f8d07a0364 100644 --- a/transport-sctp/src/main/java/io/netty/channel/sctp/nio/NioSctpChannel.java +++ b/transport-sctp/src/main/java/io/netty/channel/sctp/nio/NioSctpChannel.java @@ -34,6 +34,7 @@ import io.netty.channel.sctp.SctpChannelConfig; import io.netty.channel.sctp.SctpMessage; import io.netty.channel.sctp.SctpNotificationHandler; import io.netty.channel.sctp.SctpServerChannel; +import io.netty.util.internal.OneTimeTask; import io.netty.util.internal.PlatformDependent; import io.netty.util.internal.StringUtil; import io.netty.util.internal.logging.InternalLogger; @@ -355,7 +356,7 @@ public class NioSctpChannel extends AbstractNioMessageChannel implements io.nett promise.setFailure(t); } } else { - eventLoop().execute(new Runnable() { + eventLoop().execute(new OneTimeTask() { @Override public void run() { bindAddress(localAddress, promise); @@ -380,7 +381,7 @@ public class NioSctpChannel extends AbstractNioMessageChannel implements io.nett promise.setFailure(t); } } else { - eventLoop().execute(new Runnable() { + eventLoop().execute(new OneTimeTask() { @Override public void run() { unbindAddress(localAddress, promise); diff --git a/transport-sctp/src/main/java/io/netty/channel/sctp/nio/NioSctpServerChannel.java b/transport-sctp/src/main/java/io/netty/channel/sctp/nio/NioSctpServerChannel.java index 5e1fc2f3bf..1e420d49e9 100644 --- a/transport-sctp/src/main/java/io/netty/channel/sctp/nio/NioSctpServerChannel.java +++ b/transport-sctp/src/main/java/io/netty/channel/sctp/nio/NioSctpServerChannel.java @@ -25,6 +25,7 @@ import io.netty.channel.ChannelPromise; import io.netty.channel.nio.AbstractNioMessageChannel; import io.netty.channel.sctp.DefaultSctpServerChannelConfig; import io.netty.channel.sctp.SctpServerChannelConfig; +import io.netty.util.internal.OneTimeTask; import java.io.IOException; import java.net.InetAddress; @@ -159,7 +160,7 @@ public class NioSctpServerChannel extends AbstractNioMessageChannel promise.setFailure(t); } } else { - eventLoop().execute(new Runnable() { + eventLoop().execute(new OneTimeTask() { @Override public void run() { bindAddress(localAddress, promise); @@ -184,7 +185,7 @@ public class NioSctpServerChannel extends AbstractNioMessageChannel promise.setFailure(t); } } else { - eventLoop().execute(new Runnable() { + eventLoop().execute(new OneTimeTask() { @Override public void run() { unbindAddress(localAddress, promise); diff --git a/transport-sctp/src/main/java/io/netty/channel/sctp/oio/OioSctpChannel.java b/transport-sctp/src/main/java/io/netty/channel/sctp/oio/OioSctpChannel.java index 56141067c5..f0a1ccac8f 100755 --- a/transport-sctp/src/main/java/io/netty/channel/sctp/oio/OioSctpChannel.java +++ b/transport-sctp/src/main/java/io/netty/channel/sctp/oio/OioSctpChannel.java @@ -34,6 +34,7 @@ import io.netty.channel.sctp.SctpChannelConfig; import io.netty.channel.sctp.SctpMessage; import io.netty.channel.sctp.SctpNotificationHandler; import io.netty.channel.sctp.SctpServerChannel; +import io.netty.util.internal.OneTimeTask; import io.netty.util.internal.PlatformDependent; import io.netty.util.internal.StringUtil; import io.netty.util.internal.logging.InternalLogger; @@ -416,7 +417,7 @@ public class OioSctpChannel extends AbstractOioMessageChannel promise.setFailure(t); } } else { - eventLoop().execute(new Runnable() { + eventLoop().execute(new OneTimeTask() { @Override public void run() { bindAddress(localAddress, promise); @@ -441,7 +442,7 @@ public class OioSctpChannel extends AbstractOioMessageChannel promise.setFailure(t); } } else { - eventLoop().execute(new Runnable() { + eventLoop().execute(new OneTimeTask() { @Override public void run() { unbindAddress(localAddress, promise); diff --git a/transport-sctp/src/main/java/io/netty/channel/sctp/oio/OioSctpServerChannel.java b/transport-sctp/src/main/java/io/netty/channel/sctp/oio/OioSctpServerChannel.java index b396a9c780..8014b78639 100755 --- a/transport-sctp/src/main/java/io/netty/channel/sctp/oio/OioSctpServerChannel.java +++ b/transport-sctp/src/main/java/io/netty/channel/sctp/oio/OioSctpServerChannel.java @@ -25,6 +25,7 @@ import io.netty.channel.ChannelPromise; import io.netty.channel.oio.AbstractOioMessageChannel; import io.netty.channel.sctp.DefaultSctpServerChannelConfig; import io.netty.channel.sctp.SctpServerChannelConfig; +import io.netty.util.internal.OneTimeTask; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; @@ -234,7 +235,7 @@ public class OioSctpServerChannel extends AbstractOioMessageChannel promise.setFailure(t); } } else { - eventLoop().execute(new Runnable() { + eventLoop().execute(new OneTimeTask() { @Override public void run() { bindAddress(localAddress, promise); @@ -259,7 +260,7 @@ public class OioSctpServerChannel extends AbstractOioMessageChannel promise.setFailure(t); } } else { - eventLoop().execute(new Runnable() { + eventLoop().execute(new OneTimeTask() { @Override public void run() { unbindAddress(localAddress, promise); diff --git a/transport/src/main/java/io/netty/bootstrap/AbstractBootstrap.java b/transport/src/main/java/io/netty/bootstrap/AbstractBootstrap.java index 96cd8f8efa..a10c0d0fc9 100644 --- a/transport/src/main/java/io/netty/bootstrap/AbstractBootstrap.java +++ b/transport/src/main/java/io/netty/bootstrap/AbstractBootstrap.java @@ -29,6 +29,7 @@ import io.netty.channel.ReflectiveChannelFactory; import io.netty.util.AttributeKey; import io.netty.util.concurrent.EventExecutor; import io.netty.util.concurrent.GlobalEventExecutor; +import io.netty.util.internal.OneTimeTask; import io.netty.util.internal.StringUtil; import java.net.InetAddress; @@ -350,7 +351,7 @@ public abstract class AbstractBootstrap, C ext // This method is invoked before channelRegistered() is triggered. Give user handlers a chance to set up // the pipeline in its channelRegistered() implementation. - channel.eventLoop().execute(new Runnable() { + channel.eventLoop().execute(new OneTimeTask() { @Override public void run() { if (regFuture.isSuccess()) { diff --git a/transport/src/main/java/io/netty/bootstrap/Bootstrap.java b/transport/src/main/java/io/netty/bootstrap/Bootstrap.java index 83047306d4..7317d8cfb7 100644 --- a/transport/src/main/java/io/netty/bootstrap/Bootstrap.java +++ b/transport/src/main/java/io/netty/bootstrap/Bootstrap.java @@ -29,6 +29,7 @@ import io.netty.resolver.NameResolverGroup; import io.netty.util.AttributeKey; import io.netty.util.concurrent.Future; import io.netty.util.concurrent.FutureListener; +import io.netty.util.internal.OneTimeTask; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; @@ -223,7 +224,7 @@ public class Bootstrap extends AbstractBootstrap { // This method is invoked before channelRegistered() is triggered. Give user handlers a chance to set up // the pipeline in its channelRegistered() implementation. final Channel channel = connectPromise.channel(); - channel.eventLoop().execute(new Runnable() { + channel.eventLoop().execute(new OneTimeTask() { @Override public void run() { if (regFuture.isSuccess()) { diff --git a/transport/src/main/java/io/netty/bootstrap/ServerBootstrap.java b/transport/src/main/java/io/netty/bootstrap/ServerBootstrap.java index 36ee41dee8..606af67d53 100644 --- a/transport/src/main/java/io/netty/bootstrap/ServerBootstrap.java +++ b/transport/src/main/java/io/netty/bootstrap/ServerBootstrap.java @@ -28,6 +28,7 @@ import io.netty.channel.ChannelPipeline; import io.netty.channel.EventLoopGroup; import io.netty.channel.ServerChannel; import io.netty.util.AttributeKey; +import io.netty.util.internal.OneTimeTask; import io.netty.util.internal.StringUtil; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; @@ -274,7 +275,7 @@ public class ServerBootstrap extends AbstractBootstrap