ThreadPerChannelEventLoop Class — netty Architecture
Architecture documentation for the ThreadPerChannelEventLoop class in ThreadPerChannelEventLoop.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD b87e07e1_e07d_3d5f_765a_d3d4c6ab5fef["ThreadPerChannelEventLoop"] ec6d722e_b948_20ce_bd65_f8522703a95b["ThreadPerChannelEventLoop.java"] b87e07e1_e07d_3d5f_765a_d3d4c6ab5fef -->|defined in| ec6d722e_b948_20ce_bd65_f8522703a95b 2766a1bf_da0d_290e_51e4_ac140a42f10c["ThreadPerChannelEventLoop()"] b87e07e1_e07d_3d5f_765a_d3d4c6ab5fef -->|method| 2766a1bf_da0d_290e_51e4_ac140a42f10c 9f35da76_624e_6c41_1f1c_49036f89558d["ChannelFuture()"] b87e07e1_e07d_3d5f_765a_d3d4c6ab5fef -->|method| 9f35da76_624e_6c41_1f1c_49036f89558d 3e6d1ce2_5922_d93a_09d4_657b43bee607["run()"] b87e07e1_e07d_3d5f_765a_d3d4c6ab5fef -->|method| 3e6d1ce2_5922_d93a_09d4_657b43bee607 373fc256_8123_14a6_3cdd_828ccd32f022["deregister()"] b87e07e1_e07d_3d5f_765a_d3d4c6ab5fef -->|method| 373fc256_8123_14a6_3cdd_828ccd32f022 d662fcad_90ae_5193_68d4_07c4ae18589f["registeredChannels()"] b87e07e1_e07d_3d5f_765a_d3d4c6ab5fef -->|method| d662fcad_90ae_5193_68d4_07c4ae18589f
Relationship Graph
Source Code
transport/src/main/java/io/netty/channel/ThreadPerChannelEventLoop.java lines 24–103
@Deprecated
public class ThreadPerChannelEventLoop extends SingleThreadEventLoop {
private final ThreadPerChannelEventLoopGroup parent;
private Channel ch;
public ThreadPerChannelEventLoop(ThreadPerChannelEventLoopGroup parent) {
super(parent, parent.executor, true);
this.parent = parent;
}
@Override
public ChannelFuture register(ChannelPromise promise) {
return super.register(promise).addListener(new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture future) throws Exception {
if (future.isSuccess()) {
ch = future.channel();
} else {
deregister();
}
}
});
}
@Deprecated
@Override
public ChannelFuture register(Channel channel, ChannelPromise promise) {
return super.register(channel, promise).addListener(new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture future) throws Exception {
if (future.isSuccess()) {
ch = future.channel();
} else {
deregister();
}
}
});
}
@Override
protected void run() {
for (;;) {
Runnable task = takeTask();
if (task != null) {
task.run();
updateLastExecutionTime();
}
Channel ch = this.ch;
if (isShuttingDown()) {
if (ch != null) {
ch.unsafe().close(ch.unsafe().voidPromise());
}
if (confirmShutdown()) {
break;
}
} else {
if (ch != null) {
// Handle deregistration
if (!ch.isRegistered()) {
runAllTasks();
deregister();
}
}
}
}
}
protected void deregister() {
ch = null;
parent.activeChildren.remove(this);
parent.idleChildren.add(this);
}
@Override
public int registeredChannels() {
return 1;
}
}
Source
Frequently Asked Questions
What is the ThreadPerChannelEventLoop class?
ThreadPerChannelEventLoop is a class in the netty codebase, defined in transport/src/main/java/io/netty/channel/ThreadPerChannelEventLoop.java.
Where is ThreadPerChannelEventLoop defined?
ThreadPerChannelEventLoop is defined in transport/src/main/java/io/netty/channel/ThreadPerChannelEventLoop.java at line 24.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free