LocalServerChannel Class — netty Architecture
Architecture documentation for the LocalServerChannel class in LocalServerChannel.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 1a58c560_dde9_7403_e4d4_f9cf37a89c81["LocalServerChannel"] 11c929d0_7ca3_0947_ae0d_0f0e8b8d65c0["LocalServerChannel.java"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|defined in| 11c929d0_7ca3_0947_ae0d_0f0e8b8d65c0 5d680c76_e9ed_9c89_f038_511c9e5eda3d["LocalServerChannel()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| 5d680c76_e9ed_9c89_f038_511c9e5eda3d 3418b515_624c_efea_d609_87c8ed01cbd2["ChannelConfig()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| 3418b515_624c_efea_d609_87c8ed01cbd2 0c306a1a_e2ce_c7ca_2269_663e495ed7ba["LocalAddress()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| 0c306a1a_e2ce_c7ca_2269_663e495ed7ba e9514e2a_e023_fcdb_976d_ae80f141d9fa["isOpen()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| e9514e2a_e023_fcdb_976d_ae80f141d9fa a63e6e6d_2561_64cf_476e_40e2d1c20d54["isActive()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| a63e6e6d_2561_64cf_476e_40e2d1c20d54 b4e4f4da_86db_7339_8b13_065243946189["isCompatible()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| b4e4f4da_86db_7339_8b13_065243946189 87122335_cb1c_407f_a637_a8b74e940f7d["SocketAddress()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| 87122335_cb1c_407f_a637_a8b74e940f7d f5b944d8_41ce_9b6b_87c6_8eb0f4c80bfe["doRegister()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| f5b944d8_41ce_9b6b_87c6_8eb0f4c80bfe 840d74b7_9c08_2cee_a797_98a8ec69ab67["doBind()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| 840d74b7_9c08_2cee_a797_98a8ec69ab67 9d50a269_d84f_672a_a3fb_cbe681d5c928["doClose()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| 9d50a269_d84f_672a_a3fb_cbe681d5c928 32c576d5_74e0_59ee_474b_32f6ab79d831["doDeregister()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| 32c576d5_74e0_59ee_474b_32f6ab79d831 ac807b6d_7c14_ae81_c681_496ac42f3bcf["doBeginRead()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| ac807b6d_7c14_ae81_c681_496ac42f3bcf 46a44862_0996_b204_4d9b_a4d28e78033a["LocalChannel()"] 1a58c560_dde9_7403_e4d4_f9cf37a89c81 -->|method| 46a44862_0996_b204_4d9b_a4d28e78033a
Relationship Graph
Source Code
transport/src/main/java/io/netty/channel/local/LocalServerChannel.java lines 42–254
public class LocalServerChannel extends AbstractServerChannel {
private final ChannelConfig config =
new DefaultChannelConfig(this, new ServerChannelRecvByteBufAllocator()) { };
private final Queue<Object> inboundBuffer = new ArrayDeque<Object>();
private final Runnable shutdownHook = new Runnable() {
@Override
public void run() {
unsafe().close(unsafe().voidPromise());
}
};
private IoRegistration registration;
private volatile int state; // 0 - open, 1 - active, 2 - closed
private volatile LocalAddress localAddress;
private volatile boolean acceptInProgress;
public LocalServerChannel() {
config().setAllocator(new PreferHeapByteBufAllocator(config.getAllocator()));
}
@Override
public ChannelConfig config() {
return config;
}
@Override
public LocalAddress localAddress() {
return (LocalAddress) super.localAddress();
}
@Override
public LocalAddress remoteAddress() {
return (LocalAddress) super.remoteAddress();
}
@Override
public boolean isOpen() {
return state < 2;
}
@Override
public boolean isActive() {
return state == 1;
}
@Override
protected boolean isCompatible(EventLoop loop) {
return loop instanceof SingleThreadEventLoop ||
(loop instanceof IoEventLoopGroup && ((IoEventLoopGroup) loop).isCompatible(LocalServerUnsafe.class));
}
@Override
protected SocketAddress localAddress0() {
return localAddress;
}
@Override
protected void doRegister(ChannelPromise promise) {
EventLoop loop = eventLoop();
if (loop instanceof IoEventLoop) {
assert registration == null;
((IoEventLoop) loop).register((LocalServerUnsafe) unsafe()).addListener(f -> {
if (f.isSuccess()) {
registration = (IoRegistration) f.getNow();
promise.setSuccess();
} else {
promise.setFailure(f.cause());
}
});
} else {
try {
((LocalServerUnsafe) unsafe()).registered();
} catch (Throwable cause) {
promise.setFailure(cause);
return;
}
promise.setSuccess();
}
}
Source
Frequently Asked Questions
What is the LocalServerChannel class?
LocalServerChannel is a class in the netty codebase, defined in transport/src/main/java/io/netty/channel/local/LocalServerChannel.java.
Where is LocalServerChannel defined?
LocalServerChannel is defined in transport/src/main/java/io/netty/channel/local/LocalServerChannel.java at line 42.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free