diff --git a/transport/src/main/java/io/netty/channel/local/LocalChannel.java b/transport/src/main/java/io/netty/channel/local/LocalChannel.java index a7f02c0553..93d666d223 100644 --- a/transport/src/main/java/io/netty/channel/local/LocalChannel.java +++ b/transport/src/main/java/io/netty/channel/local/LocalChannel.java @@ -104,7 +104,7 @@ public class LocalChannel extends AbstractChannel { super(null); } - LocalChannel(LocalServerChannel parent, LocalChannel peer) { + protected LocalChannel(LocalServerChannel parent, LocalChannel peer) { super(parent); this.peer = peer; localAddress = parent.localAddress(); diff --git a/transport/src/main/java/io/netty/channel/local/LocalServerChannel.java b/transport/src/main/java/io/netty/channel/local/LocalServerChannel.java index f798e56e05..4d82f1ec5a 100644 --- a/transport/src/main/java/io/netty/channel/local/LocalServerChannel.java +++ b/transport/src/main/java/io/netty/channel/local/LocalServerChannel.java @@ -133,7 +133,7 @@ public class LocalServerChannel extends AbstractServerChannel { } LocalChannel serve(final LocalChannel peer) { - final LocalChannel child = new LocalChannel(this, peer); + final LocalChannel child = newLocalChannel(peer); if (eventLoop().inEventLoop()) { serve0(child); } else { @@ -147,6 +147,14 @@ public class LocalServerChannel extends AbstractServerChannel { return child; } + /** + * A factory method for {@link LocalChannel}s. Users may override it + * to create custom instances of {@link LocalChannel}s. + */ + protected LocalChannel newLocalChannel(LocalChannel peer) { + return new LocalChannel(this, peer); + } + private void serve0(final LocalChannel child) { inboundBuffer.add(child); if (acceptInProgress) {