class io.vertx.core.net.impl.ServerChannelLoadBalancer extends io.netty.channel.ChannelInitializer<io.netty.channel.Channel>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: io.vertx.core.net.impl.ServerChannelLoadBalancer
super_class: io.netty.channel.ChannelInitializer
{
private final io.vertx.core.net.impl.VertxEventLoopGroup workers;
descriptor: Lio/vertx/core/net/impl/VertxEventLoopGroup;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.ConcurrentMap<io.netty.channel.EventLoop, io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList> workerMap;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<Lio/netty/channel/EventLoop;Lio/vertx/core/net/impl/ServerChannelLoadBalancer$WorkerList;>;
private final io.netty.channel.group.ChannelGroup channelGroup;
descriptor: Lio/netty/channel/group/ChannelGroup;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private volatile boolean hasHandlers;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
void <init>(io.netty.util.concurrent.EventExecutor);
descriptor: (Lio/netty/util/concurrent/EventExecutor;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial io.netty.channel.ChannelInitializer.<init>:()V
1: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield io.vertx.core.net.impl.ServerChannelLoadBalancer.workerMap:Ljava/util/concurrent/ConcurrentMap;
2: aload 0
new io.vertx.core.net.impl.VertxEventLoopGroup
dup
invokespecial io.vertx.core.net.impl.VertxEventLoopGroup.<init>:()V
putfield io.vertx.core.net.impl.ServerChannelLoadBalancer.workers:Lio/vertx/core/net/impl/VertxEventLoopGroup;
3: aload 0
new io.netty.channel.group.DefaultChannelGroup
dup
aload 1
invokespecial io.netty.channel.group.DefaultChannelGroup.<init>:(Lio/netty/util/concurrent/EventExecutor;)V
putfield io.vertx.core.net.impl.ServerChannelLoadBalancer.channelGroup:Lio/netty/channel/group/ChannelGroup;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/vertx/core/net/impl/ServerChannelLoadBalancer;
0 5 1 executor Lio/netty/util/concurrent/EventExecutor;
MethodParameters:
Name Flags
executor
public io.vertx.core.net.impl.VertxEventLoopGroup workers();
descriptor: ()Lio/vertx/core/net/impl/VertxEventLoopGroup;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.workers:Lio/vertx/core/net/impl/VertxEventLoopGroup;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/vertx/core/net/impl/ServerChannelLoadBalancer;
public boolean hasHandlers();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.hasHandlers:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/vertx/core/net/impl/ServerChannelLoadBalancer;
protected void initChannel(io.netty.channel.Channel);
descriptor: (Lio/netty/channel/Channel;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokeinterface io.netty.channel.Channel.eventLoop:()Lio/netty/channel/EventLoop;
invokevirtual io.vertx.core.net.impl.ServerChannelLoadBalancer.chooseInitializer:(Lio/netty/channel/EventLoop;)Lio/vertx/core/Handler;
astore 2
start local 2 1: aload 2
ifnonnull 4
2: aload 1
invokeinterface io.netty.channel.Channel.close:()Lio/netty/channel/ChannelFuture;
pop
3: goto 6
4: StackMap locals: io.vertx.core.Handler
StackMap stack:
aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.channelGroup:Lio/netty/channel/group/ChannelGroup;
aload 1
invokeinterface io.netty.channel.group.ChannelGroup.add:(Ljava/lang/Object;)Z
pop
5: aload 2
aload 1
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
6: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/vertx/core/net/impl/ServerChannelLoadBalancer;
0 7 1 ch Lio/netty/channel/Channel;
1 7 2 handler Lio/vertx/core/Handler<Lio/netty/channel/Channel;>;
MethodParameters:
Name Flags
ch
private io.vertx.core.Handler<io.netty.channel.Channel> chooseInitializer(io.netty.channel.EventLoop);
descriptor: (Lio/netty/channel/EventLoop;)Lio/vertx/core/Handler;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.workerMap:Ljava/util/concurrent/ConcurrentMap;
aload 1
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList
astore 2
start local 2 1: aload 2
ifnonnull 2
aconst_null
goto 3
StackMap locals: io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList
StackMap stack:
2: aload 2
invokevirtual io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList.chooseHandler:()Lio/vertx/core/Handler;
StackMap locals:
StackMap stack: io.vertx.core.Handler
3: areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/core/net/impl/ServerChannelLoadBalancer;
0 4 1 worker Lio/netty/channel/EventLoop;
1 4 2 handlers Lio/vertx/core/net/impl/ServerChannelLoadBalancer$WorkerList;
Signature: (Lio/netty/channel/EventLoop;)Lio/vertx/core/Handler<Lio/netty/channel/Channel;>;
MethodParameters:
Name Flags
worker
public synchronized void addWorker(io.netty.channel.EventLoop, io.vertx.core.Handler<io.netty.channel.Channel>);
descriptor: (Lio/netty/channel/EventLoop;Lio/vertx/core/Handler;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.workers:Lio/vertx/core/net/impl/VertxEventLoopGroup;
aload 1
invokevirtual io.vertx.core.net.impl.VertxEventLoopGroup.addWorker:(Lio/netty/channel/EventLoop;)V
1: new io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList
dup
invokespecial io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList.<init>:()V
astore 3
start local 3 2: aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.workerMap:Ljava/util/concurrent/ConcurrentMap;
aload 1
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList
astore 4
start local 4 3: aload 4
ifnull 5
4: aload 4
astore 3
5: StackMap locals: io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList
StackMap stack:
aload 3
aload 2
invokevirtual io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList.addWorker:(Lio/vertx/core/Handler;)V
6: aload 0
iconst_1
putfield io.vertx.core.net.impl.ServerChannelLoadBalancer.hasHandlers:Z
7: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lio/vertx/core/net/impl/ServerChannelLoadBalancer;
0 8 1 eventLoop Lio/netty/channel/EventLoop;
0 8 2 handler Lio/vertx/core/Handler<Lio/netty/channel/Channel;>;
2 8 3 handlers Lio/vertx/core/net/impl/ServerChannelLoadBalancer$WorkerList;
3 8 4 prev Lio/vertx/core/net/impl/ServerChannelLoadBalancer$WorkerList;
Signature: (Lio/netty/channel/EventLoop;Lio/vertx/core/Handler<Lio/netty/channel/Channel;>;)V
MethodParameters:
Name Flags
eventLoop
handler
public synchronized boolean removeWorker(io.netty.channel.EventLoop, io.vertx.core.Handler<io.netty.channel.Channel>);
descriptor: (Lio/netty/channel/EventLoop;Lio/vertx/core/Handler;)Z
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.workerMap:Ljava/util/concurrent/ConcurrentMap;
aload 1
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList
astore 3
start local 3 1: aload 3
ifnull 2
aload 3
aload 2
invokevirtual io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList.removeWorker:(Lio/vertx/core/Handler;)Z
ifne 3
2: StackMap locals: io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList
StackMap stack:
iconst_0
ireturn
3: StackMap locals:
StackMap stack:
aload 3
invokevirtual io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList.isEmpty:()Z
ifeq 5
4: aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.workerMap:Ljava/util/concurrent/ConcurrentMap;
aload 1
invokeinterface java.util.concurrent.ConcurrentMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
5: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.workerMap:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.isEmpty:()Z
ifeq 7
6: aload 0
iconst_0
putfield io.vertx.core.net.impl.ServerChannelLoadBalancer.hasHandlers:Z
7: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.workers:Lio/vertx/core/net/impl/VertxEventLoopGroup;
aload 1
invokevirtual io.vertx.core.net.impl.VertxEventLoopGroup.removeWorker:(Lio/netty/channel/EventLoop;)V
8: iconst_1
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lio/vertx/core/net/impl/ServerChannelLoadBalancer;
0 9 1 worker Lio/netty/channel/EventLoop;
0 9 2 handler Lio/vertx/core/Handler<Lio/netty/channel/Channel;>;
1 9 3 handlers Lio/vertx/core/net/impl/ServerChannelLoadBalancer$WorkerList;
Signature: (Lio/netty/channel/EventLoop;Lio/vertx/core/Handler<Lio/netty/channel/Channel;>;)Z
MethodParameters:
Name Flags
worker
handler
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.vertx.core.net.impl.ServerChannelLoadBalancer.channelGroup:Lio/netty/channel/group/ChannelGroup;
invokeinterface io.netty.channel.group.ChannelGroup.close:()Lio/netty/channel/group/ChannelGroupFuture;
pop
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/core/net/impl/ServerChannelLoadBalancer;
}
Signature: Lio/netty/channel/ChannelInitializer<Lio/netty/channel/Channel;>;
SourceFile: "ServerChannelLoadBalancer.java"
NestMembers:
io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList
InnerClasses:
private final WorkerList = io.vertx.core.net.impl.ServerChannelLoadBalancer$WorkerList of io.vertx.core.net.impl.ServerChannelLoadBalancer