DefaultKqueueIoRegistration Class — netty Architecture
Architecture documentation for the DefaultKqueueIoRegistration class in KQueueIoHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 7590dada_52a8_cd3f_013c_39eaea0e149a["DefaultKqueueIoRegistration"] 9eae14e2_0d94_eb0d_11d0_56314543bdff["KQueueIoHandler.java"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|defined in| 9eae14e2_0d94_eb0d_11d0_56314543bdff 5c6f2faf_144e_8480_a4f1_576f0c398566["DefaultKqueueIoRegistration()"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|method| 5c6f2faf_144e_8480_a4f1_576f0c398566 a75c7d88_c5c2_7598_d12a_b4da6063f754["isHandleForChannel()"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|method| a75c7d88_c5c2_7598_d12a_b4da6063f754 e79403ce_69f4_a1b5_ada9_c6a3423aeacb["T()"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|method| e79403ce_69f4_a1b5_ada9_c6a3423aeacb a636ac7b_4a6a_42a1_290f_1208718474a8["submit()"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|method| a636ac7b_4a6a_42a1_290f_1208718474a8 7ce17382_ba1a_c3fd_715c_71ef04f26d10["handle()"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|method| 7ce17382_ba1a_c3fd_715c_71ef04f26d10 eb6763f5_9eb8_7a88_abe9_a6c4a00713df["evSet()"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|method| eb6763f5_9eb8_7a88_abe9_a6c4a00713df f7441d5e_ee7b_72a2_c74a_d9a2c3bc50e7["isValid()"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|method| f7441d5e_ee7b_72a2_c74a_d9a2c3bc50e7 984fe5fa_153e_2c00_126c_0f45ae1adb91["cancel()"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|method| 984fe5fa_153e_2c00_126c_0f45ae1adb91 298c43ea_0293_bb62_82a2_0b6d6b2d313a["cancel0()"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|method| 298c43ea_0293_bb62_82a2_0b6d6b2d313a 1e77e40a_f188_9c62_9373_036f4078e2fa["close()"] 7590dada_52a8_cd3f_013c_39eaea0e149a -->|method| 1e77e40a_f188_9c62_9373_036f4078e2fa
Relationship Graph
Source Code
transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueIoHandler.java lines 424–517
private final class DefaultKqueueIoRegistration implements IoRegistration {
private boolean cancellationPending;
private final AtomicBoolean canceled = new AtomicBoolean();
private final KQueueIoEvent event = new KQueueIoEvent();
final KQueueIoHandle handle;
final long id;
private final ThreadAwareExecutor executor;
DefaultKqueueIoRegistration(ThreadAwareExecutor executor, KQueueIoHandle handle) {
this.executor = executor;
this.handle = handle;
id = generateNextId();
}
boolean isHandleForChannel() {
return handle instanceof AbstractKQueueChannel.AbstractKQueueUnsafe;
}
@SuppressWarnings("unchecked")
@Override
public <T> T attachment() {
return (T) nativeArrays;
}
@Override
public long submit(IoOps ops) {
KQueueIoOps kQueueIoOps = cast(ops);
if (!isValid()) {
return -1;
}
short filter = kQueueIoOps.filter();
short flags = kQueueIoOps.flags();
int fflags = kQueueIoOps.fflags();
if (executor.isExecutorThread(Thread.currentThread())) {
evSet(filter, flags, fflags);
} else {
executor.execute(() -> evSet(filter, flags, fflags));
}
return 0;
}
void handle(int ident, short filter, short flags, int fflags, long data, long udata) {
if (cancellationPending) {
// This registration was already cancelled but not removed from the map yet, just ignore.
return;
}
event.update(ident, filter, flags, fflags, data, udata);
handle.handle(this, event);
}
private void evSet(short filter, short flags, int fflags) {
if (cancellationPending) {
// This registration was already cancelled but not removed from the map yet, just ignore.
return;
}
changeList.evSet(handle.ident(), filter, flags, fflags, 0, id);
}
@Override
public boolean isValid() {
return !canceled.get();
}
@Override
public boolean cancel() {
if (!canceled.compareAndSet(false, true)) {
return false;
}
if (executor.isExecutorThread(Thread.currentThread())) {
cancel0();
} else {
executor.execute(this::cancel0);
}
return true;
}
private void cancel0() {
// Let's add the registration to our cancelledRegistrations queue so we will process it
// after we processed all events. This is needed as otherwise we might end up removing it
// from the registration map while we still have some unprocessed events.
Source
Frequently Asked Questions
What is the DefaultKqueueIoRegistration class?
DefaultKqueueIoRegistration is a class in the netty codebase, defined in transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueIoHandler.java.
Where is DefaultKqueueIoRegistration defined?
DefaultKqueueIoRegistration is defined in transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueIoHandler.java at line 424.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free